Changelog
2026-07-24v0.34.2— Motion Polish
- Fixed: 0.5s pop on card hover, click, and rearrange —
Card,Column, andCardStackwere animating through Framer Motion springs (whileHover={{ y: -1 }},whileTap={{ scale: 0.99 }}with stiffness 500) AND Tailwindtransition-all duration-150at the same time, on the sametransformproperty. The result was the half-second scale snap the user reported on every interaction. Replaced with a hybrid system:src/lib/motion-presets.tsdefines a single source of truth (EASE_OUT,EASE_SPRING,MOTION.fade / toast / progressBar / heroStagger / headerCrossfade / panel / rotate / chip) for everymotion.*andAnimatePresencein the project.Card,Column,CardStack(collapsed + expanded),Boardwrapper, andListViewsections are now plain<div>/<section>. Drag is HTML5-native, solayoutanimation was unused and the spring was just overhead.- Hover/active feedback is now Tailwind only:
hover:-translate-y-px active:scale-[0.99] active:duration-75withtransition-[border-color,box-shadow,transform] duration-200 ease-out. CSS, no overshoot, no animation onall. - Motion is reserved for what actually needs an enter/exit curve:
Toaster,EmptyStatehero,Headerboot cross-fade,SubtaskEditorprogress bar (no more spring onwidth— it jittered),SubtaskItempanel expand/collapse + chevron rotate, andHeaderfilter chips. Every site uses the correspondingMOTION.*token.