v3.1.0 — Animation pass + landing redesign
What's new
A UI/UX polish pass across both web surfaces — purposeful animations guided by Emil Kowalski's design engineering principles, a fully redesigned landing page, and a refreshed dashboard screenshot. No protocol, API, or config changes.
Dashboard
- Staggered card entrance via Vue
<TransitionGroup>— cards fade + slide up with a per-card--idelay (capped at 8 so a full page doesn't drag) - Smooth accordion player —
grid-template-rows: 0fr↔1frso the expanded player animates to its real height with nomax-heightjump - Correct easing —
--ease-out: cubic-bezier(0.23,1,0.32,1)for entrances,--ease-drawer: cubic-bezier(0.32,0.72,0,1)for the accordion; no spring/bounce on functional UI - 8px corner radius on search box, sort toggle, cards panel, play button, skip controls
- Gentle reduced-motion — keeps opacity fades, drops all movement (slide, accordion height, press scale)
Landing page
- De-boxed layout — structure with whitespace + h2 hairlines; only the screenshot frame and terminal features block stay framed
- Story-grounded hero — "Read it back to me." with copy pulled from the project origin, not generic SaaS taglines
- Terminal features listing —
readback --featuresfaux shell block replaces the old grid - Trimmed to hook-and-redirect — four sections cut (flow diagram, quick-start, timeline, architecture stack) → single Dive-in band with GitHub links
- rAF stepper replacing
setInterval— drives the screenshot crossfade progress bar (transform: scaleX) without timer drift - Mobile fix — waveform player stacks to two rows on ≤600px (was overflowing at 375px)
Other
- Refreshed dashboard screenshot (1500×968, 1.550:1 — fills the demo frame edge-to-edge)
- All four version anchors bumped:
pyproject.toml,src/readback/__init__.py,src/cli/package.json,src/dashboard/package.json
Upgrading
Pull and rebuild the dashboard + CLI binary:
git pull
cd src/dashboard && bun run build && cd ../.. # rebuild dashboard dist/
cd src/cli && ./install.sh && cd ../.. # rebuild CLI binary (banner shows v3.1.0)Server restart picks up the new dashboard automatically.