anomalyco / anomalyco/opencode

tui: session.panel hides the sidebar and shrinks the composer

Open
#48,519 0 comments 0 reactions 1 assignee View on GitHub

@kommander is already working on this.

Since Sep 11, 2026.

2.0
Dominant language
TypeScript
Stars
209k
Forks
27.5k
PR merge metrics
PR metrics pending

Description

  • I have searched for existing issues before filing this

Summary

TUI session panels (session.panel slot) split the whole main area: while a panel is open, the session sidebar is hidden and the composer loses width. There is no documented way for a plugin to dock a panel to the output/transcript area only, or to keep the sidebar and composer at their normal sizes.

This blocks companion views such as conversation readers or log viewers that should sit next to the transcript without taking over the layout.

Environment

  • opencode version: opencode2 v0.0.0-beta-19425
  • OS: Linux 7.0.0-30-generic x86_64
  • Terminal: kitty (TERM=xterm-kitty), COLORTERM=truecolor; reproduced in PTY sizes 275x67 and 120x36
  • Shell: /bin/bash
  • Install/channel: npm beta (@opencode/cli 0.0.0-beta-19425)
  • Active plugins: @brycehamrick/opencode-v2-hindsight@0.1.3, @hikae/opencode-auto-continue@2.0.0, oh-my-opencode-slim@2.2.18, opencode-auto-review, opencode-dcp@2.0.0-beta.8, opencode-websearch-addons@1.0.5, plus a local conversation-view CLI plugin used as the reproducer (installed via cli.json file: spec)

Reproduction

  1. Load a CLI plugin that contributes to session.panel, e.g.:
    context.ui.slot({
      append: "session.panel",
      render: (panel) => <Show when={panel.name === "x"}>...</Show>,
    })
    
  2. In a session, open it with context.ui.panel.open("x") (command palette or slash command).
  3. Compare the layout before/after at 275x67 and 120x36.

Expected Behavior

A plugin panel should be placeable so that:

  • the session sidebar stays visible at its normal size, and
  • the composer/input keeps its normal width,

e.g. by docking the panel to the output/transcript pane, or via an explicit placement option. Width control would be a bonus, not a requirement.

Actual Behavior

Opening the panel splits the entire main area, and the sidebar disappears for as long as the panel is open:

  • 275x67: composer shrinks from 229 to 134 columns.
  • 120x36: composer shrinks from 116 to 56 columns.
  • session.sidebar.toggle (leader+b) while the panel is open closes the panel instead of showing the sidebar beside it.
  • Below 80 columns the host forces fullscreen; PanelInput.width is read-only and presentation only supports "panel" | "fullscreen".
  • session.sidebar: "auto" does not restore the sidebar while a panel is open.

Additional Context

  • Docs: https://opencode.ai/v2/docs/build/plugins/cli/#session-panels — "The host owns sizing, focus, and full-screen presentation".
  • Impact: plugin companion views cannot coexist with the sidebar, and the narrower composer hurts typing. The only workaround today is an external terminal/tmux split, which loses integration.
  • Reproducible 100% on beta-19425 (measured frames from isolated PTY runs).
  • Related: #5971 (plugin sidebar panels), #46156 (reserved plugin UI space), #35513 (sidebar width option), #46268 (per-message footer slot).
  • Suggestion: add an output-scoped docking option (e.g. a placement value) or sidebar coexistence for session.panel.

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.