Skip to content

Session handover — 2026-07-04 (pt2)

Pointer note. Second session of the day, continuing on branch spike-0-one-site-operational (still not merged to master). Picked up "Next priority 1" from the earlier session-2026-07-04-handover.md and closed it, plus fixed a portfolio-wide icon gap surfaced while verifying.

Branch / publish note

Code commits are on spike-0-one-site-operational. Wiki edits (this file + the known-issues/known-patterns updates below) are committed and pushed to origin so the published wiki updates — but the branch's code still isn't on master, so the deployed-from-master picture lags until that merge (still open, see below).

What changed — where to look

Priority 1 done — CMS slug routing (commit 32badfb): - apps/cms/src/pages/[slug].astro — SSR catch-all → getEmDashEntry → canonical FcrBlocks (ADR-0004 Path A), mirroring index.astro. Static routes take precedence; missing/empty → rewrite("/404"); /home → 301 /. 404.astro now sets status 404 so the rewrite is a real 404. - The 8 garvanbay pages that had D1 data but 404'd now render live. The "slug routing not added" bullet in known-issues.md is deleted (resolved).

Icon-map gap fixed (commit fa92cd6): - packages/components-v3/.../ui/icon/icon.astro — registered circle-check/menu/clock/search (were firing placeholders), latent check/shield, and email→mail / twitter→X aliases. The default checklist bullet circle-check was unmapped, so every checklist portfolio-wide showed the literal circle-c placeholder text. - Shared primitive — scaffold.js copyTree's it into per-site builds too; additive-only, no regression. linkedin remains the only unmapped icon firing (no simple-icons glyph — deferred).

known-issues.md: - Deleted resolved slug-routing bullet. - Rewrote "LinkedIn icon falls to placeholder" → now the only unmapped icon firing; records the empirical scan (5 icons → 1) and the custom-SVG fix path; notes google-reviews (in enum, not firing).

known-patterns.md — 2 new entries (Components/pipeline): - astro dev reads a miniflare D1, not data.db — a third store; local content verification needs wrangler d1 execute DB --local. - Icon static-map gaps surface as truncated placeholder text (circle-c = circle-check.slice(0,8)); enumerate the whole gap set via a deployed-HTML missing icon: scan, don't fix one at a time.

Deployed state

  • Worker replatform-emdash-demo (personal cathaldempsey account), emdash.dcathal.org. Redeployed twice this session; current version b8963c51 (post icon-map). Deploy uses CF_API_TOKEN_CD (from fcr-dashboard/.env.local) via CLOUDFLARE_API_TOKEN, overriding the fcrmedia OAuth session — the OAuth whoami is the wrong account.
  • Remote D1 unchanged (content already present; routing was the only gap — no reseed needed).

Verified live

All 8 slugs 200 with content on emdash.dcathal.org; unknown → 404; /home → 301. Deployed missing-icon placeholders dropped from 5 distinct icons (206 total) to 1 (linkedin). company-secretarial checklist now renders real <svg> check bullets.

Next priorities

  1. Merge decisionspike-0-one-site-operationalmaster still open (carried over from pt1). The published-from-master gap persists until then.
  2. Priority 2 (carried over) — extend Option A image fields to Hero / CTA-strip / Header (mechanical repeat of the fcr.about fix) so they stop rendering blank in the admin.
  3. LinkedIn custom SVG — closes the last icon placeholder if wanted.
  4. Contact form real submission + move /contact onto FcrBlocks.

Milestone framing still lives in scope-2026-07-04-one-site-operational.md.