Context. surface studio · domain generation · route /studio/asset-preview-pipeline · auth signed-in + studio entitlement · source apps/oshun/web/src/app/studio/asset-preview-pipeline/page.tsx
Last walked. 2026-05-29 automated runtime walk (Playwright headless) — render, /v1 data (2xx), console/page-errors, expected content, screenshot verified; live screen-reader, touch, offline, and telemetry-delivery checks pending a manual AT pass. Evidence: WALKTHROUGH/results/runtime-sweep-2026-05-29.md; body re-derived 2026-06-03 from current source (lane-console architecture)
Purpose#
Plan preview renditions with the real planner: the Rendition Planning Lane fits
each rendition within its max-dimension box preserving the aspect ratio, and
never upscales beyond the source size. It is a live admin console wired to
/v1/admin/studio/asset-renditions, not an in-page simulation.
Entry points#
- Direct URL / bookmark —
/studio/asset-preview-pipeline(signed-in + studio entitlement; admin scope required to plan) - Sibling Studio routes — reached via the quick-action panel on file-media-ingestion, review-approval-workflows, commenting-annotation-system, and activity-change-feeds
Layout regions#
page.tsx mounts <ShellLayout active="studio"> and renders
<StudioAssetPreviewPipelineWorkspace /> followed by a single panel of
quick-action links.
- Shell:
ShellLayoutchrome with the Studio tab active - Workspace heading:
WorkspaceHeadingrenders the page<h1>"Studio Asset Preview Pipeline", followed by thedata-asset-preview-summaryparagraph - Rendition Planning Lane: an
<h2>data-ar-lane-heading("Rendition Planning Lane") section with the load states and, when ready, the plan form and result table - Quick-actions panel: 4 sibling
quickActionLinks — "Back to File and Media Ingestion workspace", "Back to Review and Approval Workflows workspace", "Back to Commenting and Annotation System workspace", and "Back to Activity and Change Feeds workspace". No self-link and no Route Map panel.
States#
- Loading —
data-ar-loading("Loading rendition planner…") - Unauthorized —
data-ar-unauthorized("Access restricted.") on 401/403 - Error —
data-ar-erroron a failed catalog GET - Ready / form — the
data-ar-formplan form seeded with the default payload - Result —
data-ar-resultwith thedata-ar-headline(data-ar-aspect-ratio, rendition + scaled counts), and thedata-ar-renditionstable ofdata-ar-rendition-rowrows (data-rendition-name,data-scaled,data-ar-dimensions) - Plan error —
data-ar-plan-errorfor invalid JSON or a non-200 response - Offline — catalog GET fails closed to the error panel; the plan POST surfaces the generic error when the network is unreachable
- Gated — admin scope denied →
data-ar-unauthorized; the route itself is proxy-gated to signed-in + studio - Standalone PWA — renders within the shell; no URL-bar dependency
Interactions#
- Asset renditions (JSON) —
textareadata-ar-payload,aria-label="asset renditions json", seeded with the source dimensions and the requested rendition boxes - Plan renditions —
buttondata-ar-submit(type="submit"); POSTs the parsed payload to/v1/admin/studio/asset-renditions/plan, settingdata-ar-resulton a 200 with a validresult, ordata-ar-plan-errorotherwise - Quick-action links — each
quickActionLinknavigates to its sibling Studio route (see Layout regions for the 4 targets)
Data & contracts#
- Reads:
GET /v1/admin/studio/asset-renditionson mount — returns the catalog - Writes:
POST /v1/admin/studio/asset-renditions/plan— returns{ aspectRatio, summary: { renditionCount, scaledCount }, renditions[{ name, maxDimension, targetWidth, targetHeight, scaled }] } - Realtime: none
- Caching: client
fetchwithcache: 'no-store';buildBffAuthHeaders()attaches the bearer token; SSR shell only - Auth/role check: admin-scoped fail-closed —
admin:*oradmin:studio, 401/403 under the studio workspace gate
Cross-references#
- Parent:
../studio-overview.md - Siblings:
studio-generation-gallery.md,studio-generation-living-scene.md,../authoring/studio-file-media-ingestion.md - Component source:
apps/oshun/web/src/components/studio/StudioAssetPreviewPipelineWorkspace.tsxbehind/v1/admin/studio/asset-renditions
Open questions / known gaps#
- Confirm whether the page will gain a breadcrumb/Route Map panel like other Studio surfaces, or keep the flat quick-action panel
- Document the live asset source the planner should pull rendition boxes from once it moves off a pasted JSON payload