Go to file
type-two f8fce7ff2b fix(deploy): overlay instead of wipe + verify the entry chunk is JS
Root-cause fix for "Failed to load module script: got text/html" on the live
game. Assets are content-hash-named; the deploy used to `rm -rf` the web root
before copying, so any browser/CDN holding a PREVIOUS index.html asked for
chunks that no longer existed — nginx served the HTML fallback (200 text/html)
and the module loader choked. Shipping 7 times in one session made stale-index
clients common.

- Step 3 now OVERLAYS (docker cp over the top, no rm), keeping old chunks alive
  as a grace window so a cached index.html still resolves. Prunes only files
  orphaned >7 days (current chunks get a fresh mtime every build) so /assets
  can't grow without bound.
- Step 4 now fetches the entry chunk the LIVE index references and asserts it
  comes back as application/javascript — the index-only 200 check could not
  catch a broken chunk graph (a missing chunk IS a 200, as HTML). Verified it
  reports "entry chunk main-*.js -> application/javascript ✓".

Note: nginx still serves index.html for any missing /assets file (masks a 404
as HTML). Fixing that (or adding Cache-Control: no-cache on index.html) touches
the SHARED forum-nginx config that serves the other partly.party games, so it's
left for a deliberate, John-signed-off change rather than done in passing.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-22 11:05:40 +10:00
.claude Foundation: vite+ts+three+rapier scaffold, frozen contracts, lane docs A-E 2026-07-17 19:55:43 +10:00
assets M0 playable slice: lanes integrated, machine chain staged, hidden-tab hardening 2026-07-17 20:50:16 +10:00
demos fix(editor): stop the workshop destroying the user's work 2026-07-19 12:13:07 +10:00
docs harden asset runtime: guard the swap path, bound the boot, reconcile slots 2026-07-19 12:12:07 +10:00
lanes harden asset runtime: guard the swap path, bound the boot, reconcile slots 2026-07-19 12:12:07 +10:00
public/assets Lane I: asset runtime — manifest, registry, slot hooks, IndexedDB overrides 2026-07-19 11:37:08 +10:00
scripts harden asset runtime: guard the swap path, bound the boot, reconcile slots 2026-07-19 12:12:07 +10:00
src feat(ui): paint identity polish — quiet HUD, loud finish 2026-07-20 17:41:41 +10:00
tools M0 playable slice: lanes integrated, machine chain staged, hidden-tab hardening 2026-07-17 20:50:16 +10:00
.gitignore Lane I: asset runtime — manifest, registry, slot hooks, IndexedDB overrides 2026-07-19 11:37:08 +10:00
deploy.sh fix(deploy): overlay instead of wipe + verify the entry chunk is JS 2026-07-22 11:05:40 +10:00
editor.html fix(editor): stop the workshop destroying the user's work 2026-07-19 12:13:07 +10:00
GDD.md GDD v0.1: full design doc, idea capture, MODELBEAST farm client + concept wave 1 2026-07-17 18:15:56 +10:00
index.html Foundation: vite+ts+three+rapier scaffold, frozen contracts, lane docs A-E 2026-07-17 19:55:43 +10:00
package-lock.json Foundation: vite+ts+three+rapier scaffold, frozen contracts, lane docs A-E 2026-07-17 19:55:43 +10:00
package.json Foundation: vite+ts+three+rapier scaffold, frozen contracts, lane docs A-E 2026-07-17 19:55:43 +10:00
README.md GDD v0.1: full design doc, idea capture, MODELBEAST farm client + concept wave 1 2026-07-17 18:15:56 +10:00
tsconfig.json Foundation: vite+ts+three+rapier scaffold, frozen contracts, lane docs A-E 2026-07-17 19:55:43 +10:00
vite.config.ts Wire the Workshop: registry boot, course.tramp slot, editor in the production build 2026-07-19 12:32:23 +10:00

BLOBBO

Fall Guys × Splatoon × Micro Machines: wobbly blob racers on giant Rube-Goldberg courses where the paint that lands on you is your loadout — relative % coverage per colour = your buffs, weight, and size.

  • GDD.md — the design document (v0.1, in review). Start here.
  • docs/IDEA.md — the original raw idea capture (2026-07-17).
  • tools/mb.py — MODELBEAST farm client (concept art / mesh gen on the local render farm). tools/concept-wave-1.json = first asset wave.
  • assets/concepts/ — generated concept art (review gate for the mesh wave).

Status: pre-production. GDD under review; next step is per-lane execution instructions (see GDD §11) once features are signed off.