Pilgrimage

Pilgrimage: Skirmish

Versions

Pilgrimage Online is generated from the canonical rules in Notion, and the git commit of synced content is the version freeze — no edition is "live" until it is committed. Each rules page also carries its own status (v1.0 or Reconciled) and sync date in its footer. The history below is the plain-English record; newest first.

  • /roster is now an interactive Oathband journal, replacing the static

sheet (its print output still yields the printable sheet). Mirrors the paper

roster's three pages — Oathband (name/cause/road/season, the Supplies ·

Renown · Legacy · Hope · Hallowed · Doom tracks, the ten Skills, eight

Blessings, Vows by Song, Marks/Hoard/Landmarks/Waymarks), Pilgrims (the

six stats M·A·V·W·P·E, armour/2 weapons/3 items, Lore), and Shadow

(name, Nature, opponent types, Shadow Lore) — and adds a Chronicle: the

weekly Travel → Trial → Camp loop, the Company-weeks instrument.

  • Local only, no accounts/server: state persists in the browser, keep

multiple Oathbands and switch between them, and export/import an Oathband

as JSON. Live helpers the paper can't do: Oathband Renown (sum of Pilgrims),

Camp Actions available (⌈Pilgrims ÷ 2⌉), and the Shadow-generation count

(⌊(Renown + Doom) ÷ 10⌋ + Pilgrims). Vows track as five increment pips.

  • Two print modes, no fudging between them — both landscape. *Print —

filled* lays out what you've entered (form chrome stripped — no dropdown

arrows, spinners or placeholder text), flowing the cards into two columns

so the page width is used rather than a narrow central ribbon. Print — blank

prints a proper panelled hand-fill sheet modelled on the paper roster's

distribution of space: page 1 Oathband (tracks · Marks · Skills · Vows ·

Blessings · Hoard), page 2 the Roster table, page 3 the Shadow. The Vows panel

gives structure but not content — ruled rows with five blank pips each, to fill

in by hand. Clean B&W.

  • Home rebuilt as the ascending masthead (direction chosen from a First

Bronze design-canvas exploration): a two-tone Fraunces wordmark — Pilgrim in

ink, age in bronze, the Bronze Age built into the logotype — over the pitch

line, one bronze CTA, and a foot-strip of quick facts. The illustration is one

original inline SVG: the Oathband climbing a mile-ticked road toward a

cup-and-ring sun-disc — the road that makes them pay for every mile, and

the light at its end. Flat black + bronze on the pale field; prints B&W and

reflows to a foot-strip on small screens. On the home page the header shows the

byline (the giant wordmark is the masthead). Plus the company-as-character

thesis.

  • /world: a grim-bright, type-led introduction to Lurûn (stone → bronze →

verdigris, the road, the Shadow, the Oathband), with carved cup-and-ring

dividers and a drop-initial. Copy is a first-pass scaffold drawn from

established language — to be replaced with canonical Lurûn worldbuilding.

  • Rules chapters now render as a three-column reading view: a contents tree

anchored to the left edge (its own chrome tone, a full-height divider from the

content) with collapsible book sections — the active book open with the

current chapter highlighted, the rest collapsed by default; the measured rules

column in the middle; and an apparatus rail on the right (its own divider)

with an auto "On this page" built from the chapter's headings.

  • First piece of interactive marginalia: on Naming the Oathband, a live

name generator in the rail rolls 2×D12 against the two naming tables

already on the page (no duplicated data) — e.g. "Wayworn Sons".

  • Wide rules tables now scroll inside their own container (never the page); the

view collapses to a single column with a "Contents" disclosure on small

screens; the header nav wraps to its own line on narrow widths. Prints as the

centre column only.

  • A build-time rehype plugin (src/lib/rehype-glossary.mjs) links the first

occurrence of each core glossary term in every rules chapter to its

/glossary#<term> anchor, with the definition in a native hover tooltip.

  • Matcher is built from the Core vocabulary only (src/lib/glossary.mjs),

first-occurrence-per-term-per-page, skipping headings/code/tables and the

glossary chapters themselves — so links are useful, not noisy. Verified: no

dead anchors across all 25 chapters. Plain black in print.

  • Synced all 25 Skirmish chapters from the Rules (Canonical) Notion DB into

src/content/rules/ (the committed version freeze). The full site builds — 25

routes under /skirmish/<slug>, tables and glossary rendering in First Bronze.

  • Deploy model settled: commit the synced content; Cloudflare Pages runs only

npm run build (no NOTION_TOKEN in CI). Setup steps in DEPLOY.md.

  • Added wrangler.toml (pages_build_output_dir = dist), bumped .nvmrc to 22,

and made npm run sync CI-safe (--env-file-if-exists).

  • Layout: Notion header-row tables (first row in <td>) now styled as headers.

Note: content was sourced through the Notion MCP because this build sandbox blocks

egress to api.notion.com. Re-running npm run sync where egress is open

reproduces the canonical freeze — review the diff, commit (the Phase D loop).

First commit. Phase B/C vertical slice stood up end-to-end: **sync → one rules

chapter rendering → committed**.

  • Minimal Astro project scaffolded (package.json, astro.config.mjs,

tsconfig.json).

  • rules content collection (src/content.config.ts) with the schema matching

the sync frontmatter: title, order, book, status, collections,

notion_id, synced.

  • Homebrew sync-notion.mjs (zero-dependency, built-in fetch) pulls chapters

from the Pilgrimage — Rules (Canonical) Notion database → Markdown in

src/content/rules/. npm sync script; NOTION_TOKEN read from gitignored

.env.

  • One dynamic route src/pages/skirmish/[...slug].astro +

RulesLayout.astro render the chapter in the First Bronze look, with a

first-pass B&W A5 print stylesheet and a version/status footer.

  • Proof chapter synced and rendering locally: Deployment & Turn Structure

(Book of Ordeals, Skirmish v1.0) at /skirmish/deployment-turn-structure.

Scope held to the slice deliberately — remaining Phase C pages come next, after

review.

No public release yet — the soft launch (site up, DriveThruRPG listed, version stated honestly) comes at the end of Phase C.