cmux-next: nothing flashes faster than twice a second (cx-sya4n)

Merged
TE
20d ago
+122-16

In cmux NEXT, nothing flashes faster than twice a second now, in any mode (cx-sya4n: blinking lights give a teammate headaches). Before, the pane attention ring's blinks peaked 0.3 s apart, the flash verb's 0.24 s apart, and Debug Settings could push any loop period down to 0.1 s.

  • MotionLoop.minimumPeriod floors every loop period, Debug Settings overrides included: pulse at least 0.5 s and flash at least 1.0 s (two blinks per period). The spinner keeps its 0.1 s floor, since it turns and doesn't flash.
  • The flash default goes from 0.6 s to 1.0 s, and the flash verb's keyframes are [0, 1, 0, 1, 0], so its two blinks peak half a period apart.
  • plans/cmux-next/motion.md and the spec docs (design-tokens.json, design-tokens.md, components/panes.md) list the new periods and the cap. normal speed slows the flash and the attention blinks; the pulse keeps its period at every speed.

The PR touches 8 files: three Motion sources, one test and four docs.

This is the first slice carved from #20511. That PR's Static status setting and Reduce Motion loop stops follow in later slices.

Testing

  • BlinkRateCapTests (CmuxNextDesignTests) sets every loop tunable to 0 and the speed to fast. It then checks that each flash (the flash verb, the status pulse, and the attention pulse and blink for every look and blink count) has no on-off-on cycle shorter than 0.5 s. The test is committed before the fix (bffd965e52a). It's red there by arithmetic (blinks 0.3 s and 0.24 s apart) and green on ffd3da8a2b4 (head 4ecaf768591 adds docs only). Neither result has run yet: this host is Linux, so the macOS CI lane for this PR is the first run.
  • Locally on Linux: scripts/cmux-next/check-motion.sh passes on 4ecaf768591, and scripts/ci/lint-swift-post-edit.sh is clean on the changed Swift files. verify-local.py --affected origin/feat-cmux-next passed feature-flags and backend-migrations. project, test-wiring and package-groups failed because this sparse checkout has no Xcode project or workspace files, and launch-policy flagged a generated agent-chat file this diff doesn't touch.

Changelog

Changed: in cmux NEXT, nothing blinks faster than twice a second; the pane attention flash takes 1 s.

🤖 Generated with Claude Code