Hub Workspace
Workspace is the customer-facing Hub app: shell, trusted cards, and server-resolved account/site context. It is not the WordPress dashboard and not the Operator Console.
Workspace Shell and Card Registry
- Theme-agnostic full-page shell
- Cards registered in a trusted PHP registry (e.g. Leads summary from Intake cache)
- No remote module pull during Workspace render
Customer and site context
User → vexal_hub_access → account membership → site.account_id → Workspace
Context is resolved on the server. URL parameters must not authorize access.
selection_required
When a user has multiple authorized accounts or multiple active sites, Hub fails closed with status selection_required. It does not guess the first record.
Login → Authenticated → Multiple accounts/sites?
→ selection_required (today: honest placeholder)
→ Future: Choose Account → Choose Site → Workspace
Roadmap Phase A: build the authorized Account/Site selection UI. Phase B: safe return URLs. Phase C: branded logout.
Workspace states
ready— single resolvable context; cards renderselection_required— multi-context; chooser pendingaccess_denied/unavailable— no safe context
Operator preview
Explicit route: /vexal-workspace/operator/preview/{site_db_id}/. Requires operator authorization. Does not create normal customer context.
Not Portfolio Project Workspace
Docs historically used “Workspace” for Portfolio’s Project Workspace. Hub Workspace is a different product surface. Prefer “Hub Workspace” vs “Portfolio Project Workspace” when writing.