From e877131159a13bbe0d2a2cf9a19fa3d9073aa42c Mon Sep 17 00:00:00 2001 From: Kit Langton Date: Tue, 20 Oct 2026 23:17:28 -0700 Subject: [PATCH] fix(ui): keep activity spinners in phase (#57654) --- .../src/runtime/extension/titlebar-items.tsx | 6 +++- packages/ui/src/components/spinner.tsx | 2 ++ .../feedback/activity-ring/activity-ring.tsx | 2 ++ packages/ui/src/feedback/loader/loader.tsx | 2 ++ packages/ui/src/hooks/index.ts | 2 ++ packages/ui/src/hooks/spin-phase.test.ts | 17 +++++++++++ packages/ui/src/hooks/spin-phase.ts | 29 +++++++++++++++++++ 7 files changed, 59 insertions(+), 1 deletion(-) create mode 100644 packages/ui/src/hooks/spin-phase.test.ts create mode 100644 packages/ui/src/hooks/spin-phase.ts diff --git a/packages/app/src/runtime/extension/titlebar-items.tsx b/packages/app/src/runtime/extension/titlebar-items.tsx index 650df8ea7cb..60fbe3d86ed 100644 --- a/packages/app/src/runtime/extension/titlebar-items.tsx +++ b/packages/app/src/runtime/extension/titlebar-items.tsx @@ -1,4 +1,5 @@ import { createMemo, For, Show } from "solid-js" +import { syncSpinPhase } from "@opencode/ui/hooks" import { Icon } from "@opencode/ui/icon" import { TitlebarItem } from "@opencode/gui-extensions/sdk" import { useExtensionHost } from "./host" @@ -70,7 +71,10 @@ function TitlebarItemButton(props: { item: TitlebarItem; vertical?: boolean }) { class="flex shrink-0 items-center justify-center" classList={{ "size-7": props.vertical, "size-5": !props.vertical }} > -