Problem
OpenCode supports running multiple sessions simultaneously, but there is no way to
monitor them at a glance. The only option is the /sessions command (ctrl+x l),
which opens a modal list — it does not show live status and requires leaving the
current session to check.
When a background session finishes or errors, there is no notification. The user
only finds out by manually switching to that session.
Proposed Solution
1. Persistent session status panel in the TUI sidebar
Show a compact, always-visible list of sessions in the sidebar — filtered to those
that are currently relevant:
- Active sessions (
busy or retry status per the existing SessionStatus model)
- Recently finished sessions (transitioned from
busy/retry back to idle
within the current TUI session)
Sessions that were never active in this TUI session should not clutter the panel.
For each entry, show:
- Session name / title
- Current status:
busy / retry (with attempt count) / finished
- Model and agent in use, if space permits
- Last activity timestamp
Unvisited finished sessions must be visually highlighted — e.g. a distinct
color, badge, or marker — until the user switches to that session at least once.
This is the primary signal that work is ready for review. The highlight clears
as soon as the session is opened.
The panel should update live via the existing session.status SSE bus events —
no polling needed, the infrastructure is already there.
2. Completion / error notifications
When a background session transitions to idle (finished) or enters a retry
state (error with backoff), show an in-TUI notification — e.g. a toast or status
bar flash — so the user gets an immediate signal without having to watch the
sidebar.
The existing /tui/show-toast API already supports this; it would just need to
be wired to session.status events for non-foreground sessions.
Optional: a config flag to enable/disable notifications globally or per-session.
Why This Matters
Power users running parallel sessions (e.g. one session per feature, or a
background research session + a foreground build session) currently have no
visibility into what other sessions are doing. The most critical gap is not
knowing when a background session has finished — and whether it succeeded or
hit an error — without manually switching to it.
The server-side data (GET /session/status, session.status SSE events) already
exists. This is primarily a TUI rendering feature request.
Related
Problem
OpenCode supports running multiple sessions simultaneously, but there is no way to
monitor them at a glance. The only option is the
/sessionscommand (ctrl+x l),which opens a modal list — it does not show live status and requires leaving the
current session to check.
When a background session finishes or errors, there is no notification. The user
only finds out by manually switching to that session.
Proposed Solution
1. Persistent session status panel in the TUI sidebar
Show a compact, always-visible list of sessions in the sidebar — filtered to those
that are currently relevant:
busyorretrystatus per the existingSessionStatusmodel)busy/retryback toidlewithin the current TUI session)
Sessions that were never active in this TUI session should not clutter the panel.
For each entry, show:
busy/retry(with attempt count) / finishedUnvisited finished sessions must be visually highlighted — e.g. a distinct
color, badge, or marker — until the user switches to that session at least once.
This is the primary signal that work is ready for review. The highlight clears
as soon as the session is opened.
The panel should update live via the existing
session.statusSSE bus events —no polling needed, the infrastructure is already there.
2. Completion / error notifications
When a background session transitions to
idle(finished) or enters aretrystate (error with backoff), show an in-TUI notification — e.g. a toast or status
bar flash — so the user gets an immediate signal without having to watch the
sidebar.
The existing
/tui/show-toastAPI already supports this; it would just need tobe wired to
session.statusevents for non-foreground sessions.Optional: a config flag to enable/disable notifications globally or per-session.
Why This Matters
Power users running parallel sessions (e.g. one session per feature, or a
background research session + a foreground build session) currently have no
visibility into what other sessions are doing. The most critical gap is not
knowing when a background session has finished — and whether it succeeded or
hit an error — without manually switching to it.
The server-side data (
GET /session/status,session.statusSSE events) alreadyexists. This is primarily a TUI rendering feature request.
Related
GET /session/statusAPI — already returns{ [sessionID]: { type: "idle" | "busy" | "retry" } }session.statusSSE bus event — already fired on every status transition