feat(web): honest, state-aware summarize status with charm spinner (ADR-025)
Clicking Summarize polled /status, which knew only "spinning" or "done". The web ProcessVideo recorded an outcome only on success, so a 429'd or caption-less click left transcript_status unset and the poll silently reverted to the Summarize button — the rate limit was invisible and the click felt broken. - ProcessVideo now records rate_limited / none / fetched (mirrors the runner); a rate-limited video keeps its requested flag so the background sweep retries it. - /status is state-aware: summary card (done), working spinner (in-flight), a calm "waiting on rate limit, will retry" card that keeps polling so the summary lands on its own (no re-click), and a terminal "no captions" card. - Charm status text (Claude-Code / Crush inspired): the spinner cycles playful tapir-themed gerunds via CSS only (no JS), decorative + an sr-only stable status line for a11y. Pillar A (foreground fetch priority lane) is a separate follow-up. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
+401
-218
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user