Sfoglia il codice sorgente

feat(tui): add running spinner to bash tool in TUI (#12317)

Goni Zahavy 2 settimane fa
parent
commit
40ebc34909

+ 2 - 0
packages/opencode/src/cli/cmd/tui/routes/session/index.tsx

@@ -1625,6 +1625,7 @@ function BlockTool(props: {
 function Bash(props: ToolProps<typeof BashTool>) {
 function Bash(props: ToolProps<typeof BashTool>) {
   const { theme } = useTheme()
   const { theme } = useTheme()
   const sync = useSync()
   const sync = useSync()
+  const isRunning = createMemo(() => props.part.state.status === "running")
   const output = createMemo(() => stripAnsi(props.metadata.output?.trim() ?? ""))
   const output = createMemo(() => stripAnsi(props.metadata.output?.trim() ?? ""))
   const [expanded, setExpanded] = createSignal(false)
   const [expanded, setExpanded] = createSignal(false)
   const lines = createMemo(() => output().split("\n"))
   const lines = createMemo(() => output().split("\n"))
@@ -1665,6 +1666,7 @@ function Bash(props: ToolProps<typeof BashTool>) {
         <BlockTool
         <BlockTool
           title={title()}
           title={title()}
           part={props.part}
           part={props.part}
+          spinner={isRunning()}
           onClick={overflow() ? () => setExpanded((prev) => !prev) : undefined}
           onClick={overflow() ? () => setExpanded((prev) => !prev) : undefined}
         >
         >
           <box gap={1}>
           <box gap={1}>