2026-09
v8.0.10 (2026-09-24)โ
Catalyst v8.0.10
Release date: 2026-10-01
Gem: cm_admin v8.0.10
Compare: v8.0.9...v8.0.10
โ No breaking changes. No migrations required. This release is a safe drop-in upgrade โ no rake tasks, no database migrations, and no API changes to run. The bulk of the work hardens the release-automation pipeline so generated changelogs reliably reach
main.
๐ Featuresโ
- ๐ค AI-powered changelog generation and Slack notifications for releases โ every gem release now automatically assembles release notes from
CHANGELOG.md, the git log, merged PR bodies, and the docs diff via the OpenRouter API, publishes them to a monthly Docusaurus changelog page, and posts a rich Block Kit summary to Slack. No manual changelog writing required. #1580 - ๐ PR links and embedded media in generated release notes โ each generated change entry now links back to its source PR, and GitHub attachment URLs found in PR bodies are preserved and embedded as inline images rather than being dropped. #1580
- ๐ Release registry with breaking-change and migration tracking โ a new
releases.jsonregistry records the version, date, and whether a release carries breaking changes or migrations, so downstream tooling can surface upgrade warnings programmatically. #1580 - ๐
releases.jsonserved as a static file via Docusaurus โ the registry ships with the docs site and is available at a stable public URL. #1580 - โ ๏ธ Warning badges and migration commands in generated release notes โ release notes now open with a prominent Breaking Changes / Migration Required badge and include the exact rake or migration commands to run when one applies. #1580
๐ Bug Fixesโ
- ๐ Changelog commits no longer silently dropped on non-fast-forward push rejections โ the docs push step now rebases on
origin/mainand retries up to 5 times with a 5s backoff. Previously a singlegit push origin maindied whenevermainadvanced between checkout and push, so the September 2026 page andreleases.jsonnever landed on main. #1615 - โป๏ธ Docs-page updates are now idempotent โ job re-runs no longer duplicate a version's release section, and legacy
./<month>index links are migrated in place so re-runs can't insert duplicate entries. #1615 - ๐ Changelog index links corrected to
./Changelog/<month>โ the previous relative links (./2026-09) resolved to/docs/2026-09, a missing page, because the index is served at/docs/Changelogwithout a trailing slash. #1615 - ๐ท๏ธ Release registry versions stored without the leading
vโ versions are now stored in a numerically comparable format, and dedup handles bothv8.0.9and8.0.9so re-runs can't create duplicate entries. #1615 - ๐
docs_urlnow points at the live domain โ registry and Slack links now usedocs.cm-admin.commutatus.com; the previously usedcm-admin-docs.commutatus.comhas no DNS records and would 404 for users. #1615
โจ Improvementsโ
- ๐ฆ Pipeline-generated v8.0.9 artifacts added โ the September 2026 release-notes page and its
releases.jsonregistry entry are now committed, backfilling the release that the broken push step had dropped. #1615 - ๐ชถ Release registry simplified to track only version, date, breaking-change/migration flags, and docs URL, dropping redundant metadata. #1580
- ๐งฉ
response_formatextracted into a dedicated method in the release-notes generator for readability. #1580 - ๐ JSON schema moved into OpenRouter's
response_formatand the prompt template relocated to.github/prompts/prompt_template.txt. #1580 - ๐
max_tokensincreased to 4000 to prevent JSON truncation โ the model response was occasionally cut off mid-JSON, which caused changelog generation to silently fall back to raw git-log output. #1580 - ๐ฆ Inline workflow scripts extracted out of YAML into
.github/scriptsand then relocated to.github/lib, making the workflows far easier to read and maintain. #1580 - ๐งช Release creation and push skipped during test runs;
escape_mdcleaned up โ dry runs no longer create tags or push commits tomain. #1580 - ๐ง
workflow_dispatchandpr_numbertest inputs removed from the changelog workflow now that the pipeline is stable. #1580 - ๐๏ธ Obsolete
notify_slack_release.shscript removed โ superseded bynotify_slack_release.rb. #1580
โ ๏ธ Breaking Changesโ
None in this release. โ
๐ Documentationโ
- ๐
ReleaseChangelog.mdexamples updated to match the new registry format and live domain โ the samplereleases.jsonentry now shows"version": "7.2.26"(no leadingv) and"docs_url": "https://docs.cm-admin.commutatus.com/docs/Changelog/2026-09", so anyone following the docs copies a working configuration. #1615 - ๐ Changelog index link corrected in
docs-site/docs/Changelog/index.mdโ the September 2026 entry now points at./Changelog/2026-09, matching the served URL structure. #1615 - ๐๏ธ September 2026 release-notes page published (
docs-site/docs/Changelog/2026-09.md) โ documents the v8.0.9 release, including its feature, bug-fix, and improvement sections. #1615 - ๐ "Releasing the Gem" (
docs-site/docs/4. Deployment/ReleaseGem.md) โ covers the stablerelease-cm-gem.ymlworkflow (trigger,bump_typeinput, build/release/changelog job graph, required secrets and variables) and the betarelease-beta-gem.ymlworkflow, including how beta version numbers are derived from existingv<base>.beta*tags. Also notes that beta releases are pre-releases and do not trigger the changelog workflow. #1580 - ๐ค "Release Changelog & Notifications" (
docs-site/docs/4. Deployment/ReleaseChangelog.md) โ documents the reusablechangelog-release.ymlworkflow and each of its components:collect_context.sh,generate_release_notes.rb(including the JSON response shape and fallback behaviour when OpenRouter is unavailable),update_docs_page.sh,update_release_registry.rb, andnotify_slack_release.rb. Also documents the prompt template location and how to tune generated note structure and tone. #1580 - ๐ Changelog section index (
docs-site/docs/Changelog/index.md) โ a landing page for the Changelog docs section listing recent months, with each monthly page (<YYYY-MM>.md) holding that month's AI-generated release notes. #1580
sidebar_position: 202609โ
Release Notes โ September 2026
v8.0.9 (2026-09-24)โ
Catalyst v8.0.9
Release date: September 24, 2026
Gem: cm_admin v8.0.9
Compare: v8.0.8...v8.0.9
โ No breaking changes. No migrations required. This release is a safe drop-in upgrade โ no rake tasks, no database migrations, and no API changes to run. The bulk of the work is release-automation tooling plus two UI fixes.
๐ Featuresโ
- ๐ค AI-powered changelog generation and Slack notifications for releases โ every gem release now automatically assembles release notes from
CHANGELOG.md, the git log, merged PR bodies, and the docs diff via the OpenRouter API, publishes them to a monthly Docusaurus changelog page, and posts a rich Block Kit summary to Slack. No manual changelog writing required. #1580 - ๐ PR links and embedded media in generated release notes โ each generated change entry now links back to its source PR, and GitHub attachment URLs found in PR bodies are preserved and embedded as inline images rather than being dropped. #1580
- ๐ Release registry with breaking-change and migration tracking โ a new
releases.jsonregistry records the version, date, and whether a release carries breaking changes or migrations, so downstream tooling can surface upgrade warnings programmatically. #1580 - ๐
releases.jsonserved as a static file via Docusaurus โ the registry ships with the docs site and is available at a stable public URL. #1580 - โ ๏ธ Warning badges and migration commands in generated release notes โ release notes now open with a prominent Breaking Changes / Migration Required badge and include the exact rake or migration commands to run when one applies. #1580
๐ Bug Fixesโ
- ๐ Custom form modal errors now render in shared alert banner markup, safely โ
custom_form_submit_controller.jsrenders submit errors using the standardalert-bannerstructure instead of ad-hocd-flexmarkup, so modal errors match the alert styling used elsewhere in cm-admin (_alert_banner.html.slim,_default_import_notes.html.slim). The server-provided message is now assigned viatextContentrather than interpolated intoinnerHTML, closing an XSS vector whenever a server error message reflects user input.errorContaineris also null-guarded on both the submit and error paths, removing a latentTypeErrorwhen the container is absent. New spacing styles forul,p, andliinside.alert-banner-textkeep list-based alert content readable. #1614 - ๐ท๏ธ Catalyst branding in release notes and Slack notifications โ generated notes and Slack messages no longer leak internal project naming. #1580
- ๐
max_tokensincreased to 4000 to prevent JSON truncation โ the model response was occasionally cut off mid-JSON, which caused changelog generation to silently fall back to raw git-log output. #1580 - ๐งช Release creation and push skipped during test runs;
escape_mdcleaned up โ dry runs no longer create tags or push commits tomain. #1580 - ๐งน Code review findings on the release automation addressed โ follow-up fixes from review of the changelog pipeline. #1580
โจ Improvementsโ
- ๐จ Export modal secondary button styling moved to SCSS
@extendโ the modal footer now carries a[type="button"], .btn-secondaryrule extending.btn, .btn-outline-dark, .btn-sm, .btn-icon-spacing, mirroring the existing primary-action rule. This fixes the export modal's Close button rendering as Bootstrap's solidbtn-secondaryinstead of the cm-admin design-system outline style, which happened because the export modal renders outside the.cm-adminwrapper and never picked up.cm-admin .btn-secondary. The export modal's class list was simplified frombtn btn-secondarytobtn-secondary. #1613 - ๐งฉ
response_formatextracted into a dedicated method in the release-notes generator for readability. #1580 - ๐ชถ Release registry simplified to track only version, date, breaking-change/migration flags, and docs URL, dropping redundant metadata. #1580
- ๐ง
workflow_dispatchandpr_numbertest inputs removed from the changelog workflow now that the pipeline is stable. #1580 - ๐ฆ Inline workflow scripts extracted out of YAML into
.github/scriptsand then relocated to.github/lib, making the workflows far easier to read and maintain. #1580 - ๐ JSON schema moved into OpenRouter's
response_formatand the prompt template relocated to.github/prompts/prompt_template.txt. #1580 - ๐
Hash shorthand used for
response_formatand a redundant comment dropped. #1580 - ๐๏ธ Obsolete
notify_slack_release.shscript removed โ superseded bynotify_slack_release.rb. #1580
โ ๏ธ Breaking Changesโ
None in this release. โ
๐ Documentationโ
Three new pages were added to the docs site (182 insertions across 3 files), documenting the release pipeline end to end:
- ๐ "Releasing the Gem" (
docs-site/docs/4. Deployment/ReleaseGem.md) โ covers the stablerelease-cm-gem.ymlworkflow (trigger,bump_typeinput, build/release/changelog job graph, required secrets and variables) and the betarelease-beta-gem.ymlworkflow, including how beta version numbers are derived from existingv<base>.beta*tags. Also notes that beta releases are pre-releases and do not trigger the changelog workflow. #1580 - ๐ค "Release Changelog & Notifications" (
docs-site/docs/4. Deployment/ReleaseChangelog.md) โ documents the reusablechangelog-release.ymlworkflow and each of its components:collect_context.sh,generate_release_notes.rb(including the JSON response shape and fallback behaviour when OpenRouter is unavailable),update_docs_page.sh,update_release_registry.rb, andnotify_slack_release.rb. Also documents the prompt template location and how to tune generated note structure and tone. #1580 - ๐ Changelog section index (
docs-site/docs/Changelog/index.md) โ a new landing page for the Changelog docs section listing recent months, with each monthly page (<YYYY-MM>.md) holding that month's AI-generated release notes. #1580