# PointCast Micro Club maker kit 1.0

Dated 2 October 2026. A first-party source package for preview and inspection, with one finite example: **Little Landing**. Three invited maker prototypes remain pending. This kit accepts no submissions and sends no messages.

## Run it

Unzip the package. In a terminal, change into `micro-club-maker-starter-v1`, the archive root containing `controller.js` and `makers/`, then run:

```sh
python3 -m http.server 8000 --bind 127.0.0.1
```

Open `http://127.0.0.1:8000/makers/starter/` to play or `http://127.0.0.1:8000/makers/` to read the guide. Stop the server with Control-C. Python 3 is required for this command. Direct `file://` opening is unsupported because the starter uses JavaScript modules. No build step, package installation, account or external library is needed to run the extracted package.

Once served locally, preview play and this guide are self-contained and work without an internet connection. Links to the live source download, manifest, club and support remain optional online links. The ZIP does not contain another ZIP or the live manifest.

Optional: with Node.js 22 or later already installed, run the included rules tests from that same root:

```sh
node --test makers/starter/game.test.mjs
```

Node is only needed for these tests, not browser play. The test source is packaged inside the ZIP; it is not published as a standalone web asset.

## Make a small edit

Start with `CONFIG` in `makers/starter/game.mjs`. Little Landing has seven stops, starts at zero-based index `3`, and visits target indices `[5, 1, 6, 2, 4]`. Displayed stops use one-based numbers. Change the route, reload and complete the entire edited version before changing anything else. Keep indices in range and preserve a reachable ending and restart.

Use the shared semantic inputs, not hardcoded keys:

| Action ID | Little Landing meaning |
| --- | --- |
| `left`, `previous` | Move one stop left |
| `right`, `next` | Move one stop right |
| `action` | Start / land / resume / play again |
| `pause` | Pause or explicitly resume |
| `up`, `down`, `pad1`, `pad2`, `pad3`, `pad4` | Reserved; unused in this starter |

`createController({ onInput, isActive })` supplies `onInput(actionId)` for mapped keys while the caller's `isActive()` permits input. `getMappings()` returns labels' current key codes; `displayCode(code)` formats those codes. The controller reads the existing browser mapping. The starter does not bind or reset it. Reload after changing mappings in another Micro Club page. A downloaded copy on localhost has that origin's mappings, not the live site's saved mappings.

Keyboard and on-screen buttons must reach the same action handler. The page, not the controller, owns focus, visibility, pause and explicit resume. Preserve Tab, typing, composition, modifier shortcuts and ignored repeated keys. Reserved actions should do nothing. Call `destroy()` if replacing a controller in a future adaptation so listeners do not accumulate. Do not infer hardware identity from key events.

## Review before sharing a proposal

Use `makers/review-checklist.json` and record the exact version, reviewer, date, platform, expected result and observed result. An unrun check stays pending. The checklist covers completion/restart, keyboard/touch equivalence, mappings, focus, accessibility, privacy, asset rights and removal readiness.

The package budget is **100 KiB (102,400 bytes), uncompressed**. The [live build manifest](https://pointcast-micro-club.mhoydich.workers.dev/makers/kit-manifest.json) records measured packaged file bytes and hashes; compare the declared budget scope there when online. ZIP size and download speed are different measurements. No external fonts, libraries or media are needed. Adding dependencies, assets, network requests, storage or permissions changes the review scope.

Test desktop, 390px and 320px layouts, custom mappings, blocked storage, outside focus, hidden tabs, explicit resume, reduced motion and text alternatives. Complete the route with actual browser interactions and record the ending. Browser emulation is not physical phone or Micro gameplay evidence; successful key events are not sound or visible-light proof. The starter needs no hardware bridge.

## Rights, credit and removal readiness

Credit this first-party example to PointCast, led by Michael Hoydich. Source is available for preview and inspection. No project license, contributor agreement or reuse terms are granted by this kit. Clear code, asset and brand rights before public redistribution; do not describe this package as open source.

For a future contribution, inventory original and third-party assets, source URLs, authors, proposed credit and permission evidence. Agree hosting/adaptation permissions, channels, duration, attribution, review scope and a working removal contact before any third-party hosting. Do not assume ownership transfers or use permission from a submitted file. Invitations and external messages require separate authorization.

The receiving channel, responsible operator and response terms remain pending. No inbox or submission form exists here. A future operator should record a removal request and affected version, pause promotion, disable an affected entry when needed, preserve review evidence privately, remove disputed assets through a verified release, and record resolution after checking the public URLs. Set up the working contact before inviting or hosting outside work.

Independent PointCast project; no affiliation with or endorsement by OpenAI or Work Louder.

- Live club: https://pointcast-micro-club.mhoydich.workers.dev/club/
- Dated compatibility evidence: https://pointcast-micro-club.mhoydich.workers.dev/support/
- Maker guide: https://pointcast-micro-club.mhoydich.workers.dev/makers/
