Disciplines · Proposals

Oshun Studio Surface Inventory (YSD-0106)

(collection, collections), nisaba (notebook, notebooks, graph,

10sections4 minread

On this page

Compiled 2026-07-18 at working-tree commit 21d024fcf2 by direct inspection of apps/oshun/web and libs/oshun/*. Covers the eight dimensions YSD-0106 names: routes, shared navigation, authentication, tenant context, Library persistence, design tokens, responsive layouts, accessibility primitives.

Routes (apps/oshun/web/src/app/)#

  • Top-level route groups include: (workspace)/workspace, library (collection, collections), nisaba (notebook, notebooks, graph, compare, plan, scholar, manuscript, lexicon, daily), metis, studio, auth/verify-email, onboarding, billing, legal, messages, notifications, explore, activity, events, assistant, mobile, operator, plus product-specific groups (lilith, lilith-studio, mawu-studio, egbe-studio, atelier, arete, nyx, d, domains). Error/loading/not-found boundaries exist at the root (error.tsx, global-error.tsx, loading.tsx, not-found.tsx).
  • /studio has 58 route directories. Domain surfaces: yemaya, aja, hathor, bellona, isis, neith, nous, tara, compose, generation, generation-gallery, authoring, project-obsidian, concordia-workbench. Platform surfaces (directly reusable for the study workspace): authentication-architecture, rbac-permission-policy, enterprise-tenant-isolation, real-time-collaboration-substrate, presence-cursor-systems, commenting-annotation-system, file-media-ingestion, asset-preview-pipeline, background-jobs-progress-ux, navigation-commands, workspace-context-switching, cross-domain-entity-model, search-discovery, notification-center, review-approval-workflows, data-retention-lifecycle-controls, audit-compliance-surfaces, accessibility-governance, internationalization-localization, design-language, color-system, typography, spacing-layout, component-primitives, complex-interactions, resilience-error-ux, performance-budgets, experimentation-feature-flags, security-hardening-program, session-device-management.
  • /studio/study does not exist yet — created by YSD-1002 after the YSD-0122 route decision.
  • apps/oshun/web/src/components/studio/ holds 1,464 components; the YSD-0101/0102 caveat applies — many Studio panels are fixture-driven (verified example: StudioHathorDirectorPerformanceReplaySystemPanel.tsx) and each must be re-verified before being treated as a working primitive.

Shared navigation#

  • libs/oshun/navigationcustomer-ia.ts, admin-ia.ts (+bindings), cross-domain-target.ts, current-domain-store.ts, assistant-continuity-journey.ts (all with tests).
  • libs/oshun/shell-corecommand-surface.ts, deep-links.ts, account-switcher.ts, current-domain-persistence.ts, auth-lifecycle.ts, activity-timeline.ts.
  • App components: CommandPalette.tsx, DomainSwitcherEntryPanel.tsx, CrossDomainQuickActionsMenu.tsx, DeepLinkBuilder.tsx, DomainRouteExperience.tsx, DomainTransition.tsx, DomainStartupGate.tsx, DomainErrorBoundary.tsx, KeyboardShortcutHelp.tsx, FocusModeToggle.tsx.
  • Additional shells: libs/oshun/shell-desktop, shell-wearable, shell-assistant, shell-routines, shell-achievements.

Authentication#

  • libs/oshun/authauth-client.ts, customer-auth-model.ts, admin-access.ts, admin-operator-directory.ts, plus customer consent/data-deletion/data-export/support-history stores (the deletion and export stores matter for YSD-3060+ deletion flows).
  • App side: apps/oshun/web/src/auth/, src/lib/auth-session.ts (OSHUN_SESSION_COOKIE_NAME='oshun-session', OSHUN_ACCESS_TOKEN_COOKIE_NAME='oshun-access', WebAuthUser with plan: 'free'|'pro'|'premium', linked accounts), route auth/verify-email.
  • apps/oshun/bff is the client-facing API composition layer (the workspace BFF routes belong here or follow its pattern).

Tenant context#

  • libs/oshun/tenant-console (tenant administration), apps/oshun/tenant-admin app, Studio surface studio/enterprise-tenant-isolation.
  • Persistence is tenant-scoped: oshun Prisma projections carry tenantId with tenant-scoped uniqueness (e.g. NisabaAnnotation @@unique([tenantId, contractSchema, sourceRecordId])); libs/shared/live-media/src/identifiers.ts provides a UUID-branded TenantIdSchema reusable in new contracts.

Library persistence#

  • Routes: /library with collection/ and collections/.
  • libs/oshun/persistence/prisma/schema.prismamodel LibraryLibraryCollection (line 1594) backs shared Library collections; the same schema holds the cross-domain Nisaba projections (NisabaNotebook, NisabaStudyPlan, NisabaAnnotation, NisabaConceptGraphNode) that give the shell its Nisaba continuity.
  • Nisaba surfaces already mounted in the shell (/nisaba/notebook(s), /graph, /compare, /plan, /scholar) prove the Library/notebook continuity path the proposal relies on.

Design tokens#

  • libs/oshun/design-tokens — shared token package (tokens.ts + tests).
  • apps/oshun/web/src/design-system/tokens.ts — app-level tokens (+ a lilith/tokens.ts product variant, __tests__/tokens.test.ts).
  • libs/oshun/design-language and Studio documentation routes (design-language, color-system, typography, spacing-layout, component-primitives) document the system.

Responsive layouts#

  • apps/oshun/web/src/design-system/tokens.ts:329-344 exports breakpoints (sm/md/lg/xl), BreakpointKey, and mediaQueries (min-width queries) — the responsive baseline the YSD-1015 test matrix should reference.
  • apps/oshun/web/src/mobile route group plus admin-mobile, mobile, wearable apps define the smaller-form-factor surfaces.

Accessibility primitives#

  • apps/oshun/web/src/components/AccessibilityShell.tsx — the shell-level accessibility wrapper.
  • FocusModeToggle.tsx, KeyboardShortcutHelp.tsx, LanguageSwitcher.tsx; Studio governance surface studio/accessibility-governance.
  • libs/oshun/i18n + apps/oshun/web/src/i18n for locale support; studio/internationalization-localization documents the i18n system.
  • Iris owns accessibility policy (YSD-0162); these shell primitives are the Oshun-side implementation hooks the workspace must compose with.

Adjacent shell capabilities worth reusing#

  • apps/oshun/web/src/offline + libs/oshun/offline (offline behavior, YSD-7/17 relevance), src/observability, src/notifications, src/performance, src/experimentation, CookieConsentBanner.tsx, CustomerShellStatusBannerStack.tsx, DomainDegradation.tsx (degraded-state UX pattern for YSD-2007 responses), apps/oshun/clipper-extension (browser clipper — reuse candidate for YSD-5011).

Gaps for the study workspace#

  1. No /studio/study route (YSD-1002; blocked on YSD-0122 route decision).
  2. No study-specific navigation entry in the customer IA (Study global nav item per proposal §3.3/§8.1).
  3. Studio yemaya/aja/hathor panels are fixture-driven until re-verified — the 1,464-component surface is a design-reference library, not a primitive library.