Workspaces
Demo der WorkspaceShell — der Alternative zu DefaultAppShell für
Multi-Persona-Apps. Ein User kann je nach Rolle verschiedene
„Workspaces” sehen (admin / dispatch / driver), jeder mit eigener
Sidebar-Nav. Active Workspace lebt in der URL (/<workspace>/<screen>)
damit Bookmarks + Reload + Shared-Links auf der gleichen Surface landen.
Plus: Cross-Feature-Membership — eine Nav aus dem demo-driver-Feature
gehört zum driver-Workspace des demo-Features. Server-Registry
löst die Merge auf, der Browser bekommt das fertige AppSchema via
window.__KUMIKO_SCHEMA__-Injection.
Run
# Postgres + Redis hochfahren (einmal)yarn kumiko dev
# In neuem Terminal — bootet Sample auf http://localhost:4174cd samples/apps/workspaces && yarn devPort 4174 ist hardcoded damit drei Sample-Apps parallel laufen können (ui-walkthrough=4173, showcase=4175).
Login
admin@kumiko.devkumiko-adminDer Admin hat Rolle Admin und sieht alle drei Workspaces.
Spezialisierte Personas (Dispatcher, Driver) würden nur ihren — siehe
feature.ts für die access.roles-Konfiguration der Workspaces.
Was zu probieren
Workspace-Switch
- Drei Tabs in der Topbar: System-Admin / Cockpit / Fahrer.
- Klick wechselt → URL wird zu
/dispatch/order-listrewritten, Sidebar-Navs filtern sich auf die Members des aktiven Workspaces.
Cross-Feature-Nav
- Klick auf “Fahrer”-Workspace → siehst “Neuer Auftrag” (aus
demo) + “Meine Tour” (ausdemo-driver). Beide Features registrieren je eine Nav, die Engine merge’d sie ins Driver-Workspace.
Default-Resolution
- URL ohne Workspace-Segment → landet auf
admin(default-flagged). - URL mit unbekanntem Workspace → fallback auf default.
- URL mit
/admin(ohne Screen) → auto-fillt erstes Nav-Member.
URL = Source of Truth
- Reload mitten im
dispatch-Workspace → bleibt dort. - Browser-Back nach Workspace-Switch → vorheriger Workspace zurück (replaceState wird für initial-fills genutzt, pushState für User-Klicks).
Tests
# Unit (Registry-Compose)yarn vitest run samples/apps/workspaces/src/__tests__/feature.test.ts
# Playwright-E2Eyarn kumiko test e2e samples/apps/workspacesSource path: samples/apps/workspaces/README.md