26 Commits

Author SHA1 Message Date
Alex Dunmow
8c1da68375 feat(editorial): bundled-font @font-face + typography refs, required_icon_packs, reshoot in real serif
Declare @font-face for the bundled Playfair Display + Source Serif 4 faces
against /templates/editorial/fonts/*.woff2 and point every preset's
typography.fontHeading/fontBody at template:editorial:<Family> so
--font-heading/--font-body resolve to the bundled serifs (gotham@1.2.0
precedent; CMS BundledFonts is dead code). Declare required_icon_packs
[lucide, simple-icons] for the sprite pipeline. Recapture the 6-shot gallery
(home/about/article x light+dark) now that the serif actually renders.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-06 20:54:03 +08:00
Alex Dunmow
68fe19aaed bump to 0.4.1 2026-07-06 20:43:56 +08:00
Alex Dunmow
8d60707cef bump to 0.4.0 2026-07-06 16:10:12 +08:00
Alex Dunmow
3bf1679eee feat(editorial): Wave B gallery screenshots (home/about/article x light+dark)
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-06 16:09:55 +08:00
Alex Dunmow
db031804bf bump to 0.3.1 2026-07-06 16:07:18 +08:00
Alex Dunmow
965ecf3228 fix(editorial): article H1, marginalia separator+contrast, home composition, SVG geometry guard
- article template now renders <h1>{{ title }} once (was absent — title never showed)
- marginalia anchor label is block-level foreground ink (was inline muted run-on)
- landing lead top padding trimmed to close the dead band above the hero card
- 22 icon-sprite <use> SVGs carry explicit width/height (JIT balloon guard)

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-06 16:07:14 +08:00
Alex Dunmow
936b48653d bump to 0.3.0 2026-07-06 09:24:56 +08:00
Alex Dunmow
18b0d7c4b7 feat: Wave B gallery screenshots (home/about/article × light+dark) 2026-07-06 09:24:38 +08:00
Alex Dunmow
a1caa09d2a chore: rename dev host localdev.blockninjacms.com -> blockninja.dev 2026-07-05 20:50:30 +08:00
Alex Dunmow
52a2501959 refactor: replace hand-rolled utility CSS with Tailwind classes (host build now scans theme templates) 2026-07-05 17:55:48 +08:00
Alex Dunmow
10cecadef6 fix(editorial): remediate hero dead-space, tiny titles, media balloon + mobile
Layout/whitespace:
- Hero: gate min-h-[75vh] + vertical-centering on hasImage so the text-only
  masthead no longer floats in ~800px of dead space; large display headline
  via CSS class (was collapsed to 0.72rem by editorial-caps clobbering text-6xl).
- Restore heading hierarchy: swap editorial-caps -> editorial-heading on every
  title/headline element (hero, card, newsletter, contact-form, cta, countdown,
  feature-grid, team, featured-posts, post-hero, menu-list, hours-location,
  author-bio-hero, password-reset-form). Masthead wordmarks (navbar/footer)
  keep editorial-caps by design.
- Home "river": constrain to a 48rem reading measure and add vertical rhythm
  (editorial-river/editorial-flow CSS) so stacked essay cards stop fusing into
  one seam-y block and body text no longer runs full-bleed wide.
- Newsletter: remove stray empty double-hairline artifact (single centered rule).
- Image: guard empty src so absent media no longer renders an empty muted box.

Mobile / JIT-safety:
- New width/spacing/hero-title behavior defined as theme CSS in manifest
  input_css_append (not JIT-scanned Tailwind), so it always compiles.
- Marginalia stack breakpoint widened 768px -> 1023px to match the article
  grid collapse, so the rail always gets its separator when stacked.

Build + check-safety green (32 checks: 19 ok 13 skip). No version bump.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-05 17:25:31 +08:00
Alex Dunmow
28a201a33a bump to 0.2.1 2026-07-05 16:44:48 +08:00
Alex Dunmow
ae082bede0 docs: publishing README 2026-07-05 13:43:24 +08:00
Alex Dunmow
a66113fce0 feat(editorial): Wave A theme lane (WO-TF-017) — personal essayist
Deliver the full Wave A contract for the editorial theme (personal
essayist / independent newsletter persona).

- 49 mandatory builtin overrides in templates/overrides/editorial/,
  re-skinned from the frozen builtins: hairline rules, small-caps labels,
  drop caps, narrow reading measure, oxblood accent. All content fields,
  provider fields, custom tags ({% img %}/{% form %}/{% signup_form %}),
  hx wiring, navbar drawer JS and auth/contact form wiring preserved
  verbatim; legacy button/card field reads reconciled (link/style/label,
  media/text).
- 7 page templates (default, full-width, landing, article, blog-index,
  contact, auth); article is the reading centrepiece with drop-cap opener,
  marginalia rail and a CSS-only reading-progress underline. All set the
  html.dark class and route body font through var(--font-body).
- Block rework: masthead/byline/pullquote/section_label/colophon deleted
  (now overrides of navbar/post-metadata/quote/divider/footer). Persona
  blocks: dropcap_intro, marginalia, reading_list, field_notes.
- 4 presets, all mode "both", book-paper light + sepia-on-charcoal dark.
- Bundled Playfair Display + Source Serif 4 (OFL, latin subset) in
  assets/fonts with license record; fonts.json populated; every
  font-family via var(--font-heading|body|mono, fallback).
- Themed email-safe wrapper (tables, inline styles, literal fonts).
- Master pages + seed demo site (home, about, blog with 3 essays,
  contact with form + data table + row_inserted email-admins workflow,
  login) in essayist voice.
- required_icon_packs=["lucide"]; RECOMMENDED_FONTS/ICONS updated.

Motion tier: CSS-first (progress underline, marginalia fade-in;
prefers-reduced-motion honored). Verified: make + ninja plugin verify +
check-safety all exit 0. Visual quality UNVERIFIED until Wave B.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-05 11:22:07 +08:00
Alex Dunmow
efbfaea74c feat: convert to codeless .bnp — templates + manifest, Go/templ deleted (WO-WZ-021)
Convert the Editorial theme from a Go+templ wasm plugin to a fully codeless
.bnp: 7 blocks + 4 built-in overrides + email wrapper transcribed templ→pongo2
.ninjatpl (byte-faithful, parity-verified 55/55 identical), 4 page templates,
blocks/blocks.yaml (fully-qualified editorial:<key>), master_pages.json, and
manifest.yaml (system/page templates, template_overrides, email_wrapper, css
input_css_append). Schemas moved schemas/→blocks/. All Go, templ, go.mod/go.sum
deleted. plugin.mod bumped 0.1.2→0.2.0, [compatibility] dropped. Makefile
rewritten to codeless targets.

Gates: ninja plugin build → (codeless, no plugin.wasm); ninja plugin verify → OK;
check-safety → OK.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-04 15:27:31 +08:00
Alex Dunmow
6c9426f69c 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:14:54 +08:00
Alex Dunmow
dc9e6385b5 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
1d7f784412 bump to 0.1.2 2026-07-03 22:09:46 +08:00
Alex Dunmow
03eb18e736 chore: declare templates category (themes carry categories) v0.1.1 2026-06-26 21:47:01 +08:00
Alex Dunmow
d9689d72d8 bump to 0.1.1 2026-06-26 00:45:19 +08:00
Alex Dunmow
edc80ce722 chore: showcase preview.png + align block/core to v0.14.1 2026-06-26 00:45:19 +08:00
Alex Dunmow
88cee1eba5 Add plugin.mod 2026-06-25 15:10:56 +08:00
Alex Dunmow
7367a10c48 chore: bump core to v0.14.0
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-13 13:42:55 +08:00
Alex Dunmow
37a54db435 chore: bump core to v0.13.1
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-06-10 22:30:53 +08:00
Alex Dunmow
8a30461333 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
1d9a4c8ce6 initial: theme plugin editorial
Bootstrapped during the 2026-06-06 BlockNinja consolidation. Was previously
an unversioned directory inside ~/src/blockninja-themes/editorial.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-06-06 14:11:28 +08:00