Skip to content

desktop: persistent session activity indicator (working / waiting / needs input) #51336

Closed as not planned

Description

@ranjithtm

Summary

In the OpenCode desktop app there is no persistent, glanceable indication of an agent's state between turns. While a turn streams, tool activity is visible; once the turn yields — including when the agent is waiting on a long external job such as CI — the transcript is static and looks identical to "stopped". Users cannot tell working, waiting on a background job, needs my input, or done without reading the last message. A small persistent status indicator at the bottom of the chat/composer would remove that ambiguity.

Environment

  • opencode version: 2.0.16 (desktop app; bundled CLI 2.0.16, opencode-cli serve)
  • OS: macOS 27.0.0, arm64 (Darwin 27.0.0)
  • Terminal: Not applicable — desktop app (Electron, ai.opencode.desktop)
  • Shell: /bin/zsh
  • Install/channel: release (desktop app)
  • Active plugins: none configured server-side; one CLI-only local plugin (~/.config/opencode/plugins/activity) implementing a prompt.footer.status chip in the TUI, which has no effect in the desktop app

Reproduction

  1. Open a session in the desktop app.
  2. Ask the agent to perform work that pauses on an external job (for example a CI wait run as a foreground streaming command), or let a turn end with background work still pending.
  3. Observe the chat window: after the turn's message is written, nothing persists that distinguishes waiting, working, or done.

Expected Behavior

A persistent, small status indicator at the bottom of the chat/composer, updating automatically, for example:

  • working — session is streaming or tools are running (animated)
  • waiting on background task — e.g. 1 background task • CI run 1234…
  • needs input — pending permission/question or the agent awaiting the user
  • idle/done — nothing running

It should be driven by real session state (streaming, pending permissions/forms, background shells) and ideally be settable by the agent (a session status field) so agent-side external waits are visible.

Actual Behavior

No such indicator exists. Between turns the UI is static; background shell tasks started by the agent may not be visible, and the session is indistinguishable from one where the agent has stopped. The documented plugin slots that could host such a chip (prompt.footer.status) apply only to the TUI; the desktop app exposes no plugin surface for adding UI, so a local plugin cannot solve it.

Additional Context

  • Documentation checked: /v2/docs/cli/config, /v2/docs/build/plugins/cli (TUI slots), /v2/docs/cli/web. No desktop UI extension point is documented.
  • Workarounds in use (both limited): the agent updates the session title with a status prefix — intrusive, overwrites user renames; and keeps a foreground streaming command running during external waits — blocks other work.
  • The TUI already supports prompt.footer.status; the equivalent slot in the desktop chat footer would be the ideal fix.
  • Requested by a user running long multi-agent CI-heavy workflows where multi-minute between-turn waits are common.

Activity

  1. github-actions commented on Sep 25, 2026

    @github-actions
    Contributor

    This issue doesn't fully meet our contributing guidelines.

    What needs to be fixed:

    • As a feature request, the title must start with [FEATURE]:.
    • Add the required verification checkbox to the feature request. The description itself is present.

    Please edit this issue to address the above within 2 hours, or it will be automatically closed.


    This issue might be a duplicate of existing issues. Please check:

    If you believe this was flagged incorrectly, please let a maintainer know.

  2. github-actions commented on Sep 25, 2026

    @github-actions
    Contributor

    This issue has been automatically closed because it was not updated to meet our contributing guidelines within the 2-hour window.

    Feel free to open a new issue that follows our issue templates.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions