26 Commits

Author SHA1 Message Date
Alex Dunmow
46a45d7160 bump to 0.4.0 2026-07-06 19:26:19 +08:00
Alex Dunmow
ac4ba1523c feat: Wave B gallery screenshots (home/about/article × light+dark)
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-06 19:25:58 +08:00
Alex Dunmow
7456205750 bump to 0.3.2 2026-07-06 16:30:18 +08:00
Alex Dunmow
c71eebf919 fix(earthen): image block caption below image, not beside it
The figure was a flex ROW (flex justify-*), so a figcaption became a second
flex item sitting to the right of the frame. flex-col + items-* keeps the
alignment semantics and puts the caption underneath.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-06 16:30:18 +08:00
Alex Dunmow
bf89cdba6d bump to 0.3.1 2026-07-06 16:24:40 +08:00
Alex Dunmow
c2fc45e7f7 fix(earthen): kill placeholder copy, enrich home, wire stock media, size all SVGs, full-bleed article header
- seed: real Rootline Trust content — no 'example figures' placeholder copy;
  home composed as split hero (hands-soil image) + stats + feature-grid +
  botanical divider + field note + newsletter; About gap filled with fern
  image + impact report between story and pull-quote; first article expanded
  to ~10 field-notes paragraphs with inline forest image; 6 Pixabay images
  seeded via seed/media (id+file+alt)
- article.ninjatpl: header slot now full-bleed (was max-w-3xl wrapped — the
  boxed-header artifact bracketing the nav with vertical rules)
- landing.ninjatpl: main slot full-bleed so composed sections span the page
- SVG geometry guard: every <use>-icon svg now carries explicit width/height
  matching its size class (18 files)

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-06 16:24:31 +08:00
Alex Dunmow
32455b5497 bump to 0.3.0 2026-07-06 09:25:04 +08:00
Alex Dunmow
bd0d886854 feat: Wave B gallery screenshots (home/about/article × light+dark) 2026-07-06 09:24:44 +08:00
Alex Dunmow
24a11b75d3 chore: rename dev host localdev.blockninjacms.com -> blockninja.dev 2026-07-05 20:50:30 +08:00
Alex Dunmow
ad1a1d83aa fix(earthen): repair blank hero (.text hard-error) + trim section whitespace
Hero blank-band bug (root cause):
- The hero override read styled-text fields as `field.text|default:field`
  (eyebrow/headline/subheadline/description). The ninjatpl engine hard-errors
  on attribute-access-against-a-bare-string, and the demo seed passes these
  fields as bare strings, so the whole hero errored and rendered as an empty
  ~75vh band on the landing page. Switched to `field|get:"text"|default:field`
  — the process-global `get` filter degrades gracefully on a bare string
  (returns nothing, so `|default:` falls back to the string) and still reads
  `.text` from the admin/editor `{text,color}` object form. Matches the fixed
  sibling lanes (terminal, scifi-clean). navbar `cta.text` left as-is: that
  field is always a link object, never a bare string (terminal did the same).

Whitespace pass:
- Trimmed oversized marketing section padding py-16 md:py-24 -> py-12 md:py-20
  across 15 blocks (cta, feature-grid, pricing, stats, team, testimonial,
  timeline, faq, countdown, rich-section, contact-card, contact-form,
  event-list, menu-list, hours-location) to remove dead inter-section bands.
  Tailwind classes only — the host Tailwind build now scans theme .ninjatpl,
  so responsive utilities compile; no duplicate hand-rolled media-query CSS
  added.

No new CSS (earthen's manifest CSS is all bespoke aesthetic — nothing
duplicated a utility). No scroll-reveal system exists to harden; the stats
count-up already no-ops under reduced-motion / no-JS and renders final values.
Codeless build OK (earthen@0.2.1). check-safety: 32 checks 19 ok 13 skip -> OK.
No version bump.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-05 17:52:46 +08:00
Alex Dunmow
7e29730072 fix(theme): drive responsive layout from theme-owned CSS
Host Tailwind JIT does not scan theme templates, so responsive grid/hero
utilities (sm:/md:/lg:grid-cols-*, min-h-screen, arbitrary values) are
dropped and multi-column layouts collapse to one column. Ship the
load-bearing responsive layout as compiled theme CSS and point the
override templates at it. Layout only — colours stay on semantic tokens.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-05 17:40:20 +08:00
Alex Dunmow
5f65fd8e4c bump to 0.2.1 2026-07-05 16:44:48 +08:00
Alex Dunmow
f52b9d0578 docs: publishing README 2026-07-05 13:43:21 +08:00
Alex Dunmow
8b8fb4d65d feat(earthen): Wave A theme lane — 49 overrides, 7 templates, seed (WO-TF-016)
Deliver the full conservation-nonprofit theme per OVERRIDE-CONTRACT (Wave A).

- 49 mandatory builtin overrides in templates/overrides/earthen/ (chrome,
  marketing, primitives, commerce, blog family, auth surface, page-suggestions),
  re-skinned from the frozen builtins into botanical/paper-grain chrome with
  all content fields, custom tags, provider vars, HTMX/auth wiring and JS
  preserved verbatim. Stale button/card/image/text/heading overrides fixed to
  the new field contract (link/style/label, media/text via {% img %}).
- 7 page templates: default, full-width, landing, article, blog-index, contact,
  auth.
- Blocks rework: impact_metrics/partner_logos/botanical_divider/footer converted
  to builtin overrides (deleted as theme blocks); donation_cta and field_note
  kept; impact_report added. Persona blocks now 3.
- 5 presets (all 19 tokens; mossbed/sage-morning/ember-loam are dual-mode).
- Bundled Fraunces + Work Sans woff2 (OFL) in assets/fonts/; fonts.json,
  RECOMMENDED_FONTS.md, RECOMMENDED_ICONS.md; required_icon_packs=[lucide].
- Seed: home/about/blog(3 posts)/contact/login as Rootline Trust, contact-form
  formConfig.targetTable=contact_submissions + row_inserted email-admins workflow.
- Themed email-safe wrapper; on-theme master pages; CSS-first botanical motion.

Verified: make (build) exit 0, make archive-check exit 0, check-safety exit 0.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-05 11:13:01 +08:00
Alex Dunmow
4aeddfe352 feat: convert to codeless .bnp — templates + manifest, Go/templ deleted (WO-WZ-021)
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-04 15:32:18 +08:00
Alex Dunmow
5e24bf4bf1 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:44 +08:00
Alex Dunmow
5c09c88a1b 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
482592c44e bump to 0.1.2 2026-07-03 22:09:40 +08:00
Alex Dunmow
b119e2433c chore: declare templates category (themes carry categories) v0.1.1 2026-06-26 21:47:01 +08:00
Alex Dunmow
bfc780a46e bump to 0.1.1 2026-06-26 00:47:46 +08:00
Alex Dunmow
5b78e8e03e chore: showcase preview.png + align block/core to v0.14.1 2026-06-26 00:47:46 +08:00
Alex Dunmow
65ec8e222e Add plugin.mod 2026-06-25 15:11:03 +08:00
Alex Dunmow
ea9cb2a751 chore: bump core to v0.14.0
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-13 13:42:51 +08:00
Alex Dunmow
9ed73e28d7 chore: bump core to v0.13.1
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-06-10 22:30:51 +08:00
Alex Dunmow
2d1475d3ac 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
49401f1b41 initial: theme plugin earthen
Bootstrapped during the 2026-06-06 BlockNinja consolidation. Was previously
an unversioned directory inside ~/src/blockninja-themes/earthen.

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