- src/ui/Menu.ts: overlay with HOW TO PLAY (controls, the five repairs,
tips) and SETTINGS (master volume, mouse sensitivity, view bob, render
quality); persists to localStorage, auto-opens on first visit, corner
badge + H toggles it.
- View bob now defaults OFF (playtest: reads as screen rumble to
non-Minecraft players); re-enable in settings.
- New hooks: PlayerController.setSensitivity, InputController.setSensitivity,
AudioEngine.setMasterVolume (safe pre-init), quality -> pixelRatio in main.
- Pause overlay suppressed while the menu is open; closing re-locks pointer.
Verified: menu renders over splash, both tabs, quality rescales the
framebuffer 2->1, settings persist, zero console errors.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
- src/main.ts: full wiring per docs/INTEGRATION.md (renderer/world/booth/
chunks/machines/player/interaction/audio/fx/hud + fixed-step loop),
QuestPositions adapter (Lane C nested -> Lane D flat), attachPlayer step,
pointer-lock-gated input, debug handle for smoke tests.
- core/constants: Y_RECORD_TOP 85 -> 81 (record was an unclimbable 5-voxel
cliff; now 1 proud of the plinth, auto-steppable) + PLATTER.wellDepth.
- machines/platter: body + collider now fill Lane C's well down to y=74.
- fx/layout: VU sprites aligned to Lane C's physical LED towers.
- interact: per-material break times (dust 0.12s) so the crossfader jam
isn't a 96-second mine.
- docs/INTEGRATION_NOTES.md: every glue decision + live verification results
(120 fps, ride/mine/quest/win all green, zero console errors).
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Lanes A (engine), B (player), C (worldgen), D (machines/quest),
E (audio/fx/ui) as landed, each with HANDOFF.md + update docs.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>