Repository navigation
Releases: m4bwav/pixelwright
Release list
pixelwright 0.8.3
Natural construction plans can now build log buildings with plank roofs.
"walls": "logs"(coursepx, default 3): the walls go down whole, a log at a time, seam and log together, the two faces in turn and each log from the front corner out; the gable's logs the same way; no corner posts or wall plates."roofOrder": "boards"(boardpx, default 3): roof boards nailed on side by side from the front rake to the back, each whole from eave to ridge.
Plans without them build exactly as before. Learning L-065; one new test.
pixelwright 0.8.2
Pixel-art rules from three pixel-art books and two graphics textbooks, plus more guards for natural construction.
One behaviour change: snap no longer reports a grid when there are too few edges to tell a real grid from chance (fewer than 8, or coherence under 2.8/sqrt(edges)). Before this, a smooth JPEG render could snap at scale 17 or 57 and turn to mush. On 304 real renders the scale comes out the same as before. Every other addition is opt-in, and default outputs are byte-identical to 0.7.3.
pixelwright-make (0.8.0)
background.holesclears background enclosed by the sprite.dither.space: lineardithers in linear light, anddither.max_stepcaps the contrast.clean.cornersmakes corners pixel-perfect.- New
fogoption andswapcommand. filter: boxdownscale formodel_rotate.- New rules in the skill: choose the outline by the background, the smallest-feature size, no dither on sprites that will move, share ramp ends before raising the colour budget, and the caveat on mirrored light.
pixelwright-animate (0.7.1 to 0.8.2)
gates.jsonreportsflicker_pixels(withflicker_at) and, when it applies,cadence_uneven. Neither fails a take unless a brief setsmax_flicker_pixels. They have no pass lines yet.arcgainsperfectfor clean one-pixel bolts.- Timing rules from the books: pop rows of 2-3 px, keep faces out of shimmer, 3-frame loops, favour keys, steady steps.
- Natural construction: site lines draw only inside the finished silhouette (
clip: falsebrings back the old full lines), and a newdrawn_outside_silhouettegate fails a take that draws where the still is empty. Roofs need a different material from the walls and are traced on a grid. Shared loops desync with a random hold on frame 0. Open-sided buildings take the ordinary natural plan.
Details: CHANGELOG.md, C-20261024-8 to C-20261025-5.
pixelwright 0.7.0
A second way to build a structure in assemble.
- Set
"vocabulary": "natural"in an assemble plan and a timber-framed building goes up on site and ends on the finished still: stakes and string on its ground diamond, a stone footing, posts and wall plates, the wall timbers and then the infill rising course by course, the gable and rafters, the roof laid from eave to ridge, and a ladder. It suits a village building seen from above at an angle. The machine vocabularies (crane, drone, trolley) are unchanged and stay the default. - New
siteeffect behind it. Site colours come from the still: when a material is missing (no grey stone, say), it uses the still's own colours instead of inventing new greys. - Ported from a project script; on that 30-frame strip
assemblereproduces the original byte for byte.
Includes 0.6.3 (review page items for paintings and context cards). Details: references/effects.md in pixelwright-animate; C-20261024-7 in CHANGELOG.md.
pixelwright 0.6.3
Two new kinds of item for the review page, ported from spritewright 0.5.1, which shipped after the fork.
- An item with
"display": "full"shows its images at their own resolution, smoothly scaled, instead of the sprite's 3x pixel zoom. Use it for paintings and concept art you want judged next to the sprites. - An item with
"kind": "info"is a context card: text and images with a note, and no pick buttons. - Sprite items look and behave as before.
Details: references/brief.md (Review extra) in pixelwright-animate; C-20261024-5 in CHANGELOG.md.
pixelwright 0.6.2
A patch from the wiki survey.
- A missing or unreadable input now prints one JSON object (
ok: falsewith the error) and exits 1, instead of a Python traceback. Usage errors still print argparse's text and exit 2; the docs now say so. - The make gate finds artwright's
aw.pyin aCLAUDE_CONFIG_DIRinstall before~/.claude/plugins. - Pair it with artwright 0.4.2, where an outlined sprite on transparent black no longer fails without
--scale. - Doc fixes:
--roothas no fallback folder for a recipe's paths; acleanobject you write replaces the default, so list"orphans": trueto keep that step; a duplicate changelog ID renumbered.
pixelwright 0.6.1
A patch for the make gate.
makenow calls artwright'saw.py pixelwith--scale 1, because make output is always one pixel per art pixel. On small sprites artwright used to fit a false grid and fail a result that matched its source pixel for pixel (L-048). Output pixels are unchanged; only the verdict differs.- Pair it with artwright 0.4.1, which reports native shading ramps at a stated scale of 1 rather than failing them as blend pixels.
- Doc fixes: the
.gplthat make writes holds the colours used;coherenceis absent when snap finds no grid.
Found by the first A/B eval of the make skill (T-20261024-2 in TESTS.md).
pixelwright 0.6.0
First public release. pixelwright makes pixel art and animates it, in code, with gates that prove the result. It replaces spritewright.
Make (new, pixelwright-make): an AI render, PixelLab output or drawing becomes real pixel art. New pxw.py commands: make (a recipe pipeline with gates, plus artwright's aw.py pixel when installed), snap (true-grid detection and snap in numpy), bg, palette (PICO-8, a palette file or the set's own sprites), clean, crop, tile and palettes.
Animate (pixelwright-animate, formerly spritewright): a still moves inside region masks, with the rest frame equal to the still and nothing outside the mask changed, packed as sheets with previews and a click-to-pick review page. The output is byte-identical to spritewright 0.5.0: the 32 frame builds in the test suite hash the same before and after the rename.
One CLI: skills/pixelwright/scripts/pxw.py (Python 3.9+, numpy and Pillow, no network). sw.py remains as a shim, and SPRITEWRIGHT_AW is still read after PIXELWRIGHT_AW.
Install:
claude plugin marketplace add m4bwav/pixelwright
claude plugin install pixelwright@pixelwright
python -m pip install numpy pillow