feat: desktop shell multi-container session registry (M-HCP-7)#130
feat: desktop shell multi-container session registry (M-HCP-7)#130roblambell merged 1 commit intomainfrom
Conversation
|
Orchestrator Status for M-HCP-7
|
|
Implementer CI failure was |
|
Implementer Blocker: the |
|
do you need to rebase? if the test is flaky you need to make it more robust as part of this PR |
|
Implementer CI failed on This PR's diff is entirely Re-running the failed job via |
Extend the Electron desktop shell to handle N concurrent agent sessions. Adds a left-rail session list (label, uptime, pending-decision badge), scopes the alerts and detail panes to the focused session, and lights up a badge (not a focus steal) when a background session surfaces a new prompt. Tray menu lists sessions with per-session pending counts plus a Resume-latest-pending-decision quick action, and the tray icon flips to a needs-attention variant whenever any session has a pending prompt. Removes the single-session assumption from App.tsx and the tray builder.
64cc37c to
2be277f
Compare
|
Implementer Rebased onto main. |
|
This change is part of the following stack: |
Summary
Implements M-HCP-7: Desktop shell multi-container session registry.
desktop/src/App.tsxwith aleft-rail session list (label, mode, uptime, pending-decision badge)
plus an explicit
activeSessionIdthat scopes the alerts and detailpanes. New prompts on background sessions raise a badge instead of
stealing focus; the operator picks up the other session by clicking
the rail, a tray session entry, or the "Resume latest pending
decision" tray item.
desktop/electron/tray.tsto aggregate pending countsacross sessions, flip the tray icon to a needs-attention variant when
total_pending > 0, list each session in the submenu with its ownpending count, and dispatch focus via
desktop:focus-session.firstSeenAtUnixMsper session (the controlservice proto has no
registered_atfield) andgetMostRecentPending()to power quick-resume.
electron/ipc.tsandelectron/tray.tsso the tray template can be unit-tested without Electron; added a
mocked-electron tray test suite.
docs/desktop-shell.md, includingthe badge-vs-auto-focus choice (we picked badge so a decision in
flight is never interrupted).
Acceptance Criteria
(rail scopes alerts + detail to the active session).
(
buildBlockedBatcheskeys onsessionId:host; alerts panelfilters to the active session).
recent pending decision (
buildTrayMenuTemplate+ tray test).docs/desktop-shell.md).Changelog
Added
badges, focus-routed decision alerts, tray quick-resume, and a docs
page at
docs/desktop-shell.md.Test Plan
swaps the alerts pane (partition 4).
badge without stealing focus; explicit click clears it.
bridge.onFocusSessionactivates the requestedsession and optional blocked id.
quick-resume dispatches
focusSession(sessionId, blockedId).npm run buildpasses (tsc for main process + vite for renderer).tray icon picks up the needs-attention dot and the submenu counts
update in real time.
Work Item Reference
ID: M-HCP-7
Lineage: 9f83c7ad-1f1f-462b-a3bb-77c2637adad3
Priority: Medium
Source: docs/designs/in-container-rewrite.md Phase 2