tui: vertical session tabs render the working pulse only 10 columns wide
Maintainers usually reply within 1 day
Nobody has claimed this yet.
Assessment
- Difficulty
- 1/5
- Estimated time
- Under an hour
- Newbie friendliness
- 90/100
- Issue type
- Bug
- Clarity
- Clearly specified
- Activity status
- Active
- Tech stack
- typescript
- Domain
- cli
Research direction
Start in packages/tui/src/component/session-tabs.tsx at VerticalSessionTabs, including the indicatorWidth constant and the four TabPulse call sites around lines 826-1090; compare them with the horizontal tabs' width handling and packages/tui/src/component/tab-pulse.tsx. Verify the running pulse and separator strips span the full vertical rail width while horizontal tabs remain unchanged.
Written by the indexing model from the issue text.
Description
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):
const indicatorWidth = 10: https://github.com/anomalyco/opencode/blob/v2.0.12/packages/tui/src/component/session-tabs.tsx#L826- four
TabPulsecall sites use it: L951 (edge="above"), L978 (edge="below"), L1005 (title row), L1090 (detail row) - default width: https://github.com/anomalyco/opencode/blob/v2.0.12/packages/tui/src/component/tab-pulse.tsx#L792 —
width={props.width ?? "100%"} - horizontal tabs pass no
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": false in cli.json.
Environment: Arch Linux (kernel 6.18.52-1-lts, x86_64), Alacritty, truecolor, zsh.
- Dominant language
- TypeScript
- Stars
- 212k
- Forks
- 28.1k
- Avg merge
- 8h 49m
- Merged PRs (30d)
- 348
Getting set up
- No Dockerfile or Docker Compose file
- Has a pull request template
- Read the contributing guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from anomalyco/opencode
-
Windows: global-project session path depends on server process drive, hides API-created sessions from desktop pickerPossibly taken @1624318455 claimed this 10 days ago. Open
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
Maintainers usually reply within 1 day
-
[FEATURE]: Test that PermissionV2 declines pending requests when its scope closesPossibly taken @saeedahmed96 claimed this 8 days ago. Open
Difficulty 2/5 1-3 hours Newbie friendliness 88/100
Maintainers usually reply within 1 day
-
EffectFlock heartbeat never refreshes, so locks held over 60 s can be brokenPossibly taken @iceteaSA claimed this 10 days ago. Open
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 82/100
anomalyco/opencode#51159 · 1 comment ·
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
Maintainers usually reply within 1 day
All issues in anomalyco/opencode
Similar issues
-
Difficulty 2/5 1-3 hours Newbie friendliness 72/100
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 68/100
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 68/100
-
Difficulty 2/5 1-3 hours Newbie friendliness 72/100
Maintainers usually reply within 4 days
-
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
Maintainers usually reply within 1 day