Rewrite HexHead system with framer-motion physics

Featurekamo-internal
Shipped
March 11, 2026 at 6:20 PM UTC
Author
kamo
Commit
3516820

Replace the broken 1800-line HexHeadGroup with a clean physics-based implementation using framer-motion springs and motion values. Key changes: - Remove wiggle/fidget swarm detection (too sensitive, unreliable) → Replaced with deliberate 500ms hold-to-swarm gesture - Remove complex collision resolution, spiral fallback, resolveOverlaps, **************** and all multi-pass overlap logic - Remove layoutMode state and makeRoom nudge system - Instant snap-to-slot on release near any head (flat-top hex geometry, nearest free axial slot, stiffness 800 spring = feels instant but alive) - Groups drive followers via RAF loop calling animate() with organic spring (stiffness 400) — loose, trailing group feel during anchor drag - Chat window docking via separate dock RAF loop watching window bounding rect — group follows window edge when it moves - Home row auto-arrangement (spring fly-in) for all free heads - New HexHeadSpring.tsx: thin motion wrapper with isSnapping pulse animation and isHoldReady ring-pulse animation - HexHead.tsx: unchanged - Zero new dependencies (framer-motion already installed at v12) - Fixes TS1128 build errors in old implementation

All changes

Like what you see shipping?

Every one of these updates lands in your workspace automatically. Start free and watch it grow week after week.

Start Free ForeverView Pricing