Principle
A quiescent Odysseus should generate ~zero frames. Today several ambient decorative animations run perpetually to look 'alive', each keeping the compositor awake and preventing idle quiescence. Cheap on a healthy GPU, but: (a) real battery/power cost on laptops/tablets, (b) catastrophic when rendering falls back to software (see the llvmpipe incident — a handful of these summed into a 12-core freeze), (c) against our 'never waste CPU/GPU frivolously' rule.
Known instances (the class, not just one bug)
The rule to adopt
Ambient/decorative animations must pause when not needed: window blurred / page hidden (visibilitychange), panel unfocused or off-screen, or prefers-reduced-motion. Prefer compositor-only properties; never animate paint-inducing properties over large areas perpetually. New animations should default to quiescent-when-idle.
Tracking
This issue owns the class. Instance fixes: #115 (orbit), notes quick-add (in progress). Pairs with #116 (graceful degradation = the safety net; this = the prevention).
Principle
A quiescent Odysseus should generate ~zero frames. Today several ambient decorative animations run perpetually to look 'alive', each keeping the compositor awake and preventing idle quiescence. Cheap on a healthy GPU, but: (a) real battery/power cost on laptops/tablets, (b) catastrophic when rendering falls back to software (see the llvmpipe incident — a handful of these summed into a 12-core freeze), (c) against our 'never waste CPU/GPU frivolously' rule.
Known instances (the class, not just one bug)
notes-quick-pulse(2.8s infinite opacity pulse) andnotes-quick-caret(1s steps(2) infinite fake caret),static/style.css:32174/32222; pause only on hover/focus-within, otherwise run forever while visible.docs/fork/perf-audit-2026-06.md: C3 (infinite CSS animations off-screen), D1 (modalManager 1s scan), D2 (always-on polls).The rule to adopt
Ambient/decorative animations must pause when not needed: window blurred / page hidden (
visibilitychange), panel unfocused or off-screen, orprefers-reduced-motion. Prefer compositor-only properties; never animate paint-inducing properties over large areas perpetually. New animations should default to quiescent-when-idle.Tracking
This issue owns the class. Instance fixes: #115 (orbit), notes quick-add (in progress). Pairs with #116 (graceful degradation = the safety net; this = the prevention).