SCENEGOD/scenegod/web
type-two be65355f6b [laneC] M4: audio mux, graft_limb.py, MODELBEAST proxy
- render/end muxes scene audio[] (adelay+volume+amix, aac, -shortest);
  audio paths path-guarded; render.js finalRender passes scene audio
- scripts/graft_limb.py: headless Blender limb graft (align root->target bone,
  join armatures, parent-keep-offset, join meshes; refusal exit 2 on mitten
  overlap; drops phantom importer icosphere; no finish/decimate). --selftest
  builds synthetic fixtures + verifies both paths under Blender
- /mb/submit MODELBEAST proxy (SCENEGOD_MB=1 gated, token from ~/Documents/
  backnforth/.env at request time never logged, /api/assets->/api/jobs)
- test_server.py: +audio-stream, +MB gating & two-step contract (mock MB);
  8 groups green

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-18 20:47:31 +10:00
..
dock.js [laneA] M2: PiP + cameras/lights toolbar, eventized clip drops, onChange-on-add 2026-07-18 20:14:52 +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] M1: Stage viewport, retarget port, dock+inspector 2026-07-18 18:06:22 +10:00
stage.js [laneA] M2: PiP + cameras/lights toolbar, eventized clip drops, onChange-on-add 2026-07-18 20:14:52 +10:00
stagestub.js [laneB] M2 session 3: absorb _mirror + tests, setDuration, snap-step, param capture 2026-07-18 20:41:39 +10:00
style.css [laneA] M2: PiP + cameras/lights toolbar, eventized clip drops, onChange-on-add 2026-07-18 20:14:52 +10:00
timeline_test.mjs [laneB] M2 session 3: absorb _mirror + tests, setDuration, snap-step, param capture 2026-07-18 20:41:39 +10:00
timeline.js [laneB] M2 session 3: absorb _mirror + tests, setDuration, snap-step, param capture 2026-07-18 20:41:39 +10:00
tlui.js [laneB] M2 session 3: absorb _mirror + tests, setDuration, snap-step, param capture 2026-07-18 20:41:39 +10:00