Skip to content

Bring in what appears with the demo video's motion (slice 25) - #52

Merged
TechNomadCode merged 2 commits into
mainfrom
feat/motion-arrivals
Oct 22, 2026
Merged

TechNomadCode merged 2 commits into
mainfrom
feat/motion-arrivals

Conversation

@TechNomadCode

Copy link
Copy Markdown
Owner

The app's motion now follows the README's demo video (slice 25 in docs/plan.md; docs/decisions.md, Design, 2026-10-22).

What changes

  • One set of motion values in src/app/globals.css: the video's two eases; its three springs, sampled from Remotion 4.0.538's own spring() into linear() (within 0.004, each as long as measureSpring says); the fade each motion pairs with (Math.min(1, p * k), as in the video); and its durations. The fold's slide, the rolling count, the copy label and button, the just-changed glow and Tailwind's default transitions use them. Without linear(), everything falls back to the ease-out.
  • What appears after the page has shown arrives (rises a few pixels, sharpens from a slight blur, fades in): the chat and the PRD as the intro gives way (the PRD 0.2s later), the visitor's message from its corner, every step line, the saved line with a tick that draws itself and pulses once, a section's statements one after another, tables, the suggestion, the check-in, the download, the failure and allocation notices, and Jump to latest. A conversation brought back after a reload shows at once, reduced motion turns it all off, and text and names are there from the start.
  • The chat follows its end as laid out (followEnd in src/features/chat/chat.tsx), so a line rising in as the chat's last no longer makes the whole conversation sink back as it settles.

Fix (its own commit)

A folded run's hidden lines carry sr-only labels, which are absolutely positioned. They escaped the fold's clip and stretched the chat below its last line, leaving blank space while a folded run was an answer's last line (on main too). The fold's clipping box is now positioned. The regression test in tests/e2e/layout.spec.ts fails without the fix.

Server and model

No file in src/server or src/lib changes, so nothing the model receives changes.

Tests

  • New unit tests for what arrives and what doesn't (tests/unit/arrival.test.tsx, plus the conversation, rich text, PRD, workspace and kept-conversation tests). New end-to-end tests for the animations under both motion settings and after a reload, the blank space, and the conversation staying still.
  • Changed: the accessibility helper and the layout tests' childGaps finish every animation that ends before they read; the highlight's duration is 1.13s, not 2s; the Jump to latest unit tests' pane also gives the conversation its laid-out height.

Checks (local, 2026-10-22)

  • npm run verify: 574 unit tests and the production build.
  • npm run test:e2e: 77 passed; the 8 new ones passed five more runs each.
  • Two recordings of the whole scenario tour on a production build, read frame by frame around each arrival. No long animation frames during the tour.

Unverified

Safari and Firefox (only Chromium ran), a phone, and the motion on staging at the real model's pace.

TechNomadCode and others added 2 commits October 22, 2026 20:12
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…otion

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@TechNomadCode
TechNomadCode merged commit aebf8a6 into main Oct 22, 2026
5 checks passed
@TechNomadCode
TechNomadCode deleted the feat/motion-arrivals branch October 22, 2026 18:39
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