Skip to content

Releases: m4bwav/pixelwright

pixelwright 0.8.3

Choose a tag to compare

@m4bwav m4bwav released this 26 Oct 12:51
757111b

Natural construction plans can now build log buildings with plank roofs.

  • "walls": "logs" (course px, 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" (board px, 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

Choose a tag to compare

@m4bwav m4bwav released this 26 Oct 12:05
18e320c

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.holes clears background enclosed by the sprite.
  • dither.space: linear dithers in linear light, and dither.max_step caps the contrast.
  • clean.corners makes corners pixel-perfect.
  • New fog option and swap command.
  • filter: box downscale for model_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.json reports flicker_pixels (with flicker_at) and, when it applies, cadence_uneven. Neither fails a take unless a brief sets max_flicker_pixels. They have no pass lines yet.
  • arc gains perfect for 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: false brings back the old full lines), and a new drawn_outside_silhouette gate 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

Choose a tag to compare

@m4bwav m4bwav released this 25 Oct 01:21
a3f02f5

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 site effect 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 assemble reproduces 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

Choose a tag to compare

@m4bwav m4bwav released this 25 Oct 01:21
2901382

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

Choose a tag to compare

@m4bwav m4bwav released this 24 Oct 21:04
49a8981

A patch from the wiki survey.

  • A missing or unreadable input now prints one JSON object (ok: false with 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.py in a CLAUDE_CONFIG_DIR install before ~/.claude/plugins.
  • Pair it with artwright 0.4.2, where an outlined sprite on transparent black no longer fails without --scale.
  • Doc fixes: --root has no fallback folder for a recipe's paths; a clean object you write replaces the default, so list "orphans": true to keep that step; a duplicate changelog ID renumbered.

pixelwright 0.6.1

Choose a tag to compare

@m4bwav m4bwav released this 24 Oct 19:56

A patch for the make gate.

  • make now calls artwright's aw.py pixel with --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 .gpl that make writes holds the colours used; coherence is 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

Choose a tag to compare

@m4bwav m4bwav released this 24 Oct 19:15

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