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), add a
.gitignore for *.so and *.bnp artifacts, and refresh the stale
[compatibility] block_core constraint to the v0.15 era.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
Alex Dunmow 2026-07-04 00:15:52 +08:00
parent d684225e8d
commit d494eedb00
3 changed files with 47 additions and 46 deletions

2
.gitignore vendored
View File

@ -1 +1,3 @@
terminal.so terminal.so
*.so
*.bnp

View File

@ -1,60 +1,59 @@
# Terminal — build helpers (.so plugin workflow) # terminal — build & publish helpers (wasm .bnp workflow)
# #
# The plugin compiles to a .so shared object loaded by the CMS at runtime. # 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).
# #
# Usage: # Usage:
# make # Default: build terminal.so locally # make build # compile wasm + pack terminal-<version>.bnp
# make clean # Remove built artefacts # make verify # validate the built .bnp (layout/abi/name/size)
# make templ # Regenerate *_templ.go # 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 clean templ help bump-patch bump-minor bump-major sync-version .PHONY: build verify archive-check publish templ clean help
PLUGIN_NAME := terminal PLUGIN_NAME := terminal
TEMPL := $(HOME)/go/bin/templ NINJA := ninja
BNP := $(PLUGIN_NAME)-$(shell grep '^version' plugin.mod | sed 's/.*"\(.*\)"/\1/').bnp
# Default target: build the .so locally # Compile to wasm and pack the .bnp (GOOS=wasip1 GOARCH=wasm, DESCRIBE probe,
all: $(PLUGIN_NAME).so # tar.zst of plugin.wasm + plugin.mod + manifest.pb + schemas/ + assets/).
build:
$(NINJA) plugin build --dir .
# Local plugin build # Validate the built .bnp exactly as the registry/loader will.
$(PLUGIN_NAME).so: $(wildcard *.go) plugin.mod go.mod verify:
CGO_ENABLED=1 go build -buildmode=plugin -ldflags="-s -w" -o $(PLUGIN_NAME).so . $(NINJA) plugin verify $(BNP)
# Regenerate templ 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:
$(TEMPL) generate templ generate
# Remove build artefacts.
clean: clean:
rm -f $(PLUGIN_NAME).so rm -f $(PLUGIN_NAME)-*.bnp $(PLUGIN_NAME).so plugin.wasm
help: help:
@echo "Targets:" @echo "Targets:"
@echo " all Build $(PLUGIN_NAME).so locally (default)" @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 " templ Regenerate templ Go files"
@echo " clean Remove built artefacts" @echo " clean Remove build artefacts"
# --- Version bump targets ---
CURRENT_VERSION := $(shell grep '^version' plugin.mod | sed 's/.*"\(.*\)"/\1/')
bump-patch:
@NEW=$$(echo $(CURRENT_VERSION) | awk -F. '{printf "%d.%d.%d", $$1, $$2, $$3+1}'); \
sed -i 's/version = "$(CURRENT_VERSION)"/version = "'$$NEW'"/' plugin.mod; \
git add plugin.mod && git commit -m "chore: bump version to $$NEW" && git tag "v$$NEW"; \
echo "Bumped to $$NEW and tagged v$$NEW"
bump-minor:
@NEW=$$(echo $(CURRENT_VERSION) | awk -F. '{printf "%d.%d.0", $$1, $$2+1}'); \
sed -i 's/version = "$(CURRENT_VERSION)"/version = "'$$NEW'"/' plugin.mod; \
git add plugin.mod && git commit -m "chore: bump version to $$NEW" && git tag "v$$NEW"; \
echo "Bumped to $$NEW and tagged v$$NEW"
bump-major:
@NEW=$$(echo $(CURRENT_VERSION) | awk -F. '{printf "%d.0.0", $$1+1}'); \
sed -i 's/version = "$(CURRENT_VERSION)"/version = "'$$NEW'"/' plugin.mod; \
git add plugin.mod && git commit -m "chore: bump version to $$NEW" && git tag "v$$NEW"; \
echo "Bumped to $$NEW and tagged v$$NEW"
sync-version:
@TAG=$$(git describe --tags --abbrev=0 2>/dev/null | sed 's/^v//'); \
if [ -z "$$TAG" ]; then echo "No tags found"; exit 1; fi; \
sed -i 's/version = "$(CURRENT_VERSION)"/version = "'$$TAG'"/' plugin.mod; \
echo "Synced plugin.mod to $$TAG"

View File

@ -9,4 +9,4 @@ categories = ["templates"]
tags = ["terminal", "hacker", "monospace", "dev", "ctf", "security", "docs", "indie"] tags = ["terminal", "hacker", "monospace", "dev", "ctf", "security", "docs", "indie"]
[compatibility] [compatibility]
block_core = ">=0.11.0 <0.12.0" block_core = ">=0.15.0 <0.16.0"