The .bnp packers never carried preview.png (the .so-era source archives did
implicitly), so any republish silently wiped a theme's registry preview.
Both builders now pack an optional root preview.png and a screenshots/ dir
(png/jpg/jpeg/webp, <=8MB each, <=12 files, validated), reported in the
build/verify summaries. ninja theme screenshot gains --pages/--screenshots-dir
to capture NN-<slug>.png per gallery page for the registry gallery.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
ninja plugin publish now runs the build pipeline (codeless or wasm,
same as `ninja plugin build`) and uploads the resulting .bnp; the
legacy source-archive path is deleted (internal/archive removed).
--bnp remains as an optional prebuilt-artifact override.
Client-side guard mirrors the orchestrator verify gate: a non-empty
manifest version that differs from plugin.mod fails before upload.
The git-archive-era publish warnings (gitignored-tracked, untracked,
submodules) described a ship mechanism that no longer exists; replaced
with a single dirty-tree drift warning (--strict still aborts).
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
The ninja developer CLI moves out of block/core into its own module
git.dev.alexdunmow.com/block/cli. Pins block/core@v0.18.2 for abi/v1, the
plugin.mod parser, and DESCRIBE guest builds; vendors its own orchestrator
registry client (internal/api, generated from a vendored plugin_registry.proto)
since it cannot import block/core/internal. Produces byte-identical v1
artifacts (verified: art-deco codeless SHA256-identical to the pre-move build).
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>