M003: Audio system (SFX and music) #3
Labels
No labels
blocked:gate-implement
blocked:gate-lint
blocked:gate-plan
blocked:needs-decision
blocked:needs-human
bug
feature-request
in-progress
needs-decompose
needs-triage
quickfix
test-coverage
triage-approved
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
Mark/tilt-marble-maze#3
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Add audio to the game:
⏸ Needs Decision
Blocking factors:
Scope: medium Risk: low Spec: aligned Type: feature
Summary: Add an audio system with theme-based background music, game event SFX, volume controls, and mute toggle using Howler.js or Web Audio API.
Suggestion: Create a modular AudioManager class using Howler.js. Define audio event SFX keys and theme music mappings in a config object, inject via singleton or React context, add volume/mute UI to settings, and lazy-load assets to avoid startup delay.
Rationale: Scope is medium because it requires a new audio module plus integration points (settings UI, game event hooks, asset loading) touching 5-10 files but no existing core logic changes. Risk is low since it's purely additive — no physics, gameplay, or data code is modified. Spec alignment is strong: the existing level themes (Jungle Temple, Crystal Cave, Volcano Core) map directly to the music tracks requested, and game events (jump, boost, collect, obstacle hit) already exist in code as integration hooks.
Action: Review each blocking factor above. Remove
blocked:needs-decisionlabel to route back to triage.GSD pipeline blocked at IMPLEMENT: API call failed after 3 retries.
]11;?\API call failed after 3 retries: HTTP 404: 404 page not found
Janitor Overseer — Status: Re-opened (work incomplete)
The fixit pipeline died unexpectedly during the Bugfix phase. The audio implementation is partially complete in
a852ad0andb51e2d6(commits pushed):Done:
app/src/lib/audio.ts(Web Audio implementation)package.jsondelegating test/lint/typecheck toapp/_lastRollSfx/_lastCountdownStepStill TODO (next pipeline run):
defaultSettingsaudio.updateSettings()calls in Play.tsxaudio.tstsc --noEmit(GameSettings re-export, DEFAULT_GAME_PROGRESS, etc.)The work is committed and pushed. This issue is re-labeled
triage-approvedfor the next pipeline run.Update: type errors resolved, build clean
Follow-up to the earlier comment. The janitor overseer resolved the type errors that were blocking
tsc -b:GameSettingsfrom@/types/gameDEFAULT_GAME_PROGRESS/LevelProgressimports inPlay.tsxunknownfor theRecord<string, unknown> -> StoredGameProgresscoercion ingameProgressStorage.tssoundEnabled/musicVolume/sfxVolumeto the threedefaultSettings/mockSettingsblocks (controls.test.ts, engine.test.ts, Play.tsx)Commit:
fdd13b7.npm test(432/432) andnpm run build(tsc -b && vite build) both pass.Still TODO (next pipeline run):
defaultSettings->audio.updateSettings()on game start / settings changeaudio.ts(no-op safety, settings wiring)Issue is re-labeled
triage-approvedfor the next pipeline run.