Repository navigation
fix(cli): hand update completion directly to the TUI - #36455
Merged
Merged
Conversation
3 of 6 tasks
This was referenced Jul 19, 2026
jinhuang712
pushed a commit
to jinhuang712/opencode
that referenced
this pull request
Sep 26, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What
The update preflight now completes inside its live footer instead of writing a receipt into terminal scrollback.
On success, the status line uses the same left-to-right dissolve as update stages, while the longer header dims out, swaps at its dark midpoint, and brightens into the shorter completion phrase:
becomes:
The monogram brightens to the OpenCode accent, the rail settles to a static full-accent state, the result holds briefly, and then the real TUI takes over. No completion line remains in scrollback.
How
OpenCodewordmark, accent version, green check, and whiteReadystate.@opencode-ai/tui/logoinstead of copying glyph data.livecontract at 60fps, then stops liveness during the settled hold. Each animated line is one Yoga<text>renderable with styled spans rather than one layout renderable per character.Scope
This changes only the fresh-launch version-mismatch preflight introduced in #36448. Existing TUIs reconnecting to a replaced service remain separate work under #36285.
Testing
bun typecheckinpackages/clibun run testinpackages/cli(24 pass)0.0.1-old0.0.2-new0.0.2-newupstream/main/ v0.4.3 source and testsDemo
Real end-to-end service replacement and TUI handoff, captured at 60fps:
final3.mp4
Flow
sequenceDiagram participant CLI as New OpenCode CLI participant Footer as Update preflight participant Service as Background service participant TUI as OpenCode TUI CLI->>Footer: begin(old version → new version) CLI->>Service: replace mismatched service Footer->>Footer: stage wipes + spring progress Service-->>CLI: healthy new endpoint CLI->>Footer: finish() Footer->>Footer: dissolve header + ✓ Ready Footer->>Footer: brighten monogram + settle full rail Footer->>Footer: pause → idle → destroy CLI->>TUI: attach to new service