S1: fix sunet campanie — deblochează AudioContext la gestul părintelui

Camerele cheamă parent.beep() din iframe; gestul din iframe NU deblochează
AudioContext-ul orchestratorului (părinte), care rămânea suspended → tăcere.
Fix: creează+resume beep._ctx în handler-ul btn-start (gest direct pe părinte),
escape-builder.html:1928. Verificat: ctx 'running' după start (era NO_CTX).
Suita smoke 21/21 fără regresie. Board: TODOS.md ▶ BOARD ACTIV S1 [x].

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
Claude Agent
2026-06-13 09:33:31 +00:00
parent b935a21b41
commit 52f97af533
2 changed files with 13 additions and 6 deletions

View File

@@ -16,11 +16,13 @@ Direcția cerută de user (decizii confirmate, vezi `HANDOFF.md`). Model hibrid
părțile grele se prototipează în PARALEL în `scratch/`, verificate jucabile, apoi integrator le
portează în `escape-builder.html` (un singur fișier, integrare secvențială).
- [ ] **S1 — fix sunet campanie** *(prioritar, rapid)*
Reinvestighează ÎNTÂI: `beep` E deja definit la `escape-builder.html:1725` în orchestrator
(devine `window.beep``parent.beep` ar trebui să rezolve). Ipoteza veche din HANDOFF
(beep nedefinit) pare GREȘITĂ. Suspect real: AudioContext `suspended` până la gest user,
sau context creat înainte de click „Începe aventura". Confirmă cauza în browser înainte de fix.
- [x] **S1 — fix sunet campanie** *(GATA, verificat în browser)*
Cauză reală: orchestratorul crea `beep._ctx` lazy la primul `parent.beep()` din iframe;
gestul din iframe NU deblochează AudioContext-ul părintelui → ctx `suspended` → tăcere.
(Ipoteza HANDOFF „beep nedefinit" era greșită; `beep` e la `escape-builder.html:1725`.)
Fix: deblocare ctx în handler-ul `btn-start` (gest direct pe părinte), `escape-builder.html:1928`.
Verificat: `scratch/verify-audio-s1.mjs` → ctx `running` după start (era `NO_CTX`). Smoke 21/21.
TODO la S4: portează asertarea `beep._ctx.state==='running'` în `tests/smoke.mjs`.
- [ ] **S2a — prototip Bomberman complet**`scratch/bomberman-proto.html`
Standalone jucabil: dușmani cu AI urmărire, bombe plasabile + explozii în lanț, blocuri
distructibile, pericole, vieți + game-over + respawn fără pierderea progresului puzzle,