BLOBBO/src
type-two 85c29111fa feat(machine): see-saw tipAxis option + a tuning lab course
createSeeSaw gains `tipAxis: 'x'|'z'` (default 'x' = unchanged). 'z' rocks the
plank fore↔aft so you can cross it in a Z-flowing course — the missing piece
that kept the see-saw out of every course (it was X-crossing only).

Adds ?course=seesaw, a throwaway lab for tuning the see-saw in isolation:
raised deck flush into the plank's near end (no ramp to misalign), teeter
across, drop off the far end onto the floor (a drop is never a wedge), fan for
momentum. Browser-verified it completes end-to-end.

Feel is still open (John's call): at crossing speed the plank barely pitches
(reads as a stable wobble-bridge). Knobs left exposed — maxTilt/restTilt on the
part, plank density/damping in the factory, fan force in the lab — to tune
"does it feel good" together. NOT wired into any shipped course.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-19 16:00:55 +10:00
..
assets harden asset runtime: guard the swap path, bound the boot, reconcile slots 2026-07-19 12:12:07 +10:00
audio Lane F: procedural WebAudio engine + soundboard demo 2026-07-18 11:46:28 +10:00
blob feat(blob): honour surface tags — oil luge, water rinse, drag 2026-07-19 14:59:20 +10:00
course feat(machine): see-saw tipAxis option + a tuning lab course 2026-07-19 16:00:55 +10:00
demo Merge fix-editor: demo DB isolation, mesh-less rejection, per-instance clones, storage-failure handling, private-browsing degrade, canonical slot import 2026-07-19 12:26:44 +10:00
editor Wire the Workshop: registry boot, course.tramp slot, editor in the production build 2026-07-19 12:32:23 +10:00
ghost harden asset runtime: guard the swap path, bound the boot, reconcile slots 2026-07-19 12:12:07 +10:00
machine feat(machine): see-saw tipAxis option + a tuning lab course 2026-07-19 16:00:55 +10:00
paint harden asset runtime: guard the swap path, bound the boot, reconcile slots 2026-07-19 12:12:07 +10:00
ui Lane H: ghost replay + title screen 2026-07-18 11:47:34 +10:00
contracts.ts M0 playable slice: lanes integrated, machine chain staged, hidden-tab hardening 2026-07-17 20:50:16 +10:00
game.ts feat(course): data-driven courses + a second course (Toaster Alley) 2026-07-19 15:19:09 +10:00
main.ts Wire the Workshop: registry boot, course.tramp slot, editor in the production build 2026-07-19 12:32:23 +10:00
world.ts M0 playable slice: lanes integrated, machine chain staged, hidden-tab hardening 2026-07-17 20:50:16 +10:00