diff options
| author | Dax Raad <[email protected]> | 2025-11-21 00:47:27 -0500 |
|---|---|---|
| committer | Dax Raad <[email protected]> | 2025-11-21 00:47:27 -0500 |
| commit | d20ef569de852e56a5f84a972cefe0cb3633ff05 (patch) | |
| tree | 874503764a67808d6c3c903643dc6cfbf3fdf1f2 | |
| parent | ca2b871810ecfd6ade6578940fb93260e6f9f6c4 (diff) | |
| download | opencode-d20ef569de852e56a5f84a972cefe0cb3633ff05.tar.gz opencode-d20ef569de852e56a5f84a972cefe0cb3633ff05.zip | |
tui: replace text shimmer with animated progress bar during model processing
| -rw-r--r-- | packages/opencode/src/cli/cmd/tui/component/dialog-model.tsx | 15 | ||||
| -rw-r--r-- | packages/opencode/src/cli/cmd/tui/component/prompt/index.tsx | 37 |
2 files changed, 36 insertions, 16 deletions
diff --git a/packages/opencode/src/cli/cmd/tui/component/dialog-model.tsx b/packages/opencode/src/cli/cmd/tui/component/dialog-model.tsx index 77eda2271..d248bd821 100644 --- a/packages/opencode/src/cli/cmd/tui/component/dialog-model.tsx +++ b/packages/opencode/src/cli/cmd/tui/component/dialog-model.tsx @@ -4,23 +4,8 @@ import { useSync } from "@tui/context/sync" import { map, pipe, flatMap, entries, filter, isDeepEqual, sortBy, take } from "remeda" import { DialogSelect, type DialogSelectRef } from "@tui/ui/dialog-select" import { useDialog } from "@tui/ui/dialog" -import { useTheme } from "../context/theme" import { createDialogProviderOptions, DialogProvider } from "./dialog-provider" -function Free() { - const { theme } = useTheme() - return <span style={{ fg: theme.text }}>Free</span> -} -const PROVIDER_PRIORITY: Record<string, number> = { - opencode: 0, - anthropic: 1, - "github-copilot": 2, - openai: 3, - google: 4, - openrouter: 5, - vercel: 6, -} - export function DialogModel() { const local = useLocal() const sync = useSync() diff --git a/packages/opencode/src/cli/cmd/tui/component/prompt/index.tsx b/packages/opencode/src/cli/cmd/tui/component/prompt/index.tsx index 17ac2381c..b04cb7c60 100644 --- a/packages/opencode/src/cli/cmd/tui/component/prompt/index.tsx +++ b/packages/opencode/src/cli/cmd/tui/component/prompt/index.tsx @@ -806,7 +806,7 @@ export function Prompt(props: PromptProps) { justifyContent={status().type === "retry" ? "space-between" : "flex-start"} > <box flexShrink={0} flexDirection="row" gap={1}> - <Shimmer text="Working" color={theme.text} /> + <Loader /> <box flexDirection="row" gap={1} flexShrink={0}> {(() => { const retry = createMemo(() => { @@ -876,3 +876,38 @@ export function Prompt(props: PromptProps) { </> ) } + +function Loader() { + const FRAMES = [ + "▱▱▱▱▱▱▱", + "▱▱▱▱▱▱▱", + "▱▱▱▱▱▱▱", + "▱▱▱▱▱▱▱", + "▰▱▱▱▱▱▱", + "▰▰▱▱▱▱▱", + "▰▰▰▱▱▱▱", + "▱▰▰▰▱▱▱", + "▱▱▰▰▰▱▱", + "▱▱▱▰▰▰▱", + "▱▱▱▱▰▰▰", + "▱▱▱▱▱▰▰", + "▱▱▱▱▱▱▰", + "▱▱▱▱▱▱▱", + "▱▱▱▱▱▱▱", + "▱▱▱▱▱▱▱", + "▱▱▱▱▱▱▱", + ] + const [frame, setFrame] = createSignal(0) + + onMount(() => { + const timer = setInterval(() => { + setFrame((frame() + 1) % FRAMES.length) + }, 100) + onCleanup(() => { + clearInterval(timer) + }) + }) + + const { theme } = useTheme() + return <text fg={theme.diffAdded}>{FRAMES[frame()]}</text> +} |
