Repository navigation
fix(tui): scope unread updates to focused terminal - #42471
Merged
Merged
Conversation
jinhuang712
pushed a commit
to jinhuang712/opencode
that referenced
this pull request
Sep 26, 2026
1 task
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
Make the foreground TUI the sole owner of shared session-tab unread mutations. A blurred backup TUI can no longer mark a session unread or clear an unread marker merely because it has a different tab selected.
Before / After
Before
After
How
packages/tui/src/context/session-tabs.tsxtracks OpenTUI focus and blur transitions and gates both completion marking and selected-tab clearing on foreground ownership.packages/tui/test/context/session-tabs.test.tsxruns two TUI providers against the same persisted state with divergent focus and selected sessions.Scope
Testing
bun run test test/context/session-tabs.test.tsxfrompackages/tui: 9 passed.bun run testfrompackages/tui: 697 passed, 5 skipped.bun typecheckfrompackages/tui: passed.bunx prettier --check src/context/session-tabs.tsx test/context/session-tabs.test.tsx: passed.Demo
No recording included: the regression is an incorrect shared marker produced by a blurred second TUI. The concurrent two-TUI test reproduces the process topology and verifies the persisted result directly.
Flow
sequenceDiagram participant Server participant A as TUI A (focused) participant B as TUI B (blurred) participant State as Shared tab state Server->>A: execution completed Server->>B: execution completed B-->>State: no mutation alt completed session is selected in A A-->>State: no unread marker else completed session is backgrounded in A A->>State: mark unread end A->>State: clear when selected while focused