SCENEGOD/scenegod/web
type-two 866551f266 [sync5] viseme matcher side-suffix fix, v1 complete: README, git-hygiene rule
- stage.js detectVisemes: NONMOUTH blocklist + side-stripped matching —
  /(^|_)l($|_)/ was swallowing every ARKit left-side morph (eyeblink_l,
  browdown_l), so setMorph('L') would blink the eye; self-check hardened to
  assert group contents (L === tongue only, smile lands on E)
- CLAUDE.md: lanes stage own files explicitly, never git add -A (laneB's
  attribution finding)
- README.md: run + feature summary; lane files: session 4 accepted for all,
  v1 declared complete, optional backlog recorded

Verified: node + 9 server test groups green, /rhubarb 503 gate live,
audio lane (tone.wav block, gain) + cut markers + sun keys on screen,
zero console errors.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-18 21:33:53 +10:00
..
dock.js [laneA] M4-A visemes + applyState source:none fix 2026-07-18 21:19:07 +10:00
index.html [sync1] wire TimelineUI to real Stage, null-mixer guard, M2 unlock + orchestrator updates 2026-07-18 18:36:16 +10:00
render.js [laneC] M4: audio mux, graft_limb.py, MODELBEAST proxy 2026-07-18 20:47:31 +10:00
room3d.js [laneA] M3-polish: PiP cap+swap, spec-gloss GLB fix (lady renders textured) 2026-07-18 20:49:22 +10:00
stage.js [sync5] viseme matcher side-suffix fix, v1 complete: README, git-hygiene rule 2026-07-18 21:33:53 +10:00
stagestub.js [laneB] M4-B model: audio mutators, morphs track eval, importRhubarb 2026-07-18 21:13:35 +10:00
style.css [laneA] M4-A visemes + applyState source:none fix 2026-07-18 21:19:07 +10:00
timeline_test.mjs [laneB] M4-B model: audio mutators, morphs track eval, importRhubarb 2026-07-18 21:13:35 +10:00
timeline.js [laneB] M4-B model: audio mutators, morphs track eval, importRhubarb 2026-07-18 21:13:35 +10:00
tlui.js [laneA] M4-A visemes + applyState source:none fix 2026-07-18 21:19:07 +10:00