Skip to content

Commit 7a8e7c8

Browse files
authored
tui: preserve spinner registration (#35292)
1 parent a226767 commit 7a8e7c8

7 files changed

Lines changed: 23 additions & 5 deletions

File tree

packages/opencode/src/cli/cmd/run/footer.subagent.tsx

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,15 @@
11
/** @jsxImportSource @opentui/solid */
22
import type { ScrollBoxRenderable } from "@opentui/core"
33
import { useKeyboard } from "@opentui/solid"
4-
import "opentui-spinner/solid"
4+
import { registerOpencodeSpinner } from "@opencode-ai/tui/component/register-spinner"
55
import { Show, createMemo, indexArray } from "solid-js"
66
import { SPINNER_FRAMES } from "@opencode-ai/tui/component/spinner"
77
import { RunEntryContent, separatorRows } from "./scrollback.writer"
88
import type { FooterSubagentDetail, FooterSubagentTab, RunDiffStyle } from "./types"
99
import type { RunFooterTheme, RunTheme } from "./theme"
1010

11+
registerOpencodeSpinner()
12+
1113
export const SUBAGENT_INSPECTOR_ROWS = 14
1214

1315
function statusColor(theme: RunFooterTheme, status: FooterSubagentTab["status"]) {

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

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
/** @jsxImportSource @opentui/solid */
1111
import { useTerminalDimensions } from "@opentui/solid"
1212
import { For, Match, Show, Switch, createEffect, createMemo, createSignal, onCleanup } from "solid-js"
13-
import "opentui-spinner/solid"
13+
import { registerOpencodeSpinner } from "@opencode-ai/tui/component/register-spinner"
1414
import { createColors, createFrames } from "@opencode-ai/tui/ui/spinner"
1515
import {
1616
RUN_SUBAGENT_PANEL_ROWS,
@@ -56,6 +56,8 @@ import type {
5656
import type { RunTheme } from "./theme"
5757
import { modelInfo } from "./variant.shared"
5858

59+
registerOpencodeSpinner()
60+
5961
const EMPTY_BORDER = {
6062
topLeft: "",
6163
bottomLeft: "",

packages/tui/package.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,8 @@
4444
"./ui/dialog": "./src/ui/dialog.tsx",
4545
"./ui/spinner": "./src/ui/spinner.ts",
4646
"./ui/toast": "./src/ui/toast.tsx",
47-
"./component/spinner": "./src/component/spinner.tsx"
47+
"./component/spinner": "./src/component/spinner.tsx",
48+
"./component/register-spinner": "./src/component/register-spinner.ts"
4849
},
4950
"dependencies": {
5051
"@opencode-ai/core": "workspace:*",

packages/tui/src/app.tsx

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import { render, TimeToFirstDraw, useRenderer, useTerminalDimensions } from "@opentui/solid"
2+
import { registerOpencodeSpinner } from "./component/register-spinner"
23
import { createDefaultOpenTuiKeymap } from "@opentui/keymap/opentui"
34
import { Deferred, Effect } from "effect"
45
import { Global } from "@opencode-ai/core/global"
@@ -86,6 +87,8 @@ import { win32DisableProcessedInput, win32FlushInputBuffer } from "./terminal-wi
8687
import { destroyRenderer } from "./util/renderer"
8788
import { cliErrorMessage, errorFormat } from "./util/error"
8889

90+
registerOpencodeSpinner()
91+
8992
const appGlobalBindingCommands = [
9093
"session.list",
9194
"session.new",

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

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ import {
1010
} from "@opentui/core"
1111
import type { CommandContext } from "@opentui/keymap"
1212
import { createEffect, createMemo, onMount, createSignal, onCleanup, on, Show, Switch, Match } from "solid-js"
13-
import "opentui-spinner/solid"
13+
import { registerOpencodeSpinner } from "../register-spinner"
1414
import path from "path"
1515
import { fileURLToPath } from "url"
1616
import { useLocal } from "../../context/local"
@@ -57,6 +57,8 @@ import { usePromptWorkspace } from "./workspace"
5757
import { usePromptMove } from "./move"
5858
import { readLocalAttachment } from "./local-attachment"
5959

60+
registerOpencodeSpinner()
61+
6062
export type PromptProps = {
6163
sessionID?: string
6264
visible?: boolean
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
import { getComponentCatalogue } from "@opentui/solid/components"
2+
import { registerSpinner } from "opentui-spinner/solid"
3+
4+
export function registerOpencodeSpinner() {
5+
if (!getComponentCatalogue().spinner) registerSpinner()
6+
}

packages/tui/src/component/spinner.tsx

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,9 @@ import { useTheme } from "../context/theme"
33
import { useKV } from "../context/kv"
44
import type { JSX } from "@opentui/solid"
55
import type { RGBA } from "@opentui/core"
6-
import "opentui-spinner/solid"
6+
import { registerOpencodeSpinner } from "./register-spinner"
7+
8+
registerOpencodeSpinner()
79

810
export const SPINNER_FRAMES = ["⠋", "⠙", "⠹", "⠸", "⠼", "⠴", "⠦", "⠧", "⠇", "⠏"]
911

0 commit comments

Comments
 (0)