Skip to content

feat(ui): collapse & density QoL cluster — session-list density, thinking collapse behavior, chevron fixes, web side-panel toggle - #86771

Merged
teknium1 merged 11 commits into
mainfrom
salvage/w2-collapse-density
Aug 15, 2026
Merged

feat(ui): collapse & density QoL cluster — session-list density, thinking collapse behavior, chevron fixes, web side-panel toggle#86771
teknium1 merged 11 commits into
mainfrom
salvage/w2-collapse-density

Conversation

@teknium1

Copy link
Copy Markdown
Contributor

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

Excluded

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.thinking config — collapsed just now honors itself mid-turn instead of staying open.

Validation

Check Result
apps/desktop vitest (density store, row details, session-row, streaming, i18n runtime, tree-group, floating-panes) ✅ 52/52
ui-tui vitest (messages, virtualHeights, thinkingLiveCollapse) ✅ 28/28
web vitest (ChatPage) ✅ 5/5
tsc --noEmit — apps/desktop, ui-tui, web ✅ clean
scripts/audit_pr_attribution.py --fix ✅ all emails mapped

Credits

Closes #68119

Infographic

Collapse & Density infographic

LeonSGP43 and others added 10 commits August 14, 2026 23:04
…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)
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)
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.
@alt-glitch alt-glitch added type/feature New feature or request P3 Low — cosmetic, nice to have comp/desktop Electron desktop app (apps/desktop/*) comp/tui Terminal UI (ui-tui/ + tui_gateway/) comp/dashboard Web dashboard / control panel UI (dashboard/, landing) labels Aug 15, 2026
@github-actions

github-actions Bot commented Aug 15, 2026

Copy link
Copy Markdown
Contributor

૮ >ﻌ< ა ci review

ran on 48f9215 — test: stub virtualizer.measure in virtual-session-list mock

⚠️ Warnings

OSV vulnerability scan · View job

5 known vulnerabilities found in pinned dependencies.

How to fix:

Review the findings in the Security tab. Update the affected dependencies if a patched version is available.


debug info

CI timings

CI timings · View report · View job

Wall time 3m36s vs 3m56s (-8.5%). 17 job(s) slower, 19 faster, 1 unchanged.

  • JS & TS checks / apps/desktop / check:test:ui:shard-2of3: -33.0s
  • JS & TS checks / apps/desktop / check:test:ui:shard-3of3: -32.0s
  • Python tests / Run tests slice 5/12: +19.0s
  • Python tests / Run tests slice 4/12: -19.0s
  • Python tests / Run tests slice 7/12: +14.0s

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

comp/dashboard Web dashboard / control panel UI (dashboard/, landing) comp/desktop Electron desktop app (apps/desktop/*) comp/tui Terminal UI (ui-tui/ + tui_gateway/) P3 Low — cosmetic, nice to have type/feature New feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Feature]: Add session list density modes to Hermes Desktop

8 participants