feat(field-guide): habitat & kind axis routes (FG-3b) #96

Merged
manlycucumber merged 1 commit from feat/field-guide-axes into develop 2026-07-11 19:03:07 +00:00
manlycucumber commented 2026-07-11 19:02:01 +00:00 (Migrated from github.com)

FG-3b of v0.4.0 — the two axis pages. Part of #92.

What's here

  • /field-guide/habitat/[habitat]/ and /field-guide/kind/[kind]/ — a filtered creature grid per value, via a small new AxisView (composes TopicCard + masthead; no CategoryView fork).
  • entries() from gated-present values only — enumerates the habitat/kind values actually present in the gated creature set. So no empty axis page ever prerenders, and a value carried solely by a gated-out creature (bestiary, the draft basilisk's kind) is never minted; an unknown/absent value 404s (load() guard). Build confirms only habitat/{woodland,farmland} + kind/mammal prerender.
  • Hub headings now link to these pages; the desktop window's intercept opens them in-window (FieldGuideBrowser gains an axis location; the shared intercept a habitat|kind branch).

Verification

CI gauntlet: check (0 err, 427 files) · lint · guard:colour · build (only present axis pages prerender; search stays 2) · guard:external · guard:content · guard:provenance · guard:offline (now checks an axis route) · 165 unit tests (+2).
e2e (local): Field Guide (6) incl. hub-heading→axis in-window, standalone axis page, and a gated-out bestiary kind 404 (gate proof); a11y (9) incl. an axis-page axe check. All green.

Scope fence

No album (FG-4/FG-5), no diagrams/maps (FG-6/FG-7). AxisView is presentation-only (crumbs come from the window / StandaloneChrome), matching the Library pattern.

**FG-3b of v0.4.0** — the two axis pages. Part of #92. ## What's here - **`/field-guide/habitat/[habitat]/`** and **`/field-guide/kind/[kind]/`** — a filtered creature grid per value, via a small new **`AxisView`** (composes `TopicCard` + masthead; no `CategoryView` fork). - **`entries()` from gated-present values only** — enumerates the habitat/kind values actually present in the gated creature set. So **no empty axis page ever prerenders**, and a value carried solely by a gated-out creature (`bestiary`, the draft basilisk's kind) is **never minted**; an unknown/absent value **404s** (`load()` guard). Build confirms only `habitat/{woodland,farmland}` + `kind/mammal` prerender. - **Hub headings now link** to these pages; the desktop window's intercept opens them **in-window** (`FieldGuideBrowser` gains an `axis` location; the shared intercept a `habitat|kind` branch). ## Verification CI gauntlet: `check` (0 err, 427 files) · `lint` · `guard:colour` · `build` (only present axis pages prerender; search stays 2) · `guard:external` · `guard:content` · `guard:provenance` · **`guard:offline` (now checks an axis route)** · **165 unit tests (+2)**. e2e (local): **Field Guide (6)** incl. hub-heading→axis in-window, standalone axis page, and **a gated-out `bestiary` kind 404** (gate proof); **a11y (9)** incl. an axis-page axe check. All green. ## Scope fence No album (FG-4/FG-5), no diagrams/maps (FG-6/FG-7). `AxisView` is presentation-only (crumbs come from the window / StandaloneChrome), matching the Library pattern.
Sign in to join this conversation.
No reviewers
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
Bosco/bosco!96
No description provided.