Repository navigation
chore(release): prepare 0.4.8 and remote runtime v27 - #853
Conversation
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
|
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info
📝 Summary
Merge Risk: ⚪ Minimal · up to The supplied release metadata and notes describe the 0.4.8 release and remote runtime 27. No actionable merge-blocking issue is established; proceed with normal CI and the stated release sequence. Pre-merge checks |
|
## Change CHANGELOG.md's `## [Unreleased]` lists are the repo's most frequent merge conflict: every PR appends to the same Added/Changed/Fixed lists, and a conflict resolver once pushed the markers (#838). A PR now adds one small file to `changelog.d/` instead, so two PRs never touch the same lines. - **Format** (`changelog.d/README.md`): a lowercase `name.md` holding exactly the lines it would have in CHANGELOG.md: `### Added|Changed|Removed|Fixed|Maintenance` headings, `- ` entries, two-space continuations. No PR link or credit needed. - **Fold** (`scripts/changelog-fold.ts`): the release PR runs `bun scripts/changelog-fold.ts X.Y.Z [YYYY-MM-DD]` (the date defaults to the local one). It turns the Unreleased notes into `## [X.Y.Z] - date` under an empty `## [Unreleased]` (the shape of #853), with the existing Unreleased entries first, then the fragments sorted by file name, sections in release order (any other heading the old notes used is kept after them). It links each fragment's entries to the PR whose squash merge added the file (from `git log --follow --diff-filter=A`, so a later rename does not take the link) unless the entry already links that PR, moves the compare links on, deletes the fragments, and prints what still needs a link plus the reminder to add `by @login` credits. It refuses rather than drops a line it cannot place. - **Release gate**: `scripts/release-notes.ts`, which release.yml runs before tagging, refuses while `changelog.d/` still holds a fragment (one merged after the release PR folded them would otherwise ship without a line in the notes), and says to move its entries into the version by hand. - **Transition**: the ~30 open PRs that still append to Unreleased need no rework; their lines are folded together with the fragments. CHANGELOG.md content is unchanged in this PR. `scripts/release-notes.ts`, `server/release-notes.ts` and `scripts/update-browser-qa.ts` read the same shape as before. - **Guards** (`scripts/changelog-fold.test.ts`, unit suite): every fragment parses (known section, at least one non-empty entry, no stray text, lowercase `.md` name); CHANGELOG.md and the fragments hold no conflict markers; today's Unreleased notes plus fragments fold for the next release, so an old PR's malformed entry fails at its own PR rather than at release. Failure messages name the file and line and point at `changelog.d/README.md`. Not enforced yet: that a PR leaves CHANGELOG.md alone. A ratchet or a `changes`-job check would fail the ~30 open PRs that still append there (or turn main red when one of them merges on a stale green run), so it is a planned follow-up once they have drained; AGENTS.md says so. - **Docs**: CONTRIBUTING.md (changelog bullet), AGENTS.md maintainer workflow (one line, pointing at the test), docs/development.md Releasing step 1, the PR template comment. No CHANGELOG entry or fragment: not user-visible. ## Validation - `bun run check fast`: workflow syntax, generated types, typecheck (the fold script added to `tsconfig.tools.json`), build, unit (3032 pass, 0 fail, 8 skip). - `bun test scripts/changelog-fold.test.ts scripts/release-notes.test.ts`: 18 pass, including one where `releaseNotes()` reads a folded changelog. - `git log --follow --diff-filter=A` checked on a throwaway branch: after `x (#1000)` adds a fragment and `chore: rename (#1001)` renames it, it reports #1000 (without `--follow`, #1001). - Dry run on this branch with a probe fragment: `bun scripts/changelog-fold.ts 0.4.9 2026-10-13` changed CHANGELOG.md by only the new heading, the probe line at the end of Fixed and the two compare links (+5/-1), and deleted the fragment. Reverted afterwards. 🤖 Generated with [Claude Code](https://claude.com/claude-code) --------- Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Change
Release 0.4.8, from main at ca6db6e (20 PRs since v0.4.7: the 0.4.7 mobile walk-through fixes, two contributor PRs and the revived #793).
package.jsonandherdr-plugin.toml: 0.4.8.[Unreleased]becomes[0.4.8] - 2026-10-12, with the compare links. Twelve entries that had no PR link get theirs (fix(mobile): move a lone pane's actions into the tab menu on touch screens #835 fix(mobile): close a menu sheet on Back instead of switching panes #837 fix(mobile): leave a touch long press on a pane to the phone #838 fix(mobile): keep a split tab's hidden panes from resizing the shared pty #840 fix(mobile): close every phone dialog on Back, not only the ⋯ menus #842 fix(ws): reconnect at once when a phone wakes instead of waiting out the backoff #843 fix(new-workspace): leave worktrees and temp folders out of recent folders #844+feat(new-workspace): one row of recent folders with a +N chip on wide screens #848 fix(updates): keep the update line to one row on any width #845 fix(file-viewer): draw a markdown file's HTML blocks instead of their tags #847 feat(file-viewer): open a markdown file's new tab as a page of the document #849 fix(chat): show why a message did not go above the message box #851 fix(sidebar): keep a pinned agent in its workspace card #852). A Maintenance line says the remote-PC runtime is now version 27.release-summaries.json: 0.4.8 in en/ko/ja/zh/tr (3 new, 6 improved, 8 fixed). The Turkish lines are not checked by a native speaker.REMOTE_BUNDLE_VERSION26 -> 27: feat(chat): add a setting to hold queued messages for Send now #836 adds thepending-holdserver feature and feat(server): serve precompressed immutable JavaScript and CSS assets #787 serves precompressed assets, soremote-v27is published before the app release.Every PR merged since v0.4.7 is linked in the section: #787 #788 #793 #835 #836 #837 #838 #839 #840 #841 #842 #843 #844 #845 #846 #847 #848 #849 #851 #852.
Validation
bun scripts/release-notes.ts 0.4.8renders the summaries and the full changelog (116 lines).bun run check fast: generated types, typecheck, build and 2800+ unit tests pass.Release
After this merges and its CI on
mainpasses: pushremote-v27, wait for its release, then run the Release workflow with0.4.8.🤖 Generated with Claude Code