Repository navigation
v0.4.1
What's Changed
- docs(changelog): record the changes shipped since 0.4.0 by @fderuiter in #1503
- fix(seo): meet 50-60 char title and 140-160 char description bounds on every route by @fderuiter in #1505
- ci: skip cancel-closed-pr-ci's no-op job so it never takes a runner by @fderuiter in #1502
- feat(study-director): desk layout, status bar and scoped design tokens by @fderuiter in #1510
- test(e2e): ignore decorative SVG opacity in the seo-and-navigation settle wait by @fderuiter in #1506
- refactor(arcade): route arcade game storage through safeStorage by @fderuiter in #1513
- refactor(core): enforce the nested Math.min/max ban and migrate clamps to clamp() by @fderuiter in #1443
- fix(clinical-chaos): open DS and MH in phase 3 and explain wrong routes by @fderuiter in #1470
- refactor(forms): send Contact and Newsletter through apiClient and show the newsletter email error by @fderuiter in #1512
- docs: replace em-dashes in authored prose by @fderuiter in #1508
- refactor(storage): move Field Manual, offline queue and telemetry cache storage onto safeStorage by @fderuiter in #1515
- refactor(services): return ServiceResult from the project image upload path by @fderuiter in #1533
- chore(deps): bump markdown-it from 14.3.0 to 14.3.2 in the npm_and_yarn group across 1 directory by @dependabot[bot] in #1534
- fix(trial-and-error): lift played cards out of the hand row at once by @fderuiter in #1527
- test(seo): add SEO and social integrity suite and DX Doctor check by @fderuiter in #1509
- refactor(clinical-chaos): route Clinical Chaos storage through safeStorage by @fderuiter in #1538
- fix(deps): patch nested brace-expansion copies for new DoS advisories by @fderuiter in #1540
- test(navigation): wait for the Navbar's deferred hash scroll in the mobile drawer test by @fderuiter in #1562
- refactor(events): add a typed app event bus and useAppEvent hook by @fderuiter in #1525
- refactor(clipboard): route blog code copy through useClipboard and re-enforce the clipboard lint rule by @fderuiter in #1566
- test(trial-and-error): add a synthetic probe for the Card Table journey by @fderuiter in #1563
- fix(clinical-chaos): honest BIMO report numbers and a solvable DOB puzzle by @fderuiter in #1572
- fix(quasi-puzzler): raise remaining low-contrast text to WCAG AA by @fderuiter in #1545
- feat(arcade): show a gameplay thumbnail on every arcade hub card by @fderuiter in #1574
- fix(quasi-puzzler): state the rw targeting rule before the tap and align rewrite level copy by @fderuiter in #1568
- feat(proof): collapse the theorem catalog on mobile so the canvas stays in reach by @fderuiter in #1558
- feat(study-director): study-health radar, phase timeline, team portraits and site cards by @fderuiter in #1541
- refactor(forms): validate contact, newsletter, feedback and blog forms with the route Zod schemas by @fderuiter in #1569
- test(trial-and-error): aim the drag-reorder e2e at the middle of its drop window by @fderuiter in #1573
- fix(arcade): stop Duck's urgent-state deadlock and correct control labels by @fderuiter in #1570
- refactor(ui): move CRT calibration and Patrol code dialogs onto ModalContainer by @fderuiter in #1536
- refactor(animation): add useAnimationFrame and run the Patrol loops on it by @fderuiter in #1579
- chore(deps): upgrade dependency-cruiser 18, concurrently 10 and dotenv 18 by @fderuiter in #1511
- refactor(meme-vault): route Meme Vault events through the typed event bus by @fderuiter in #1583
- fix(arcade): free the hub Field Manual, fix Retro Chaos copy, clear Garmin crash ghost by @fderuiter in #1577
- feat(trial-and-error): add sponsor and stake modifiers to the domain by @fderuiter in #1582
- refactor(command-palette): bind Cmd/Ctrl+K through useHotkeys by @fderuiter in #1581
- ci(mutation): ratchet stryker break threshold from 65 to 75 by @fderuiter in #1544
- refactor(logging): route the last console calls through the logger and widen no-console to lib and hooks by @fderuiter in #1531
- feat(arcade): show the game on the cabinet attract screen and give each game its own accent by @fderuiter in #1588
- fix(arcade): Laser Loon pause confirmation and Retro Labyrinth retry scoring by @fderuiter in #1575
- chore(deps): retire four obsolete package overrides by @fderuiter in #1594
- refactor(neuro): run the Brain3DViewer render loop on useAnimationFrame by @fderuiter in #1595
- refactor(neuro): move NeuroRecon onto the shared toast, hash-param, hotkey and clamp primitives by @fderuiter in #1590
- feat(trial-and-error): seeded runs, challenge links and the Daily Protocol by @fderuiter in #1559
- feat(study-director): present messages and decisions as a real inbox by @fderuiter in #1593
- test(trial-and-error): cover #925's presentation-hardening checks by @fderuiter in #1600
- refactor(services): finish the ServiceResult migration for maintenance services and media storage by @fderuiter in #1584
- chore(deps): upgrade TypeScript to 6.0.3 by @fderuiter in #1602
- docs(changelog): record the changes merged since the 2026-09-29 release by @fderuiter in #1605
- feat(study-director): show consequences and mark the passing of days by @fderuiter in #1606
- fix(chrome): settle the status pings and pulses instead of looping forever by @fderuiter in #1607
- feat(laser-loon): draw a real loon, shape-coded enemies and per-act parallax backdrops by @fderuiter in #1604
- refactor(clinical-chaos): run the component and engine on one set of shift rules by @fderuiter in #1608
- feat(simulator): reframe /simulator as an Architectural Archetype evaluation by @fderuiter in #1612
- feat(study-director): briefing dossier and closeout report redesign by @fderuiter in #1615
- feat(trial-and-error): add Codex and run history by @fderuiter in #1613
- fix(a11y): restore focus to the original trigger when a handed-off dialog closes by @fderuiter in #1618
- fix(clinical-chaos): count the final CRF in the phase report and unfreeze the auditor after a break by @fderuiter in #1620
- feat(study-director): keyboard shortcut sheet and keyboard-only play by @fderuiter in #1621
- fix(content): point stale simulator, CRF and brain-viewer links at the right pages and retire simulator_schedule_click by @fderuiter in #1622
- feat(laser-loon): slim HUD strip, full-bleed stage and a docked boss plate with hit feedback by @fderuiter in #1623
- fix(proof): release the terminal's Tab trap and move the workspace onto shared toast, hash and hotkey helpers by @fderuiter in #1619
- feat(study-director): living office illustration that falls apart as the study does by @fderuiter in #1625
- feat(trial-and-error): pick sponsor and stake in new run by @fderuiter in #1626
- chore(deps): align eslint-config-next with next 16.3.6 by @fderuiter in #1630
- refactor(arcade): move game loops onto useAnimationFrame and Duck keys onto useHotkeys by @fderuiter in #1627
- feat(study-director): career file, visible saving and a shareable closeout card by @fderuiter in #1634
- refactor: move the last clipboard and localStorage calls in CRF, Laser Loon, Garmin and Trial & Error onto the shared helpers by @fderuiter in #1633
- feat(laser-loon): newsprint act cards and a shared ResultCard for stage clear and game over by @fderuiter in #1629
- feat(study-director): fun pass with callbacks, wildcards, difficulty and a daily headline by @fderuiter in #1637
- chore(lint): ban direct Web Storage access outside lib/safe-storage by @fderuiter in #1640
- fix(arcade): expire Labyrinth side effects on one clock and read current rooms and subjects by @fderuiter in #1638
- fix(a11y): bound the polite announcer queue so the latest state is heard promptly by @fderuiter in #1642
- fix(layout): wrap navbar, cabinet and footer rows at 200% text on narrow phones by @fderuiter in #1644
- fix(garmin-watch): keep fog wipes out of swipes and return Enter to the watch by @fderuiter in #1654
- fix(arcade): show the Labyrinth hover tile in the TSP room and let Clinical Chaos timer bars glide by @fderuiter in #1656
- test(trial-and-error): cover #925 release-hardening gaps by @fderuiter in #1653
- fix(working-with-duck): freeze play while paused, show the score, and match tips to each location by @fderuiter in #1660
- fix(layout): switch to the compact navbar when the desktop links don't fit at larger text sizes by @fderuiter in #1661
- docs(changelog): record the changes merged since the last changelog refresh by @fderuiter in #1663
- fix(arcade): resume Quasi level, enforce 0 GB rule for sorry, and point vault hints to the terminal by @fderuiter in #1664
- test(canvas): add drawImage and other 2D methods to the pointer-events mock by @fderuiter in #1657
- test(a11y): wait for the /simulator step card to finish fading in before axe scans it by @fderuiter in #1679
- fix(layout): keep the desktop navbar on one row at 1536px and wider by @fderuiter in #1666
- feat(working-with-duck): illustrated home office and a posed Duck sprite by @fderuiter in #1680
- fix(og): trace og-fonts assets and fall back when fonts cannot load by @fderuiter in #1681
Full Changelog: v0.4.0...v0.4.1