Skip to content

003 re-spec: interactive editorial deck (supersedes card rails) - #213

Merged
brunogbv merged 5 commits into
mainfrom
003-respec
Jul 4, 2026
Merged

brunogbv merged 5 commits into
mainfrom
003-respec

Conversation

@brunogbv

@brunogbv brunogbv commented Jul 4, 2026

Copy link
Copy Markdown
Owner

What & why

Re-specs feature 003 to the design a throwaway prototype validated (branch 003-proto,
owner-confirmed "works perfectly"), superseding the original horizontal card-rails direction which
the owner rejected. The new design is an editorial, full-viewport vertical "deck":

  • Deck — each section fills the viewport; one gesture/keypress advances exactly one section and
    rests centred. Native CSS Scroll Snap (not a JS scroll-jacker — the prototype proved a jacker
    fights macOS trackpad momentum; see docs/interaction-gotchas.md, docs: correct scroll-snap guidance (native CSS Snap over JS scroll-jacking) #175). Keyboard is a thin
    scrollIntoView layer that coexists with snap.
  • Rails — the 3 content-dense sections become horizontal summary-card rails; a card opens the
    full entry in a full-screen detail overlay (:target no-JS baseline + dialog a11y as PE).
  • Editorial restyle — Fraunces + Spline Sans (vendored, screen-only), cream/ink/terracotta,
    eyebrows, skills-as-chips. Signature: "The Through-Line" (a terracotta thread down the margin,
    one node per section).
  • PDF stays clean/linear Roboto — everything is screen-only via the 002 screen/print split; no
    pdf.js change; the PDF visual baseline is the guardrail.

Contents (spec-kit chain, all steps)

Housekeeping done

Scope / safety

Planning artifacts + one docs note only — no src/ change, so the rendered page and PDF are
unchanged and the visual + PDF gate stays green. Implementation follows per user story (MVP = US1, the
deck) in subsequent PRs, each closing its 003-T### issues.

🤖 Generated with Claude Code

brunogbv and others added 5 commits July 4, 2026 17:53
…ction)

Rewrite specs/003-interactive-card-rails/spec.md to the prototype-validated direction
(branch 003-proto, owner-confirmed 'works perfectly'), superseding the original
horizontal-card-rails spec:

- Primary interaction is now a full-viewport vertical 'deck' (each section ~1 viewport,
  one section per gesture, rests centred) via NATIVE CSS Scroll Snap — explicitly NOT a
  hand-rolled JS scroll-jacker (per docs/interaction-gotchas.md); keyboard is a thin
  scrollIntoView layer that coexists with snap.
- Content-dense sections are horizontal rails of SHORT summary cards that open a
  full-screen :target detail overlay (no-JS openable/closeable; Esc is a JS enhancement).
- Editorial restyle (display serif + body sans, VENDORED not CDN; cream/ink/slate/terracotta;
  skills as proficiency chips) — screen-only; PDF stays clean/linear Roboto.
- 5 user stories (deck P1; rails+detail P2; restyle P2; a11y/no-JS P2; signature P3),
  17 FRs, 9 measurable SCs. Re-validated the spec-quality checklist.

Done as an in-place re-spec of feature 003 (kept the folder + .specify/feature.json), not
/speckit-specify (which would scaffold 004). Self-reviewed (accuracy/consistency/testability
+ vs constitution + gotchas doc); Super-Linter clean.

Co-Authored-By: Claude Opus 4.8 (1M context) <[email protected]>
/speckit-clarify (2 questions, both answered) integrated into the spec:
- Deck applies at ALL breakpoints, but any panel taller than the viewport relaxes to
  internal scroll (mandatory snap reserved for panels that fit) so content is never
  trapped on small phones (FR-001 + Clarifications + edge case).
- Under prefers-reduced-motion, snapping is retained (a resting position) while the
  smooth glide and overlay/emphasis transitions are suppressed (FR-014 + US1 scenario 4).

Re-validated the spec-quality checklist (all items still pass; Notes updated to record
the two resolutions and what stays deferred to plan). Self-checked for consistency
(relax-tall is native under mandatory snap; reduced-motion matches US1). Markdown clean.

Co-Authored-By: Claude Opus 4.8 (1M context) <[email protected]>
…uickstart)

/speckit-plan (Phase 0 + 1) for the re-spec'd deck design:
- research.md: D1–D10 decisions (native scroll-snap deck not a JS jacker; deck-at-all-
  breakpoints w/ tall-panel relax; summary-card rails -> :target detail overlay; nested-
  scroll via overscroll-behavior; dialog a11y layered on :target; editorial design system;
  vendored Fraunces+Spline Sans via @fontsource-variable, screen-only; the Through-Line
  signature; deterministic gate w/ PDF baseline as the screen-only guardrail; no-JS posture).
  Resolved by 3 research passes (verified vs the prototype + real repo/package files).
- plan.md rewritten: Summary, Technical Context, Constitution Check (PASS v1.3.0), Project
  Structure (new deps: 2 OFL variable fonts vendored like Roboto; deck.js/overlay.js like reveal.js).
- data-model.md: content -> deck panels / rails / summary cards / detail overlays / chips /
  Through-Line nodes (no new data).
- contracts/interaction-contract.md (replaces rail-interaction-contract.md): deck/rail/overlay
  DOM+ARIA, screen/print, PE, gate obligations.
- quickstart.md: 10 validation scenarios mapped to SCs.
- Removed stale design.md (folded into research D6/D8). Refreshed the gotchas ADR-0004 note.

tasks.md is still the stale rails version — /speckit-tasks regenerates it next. Self-reviewed
(cross-artifact consistency + vs spec/constitution/gotchas); Super-Linter clean.

Co-Authored-By: Claude Opus 4.8 (1M context) <[email protected]>
Regenerate tasks.md for the deck design (replaces the stale rails-era tasks + their old
issue links). 37 tasks across 8 phases:
- Setup (T001-T003): vendor Fraunces + Spline Sans via @fontsource-variable in build.js.
- Foundational (T004-T006): .js PE gate, screen/print CSS scaffolding, deterministic deck snapshots.
- US1/P1 (T007-T013): full-viewport native-snap deck + keyboard scrollIntoView (the MVP).
- US2/P2 (T014-T021): summary-card rails + :target detail overlay + dialog a11y PE.
- US3/P2 (T022-T025): editorial restyle (fonts/palette/eyebrows/chips), screen-only.
- US4/P2 (T026-T029): a11y / no-JS / reduced-motion hardening.
- US5/P3 (T030-T033): the Through-Line signature.
- Polish (T034-T037): regenerate screen baselines (PDF baseline held as guardrail), docs +
  ADR 0004, lint/visual green + PR.

All tasks carry a file path; US phases carry [US#]; dependencies + MVP-first strategy included.
Self-reviewed: format-validated (no dup IDs, correct labels), all 17 FRs mapped, SCs covered
via quickstart scenarios; consistent with the reviewed plan bundle. Super-Linter clean (fixed
an MD018 from a wrapped '#164').

Co-Authored-By: Claude Opus 4.8 (1M context) <[email protected]>
Ran /speckit-taskstoissues (via gh; no GitHub MCP connected). Created 37 feature-scoped
issues 003-T001..003-T037 (GitHub #176-#212) in milestone #5, and rewrote each tasks.md
checkbox into a link to its issue (issues + milestone bar are the status source of truth).

Feature-prefixed titles (003-T###) per the #162 customization, so dedup did NOT collide
with the old rails-era T001..T019 issues (now closed as superseded + de-milestoned).
Milestone #5 renamed 'Interactive editorial deck (003)'; it now holds exactly these 37.
Trimmed T006's line so the added URL keeps it under the MD013 400-char limit.

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-l59lli87s-bruno-valerios-projects.vercel.app

commit 075d6f0 · updated 2026-07-04 18:25 UTC

@brunogbv
brunogbv merged commit 584d382 into main Jul 4, 2026
13 checks passed
@brunogbv
brunogbv deleted the 003-respec branch July 4, 2026 18:25

This branch was successfully deployed

1 active deployment
preview-pr-213 — 075d6f0b 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