clone

a browser grid puzzle game where you push words around to rewrite the rules of each level

main
miau-is-true / openspec / changes / archive / 2026-09-23-share-level-packs / proposal.md
proposal.md 1.9K source

Why

The current release has only a small built-in teaching campaign and a single selected mod path. Players need a durable way to browse curated content, combine local level packs, and share a level without handing executable code to a recipient.

What Changes

  • Add stable pack and level identifiers and a registry for multiple bundled and loaded packs.
  • Ship a curated set of basic level packs and retain all successfully loaded CommonJS modules for the session.
  • Export a selected pack as a CommonJS .cjs file for explicitly trusted local reuse.
  • Encode selected pack data into a portable #pack=<versioned-payload> data-only URL, capped at 16 KiB encoded, and validate/decode it without executing JavaScript across site revisions.
  • Keep local CommonJS import explicit and trusted, with duplicate and collision diagnostics.
  • Add in-app feedback for pack loading, selection, sharing, export, import, and validation failures.
  • Expand the built-in playable-puzzles contract from exactly three levels to a curated pack set while preserving the original three MIAU teaching puzzles.

Capabilities

New Capabilities

  • level-packs: Stable pack/level identity, curated bundled packs, multi-pack registry, selection, and collision policy.
  • level-sharing: Data-only URL sharing, .cjs export, explicit trusted local CommonJS import, validation, and user feedback.

Modified Capabilities

  • playable-puzzles: Replace the exact-three-level limit with a curated set of packs that includes the original three MIAU teaching puzzles.
  • commonjs-mods: Retain multiple valid modules and define collision behavior when packs or levels overlap.

Impact

Adds pack registry and serialization modules, bundled content metadata, share/export/import controls, validation diagnostics, and browser and engine verification. The design specifies data contracts and feedback states while leaving visual layout and scene ownership to the designer.