Skip to content

[FEATURE]: Support per-message collapsible reasoning blocks in the desktop app (parity with v2 TUI) #54289

Closed as not planned

Description

@shibaby
  • Feature hasn't been suggested before.

Related: #31825, #15257, #28280 (all closed). #31825 was closed as completed because the v2 TUI gained per-message expandable reasoning (#36901, expanded state kept since #48489). The desktop app still lacks this — requesting parity.

Describe the enhancement you want to request

In the v2 TUI, reasoning is shown per message as a "Thought · N steps" row that can be expanded/collapsed individually. The desktop app's session view only offers a global, all-or-nothing toggle (Settings → General → "Show reasoning summaries", off by default):

  • When off, reasoning content is hidden entirely (only a "Thinking…" status line is shown while the agent works).
  • When on, every reasoning part is rendered inline as muted markdown and stays fully expanded — there is no way to fold individual blocks without hiding all reasoning globally.

With reasoning models this quickly floods the timeline with long thinking blocks.

Proposed implementation

  • ReasoningPartDisplay in packages/session-ui/src/components/message-part.tsx currently renders <PacedMarkdown text={...}> directly inside <div data-component="reasoning-part"> with no collapsible wrapper.
  • Tool parts in the same file already use the Collapsible/Accordion components from @opencode-ai/ui, so a reasoning part could be wrapped the same way (default collapsed, first heading/line as the title — a reasoningHeading() helper already exists in packages/app/src/pages/session/timeline/rows.ts, used for the "Thinking…" status line).
  • Keep the existing "Show reasoning summaries" setting as the master visibility switch; per-block collapse would only apply when reasoning is shown.

Additional context

The shared conversation page (opencode.ai/s/...) already has a show/hide details toggle for reasoning blocks (packages/web/src/components/share/part.tsx), so the interaction already exists elsewhere in the product — it would be great to bring it to the desktop/web session view.

Activity

  1. opencode-agent commented on Oct 10, 2026

    @opencode-agent
    Contributor

    Thanks for the detailed write-up, @shibaby!

    The code this describes (ReasoningPartDisplay in message-part.tsx, pages/session/timeline/rows.ts and the single "Show reasoning summaries" toggle) is from the v1 desktop app (1.x). v1 now only gets fixes for critical bugs, so this is unlikely to change there.

    The good news is that the v2 desktop/web app already does what you're asking for. Each reasoning block is its own collapsible row:

    • It is collapsed by default.
    • While it streams, it shows "Thinking" with a live heading.
    • When it finishes, it shows "Thought" with how long it took.
    • You can expand or collapse each block separately.

    Showing or hiding reasoning is now a timeline detail setting ("thinking") rather than one on/off switch. Please try upgrading to v2 (@opencode/cli).

    Related issues:

    If you're already on v2 and still see reasoning fully expanded with no way to fold individual blocks, please reply with your opencode --version and a screenshot and we'll take another look.

  2. opencode-agent commented on Oct 11, 2026

    @opencode-agent
    Contributor

    We haven't heard back, so I'm closing this as not planned.

    The behaviour and code this issue describes are from the v1 desktop app, which now only gets fixes for critical bugs. The v2 desktop/web app already shows each reasoning block as its own collapsible "Thinking" / "Thought" row. These rows start collapsed and you can open or close each one separately. The "thinking" timeline detail setting controls whether reasoning is shown at all.

    If you upgrade to v2 (@opencode/cli) and still see reasoning fully expanded with no way to fold individual blocks, please open a new issue with your opencode --version and a screenshot. Thanks again for the detailed write-up!

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

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions