feat(ui): collapse & density QoL cluster — session-list density, thinking collapse behavior, chevron fixes, web side-panel toggle - #86771
Merged
Conversation
(cherry picked from commit 3549993)
…se ends Under display.sections.thinking: collapsed, the TUI now keeps the LIVE reasoning panel open while reasoning streams and collapses it the moment the reasoning phase ends (first tool call, final answer, or new turn). Previously 'collapsed' meant the panel was always collapsed — including the currently-streaming reasoning — and there was no way to get 'expanded while live, collapsed when done'. This makes 'collapsed' an auto preference: - turnController tags the open reasoning segment isLiveReasoning and seals the tag in endReasoningPhase/closeReasoningSegment - streamingAssistant passes reasoningActive only to the live segment, so sealed reasoning segments from earlier phases stay collapsed - ToolTrail auto-opens while reasoningActive under collapsed mode; expanded/hidden/MoA-reference semantics are unchanged Adds thinkingLiveCollapse.test.tsx covering open-on-stream, close-on- finish (including mid-turn rerender), and the expanded-mode no-op. (cherry picked from commit 6ef4ef7)
(cherry picked from commit 14fd1aa)
Collapsed tool zones (terminal/logs) kept a down chevron after minimize, so the restore affordance looked like another collapse. Point the icon in the action direction — down when expanded, up when collapsed — matching master-detail collapsible detail headers. Same fix for floating panes. (cherry picked from commit 3392aeb)
(cherry picked from commit 9535842)
The right-hand chat panel (model picker + session list) is a fixed 240px column on desktop with no way to hide it. Add a collapse button (X) in the panel header and a floating 'panel' button over the terminal to reopen it, mirroring the collapsible app sidebar. The choice is persisted in localStorage (hermes-chat-panel-collapsed) so it survives reloads. (cherry picked from commit 854f132)
Squashed from #68124, resolved against current main (inbox cards, marquee titles, actions cluster). Adds a Settings → Appearance 'Session list density' preference — compact (default, unchanged), comfortable (+deterministic metadata line), detailed (+initial-request preview) — with density-aware virtualizer estimates. Closes #68119 (cherry picked from commits 93bc194..568f78a)
Keeps the sidebar byte-identical for existing users until they opt into comfortable/detailed themselves — per the no-default-change salvage rule.
Contributor
૮ >ﻌ< ა ci reviewran on 48f9215 — test: stub virtualizer.measure in virtual-session-list mock
|
…invalidation call)
This was referenced Aug 15, 2026
This was referenced Aug 21, 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.
Salvages the collapse/density QoL cluster — session-list density modes, config-respecting thinking/reasoning collapse behavior in Desktop and TUI, zone-chevron direction, and a web side-panel collapse toggle — into one green branch with contributor authorship preserved.
Changes
Settings → Appearance → Session list densitypreference withcompact(today's row, still the default),comfortable(+ one deterministic metadata line: branch · model · message count · tool calls), anddetailed(+ one-line initial-request preview, omitted when the title already falls back to it). Density-aware virtualizer estimates + re-measure on mode change. Rebased onto current main's inbox-card / marquee-title / actions-cluster row: density applies to the inline (non-card) row and composes with the existing card mode. Desktop-local persisted state; i18n strings for en/ja/zh/zh-hant.reasoning.collapsedByDefaultappearance toggle (localStorage-backed nanostore). Defaultfalse— live-preview streaming behavior is unchanged for existing users; an explicit user toggle still wins.display.sections.thinking: collapsed, the panel opens while reasoning streams and collapses the moment the reasoning phase ends (endReasoningPhasenow seals the live segment) instead of staying open for the rest of the turn.expandedstays fully manual; MoA reference panels untouched.reasoningAlwaysVisiblemount rule and the post-feat(tui): per-section visibility for the details accordion #14968 initial-sync skip.chevron-upto restore). Widened to the two sibling sites main grew since: the zone context-menu action icon and the floating-pane header.Excluded
tool_executor.py/ himalaya-skill edits).pane-shell.tsx, deleted on main by the layout-tree renderer rewrite (63a9bde); the hover-reveal strip it patches no longer exists.w-[1.375rem]actions track it removes no longer exists on main; the trailing slot was redesigned (8de786c, "one right-aligned slot") and the row now reserves width for opt-in pinned metadata by design, so the Desktop: sidebar session-row actions gutter is always reserved — permanent empty strip at content edge #75331 premise needs a fresh look against current main rather than a mechanical port.Defaults are unchanged for existing users in every surface: session-list density defaults to compact (the pre-density row, byte-identical), the Desktop reasoning-collapse toggle defaults off (live preview streaming unchanged), and the TUI collapse behavior strictly respects the existing
display.sections.thinkingconfig —collapsedjust now honors itself mid-turn instead of staying open.Validation
apps/desktopvitest (density store, row details, session-row, streaming, i18n runtime, tree-group, floating-panes)ui-tuivitest (messages, virtualHeights, thinkingLiveCollapse)webvitest (ChatPage)tsc --noEmit— apps/desktop, ui-tui, webscripts/audit_pr_attribution.py --fixCredits
Closes #68119
Infographic