You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
cdn-default — the exported World page ships CDN-first
The exported World page loads three.js from the CDN by default.export_model({ format: 'html' }) now writes a world.html whose importmap points at the pinned jsdelivr path; cdn: false writes the self-contained world.offline.html that opens from file:// with no
server and no network. The names follow the content, so the default export carries the obvious
name and nothing silently changes meaning inside the bundle.
Why the flip: the constraint was never bytes. 2.0.8 shipped cdn: true as a size lever
("for a page door with a byte limit"). The artifact host actually refuses data: scripts under
its CSP script-src at ANY size — a 2 MiB page clears the 16 MiB door and still renders black.
A CDN page fails only for a viewer with no network; an inline page fails on every web host,
every time. The default now points at the rarer failure.
The handoff note says it before it bites.pageSentence's artifact case no longer hides
the CDN advisory inside the over-budget branch, so a page that FITS the door is no longer told
it is fine when it is about to be blocked. The handoff.box.cdns field that claude-code.json
has declared since 2.0.8 is finally read instead of merely asserted.
The bundle stays offline on purpose.export_model({ format: 'bundle' }) opts its page
back into the self-contained build: the zip is a download, unzipped and opened from disk, so
the README's "open world.html from disk" promise still holds inside the archive.
export_game gains the same cdn option, defaulting on, threaded to every page role
(level, menu, preview). An exported game could not be published as an artifact page at all
before this — emitWorldPage hardcoded inline: true with no flag to reach.