Repository navigation
Releases: fderuiter/deruiter.dev
Releases · fderuiter/deruiter.dev
Release list
v1.1.0 (2026-10-28)
Features
- feat(study-workspace): study command line for import, info and export (#3125)
- feat(crf): open plain USDM studies with form items from their concepts (#3122)
- feat(study-data): report the DEMO-301 win ratio as ARS analyses and Table 14.2.3 (#3121)
- feat(study-workspace): randomised TAVR versus SAVR reference study for the win ratio (#3120)
- feat(study-workspace): the TAVR device reference study as USDM (#3118)
- feat(clinical): standards conformance matrix at /clinical/standards (#3116)
- feat(study-data): add ADaM for the DEMO-301 hierarchical composite (#3110)
- feat(crf): bind forms to a visit through one operation in studio and CLI (#3114)
- feat(standards): add registry fields to the standards bill of materials (#3106)
- feat(study-workspace): import a USDM study into a workspace without guessing (#3107)
- feat(study-data): win statistics engine for hierarchical composite endpoints (#3100)
- feat(clinical-standards): one USDM hand-off envelope for every clinical tool (#3098)
- feat(standards): standards bill of materials and a weekly standards watch (#3094)
- feat(deploy): on-demand isolated Preview deployments (ADR 0071) (#3082)
- feat(crf): carry protocol content in CRF Studio's USDM export (#3069)
- feat(ops): weekly encrypted backup of the production database (#3048)
- feat(study-data): show CDISC CORE's recorded findings on the conformance stage (#3058)
- feat(crf): one form catalog behind one "Add form" surface (#3054)
- feat(crf): group the studio's modes into Design, Schedule and Verify stages (#3047)
Fixes
- fix(build): pin the build heap cap and turn off Sentry source maps (#3128)
- fix(build): turn on webpack memory optimizations for the 8 GB build machine (#3124)
- fix(ci): fail the CDISC Library sync when the Library read fails (#3113)
- fix(clinical-standards): never read the first USDM study version silently (#3111)
- fix(crf): stop the CLI swapping a missing or broken study file for a preset (#3105)
- fix(study-data): run the CORE workflow on lib/clinical-standards changes (#3103)
- fix(crf): clear nine CDISC CORE findings on the CRF Studio USDM export (#3061)
- fix(crf): run CDISC CORE's USDM rules on every CRF Studio export (#3055)
- fix(cdisc): check every NCI code against the pinned EVS release (#3050)
- fix(db): let the running site connect as a least-privilege role (#3046)
- fix(study-data): write the ARS reporting event as valid ARS 1.0 (#3045)
- fix(crf): make CRF Studio's ODM export valid ODM 1.3.2 and gate it on the XSD (#3039)
Performance
- perf(nav): prefetch links on hover, focus or touch instead of on scroll (#3089)
- perf(pwa): precache only the offline shell, not the whole site (#3081)
Other changes
- docs(readme): show TypeScript 7 in the badge, stack and commands (#3117)
- build(typescript): type-check with the TypeScript 7 compiler (#3115)
- ci(study-data): weekly CDISC Library sync of ADaM metadata (#3108)
- docs(blog): series post 1, one metric, one definition, every tool (#3099)
- docs(readme): add a banner, screenshots, an arcade gallery and diagrams (#3070)
- docs(blog): three posts on the release train, schema-checked exports and the AWS warehouse (#3063)
- refactor(crf): give lib/crf the deep-module shape of lib/study-data (#3060)
- refactor(clinical-standards): share standards and terminology through one module (#3057)
- docs(neon): refresh the capacity inventory from the 2026-10-27 audit (#3049)
- docs(agents): add our own humanizer writing skill (#3042)
- docs(release): accept ADR 0063 and supersede ADR 0051 (#3040)
- docs(readme): rewrite the README for v1.0.0 (#3038)
- docs(blog): Oct 27 post, a conformance engine checks the standard, not the study (#3035)
Commit: 9b9f85514fbdba56b528310023d03d36d95da796
Full changelog: v1.0.0...v1.1.0
v1.0.0 (2026-10-27)
Features
- feat(study-data): ADaM ADCM with prior, on-treatment and rescue flags (#3029)
- feat(study-data): run CDISC CORE over every scenario and commit its findings (#3024)
- feat(study-data): SDTM IE for screen failures, keyed to TI (#3028)
- feat(arcade): guided tutorial system, starting with Laser Loon (#3016)
- feat(platform): load the gold layer into Aurora DSQL from a manual workflow (#3013)
- feat(study-data): tabulate medical history as SDTM MH (#3015)
- feat(platform): vital signs feed and two central monitoring tests on them (#3008)
- feat(platform): plan the Aurora DSQL load and parity fingerprints for the gold layer (#3004)
- feat(clinical): link the pipeline back to CRF Studio and the dashboards to each other (#3001)
- feat(infra): add the GitHub OIDC role stack for the always-free AWS data stores (#2995)
- feat(platform): adverse event feed and an AE under-reporting test (#2993)
- feat(nav): build every breadcrumb trail from the navigation (#2978)
- feat(study-data): tabulate prior and concomitant medications as SDTM CM (#2986)
- feat(platform): data quality scorecard on /platform/governance (#2983)
- feat(platform): entry hour in visit facts and a time-of-day entry test (#2965)
- feat(nav): regroup the site into Clinical, Labs, Arcade, Writing and About (#2954)
- feat(study-data): add ECG scenarios for a QTcF outlier and a missing RR (#2959)
- feat(arcade): Retro Labyrinth takes the dominant hand from the device settings (#2960)
- feat(platform): data catalog, glossary and stewardship at /platform/governance (#2953)
- feat(study-data): analyse ECGs in ADEG with a Fridericia QTcF (#2951)
- feat(platform): in-browser sql workbench at /platform/sql (#2633) (#2950)
- feat(arcade): wire the device settings into views, docks and haptics (#2949)
- feat(study-data): tabulate the collected ECGs as SDTM EG (#2948)
- feat(retro-labyrinth): phone action cluster with a More sheet (#2947)
- feat(platform): self-service metrics explorer at /platform/explore (#2634) (#2945)
- feat(study-data): collect 12-lead ECG intervals for DEMO-301 (#2946)
- feat(study-data): check every ARS result resolves to rows that reproduce it (#2940)
- feat(platform): portfolio risk heatmap with stated rules (#2914) (#2939)
- feat(arcade): one cabinet Setup sheet for the device settings (#2938)
- feat(study-data): check Define-XML parity with the datasets before export (#2937)
- feat(study-data): fail conformance when a record does not trace to its source (#2936)
- feat(platform): enrollment forecast with a what-if on the portfolio page (#2913) (#2935)
- feat(retro-labyrinth): phone landscape stage with a one-row HUD (#2934)
- feat(platform): budget and forecast at completion on the portfolio page (#2925)
- feat(arcade): one device-settings record for every cabinet (#2926)
- feat(retro-labyrinth): give the phone its own PhoneView (#2921)
- feat(platform): portfolio dashboard with milestone swimlane and cycle-time benchmarks (#2911) (#2920)
- feat(platform): event adjudication backlog on operations (#2881) (#2910)
- feat(retro-labyrinth): lay a portrait iPad out under the maze (#2909)
- feat(platform): site activation funnel on operations (#2880) (#2905)
- feat(platform): screen failures by reason on operations (#2879) (#2892)
- feat(retro-labyrinth): frame the maze with two columns on a landscape tablet (#2883)
- feat(platform): deviation, queried form and query age breakdowns on operations (#2759) (#2878)
- feat(dx): scaffold a three-view arcade game with its session and views (#2876)
- feat(platform): risk tab on the operations dashboard (#2875)
- feat(retro-labyrinth): give the tablet its own view (#2872)
- feat(study-data): inject an issue on /study-data and show where the gate caught it (#2865)
- feat(retro-labyrinth): grow the maze in whole steps on 1920 and 2560 screens (#2858)
- feat(site): place Clinical Trial Chaos beside the journey, as a game (#2855)
- feat(dx): flag stale status:in-progress claims in the tracker report (#2854)
- feat(study-data): derive DTHFL and DTHDTC in DM and DTHDT in ADSL (#2825)
- feat(dx): report epic checklist drift and in-progress claims (#2836)
- feat(arcade): field manual as a bottom sheet on phones (#2819)
- feat(release): flag destructive migrations in a release range (#2818)
- feat(api): GET /api/version reports the live deployment's commit SHA (#2817)
- feat(clinical): one clinical data journey from CRF to portfolio (#2814)
- feat(arcade): one question per screen in the setup wizard on phones (#2812)
- feat(arcade): full-screen ResultCard on phones with thumb-zone actions, share and a stats disclosure (#2809)
- feat(platform): data catalog, business glossary and stewardship model (#2638 part 1) (#2800)
- feat(study-data): seven more messy-data scenarios, unit standardization (#2798)
- feat(platform): self-service explorer model over the semantic layer (#2634 part 1) (#2788)
- feat(arcade): drive the phone gate, hub badges and phone order from the registry (#2785)
- feat(platform): data quality rules, scorecards and issue log (#2636 part 1) (#2782)
- feat(platform): SQL workbench query library, schema browser and read-only guard (#2633 part 1) (#2786)
- feat(platform): column-level lineage, impact analysis and OpenLineage events (#2637 part 1) (#2783)
- feat(study-data): show reviewer guides on the page, add the case study and attributions (#2781)
- feat(platform): seeded enrollment forecast engine (#2779)
- feat(study-data): messy-data scenario library with expected findings (#2784)
- feat(platform): risk-based quality management engine (#2778)
- feat(platform): monitoring plans in gold, and certified overdue monitoring metrics (#2772)
- feat(study-data): generate cSDRG-lite and ADRG-lite reviewer guides from each run (#2771)
- feat(platform): operations dashboards from portfolio to site (#2767)
- feat(arcade): add the shared run-fairness contract (RunTags) (#2766)
- feat(study-data): run the pipeline on a study exported from CRF Studio (#2765)
- feat(arcade): add touch-control dock presets on the action layer (#2761)
- feat(platform): data products with versioned data contracts and ODCS export (#2758)
- feat(study-data): prepare CRF Studio USDM exports for a pipeline run (#2756)
- feat(arcade): add the phone UI patterns (sheet, HUD, coach marks, tap tips) (#2755)
- feat(duck): add trick-or-treaters, a costume trophy and an October card (#2751)
- feat(platform): reporting framework with certified tiers and a report catalog (#2750)
- feat(study-data): add /study-data page with in-browser pipeline and lineage explorer (#2742)
- feat(duck): add a Halloween mode with a duck costume for Duck (#2739)
- feat(platform): add governed metric registry compiled to SQL, MetricFlow and TMDL (#2735)
- feat(study-data): add Kaplan-Meier figure with Greenwood CI and log-rank test (#2728)
- feat(study-data): add Define-XML 2.1 for SDTM and ADaM from the pipeline specs (#2726)
- feat(study-data): ARS-linked demographics, TEAE and change-from-baseline tables (#2725)
- feat(study-data): Dataset-JSON, CSV and XPT exports in a hashed package (#2718)
- feat(platform): seeded synthetic portfolio with DEMO-301 from the pipeline (#2713)
- feat(study-data): derive ADAE and ADTTE with event and censoring boundaries (#2704)
- feat(study-data): derive ADSL, ADVS and ADLB with SDTM traceability (#2702)
- feat(study-data): gate SDTM and ADaM with versioned conformance rules (#2701)
- feat(study-data): derive traceable DEMO-301 SDTM subject domains (#2700)
- feat(study-data): derive DEMO-301 trial design domains (#2699)
- feat(study-data): generate seeded DEMO-301 collected subjects (#2698)
- feat(study-data): USDM v4 adapter and DEMO-301 definition (#2697)
- feat(platform): add strategy decision toolkit (#2696)
- feat(platform): add clinical data platform hub (#2688)
- feat(arcade): phone Back walks the cabinet's Escape ladder through one history entry (#2656)
- feat(arcade): shared useGesture and usePickPlace hooks, with pick-and-place in the Protocol Drift toolbox (#2597)
- feat(arcade): seeded session RNG, fixed step and RNG state in the run snapshot (#2655)
- feat(trial-and-error): vary the first-Blind opener by seed (#2653)
- feat(arcade): add the arcade progress store with core and Daily slices (#2649)
- feat(arcade): one cabinet pause service with a versioned run snapshot (#2581)
- feat(arcade): host a game's desktop, tablet and phone views in the cabinet (#2572)
- feat(quasi-puzzler): download proofs as .lean, export a step log, save custom Sandbox theorems (#2560)
- feat(arcade): add one input action layer and move Duck onto it (#2566)
- feat(patty-drive-thru): add a Custom shift with tunable dials and a hand-built order queue (#2525)
- feat(arcade): classify the viewport as phone, tablet or desktop (#2527)
- feat(arcade): add one registry for every arcade game and its view readiness (#2522)
- feat: make card surfaces opaque and drop their backdrop blur (#2320)
- feat: add a named type scale and move route headings onto it (#2322)
- feat(retro-labyrinth): polish list from the 10/10 audit (#2319)
- feat: make amber the single interactive accent in site chrome (#2318)
- feat: unify site grays on one graphite ramp (#2317)
- feat(study-director): say how long a quiet site has gone unvisited (#2316)
- feat(retro-labyrinth): sweeping drones in the middle rooms (#2300)
- feat(protocol-drift): let the seed place the study's puzzle beats (#2297)
- feat(retro-labyrinth): trophies for real moments in a run (#2272)
- feat(protocol-drift): vary each study by seed so the Daily plays differently (#2265)
- feat(working-with-duck): give sprints 2 to 5 a signature twist each (#2258)
- feat(protocol-drift): skip to the next event, readable chip names and a way back (#2257)
- feat(retro-labyrinth): give the Neural Warden its own fight (#2256)
- feat(laser-loon): give each of the four bosses its own attack pattern (#2250)
- feat(protocol-drift): mark reference-loaded runs as assisted and waive design par (#2243)
- feat(las...
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 ...
v0.4.0
What's Changed
- docs: correct stale release-workflow claims found in a post-merge audit by @fderuiter in #735
- fix(deps): pin jsdom to 26.1.0 to fix ERR_REQUIRE_ESM production 500s by @fderuiter in #741
- feat(a11y): implement dyslexia-first typography, pretext calibration and speed insights (#722, #738, #739, #740) by @fderuiter in #743
- Install and configure Vercel Speed Insights by @vercel[bot] in #742
- fix(a11y): resolve CRF Studio's remaining structural WCAG violations (#727) by @fderuiter in #745
- feat(crf): implement form removal preview, duplication, positional insertion and draft protection (#668, #667, #669, #666) by @fderuiter in #746
- feat(crf): dependency web sentinel and calculated field derivations (#542, #671) by @fderuiter in #768
- feat(crf): insert starter clinical smart blocks with slash commands (#538) by @fderuiter in #772
- fix(arcade): fix dead isSupported check and label the mobile fullscreen fallback by @fderuiter in #773
- feat(crf): save named baselines and restore into a new draft (#672) by @fderuiter in #774
- docs(blog): define blog product strategy, editorial scope, and content architecture ADR by @fderuiter in #771
- fix(crf): insert new fields into the section the author actually targeted (#669) by @fderuiter in #770
- ci(actions): split fast/heavy gates and cut redundant Playwright matrix cost by @fderuiter in #775
- feat(crf): compare working draft against a named baseline (#676) by @fderuiter in #776
- refactor(crf): unexport internal modal props interfaces by @fderuiter in #777
- test(ci): verify browser-scoped cache contracts by @fderuiter in #778
- fix(ci): gate merges on targeted device coverage by @fderuiter in #779
- fix(dx): align verification output with exit status by @fderuiter in #780
- fix(ci): enforce required-check event safety by @fderuiter in #781
- feat(blog): integrate resilient published-post persistence by @fderuiter in #782
- fix(duck): suspend play during reading interruptions by @fderuiter in #783
- test(migrations): include blog migration in integrity inventory by @fderuiter in #787
- fix(duck): coordinate manual hotkeys and interruption ownership by @fderuiter in #788
- fix(blog): enforce cache contracts and rendered-page invalidation by @fderuiter in #790
- docs(ci): synchronize references and current merge-gate guidance by @fderuiter in #793
- fix(duck): select visible responsive manual owner by @fderuiter in #794
- feat(blog): add authorized sanitized draft collection API by @fderuiter in #795
- feat(blog): add authorized draft reading and editing by @fderuiter in #797
- fix(content): render case-study Mermaid diagrams by @fderuiter in #798
- feat: reconcile dev authoring, studio, and accessibility work into main by @fderuiter in #801
- fix(dx): normalize Next.js bracket route parameters in OpenAPI doctor check by @google-labs-stitch[bot] in #818
- refactor: relocate CopyButton implementation to components/ui and update consumer imports by @google-labs-stitch[bot] in #819
- feat(arcade): enforce standardized 44px minimum touch targets and active visual feedback across Arcade HUD components by @google-labs-stitch[bot] in #820
- refactor(audio): centralize sound engine delegation across application by @google-labs-stitch[bot] in #824
- feat(test): direct Stryker CLI runner and unified core coverage inclusion by @google-labs-stitch[bot] in #825
- feat(patrol): headless shift state machine engine and wave 1 enhancements (#748) by @fderuiter in #827
- feat(patrol): unified vertical slice, OET mini-game, and OEC scene interaction (#749, #750, #751) by @fderuiter in #831
- feat(patrol): three MVP scenario content packages and interpersonal dialogue system (#752) by @fderuiter in #832
- feat(patrol): contextual rule-based debrief engine (#753) by @fderuiter in #833
- feat(patrol): ambient operations mini-events and realistic Welch Village trail map (#754, #835) by @fderuiter in #837
- feat(patrol): field manual, optional audio layer, and M10 launch QA (#755, #756) by @fderuiter in #838
- perf(web-vitals): keep hero text an opaque LCP candidate and drop production layout reflow by @fderuiter in #839
- feat(crf): resolve show, hide and require sentence rules at runtime by @fderuiter in #842
- feat(crf): save and reuse versioned personal clinical blocks by @fderuiter in #843
- feat(crf): test forms in a responsive in-builder simulator dock by @fderuiter in #844
- feat(crf): save named test scenarios with expected outcomes and run evidence by @fderuiter in #845
- fix(domain): canonicalize on the apex so advertised URLs match the serving host by @fderuiter in #846
- ci(actions): supersede redundant main-push runs and correct the Free-plan budget by @fderuiter in #847
- dx(lint): exclude agent worktrees from ESLint traversal by @fderuiter in #855
- chore(deploy): stop uploading build output and agent worktrees to Vercel by @fderuiter in #856
- fix(build): gate fallback logging on runtime rather than production alone by @fderuiter in #857
- fix(build): abort a production build when a data source is unreachable by @fderuiter in #858
- fix(db): run migrations on the direct endpoint by default by @fderuiter in #860
- docs(agents): correct the fallback logging gate and state the build-time rule by @fderuiter in #861
- fix(build): load .env.local before falling back to a dummy connection by @fderuiter in #862
- docs(neon): record observed provider state and correct two false protections by @fderuiter in #864
- docs(neon): record a measured restore rehearsal and correct the production branch id by @fderuiter in #870
- chore(git): state the .env*.local ignore rule explicitly by @fderuiter in #872
- fix(seed): upsert by slug instead of wiping, and recover two orphaned case studies by @fderuiter in #873
- feat(blog): cover all six content pillars and enforce the taxonomy by @fderuiter in #876
- fix(case-studies): render editorial_content as Markdown and de-duplicate ids by @fderuiter in #877
- chore(deps): add @upstash/qstash and bump @upstash/redis by @fderuiter in #878
- fix(ui): stop clipping code blocks, de-duplicate titles, and add missing page headings by @fderuiter in #881
- fix(observability): stop spending the Sentry error budget on local development by @fderuiter in #883
- dx(hooks): close the guardrail, branch, drift and test-scope gaps by @fderuiter in #884
- fix(routes): stable /crf heading, bounded titles, gated mobile blur by @fderuiter in #885
- chore(release): license the source under Apache-2.0 and harden public repository readiness by @fderuiter in #886
- docs(release): reconcile public-release readiness and Vercel/production evidence by @fderuiter in #887
- refactor(security): unify secret scanning into lib/security-scan by @fderuiter in #888
- feat(clinical-chaos): offices, sponsor inbox, outfits, and a guided board redesign by @fderuiter in #908
- feat(crf): add durable field review threads by @fderuiter in https:/...
v0.3.0
What's Changed
- feat(security): CVE-granular advisory matching and 90-day expiration cap by @google-labs-jules[bot] in #464
- feat(garmin): add power brownout warnings, shutdown handling, flash storage caps, and session persistence by @google-labs-jules[bot] in #465
- perf(crf): lazy load secondary studio overlays by @google-labs-jules[bot] in #466
- feat(simulator): Screen Reader Telemetry, Touch Gestures, & Haptic Feedback by @google-labs-jules[bot] in #467
- feat(garmin): synchronize Monkey C Mayhem & Garmin Schvitz App branding and integrate sub-50KB standalone build target by @google-labs-jules[bot] in #468
- perf(schemaflow): direct DOM ref patching and hook memoization for solver telemetry by @google-labs-jules[bot] in #469
- perf(crf): implement targeted main-thread idle scheduling & debounced diagnostic badge by @google-labs-jules[bot] in #470
- perf(ui): default lazy loading for scrapbook carousel images by @google-labs-jules[bot] in #471
- docs(architecture): add targeted topology update and automated drift verification by @google-labs-jules[bot] in #472
- feat(neuro): add event-driven progress bus and floating visual HUD overlay by @google-labs-jules[bot] in #474
- feat(crf): implement lossless universal CRF YAML exporter & schema test suite by @google-labs-jules[bot] in #476
- fix(crf): generate high-entropy cryptographic UUIDs during CDISC compliance auto-fix by @google-labs-jules[bot] in #473
- feat(seo): explicit social card image metadata & contact server layout wrapper by @google-labs-jules[bot] in #477
- feat(a11y): action-driven reducer state machine for screen reader announcements by @google-labs-jules[bot] in #478
- perf(arcade): implement component-level pathfinding memoization in RetroLabyrinth by @google-labs-jules[bot] in #479
- fix(telemetry): instant snapshot-based telemetry reversion on API failure and rate limit by @google-labs-jules[bot] in #480
- feat(perf): gpu-accelerated case study scroll indicator by @google-labs-jules[bot] in #482
- feat(ci): integrate real-browser sub-route performance gating by @google-labs-jules[bot] in #483
- fix(a11y): patch useEffect block with ref-based guards for announcement timers by @google-labs-jules[bot] in #484
- perf(arcade): optimize TSP shortest path calculation using useMemo by @google-labs-jules[bot] in #485
- perf(404): defer retro minigame bundle loading behind interactive insert coin preview by @google-labs-jules[bot] in #486
- fix(crf): targeted safe property guard in health calculator by @google-labs-jules[bot] in #487
- feat(layout): implement CSS layout budgeting, offscreen card precompute, and scrollbar gutters by @google-labs-jules[bot] in #488
- feat(arcade): migrate arcade game canvas interactions to unified React Pointer Events by @google-labs-jules[bot] in #492
- fix(homepage): resolve compiled terminology tags in project teaser cards before truncation by @google-labs-jules[bot] in #489
- feat(layout): implement CSS variable space contract and dynamic viewport heights by @google-labs-jules[bot] in #491
- refactor(command-palette): optimize search performance and audio throttling by @google-labs-jules[bot] in #493
- feat(telemetry): in-memory outbox queue with exponential backoff and targeted rollbacks by @google-labs-jules[bot] in #494
- fix(crf): enforce exact subject matching and XML attribute escaping in CDISC ODM exporters by @google-labs-jules[bot] in #490
- refactor(neuro): offload 3D mesh generation to background Web Worker thread by @google-labs-jules[bot] in #496
- feat(a11y): action-driven reducer state machine for screen reader announcements by @google-labs-jules[bot] in #495
- feat(crf): implement unified missing value & CDISC null flavor guard engine by @google-labs-jules[bot] in #498
- refactor(audio): centralize Web AudioContext governance and unmount cleanup by @google-labs-jules[bot] in #499
- docs(security): update SECURITY.md with audit CLI, CI gates, and override governance rules by @google-labs-jules[bot] in #500
- feat(crf): integrate interactive AST rule evaluation and live conformance engine into simulation by @google-labs-jules[bot] in #501
- docs(onboarding): add environment verification step to setup guides by @google-labs-jules[bot] in #504
- feat(crf): Implement Graph-Extended Schema and Bidirectional CDISC USDM Adapter by @google-labs-jules[bot] in #505
- docs(contributing): add root contribution guide and interactive cli scaffolder by @google-labs-jules[bot] in #506
- feat(build): standardize asset commands and document token compiler pipeline by @google-labs-jules[bot] in #507
- docs(onboarding): add environment variable verification step to setup guides by @google-labs-jules[bot] in #508
- docs(readme): document local health diagnostics and CI quality gate mapping by @google-labs-jules[bot] in #509
- docs(onboarding): document API compilation and drift verification commands by @google-labs-jules[bot] in #503
- docs(deploy): add standalone deployment operations & synthetic monitoring guide by @google-labs-jules[bot] in #502
- docs(db): align database migration guides, CLI help, and diagnostic completeness gate by @google-labs-jules[bot] in #510
- feat(seo): implement dynamic runtime file system stat mapping for static routes by @google-labs-jules[bot] in #511
- fix(telemetry): implement rate limiting circuit breaker cooldown fallback by @google-labs-jules[bot] in #512
- feat(telemetry): lazy load sentry in client error boundaries with missing dsn guard by @google-labs-jules[bot] in #516
- feat(seo): universal schema language and access declarations by @google-labs-jules[bot] in #517
- feat(neuro): decouple 3d rendering engine with engine loader bridge and raw binary geometry buffers by @google-labs-jules[bot] in #550
- fix(crf): update docx export table widths to 9,360 DXA for standard Letter paper margins by @google-labs-jules[bot] in #552
- feat(dx): add npm run audit:security to pre-commit hook by @google-labs-jules[bot] in #551
- perf(bento-grid): cache getBoundingClientRect and batch CSS updates via requestAnimationFrame by @google-labs-jules[bot] in #553
- feat(crf): extract USDM valueSets/codeLists into codelists and map visit tolerances to schedule rules by @google-labs-jules[bot] in #554
- fix(graphics): clamp Hermite spline control point tangents and adjust sparkline inner padding by @google-labs-jules[bot] in #555
- Release v0.2.0 by @fderuiter in #463
- feat(garmin): implement fog-state prioritized gesture isolation by @google-labs-jules[bot] in #556
- feat(dx): implement Doctor-native ADR invariant suite and CI verification step by @google-labs-jules[bot] in #558
- feat(arcade): Standardized Canvas Arcade Engine & Event Bridge by @google-labs-jules[bot] in #562
- feat(arcade): strongly-typed arcade registry & bento dual-cta action bar by @google-labs-jules[bot] in #557
- Revert "feat(arcade): strongly-typed arcade registry & bento dual-cta action bar" by @fderuiter in #564
- refactor(types): eliminate any usage from production code paths by @fderuiter in #571
- test: disable file parallelism to fix CRF Studio test-suite hang; sync docs drift by @fderuiter in #572
- fix(homepage): resolve hydration mismatches breaking the landing page by @fderuiter in #573
...
v0.1.0 (Initial Release)
What's Changed
- Integrate Pretext Core Layout Engine by @fderuiter in #1
- Phase 3: Visual Ecosystem Setup by @fderuiter in #2
- build(deps): bump next from 16.2.4 to 16.2.6 in the npm_and_yarn group across 1 directory by @dependabot[bot] in #3
- Implement TypeScript-first design manifest and build-time theme sync by @google-labs-jules[bot] in #49
- feat: automate design token synchronization from CSS to TypeScript by @google-labs-jules[bot] in #52
- Implement Native ISR for case study detail pages by @google-labs-jules[bot] in #50
- Implement Platform Transparency Hub for verifiable security metrics by @google-labs-jules[bot] in #53
- feat: integrate Sentry for production observability and error tracking by @google-labs-jules[bot] in #54
- feat: implement global measurement caching for layout hooks by @google-labs-jules[bot] in #55
- feat: implement standardized persistence utility for CLI history by @google-labs-jules[bot] in #56
- Refactor masonry layout logic into custom hook and shared constants by @google-labs-jules[bot] in #57
- Implement Zero-Downtime Resilience Engine for DB Migrations by @google-labs-jules[bot] in #62
- Establish engineering-driven logic testing for core algorithms by @google-labs-jules[bot] in #63
- feat: implement high-availability telemetry buffer with Redis fallback by @google-labs-jules[bot] in #64
- Establish Rigor Ecosystem for automated layout and performance gating by @google-labs-jules[bot] in #65
- Humanize portfolio with civic milestones and creative narratives by @google-labs-jules[bot] in #69
- Implement Enterprise Accessibility Infrastructure and PDF/UA Engine by @google-labs-jules[bot] in #76
- Secure Telemetry Sync Route Authorization by @google-labs-jules[bot] in #87
- feat: integrate native framer-motion useReducedMotion hooks for system-level accessibility by @google-labs-jules[bot] in #88
- feat(ci): implement branch-isolated dual caching for Next.js and Playwright by @google-labs-jules[bot] in #89
- feat: implement static pre-commit and seed script regex guards by @google-labs-jules[bot] in #91
- feat: Targeted Route Error Telemetry on 404 Pages by @google-labs-jules[bot] in #94
- Update Telemetry Sync Cron Job Frequency to Daily by @fderuiter in #97
- Integrate Vercel Analytics by @fderuiter in #96
- Post-Build Conditional Migration Execution by @google-labs-jules[bot] in #95
- fix: make preview builds and routes fully robust to database branch limit failures by @google-labs-jules[bot] in #102
- feat: defer CommandPalette with SearchWrapper client loader and design interactive 404 page by @google-labs-jules[bot] in #92
- feat: fetch static public ASCII art on client idle by @google-labs-jules[bot] in #113
- feat: Centralized Graphics Math and Layout Engine Abstraction by @google-labs-jules[bot] in #114
- feat: implement accessible logic proof workspace with split-view command console by @google-labs-jules[bot] in #109
- feat: implement interactive console API with sandbox event bridge by @google-labs-jules[bot] in #106
- Fix GitHub Telemetry Cache Key Collision and Metrics Bleeding by @google-labs-jules[bot] in #105
- Implement Targeted Error Sanitization and Build-Time Log Suppression by @google-labs-jules[bot] in #104
- Feature: Language-Tailored Simulated Telemetry for Legacy & Private Projects by @google-labs-jules[bot] in #103
- feat(sandbox): implement interactive terminal sandbox accessibility enhancements by @google-labs-jules[bot] in #117
- feat: Unified Recovery Layout & Global Search Context by @google-labs-jules[bot] in #108
- Unified Responsive Observer Infrastructure by @google-labs-jules[bot] in #110
- feat: Context-Aware Global Listener Exclusion & Garmin Watch Simulator by @google-labs-jules[bot] in #118
- feat(layout): centralize theme font resolution and unify markdown tokenization configurations by @google-labs-jules[bot] in #119
- feat: Implement dynamic height override context and interactive Pitch/Reality switcher for bento grid cards by @google-labs-jules[bot] in #107
- feat: declarative Zod validation and programmatic OpenAPI spec generation by @google-labs-jules[bot] in #112
- feat: Implement Smart Fuzzy Matcher & Telemetry Pipeline on NotFound Fallbacks by @google-labs-jules[bot] in #116
- feat: Implement Progressive Retro Labyrinth on 404 Not Found Page by @google-labs-jules[bot] in #145
- feat: implement translation-aware layout dependency tracking and cache invalidation by @google-labs-jules[bot] in #144
- feat: implement multi-paragraph userland splitting with layout calibration by @google-labs-jules[bot] in #143
- feat: implement Vitest-powered programmatic integrity gates by @google-labs-jules[bot] in #141
- feat: implement automated browser-based accessibility audits with Playwright-Axe by @google-labs-jules[bot] in #140
- feat: Background Tactic Simulation with 5s Watchdog Worker Recovery by @google-labs-jules[bot] in #139
- feat: Standardized SDK-Based Telemetry Rate Limiting with Local Caching by @google-labs-jules[bot] in #136
- feat: Implement Global Dynamic Multi-Profile Synthesizer with Sound Settings Panel by @google-labs-jules[bot] in #134
- feat: Interactive Terminology Tooltips in Case Studies by @google-labs-jules[bot] in #133
- feat: implement centralized Sentry telemetry filtering for GameEngineException by @google-labs-jules[bot] in #131
- feat: implement gamified recruiter compatibility simulator route by @google-labs-jules[bot] in #130
- feat: implement transparent continuous overlay layer for accessible text layouts by @google-labs-jules[bot] in #126
- feat: automate TypeDoc compilation, markdown linting, and CI drift checking by @google-labs-jules[bot] in #124
- docs: align CMS guidelines with RichNarrative HTML allowlist & compile docs by @google-labs-jules[bot] in #163
- feat: Implement Integrated JSDOM Unit/Integration Test Suite and Enforce 80% Hard Gates by @google-labs-jules[bot] in #168
- feat: language-tailored simulated telemetry and alignment fixes by @google-labs-jules[bot] in #166
- perf: optimize Playwright cache and resolve accessibility test failures by @google-labs-jules[bot] in #165
- docs: align permitted HTML elements and attributes list with RichNarrative component schema by @google-labs-jules[bot] in #164
- feat: implement integrated command console split-view keyboard navigation and accessibility by @google-labs-jules[bot] in #157
- feat(telemetry): implement robust unit test suite for pipeline timeout and deduplication logic by @google-labs-jules[bot] in #155
- feat(ci): implement branch-isolated Next.js and Playwright dual caching by @google-labs-jules[bot] in #170
- feat(a11y): implement interactive accessibility e2e tests and fix WCAG label violation by @google-labs-jules[bot] in #171
- feat: idiomatic context provider & unified recovery layout by @google-labs-jules[bot] in #172
- feat: enhance static pre-commit and seed script regex guards with template literal support and unit testing by @google-labs-jules[bot] in #174
- feat(schemaflow): implement declarative SVG layout proof tree, telemetry RAM gauge, and state rollback his...