V1 Web PWA · Surface walkthrough

Studio Hathor · Workbench

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

walked
8sections3 minread

On this page

Context. surface studio · domain hathor · route /studio/hathor/workbench · auth signed-in + studio entitlement · source apps/oshun/web/src/app/studio/hathor/workbench/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#

Top-level aggregator for the Hathor world workbench: a Capability Summary plus seven embedded lane workspaces — Dashboard, Worlds, World Editor, Characters, Factions, Locations, and Timeline. The page itself issues no /v1 fetch — each embedded lane owns its own admin-scoped, fail-closed backend wiring.

Entry points#

  • Breadcrumb — Studio › Hathor Workbench Dashboard › Workbench
  • Quick-action links to workbench-dashboard, workbench-worlds, workbench-world-editor, workbench-timeline, and Back to Studio
  • Direct URL / bookmark — yes; alternates.canonical set
  • Studio overview — see ../../studio-overview.md

Layout regions#

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

  • Breadcrumb panel (data-hathor-workbench-breadcrumbs): Studio → Hathor Workbench Dashboard → Workbench (current)
  • Workspace <section data-hathor-workbench-workspace>:
    • <h1> (WorkspaceHeading) "Hathor Workbench Workspace"
    • Summary <p data-hathor-workbench-summary>
    • Capability Summary (data-hathor-workbench-capability-summary, <h2>): 4 data-hathor-workbench-capability cards — dashboard-and-operations, world-and-editor-controls, entity-and-timeline-authoring, security-and-parity
    • Workbench Dashboard Lane (data-hathor-workbench-dashboard-lane, <h2>) → <StudioHathorWorkbenchDashboardWorkspace />
    • Workbench Worlds Lane (data-hathor-workbench-worlds-lane, <h2>) → <StudioHathorWorkbenchWorldsWorkspace />
    • Workbench World Editor Lane (data-hathor-workbench-world-editor-lane, <h2>) → <StudioHathorWorkbenchWorldEditorWorkspace />
    • Workbench Characters Lane (data-hathor-workbench-characters-lane, <h2>) → <StudioHathorWorkbenchCharactersWorkspace />
    • Workbench Factions Lane (data-hathor-workbench-factions-lane, <h2>) → <StudioHathorWorkbenchFactionsWorkspace />
    • Workbench Locations Lane (data-hathor-workbench-locations-lane, <h2>) → <StudioHathorWorkbenchLocationsWorkspace />
    • Workbench Timeline Lane (data-hathor-workbench-timeline-lane, <h2>) → <StudioHathorWorkbenchTimelineWorkspace />
  • Route Map panel (data-hathor-workbench-route-map): <h2> "Route Map" + 6 entries from STUDIO_HATHOR_WORKBENCH_ROUTE_MAP
  • Quick-action lane: five Link.quickAction anchors (see Entry points)

States#

This page owns no fetch; each embedded lane carries its own loading / unauthorized / error / ready / result states:

  • Workbench Dashboard Lane — delegated to ./studio-hathor-workbench-dashboard.md
  • Workbench Worlds Lane — delegated to the worlds workspace
  • Workbench World Editor Lane — delegated to the world-editor workspace
  • Workbench Characters Lane — delegated to the characters workspace
  • Workbench Factions Lane — delegated to the factions workspace
  • Workbench Locations Lane — delegated to the locations workspace
  • Workbench Timeline Lane — delegated to ./studio-hathor-workbench-timeline.md

Interactions#

Embedded lanes#

  • Dashboard / Worlds / World Editor / Characters / Factions / Locations / Timeline — seven embedded Studio*Workspace lanes

Route Map panel#

  • 6 route entries — verify match with STUDIO_HATHOR_WORKBENCH_ROUTE_MAP

Quick-action lane#

  • "Open Hathor Workbench Dashboard workspace" (→ /studio/hathor/workbench-dashboard)
  • "Open Hathor Workbench Worlds workspace" (→ /studio/hathor/workbench-worlds)
  • "Open Hathor Workbench World Editor workspace" (→ /studio/hathor/workbench-world-editor)
  • "Open Hathor Workbench Timeline workspace" (→ /studio/hathor/workbench-timeline)
  • "Back to Studio workspace index" (→ /studio)

Data & contracts#

  • Reads / Writes: none at the aggregator level; embedded lanes own their /v1/admin/hathor/* fetches
  • Realtime: none
  • Caching: embedded client fetches use cache: 'no-store' + buildBffAuthHeaders
  • Auth/role check: each embedded lane is admin-scoped fail-closed; route is behind the signed-in + studio proxy gate

Cross-references#

  • Parent: ../../studio-overview.md
  • Shell: ../../../shell/04-auth-session.md
  • Embedded / sibling lanes: ./studio-hathor-workbench-dashboard.md, ./studio-hathor-workbench-timeline.md
  • Component sources:
    • apps/oshun/web/src/components/studio/StudioHathorWorkbenchWorkspace.tsx
    • apps/oshun/web/src/components/studio/StudioHathorWorkbenchRouteMap.ts
    • apps/oshun/web/src/components/studio/StudioHathorWorkbenchDashboardWorkspace.tsx
    • apps/oshun/web/src/components/studio/StudioHathorWorkbenchWorldsWorkspace.tsx
    • apps/oshun/web/src/components/studio/StudioHathorWorkbenchWorldEditorWorkspace.tsx
    • apps/oshun/web/src/components/studio/StudioHathorWorkbenchCharactersWorkspace.tsx
    • apps/oshun/web/src/components/studio/StudioHathorWorkbenchFactionsWorkspace.tsx
    • apps/oshun/web/src/components/studio/StudioHathorWorkbenchLocationsWorkspace.tsx
    • apps/oshun/web/src/components/studio/StudioHathorWorkbenchTimelineWorkspace.tsx

Open questions / known gaps#

  • Hathor is unconfirmed-v1 per WALKTHROUGH/matrix/routes.csv. Confirm whether the dedicated /studio/hathor/* admin lane consoles ship in V1.
  • Route Map advertises dashboard, worlds/, world-editor/, timeline/, and governance/ sub-routes; the seven embedded lanes have standalone sibling routes (workbench-*) rather than these nested paths — confirm the intended IA.