V1 Web PWA · Surface walkthrough

Studio Aja · Input Video Support

A per-surface walkthrough of the V1 Web PWA studio surface: layout, states, interactions, data, and cross-references.

walked
9sections3 minread

On this page

Context. surface studio · domain aja · route /studio/aja/input-video-support · auth signed-in + studio entitlement · source apps/oshun/web/src/app/studio/aja/input-video-support/page.tsx

Last walked. 2026-07-04 focused real-dev-infra Playwright route walk — anonymous redirect, Aja-admin catalog, exact chunk plans through the real BFF, validation, malformed/transport failures, loading/403/503/malformed catalog states, pending controls, route-map + quick-action affordances, mobile/touch/axe, and direct BFF auth/schema gates. Evidence: WALKTHROUGH/results/v1-real-infra-run-2026-06-22.md §284.

Purpose#

Admin lane console for planning video chunking. Its operations lane wires the @aja/video-chunking VideoSplitter via /v1/admin/aja/input-video-support: plan how an input video is split into overlapping processing chunks for the distributed motion pipeline — frame ranges, time ranges, seam overlap, priority — and report whether the plan covers the full range with no gaps.

Entry points#

  • Direct URL / bookmark/studio/aja/input-video-support; metadata sets alternates.canonical
  • Linked from /studio Domain-bridge studios section (Aja sub-area)
  • Quick action — "Open Yemaya Documentation Playground workspace" (/studio/yemaya/documentation-playground)

Layout regions#

page.tsx renders inside <ShellLayout active="studio">:

  • Workspace StudioAjaInputVideoSupportWorkspace<h1> "Aja Input Video Support Workspace" + summary (data-aja-input-video-support-summary), then the Chunk Planning Operations Lane (<h2 data-aja-ivs-lane-heading>)
  • Route Map panel (data-aja-input-video-support-route-map, <h2>) — 5 entries from STUDIO_AJA_INPUT_VIDEO_SUPPORT_ROUTE_MAP
  • Quick-action lane (data-aja-input-video-support-quick-actions) — intentional cross-domain documentation adjacency plus Studio index: /studio/yemaya/documentation-playground, /studio

States#

  • Loadingdata-aja-ivs-loading "Loading video-chunking engine…" while GET /v1/admin/aja/input-video-support is in flight
  • Unauthorized (gated)data-aja-ivs-unauthorized on 401/403; admin scope message ("Aja workspace scope required to plan video chunking.")
  • Errordata-aja-ivs-error on non-OK / malformed / network failure
  • Ready (form)data-aja-ivs-form once the catalog loads (with the engine summary data-aja-ivs-engine-summary), strict catalog counts, and chunking/blending strategy spans
  • Resultdata-aja-ivs-result (-headline chunk count + valid/gaps, -chunks list per chunk, stable chunk row attributes) after a successful POST; validation/planner error in data-aja-ivs-plan-error
  • Offline — SSR shell; lane error state when fetch unavailable
  • Standalone PWA — desktop layout; quickAction anchors wrap
  • Empty — N/A; catalog is constant

Interactions#

Chunk Planning Operations Lane#

  • Total frames (<input data-aja-ivs-frames type="number">) — positive integer
  • FPS (<input data-aja-ivs-fps type="number">) — positive number
  • Chunk seconds (<input data-aja-ivs-target type="number">) — optional targetDurationSeconds
  • Overlap seconds (<input data-aja-ivs-overlap type="number">) — optional overlapDurationSeconds
  • "Plan chunks" (<button data-aja-ivs-submit>) — POSTs { totalFrames, fps, targetDurationSeconds?, overlapDurationSeconds? } to /v1/admin/aja/input-video-support/plan; locked with data-aja-ivs-submit-state="planning" while the real request is pending

Route Map panel#

  • 5 entries (<article data-aja-input-video-support-route-map-entry>) per path + purpose — non-interactive, exact path ordering asserted

Quick-action lane#

  • "Open Yemaya Documentation Playground workspace"/studio/yemaya/documentation-playground
  • "Back to Studio workspace index"/studio

Data & contracts#

  • Reads: GET /v1/admin/aja/input-video-support (catalog: summary, chunkingStrategies, blendingStrategies, defaultConfig) on mount, cache: 'no-store', buildBffAuthHeaders(); the client now fails closed unless all 5 chunking strategies and all 6 blending strategies are present
  • Writes: POST /v1/admin/aja/input-video-support/plan
  • Realtime: none
  • Caching: client fetch on mount (no-store); SSR shell
  • Auth/role check: BFF endpoints admin-scoped, fail-closed (401/403 → unauthorized render); route gated signed-in + studio via the proxy

Verification evidence#

  • apps/oshun/web/e2e/studio-aja-input-video-support.spec.ts runs against the real Next Studio shell and local BFF, forwarding browser bearer auth rather than mocking the chunking contract.
  • The spec covers anonymous redirect, Aja-admin catalog load, exact seeded 900-frame / edited 1500-frame chunk plans, local validation with no POST, malformed result, transport failure, loading / 503 / malformed / non-admin states, pending form locking, mobile no-overflow + 44px controls, scoped axe, and direct BFF 401/403/400/200 gates.

Cross-references#

  • Parent: ../../studio-overview.md
  • Sibling routes (quick action crosses domains): /studio/yemaya/documentation-playground
  • Component sources:
    • apps/oshun/web/src/components/studio/StudioAjaInputVideoSupportWorkspace.tsx
    • apps/oshun/web/src/components/studio/StudioAjaInputVideoSupportRouteMap.ts

Open questions / known gaps#

  • The single quick action crosses into the Yemaya domain (documentation-playground) rather than a sibling Aja route — confirmed as the intentional documentation adjacency by the 2026-07-04 route-level Playwright coverage, which asserts the exact href alongside the Studio index action