cmux-next: mark the sidebar card's Core Animation objects as reviewed motion exceptions

Merged
TE
18d ago
+16-9

c5a1f900ec ("Sidebar update card: animate coming in, going out and message changes") built the card's entrance, exit and content crossfade from raw CABasicAnimation, CASpringAnimation, CATransition and CAMediaTimingFunction. Since then scripts/cmux-next/check-motion.sh has failed with 9 hits in SidebarCardTransition.swift, which turns "cmux-next checks" red on feat-cmux-next and every PR into it. The chat-web lane reported it.

Every duration and spring in that file already comes from the injected MotionPolicy's tokens (.fadeIn, .fadeOut, .crossfade, .appear). The raw objects are there because the card's animations are presentation-only, and Motion.set writes the model value and reads the global Motion.policy. Porting the file to the Motion helpers would change those semantics and the easing curves, so that's the owner's call and needs a build to check. This PR only marks the 9 lines with the script's reviewed-exception comment, // motion-allow:, and adds the reason to the type doc. It changes comments only; the compiled code is identical.

Verification

  • bash scripts/cmux-next/check-motion.sh lists the 9 hits at the feat-cmux-next tip and prints check-motion: ok with this change.
  • bash scripts/cmux-next/tests/check-motion.test.sh: ok.
  • No build: the diff is comments only.

Changelog

none

🤖 Generated with Claude Code


View with [code]smith Autofix with [code]smith
Need help on this PR? Tag @codesmith-bot with what you need.


Summary by cubic

Fixes scripts/cmux-next/check-motion.sh failing with 9 hits by marking the sidebar card's raw Core Animation objects as reviewed motion exceptions.

  • Each hit in SidebarCardTransition.swift now carries a // motion-allow: comment, with the reason documented in the type doc.
  • The raw CABasicAnimation, CASpringAnimation, CATransition, and CAMediaTimingFunction objects stay, since Motion.set would write the model value and read the global policy; durations and springs come from the MotionPolicy tokens, while the easing curves and the spring's settle tolerance remain literal.
  • Comments only; the compiled code is identical.