You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
v1.6.0: 10-step flow, age scoring, skip buttons, camera fixes, 30s timers
- Streamline to 10 steps: archive visual-engagement + audio stages
- Add age-grouped scoring with domain-aware aggregation (neurotypical → 100%)
- Add SkipStageDialog to all 5 assessment stages
- Fix Stage 7 camera (render during countdown + stream re-attach)
- Fix Stage 10 mobile camera (10s getUserMedia timeout)
- Reduce all timed assessments to 30 seconds
- Enhanced live transcript in communication stage
- 31/31 Playwright tests passing
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Copy file name to clipboardExpand all lines: DOCS.md
+42-15Lines changed: 42 additions & 15 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -11,7 +11,7 @@
11
11
-[Architecture](#architecture)
12
12
-[Tech Stack](#tech-stack)
13
13
-[Feature Map](#feature-map)
14
-
-[Intake Flow (12 Steps)](#intake-flow-12-steps)
14
+
-[Intake Flow (10 Steps)](#intake-flow-10-steps)
15
15
-[AI / ML Pipeline](#ai--ml-pipeline)
16
16
-[AWS Services](#aws-services)
17
17
-[Authentication](#authentication)
@@ -34,7 +34,7 @@ AutiSense is a Next.js 16 web application that provides AI-powered autism screen
34
34
-**Offline-first data** — IndexedDB (Dexie.js) for local storage with DynamoDB sync when online
35
35
-**Adaptive therapy** — 7 post-diagnosis games with dynamic difficulty adjustment
36
36
37
-
The app runs a full 12-step screening flow in ~15 minutes, producing domain scores for gaze, motor, vocalization, and behavioral patterns. No video or audio ever leaves the device.
37
+
The app runs a full 10-step screening flow in ~15 minutes, producing domain scores for gaze, motor, vocalization, and behavioral patterns. No video or audio ever leaves the device.
38
38
39
39
---
40
40
@@ -43,7 +43,7 @@ The app runs a full 12-step screening flow in ~15 minutes, producing domain scor
@@ -280,7 +280,7 @@ Difficulty engine (`app/lib/games/difficultyEngine.ts`) auto-adjusts based on re
280
280
281
281
| File | Tests | Coverage |
282
282
|------|-------|----------|
283
-
|`tests/intake-flow.spec.ts`| 15 | Full 12-step intake flow navigation, form validation, back buttons |
283
+
|`tests/intake-flow.spec.ts`| 15 | Full 10-step intake flow navigation, form validation, back buttons, skip stage|
284
284
|`tests/app-pages.spec.ts`| 15 | Auth, dashboard, all 7 games, feed, 4 API endpoints |
285
285
|**Total**|**30**|**All passing**|
286
286
@@ -569,3 +569,30 @@ npx playwright test # Run all 30 tests
569
569
- Updated: `app/lib/actions/actionDetector.ts` (consecutiveHits in tracker return)
570
570
- Updated: `tests/intake-flow.spec.ts` (Step 4, 7, 9 test assertions)
571
571
- Updated: `tests/app-pages.spec.ts` (generate-words API test)
572
+
573
+
### v1.6.0 — 2026-03-05 (10-Step Flow, Age Scoring, Skip Buttons, Camera Fixes)
574
+
575
+
**Major Changes:**
576
+
-**Streamlined to 10-step flow**: Archived Visual Engagement (emoji tap) and Audio Assessment (sentence echo) stages. Navigation rewired to skip them — files preserved for potential future use.
577
+
-**Age-grouped scoring**: New `ageNormalization.ts` with 4 age brackets (12-24mo, 24-48mo, 48-72mo, 72+mo). Younger children get relaxed multipliers (e.g., 12-24mo: gaze×1.4, motor×1.5, vocal×1.6) and lower DSM-5 flag thresholds. A neurotypical child now scores ~93-100% instead of ~72%.
578
+
-**Domain-aware aggregation**: Each task only contributes to domains it actually measures (e.g., communication → vocal only, motor → motor only). Hardcoded 0.5 placeholders no longer drag down unrelated domain scores. Default 0.75 for unmeasured domains.
579
+
-**Skip Stage on all assessments**: New `SkipStageDialog` component added to all 5 assessment stages (communication, behavioral-observation, preparation, motor, video-capture). Shows confirmation modal before skipping. Saves default 0.5 biomarkers on skip.
580
+
581
+
**Fixed:**
582
+
-**Stage 7 camera not showing on desktop or mobile**: Video element was only rendered during `actionPhase === "detecting"` but camera stream was assigned during countdown when element didn't exist. Now renders camera during all active phases (countdown + detecting + detected) with countdown overlay on top.
583
+
-**Stage 10 mobile camera hanging**: Added 10-second timeout wrapper (`withTimeout()`) to all `getUserMedia()` calls in `cameraUtils.ts`. Prevents indefinite hanging when mobile browsers stall on camera permission.
584
+
-**Stream re-attach on DOM mount**: Defensive `useEffect` in `useActionCamera.ts` re-attaches stream when video element appears in DOM (catches ref timing issues).
585
+
586
+
**Improved:**
587
+
-**All timed assessments reduced to 30 seconds**: Behavioral observation (was 60s), motor assessment (was 45s), and video capture (was 120s) all now run for 30 seconds. Video capture criteria gate lowered to 3 samples / 15s (was 5 samples / 30s).
588
+
-**Live transcript in communication stage**: Transcript display moved outside `listening` state — now visible during listening/matched/missed. Larger font (1.4rem Fredoka) with "Heard:" label and pulse animation during active listening.
0 commit comments