fix(desktop): clean up animations — remove breathing lights, fix broken keyframes#2267
Conversation
…en keyframes - Fix undefined @Keyframes 'caret' → 'stream-caret' (shell running caret was broken) - Fix undefined @Keyframes 'fade' → 'fade-in' (about modal mask was broken) - Remove shimmer animation from 'Running' label and ThinkingPill text (double animation with dots) - Remove pulse-soft breathing from PendingUserMsg background - Remove yolo-pulse breathing from YOLO mode border - Unify duplicate @Keyframes shimmer-bg into shim - Remove dead keyframes: pulse-soft, yolo-pulse - Wire tab status dots to actual busy/idle state (was hardcoded to 'running')
esengine
left a comment
There was a problem hiding this comment.
Verified the core fix from the diff. The two broken animations are genuinely fixed: @keyframes caret and @keyframes fade were never defined (so the shell-running caret and the fade were silent no-ops), and this renames the references to stream-caret and fade-in which ARE defined post-change. I cross-checked every animation: declaration in the resulting styles.css (spin, stream-caret, status-pulse, fade-in) and all four resolve to a defined @keyframes — no dangling references, and the removed keyframes (caret/fade/breathe/glow/pulse) have no remaining users. The tab status-dot rewrite reads the real tab.busy field (already used before this PR), so it's wired to actual session state. Net -25 lines, CI green on build (ubuntu+windows) + CodeQL.
One honest caveat: this is a desktop visual change, so I can't pixel-verify the new status-dot rendering or confirm that removing the breathing animations looks the way you intend — but the change carries no correctness/data/security risk and is trivially reversible. If the dots or spacing look off in practice, a follow-up screenshot or revert is easy. Approving on the strength of the verified keyframe fix and the clean, real-field wiring.
Minor (non-blocking): @keyframes pulse-glow appears to remain defined but unused after this change — worth removing in a future pass if it's dead.
Summary
@keyframesreferences (caret→stream-caret,fade→fade-in)Changes
Bug fixes
@keyframes caretwas never defined → shell running caret animation was silently broken@keyframes fadewas never defined → about modal mask animation was silently brokenAnimation cleanup
data-state="running"— every tab pulsed forever regardless of state. Now wired to actualbusystate viaonBusyChangecallback fromTabRuntimeyolo-pulsebreathing animation, kept static danger borderpulse-softbreathing from the entire message bubble background@keyframes shimmer-bg(duplicate) intoshimRemoved dead code
@keyframes pulse-soft— no longer referenced@keyframes yolo-pulse— no longer referenced