anomalyco / anomalyco/opencode
[FEATURE]: Better thinking indicator
Nobody has claimed this yet.
- Dominant language
- TypeScript
- Stars
- 209k
- Forks
- 27.5k
- Avg merge
- 7h 2m
- Merged PRs (30d)
- 384
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.
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.
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.
Assessment
- Tech stack
- typescript
- Domain
- cli
- Issue type
- Feature
- Difficulty
- 1/5
- Estimated time
- Under an hour
- Activity status
- Active
- Clarity
- Clearly specified
- Newbie friendliness
- 88/100