Skip to content

US5: the Through-Line signature (screen-only; PDF unchanged) - #220

Merged
brunogbv merged 1 commit into
003-deckfrom
003-us5
Jul 4, 2026
Merged

brunogbv merged 1 commit into
003-deckfrom
003-us5

Conversation

@brunogbv

@brunogbv brunogbv commented Jul 4, 2026

Copy link
Copy Markdown
Owner

What

The 003 signature: a fixed terracotta thread down the left gutter with one node per section; the
fill + active node advance as you snap through the deck — an ambient progress spine and a
distributed-systems/dispatch nod (a route traversed hop by hop). It doubles as a bonus jump-nav.

Closes #205, #206, #207, #208. This is the last of the five user stories.

How it works

  • index.html: a .through-line .screen nav (<ol> of section anchor-dots + a visually-hidden
    aria-live status), placed after the top nav.
  • styles.css (@media not print): fixed left-gutter rail (position:fixed → CLS 0), a faint full
    rail + a terracotta fill (height: calc(var(--tl-progress) * 100%)), node dots with
    .is-past/.is-active, visually-hidden labels/status, hidden below md (the top nav serves
    mobile); transitions only under prefers-reduced-motion: no-preference.
  • deck.js: initThroughLine (DOMContentLoaded-guarded — deck.js is in <head>) sets
    --tl-progress, the active node + aria-current, and the aria-live "Section N of M" on scroll
    (rAF-throttled). On the hero, no node is active yet.

No-JS: a static line of anchor-dot jump links. Reduced-motion: state jumps, no tween.

Verification

  • Pinned image: make visual 8/8, pdf-visual ✓, PDF baseline unchanged (screen-only).
  • Lint direct: deck.js Standard-clean, styles.css stylelint-clean.
  • Behaviour probed: hero → no active node (progress 0); Additional → node 4/5 active, progress 0.75,
    aria-live "Section 4 of 5". Viewport screenshots confirm the spine + fill.
  • Code-review: two findings fixed (empty-nodes guard; hero no longer falsely marks node 1 active).

⚠️ Gate coverage note (harness follow-up)

The fixed Through-Line is not captured by the fullPage visual baselines (a known Playwright
fullPage + position:fixed limitation) — so the signature itself isn't visual-regression-protected
yet. The feature is verified working (viewport shots + geometry/aria probe). I'll raise a harness
issue to add a viewport-level snapshot covering the fixed chrome.

Next

With US5 merged, all five stories are on 003-deck → then 003-deck → main ships the whole
interactive editorial deck to valerio.dev in one production deploy and closes milestone #5.

🤖 Generated with Claude Code

A fixed terracotta thread down the left gutter with one node per section; the fill + active
node advance as you snap through the deck — an ambient progress spine and a
distributed-systems/dispatch nod (a route traversed hop by hop). The 003 signature.

- index.html: a .through-line .screen nav (ol of section anchor-dots + a visually-hidden
  aria-live status), after the top nav. It's also a bonus jump-nav.
- styles.css (@media not print): fixed left-gutter rail (position:fixed → CLS 0), faint full
  rail + a terracotta fill (height = --tl-progress), node dots with .is-past/.is-active states,
  visually-hidden labels/status, hidden below md (the top nav serves mobile); transitions only
  under prefers-reduced-motion: no-preference (reduce → the fill/node states jump).
- deck.js: initThroughLine (DOMContentLoaded-guarded, since deck.js is in <head>) — on scroll
  (rAF-throttled) it finds the nearest-centred panel (hero + sections) and sets --tl-progress,
  the node .is-past/.is-active + aria-current, and the aria-live 'Section N of M' status. On the
  hero no node is active yet.

No-JS: a static line of anchor-dot jump links. Reduced-motion: state jumps, no tween. Screen-only;
PDF unchanged (verified: make visual 8/8, pdf-visual ✓, PDF baseline untouched). Lint verified
directly (deck.js standard-clean, styles.css stylelint-clean). Code-reviewed — two findings fixed
(empty-nodes guard; hero shows no active node).

Note: the fixed Through-Line is not captured by the fullPage visual baselines (a Playwright
fullPage + position:fixed limitation) — a gate coverage gap to address with a viewport-level
snapshot (harness follow-up); the signature itself is verified working (viewport shots + probe).

Closes #205
Closes #206
Closes #207
Closes #208

Co-Authored-By: Claude Opus 4.8 (1M context) <[email protected]>
@github-actions

github-actions Bot commented Jul 4, 2026

Copy link
Copy Markdown

🔺 Vercel preview: https://cv-7yf36tyqp-bruno-valerios-projects.vercel.app

commit 609d680 · updated 2026-07-04 22:09 UTC

@brunogbv
brunogbv merged commit f4b2133 into 003-deck Jul 4, 2026
13 checks passed
@brunogbv
brunogbv deleted the 003-us5 branch July 4, 2026 22:10
brunogbv added a commit that referenced this pull request Jul 4, 2026
Ships feature 003 (interactive editorial deck: full-viewport snap sections, summary-card rails + detail overlays, editorial restyle with vendored fonts, a11y/no-JS/reduced-motion, and the Through-Line signature) plus the US2 detail-overlay interaction fix. Screen-only; PDF unchanged. Integration branch 003-deck (US1 #214, US3+US2 #217/#218, US4 #219, US5 #220, overlay fix e5e713e).

This branch was successfully deployed

1 active deployment
preview-pr-220 — 609d680f Deployed Jul 4, 2026 by github-actions[bot]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant