Skip to content

Publisher training-video plan + deterministic demo capturer#278

Open
Hackshaven wants to merge 3 commits into
mainfrom
claude/publish-dashboard-ui-v6c5y0
Open

Publisher training-video plan + deterministic demo capturer#278
Hackshaven wants to merge 3 commits into
mainfrom
claude/publish-dashboard-ui-v6c5y0

Conversation

@Hackshaven

Copy link
Copy Markdown
Member

What & why

New publishers face a dense portal UI with a lot of latent capability and no onboarding film (the repo had no UI-motion assets — only the still-PNG report-out/ gallery). This adds a "why + how" video production plan and the capture tooling to produce its portal footage reproducibly.

Deliverables

docs/VIDEO_PRODUCTION_PLAN.md — treatment + shot-by-shot script + runbook.

  • A ~4:30 hero film ("Reach Without Surrender") in four acts, grounded in MISSION.md's two-walls thesis: the problem → the public payoff (globe / blog→"Play tour" / Orbit / embed) → the portal happy-path (hitting the signature moments) → reach-without-surrender + CTA. Act 3 maps each VO line to a specific capture clip.
  • Task chapters (60–120s) for node profile, the events→auto-pair flow, AI blog+tour, publishing a dataset, bulk import, workflows, and feedback.
  • A ship-check (only film live surfaces) and a capture runbook (deterministic portal track + seeded-live b-roll for the WebGL globe).

scripts/screenshots/demo.ts + npm run screenshots:demo — a scripted walk-through capturer that reuses the visual-report fixture/scene stack, so each flow renders fully populated with realistic data against a plain vite dev server (no backend) and is reproducible run-to-run. Nine flows (overview, node-profile, dataset, import, events, blog, workflows, feedback, analytics); each emits a .webm clip + numbered stills + manifest.json into demo-out/ (gitignored). The blog flow cites a fixture event and serves a real Earth frame for the Worldview snapshot so the Media tab renders a populated suggestion card.

scripts/screenshots/core/browser.ts — adds withVideoPage (records a clip via Playwright recordVideo) and honors PLAYWRIGHT_CHROMIUM_PATH (launch a pre-installed browser when the pinned Playwright build isn't downloaded). Both default-off; no effect on existing report/smoke/capture runs.

Scope / safety

Dev-only tooling — not in the product bundle, not a CI gate; demo-out/ is gitignored. No product code changes.

Verification

  • npm run type-check ✓ and npm run test (91 screenshot tests) ✓.
  • Ran npm run screenshots:demo end-to-end against a live dev server — all nine flows render populated (spot-checked the events triage, blog Media card, and feedback dashboard stills).

🤖 Generated with Claude Code


Generated by Claude Code

claude added 2 commits July 10, 2026 05:00
…urer

Add a 'why + how' video production plan and the capture tooling to
produce its portal footage reproducibly.

- docs/VIDEO_PRODUCTION_PLAN.md: treatment + shot-by-shot script for a
  ~4:30 hero film ('Reach Without Surrender', grounded in MISSION.md's
  two-walls thesis) and 60-120s task chapters, plus a ship-check and a
  capture runbook (deterministic portal track + seeded-live b-roll).
- scripts/screenshots/demo.ts + 'screenshots:demo': a scripted
  walk-through capturer that reuses the visual-report fixture/scene
  stack, so each flow (overview / node-profile / dataset / import /
  events / blog / analytics) renders fully populated with no backend
  and is reproducible. Emits a .webm clip per flow + numbered stills +
  manifest.json into demo-out/ (gitignored).
- core/browser.ts: add withVideoPage (recordVideo context → saved .webm)
  and honor PLAYWRIGHT_CHROMIUM_PATH to launch a pre-installed browser
  when the pinned Playwright build isn't downloaded. Both default-off,
  no effect on existing report/smoke/capture runs.

Dev-only tooling; not in the product bundle, not a CI gate. Validated
end-to-end against a live dev server (all flows render populated).

Signed-off-by: Claude <noreply@anthropic.com>
- blog flow now cites a fixture event on the Sources tab and serves a
  real Earth frame for the Worldview snapshot, so the Media tab renders
  a populated 'Satellite view' suggestion card (plus the not-shown
  notes) instead of an empty state — deterministic, no live NASA fetch.
- add two demo flows: workflows (list + editor) and feedback (AI thumbs
  + general tabs, via feedbackFixtures). Nine flows total.
- doc: update the flow list, chapter mapping, and blog Media note.

Validated end-to-end against a live dev server; all three render
populated.

Signed-off-by: Claude <noreply@anthropic.com>
@github-actions

github-actions Bot commented Jul 10, 2026

Copy link
Copy Markdown
Contributor

🖼️ Visual report

68 shot(s) · 2 viewport(s) (desktop, mobile) · 45 with problems · 105 problem(s) total

Regression: 3 shot(s) changed, 0 new (baseline-less, soft pass), threshold 0.001.

Scene Viewport Change
browse-search-active desktop 1.61% (20835 px)
publish-overview desktop 0.10% (1348 px)
publish-overview mobile 0.16% (531 px)
Shots with problems
Scene Viewport Errors Failed req a11y
tools-menu desktop 1 2 0
publish-datasets desktop 1 1 0
publish-import desktop 1 1 0
publish-dataset-new desktop 1 1 0
publish-dataset-edit-thumbnail desktop 1 1 0
publish-workflows desktop 2 1 0
publish-workflow-new desktop 1 1 0
publish-tours desktop 2 2 0
publish-featured-hero desktop 2 2 0
publish-events desktop 1 1 0
publish-feeds desktop 1 1 0
publish-node-profile desktop 1 1 0
+33 more

Full report → visual-report artifact

Advisory — this check never fails the build. Visual review only.

Close the last automation gap in the video plan — the Act 2 'payoff'
footage — and make the output self-reviewing.

- Two live b-roll flows in screenshots:demo:
  - globe: ?embed=1&rotate=on — minimal-chrome auto-rotating globe.
  - orbit: /orbit?preset=planetary&fly=1 — Orbit's fly-to-Earth, with
    the dev perf-HUD + debug panel hidden for a clean shot.
  These record real WebGL (clips first). Fixtures are now optional so
  they run against real data/tiles; the globe waits for the loading
  splash to clear best-effort (the Earth imagery needs network — in a
  restricted sandbox it shows the branded loading state; Orbit's
  character renders regardless).
- storyboard.html: a generated, self-reviewing page pairing every clip
  + still with its narration cue (from the manifest), for scanning the
  shot flow or handing to an editor.
- doc: document the b-roll flows, their network dependency, the
  storyboard output, and the seeded-live path for dataset-on-globe /
  tour playback.

Validated end-to-end: all flows run; Orbit renders clean; portal flows
populated. Dev-only tooling, no product code, not a CI gate.

Signed-off-by: Claude <noreply@anthropic.com>
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.

2 participants