diff --git a/packages/dashboard/app/styles.css b/packages/dashboard/app/styles.css index 27f06b5fc..3cad2dc9f 100644 --- a/packages/dashboard/app/styles.css +++ b/packages/dashboard/app/styles.css @@ -175,6 +175,18 @@ html { --xsmall-breakpoint: 640px; } +/* Global spinner animation — used by 25+ components via className="animate-spin" + or inline animation: "spin ...". Must live at the stylesheet top level (not + inside any selector block) so the keyframes and utility class are available + before any task cards are loaded. */ +@keyframes spin { + from { transform: rotate(0deg); } + to { transform: rotate(360deg); } +} +.animate-spin { + animation: spin 1s linear infinite; +} + :root { --bg: #0d1117; --surface: #161b22; diff --git a/packages/engine/src/runtimes/__tests__/in-process-runtime.test.ts b/packages/engine/src/runtimes/__tests__/in-process-runtime.test.ts index e1ac70313..c2e2bea2e 100644 --- a/packages/engine/src/runtimes/__tests__/in-process-runtime.test.ts +++ b/packages/engine/src/runtimes/__tests__/in-process-runtime.test.ts @@ -57,6 +57,7 @@ vi.mock("@fusion/core", async () => { self.getTask = mockTaskStoreGetTask; self.getSettings = vi.fn().mockImplementation(async () => structuredClone(mockTaskStoreSettings)); self.getMissionStore = vi.fn().mockReturnValue({ + listMissions: vi.fn().mockReturnValue([]), getMissionWithHierarchy: vi.fn().mockReturnValue(null), findNextPendingSlice: vi.fn().mockReturnValue(null), activateSlice: vi.fn(),