From 69494940c14312db0c9a0f61bc18748caf1a2d65 Mon Sep 17 00:00:00 2001 From: Alex Dunmow Date: Sat, 4 Jul 2026 00:14:21 +0800 Subject: [PATCH] chore: repo hygiene for the wasm era (WO-WZ-015 fix round) Replace the retired .so Makefile with the wasm/.bnp convention (build / verify / archive-check / publish via ninja plugin build), gitignore *.so and *.bnp artifacts, and refresh the stale [compatibility] block_core constraint to the v0.15 era. Co-Authored-By: Claude Fable 5 --- .gitignore | 1 + Makefile | 61 +++++++++++++++++++++++++++++++++++++++++------------- plugin.mod | 2 +- 3 files changed, 49 insertions(+), 15 deletions(-) diff --git a/.gitignore b/.gitignore index f780e6f..9207b06 100644 --- a/.gitignore +++ b/.gitignore @@ -3,3 +3,4 @@ tmp/ .idea/ .vscode/ +*.bnp diff --git a/Makefile b/Makefile index 5aef0a5..24a0069 100644 --- a/Makefile +++ b/Makefile @@ -1,26 +1,59 @@ -# Corporate Modernist — theme plugin Makefile. +# corporate-modernist — build & publish helpers (wasm .bnp workflow) # -# Local-only targets. Per the wave-1 implementation policy this Makefile does -# NOT touch a live CMS instance; building remains a single-shot `make` invocation. +# The theme compiles to a wasip1 reactor-mode wasm module packed into a .bnp +# artifact (`ninja plugin build`). The legacy .so path is retired (WO-WZ-015): +# the CMS is wasm-native and can no longer load .so plugins. Distribution is +# publish-to-registry -> InstallFromRegistry (hot-load, no restart). # -# make # build corporate-modernist.so via CGO go build -buildmode=plugin -# make templ # regenerate _templ.go files -# make clean # remove the built .so +# Usage: +# make build # compile wasm + pack corporate-modernist-.bnp +# make verify # validate the built .bnp (layout/abi/name/size) +# make archive-check # prove a clean `git archive HEAD` compiles to wasm +# make publish # ninja plugin publish --bnp (to the active registry) +# make templ # regenerate templ Go files +# make clean # remove build artefacts -.PHONY: all templ clean +.PHONY: build verify archive-check publish templ clean help PLUGIN_NAME := corporate-modernist +NINJA := ninja +BNP := $(PLUGIN_NAME)-$(shell grep '^version' plugin.mod | sed 's/.*"\(.*\)"/\1/').bnp -# Default target: build the .so locally. -all: $(PLUGIN_NAME).so +# Compile to wasm and pack the .bnp (GOOS=wasip1 GOARCH=wasm, DESCRIBE probe, +# tar.zst of plugin.wasm + plugin.mod + manifest.pb + schemas/ + assets/). +build: + $(NINJA) plugin build --dir . -$(PLUGIN_NAME).so: $(wildcard *.go) plugin.mod go.mod - CGO_ENABLED=1 go build -buildmode=plugin -ldflags="-s -w" -o $(PLUGIN_NAME).so . +# Validate the built .bnp exactly as the registry/loader will. +verify: + $(NINJA) plugin verify $(BNP) -# Regenerate templ-produced Go files. +# Prove a clean `git archive HEAD` (what publish ships) compiles to wasm. +archive-check: + @T=$$(mktemp -d /tmp/archive-check-$(PLUGIN_NAME).XXXXXX) && \ + trap 'rm -rf "$$T"' EXIT && \ + git archive HEAD | tar -x -C "$$T" && \ + cd "$$T" && GOOS=wasip1 GOARCH=wasm go build -buildmode=c-shared -o "$$T/check.wasm" . && \ + echo "archive-check OK" + +# Publish the prebuilt .bnp to the active registry. +# Pass --host https://my.localdev.blockninjacms.com for the dev orchestrator. +publish: build + $(NINJA) plugin publish --bnp $(BNP) + +# Regenerate templ Go files locally. templ: templ generate -# Remove built artifact. +# Remove build artefacts. clean: - rm -f $(PLUGIN_NAME).so + rm -f $(PLUGIN_NAME)-*.bnp $(PLUGIN_NAME).so plugin.wasm + +help: + @echo "Targets:" + @echo " build Compile wasm + pack the .bnp" + @echo " verify Validate the built .bnp (loader-identical checks)" + @echo " archive-check Prove a clean git archive HEAD compiles to wasm" + @echo " publish Publish the .bnp to the active registry" + @echo " templ Regenerate templ Go files" + @echo " clean Remove build artefacts" diff --git a/plugin.mod b/plugin.mod index 70950ac..4f58885 100644 --- a/plugin.mod +++ b/plugin.mod @@ -9,4 +9,4 @@ categories = ["templates"] tags = ["business", "corporate", "enterprise", "consulting", "legal", "professional", "b2b", "swiss"] [compatibility] -block_core = ">=0.11.0 <0.12.0" +block_core = ">=0.15.0 <0.16.0"