Skip to content

Commit 315b15a

Browse files
quickbeardclaude
andcommitted
feat(tui): use bouncingBar instead of pong in the busy footer
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
1 parent 70dbcc5 commit 315b15a

4 files changed

Lines changed: 7 additions & 7 deletions

File tree

‎CHANGELOG.md‎

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -9,10 +9,10 @@ file is the human-readable summary of what changed and why.
99

1010
### TUI
1111

12-
- **Pong footer spinner** — the busy indicator in the prompt footer (and the
13-
`codev run` footer) changed from the dotted scanner bar to
14-
[cli-spinners](https://github.com/sindresorhus/cli-spinners)' `pong`
15-
bouncing-ball animation. It keeps the agent's accent color in the TUI and
12+
- **Bouncing-bar footer spinner** — the busy indicator in the prompt footer
13+
(and the `codev run` footer) changed from the dotted scanner bar to
14+
[cli-spinners](https://github.com/sindresorhus/cli-spinners)' `bouncingBar`
15+
animation (`[== ]`). It keeps the agent's accent color in the TUI and
1616
the theme highlight in `codev run`; the reduced-motion `[⋯]` fallback is
1717
unchanged.
1818

‎DIVERGENCES.md‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -159,7 +159,7 @@ from the squash message first, or use a plain merge.
159159
| `packages/app/src/context/language.tsx`, `packages/app/src/entry.tsx`, `packages/desktop/src/renderer/i18n/index.ts`, `packages/console/app/src/i18n/index.ts`, `packages/console/app/src/lib/language.ts`, `packages/console/app/src/component/footer.tsx`, `packages/stats/app/src/i18n.ts`, `packages/enterprise/src/app.tsx`, `packages/app/e2e/regression/session-timeline-locale-projection.spec.ts` | Locale registries trimmed to `en` + `es`: `Locale` types, LOCALES/LABEL/TAG/DOCS maps, dict loaders, accept-language matchers; enterprise/entry `zh` special cases now use `es`; console footer always links Discord (Feishu was zh-only); e2e locale-projection spec tests `es` ("Explorado") instead of de/ar | Fork ships English + Spanish only. | Keep our trimmed lists; take upstream's structural changes and re-trim any new locale entries. |
160160
| `packages/tui/src/component/prompt/autocomplete.tsx`, `packages/app/src/components/prompt-input.tsx`, `packages/opencode/src/cli/cmd/run/footer.prompt.tsx`, `packages/core/src/filesystem/search.ts`, `packages/tui/test/fixture/tui-sdk.ts`, `packages/opencode/test/cli/run/footer.view.test.tsx`, `packages/core/test/filesystem/search.test.ts` | `@` mention autocomplete lists file/directory results before references/agents/MCP resources; TUI and run-CLI menus cap the leading files so up to 3 non-file matches stay in the first visible page; web app group rank reordered to recent → file → reference → agent → resource (extracted into fork-only `prompt-input/at-options.ts`). TUI and run-CLI file resources track menu visibility so opening on an empty query fetches (previously nothing refetched until the query changed); core's ripgrep-fallback `find` returns its first entries for an empty query to mirror fff. Tests: tui-sdk fixture's `FetchHandler` gains an optional `method` arg, `renderFooter` accepts `findFiles`/`agents` overrides + a mention-menu ordering test, core search tests cover the fallback's empty query (fork-only test files: `packages/tui/test/prompt-autocomplete.test.tsx`, `packages/app/test-browser/prompt-at-options.test.ts`, `packages/app/src/components/prompt-input/at-options{,.test}.ts`) | Files are the dominant `@` use case; they should rank first and appear on a bare `@`. | Keep our ordering/reserve logic, resource source tracking, empty-query branch, fixture/test additions; take upstream's surrounding changes. |
161161
| `packages/slack/.gitignore`, `sdks/vscode/.gitignore` | Added the missing trailing newline (content unchanged) | Upstream's copies end without a newline; POSIX text files should end with one, and tools that concatenate or append to these files misbehave without it. | Whitespace-only: keep the trailing newline; take upstream's entries. |
162-
| `packages/tui/src/component/prompt/index.tsx`, `packages/opencode/src/cli/cmd/run/footer.view.tsx` | Busy footer spinner: the procedural Knight-Rider scanner bar (`createFrames`/`createColors` from `ui/spinner.ts`, `style: "blocks"`, `interval={40}`) is replaced by cli-spinners' `pong` preset via opentui-spinner's `name` prop (`<spinner name="pong">`; the preset supplies frames + 80ms interval). prompt/index.tsx keeps the agent-color logic in a `spinnerColor` memo (was inside `spinnerDef`); footer.view.tsx passes `theme().highlight` directly. Both `createFrames`/`createColors` imports are dropped; `ui/spinner.ts` itself is untouched (now unconsumed in the TUI/run CLI). | The footer busy indicator is the pong bouncing-ball animation instead of the dotted scanner. | Keep the `name="pong"` renders, the `spinnerColor` memo, and the dropped imports; take upstream's surrounding changes. If upstream reworks the footer spinner, re-apply pong at the new render site. |
162+
| `packages/tui/src/component/prompt/index.tsx`, `packages/opencode/src/cli/cmd/run/footer.view.tsx` | Busy footer spinner: the procedural Knight-Rider scanner bar (`createFrames`/`createColors` from `ui/spinner.ts`, `style: "blocks"`, `interval={40}`) is replaced by cli-spinners' `bouncingBar` preset via opentui-spinner's `name` prop (`<spinner name="bouncingBar">`; the preset supplies frames + 80ms interval). prompt/index.tsx keeps the agent-color logic in a `spinnerColor` memo (was inside `spinnerDef`); footer.view.tsx passes `theme().highlight` directly. Both `createFrames`/`createColors` imports are dropped; `ui/spinner.ts` itself is untouched (now unconsumed in the TUI/run CLI). | The footer busy indicator is the bouncingBar animation (`[== ]`) instead of the dotted scanner. | Keep the `name="bouncingBar"` renders, the `spinnerColor` memo, and the dropped imports; take upstream's surrounding changes. If upstream reworks the footer spinner, re-apply bouncingBar at the new render site. |
163163

164164
## Known rebrand gaps
165165

‎packages/opencode/src/cli/cmd/run/footer.view.tsx‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -824,7 +824,7 @@ export function RunFooterView(props: RunFooterViewProps) {
824824
>
825825
<Show when={busy() && !exiting()}>
826826
<box flexShrink={0}>
827-
<spinner name="pong" color={theme().highlight} />
827+
<spinner name="bouncingBar" color={theme().highlight} />
828828
</box>
829829
</Show>
830830

‎packages/tui/src/component/prompt/index.tsx‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1481,7 +1481,7 @@ export function Prompt(props: PromptProps) {
14811481
<box flexShrink={0} flexDirection="row" gap={1}>
14821482
<box marginLeft={1}>
14831483
<Show when={kv.get("animations_enabled", true)} fallback={<text fg={theme.textMuted}>[⋯]</text>}>
1484-
<spinner name="pong" color={spinnerColor()} />
1484+
<spinner name="bouncingBar" color={spinnerColor()} />
14851485
</Show>
14861486
</box>
14871487
<box flexDirection="row" gap={1} flexShrink={0}>

0 commit comments

Comments
 (0)