Group chat sidebar sessions into sections #37

Open
opened 2026-08-22 18:26:28 +00:00 by kayg · 0 comments
Owner

Ask

Group the chat sidebar's session list into visually distinct sections. Sections must remain part of the existing sidebar list rather than becoming a second navigation surface.

Files and APIs

  • Sources/Hermternal/Views/SidebarView.swift: the sidebar List, Section containers, and SessionRow placement.
  • Sources/Hermternal/Views/RootView.swift: ChatWindow sidebar composition if grouped data or section state is passed into the view.
  • The existing AppModel.sessions and selectedSessionID state used by the sidebar.

Acceptance

  • The real macOS chat sidebar shows the session groups with visible section headers and a stable, intentional order.
  • Every displayed session appears in exactly one section per row identity; a pinned chat also appears in its folder, so the row identity is the section/session pair while selection remains the durable session id.
  • Selecting or clicking a row in any section opens the correct session and keeps selectedSessionID in sync.
  • The account row and SidebarBottomEdge remain outside the scrolling session sections at the bottom of the sidebar.
## Ask Group the chat sidebar's session list into visually distinct sections. Sections must remain part of the existing sidebar list rather than becoming a second navigation surface. ## Files and APIs - `Sources/Hermternal/Views/SidebarView.swift`: the sidebar `List`, `Section` containers, and `SessionRow` placement. - `Sources/Hermternal/Views/RootView.swift`: `ChatWindow` sidebar composition if grouped data or section state is passed into the view. - The existing `AppModel.sessions` and `selectedSessionID` state used by the sidebar. ## Acceptance - The real macOS chat sidebar shows the session groups with visible section headers and a stable, intentional order. - Every displayed session appears in exactly one section per row identity; a pinned chat also appears in its folder, so the row identity is the section/session pair while selection remains the durable session id. - Selecting or clicking a row in any section opens the correct session and keeps `selectedSessionID` in sync. - The account row and `SidebarBottomEdge` remain outside the scrolling session sections at the bottom of the sidebar.
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
kayg/hermternal-apple#37
No description provided.