Skip to content

Web UI parity and v1 adaptations ​

The v1 Web client reuses the 0.x visual language and the 0.x interactions that v1 services support. It does not restore the old monolith's API, and it does not guess data that a service doesn't return. This page lists each 0.x surface, what v1 shows today, and each 0.x endpoint that still has no v1 route.

The visual baseline is the 0.x web app on the dev branch. The v1 client keeps that app's shell and shared components and fills them with v1 service data. When you compare the two, compare the routes that each app mounts, not only the retained source files.

Paths on this page that start with /api/v1 are public Gateway paths. Paths that start with /api are 0.x paths.

Structure ​

The 0.x rail is the same in every version. Shared parts keep one shape when their data source changes:

Shared partUsed by
RunListOverview, Sessions, Dashboard, Orchestrations, Flow, Observability, Diagnostics, and Heartbeat, on the project run list
DecisionViewRun Approvals tab
AttentionListOverview, Flow, and the notification bell, on your notifications
NewChatComposerRun Chat tab and the New session page
CaptureTaskFormBoard Intake and the Start task dialog
ProjectMetricsSectionsDashboard, Overview, and Observability, on project metrics and usage
PlatformComponentsSectionPlatform settings, Diagnostics, and Cluster, on the platform component report
PlatformComponentsTableRun settings tab

Run state words are the same everywhere: Needs input, Open, Working, and Done. Unavailable means the service did not return a state. It does not mean the run failed.

The UI says platform component for a replaceable platform area and implementation for the provider in use.

mermaid
flowchart LR
  signin[Sign in] --> overview[Overview]
  overview --> chief[Chief of Staff]
  chief --> priorities[Priorities]
  chief --> newchat[New chat]
  chief --> conversations[My conversations]
  overview --> projects[Projects]
  overview --> sessions[Sessions]
  overview --> attention[Needs attention]
  bell[Notification bell] --> attention
  sessions --> newsession[New session]
  newsession --> chat[Chat]
  projects --> dashboard[Project dashboard]
  dashboard --> orch[Orchestrations]
  dashboard --> agents[Agents]
  agents --> cast[Cast a team]
  orch --> run[Run page]
  sessions --> run
  attention --> decision[Decision view]
  dashboard --> board[Board]
  attention --> board
  starttask[Start task] --> board
  run --> decision
  run --> chat
  dashboard --> ops[Flow, Workflows, Workspace, Observability, Diagnostics, Heartbeat, Cluster]
  ops --> run
  ops --> board
  dashboard --> settings[Project settings]

The Overview groups Priorities, New chat, and My conversations under Chief of Staff. A v1-only rail link opens that section; 0.x navigation is unchanged. The active Overview and Dashboard use published Gateway reads. Overview lists the four most recently updated active projects and reads their configuration, metrics, and backlog. Its Operations card keeps the 0.x totals, but in-flight, queued-work, and done-today values are unavailable because GET /api/v1/overview is not published. The same route is needed for the old aggregate metrics, usage, service health, and full activity feed. Overview therefore shows metrics for one selected project and recent run summaries rather than global activity. Dashboard reads GET /api/v1/projects/{projectId}, GET /api/v1/projects/{projectId}/configuration, GET /api/v1/projects/{projectId}/runs, GET /api/v1/projects/{projectId}/metrics, and GET /api/v1/projects/{projectId}/usage for its summary, setup checks, team, recent runs, selected range, model and per-agent usage panels, and quick actions. Neither page calls the old global overview or project dashboard endpoint. The notification bell and project switcher use the same published Gateway routes. When a read fails, its value is unavailable, not zero or healthy.

Page comparison checklist ​

Use the mounted 0.x pages as the reference. Compare at the same viewport and with the same project, active run, agent, and model fixture. Each app renders only fields its API provides. The screenshots compare layout and data gaps; they are not live acceptance evidence and do not claim pixel parity.

Page0.x section order and densityCard, table, and detail treatmentControls and navigationv1 data and gaps
OverviewOperations, Recent projects, AI usage & performance, then Activity feed beside Needs attention. Recent projects shows one current-focus panel and up to four compact project rows.One Operations card has a health badge and four counters. The project area is a split focus/list card. Five small usage cards follow. Activity and attention use bordered panels; there is no detail drawer or data table.Refresh, automatic refresh every 10 seconds while mounted, a 7-, 30-, or 90-day range, View all projects, project links, and attention actions. The project list becomes one column below 900px; the lower panels stack below 980px. The approved v1-only Chief of Staff group appears before these sections.Project card Issues counts only non-archived tasks linked to repository issues; other card stats use configuration and metrics. Operations keeps the four 0.x counters; only Active projects is measurable. GET /api/v1/overview is missing for the other totals, global health, aggregate usage, and full activity. v1 selects one project for metrics and shows recent run summaries.
DashboardStatus and four summary tiles lead; Setup checks and Team follow; Recent runs link to run details; Activity range controls and charts come next; model and agent panels finish the page.The status card pairs project state and next actions with four metric tiles. Setup checks link to saved model, repository, team, and skills settings. Team and recent runs use compact lists. Activity uses a bordered chart and run-total panel. Model and per-agent usage use tables; unavailable agent scores and response percentiles stay explicit. There is no detail drawer.Refresh and automatic refresh; 7-, 30-, and 90-day range selector; setup links, Team navigation, direct run links, and status-based links to Board, Flow, Orchestrations, or settings for archived projects. The header shows the current project role when the owner returns it. The activity columns stack below 980px.Project summary, configuration, run-list, metrics, and usage routes supply the supported panels. A failed separate weekly-count request leaves only that tile unavailable. Live health needs GET /api/v1/projects/{projectId}/health; task completions need GET /api/v1/projects/{projectId}/task-metrics; the leaderboard needs GET /api/v1/projects/{projectId}/agent-metrics; response percentiles need the responseDuration and timeToFirstToken fields on GET /api/v1/projects/{projectId}/metrics.

Matched screenshots ​

These captures use the same 1440 by 1000 viewport and equivalent fixture data. They show layout and data gaps; they are not live acceptance evidence and do not claim pixel parity.

Page section0.x baselinev1
Overview, top0.x Overview at the top of the pagev1 Overview at the top of the page
Overview, Operations0.x Overview Operations sectionv1 Overview Operations section
Overview, activity0.x Overview activity sectionv1 Overview activity section
Dashboard, top0.x Dashboard at the top of the pagev1 Dashboard at the top of the page
Dashboard, model metrics0.x Dashboard model metrics sectionv1 Dashboard model metrics section

The restored setup, Team, and recent-run panels are also shown in a v1 supporting capture:

v1 Dashboard setup checks, Team, and recent runs

Surfaces ​

Each row says what works and what is still missing. The missing parts link to Endpoint gaps, which names the exact routes.

0.x surfaceWorks in v1Missing
Sign-inBroker sign-in in the 0.x card.Nothing.
ConsentPermission explanations in the sign-in card.Nothing.
Shell and breadcrumbs0.x rail with Overview, the v1-only Chief of Staff section link, Projects, and Sessions, the New session button, project switcher, persona menu, and Projects / project / page breadcrumbs. Project pages list Flow, Workflows, Workspace, Observability, Diagnostics, Heartbeat, and Cluster.Nothing.
Notification bellYour notifications across projects, with the pending count, links to the run Approvals tab or the Board, and Dismiss.Nothing.
OverviewChief of Staff group with Priorities, New chat, and My conversations; the 0.x Operations tiles; four recent project rows; metrics and usage for one chosen project; recent run summaries; and Needs attention. Missing global totals and full activity are named in the page.Cross-project totals, aggregate metrics and usage, service health, and the full activity feed from GET /api/v1/overview.
SessionsRuns across your projects, newest first, with Load more, Refresh, and New session.Nothing.
New session/assistant picks a project, creates the run with the first message, signs in silently for that run, starts it, and opens Chat.A run without a project (operator assistant).
Start taskFloating Start task button. Its dialog captures a task into the Backlog and opens the Board.Nothing.
Projects gallery0.x tiles with state and your access.Nothing.
Create blank projectDialog with a project name.Nothing.
Create from GitHubCreates the project, then saves the repository with GitHub App sign-in.Owner grant on create (behavior limit).
DashboardRun-based status and metric tiles, saved setup checks and next actions, archived-project guidance, recent runs with direct links, Team, Activity chart, run totals, model usage, and per-agent usage. Unavailable values are named instead of filled with guesses.Live project health, completed-task counts, agent leaderboard scores, and response-duration percentiles.
OrchestrationsActive and Recent sections with Load more, a state summary, and Refresh.Run delete and archive.
Run pageTwo-pane layout with status strip, Run tree, and tabs Chat, Topology, Approvals, Activity, Changes, Usage, and Run settings. Stop run while the run is open.Terminal diagnostic and retry.
Run ChatJournal and a composer for the coordinator or the selected session.Nothing.
Run ApprovalsShared decision view that rereads each gate before acting.Nothing.
Run ChangesGitHub App repository access for the run, and Produced files: saved file sets, newest first, with Browse files, the 0.x file viewer, Show changes with the 0.x diff viewer, Refresh, and Load older file sets.Nothing.
Run settingsModel, revisions, and implementations for each platform component.Nothing.
AgentsMetrics row, filter, tiles, drawer with Overview, recent caller-visible history with loading, empty, permission, and error states, and Charter, proposal-based Remove from team and Re-role with optional custom role titles, Cast team, Add member, explicit repository preview and reviewed commit, digest-checked AgentSuite Sync export/import, and Pending team proposals.Nothing.
Cast a teamFormulate, Template, and Analyze modes; goal, team size, role preferences, server-provided universe selection, and Augment or Recast when a team exists. AI output stays pending for review with role changes, custom titles, and member removal, then confirm or reject.Nothing.
SkillsStat strip, Add skill, Import skill with folder, files, or ZIP upload, Browse marketplaces with Suggested marketplaces, marketplace sources, browse, preview, import, Catalog with Remove skill, and Assignments.Nothing.
MemoriesRun and agent pickers, kind tabs, search, revisions, and transfer. Project-wide Knowledge uses GET /api/v1/projects/{projectId}/knowledge/records.No missing backend route for Knowledge records; the 0.x project-wide count strip still needs page work.
Settings > GeneralRename with the project revision.Nothing.
Settings > AccessYour permissions and Members: list, Add member, and Remove.Effective role names (behavior limit).
Settings > Repository, Platform components, Run limits, Connections, History, AdvancedSaved configuration fields and revisions.Nothing.
Settings > ModelsDefault model, reasoning effort, credential, and per-task models.Model catalog (behavior limit).
Settings > Danger zoneArchive and restore.Project delete: DELETE /api/v1/projects/{projectId}.
Platform settingsAll 16 platform component areas with owner, readiness, and implementations.BYOK providers, platform-default Copilot status, account AI access.
BoardBacklog, Ready, Active, and Done columns with counts, summary strip, zoom, Intake, title and description edits, queue state, queue order, send all to Ready, archive, and prerequisite controls.A task delete control, backlog settings, decompose, and the Human Review and Problems columns.
FlowProject task notifications, Needs input including dismissed gates, Task stages, and Open, Working, and Done run groups.The live agent graph for the project and current provider-side PR state per run.
WorkflowsSaved workflow references: the default workflow and the workflow for each blueprint, from project configuration.Workflow catalog, YAML, edit, run, generate, sync, default, and per-task override.
WorkspaceRepository from configuration, Pull requests that runs opened or reused, and Issues synced into the backlog.Branches: GET /api/v1/projects/{projectId}/source-control/refs; file tree: GET /api/v1/projects/{projectId}/source-control/tree?ref=; file content: GET /api/v1/projects/{projectId}/source-control/files/{path}?ref=.
ObservabilityMetric tiles, Activity chart, run totals, model and agent usage, and Recent runs.Per-run traces and response-duration percentiles.
DiagnosticsAreas that are not ready from the platform component report, and Failed runs.Service self-checks and project diagnostic reports.
HeartbeatSeven-day metric tiles and Active and blocked runs.Heartbeat records for each service process.
ClusterPlatform components with owner, readiness, and implementations.Node and replica topology.
Apps and CanvasNot shown.Not planned for v1.

Re-role comparison ​

In 0.x, Re-role changes a team member directly. In v1, it updates the member in a pending proposal; confirm the proposal to apply the change. A custom role title changes the display name without replacing the catalog role. These screenshots use example data.

0.x Re-role control

v1 proposal Re-role dialog

Every page shows a loading state, an empty state, a permission message for 403, and the service error for other failures. The Platform components section on Diagnostics and Cluster needs tenant or platform administrator access. Other users see a permission message there and the rest of the page.

Unavailable destinations ​

/observability/* without a project shows Not available in this version with a link back, because there is no summary across projects. Unknown addresses show Page not found. /console opens /assistant, and /projects/:projectId/sessions opens /sessions.

Endpoint gaps ​

Each row records a remaining endpoint or UI gap. A route marked available is in the Gateway catalog and uses the Orchestrator owner. The web client does not work around missing routes.

Gap0.x endpointMissing v1 method and pathPlan
Board task positionPOST /api/projects/{p}/backlog/reorderAvailable: PUT /api/v1/projects/{projectId}/backlog/tasks/{taskId}/positionQueue positions are stored and revision-checked. Earlier and later actions target the neighboring visible task in the full state queue.
Send all to ReadyPOST /api/projects/{p}/backlog/ready-allAvailable: POST /api/v1/projects/{projectId}/backlog/ready-allMoves eligible tasks in one graph change. The Board has a Backlog action.
Board columns and stagesGET /api/projects/{p}/board, GET /api/projects/{p}/workflow-stagesGET /api/v1/projects/{projectId}/boardReturn Human Review and Problems placement with the backlog; show both columns.
Task deleteDELETE /api/projects/{p}/backlog/tasks/{id}Available: DELETE /api/v1/projects/{projectId}/backlog/tasks/{taskId}The route rejects tasks with dependents, accepted-plan origins, issue-sync receipts, or an active issue sync cycle. No matching 0.x card action was found, so the Board does not expose one.
Backlog settingsGET and PUT /api/projects/{p}/backlog/settingsGET and PUT /api/v1/projects/{projectId}/backlog/settingsStore intake and automation settings in the project owner.
DecomposePOST /api/projects/{p}/backlog/decomposePOST /api/v1/projects/{projectId}/backlog/decomposeStart a planning run that proposes subtasks; show them as a proposal.
Run deleteDELETE /api/runs/{id}DELETE /api/v1/projects/{projectId}/runs/{runId}Add delete for finished runs with an expected revision; add it to the run menu.
Run archivePOST /api/runs/{id}/archivePOST /api/v1/projects/{projectId}/runs/{runId}/archiveHide finished runs from lists without deleting their records.
Run terminal diagnosticGET /api/runs/{id}/terminal-diagnosticGET /api/v1/projects/{projectId}/runs/{runId}/terminal-diagnosticReturn the failure reason of a failed run; show it in the status strip.
Run retryPOST /api/runs/{id}/retryPOST /api/v1/projects/{projectId}/runs/{runId}/retryCreate a new run from the same selection; link it from the failed run.
BYOK providersGET and POST /api/admin/byok-providers, PUT and DELETE …/{id}, POST …/{id}/activate, POST …/deactivateGET and POST /api/v1/platform/byok-providers, PUT and DELETE /api/v1/platform/byok-providers/{providerId}, POST …/{providerId}/activate, POST /api/v1/platform/byok-providers/deactivateStore provider endpoints with secret references; add a Platform settings section.
Platform-default CopilotGET /api/admin/platform-default-copilot/status, POST …/begin, POST …/disconnectGET /api/v1/platform/copilot-connection, POST /api/v1/platform/copilot-connection/begin, POST /api/v1/platform/copilot-connection/disconnectPlatform runtime defaults hold model defaults only. Add a platform credential connection and show its status.
Account AI accessGET /api/account/ai-accessGET /api/v1/account/ai-accessReturn which model sources the caller can use; show it in the persona menu.
Operator assistantPOST /api/assistant/runs, POST /api/assistant/runs/{id}/messages, GET /api/assistant/runs?limit=POST /api/v1/assistant/runs, POST /api/v1/assistant/runs/{runId}/messages, GET /api/v1/assistant/runsChief of Staff conversations exist but cannot start a run without a project. Add project-less runs, then let New session skip the project picker.
Unattended GitHub readinessGET /api/projects/{p}/github/unattended-readinessGET /api/v1/projects/{projectId}/source-control/unattended-readinessReport whether runs can use the repository without a signed-in user; show it on Settings > Repository.
Automation statusGET /api/projects/{p}/automation/status, POST …/activate, POST …/deactivateGET /api/v1/projects/{projectId}/automation, POST /api/v1/projects/{projectId}/automation/activate, POST /api/v1/projects/{projectId}/automation/deactivateReport and switch backlog automation; add a Board control.
Response-duration percentilesGET /api/projects/{p}/metrics fields responseDuration and timeToFirstToken (p50Ms, p95Ms)Same fields on GET /api/v1/projects/{projectId}/metricsAdd p50 and p95 to the metrics response; show two tiles on Observability.
Cross-project overviewGET /api/overviewGET /api/v1/overviewReturn totals across the caller's projects; show them on Overview and on /observability.
Live project healthGET /api/projects/{p}/dashboardGET /api/v1/projects/{projectId}/healthDefine an owner read for the project's current run health, publish it through the Gateway, then show it in the dashboard status card. Until then, show saved setup readiness instead.
Overview activity feedGET /api/overview field recent_activityGET /api/v1/overview field recentActivityCollect run, merge, and deployment events from the relevant owners, then provide a caller-scoped event list. Until then, show recent run states only.
Dashboard task completionsGET /api/projects/{p}/dashboard field tasks_done_this_weekGET /api/v1/projects/{projectId}/task-metricsRecord task completion timestamps in the backlog owner and return measured counts by range. Until then, keep the completed tasks tile unavailable.
Dashboard agent leaderboardGET /api/projects/{p}/metrics field leaderboardGET /api/v1/projects/{projectId}/agent-metricsAdd per-agent run outcomes and duration data to the run owner, with its agent identity, before publishing ranked agent results. Until then, show an unavailable leaderboard, not project-wide success as an agent score.
Daily success trendGET /api/projects/{p}/metrics daily quality trendGET /api/v1/projects/{projectId}/metrics field dailySuccessAggregate the run owner's terminal outcomes by day and return the numerator and denominator per bucket. Until then, show the selected-range success rate without a daily trend.
Run tracesGET /api/metrics/runs/{runId}/tracesGET /api/v1/projects/{projectId}/runs/{runId}/tracesRun Activity replays run events today. Add span timing and show a trace view.
DiagnosticsGET /api/diagnostics, GET /api/diagnostics/detailedGET /api/v1/platform/diagnosticsReturn service self-checks; add a section on Diagnostics.
Project diagnosticsGET /api/projects/{p}/diagnosticsGET /api/v1/projects/{projectId}/diagnosticsReturn configuration and connection checks for one project.
HeartbeatGET /api/diagnostics/heartbeatGET /api/v1/platform/heartbeatReturn the last heartbeat of each service process; add a table on Heartbeat.
Cluster topologyGET /api/diagnostics/cluster, GET /api/diagnostics/cluster/topologyGET /api/v1/platform/clusterReturn nodes and replicas; add a table on Cluster.
System runtimeGET /api/system/runtimeGET /api/v1/platform/runtimeReturn version and host details; show them on Cluster.
Workflow catalogGET /api/projects/{p}/workflows, GET …/workflows/{id}, GET …/workflows/{id}/yamlGET /api/v1/projects/{projectId}/workflows, GET /api/v1/projects/{projectId}/workflows/{workflowId}Return available workflows and their definitions; list them on Workflows.
Workflow editPUT /api/projects/{p}/workflows/{id}, POST …/workflows/generatePUT /api/v1/projects/{projectId}/workflows/{workflowId}, POST /api/v1/projects/{projectId}/workflows/generateSave workflow definitions with a revision.
Workflow syncPOST /api/projects/{p}/workflows/syncPOST /api/v1/projects/{projectId}/workflows/syncRead workflow files from the repository.
Workflow runPOST /api/projects/{p}/workflows/{id}/runPOST /api/v1/projects/{projectId}/workflows/{workflowId}/runsStart a run with that workflow.
Default workflowPUT /api/projects/{p}/workflows/defaultNone needed: PUT /api/v1/projects/{projectId}/configuration saves defaultWorkflowIdAdd an edit control once the catalog lists choices.
Task workflow overridePUT /api/projects/{p}/backlog/tasks/{id}/workflow-overridePUT /api/v1/projects/{projectId}/backlog/tasks/{taskId}/workflowStore a workflow choice on a task; add it to the card editor.
Workspace refsGET /api/projects/{p}/workspace/refsGET /api/v1/projects/{projectId}/source-control/refsReturn branches and tags; add a branch picker on Workspace.
Workspace treeGET /api/projects/{p}/workspace?ref=GET /api/v1/projects/{projectId}/source-control/tree?ref=Return the file tree at a ref.
Workspace file contentGET /api/projects/{p}/workspace/files/{path}/contentGET /api/v1/projects/{projectId}/source-control/files/{path}?ref=Return one file; show it in a viewer.
Project memoryGET /api/projects/{p}/memory, GET /api/projects/{p}/agents/{a}/memoryGET /api/v1/projects/{projectId}/knowledge/recordsProject-wide Knowledge search and revision history are available across existing provider bindings. Project runs link directly to their session tree and Activity journal; a consolidated project history is not available.
Agent historyGET /api/projects/{p}/team/members/{name}/historyGET /api/v1/projects/{projectId}/agents/{agentId}/historyReturn recent history for one project agent; show it in the Agents drawer.
Repository-backed team syncGET and POST /api/projects/{p}/team/syncGET and POST /api/v1/projects/{projectId}/team/syncThe Agents Sync panel loads a preview when opened, displays the hash and changed .squad/ paths, and requires explicit commit with an optional message. The hash binds project revision, GitHub installation and repository IDs, branch head, and files. No files are mirrored automatically. Digest-checked AgentSuite export/import remains a separate portable transfer.
Project deleteDELETE /api/projects/{p}?confirm=trueDELETE /api/v1/projects/{projectId}Delete an archived project with its revision; add it to Danger zone.

Behavior limits ​

These limits are not missing routes:

  • Owner grant on create: creating a project does not grant the creator access, so create-from-GitHub can't always save the repository.
  • Effective role names: the authorization context lists permissions, not role names. Tiles show access based on permissions.
  • Project health: there is no live status dot. The dashboard shows readiness from saved configuration.
  • Model catalog: the Gateway does not return the available models and providers. Enter existing model and credential references.

Evidence boundary ​

Personal Priorities and the private conversation list are new Gateway adapters, not copies of a 0.x page. The new chat and follow-up forms use the retained NewChatComposer; Flow groups use RunList, and gates use DecisionView and AttentionList. Existing project pages remain available alongside these views.

Priority issue and pull request choices use authorized stored owner lists. Saved-capture list, detail and Priority selection are also new Gateway adapters. Their file tree and Source/Preview content reuse FilesTabPanel and FileViewer. Compare those components at matching widths, but do not invent a 0.x screenshot for the new adapters. See Chief of Staff for behavior and limits.

Local screenshots use fixture data and isolated source snapshots. They compare 0.x, v1 before the adaptation, and adapted v1 without live sign-in or real credentials. They do not prove deployed identity, authorization, or live providers. For the actual routes, settings, and current limits, see Use the v1 web client.