27 Commits

Author SHA1 Message Date
Alex Dunmow
396b3b443f feat(art-deco): reshoot gallery with bundled Cinzel/Cormorant typography (home/about/article x light+dark)
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-06 20:46:21 +08:00
Alex Dunmow
1fdc6ae792 bump to 0.4.1 2026-07-06 20:43:04 +08:00
Alex Dunmow
1b7f273118 feat(art-deco): bundle Cinzel/Cormorant @font-face + declare required_icon_packs
Host does not consume LoadedPlugin.BundledFonts, so declare @font-face rules
against served /templates/art-deco/fonts/*.woff2 and point preset
typography.fontHeading/body at template:art-deco:<Family>. Declare
required_icon_packs [lucide, simple-icons] so sprite URLs resolve on fresh install.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-06 20:43:04 +08:00
Alex Dunmow
025b13dd48 bump to 0.4.0 2026-07-06 15:54:13 +08:00
Alex Dunmow
f2c8b3643c fix(art-deco): Wave B remediation — drop stray reservation strip + header divider, unbreak hero override, size icon SVGs, richer seed articles + gold-room media
- master_pages: remove orphaned reservation strip (marquee) and header fan divider (default) — the strip stacked under the navbar as a duplicate full-width band
- hero override: eyebrow/headline/sub/desc use |get:"text" so bare-string fields no longer error the whole block to empty (was rendering a dead band above home content)
- divider override: replace ::icon:sm:: shortcode (rendered an unsized <use> SVG that ballooned — the broken About 'tally-mark' divider) with an explicit width/height-sized inline SVG
- SVG geometry guard: explicit width/height on all <use> icon SVGs across overrides (testimonial stars + inherited set)
- seed: expand 3 blog articles to ~9 paragraphs (1926 supper-club voice) so articles fill the viewport; wire gold-room.svg media into the private-dining block
- re-capture 6 gallery shots (home/about/article x light+dark) on a fresh reprovisioned instance

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-06 15:53:47 +08:00
Alex Dunmow
e67437985e bump to 0.3.1 2026-07-06 15:47:03 +08:00
Alex Dunmow
a441b4cccf bump to 0.3.0 2026-07-06 09:06:16 +08:00
Alex Dunmow
a1acb0f886 feat: Wave B gallery screenshots (home/about/article × light+dark) + demo-home preview
Captured from a live dev gallery instance with demo content installed
(WO-TF-027 pilot).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-06 09:06:09 +08:00
Alex Dunmow
620644f386 chore: rename dev host localdev.blockninjacms.com -> blockninja.dev 2026-07-05 20:50:30 +08:00
Alex Dunmow
def29b6e9c refactor: replace hand-rolled utility CSS with Tailwind classes (host build now scans theme templates) 2026-07-05 17:54:25 +08:00
Alex Dunmow
3b3adfdf43 fix(art-deco): remediate empty-media balloons, dead whitespace + mobile layout
- 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>
2026-07-05 17:23:35 +08:00
Alex Dunmow
4e4344298c bump to 0.2.1 2026-07-05 16:44:47 +08:00
Alex Dunmow
674c2d15b3 docs: publishing README 2026-07-05 13:45:45 +08:00
Alex Dunmow
03c49a9a83 feat(art-deco): Wave A supper-club theme — 49 overrides, 7 templates, seed
WO-TF-011: dress the fine-dining / supper-club persona (gilded symmetry,
ziggurat frames, sunbursts, hairline gold rules; champagne/ivory light,
gold-on-lacquer dark) against the frozen Wave-0 builtin schemas.

Overrides (templates/overrides/art-deco/): all 49 mandatory builtin keys,
each re-skinned from the builtin default with every content field, provider
field, custom tag ({% img %}/{% button %}/{% form %}/{% signup_form %}/
{% auth_form %} wiring) and JS (navbar drawer, gallery lightbox, countdown,
stats count-up, video/audio facade, announcement dismiss) preserved verbatim.
Auth trio reproduces the untouchable /api/auth/* endpoints and field names;
captcha widget injected from _captcha_widget. manifest.yaml declares all 49.

Page templates: added blog-index, contact, auth (now 7 total) in Deco chrome.

Blocks rework (spec D5): footer/hero(marquee)/gallery/divider/pull-quote theme
blocks deleted — folded into overrides of the builtin keys. Kept persona
furniture reservation + menu; added private_dining + chef_signature (4 blocks).

Presets: 4 dual-mode (mode "both"), all 19 tokens, light AND dark tuned.
Fonts: bundle Cinzel + Cormorant Garamond (OFL) as Latin woff2 subsets in
assets/fonts/ (license recorded in OFL.txt); all font-family via var().
Email wrapper themed. required_icon_packs=["lucide"] + RECOMMENDED_ICONS.md.

Seed (demo): home/about/blog(3 posts)/contact/login pages in supper-club voice;
contact-form targets seeded contact_submissions data table; row_inserted
workflow emails admins.

Verified: ninja plugin build (codeless), verify, archive-check, and
check-safety all exit 0. Visual quality UNVERIFIED until Wave B.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-05 10:51:02 +08:00
Alex Dunmow
a7141e39ae fix: align email wrapper vars to the engine contract; multi-line address via |lines
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>
2026-07-04 14:43:06 +08:00
Alex Dunmow
5075aa81c9 feat: convert to codeless .bnp — templates + manifest, Go/templ deleted (WO-WZ-021)
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>
2026-07-04 14:24:55 +08:00
Alex Dunmow
57e16e8ec7 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 <noreply@anthropic.com>
2026-07-04 00:03:07 +08:00
Alex Dunmow
c52fce32e0 wasm port (WO-WZ-015): reactor-mode wasip1 guest, core v0.15.2
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>
2026-07-03 22:11:12 +08:00
Alex Dunmow
8fae1ff15c bump to 0.1.2 2026-07-03 22:04:39 +08:00
Alex Dunmow
2f52b84ae7 chore: declare templates category (themes carry categories) v0.1.1 2026-06-26 21:47:01 +08:00
Alex Dunmow
0d509791a1 bump to 0.1.1 2026-06-26 00:33:30 +08:00
Alex Dunmow
bc75c4ee1a chore: showcase preview.png + align block/core to v0.14.1 2026-06-26 00:33:30 +08:00
Alex Dunmow
92d0892267 Add plugin.mod 2026-06-25 15:10:56 +08:00
Alex Dunmow
8fe6707e21 chore: bump core to v0.14.0
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-13 13:42:12 +08:00
Alex Dunmow
72c8ef8d45 chore: bump core to v0.13.1
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-06-10 22:30:44 +08:00
Alex Dunmow
5ed7149c41 deps: bump block/core to v0.12.4
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-06-08 20:49:04 +08:00
Alex Dunmow
9fbedf5ba1 initial: theme plugin art-deco
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>
2026-06-06 14:11:19 +08:00