fix(tui): prevent sidebar scrollbar flash - #40056
Merged
Merged
Conversation
kitlangton
enabled auto-merge (squash)
August 1, 2026 15:08
github-actions Bot
pushed a commit
to ReStranger/opencode
that referenced
this pull request
Aug 3, 2026
* upstream/v2: test(core): stabilize shell integration timing (anomalyco#40084) fix(core): route Bedrock packages natively (anomalyco#40165) feat(ai): add native Bedrock Mantle support (anomalyco#40119) fix(tui): reserve home and end for navigation (anomalyco#40123) refactor(ai): align multimodal naming (anomalyco#40073) refactor(tui): remove redundant code (anomalyco#40081) fix(tui): discover plugins across config roots (anomalyco#39988) fix(tui): make vertical tabs responsive (anomalyco#40080) feat(tui): add vertical session tabs (anomalyco#40072) fix: preserve provider error status (anomalyco#39976) fix(tui): prevent sidebar scrollbar flash (anomalyco#40056) feat(tui): prioritize favorite model search results (anomalyco#40049)
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
Prevent the V2 TUI sidebar scrollbar from flashing for one frame when switching session tabs. Empty sessions also stop showing the internal
Not measuredcontext placeholder and$0.00 spent.Before / After
Before
Switching tabs remounted the keyed session view. OpenTUI created the sidebar scrollbar as visible, rendered that state, then hid it after calculating the viewport and content sizes.
A new session also showed a context section with
Not measuredand$0.00 spentdespite having no usage.After
The sidebar scrollbar starts hidden and returns visibility control to OpenTUI after mount. It appears only when measured content actually overflows.
The context section remains absent until usage or cost data is meaningful.
How
packages/tui/src/routes/session/sidebar.tsxinitializes the vertical scrollbar as hidden, then resets manual visibility control after creation so OpenTUI resumes normal overflow-driven behavior.packages/tui/src/feature-plugins/sidebar/context.tsxrenders context usage and cost only when either value is available.packages/tui/test/feature-plugins/sidebar-context.test.tsxcovers empty and populated context rendering.Scope
This only changes the V2 TUI session sidebar. It does not change the main transcript scrollbar or web/desktop sidebars.
Testing
bun run test test/feature-plugins test/util/session.test.ts(26 passed)bun typecheckfrompackages/tuigit diff --checkDemo
The scrollbar defect exists only in the pre-measurement frame, so a settled terminal screenshot cannot capture it honestly. The before/after lifecycle above describes the visible transition; rendered-output tests cover the context-state change.