Skip to content

Animation accents: calendar escalation icons + start takeover, CI running spinner - #18

Merged
sumitake merged 9 commits into
mainfrom
dev/claude/animation-accents
Aug 7, 2026
Merged

Animation accents: calendar escalation icons + start takeover, CI running spinner#18
sumitake merged 9 commits into
mainfrom
dev/claude/animation-accents

Conversation

@sumitake

@sumitake sumitake commented Aug 7, 2026

Copy link
Copy Markdown
Owner

What & why

Brings the device's built-in stock animations into the two existing integrations, at the moments that matter — turning the calendar escalation and CI running states into something alive rather than static text.

Calendar (calendar_countdown)

  • 5 min out — animated calendar_event icon (left) + the event title (scrolls in the narrowed band) + amber countdown.
  • 1 min out — animated calendar_reminder (bell) icon + big red countdown; title dropped for room; LED blink unchanged.
  • First 60 s after start (new) — a full-panel takeover animation (start_animation, default meeting_72x16) held at urgent priority, coinciding with the T-0 chirp — a strong "it's starting / you're running late" alarm — then reverts to the normal in-progress display.
  • The start-time (time) and divider elements are dropped while an escalation icon shows, so the icon has room.
  • run_once's clear logic migrated from an in_progress-boolean transition to a unified state["last_shape"] frozenset shape-tracker (mirroring ci_status), so every new element-id-set transition (title drop, takeover↔ENDS) clears cleanly. Verified no LED/chirp/commit-on-DRAWN regression.

CI (ci_status)

  • Animated 8×8 spinner_front_8x8 on the running badge (top-right; title width reserved 68→60 so it never runs under the spinner). All repo/PR/ETA info preserved. Quota frames untouched.

Mechanics

  • Stock animations referenced by stock_path (shared/<name>.anim) — no assets bundled, verified on-device.
  • All config-gated (escalation_icons, start_animation, start_window_seconds, running_spinner), defaulting on; "" / false disable.

Testing

  • 359 unit tests (element-set selection per stage/window, quiet-hours-style boundaries, shape-tracker transitions, spinner gating, backward-compat regression guards).
  • On-device: all four states rendered from the real code and captured — icons compose with text, warn title scrolls, takeover shows full-panel, spinner fits without occlusion.

Follow-ups (filed, non-blocking)

  • Graceful degradation if start_animation names a non-existent stock animation (currently the takeover draw errors for the window; default is valid).

Design/spikes: docs/superpowers/specs/2026-08-06-animation-accents-design.md.

🤖 Generated with Claude Code

sumitake and others added 9 commits August 6, 2026 23:06
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Review fix: the 16x16 escalation icon at (0,0) was drawn over the
still-unconditional `time` element (x=2,y=5), occluding its leading
digits. Drop `time` whenever the icon is shown (warn + imminent), same
as the title is already dropped at imminent. Also documents
imminent_minutes in build_elements' cfg docstring (minor).
@sumitake
sumitake merged commit 5881096 into main Aug 7, 2026
4 checks passed
@sumitake
sumitake deleted the dev/claude/animation-accents branch August 7, 2026 07:46
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant