feat(frontend): pulse the stop dot while the harness is working

Give live feedback that something is happening the moment a session starts
processing: the red stop dot in the composer beats with a soft heartbeat + halo
while the harness is actively working (running — not waiting at a gate or
finalized), and settles the instant the model hands control back to the reviewer
or the session ends. Ring/scale only (no layout properties animated); honors
prefers-reduced-motion.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
2026-07-18 12:33:25 +02:00
co-authored by Claude Opus 4.8
parent 3453f3ae23
commit ccfa3a18bf
4 changed files with 31 additions and 1 deletions
+9
View File
@@ -82,3 +82,12 @@ test("marks the composer as awaiting input only when requested", () => {
expect(input).toHaveAttribute("data-awaiting-input", "true");
expect(input).toHaveClass("thot-awaiting-input");
});
test("pulses the stop dot only while the harness is working", () => {
const { rerender } = render(<SteerInput sessionId="s1" working />);
const dot = () =>
screen.getByRole("button", { name: /stop and save session/i }).querySelector("span");
expect(dot()).toHaveClass("thot-pulse");
rerender(<SteerInput sessionId="s1" working={false} />);
expect(dot()).not.toHaveClass("thot-pulse");
});