Releases: wighawag/picopilot
Release list
picopilot@0.1.4
Patch Changes
-
d98efab: Make the agent JUDGE the rendered frame, not just confirm it drew, so readability and layout-fairness defects get caught. A large-model run verified every state transition thoroughly but shipped a game where a hazard was the same colour as the background and obstacle gaps were too tight to pass, because it only ever confirmed screenshots "rendered" and never critiqued them.
The scaffolded
AGENTS.mddefinition of done now adds a "judge the frame" check: when you look at a gameplay screenshot, actively hunt for what is WRONG (can you tell every entity apart from the background and each other; are hazards spaced so a human can react in ~250ms rather than frame-perfect; does it look intentional), because "it renders" is not "it is good".game-design-referencegains the matching self-check that applies its readability + fairness lenses to the actual rendered image, not just the logic. Kept concrete (distinguishable? clearable? intentional?) rather than a vague "make it pretty".
picopilot@0.1.3
Patch Changes
-
f884a6f: Ship a PICO-8 API reference and stop the agent guessing, and make "done" catch mislabeled outcomes and too-easy games. These target the exact ways a weak model wasted runs and shipped bugs.
- New
reference/pico8-api.mdresource underpicopilot-code: the exact function names + signatures for the common API, plus a table of the wrong names an LLM reaches for (rand/ranf,rectcol,math.floor,table.insert,poke4for saving,sprwith extra args) and their real PICO-8 equivalents.picopilot-codeand the always-loadedAGENTS.mdnow point at it with a "do NOT guess an API name, look it up" rule, so a nil-call crash does not cost a whole playtest round. The resource ships to installed skills via the existing resource-copy seam. - Stronger definition of done in
AGENTS.md: beyond "state behaves, not just renders", it now adds two generic checks: drive EVERY distinct kind of interaction and confirm its effect has the intended SIGN (the classic bug is a hazard that adds score instead of costing a life), and run the design self-checks against what you actually saw (can the player genuinely lose, or is it too easy / does it escalate / is it fair). Kept generic, no fixed mechanic checklist.
- New
picopilot@0.1.2
Patch Changes
-
00b4f00: Make "done" mean the game's behaviour is verified, not just that a frame renders, so state-transition bugs (a pickup that never despawns, lives that do not reset on restart) get caught before handoff.
The scaffolded
AGENTS.mdbuild loop now tells the agent to SEE the cart PLAY (drive it viapicopilot playtest runor the temporaryrunprobe and compare a SEQUENCE of frames for motion and state change), and its definition of done requires driving the core loop and confirming state actually behaves. The check is deliberately GENERIC: it refuses a fixed mechanic checklist and instead tells the agent to enumerate the state transitions ITS OWN game defines and verify each (with aprinthstate-dump fallback), so it neither assumes mechanics the game lacks nor checks only a canned list and misses the rest.
picopilot@0.1.1
Patch Changes
-
528b9b4: Steer the build toward a visually-verified cart and away from the
servetar pit, so weaker models follow the same disciplined loop the strong ones already do.- Scaffolded
AGENTS.mdnow spells out the build loop + a definition of done: every iteration ends by SEEING the cart run (a temporaryextcmd("screen")probe screenshot, orpicopilot playtest run), with the probe recipe inline. It states plainly that a greenverifyor a bareruntimeout is NOT proof the cart works, and that the finished-cart handoff ispico8 -run <path>(not a browser serve), with no extra summary docs / scripts / banners as deliverables. picopilot run's timeout CTA is now screenshot-aware: a timeout with NO screenshot says a timeout alone does not prove it works and points at the probe /playtest/verify; a timeout WITH a screenshot is framed as the expected interactive-game case.serveis scoped to its real role (sharing a playable build with a human, not self-verification): the command description and the labellessexport-failedmessage now redirect torun/playtestfor verifying your own build, and point at the real label remedy (export --label) instead of hand-editingmain.p8.
- Scaffolded
picopilot@0.1.0
Minor Changes
-
a989c1a: First feature release of picopilot, the agent-first PICO-8 toolchain (a single TypeScript CLI on the incur framework that is also an MCP server and a set of auto-installable agent skills). Highlights:
- Core cart loop:
initscaffolding (the#include main.lualayout), thetokensbudget loop,verifyas the single static acceptance gate (tokens + lint + integrity, with the honestgate-incapableoutcome when shrinko is absent), andminify. - Eyes (art): the
gfx set(char-grid) ->gfx render(viewable PNG) -> look-and-fix loop, with the gfx/map overlap smart-refuse. - Ears (audio, v2):
sfx from-mmlandmusic from-patternsover a documented picopilot-MML subset tuned to PICO-8's exact capabilities, SFX filters (!dampen/!reverb), and record-basedaudio render. - Run + playtest: headless
run(boot + screenshot + printh, ends on a done-sentinel), andplaytestwhich drives an arbitrary cart through scripted input and captures real gameplay, one-shot plus a resumable live session (btn/btnp -> serial transform over a fixed-block + ACK transport; ADR-0011/0012). - Export:
exportproduces a browser-playable PICO-8 HTML bundle, with an optional--labelsplash. - Skills: auto-installable discipline skills (overview, code, art, audio, debug) plus a composed game-design pair (
game-jam+game-design-reference) carrying fairness, human-reaction-budget, visibility, originality-method, and budget-scaled progression guidance. - Hygiene: every PICO-8 launch is isolated with
-homeso it never writes config/data into the working tree. - Includes a hands-on platformer tutorial (
examples/platformer/) and a curated game showcase.
- Core cart loop: