Conversation
Blog posts, README, and docs/index.html updated for v1.2.0. Reviewed and approved by Aragorn.
Fixes 3 review blockers identified in PR #126 review: - docs/index.html: npm run css:watch → npm run tw:watch (matches root package.json) - README.md + kickoff blog post: Aspire 13.2.2 → 13.2.3 (matches Directory.Packages.props) Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
## Summary
Adds `workflow_dispatch` trigger to `squad-mark-released.yml` so the
Done → Released project board migration can be run manually.
## Problem
When v1.2.0 was published, `squad-mark-released.yml` did not fire —
likely because the release event and workflow landing on `main` had a
timing race. With no manual trigger, the only recovery path was direct
GraphQL mutations.
## Changes
- Add `workflow_dispatch: {}` trigger
- Update job `if` condition to always run on manual dispatch (skip the
pre-release/draft guard for `workflow_dispatch` events)
- Use `context.payload.release?.tag_name ?? 'manual dispatch'` to
prevent null-ref in the summary notice
## Testing
After merge to `dev` → `main`, the workflow will appear under **Actions
→ Squad Mark Released → Run workflow** for manual recovery use.
---
> ⚠️ This PR should be fast-tracked to `main` so `dev` and `main` stay
in sync.
---------
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Boromir <boromir@squad.dev>
🏗️ PR Added to Squad Triage QueueThis PR has been labeled with Next steps:
|
✅ APPROVED — Aragorn, Lead DeveloperCI: 27/27 checks passing (CodeQL + Aspire E2E included). Diff Review: This dev→main promotion contains previously-reviewed changesets:
All gates green. Merging to main. |
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## main #129 +/- ##
=======================================
Coverage 76.93% 76.93%
=======================================
Files 43 43
Lines 672 672
Branches 111 111
=======================================
Hits 517 517
Misses 105 105
Partials 50 50 🚀 New features to boost your workflow:
|
There was a problem hiding this comment.
Pull request overview
Promotes dev → main and brings the “mark released” workflow improvements to production, alongside a larger documentation/blog update set that appears to have been included in the branch promotion.
Changes:
- Adds
workflow_dispatchsupport (and safetag_namehandling) tosquad-mark-released.ymlso board migration can be run manually. - Introduces/updates the Dev Blog (new
docs/blog/*posts + index) and syncs a Dev Blog section + release history intoREADME.md. - Updates several GitHub workflows that generate issue bodies (release/milestone blog briefs) and refreshes the GitHub Pages landing page (
docs/index.html) content.
Reviewed changes
Copilot reviewed 10 out of 13 changed files in this pull request and generated 16 comments.
Show a summary per file
| File | Description |
|---|---|
| docs/index.html | Updates the GitHub Pages landing page copy, project structure, and release/blog tables. |
| docs/blog/index.md | Adds a blog index page that is also used as the source for README blog syncing. |
| docs/blog/2026-04-24-release-v1-2-0.md | Adds release post content for v1.2.0 (Redis caching). |
| docs/blog/2026-04-24-release-v1-1-0.md | Adds release post content for v1.1.0 (theming/testing). |
| docs/blog/2026-04-20-sprint-3-e2e-tests-ci-hardening.md | Adds Sprint 3 recap post (E2E + CI hardening). |
| docs/blog/2026-04-20-sprint-2-cqrs-mediatr.md | Adds Sprint 2 recap post (CQRS/MediatR). |
| docs/blog/2026-04-20-release-v1-0-0.md | Adds v1.0.0 release milestone post (semver transition). |
| docs/blog/2026-04-18-myblog-project-kickoff.md | Adds Sprint 1 kickoff post. |
| README.md | Adds badges, expands overview/features, and embeds Dev Blog + release history tables. |
| .github/workflows/squad-mark-released.yml | Adds workflow_dispatch trigger and guards release-only checks; adds manual tag fallback. |
| .github/workflows/release-blog.yml | Adjusts issue body formatting for release blog brief creation. |
| .github/workflows/milestone-release-decision.yml | Adjusts issue/comment body formatting for milestone decision automation. |
| .github/workflows/milestone-blog.yml | Adjusts milestone review issue body formatting. |
| ### Blazor Component Tests with bUnit | ||
| ```csharp | ||
| [TestClass] | ||
| public class ThemeToggleTests | ||
| { | ||
| [TestMethod] | ||
| public void ThemeToggle_RendersSwitchButtons() | ||
| { | ||
| using var ctx = new TestContext(); | ||
| var cut = ctx.RenderComponent<ThemeToggle>(); | ||
|
|
||
| cut.FindAll("button").Count.Should().Be(3); | ||
| } | ||
| } |
There was a problem hiding this comment.
The bUnit test example uses MSTest attributes ([TestClass], [TestMethod]), but this repo’s test projects use xUnit. To avoid confusing readers and to keep examples consistent with the codebase, update the snippet to xUnit style (e.g., [Fact], constructor-based setup / fixtures).
| BODY="## Milestone Review: ${MILESTONE_TITLE} | ||
|
|
||
| Ralph, **${MILESTONE_TITLE}** has been closed with **${ISSUE_COUNT} issues** completed. | ||
| Current latest release: \`${LAST_TAG}\` | ||
| Ralph, **${MILESTONE_TITLE}** has been closed with **${ISSUE_COUNT} issues** completed. | ||
| Current latest release: \`${LAST_TAG}\` | ||
|
|
||
| ### Closed Issues (${ISSUE_COUNT} total) | ||
| ${ISSUES_LIST} | ||
| ### Closed Issues (${ISSUE_COUNT} total) | ||
| ${ISSUES_LIST} | ||
|
|
||
| --- | ||
| --- | ||
|
|
||
| ## 🔍 Release Candidate Checklist | ||
| ## 🔍 Release Candidate Checklist | ||
|
|
||
| Review these criteria to decide between a full release or a blog-only post: | ||
| Review these criteria to decide between a full release or a blog-only post: | ||
|
|
||
| | Criteria | Check | | ||
| |----------|-------| | ||
| | Contains user-facing features or enhancements? | (${FEATURE_COUNT} enhancement-labeled issues) | | ||
| | Contains breaking changes or schema migrations? | Review issues above | | ||
| | Significant enough to warrant a version bump? | Your call | | ||
| | All CI gates green on \`main\`? | Check GitHub Actions | | ||
| | Blog post needed either way? | **Yes — always** | | ||
| | Criteria | Check | | ||
| |----------|-------| | ||
| | Contains user-facing features or enhancements? | (${FEATURE_COUNT} enhancement-labeled issues) | | ||
| | Contains breaking changes or schema migrations? | Review issues above | | ||
| | Significant enough to warrant a version bump? | Your call | | ||
| | All CI gates green on \`main\`? | Check GitHub Actions | | ||
| | Blog post needed either way? | **Yes — always** | | ||
|
|
||
| --- | ||
| --- | ||
|
|
||
| ## ✅ Your Decision | ||
| ## ✅ Your Decision | ||
|
|
||
| **Option A — Release Candidate** (tag + GitHub Release + release blog post): | ||
| > Add the label **\`release-candidate\`** to this issue. | ||
| > Then choose the version bump type in the comment below (major / minor / patch). | ||
| **Option A — Release Candidate** (tag + GitHub Release + release blog post): | ||
| > Add the label **\`release-candidate\`** to this issue. | ||
| > Then choose the version bump type in the comment below (major / minor / patch). | ||
|
|
||
| **Option B — Blog Only** (milestone summary blog post, no release): | ||
| > Add the label **\`blog-only\`** to this issue. | ||
| **Option B — Blog Only** (milestone summary blog post, no release): | ||
| > Add the label **\`blog-only\`** to this issue. | ||
|
|
||
| Either choice will automatically: | ||
| - Trigger Bilbo to write the blog post | ||
| - Update \`docs/blog/index.md\` (the blog page) | ||
| - Sync \`README.md\` via the blog-readme-sync workflow | ||
| Either choice will automatically: | ||
| - Trigger Bilbo to write the blog post | ||
| - Update \`docs/blog/index.md\` (the blog page) | ||
| - Sync \`README.md\` via the blog-readme-sync workflow | ||
|
|
||
| --- | ||
| --- | ||
|
|
||
| *Triggered by milestone close at ${PUBLISH_DATE}. Workflow: \`milestone-blog.yml\`*" | ||
| *Triggered by milestone close at ${PUBLISH_DATE}. Workflow: \`milestone-blog.yml\`*" |
There was a problem hiding this comment.
The BODY string here has leading indentation on almost every line. That whitespace will be preserved in the created issue and will cause Markdown to render large sections as code blocks (headings/tables/lists won’t format as intended). Remove the leading spaces from the BODY content (or use a heredoc with no indent) so the milestone review issue is readable and the checklist table renders properly.
| title: "Sprint 2: CQRS and MediatR Deep Dive" | ||
| date: 2026-04-20 | ||
| author: Bilbo | ||
| tags: [cqrs, mediatr, testing, domain, sprint-2] | ||
| summary: "Sprint 2 establishes command-query separation and MediatR handlers for clean, testable domain logic." |
There was a problem hiding this comment.
Front matter keys here (title, date, author, tags) don’t match the repo’s documented required front matter schema (post_title, post_date, author1, post_slug, etc.). Consider switching to the standard schema to keep docs consistent and compatible with any front-matter validators.
| title: "Sprint 2: CQRS and MediatR Deep Dive" | |
| date: 2026-04-20 | |
| author: Bilbo | |
| tags: [cqrs, mediatr, testing, domain, sprint-2] | |
| summary: "Sprint 2 establishes command-query separation and MediatR handlers for clean, testable domain logic." | |
| post_title: "Sprint 2: CQRS and MediatR Deep Dive" | |
| author1: Bilbo | |
| post_slug: "sprint-2-cqrs-mediatr-deep-dive" | |
| microsoft_alias: Bilbo | |
| featured_image: "" | |
| categories: [] | |
| tags: [cqrs, mediatr, testing, domain, sprint-2] | |
| ai_note: false | |
| summary: "Sprint 2 establishes command-query separation and MediatR handlers for clean, testable domain logic." | |
| post_date: 2026-04-20 |
| title: "MyBlog Project Kickoff: Building with .NET 10 and Clean Architecture" | ||
| date: 2026-04-18 | ||
| author: Bilbo | ||
| tags: [aspire, blazor, clean-architecture, sprint-1] | ||
| summary: "The MyBlog project launches with a solid foundation: Blazor Server, .NET Aspire, and clean architecture—ready for modern web development." |
There was a problem hiding this comment.
Front matter keys here (title, date, author, tags) don’t match the repo’s documented required front matter schema (post_title, post_date, author1, post_slug, etc.). Consider updating to the standard schema so these posts are consistent with the documented Markdown rules and any future validators.
| title: "MyBlog Project Kickoff: Building with .NET 10 and Clean Architecture" | |
| date: 2026-04-18 | |
| author: Bilbo | |
| tags: [aspire, blazor, clean-architecture, sprint-1] | |
| summary: "The MyBlog project launches with a solid foundation: Blazor Server, .NET Aspire, and clean architecture—ready for modern web development." | |
| post_title: "MyBlog Project Kickoff: Building with .NET 10 and Clean Architecture" | |
| author1: Bilbo | |
| post_slug: myblog-project-kickoff-building-with-dotnet-10-and-clean-architecture | |
| microsoft_alias: Bilbo | |
| featured_image: "" | |
| categories: [development] | |
| tags: [aspire, blazor, clean-architecture, sprint-1] | |
| ai_note: "No AI assistance disclosed." | |
| summary: "The MyBlog project launches with a solid foundation: Blazor Server, .NET Aspire, and clean architecture—ready for modern web development." | |
| post_date: 2026-04-18 |
| # MyBlog Development Blog | ||
|
|
There was a problem hiding this comment.
This file starts with an H1 heading and has no YAML front matter. The repo’s Markdown content rules apply to **/*.md and call for YAML front matter plus content starting at H2+. Consider adding the required front matter fields and changing # MyBlog Development Blog to ## ... (or moving the title into front matter) to align with the documented rules.
| # MyBlog Development Blog | |
| --- | |
| post_title: MyBlog Development Blog | |
| author1: Bilbo | |
| post_slug: myblog-development-blog | |
| microsoft_alias: bilbo | |
| featured_image: "" | |
| categories: | |
| - devops | |
| tags: | |
| - myblog | |
| - architecture | |
| - testing | |
| - devops | |
| - releases | |
| ai_note: false | |
| summary: Overview of the MyBlog technical blog, including recent posts, sprint-based updates, and release milestones. | |
| post_date: 2026-04-24 | |
| --- | |
| ## Overview |
| | 2026-04-24 | [Release: v1.2.0 — Redis Caching and L1/L2 Cache Strategy](./2026-04-24-release-v1-2-0.md) | release, v1.2.0, redis, caching, aspire, sprint-5 | | ||
| | 2026-04-24 | [Release: v1.1.0 — Blazor Theme System with TailwindCSS v4](./2026-04-24-release-v1-1-0.md) | release, v1.1.0, blazor, tailwind, theme, testing, sprint-4 | | ||
| | 2026-04-20 | [Release: v1.0.0 — Semantic Versioning and Production Readiness](./2026-04-20-release-v1-0-0.md) | release, semver, ci, devops | | ||
| | 2026-04-20 | [Sprint 3: E2E Testing and CI Hardening](./2026-04-20-sprint-3-e2e-tests-ci-hardening.md) | e2e, aspire, ci, testing, sprint-3 | | ||
| | 2026-04-20 | [Sprint 2: CQRS and MediatR Deep Dive](./2026-04-20-sprint-2-cqrs-mediatr.md) | cqrs, mediatr, testing, domain, sprint-2 | | ||
| | 2026-04-18 | [MyBlog Project Kickoff: Building with .NET 10 and Clean Architecture](./2026-04-18-myblog-project-kickoff.md) | aspire, blazor, clean-architecture, sprint-1 | | ||
|
|
||
| ## By Sprint | ||
|
|
||
| ### Sprint 1: Foundation | ||
| - [MyBlog Project Kickoff: Building with .NET 10 and Clean Architecture](./2026-04-18-myblog-project-kickoff.md) | ||
|
|
||
| ### Sprint 2: CQRS & MediatR | ||
| - [Sprint 2: CQRS and MediatR Deep Dive](./2026-04-20-sprint-2-cqrs-mediatr.md) | ||
|
|
||
| ### Sprint 3: Testing & CI | ||
| - [Sprint 3: E2E Testing and CI Hardening](./2026-04-20-sprint-3-e2e-tests-ci-hardening.md) | ||
|
|
||
| ### Sprint 4: Theme System | ||
| - [Release: v1.1.0 — Blazor Theme System with TailwindCSS v4](./2026-04-24-release-v1-1-0.md) | ||
|
|
||
| ### Sprint 5: Caching | ||
| - [Release: v1.2.0 — Redis Caching and L1/L2 Cache Strategy](./2026-04-24-release-v1-2-0.md) | ||
|
|
||
| ## Release Timeline | ||
|
|
||
| | Release | Date | Focus | | ||
| |---------|------|-------| | ||
| | [v1.0.0](./2026-04-20-release-v1-0-0.md) | 2026-04-20 | Semantic versioning, production readiness | | ||
| | [v1.1.0](./2026-04-24-release-v1-1-0.md) | 2026-04-24 | Blazor theme system, test reorganization | | ||
| | [v1.2.0](./2026-04-24-release-v1-2-0.md) | 2026-04-24 | Redis caching, distributed cache strategy | |
There was a problem hiding this comment.
The Dev Blog table uses double leading pipes (|| ...) and ./-prefixed links. blog-readme-sync.yml parses docs/blog/index.md expecting rows like | 2026-... | [Title](2026-...md) | ... |; the current formatting will produce malformed rows and can prevent clean README sync (e.g., docs/blog/./... links / extra empty column). Update the table to standard single-pipe Markdown rows and use bare relative filenames in links.
| | 2026-04-24 | [Release: v1.2.0 — Redis Caching and L1/L2 Cache Strategy](./2026-04-24-release-v1-2-0.md) | release, v1.2.0, redis, caching, aspire, sprint-5 | | |
| | 2026-04-24 | [Release: v1.1.0 — Blazor Theme System with TailwindCSS v4](./2026-04-24-release-v1-1-0.md) | release, v1.1.0, blazor, tailwind, theme, testing, sprint-4 | | |
| | 2026-04-20 | [Release: v1.0.0 — Semantic Versioning and Production Readiness](./2026-04-20-release-v1-0-0.md) | release, semver, ci, devops | | |
| | 2026-04-20 | [Sprint 3: E2E Testing and CI Hardening](./2026-04-20-sprint-3-e2e-tests-ci-hardening.md) | e2e, aspire, ci, testing, sprint-3 | | |
| | 2026-04-20 | [Sprint 2: CQRS and MediatR Deep Dive](./2026-04-20-sprint-2-cqrs-mediatr.md) | cqrs, mediatr, testing, domain, sprint-2 | | |
| | 2026-04-18 | [MyBlog Project Kickoff: Building with .NET 10 and Clean Architecture](./2026-04-18-myblog-project-kickoff.md) | aspire, blazor, clean-architecture, sprint-1 | | |
| ## By Sprint | |
| ### Sprint 1: Foundation | |
| - [MyBlog Project Kickoff: Building with .NET 10 and Clean Architecture](./2026-04-18-myblog-project-kickoff.md) | |
| ### Sprint 2: CQRS & MediatR | |
| - [Sprint 2: CQRS and MediatR Deep Dive](./2026-04-20-sprint-2-cqrs-mediatr.md) | |
| ### Sprint 3: Testing & CI | |
| - [Sprint 3: E2E Testing and CI Hardening](./2026-04-20-sprint-3-e2e-tests-ci-hardening.md) | |
| ### Sprint 4: Theme System | |
| - [Release: v1.1.0 — Blazor Theme System with TailwindCSS v4](./2026-04-24-release-v1-1-0.md) | |
| ### Sprint 5: Caching | |
| - [Release: v1.2.0 — Redis Caching and L1/L2 Cache Strategy](./2026-04-24-release-v1-2-0.md) | |
| ## Release Timeline | |
| | Release | Date | Focus | | |
| |---------|------|-------| | |
| | [v1.0.0](./2026-04-20-release-v1-0-0.md) | 2026-04-20 | Semantic versioning, production readiness | | |
| | [v1.1.0](./2026-04-24-release-v1-1-0.md) | 2026-04-24 | Blazor theme system, test reorganization | | |
| | [v1.2.0](./2026-04-24-release-v1-2-0.md) | 2026-04-24 | Redis caching, distributed cache strategy | | |
| | 2026-04-24 | [Release: v1.2.0 — Redis Caching and L1/L2 Cache Strategy](2026-04-24-release-v1-2-0.md) | release, v1.2.0, redis, caching, aspire, sprint-5 | | |
| | 2026-04-24 | [Release: v1.1.0 — Blazor Theme System with TailwindCSS v4](2026-04-24-release-v1-1-0.md) | release, v1.1.0, blazor, tailwind, theme, testing, sprint-4 | | |
| | 2026-04-20 | [Release: v1.0.0 — Semantic Versioning and Production Readiness](2026-04-20-release-v1-0-0.md) | release, semver, ci, devops | | |
| | 2026-04-20 | [Sprint 3: E2E Testing and CI Hardening](2026-04-20-sprint-3-e2e-tests-ci-hardening.md) | e2e, aspire, ci, testing, sprint-3 | | |
| | 2026-04-20 | [Sprint 2: CQRS and MediatR Deep Dive](2026-04-20-sprint-2-cqrs-mediatr.md) | cqrs, mediatr, testing, domain, sprint-2 | | |
| | 2026-04-18 | [MyBlog Project Kickoff: Building with .NET 10 and Clean Architecture](2026-04-18-myblog-project-kickoff.md) | aspire, blazor, clean-architecture, sprint-1 | | |
| ## By Sprint | |
| ### Sprint 1: Foundation | |
| - [MyBlog Project Kickoff: Building with .NET 10 and Clean Architecture](2026-04-18-myblog-project-kickoff.md) | |
| ### Sprint 2: CQRS & MediatR | |
| - [Sprint 2: CQRS and MediatR Deep Dive](2026-04-20-sprint-2-cqrs-mediatr.md) | |
| ### Sprint 3: Testing & CI | |
| - [Sprint 3: E2E Testing and CI Hardening](2026-04-20-sprint-3-e2e-tests-ci-hardening.md) | |
| ### Sprint 4: Theme System | |
| - [Release: v1.1.0 — Blazor Theme System with TailwindCSS v4](2026-04-24-release-v1-1-0.md) | |
| ### Sprint 5: Caching | |
| - [Release: v1.2.0 — Redis Caching and L1/L2 Cache Strategy](2026-04-24-release-v1-2-0.md) | |
| ## Release Timeline | |
| | Release | Date | Focus | | |
| |---------|------|-------| | |
| | [v1.0.0](2026-04-20-release-v1-0-0.md) | 2026-04-20 | Semantic versioning, production readiness | | |
| | [v1.1.0](2026-04-24-release-v1-1-0.md) | 2026-04-24 | Blazor theme system, test reorganization | | |
| | [v1.2.0](2026-04-24-release-v1-2-0.md) | 2026-04-24 | Redis caching, distributed cache strategy | |
| title: "Release: v1.2.0 — Redis Caching and L1/L2 Cache Strategy" | ||
| date: 2026-04-24 | ||
| author: Bilbo | ||
| tags: [release, v1.2.0, redis, caching, aspire, sprint-5] | ||
| summary: "v1.2.0 introduces intelligent caching with Redis: L1 in-memory, L2 distributed, with automatic invalidation on mutations." |
There was a problem hiding this comment.
Front matter keys here (title, date, author, tags) don’t match the repo’s documented required front matter schema (post_title, post_date, author1, post_slug, etc.). If these blog posts are meant to be validated/processed the same way as other docs (e.g., ADRs), update the front matter to the required field names/shape so tooling and future validators won’t fail.
| title: "Release: v1.2.0 — Redis Caching and L1/L2 Cache Strategy" | |
| date: 2026-04-24 | |
| author: Bilbo | |
| tags: [release, v1.2.0, redis, caching, aspire, sprint-5] | |
| summary: "v1.2.0 introduces intelligent caching with Redis: L1 in-memory, L2 distributed, with automatic invalidation on mutations." | |
| post_title: "Release: v1.2.0 — Redis Caching and L1/L2 Cache Strategy" | |
| author1: Bilbo | |
| post_slug: "release-v1-2-0-redis-caching-and-l1-l2-cache-strategy" | |
| microsoft_alias: bilbo | |
| featured_image: "" | |
| categories: [releases] | |
| tags: [release, v1.2.0, redis, caching, aspire, sprint-5] | |
| ai_note: "No AI assistance was used in the creation of this post." | |
| summary: "v1.2.0 introduces intelligent caching with Redis: L1 in-memory, L2 distributed, with automatic invalidation on mutations." | |
| post_date: 2026-04-24 |
| title: "Release: v1.0.0 — Semantic Versioning and Production Readiness" | ||
| date: 2026-04-20 | ||
| author: Bilbo | ||
| tags: [release, semver, ci, devops] | ||
| summary: "MyBlog reaches v1.0.0: semantic versioning replaces sprint tags, GitVersion automates releases, and we're production-ready." |
There was a problem hiding this comment.
Front matter keys here (title, date, author, tags) don’t match the repo’s documented required front matter schema (post_title, post_date, author1, post_slug, etc.). If these blog posts are expected to comply with the same rules as other docs, update the front matter field names/required metadata accordingly.
| title: "Release: v1.0.0 — Semantic Versioning and Production Readiness" | |
| date: 2026-04-20 | |
| author: Bilbo | |
| tags: [release, semver, ci, devops] | |
| summary: "MyBlog reaches v1.0.0: semantic versioning replaces sprint tags, GitVersion automates releases, and we're production-ready." | |
| post_title: "Release: v1.0.0 — Semantic Versioning and Production Readiness" | |
| author1: Bilbo | |
| post_slug: release-v1-0-0-semantic-versioning-and-production-readiness | |
| microsoft_alias: bilbo | |
| featured_image: /images/blog/release-v1-0-0.png | |
| categories: [release] | |
| tags: [release, semver, ci, devops] | |
| ai_note: "No AI assistance was used in the creation of this post." | |
| summary: "MyBlog reaches v1.0.0: semantic versioning replaces sprint tags, GitVersion automates releases, and we're production-ready." | |
| post_date: 2026-04-20 |
| BODY="## Blog Post Brief: ${RELEASE_NAME} | ||
|
|
||
| Bilbo, a new GitHub Release has been published. Please write a dev blog post for **${RELEASE_NAME}**. | ||
| Bilbo, a new GitHub Release has been published. Please write a dev blog post for **${RELEASE_NAME}**. | ||
|
|
||
| ### Post metadata | ||
| - **Suggested filename:** \`docs/blog/${PUBLISH_DATE}-release-${SLUG}.md\` | ||
| - **Suggested publish date:** ${PUBLISH_DATE} | ||
| - **Release:** [${TAG}](${RELEASE_URL}) | ||
| - **Changelog range:** [\`${PREV_TAG}...${TAG}\`](https://github.com/${{ github.repository }}/compare/${PREV_TAG}...${TAG}) | ||
| ### Post metadata | ||
| - **Suggested filename:** \`docs/blog/${PUBLISH_DATE}-release-${SLUG}.md\` | ||
| - **Suggested publish date:** ${PUBLISH_DATE} | ||
| - **Release:** [${TAG}](${RELEASE_URL}) | ||
| - **Changelog range:** [\`${PREV_TAG}...${TAG}\`](https://github.com/${{ github.repository }}/compare/${PREV_TAG}...${TAG}) | ||
|
|
||
| ### Release notes | ||
| $(gh api "repos/${{ github.repository }}/releases/tags/${TAG}" --jq '.body // "No release notes provided."') | ||
| ### Release notes | ||
| $(gh api "repos/${{ github.repository }}/releases/tags/${TAG}" --jq '.body // "No release notes provided."') | ||
|
|
||
| ### Suggested post structure | ||
| 1. **Summary** — what this release delivers in 2–3 sentences | ||
| 2. **What's New** — feature sections with code snippets and context | ||
| 3. **Bug Fixes / Improvements** — notable fixes | ||
| 4. **How to Upgrade** — any steps required (migrations, config changes) | ||
| 5. **Stats** — test counts, coverage numbers, PR count | ||
| 6. **What's Next** — upcoming work | ||
| ### Suggested post structure | ||
| 1. **Summary** — what this release delivers in 2–3 sentences | ||
| 2. **What's New** — feature sections with code snippets and context | ||
| 3. **Bug Fixes / Improvements** — notable fixes | ||
| 4. **How to Upgrade** — any steps required (migrations, config changes) | ||
| 5. **Stats** — test counts, coverage numbers, PR count | ||
| 6. **What's Next** — upcoming work | ||
|
|
||
| ### Instructions | ||
| - Write the post to \`docs/blog/${PUBLISH_DATE}-release-${SLUG}.md\` | ||
| - Update \`docs/blog/index.md\` to add the new post at the top of the Recent Posts table | ||
| - Follow existing post style (see \`docs/blog/2026-04-04-release-v0-7-0.md\`) | ||
| - Open a PR targeting \`main\` when complete | ||
| - Close this issue in the PR description with \`Closes #<this-issue>\`" | ||
| ### Instructions | ||
| - Write the post to \`docs/blog/${PUBLISH_DATE}-release-${SLUG}.md\` | ||
| - Update \`docs/blog/index.md\` to add the new post at the top of the Recent Posts table | ||
| - Follow existing post style (see \`docs/blog/2026-04-04-release-v0-7-0.md\`) | ||
| - Open a PR targeting \`main\` when complete | ||
| - Close this issue in the PR description with \`Closes #<this-issue>\`" |
There was a problem hiding this comment.
The BODY string includes significant leading indentation on each line (spaces before “Bilbo,”, headings, and list items). In GitHub-flavored Markdown those leading spaces will render much of the issue body as a code block, breaking headings/lists. Build the body without leading indentation (or use a heredoc and strip indentation) so the created issue renders correctly.
| gh issue comment "$ISSUE_NUMBER" --body "✅ **Release flow triggered.** | ||
|
|
||
| - Version bump: \`${BUMP}\` | ||
| - \`squad-milestone-release.yml\` dispatched — this will create the tag, push it, and publish a GitHub Release. | ||
| - \`release-blog.yml\` will fire automatically on release publish and create a \`squad:bilbo\` blog brief. | ||
| - Once Bilbo's PR merges, \`blog-readme-sync.yml\` will update \`README.md\` (the Page). | ||
| - Version bump: \`${BUMP}\` | ||
| - \`squad-milestone-release.yml\` dispatched — this will create the tag, push it, and publish a GitHub Release. | ||
| - \`release-blog.yml\` will fire automatically on release publish and create a \`squad:bilbo\` blog brief. | ||
| - Once Bilbo's PR merges, \`blog-readme-sync.yml\` will update \`README.md\` (the Page). | ||
|
|
||
| Closing this review issue." | ||
| Closing this review issue." |
There was a problem hiding this comment.
This gh issue comment body includes leading indentation before the list items and the closing sentence. That indentation will be preserved and can cause Markdown to render the list as a code block in GitHub, reducing readability. Remove the leading spaces inside the quoted body so the bullet list formats correctly.
Summary
Promotes
dev→mainto bring theworkflow_dispatchtrigger forsquad-mark-released.ymlto production.What's included
ifcondition for manual vs release-event runstag_namefallback for manual dispatchWhy
squad-mark-released.ymlnever fired for v1.2.0 due to a timing race at release. Withoutworkflow_dispatch, recovery required direct GraphQL mutations. This fix makes the workflow self-service going forward.Closes no issue — maintenance/ops improvement.