Show the product itself at the top of the landing page #249

Merged
cruelacid merged 2 commits from worktree-hero-spike into main 2026-10-01 21:12:54 +01:00
Owner

Task: NEC-196

The landing page hero was a CSS animation of a mock editor. It's now a recording of the product: Priya's Obsidian while Tomás works in it from another vault. First one note, where both type at once and his caret goes off screen and back. Then one board, where both move, resize, link and type in cards. The plugin's README gets the same loop as an animated WebP.

Recording (packages/e2e/video/scripts/14-hero.mts):

  • Filmed by the existing video pipeline from two real vaults through a real server, with no band, cards or voice (bare: true).
  • A take fails if any mark it shows wasn't drawn on Priya's screen, or if either person's words or links don't read back on both screens.
  • The render writes the page's files: the loop with its last 0.4 s dissolving into its first, AV1 and H.264 encodes, a poster, and readme.webp.

Site:

  • <video autoplay muted loop playsinline> with no script, so the CSP is unchanged and CI's no-executable-content check passes on the build.
  • Under reduced motion the first frame shows instead of the video.
  • /assets/hero/ holds about 2 MB for the page plus 1.5 MB for the README image.
  • A missing hero file fails the build. That's mutation-checked: removing poster.jpg makes the build exit 1.

README: scripts/build-mirror.mjs links https://nectenda.com/assets/hero/readme.webp, so a re-recorded hero reaches it with the site's next deploy. build-mirror --check passes.

Found while filming: while you drag a card, the plugin holds back every peer's move and resize on your screen until you let go, not just the dragged card's. Nothing is lost, but it misleads. docs/sync-limitations.md is corrected here. Narrowing the hold is NEC-195.

Local checks: pnpm test (all suites), pnpm -r typecheck, pnpm lint, the site's npm test and build, and build-mirror --check all pass. The landing page was previewed and approved locally.

Changelog

The nectenda.com landing page now opens on a recording of two people working together in Obsidian, in place of an animated mock-up.

🤖 Generated with Claude Code

https://claude.ai/code/session_01AsUFqoi4GHKYjFtPbYCgRp

Task: NEC-196 The landing page hero was a CSS animation of a mock editor. It's now a recording of the product: Priya's Obsidian while Tomás works in it from another vault. First one note, where both type at once and his caret goes off screen and back. Then one board, where both move, resize, link and type in cards. The plugin's README gets the same loop as an animated WebP. **Recording** (`packages/e2e/video/scripts/14-hero.mts`): - Filmed by the existing video pipeline from two real vaults through a real server, with no band, cards or voice (`bare: true`). - A take fails if any mark it shows wasn't drawn on Priya's screen, or if either person's words or links don't read back on both screens. - The render writes the page's files: the loop with its last 0.4 s dissolving into its first, AV1 and H.264 encodes, a poster, and `readme.webp`. **Site:** - `<video autoplay muted loop playsinline>` with no script, so the CSP is unchanged and CI's no-executable-content check passes on the build. - Under reduced motion the first frame shows instead of the video. - `/assets/hero/` holds about 2 MB for the page plus 1.5 MB for the README image. - A missing hero file fails the build. That's mutation-checked: removing `poster.jpg` makes the build exit 1. **README:** `scripts/build-mirror.mjs` links `https://nectenda.com/assets/hero/readme.webp`, so a re-recorded hero reaches it with the site's next deploy. `build-mirror --check` passes. **Found while filming:** while you drag a card, the plugin holds back every peer's move and resize on your screen until you let go, not just the dragged card's. Nothing is lost, but it misleads. `docs/sync-limitations.md` is corrected here. Narrowing the hold is NEC-195. **Local checks:** `pnpm test` (all suites), `pnpm -r typecheck`, `pnpm lint`, the site's `npm test` and build, and `build-mirror --check` all pass. The landing page was previewed and approved locally. ## Changelog The nectenda.com landing page now opens on a recording of two people working together in Obsidian, in place of an animated mock-up. 🤖 Generated with [Claude Code](https://claude.com/claude-code) https://claude.ai/code/session_01AsUFqoi4GHKYjFtPbYCgRp
A silent, window-only take (storyboard BARE) of Priya's Obsidian while
Tomás works in it from another vault: a note where both type at once and
his caret goes off screen and back, then a board where both move, resize,
link and type in cards. The render branch for it skips the band, the
cards and the voice.

Filming it found that a canvas gesture holds back every card's remote
geometry, not just the cards it moves. Nothing is lost, but it misleads;
sync-limitations.md now says so, and narrowing it is NEC-195.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01AsUFqoi4GHKYjFtPbYCgRp
Show the product itself at the top of the landing page
All checks were successful
Release note / release-note (pull_request) Successful in 13s
CI / build (pull_request) Successful in 5m8s
CI / e2e (pull_request) Successful in 7m26s
CI / promote (pull_request) Has been skipped
Deploy site / deploy (push) Successful in 56s
CI / build (push) Successful in 6m10s
CI / e2e (push) Successful in 7m37s
CI / promote (push) Successful in 38s
a4a6ff6a48
The hero was a CSS animation of a mock editor. It is now the recorded
loop from storyboard 14-hero: Priya's Obsidian while Tomás works in it
from another vault, in a note and then on a board. It plays as a muted,
looping <video> with no script, falls back from AV1 to H.264, and shows
its first frame instead under reduced motion.

The render writes the page's files beside the take: the loop with its
end dissolving into its start, both encodes, the poster, and an animated
WebP of the same loop that the plugin's README now links from the site,
since GitHub plays no video inline.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01AsUFqoi4GHKYjFtPbYCgRp
Sign in to join this conversation.
No reviewers
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
Nectenda/nectenda!249
No description provided.