• feat(bnp): codeless .bnp artifacts — declarative plugins with no wasm (WO-WZ-020)

    Ghost released this 2026-07-04 03:30:00 +00:00 | 22 commits to main since this release

    PluginManifest gains codeless (additive, buf-breaking clean): an artifact
    with NO plugin.wasm that the host runs entirely. ninja plugin build
    classifies by repo shape — no Go source → codeless (manifest synthesized from
    plugin.mod + optional manifest.yaml: theme presets, fonts, settings schema,
    master pages, CSS, icon packs, deps); Go source → wasm as always. New
    --codeless flag asserts the expectation.

    Both artifact kinds now pack the declarative dirs: blocks/ (the cms
    blocks.yaml manifest-FS layout — definition-backed blocks), templates/, and
    seed/ (seed.json: settings/media/pages/menu items, applied host-side via the
    WO-WZ-019 provisioner). The packer structurally validates blocks.yaml and
    seed.json (schema JSON validity, file presence, traversal safety); full
    semantic validation stays host-side at install.

    ninja plugin verify: plugin.wasm is required exactly when NOT codeless; a
    codeless manifest declaring any computing hook (http/jobs/load/unload/media/
    RAG/tags/filters/services/guest blocks/data_dir) is rejected —
    CodelessHookViolation mirrors the cms reader check (lockstep duplication).

    Co-Authored-By: Claude Fable 5 noreply@anthropic.com

    Downloads