Skip to content

ci: main ships: releases, and a core bump that proves itself in Prism (#23) - #24

Merged
Maxaubert merged 3 commits into
mainfrom
ci/23-core-release
Sep 19, 2026
Merged

Maxaubert merged 3 commits into
mainfrom
ci/23-core-release

Conversation

@Maxaubert

@Maxaubert Maxaubert commented Sep 19, 2026 •

Copy link
Copy Markdown
Owner

Closes #23. Owner, 2026-09-19: "that compiled copy needs to be auto bumped when a new Prism Terminal release or merge to main happens", "we need automated tests to confirm it never conflicts. that's important", and "users of the app can get an update available banner in their app title bar."

What merging to main does after this

release.yml (new). A push to main with a NEW package.json version runs the same gates as CI, builds the installer and publishes v<version> as the latest release. That is what the in-app update chip has always looked for; until now nothing published anything, so the chip could never fire. A version that is already released publishes nothing and does not fail (docs-only merges are not errors).

core-release.yml (new). A push to main that touches core/:

  1. re-splits core/ into core-dist and tags core-v<version>. Same contents as an existing tag: nothing to do. Different contents under an existing tag: it fails; a tag people pinned is never moved.
  2. opens a PR in Maxaubert/Prism that bumps the pin AND Prism's version (minor when the core's major.minor moved, else patch), so Prism's release workflow will publish a NEW release and its users' update chip fires.
  3. waits for that PR's checks. Those now include Prism's terminal gate on a GitHub runner (Prism Links in Claude Code's fullscreen view lose their blue after a hover until a scroll #163 / Clicking a tab shifts the tab strip (Powerline, and Full fills) #164): it builds the app and drives every scenario the terminal can break, real dictation included. Measured green 3 runs of 3, 173 checks, about six minutes.
  4. If the repo variable PRISM_AUTO_MERGE is true, it merges the PR and Prism releases itself. Otherwise (the default) the green PR waits for a person. A red check never merges, in either mode.

ci.yml gains core-version: a PR that changes core/ without bumping core/package.json fails on the PR, not after the merge.

Two switches, both the owner's

  • Secret PRISM_BUMP_TOKEN (fine-grained token on Maxaubert/Prism, Contents + Pull requests read/write). Without it the workflow releases the core, warns, and opens nothing.
  • Variable PRISM_AUTO_MERGE. Unset means "open the PR and wait for me". true is a standing exception to "never merge without my word", scoped to these bot-made bump PRs.

What the CI gate already caught (in Prism #163 / core rc.6)

Running the gate on a runner for the first time found that the speech-engine fetch failed when started from PowerShell 7, which is how every runner starts it: it would have broken BOTH apps' release builds. Fixed in the core. It also found two test assumptions about the owner's machine (a real claude CLI; a repo under C:\Users).

Verification

All three workflow files parse. The release decision (split, compare trees with the tag) and the minor-or-patch rule were run locally against this repo's real tags and pins. The workflows themselves can only run for real on main: the first release run is this merge (it will publish v0.1.1, the first release this repo has had), and the first core-release run is the dictation merge (#22, core 0.2.0). I will watch both.

One slip, fixed before review: my first commit on this branch swept in vendor/ and .e2e-cache/ (89 MB; main's .gitignore did not know them yet). Removed from the commit, ignored, force-pushed.

🤖 Generated with Claude Code

… Prism (#23)

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
…f in Prism and can merge itself (#23)

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
@Maxaubert Maxaubert changed the title ci(core): the core releases itself, and opens Prism's pin bump (#23) ci: main ships: releases, and a core bump that proves itself in Prism (#23) Sep 19, 2026
…enario first (#23)

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
@Maxaubert
Maxaubert merged commit 5e1c3c1 into main Sep 19, 2026
2 checks passed
@Maxaubert
Maxaubert deleted the ci/23-core-release branch September 19, 2026 19:56
Maxaubert added a commit that referenced this pull request Sep 25, 2026
- Warm shell: a stale exit removes only its own entry (#2).
- A tab closed while its shell is starting kills it; no duplicate spawn (#12).
- Dictation: a stop while transcribing is not heard, so one paste (#4).
- Ctrl+C / Ctrl+V also match the physical key (#6).
- The panel attach is keyed on the session; a cd no longer steals focus (#9, #23).
- Tab chords do nothing under a question or the update window (#10).
- Cells vs UTF-16: resize carry and link hit-testing via termCells (#20, #25).
- Shift+Enter continuation only where an agent runs (#21).
- The resume spinner stops when the spawn fails (#24).
- Restore runs once under StrictMode (#31).
- The terminal menu belongs to its session and goes on a tab change (#32).
- A drag that never drops gives the strip back (#33).

Core 0.15.2, app 0.18.2. New reviewKeys e2e, unit tests for sessions,
dictation and termCells; each fails on the code before the fix.


Claude-Session: https://claude.ai/code/session_01LJbePcRzre7AusNzPNS2Bk

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
github-actions Bot pushed a commit that referenced this pull request Sep 25, 2026
- Warm shell: a stale exit removes only its own entry (#2).
- A tab closed while its shell is starting kills it; no duplicate spawn (#12).
- Dictation: a stop while transcribing is not heard, so one paste (#4).
- Ctrl+C / Ctrl+V also match the physical key (#6).
- The panel attach is keyed on the session; a cd no longer steals focus (#9, #23).
- Tab chords do nothing under a question or the update window (#10).
- Cells vs UTF-16: resize carry and link hit-testing via termCells (#20, #25).
- Shift+Enter continuation only where an agent runs (#21).
- The resume spinner stops when the spawn fails (#24).
- Restore runs once under StrictMode (#31).
- The terminal menu belongs to its session and goes on a tab change (#32).
- A drag that never drops gives the strip back (#33).

Core 0.15.2, app 0.18.2. New reviewKeys e2e, unit tests for sessions,
dictation and termCells; each fails on the code before the fix.


Claude-Session: https://claude.ai/code/session_01LJbePcRzre7AusNzPNS2Bk

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Automate the core release, and the pin bump in Prism

1 participant