What's new
Changelog
What changed in pxart, newest first. pxart is still 0.1.0: until a first tagged
release, entries are grouped by the day they landed on main. The file format is
pxart 1 throughout, and every .px file written for an earlier day still reads the same.
2026-09-29
Added
- Palette slots. A key line can list alternatives,
f #e0ac69 | #f5cfa0 | #c68642, for a game that recolors sprites at runtime. The first color is the key's base color.render --slotsandsheet --slotsdraw combinations of them, andexport --indexed keys.jsonwrites the frames as key grids with the palette and its slots. A@variantcan give a slot one color or a list.pxart help slotshas the rules and the JSON shape. from-png --colors Nreduces a PNG with many colors to fit the free palette keys, and reuses OUT's palette when OUT already exists.from-png --hard-edges,outline --min-alpha Aandoutline --pad.
Changed
- Alpha is visible:
checkandfrom-pngcount the see-through pixels, and say when a key is faint or a shape touches the frame's edge. from-pngwith no-oprints its notes on stderr, sofrom-png a.png > a.pxgives a clean.px.- Erase errors name a command that runs as printed.
2026-09-28
Added
- Tiled worlds.
export --tiledcompiles aworld.src.jsonand its.maprooms into a.worldand.tmjfiles, with stable object ids.pxart help worldshas the details. pxart worlddraws a compiled world, its rooms where they sit, to one PNG.checkreads.worldand.tmjfiles, using the same rules as the export.
2026-09-27
The first public version: the format, about forty commands, and the nine tutorials, whose outputs are rebuilt and compared byte for byte by the tests.
Added
compose --dry-runprints what compose would say and the diff it would write.paste --align shift|pivot|bottom|bboxandFILE:a,b,cframe lists, so one paste can follow a bobbing animation.ellipse --ring Nandellipse --box x,y,w,h.onion --variant V,stats --variant V, andrender/sheetcells labeled with their variant.dup FILE:GROUP NEWGROUP;flip FILE:G -o FILE:NEWG;--replaceforflip,rotate,transposeanddup.--dry-runon every in-place edit,newandpaletteincluded.
Changed
renderandsheetdraw a grey checkerboard behind each frame by default.- Every edit says what it did:
painted N px,erased N px,changed 41 px: 29->C, 12->X, and the keyspalette --addadded. - A missing selector says "no frame or group" and lists the groups. An unknown variant gets "did you mean".
animover several groups animates each on its own, and its percentages never go over 100.
This page is built from
CHANGELOG.md in the repository.Edit on GitHub