Changelog

What we've shipped

A running log of every meaningful change to FlexFingers.

  1. Week 5 · 2026-04-27

    Improve mode, multi-provider auth, diagnostic engine

    • New /improve route surfaces the keys, bigrams, and fingers actually slowing you down — not just a global accuracy %
    • Engine now records per-bigram (key-pair) latencies, persisted to a new session_bigram_stats table
    • Bug fix: practice sessions now save (session_type was rejected by the DB CHECK constraint)
    • Bug fix: per-character stats are now actually written to session_key_stats — adaptive drills finally have data to feed on
    • Sign in with Google or GitHub OAuth, or get a one-time email link — no more GitHub-only login
    • QWERTY / Dvorak / Colemak finger maps so the per-finger heatmap matches the layout you actually use
  2. Week 4 · 2026-04-22

    E2E tests, CI, docs, analytics

    • Playwright e2e suite (warmup-anon real, auth/session/RLS scaffolded behind env flags)
    • GitHub Actions CI: typecheck, lint, vitest on every PR (Playwright deferred to manual)
    • @vercel/analytics + posthog-js wired up behind a consent gate; warmup_started, warmup_completed, drill_started, insight_viewed events
    • README rewrite with architecture diagram, env setup, migration flow, and testing notes
    • Public /changelog so the case study has a running log
  3. Week 3 · 2026-04-21

    Landing, settings, onboarding, accessibility

    • Marketing landing with live demo, feature grid, how-it-works, footer
    • Onboarding card on first warmup; settings page for theme + preferred context
    • axe-core + keyboard-nav e2e against /, /warmup, /warmup/summary, /privacy
    • OG image route for shareable session summaries
  4. Week 2 · 2026-04-14

    Readiness scoring + adaptive drills

    • Per-context baselines (rolling mean + stdev) refreshed by an edge function
    • Readiness score from your last session vs. baseline (z-score, 0-100)
    • Adaptive drill picker that targets the keys/contexts you've struggled with
    • Streaks, session history, and the insights view
  5. Week 1 · 2026-04-07

    Typing engine + warmup MVP

    • Headless TypingEngine + zero-rerender TypingSurface (refs + rAF, 10Hz LiveStats)
    • Seeded per-context word/snippet packs (general, code-js, code-py, prose, markdown)
    • /warmup route with URL-driven context + duration; summary screen with WPM, accuracy, consistency
    • Supabase schema: profiles, sessions, baselines, drills, streaks + RLS policies