Project status

Roadmap

What's coming next, what's in flight, and what's been deferred. Updated in batches as work lands.

Recently shipped

  • Tape (ticker) mode. Single horizontal line of words that scrolls left as you type. JS rAF-driven slide for smooth motion; 15-second default sprint.
  • Games depth. Word Shooter (horizontal drift) and Endless (no 3-miss cap) modes. Per-mode high scores in profile.gameStats.byMode. Visible combo multiplier (1.5x → 5x). Score-pulse animation. "New best!" overlay with personal-best chip on each round end.
  • World-class mobile toolbar. Stats row + "current mode" summary chip. Tapping opens a 62 vh bottom sheet with every mode / variant / source. No more horizontal chip strip.
  • Tap-to-type pause guard. engine.pauseTimer() itself refuses to pause within 450 ms of the last keystroke — soft-keyboard taps can't bleed onto the Pause button anymore.
  • Umami analytics + public dashboard. ~50 named events covering session lifecycle, modes, library, lessons, challenges, settings, perf, errors. The full dashboard is embedded on /analytics/.
  • Red gorilla favicon. Brand mark re-colored to brand red across every PNG size.
  • Service-worker auto-update. updateViaCache:'none' + controllerchange auto-reload — fresh builds reach users without manual cache clears.
  • Achievements dedup. Celebration panel never shows the same achievement twice; evaluate() uses a Set.
  • D3 across the stats page. WPM trend, per-finger viz, per-key sortable bars, calendar heatmap with day-detail drill-down, missed-words bar chart, recent-sessions list, character report. All lazy-loaded; legacy fallback if D3 fails.
  • Catch the Word game. Falling-word mini-game driven by your missed-words list. Per-char prefix coloring, streak multiplier, pixel-disintegration animation on catch.
  • Achievements expansion. 56 → ~120 unlocks.
  • Content expansion. Quotes 452 → 874. Idioms 449 → 717. Poems 148 → 177. Books in library reached 290.
  • Universal auto-advance. 10-second countdown after any clean run.

In flight

  • Adaptive lesson curriculum — weighted picker within each lesson's key set, not just Lesson 20.
  • Numpad layout + drills for users who want to drill the number pad explicitly.
  • EPUB / PDF import on the custom page so users can type from their own ebooks.

Planned

  • Open lessons + "save as lesson" — turn any saved custom text into a replayable lesson with its own progress tracking.
  • Live ticker — keystroke-by-keystroke pulse strip + rolling-WPM ribbon under the typing surface.
  • Lesson trends — small-multiples grid showing WPM/accuracy improvement curves per lesson.
  • Bigram chord diagram — visualize which bigrams chain into which trigrams.
  • Theme builder — pick your own background / text / accent tokens, save themes locally, export/import as JSON.
  • Additional typing fonts — Fira Code, IBM Plex Mono, Iosevka, Cascadia Code as opt-in choices.
  • More games — Word Snake, Word Boss (single long target with health bar + countdown), Punctuation Storm.
  • Power-ups in games — bonus words that grant time-freeze or screen-clear.

Deferred

  • Cloud sync of profiles. Local-first is the model; sync introduces accounts, server cost, and privacy tradeoffs that don't fit the project's posture today.
  • Multiplayer / racing. Adds substantial network + matchmaking complexity for a feature plenty of other sites already do well.
  • Built-in voice or video coaching. The typing surface is the product; layered media expands surface area without expanding the core practice loop.

Suggest an addition

Have something you want to see? Send a suggestion or open an issue on GitHub. The roadmap moves with the people who use the project.