tui: preserve spinner registration (#35292)

This commit is contained in:
Simon Klee 2026-07-04 09:44:23 +02:00 committed by GitHub
parent a22676720d
commit 7a8e7c88f4
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
7 changed files with 23 additions and 5 deletions

View file

@ -1,13 +1,15 @@
/** @jsxImportSource @opentui/solid */
import type { ScrollBoxRenderable } from "@opentui/core"
import { useKeyboard } from "@opentui/solid"
import "opentui-spinner/solid"
import { registerOpencodeSpinner } from "@opencode-ai/tui/component/register-spinner"
import { Show, createMemo, indexArray } from "solid-js"
import { SPINNER_FRAMES } from "@opencode-ai/tui/component/spinner"
import { RunEntryContent, separatorRows } from "./scrollback.writer"
import type { FooterSubagentDetail, FooterSubagentTab, RunDiffStyle } from "./types"
import type { RunFooterTheme, RunTheme } from "./theme"
registerOpencodeSpinner()
export const SUBAGENT_INSPECTOR_ROWS = 14
function statusColor(theme: RunFooterTheme, status: FooterSubagentTab["status"]) {

View file

@ -10,7 +10,7 @@
/** @jsxImportSource @opentui/solid */
import { useTerminalDimensions } from "@opentui/solid"
import { For, Match, Show, Switch, createEffect, createMemo, createSignal, onCleanup } from "solid-js"
import "opentui-spinner/solid"
import { registerOpencodeSpinner } from "@opencode-ai/tui/component/register-spinner"
import { createColors, createFrames } from "@opencode-ai/tui/ui/spinner"
import {
RUN_SUBAGENT_PANEL_ROWS,
@ -56,6 +56,8 @@ import type {
import type { RunTheme } from "./theme"
import { modelInfo } from "./variant.shared"
registerOpencodeSpinner()
const EMPTY_BORDER = {
topLeft: "",
bottomLeft: "",

View file

@ -44,7 +44,8 @@
"./ui/dialog": "./src/ui/dialog.tsx",
"./ui/spinner": "./src/ui/spinner.ts",
"./ui/toast": "./src/ui/toast.tsx",
"./component/spinner": "./src/component/spinner.tsx"
"./component/spinner": "./src/component/spinner.tsx",
"./component/register-spinner": "./src/component/register-spinner.ts"
},
"dependencies": {
"@opencode-ai/core": "workspace:*",

View file

@ -1,4 +1,5 @@
import { render, TimeToFirstDraw, useRenderer, useTerminalDimensions } from "@opentui/solid"
import { registerOpencodeSpinner } from "./component/register-spinner"
import { createDefaultOpenTuiKeymap } from "@opentui/keymap/opentui"
import { Deferred, Effect } from "effect"
import { Global } from "@opencode-ai/core/global"
@ -86,6 +87,8 @@ import { win32DisableProcessedInput, win32FlushInputBuffer } from "./terminal-wi
import { destroyRenderer } from "./util/renderer"
import { cliErrorMessage, errorFormat } from "./util/error"
registerOpencodeSpinner()
const appGlobalBindingCommands = [
"session.list",
"session.new",

View file

@ -10,7 +10,7 @@ import {
} from "@opentui/core"
import type { CommandContext } from "@opentui/keymap"
import { createEffect, createMemo, onMount, createSignal, onCleanup, on, Show, Switch, Match } from "solid-js"
import "opentui-spinner/solid"
import { registerOpencodeSpinner } from "../register-spinner"
import path from "path"
import { fileURLToPath } from "url"
import { useLocal } from "../../context/local"
@ -57,6 +57,8 @@ import { usePromptWorkspace } from "./workspace"
import { usePromptMove } from "./move"
import { readLocalAttachment } from "./local-attachment"
registerOpencodeSpinner()
export type PromptProps = {
sessionID?: string
visible?: boolean

View file

@ -0,0 +1,6 @@
import { getComponentCatalogue } from "@opentui/solid/components"
import { registerSpinner } from "opentui-spinner/solid"
export function registerOpencodeSpinner() {
if (!getComponentCatalogue().spinner) registerSpinner()
}

View file

@ -3,7 +3,9 @@ import { useTheme } from "../context/theme"
import { useKV } from "../context/kv"
import type { JSX } from "@opentui/solid"
import type { RGBA } from "@opentui/core"
import "opentui-spinner/solid"
import { registerOpencodeSpinner } from "./register-spinner"
registerOpencodeSpinner()
export const SPINNER_FRAMES = ["⠋", "⠙", "⠹", "⠸", "⠼", "⠴", "⠦", "⠧", "⠇", "⠏"]