Repository navigation
Closed as not planned
Closed as not planned
Copy link
Description
Feature hasn't been suggested before.
- Verified. (Related but narrower requests: [FEATURE]: Sticky editable session title row at top of TUI (click to rename or /rename) #24579 sticky title row, [FEATURE]: Better utilization of screen real estate #5419 screen real estate, [FEATURE]: Show session title in bottom/footer focus area #15344 footer title. None cover the full status panel in a non-occluding top-bar layout.)
The problem
The sidebar panel contains all session-at-a-glance info:
OpenCode JSON TUI session header visibility
Context
77,003 tokens · 39% used · $0.00 spent
MCP blender ● · figma ✗ · gmail ● · google-calendar ● · notion ● · playwright ●
LSP LSPs will activate as files are read
~/Documents/GitHub/ottomator/projects_ottomator/octo:master
This panel only appears when the terminal is wide enough to trigger the sidebar column. On a narrow window (split pane, laptop screen, vertical terminal layout) it disappears entirely — leaving no session context visible at all. There is no config or keybind to reposition it.
Proposed feature
A top-bar status header that renders the same session-context information as a fixed, non-occluding strip at the top of the chat area, above the scrolling message list.
Content (priority order)
- Session title
- Context token count + percentage used
- Cost so far (
$0.00 spent) - MCP server statuses (name + connected/disabled dot)
- LSP status line
- Git branch (
~/path:branch) - (Modified files list — lowest priority / out of scope for v1)
Rendering requirements
- Non-occluding. The header must occupy real layout rows — it pushes the message list down rather than floating above it with a dimmed overlay. It should feel like a first-class layout element, the same way the input box at the bottom is part of the layout.
- Toggleable. A keybind (suggested:
sidebar_togglealready exists as<leader>b— a newheader_toggleor reusingsidebar_togglewhen width is narrow) shows/hides the bar. The state persists across sessions (same mechanism as other managed TUI settings viactrl+p). - Not an overlay/modal. No background dimming. The message list remains fully readable and interactive behind/below it.
- Responsive. When the terminal is wide enough for the sidebar, the sidebar takes over and the top-bar can be hidden automatically (or kept — user preference). When narrow, the top-bar is the fallback.
Suggested tui.json surface
{
"header": {
"enabled": true, // default: false (opt-in)
"auto_hide_with_sidebar": true // hides top-bar when sidebar is visible
},
"keybinds": {
"header_toggle": "<leader>h"
}
}Sketch
┌─────────────────────────────────────────────────────────┐
│ Fix stuck webhooks · 77k tokens 39% · $0.00 │ ← top-bar row 1
│ MCP ● blender ● gmail ● notion LSP ready octo:master │ ← top-bar row 2
├─────────────────────────────────────────────────────────┤
│ │
│ [message list scrolls here] │
│ │
├─────────────────────────────────────────────────────────┤
│ [input box] │
└─────────────────────────────────────────────────────────┘
Why not the existing alternatives
| Alternative | Why it falls short |
|---|---|
Sidebar (<leader>b) |
Right-column only; disappears below width threshold; no way to reposition |
terminal_title_toggle |
OS window title only; truncated; no token/cost/MCP data |
/rename + session name |
Doesn't surface context, cost, MCP, LSP, or branch |
| #24579 sticky title row | Title only — this request adds the full status panel and specifies non-occluding layout |
| Footer (#15344) | Competes with the prompt input area |
Acceptance criteria
- Top-bar renders session title, token count/%, cost, MCP statuses, LSP line, git branch
- Top-bar is part of the layout (pushes message list down) — not a floating overlay
- Toggling with a keybind shows/hides it without dimming/greying the message area
- Toggle state persists (survives restart)
-
tui.jsonopt-in flag controls default state - Works independently of sidebar — both can be on, or either, or neither
Reacted by Michalis Giannas, Trishan Talukdar and Artur Manukian
Metadata
Metadata
Assignees
Labels
No labels
Activity
github-actions commentedon May 1, 2026
This issue might be a duplicate of existing issues. Please check:
You may want to coordinate with or reference those issues, as your proposal could build on or supersede them.
trishan023 commentedon Jun 30, 2026
I'd like to work on implementing this. Plan: render the session status (tokens, cost, MCP, LSP, git branch) as a compact top-bar row that shows when the sidebar is hidden. Thoughts on the approach?
yukihamada commentedon Jul 30, 2026
+1 on this. One data point from daily use: I run long sessions with multiple subagents, and per-session cost is currently only visible via
opencode statsafter the fact. A live top-bar cost (even just input/output tokens × model pricing from models.dev) would make it much easier to decide when to compact or switch models mid-session.If the person who offered to implement this isn't actively working on it anymore, I'm happy to pick it up — starting with a minimal read-only version (session title + tokens + cost), toggled off by default.
trishan023 commentedon Jul 30, 2026
Go for it @yukihamada.
github-actions commentedon Sep 30, 2026
To stay organized issues are automatically closed after 60 days of no activity. If the issue is still relevant please open a new one.