Skip to content

[FEATURE]: Live session status panel in sidebar + background session completion notifications #28175

@ptandler

Description

@ptandler

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

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type
No fields configured for issues without a type.

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions