[FEATURE]: Better thinking indicator
Nobody has claimed this yet.
Assessment
- Difficulty
- 1/5
- Estimated time
- Under an hour
- Newbie friendliness
- 88/100
- Issue type
- Feature
- Clarity
- Clearly specified
- Activity status
- Active
- Tech stack
- typescript
- Domain
- cli
Research direction
Start in packages/tui/src/component/spinner.tsx and inspect the SPINNER_FRAMES definition and its use by the thinking indicator. Replace the unsupported braille frames with fixed-width, broadly supported spinner characters, then run OpenCode in a terminal and trigger AI processing. Done means the indicator animates without corrupted symbols or visible width jitter.
Written by the indexing model from the issue text.
Description
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
Summary
The thinking indicator spinner in the OpenCode TUI displays braille pattern characters that do not render correctly on many terminals and fonts, appearing as empty boxes or corrupted symbols instead of a proper animated spinner.
Environment
- opencode version: 2.0.6
- OS: Linux 7.2.6-arch2-1 (x86_64)
- Terminal: xterm-256color (COLORTERM=truecolor)
- Shell: /usr/bin/zsh
- Install/channel: latest
- Active plugins: None
Reproduction
- Run opencode in the terminal
- Ask the AI a question to trigger thinking/processing
- Observe the thinking indicator spinner
Expected Behavior
The thinking indicator should display an animated spinner using characters that render correctly across all terminals and fonts.
Actual Behavior
The spinner displays braille pattern characters (⠋, ⠙, ⠹, ⠸, ⠼, ⠴, ⠦, ⠧, ⠇, ⠏) that do not render correctly. Many terminals and fonts lack support for the Braille Patterns Unicode block (U+2800-U+28FF), causing these characters to appear as empty boxes, question marks, or corrupted symbols instead of a proper spinner animation.
Additional Context
The issue is in packages/tui/src/component/spinner.tsx which defines:
export const SPINNER_FRAMES = ["⠋", "⠙", "⠹", "⠸", "⠼", "⠴", "⠦", "⠧", "⠇", "⠏"]
Root Cause: Braille characters require specific font support which is not universally available in terminal environments. While they were chosen for fixed-width properties to prevent "jitter" (as mentioned in previous changelogs), they sacrifice compatibility.
Recommended Fix: Replace braille characters with universally-supported Unicode geometric shapes that are:
- Supported by virtually all terminal fonts
- Still fixed-width (no animation jitter)
- Provide a smooth visual animation
Example replacement:
export const SPINNER_FRAMES = ["◐", "◓", "◑", "◒"]
These circular arc characters (Geometric Shapes, U+25D0-U+25D3) create a smooth rotating animation and render correctly on all platforms.
This issue affects all users of OpenCode 2.0.x who encounter the thinking indicator.
- Dominant language
- TypeScript
- Stars
- 209k
- Forks
- 27.5k
- Avg merge
- 7h 57m
- Merged PRs (30d)
- 347
Contributor 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
-
Difficulty 1/5 Under an hour Newbie friendliness 90/100
-
Difficulty 2/5 1-3 hours Newbie friendliness 86/100
-
Difficulty 1/5 Under an hour Newbie friendliness 90/100
-
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
-
Difficulty 1/5 Under an hour Newbie friendliness 91/100
All issues in anomalyco/opencode
Similar issues
-
Difficulty 2/5 1-3 hours Newbie friendliness 74/100
ontola/atomic-server#1625 ·
-
bug
Difficulty 2/5 1-3 hours Newbie friendliness 70/100
melgarafael/DeskcommCRM#1451 ·
-
Difficulty 1/5 Under an hour Newbie friendliness 82/100
-
bug via-triage
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
-
bot:ai-assisted component:compact-js status:untriaged
Difficulty 2/5 1-3 hours Newbie friendliness 84/100
midnightntwrk/midnight-sdk#403 ·