Skip to content

Press line, motion: stepped, sticky, with terminal replay #65

Closed

Description

@JacobStephens2

Parent

#61

What to build

Enhance the static press line (#64) into the stepped, sticky version, with a terminal that replays each unit's lines. The static markup stays the source. This ticket adds behaviour and never builds the press in JavaScript.

  • When to enhance: the one vanilla JS module enhances the press only when it runs and prefers-reduced-motion is not reduce. Otherwise the static version stays as shipped.
  • Layout: the section becomes position: sticky over about 3–4 viewport heights. On wide viewports the press stays full width, and the terminal sits beneath it inside the sticky area. On phones they stack.
  • Steps: step markers watched by an IntersectionObserver, and 1–4 step buttons, all call one render(n). It sets the whole state for step n: which unit is lit, the button state, and the terminal's lines. It never applies incremental changes, so a fast scroll that skips a step can't desynchronise anything. Use a root margin of about -45% 0px -45% 0px; the prototype found -50% 0px -50% 0px never fires in Chrome.
  • Terminal: it replays the current unit's lines (the same A thirdshift-plugin-* temp dir can outlive its Run #24 Run lines as the static columns), with a Pause/Play control (WCAG 2.2.2).
  • Motion: short transitions between steps only. No scroll snap, no smooth-scroll or animation libraries, and no scrubbed animation tied to the scroll position.

Acceptance criteria

  • Scrolling through the section lights C, M, Y and K in turn, and the terminal always shows the lit unit's lines, including after a very fast scroll.
  • The 1–4 buttons jump to a step, and the state matches what scrolling to that step shows.
  • Pause stops the terminal replay, and Play resumes it.
  • With reduced motion, or with JS disabled, the static version from Press line, static: the full How a Run works diagram in HTML and SVG #64 is shown unchanged.
  • Scrolling behaves natively: no snapping, and no hijacking.
  • It works in current Chrome, Safari and Firefox.
  • Screen recordings or screenshots of the steps are attached to the pull request.

Blocked by

Metadata

Metadata

Assignees

No one assigned

    Labels

    ready-for-agentFully specified, ready for an AFK agent

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions