A wasm plugin.build now folds an optional root manifest.yaml into the DESCRIBE-derived manifest.pb exactly as BuildCodeless does, so a reduced "mixed" plugin can keep a minimal guest for genuine logic while shipping the full declarative surface set host-rendered: theme_presets, bundled_fonts, master_pages, system/page templates, template_overrides, email_wrappers, css, required_icon_packs (and the referenced root JSON is embedded into manifest.pb). applyManifestYAML now only overwrites a scalar/bytes key when manifest.yaml actually declares it, so folding onto a guest-populated manifest supplements and overrides but never WIPES a guest DESCRIBE field. A repo with no manifest.yaml is a no-op — existing pure-wasm plugins build byte-for-byte as before. Codeless builds are unaffected (empty manifest → identical result). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
BlockNinja Plugin SDK
Types, interfaces, and utilities for building BlockNinja plugins.
Package Structure
| Package | Purpose |
|---|---|
plugin/ |
PluginRegistration, CoreServices, RegisterFunc |
blocks/ |
BlockMeta, BlockFunc, BlockRegistry interface, BlockContext |
blocks/builtin/ |
Reusable block implementations (HTMLBlock) |
templates/ |
TemplateRegistry interface |
templates/bn/ |
Shared templ components (head, engagement, toolbar) |
auth/ |
Claims types, context extractors |
content/ |
Content access interface |
settings/ |
Settings access interface |
gating/ |
Access gating evaluation |
crypto/ |
Encrypt/Decrypt interface |
render/ |
Rich text rendering utilities |
video/ |
Video embed URL parsing |
ai/ |
AI tool registry interface and types |
rbac/ |
Role type definition |
Usage
import "git.dev.alexdunmow.com/ninja/core/plugin"
Description
Languages
Go
83.5%
templ
15.5%
Makefile
1%