Repository navigation
Description
Part of #114. Supersedes the right-sidebar Assignment-list interaction in #75; Assignment Runtime and Directory in #81 remain authoritative for BotHarness coordination facts.
Observable behavior
In a PersonaBot DM, the right sidebar is Sessions / 会话. It shows this Bot's independent root Orchestrator Session and Assignment Sessions, never DSH Subagents. A row opens that exact Session in the native DSH workspace UI. The list is a read model; no model-facing tool call is required to register an item.
Tracer 1 — real Session navigation
- Default flat list shows the current Orchestrator even when idle, then working / stopping / attention-needed Assignments before other active Sessions. An All view exposes older and stopped Sessions; make role and status visually distinct.
- Membership and role come from BotHarness Session Ownership; title, workspace and live running state come from DSH Session facts. BotHarness Directory contributes only Assignment-specific stop, report, Grant and continuity facts. Do not infer ownership from cwd.
- Clicking a row calls the supported DSH
UiWorkspace.openSessionseam, preserving its workspace. No duplicate read-only Assignment detail screen or second Session history store. - Handle missing/cold Session records and restart safely. A stale persisted
activity = workingmust not consume an Assignment concurrency slot forever. - Remove the replaced “事项” presentation and unused Client bridge/store code, while keeping the Directory used by Grant enforcement, concurrency admission, Continuity Key, report, stop and audit.
- Real DSH + LLM path: create an Assignment through Orchestrator, open both Orchestrator and Assignment from the right sidebar, stop the Assignment, reload, and inspect the native Session. Capture screenshots and stop for Human QA.
Tracer 2 — view and workspace grouping
- Per PersonaBot browser-local preference for Current/All and Flat/By workspace; default Current + Flat. Store collapse state in the same per-Bot preference boundary.
- By workspace adds collapsible workspace rows without changing the underlying Session identity, sort or native navigation. Use DSH-native UI tokens and primitives; cover light/dark and zh/en.
- Real runtime UI path, focused automated coverage, screenshots, then Human QA before further breadth.
Authority boundary
DSH Agent status is live idle | running; DSH SessionEvent is durable execution history. BotHarness persists application-owned Assignment metadata and an atomic admission reservation because DSH has no global Assignment slot. Reconcile any reservation left by a terminated Host process before enforcing capacity; do not use that reservation as the UI's running truth. A DSH turn error is not a terminal Assignment state; BotHarness stop and report facts remain separate.
Related
- Parent Wayfinder: Memory Repository / Workspace Grant / Assignment cwd #114; runtime Foundation:Assignment Runtime / Assignment Directory / Orchestrator tools #81; original navigation design 设计:PersonaBot navigation / Assignments / recovery 的 DSH-native UI #75 (later breadth).
- v1.0 milestone, V1 · Memory project.
Activity
DoodleBears commentedon Sep 26, 2026
Agent work claim
codex/local/01a0cde3-1621-7382-96a1-852758cedfc0(not a DSH Session)codex/312-personabot-sessionsfix: keep Sessions stable and release stale Assignment keys (#312)
feat: show owned DSH Sessions in Bot sidebar (#312)
fix: keep Sessions stable and release stale Assignment keys (#312)
fix: align Sessions bridge with Human Inbox changes (#312)
feat: show PersonaBot Sessions in Channel sidebar (#312 tracer 1) (#323)
DoodleBears commentedon Sep 26, 2026
Tracer 1 merged in #323 (026be59). Human QA passed: Current shows the Orchestrator, All includes the stopped Assignment with name/workspace, clicking it opens the native DSH Session, and the list survives reload. Full regression: 1,029 tests; typecheck and build pass.
#312 remains open for Tracer 2 (per-Bot view and workspace grouping). Follow-up UX from Human QA: when a Bot-owned Orchestrator or Assignment Session is opened in native DSH, provide a session-scoped action to return to that PersonaBot DM. Resolve ownership from SessionOwnership, never cwd; do not show this action for unrelated DSH Sessions. Deliver and QA it as a separate vertical slice after the current grouping slice.
DoodleBears commentedon Sep 26, 2026
Agent work continuation
codex/local/01a0cde3-1621-7382-96a1-852758cedfc0codex/312-session-viewsfeat(client): remember PersonaBot Session views by workspace
DoodleBears commentedon Sep 26, 2026
Tracer 2 delivered in PR #332. Human QA passed: All/By workspace shows the owned Orchestrator and stopped Assignment in separate groups; collapse and selection survive reload; another PersonaBot retains default Current/Flat. Real DSH + LLM E2E passed, with light/dark screenshots saved in the PR. Continuing the separately tracked native Session → owning Bot DM return action as the next tracer. Agent-Task: codex/local/01a0cde3-1621-7382-96a1-852758cedfc0.
DoodleBears commentedon Sep 26, 2026
Agent work continuation
codex/local/01a0cde3-1621-7382-96a1-852758cedfc0codex/312-session-returnfix: respect reduced motion for Session workspace chevron
feat: return to PersonaBot DM from native Session menu
feat: move Session views into heading menu (#312)
feat(client): show PersonaBot avatars in owned native Session rows (#312
fix(client): ignore stale Session return outcomes (#312)
feat: return from owned DSH sessions to PersonaBot DM (#334)
feat: remember PersonaBot Session views by workspace (#312) (#332)
DoodleBears commentedon Sep 26, 2026
Delivered in #323 and #332. The Channel sidebar now opens the real Orchestrator and Assignment Sessions; per-Bot Current/All, Flat/By workspace, and collapse preferences persist in browser storage. Real DSH navigation, stop/reload, and Human QA passed.
DoodleBears commentedon Sep 26, 2026
Agent work outcome
codex/local/01a0cde3-1621-7382-96a1-852758cedfc0