Description
With vertical session tabs (tabs.layout: "vertical"), the animated "session is running" pulse is hardcoded to 10 columns instead of the width of the tab. On a ~40-column rail it looks like a stray short dark stripe that crosses only part of the tab — both the separators above/below the tab and the sweep inside its title/detail rows. Horizontal tabs are fine, which makes the vertical rail look broken/inconsistent.
Plugins
superpowers@git+https://github.com/obra/superpowers.git, @cardinal4/opencode-quota@latest (both unrelated to this rendering issue)
OpenCode version
2.0.12
Steps to reproduce
- In
~/.config/opencode/cli.json: "tabs": { "layout": "vertical" } (defaults: indicators: "status", animations: true).
- Open a session and send a prompt so the tab stays in the running/thinking state.
- Watch the active tab in the vertical rail: the pulse strip above/below it and the sweep inside its title/detail rows cover only the first 10 columns.
Expected behavior
The pulse/separator strips span the full tab width, as they do in the horizontal tab layout.
Actual behavior
They are clipped to 10 columns, so on a wide rail they read as a short black line.
Additional context
Source (v2.0.12):
Suggested fix: drop the hardcoded width in VerticalSessionTabs (use the rail width, e.g. width() or "100%"), matching the horizontal layout.
Workaround (for users hitting it): "animations": false in cli.json.
Environment: Arch Linux (kernel 6.18.52-1-lts, x86_64), Alacritty, truecolor, zsh.
Description
With vertical session tabs (
tabs.layout: "vertical"), the animated "session is running" pulse is hardcoded to 10 columns instead of the width of the tab. On a ~40-column rail it looks like a stray short dark stripe that crosses only part of the tab — both the separators above/below the tab and the sweep inside its title/detail rows. Horizontal tabs are fine, which makes the vertical rail look broken/inconsistent.Plugins
superpowers@git+https://github.com/obra/superpowers.git, @cardinal4/opencode-quota@latest (both unrelated to this rendering issue)
OpenCode version
2.0.12
Steps to reproduce
~/.config/opencode/cli.json:"tabs": { "layout": "vertical" }(defaults:indicators: "status",animations: true).Expected behavior
The pulse/separator strips span the full tab width, as they do in the horizontal tab layout.
Actual behavior
They are clipped to 10 columns, so on a wide rail they read as a short black line.
Additional context
Source (v2.0.12):
const indicatorWidth = 10: https://github.com/anomalyco/opencode/blob/v2.0.12/packages/tui/src/component/session-tabs.tsx#L826TabPulsecall sites use it: L951 (edge="above"), L978 (edge="below"), L1005 (title row), L1090 (detail row)width={props.width ?? "100%"}width(session-tabs.tsx L1660), so they already get"100%"Suggested fix: drop the hardcoded width in
VerticalSessionTabs(use the rail width, e.g.width()or"100%"), matching the horizontal layout.Workaround (for users hitting it):
"animations": falseincli.json.Environment: Arch Linux (kernel 6.18.52-1-lts, x86_64), Alacritty, truecolor, zsh.