📝 docs(release): promote v1.6.0 to GA - #698
Conversation
- consolidate the complete v1.6.0-rc.1 through rc.13 changelog into a themed v1.6.0 GA entry (Portwing edge/agent transport, declarative update policy + maturity gate, per-rule notifications, responsive DataTable rollout, /api/v1 parity + unversioned /api removal, security hardening) instead of concatenating every rc bullet - roll the release identity forward to plain v1.6.0 across README, the website site-config/site-content, docs API examples and quickstart tag matrix, demo mocks, and the changelog compare-link chain, matching the pattern established at every prior rc cut - add v1.6.0 GA regression coverage to changelog-links.test.mjs and update the shape-aware release-identity test constants to the GA shape Required so `scripts/extract-changelog-entry.mjs --version v1.6.0` resolves a non-empty entry for the release-cut workflow's changelog gate.
|
@coderabbitai review |
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
|
|
Important Review skippedNo new commits to review since the last review. ⚙️ Run configurationConfiguration used: Path: .coderabbit.yaml Review profile: CHILL Plan: Pro Plus Run ID: You can disable this status message by setting the Use the checkbox below for a quick retry:
📝 WalkthroughWalkthroughThe release identity changes promote Possibly related PRs
🚥 Pre-merge checks | ✅ 2✅ Passed checks (2 passed)
✨ Finishing Touches📝 Generate docstrings
🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
|
@coderabbitai review |
✅ Action performedReview finished.
|
There was a problem hiding this comment.
Actionable comments posted: 1
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In `@scripts/changelog-links.test.mjs`:
- Around line 125-134: Update the RC-heading removal assertion in the test for
extractChangelogEntry so it checks the full changelog variable rather than the
extracted entry, while preserving the existing release-note assertions.
🪄 Autofix
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Path: .coderabbit.yaml
Review profile: CHILL
Plan: Pro Plus
Run ID: 50658ff0-7fa5-4347-94ab-13cd8ba3a63b
⛔ Files ignored due to path filters (1)
CHANGELOG.mdis excluded by!CHANGELOG.md
📒 Files selected for processing (16)
README.mdapps/demo/src/mocks/data/agents.tsapps/demo/src/mocks/data/audit.tsapps/demo/src/mocks/data/containers.tsapps/demo/src/mocks/data/server.tsapps/demo/src/mocks/handlers/app.tsapps/web/src/lib/site-config.tsapps/web/src/lib/site-content.tscontent/docs/current/api/agent.mdxcontent/docs/current/api/app.mdxcontent/docs/current/api/portwing.mdxcontent/docs/current/quickstart/index.mdxcontent/docs/current/updates/index.mdxscripts/changelog-links.test.mjsscripts/release-docs-identity.test.mjsscripts/release-identity.test.mjs
| test('real changelog exposes nonempty v1.6.0 GA release notes', () => { | ||
| const entry = extractChangelogEntry(changelog, 'v1.6.0'); | ||
|
|
||
| assert.match(entry, /^## \[1\.6\.0\] [–—-] \d{4}-\d{2}-\d{2}$/mu); | ||
| assert.match(entry, /Consolidates the `1\.6\.0-rc\.1` … `1\.6\.0-rc\.13` prereleases\./u); | ||
| assert.match(entry, /^### Added$/mu); | ||
| assert.match(entry, /^### Changed$/mu); | ||
| assert.match(entry, /^### Fixed$/mu); | ||
| assert.match(entry, /^### Security$/mu); | ||
| assert.doesNotMatch(entry, /^## \[1\.6\.0-rc\.13\]/mu); |
There was a problem hiding this comment.
🎯 Functional Correctness | 🟡 Minor | ⚡ Quick win
Check RC-heading removal in the full changelog.
extractChangelogEntry() stops at the next top-level ## [ heading. Therefore, assert.doesNotMatch(entry, ...) passes even if CHANGELOG.md still contains a separate 1.6.0-rc.13 heading.
Assert against changelog instead.
Proposed fix
- assert.doesNotMatch(entry, /^## \[1\.6\.0-rc\.13\]/mu);
+ assert.doesNotMatch(changelog, /^## \[1\.6\.0-rc\.13\]/mu);📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| test('real changelog exposes nonempty v1.6.0 GA release notes', () => { | |
| const entry = extractChangelogEntry(changelog, 'v1.6.0'); | |
| assert.match(entry, /^## \[1\.6\.0\] [–—-] \d{4}-\d{2}-\d{2}$/mu); | |
| assert.match(entry, /Consolidates the `1\.6\.0-rc\.1` … `1\.6\.0-rc\.13` prereleases\./u); | |
| assert.match(entry, /^### Added$/mu); | |
| assert.match(entry, /^### Changed$/mu); | |
| assert.match(entry, /^### Fixed$/mu); | |
| assert.match(entry, /^### Security$/mu); | |
| assert.doesNotMatch(entry, /^## \[1\.6\.0-rc\.13\]/mu); | |
| test('real changelog exposes nonempty v1.6.0 GA release notes', () => { | |
| const entry = extractChangelogEntry(changelog, 'v1.6.0'); | |
| assert.match(entry, /^## \[1\.6\.0\] [–—-] \d{4}-\d{2}-\d{2}$/mu); | |
| assert.match(entry, /Consolidates the `1\.6\.0-rc\.1` … `1\.6\.0-rc\.13` prereleases\./u); | |
| assert.match(entry, /^### Added$/mu); | |
| assert.match(entry, /^### Changed$/mu); | |
| assert.match(entry, /^### Fixed$/mu); | |
| assert.match(entry, /^### Security$/mu); | |
| assert.doesNotMatch(changelog, /^## \[1\.6\.0-rc\.13\]/mu); |
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In `@scripts/changelog-links.test.mjs` around lines 125 - 134, Update the
RC-heading removal assertion in the test for extractChangelogEntry so it checks
the full changelog variable rather than the extracted entry, while preserving
the existing release-note assertions.
CodeRabbit caught that doesNotMatch(entry, rc.13) proves nothing, since extractChangelogEntry stops at the next top-level heading anyway. Its suggested fix asserted the whole changelog has no rc.13 heading, which would fail: the rc sections are kept below the GA entry on purpose. Added the assertion that actually has teeth instead.
|
@coderabbitai review |
|
Summary
## [1.6.0]GA changelog section soscripts/extract-changelog-entry.mjs --version v1.6.0resolves a non-empty entry for the release-cut workflow's changelog gate.1.6.0-rc.1…1.6.0-rc.13series by theme (Portwing edge/agent transport, declarative update policy + maturity stabilization gate, per-rule notifications, responsive DataTable rollout,/api/v1parity + unversioned/api/*removal, security hardening) instead of concatenating every rc bullet verbatim. All existingrc.*sections are left untouched as history.1.6.0-rc.13to plain1.6.0across README (badge + a newv1.6.0 highlightsblock), the websitesite-config/site-content, docs API examples (app.mdx,agent.mdx,portwing.mdx), the quickstart tag matrix, and the demo mocks — matching the pattern every prior rc cut used, and required byscripts/release-identity.test.mjs/scripts/release-docs-identity.test.mjs, which assert these surfaces stay in lockstep with the changelog (both tests are written to accept either an rc or a plain-GA shape for the same constant).scripts/changelog-links.test.mjs's hardcoded comparison-link chain and added av1.6.0GA regression test (structural/theme-marker assertions, not a strict bullet-for-bullet match, since the GA entry is a synthesis rather than a concatenation).package.json/package-lock.jsonfiles already read1.6.0in every workspace and were left untouched.Verification
node scripts/extract-changelog-entry.mjs --version v1.6.0 --file CHANGELOG.mdexits 0 with a non-empty entry.node --test scripts/*.test.mjs— 141/141 passing.npm run test:scripts --prefix apps/web— 56/56 passing.npm run test:workflows— 71/71 passing.npm run typecheck --prefix ui— clean../scripts/pre-push-build.sh(app + ui builds) — both succeed.npx biome check .— clean (one pre-existing, unrelated deprecation notice).Note
core.hooksPathin this repo's local git config points at/Users/sbenson/code/drydock/.git/hooks, a path that no longer exists (the repo lives at~/code/codeswhat/drydockper the current layout convention), sogit pushsilently ran no lefthook pre-push checks. I ran the pre-push commands manually instead (results above) rather than relying on the hook. Flagging so it can be fixed at the repo level — not something I want to touch viagit configmyself.Test plan
ci-verify.yml) is green on this PR.scripts/extract-changelog-entry.mjs --version v1.6.0gate passes in the release-cut workflow dry context.Changelog
v1.6.0changelog entry with RC1–RC13 highlights.1.6.0-rc.13to1.6.0across README, website, documentation, quickstart tags, and demo mocks.v1.6.0highlights.Concerns
August 11, 2026, matches the release schedule.1.6.0-rc.13references are intentional.