Add chat branching from a live session #46

Open
opened 2026-08-23 09:32:46 +00:00 by kayg · 0 comments
Owner

Ask

Add chat branching from the current chat using the existing session.branch RPC. A branched child must appear as a normal flat chat with a lineage indicator rather than nested under its parent.

Files and APIs

  • Sources/HermternalCore/Net/GatewayClient.swift: the existing session.branch RPC, which takes the live session id and optional count and name.
  • Sources/Hermternal/AppModel.swift: branch action routing, child session state, and selection.
  • Sources/Hermternal/Views/SidebarView.swift: normal child row presentation and lineage indicator.
  • Sources/HermternalCore/Models/ChatModels.swift: branch parent/lineage metadata.

Acceptance

  • Branching invokes session.branch with the live session id and forwards optional count and name when supplied.
  • The returned child appears in the sidebar as a normal chat row, not as a nested row or hierarchical list child.
  • The child displays a clear lineage indicator linking it to its parent without changing the flat sidebar rule.
  • Selecting the branched child opens its transcript and keeps durable selection correct.
  • Branch failures leave the current chat and sidebar selection unchanged and report an actionable error.
## Ask Add chat branching from the current chat using the existing `session.branch` RPC. A branched child must appear as a normal flat chat with a lineage indicator rather than nested under its parent. ## Files and APIs - `Sources/HermternalCore/Net/GatewayClient.swift`: the existing `session.branch` RPC, which takes the live session id and optional `count` and `name`. - `Sources/Hermternal/AppModel.swift`: branch action routing, child session state, and selection. - `Sources/Hermternal/Views/SidebarView.swift`: normal child row presentation and lineage indicator. - `Sources/HermternalCore/Models/ChatModels.swift`: branch parent/lineage metadata. ## Acceptance - Branching invokes `session.branch` with the live session id and forwards optional `count` and `name` when supplied. - The returned child appears in the sidebar as a normal chat row, not as a nested row or hierarchical list child. - The child displays a clear lineage indicator linking it to its parent without changing the flat sidebar rule. - Selecting the branched child opens its transcript and keeps durable selection correct. - Branch failures leave the current chat and sidebar selection unchanged and report an actionable error.
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#46
No description provided.