Skip to content

feat(command-center-ai): animate agent icons only where they help - #15

Merged
MainSequenceDev merged 1 commit into
mainfrom
feat/agent-icon-motion
Oct 16, 2026
Merged

MainSequenceDev merged 1 commit into
mainfrom
feat/agent-icon-motion

Conversation

@MainSequenceDev

Copy link
Copy Markdown
Contributor

Summary

Animated agent icons move only where they help (ADR 090 amended 2026-10-16, following the platform's ADR-033 amendment in Main-Sequence-Server-Side/tdag-django#1005).

  • AgentIcon gains motion ("still" by default). An animated color icon shows frame 0 in lists, the launcher, thread avatars and the application's agent pages. It animates only with motion="animate", which three places pass: the rail header badge, the connecting stage, and the avatar of the agent that is working.
  • Reduced motion (useCommandCenterViewport().reducedMotion) always shows frame 0. An animated avatar no longer also runs the ms-chat-pulse animation.
  • The still comes from the same bytes. The icon cache drops the APNG acTL/fcTL/fdAT chunks once per icon and keeps a static PNG of frame 0 (src/engine/apng-still.ts). There is no second request, canvas or decode, and the still's object URL is revoked with the icon's.
  • Pixel art stays sharp. The parser reads the optional commandCenterIcon.imageRendering (absent means auto; pixelated only for color), and a pixelated color icon is drawn with image-rendering: pixelated.

Compatibility: additive npm API (AgentIcon.motion, optional CommandCenterAgentIcon.imageRendering); useAgentIconObjectUrl keeps its signature. There is one new stylesheet rule and skill content text. No storage key, skill name or path, installer behavior, SDK peer range or route changes. A static icon renders as before.

Release: this PR adds to ## Unreleased and has no version bump, so merging does not publish. Command Center picks it up after a chore(release): prepare command-center-ai 0.0.14 (which also ships the unreleased rail resizing) and a bump in Main-Sequence-Server-Side/CommandCenter.

Test plan

  • Node 22, command-center-ai: npm run check exit 0; npm test 54 files / 403 tests passed, plus node --test 15 passed; npm run build exit 0.
  • Repo root npm run check exit 0.
  • The test fixtures are the platform sanitizer's own APNG and PNG output. Stripping the chunks from a backend APNG yields a single-frame PNG whose pixels are frame 0 (checked with Pillow).
  • CI on this PR.
  • In Command Center after the release and bump: a pixel-art agent is still in the explorer and animates in the rail header.

🤖 Generated with Claude Code

The platform may now deliver a colour agent icon as an animated PNG
whose frame 0 is its still, and mark a colour icon imageRendering
"pixelated" (tdag-django ADR-033, amended 2026-10-16). AgentIcon gains
motion, "still" by default: an animated icon shows frame 0 in lists, the
launcher, thread avatars and the application's agent pages, and moves
only with motion="animate", which the rail header badge, the connecting
stage and the avatar of the working agent pass. Reduced motion
(useCommandCenterViewport) always shows frame 0, an animated avatar no
longer also pulses, and a pixelated colour icon is drawn with
image-rendering: pixelated.

The cache makes the still once per delivery URL from the same bytes:
dropping the acTL, fcTL and fdAT chunks leaves a static PNG of the
default image (src/engine/apng-still.ts), so there is no second request,
canvas or decode, and the still object URL is revoked with the icon's.
The projection parser reads the optional imageRendering (absent means
auto, pixelated only for colour). useAgentIconObjectUrl keeps its
signature; the still comes through the new internal useAgentIconImage.

ADR 090 amended (section 6, implementation scope, consequences); the UI
README, the design-agent-conversation-capabilities skill and the
changelog describe the behaviour. No storage key, skill name or path,
installer, SDK peer range or route change.

Tests: fixtures are the platform sanitizer's own APNG and PNG output.
Node 22: command-center-ai npm run check exit 0, npm test 54 files /
403 tests passed (node --test 15 pass), npm run build exit 0; repo
npm run check exit 0.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@MainSequenceDev
MainSequenceDev merged commit c118c92 into main Oct 16, 2026
1 check passed
@MainSequenceDev
MainSequenceDev deleted the feat/agent-icon-motion branch October 16, 2026 10:17
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