Add `ninja plugin gallery list|add|remove|reorder|set-featured` for
author-side curation of a plugin/theme's registry screenshot gallery,
feeding the browse/detail surfaces shipped in Phases 4-5.
- Re-vendor plugin_registry.proto from orchestrator (adds
PluginGalleryService) and regenerate the connect client.
- Wire the Gallery client into orchclient.Client.
- Target plugin defaults from plugin.mod with --scope/--name overrides;
device-flow auth via resolveClient. list is a public read; add/remove/
reorder/set-featured are RoleUser (scope/account membership enforced
server-side). add derives content_type from the extension against the
png/jpg/jpeg/webp allowlist and rejects >8MiB client-side.
Scope handling trims a leading @ client-side because ListScreenshots does
not trim server-side (GetPlugin does). Live-verified against the dev
orchestrator; go build + go test ./... + check-safety all green.
Co-Authored-By: Claude Opus 4.8 <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>