Verentis

Workspace shell

Workspace shell & routes

The workspace home, canonical file URLs, responsive shell behavior, and the APIs that power shell cards.

The workspace host has product routes of its own. A virtual-file-system path and a browser URL are therefore related, but they are no longer the same string.

Canonical routes

Browser routePurpose
/Workspace home: recents, launchable apps, Daily Brief, runs, automations and activity.
/filesRoot of the workspace VFS.
/files/<encoded-path>A file or folder surface. Each path segment is URL-encoded.
/apps/<resource-registration-id>A file-independent app enabled by spec.launch.

The file route accepts ?mode=source or ?mode=browse when a caller needs to bypass the default surface resolver. Without a mode, the workspace chooses the best registered app, execution engine or browser surface for the node.

SDK file methods continue to accept VFS paths such as /reports/q1.json. Likewise, client.bridge.navigate('/reports/q1.json') accepts a VFS path; the host converts it to the canonical browser route /files/reports/q1.json. Passing an already-canonical /files/... target is also supported.

Legacy root-path links are not redirected

The former catch-all file URLs (/reports/q1.json, for example) were removed when / became the workspace home. The host intentionally does not redirect those browser URLs. Update bookmarks, notifications and copied links to /files/**; keep raw VFS paths only in SDK/API arguments.

Responsive shell behavior

On large screens the shell shows a persistent, collapsible sidebar beside a sticky top bar. Below the large breakpoint, navigation moves into a left drawer and route changes close it automatically. Notifications, the context inspector and the assistant use overlay panels so the current file or app surface remains mounted.

Hosted apps must treat the iframe as a resizable container:

  • use fluid widths and avoid assuming the browser viewport is the app viewport;
  • allow layouts to collapse cleanly when workspace chrome reduces the available width;
  • use client.bridge?.resize(height) only when an intrinsic-height surface needs to report a new height; full-height app shells should normally fill their container;
  • test both file launches and spec.launch workspace launches on narrow and wide screens.

Shell data APIs

The home and global shell load each resource independently. A missing scope can hide one card without blocking navigation or the rest of the workspace.

Shell dataRequestRequired scopeContract notes
Daily Brief policyGET /v1/settings?scopeKind=Workspace&parentId=<workspaceId>&includeSecretValues=falsefabric.setting.read-allReads brief.daily-enabled and general.timezone before loading a dated brief.
Daily BriefGET /v1/ai/briefs/workspace?workspaceId=<id>&briefDate=YYYY-MM-DD&timeZone=<iana-zone>ai.brief.readReturns the persisted brief or no content.
Generate Daily BriefPOST /v1/ai/briefs/workspace/generateai.brief.generateBody: workspaceId, briefDate, timeZone; returns the persisted WorkspaceBriefDto.
NotificationsGET /v1/notifications?pageNo=1&pageSize=20&includeDismissed=falsefabric.notification.readWorkspace and user come from token claims; the response includes items and unreadCount.
Notification statePUT /v1/notifications/{id}/read, /v1/notifications/read-all, or /v1/notifications/{id}/dismissfabric.notification.updateDismissal also marks the notification read.
StorageGET /v1/workspaces/current/storagenode.storage.readReturns plan, quota, used/reserved bytes, percentage and capture/version metadata for the token workspace.
AutomationsGET /v1/automations?workspaceId=<id>&branch=mainexecution.execution.readReturns projected schedules and file-change triggers; this read scope does not allow starting or cancelling runs.

All of these calls use a workspace-bound access token. Endpoints named current or notification endpoints derive workspace/user identity from claims; do not try to override them with query parameters.

Response shapes used by the shell

  • WorkspaceBriefDto includes briefDate, timeZone, content, generation/staleness metadata, links[], sourceSignalsJson, and creation/update timestamps.
  • NotificationPageDto includes items, paging totals and unreadCount. Each item carries source, type, severity, read/dismiss timestamps, and a typed navigation target for a workspace, file, resource or execution.
  • WorkspaceStorageUsageDto includes planCode, quotaBytes, usedBytes, reservedBytes, percentage, assignmentVersion and capturedAt.
  • AutomationDto identifies a schedule or trigger and includes its source path, branch, enabled state, optional file/engine/tool metadata, next/last run timestamps and run-as service principal.

Next

The SDK & bridge

Handle file and workspace launch contexts from an iframe app.