Skip to content

[FEATURE]: Plugin notices: opt out of the "Updates" group and potentially support expandable details #56623

Open

Description

@crg-n

Feature hasn't been suggested before.

  • I have verified this feature I'm about to request hasn't been suggested before.

Describe the enhancement you want to request

Problem

When plugin slash commands confirm actions with a synthetic notice, e.g. /budget 100:

await ctx.session.synthetic({ sessionID, description: "Budget: updated to £100.", text: "…", resume: false })

In the desktop/web app, the default Compact timeline preset (and Detailed) folds these into a collapsed item labelled "Updates", so the confirmation of the command is effectively hidden. It is unclear to the user what action the plugin has taken even if the plugin developer has put an intentional result/output. Additionally when ungrouped, a notice is a single truncated line with no room for details. The TUI shows the same notice as its own line. This can be resolved by turning off "Group for Notices" globally but this makes prompts with multiple tool calls, agents etc. extremely verbose.

Proposal

  1. Allow notices to opt out of grouping. For example, metadata.separate: true keeps a notice out of context groups, the same way compaction and model/location switches already are (groupMessages in session-ui/src/timeline/projection.ts). Presumably this is because these compaction and switches are considered key context that shouldn't be collapsed/hidden from the user, and I propose this functionality should also be available to enable a variety of plugin functionalities. It should still respect the user's "Notices: hidden" setting, and by default notices should be grouped.
  2. Consider Expandable details. For example, metadata.details (markdown) renders the notice as a collapsible row: the description is the title, the details sit inside, collapsed by default. Ideally the TUI does the same.

Both are new features that plugin authors could implement, so existing notices and timeline settings are unchanged.

OpenCode version: 2.0.31 (desktop/web)

Activity

  1. opencode-agent commented on Oct 18, 2026

    @opencode-agent
    Contributor

    Thanks for the detailed write-up, @crg-n!

    To restate it: you'd like plugins to be able to mark a synthetic notice so it stays out of the collapsed "Updates" group. That would work like compaction and model/location switches do today, and it would still respect the "Notices: hidden" setting. Optionally, a notice could also carry markdown details that show in a collapsible row, in both the app and the TUI.

    For context: grouping happens in the timeline UI (groupMessages in packages/session-ui/src/timeline/projection.ts), and plugins currently can't pass any display hints with session.synthetic. So this would need a change to the plugin API and the UI, and a plugin can't do it on its own. Maintainers will consider it.

    Related issues:

  2. crg-n commented on Oct 18, 2026

    @crg-n
    Author

    Alternately to the expandable details we could expose Title + detail. e.g. metadata.title renders as the bold label, with description as the plain detail after it. This is the same split shell/subagent completions already use. Basically exposing this internal UI distinction to plugin notices.

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

Metadata

Metadata

Assignees

No one assigned

    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