Skip to content
kandown
GitHubnpm
98 releases

Changelog

2026-07-24

v0.34.2Motion Polish

  • Fixed: 0.5s pop on card hover, click, and rearrangeCard, Column, and CardStack were animating through Framer Motion springs (whileHover={{ y: -1 }}, whileTap={{ scale: 0.99 }} with stiffness 500) AND Tailwind transition-all duration-150 at the same time, on the same transform property. The result was the half-second scale snap the user reported on every interaction. Replaced with a hybrid system:
    • src/lib/motion-presets.ts defines a single source of truth (EASE_OUT, EASE_SPRING, MOTION.fade / toast / progressBar / heroStagger / headerCrossfade / panel / rotate / chip) for every motion.* and AnimatePresence in the project.
    • Card, Column, CardStack (collapsed + expanded), Board wrapper, and ListView sections are now plain <div> / <section>. Drag is HTML5-native, so layout animation 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-75 with transition-[border-color,box-shadow,transform] duration-200 ease-out. CSS, no overshoot, no animation on all.
    • Motion is reserved for what actually needs an enter/exit curve: Toaster, EmptyState hero, Header boot cross-fade, SubtaskEditor progress bar (no more spring on width — it jittered), SubtaskItem panel expand/collapse + chevron rotate, and Header filter chips. Every site uses the corresponding MOTION.* token.