- Hero: image-less heroes no longer reserve min-h-[75vh]; use guaranteed
.deco-hero-compact padding (kills the tall empty band above the fold).
- Landing template: stop double-wrapping main in max-w-5xl/py-16/text-center
(double padding + clamped full-bleed sections + forced centering); render
section blocks and the footer full-bleed so each self-manages width/rhythm.
- private_dining: with no image, collapse the 2-col grid to a single centred
column instead of stranding text beside an empty media half; route the
capacity/minimum figures through guaranteed .deco-stats gap so values no
longer collide ("14From").
- Reservation strip: populate phone/hours/book link so it reads as a proper
gilded bar instead of a cramped empty dark strip under the nav.
- default/article templates: full-bleed header + footer (navbar no longer
narrowed to max-w-3xl/5xl; dark footer spans edge-to-edge, not a floating
box with dead vertical space).
- chef_signature: trim md:py-24 -> md:py-20 for tighter section rhythm.
- Layout-critical rules added as explicit CSS (manifest css.input_css_append
+ assets/style.css) rather than JIT-fragile theme-template Tailwind combos.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Email context is the established pongo-engine mapping (site_name/site_url/
support_email flat, colors.* camelCase) — the loader renders these through
the cms pongoengine, not an ad-hoc snake_case doc. Footer regains per-line
address <div>s via the host 'lines' filter (parity case footer_full now
byte-identical; 40/41 static parity, the remaining case is the
impossible-input all-colors-empty email edge).
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Convert the Art Deco theme from a wasm (Go+templ) plugin to a fully codeless
.bnp: pure declaration the host runs, no plugin.wasm, no block/core dependency.
- blocks/: blocks.yaml (7 fully-qualified art-deco:* keys) + per-block
.schema.json (moved from schemas/) + .ninjatpl transcribed byte-for-byte
(modulo whitespace) from the templ sources.
- templates/art-deco/{default,landing,article,full-width}.ninjatpl — page
layouts.
- templates/overrides/art-deco/{heading,text,button,image}.ninjatpl.
- templates/email/art-deco.ninjatpl.
- manifest.yaml (system/page templates, template_overrides, email_wrappers,
theme_presets, bundled_fonts, master_pages, css input_css_append) +
master_pages.json.
- plugin.mod bumped to 0.2.0; [compatibility] block_core dropped (codeless has
no core dependency).
- Deleted all Go/templ/*_templ.go, go.mod/go.sum; Makefile rewritten to the
codeless build/verify/publish targets.
Render parity verified against the prior templ output (static pongo2 harness,
whitespace-normalised): all 7 blocks, 4 overrides and the email wrapper match.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
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 <noreply@anthropic.com>
Add wasmguest.Serve(Registration) boilerplate and bump block/core to v0.15.2
for the .so->wasm migration. Built + published as .bnp to the dev registry.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Bootstrapped during the 2026-06-06 BlockNinja consolidation. Was previously
an unversioned directory inside ~/src/blockninja-themes/art-deco.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>