Changelog
What has changed across the atlas, newest first. Visiting this page clears the ‘What’s new’ badge in the sidebar.
⌘K search, quiz expansion to 53 questions, deploy workflow, narration scaffold.
- Site-wide ⌘K / Ctrl-K overlay searching modules, glossary, cases, and quiz questions with prefix-rank scoring.
- Quiz bank expanded from 24 to 53 questions; new Ménière's and BPPV topic categories.
- GitHub Actions workflow .github/workflows/deploy.yml — verify (tests + typecheck + lint) → build → deploy to GitHub Pages on push to main.
- Audio narration scaffold on /introduction and /technique with HEAD-probe fallback to transcript-only when no MP3 is hosted.
Ménière's disease and BPPV disease modules added.
- Wires up the previously-orphan archetypes in the trainer and DDx builder.
- Cites the Bárány Society 2015 criteria for both: Lopez-Escamez 2015 (Ménière's), von Brevern 2015 (BPPV).
- Modules appear in the sidebar disease group, the home-page grid, and the print-all compilation.
Changelog route added with unseen-dot badge in the sidebar.
- ISO-dated entries, tagged feature / content / fix / perf / chore.
- Visiting /changelog marks all entries as seen.
- Badge re-appears whenever a new entry is added with a later date.
Final tools pass — /print-all, /library, /ddx, /flashcards.
- Print-all concatenates all 8 modules with print-CSS page-break rules.
- Library aggregates locally-saved bookmarks grouped by source.
- DDx builder reuses classifyHints; ranks 9 archetypes by fit.
- Flashcards auto-generated from the 62 glossary terms, separate Leitner deck.
Glossary with 62 terms, cross-links, and per-term bookmarks.
- Search ranks prefix matches above substring matches.
- Every seeAlso and reference id Vitest-verified to resolve.
- Bookmarks surface on the progress dashboard via :target highlight.
Progress dashboard composing every persisted store.
- Top metric strip: chapters visited, time on atlas, quiz answered, cases done.
- Page-visibility-aware chapter visit tracking with 250ms minimum.
- Per-deck pip displays for Leitner and Streak schedulers.
- Confirmation-gated full reset that preserves theme + reader-level.
Self-assessment quiz with Browse / Spaced review / Timed modes.
- 24 single-best-answer questions tagged by level and topic.
- Leitner 5-box scheduler with 10 min / 1 d / 3 d / 7 d / 21 d intervals.
- 3-in-a-row streak scheduler with miss-reset.
- Timed mode: 10 random questions in 5 min, answers hidden until finish.
Comparison tool with side-by-side panels and live discriminators.
- Two-dropdown picker over 9 archetypes + a normal reference.
- Key-discriminators card computed from preset metadata, not prose templates.
Pattern recognition trainer — infinite cases against 9 archetypes.
- Mulberry32 deterministic PRNG; ~15% distractor finding probability.
- Per-finding grading (correct / missed / over-called) with stat accumulation.
Eight hand-authored clinical cases at /cases.
- Each case: vignette, HINTS findings, SBA with per-option rationale, teaching point.
- Per-case completion tracked in localStorage.
- generateStaticParams for full prerendering.
Eleven peer-reviewed references with stable kebab-case ids.
- Inline <Cite> markers across all modules and disease pages.
- References page with anchors; every cite Vitest-verified to resolve.
Five interactive simulators and diagrams.
- HeadImpulseSimulator with VOR-gain sliders and live trace.
- NystagmusVisualiser, SkewAnimation, LabyrinthDiagram, ReflexArcDiagram.
Nine module routes with full teaching prose.
- Introduction, Anatomy, Technique, Normal, Tools, plus 4 disease pages.
- Three-level reader filtering: Foundation / Trainee / Clinician.
Project scaffold.
- Next 16.2.6, React 19.2.4, TypeScript strict + noUncheckedIndexedAccess.
- Static export, App Router only, SSR-safe localStorage via useSyncExternalStore.
- Pre-hydration theme bootstrap; warm-paper / warm-ink palettes.