Web UI comparison and v1 adaptations
Use this source comparison to find which 0.x Web interactions the v1 client implements and which routes or data remain unavailable. It describes checked-in source and controlled screenshots, not a deployed product or live acceptance. The v1 Web client reuses the 0.x visual language and interactions that v1 services support. It does not restore the old monolith's API or guess data that a service does not return.
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 part | Used by |
|---|---|
RunList | Overview, Sessions, Dashboard, Orchestrations, Flow, Observability, Diagnostics, and Heartbeat, on the project run list |
DecisionView | Run Approvals tab |
AttentionList | Overview, Flow, and the notification bell, on your notifications |
NewChatComposer | Run Chat tab and the New session page |
CaptureTaskForm | Board Intake and the Start task dialog |
ProjectMetricsSections | Dashboard, Overview, and Observability, on project metrics and usage |
PlatformComponentsSection | Platform settings, Diagnostics, and Cluster, on the platform component report |
PlatformComponentsTable | Run 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.
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 Chief of Staff section follows the 0.x operations summary, projects, metrics, and activity. Start task is available on Overview when you can change an active project. 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 four-counter layout and shows a neutral Health unavailable badge. In-flight, queued-work, and done-today values remain unavailable because GET /api/v1/overview is not published; only the caller-visible active-project count is measured. 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.
| Page | 0.x section order and density | Card, table, and detail treatment | Controls and navigation | v1 data and gaps |
|---|---|---|---|---|
| Overview | Operations, 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 neutral Health unavailable 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, attention actions, and Start task for an active project you can change. The Chief of Staff group follows these sections. The project list becomes one column below 900px; the lower panels stack below 980px. | 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 caller-visible Active projects is measurable. Health unavailable does not imply health status. 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. |
| Dashboard | Status 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. |
| Workflows | Active workflow, Available workflows, then Invalid workflows in 0.x, with only nonempty groups shown. v1 keeps the active section first, followed by Referenced workflows, not an invented available/invalid catalog. | Both use the incumbent stacked ListRow inside RichList, flow icon bubbles, badges, a source/action row, and inline details. v1 groups saved blueprint references by workflow ID, puts references to the default on its active card, and expands blueprint assignments. It does not substitute assignments for a graph. | 0.x has New, Generate, Set as default, Sync, View graph, Run now, Duplicate, Edit, visual edit, schedule, and event controls; there is no global filter. v1 keeps Refresh, Open Project settings, and Use platform default, and adds View blueprints with Enter/Space support. Controls and long identifiers wrap at narrow widths. | Configuration supplies only default and blueprint workflow IDs. Names, file sources, validity, built-in status, catalog choices, definitions, and execution controls remain unavailable, as stated on the page and in the inventory below. |
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 section | 0.x baseline | v1 |
|---|---|---|
| Overview, top | ![]() | ![]() |
| Overview, Operations | ![]() | ![]() |
| Overview, activity | ![]() | ![]() |
| Dashboard, top | ![]() | ![]() |
| Dashboard, model metrics | ![]() | ![]() |
The restored setup, Team, and recent-run panels are also shown in a v1 supporting capture:

Workflows screenshot provenance
The Workflows v1 before capture is the mounted page at 2177004d0bc72f6ab02841c8d019383ffcd63ce7; after is the restored page. Both use a 1440 by 1000 viewport, expanded navigation, project Payments, default issue-to-merge, and three saved blueprint references: engineer uses the default; reviewer and release-manager use review-and-verify. The after capture has that second workflow's blueprint details expanded. All responses are local Playwright fixtures, not a live sign-in or deployment.
| Before, mounted v1 configuration fixture | After, same fixture and viewport |
|---|---|
![]() | ![]() |
The historical reference below renders the real retained src/pages/WorkflowsPage.tsx in an isolated page harness, without the historical shell, at the same 1440 by 1000 viewport. Its functional source matches fb24c71c4d912354998ccaf775af12be4a049798 (later differences are comments). It uses the two equivalent workflow IDs in a local 0.x catalog fixture, including example names, descriptions, source filenames and valid status. Those extra fields are not present in the v1 configuration response and are deliberately absent from the restored v1 cards. This is source comparison, not a recovered historical screenshot or pixel-parity claim.

The supporting v1 capture uses 390 by 844 with navigation collapsed. The browser test also expands long unbroken workflow and blueprint IDs and checks both document and card overflow.

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 surface | Works in v1 | Missing |
|---|---|---|
| Sign-in | Broker sign-in in the 0.x card. | Nothing. |
| Consent | Permission explanations in the sign-in card. | Nothing. |
| Shell and breadcrumbs | 0.x rail with Overview, the v1-only Chief of Staff section link, Projects, and Sessions, the New session button, project switcher, persona menu with the running web app version, and Projects / project / page breadcrumbs. Project pages list Flow, Workflows, Workspace, Observability, Diagnostics, Heartbeat, and Cluster. | Nothing. |
| Notification bell | Your notifications across projects, with the pending count, links to the run Approvals tab or the Board, and Dismiss. | Nothing. |
| Overview | 0.x Operations tiles first, then four recent project rows, metrics and usage for one chosen project, recent run summaries, and Needs attention. The Chief of Staff group with Priorities, New chat, and My conversations follows these sections. Start task opens task capture for an active project you can change. 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. |
| Sessions | Runs 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 task | Floating Start task button. Its dialog captures a task into the Backlog and opens the Board. | Nothing. |
| Projects gallery | 0.x tiles with state and your access. | Nothing. |
| Create blank project | Dialog with a project name. | Nothing. |
| Create from GitHub | Creates the project, then saves the repository with GitHub App sign-in. | The creator receives Owner authority; repository setup remains a separate operation. |
| Dashboard | Run-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. |
| Orchestrations | Active and Recent sections with Load more, a state summary, and Refresh. | Run delete and archive. |
| Run page | Two-pane layout with status strip, Run tree, and tabs Chat, Topology, Approvals, Activity, Changes, Usage, and Run settings. The Activity tab shows short, user-focused event summaries without internal journal fields. Stop run while the run is open. If the run sign-in is refused, the panel shows the reason. | Terminal diagnostic and retry. |
| Run Chat | Conversation text loaded through the run-bound API and a composer for the coordinator or the selected session. Text that the API does not return is shown as unavailable; the UI does not fill in missing messages. | Nothing. |
| Run Approvals | Shared decision view that rereads each gate before acting. | Nothing. |
| Run Changes | GitHub 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 settings | Model, revisions, and implementations for each platform component. | Nothing. |
| Agents | Metrics 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 team | Formulate, 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. |
| Skills | Stat 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. |
| Memories | Run and agent pickers, kind tabs, search, revisions, and transfer. Project-wide Knowledge uses GET /api/v1/projects/{projectId}/knowledge/records; the summary row shows pending-proposal, decision, active-memory, and v1 session-history-record totals, with independent loading and unavailable states. | The session-history total counts records currently returned by accepted project-run history trees. It is not a literal legacy handoff count. |
| Settings > General | Rename with the project revision. | Nothing. |
| Settings > Access | Your permissions and Members: list, Add member, and Remove. | Effective role names (behavior limit). |
| Settings > Repository, Platform components, Run limits, Connections, History, Advanced | Saved configuration fields and revisions. | Nothing. |
| Settings > Models | Default model, reasoning effort, credential, and per-task models. | Model catalog (behavior limit). |
| Settings > Danger zone | Archive and restore. | Project delete: DELETE /api/v1/projects/{projectId}. |
| Account settings | The 0.x description, an Authentication summary with the sign-in method and your name, Sign out, and the GitHub Repo App connection. | Account AI access. |
| Platform settings | The web app version and build commit, and all 16 platform component areas with owner, readiness, and the active and available implementations with their versions. | BYOK providers, platform-default Copilot status, account AI access. |
| Board | Run counts from the same project metrics as Dashboard, plus Open runs, Human review, Problems, and paged Run history. Refresh reloads the backlog, run counts, and all four run lists. The backlog also has Backlog, Ready, Active, and Done columns with counts, summary strip, zoom, Intake, title and description edits, queue state, queue order, drag and drop within or between Backlog and Ready, send all to Ready, archive, prerequisite controls, and a revision-checked Delete task confirmation for eligible tasks. Known dependents and repository-issue links disable delete with an explanation. The Board can preview and explicitly promote a confirmed work plan. | Automatic pickup settings remain unavailable until v1 has a scheduler. File decomposition is not available; work-plan promotion does not read local files or create a plan. |
| Flow | Project 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. |
| Workflows | Active workflow and grouped Referenced workflows rich-list cards, with View blueprints inline assignments. Use platform default clears a saved default; Refresh and Open Project settings work. | Workflow catalog and definitions, validity, graph, edit, run, generate, sync, schedule and event triggers, and choosing a different workflow as the default. |
| Workspace | Repository from configuration, committed files from a selected branch or tag when the configured GitHub App connection can read it, Pull requests that runs opened or reused, and Issues synced into the backlog. | Uncommitted/local worktree changes and repository imports are not available. |
| Observability | Metric tiles, Activity chart, run totals, model and agent usage, and Recent runs. | Per-run traces and response-duration percentiles. |
| Diagnostics | Areas that are not ready from the platform component report, and Failed runs. | Service self-checks and project diagnostic reports. |
| Heartbeat | Seven-day metric tiles and Active and blocked runs. | Heartbeat records for each service process. |
| Cluster | The web app version and build commit, and Platform components with owner, readiness, and implementations with their versions. | Node and replica topology. |
| Apps and Canvas | Not shown. | Not planned for v1. |
Workflows page inventory
The v1 route keeps the project breadcrumb and uses the shared 0.x PageSection, RichList, and ListRow components for the settings-backed cards and their inline-detail layout. References to the default appear on its active card; other references appear once per workflow, in saved order. View blueprints expands the saved assignments with an accessible disclosure; its actions remain visible on touch and keyboard layouts. This is a configuration-backed adaptation, not a restored definition viewer. Workflow definitions and validity are not inferred from saved identifiers.
| 0.x section, card, control, or path | v1 equivalent or exact gap |
|---|---|
/projects/:projectId/workflows, Projects / project / Workflows breadcrumb | The route and project breadcrumb work. Open Project settings links to that project's settings; Refresh reloads the saved configuration. |
| Active workflow card, default badge, and workflow ID | Active workflow shows the saved default ID and Project default badge, source Project configuration, and explicit blueprint-use count. No validity or built-in badge is inferred. Use platform default clears it through PUT /api/v1/projects/{projectId}/configuration, preserving other settings and using the loaded revision. |
| Available workflow cards, built-in/project badges, descriptions, source, trigger badges, and valid status | Missing catalog reads: GET /api/v1/projects/{projectId}/workflows and GET /api/v1/projects/{projectId}/workflows/{workflowId}. The v1 page does not invent these details. |
| Invalid workflow cards and validation errors | Missing GET /api/v1/projects/{projectId}/workflows, which must return validation status and error text with the catalog. |
| Global workflow search or filter | The 0.x page has no global catalog search or filter. Event-trigger conditions are the only filter controls; their missing routes are listed below. |
| Blueprint workflow references | Referenced workflows groups the saved IDs into one card per non-default workflow. View blueprints opens inline assignments; the default card has the same disclosure when blueprints use it. Empty copy distinguishes no explicit references from all references using the default. These cards are not the missing Available workflows catalog. |
| Set-as-default menu, project/built-in groups, and reset action | Use platform default works through the configuration update. Choosing a listed workflow needs the missing catalog read GET /api/v1/projects/{projectId}/workflows; the existing configuration update route can save the selected ID once the catalog is available. |
| View graph inline detail panel | Missing GET /api/v1/projects/{projectId}/workflows/{workflowId}/graph. |
| New workflow, YAML Edit, Edit visually, and editor save/validate/undo/redo/revert/discard controls | Missing workflow YAML read GET /api/v1/projects/{projectId}/workflows/{workflowId}/yaml and save PUT /api/v1/projects/{projectId}/workflows/{workflowId}. The same save route must accept a new workflow ID. |
| Duplicate to project and built-in copy-on-write for edits or triggers | Missing YAML read GET /api/v1/projects/{projectId}/workflows/{workflowId}/yaml and save PUT /api/v1/projects/{projectId}/workflows/{workflowId}. |
| Run now | Missing POST /api/v1/projects/{projectId}/workflows/{workflowId}/runs. |
| Schedule dialog: cadence, weekday/month day, UTC time, save, remove, cancel | Missing YAML read GET /api/v1/projects/{projectId}/workflows/{workflowId}/yaml and save PUT /api/v1/projects/{projectId}/workflows/{workflowId}. |
| Event dialog: event, issue action, condition type/value, match-any, add/remove condition/value, save, remove, cancel | Missing YAML read GET /api/v1/projects/{projectId}/workflows/{workflowId}/yaml and save PUT /api/v1/projects/{projectId}/workflows/{workflowId}. |
| Generate workflow dialog and Check status for a pending job | Missing POST /api/v1/projects/{projectId}/workflows/generate, GET /api/v1/projects/{projectId}/workflows/generation-jobs/{jobId}, and GET /api/v1/projects/{projectId}/workflows/generation-jobs/{jobId}/result. |
| Sync and the empty-state sync action | Missing POST /api/v1/projects/{projectId}/workflows/sync. |
| Loading, empty, error, and denied states | The page uses the incumbent loading skeletons and empty-state component. Failed or denied reads show the error instead of cached references, including open details; Refresh retries. The reset action reports write errors, including denied writes. |
src/v1/OperationsPages.test.tsx covers grouping, default reset and revision preservation, stale-refresh fencing, loading, empty, read/write denial, and read failure. e2e/workflows.e2e.test.mjs exercises the mounted route through the local Gateway harness, Tab/Enter/Space disclosure navigation, 390-pixel layout with long identifiers, all five read states, recovery, and a revision-fenced reset that preserves blueprint choices. No test calls a workflow catalog route or runs a workflow. The 0.x editor, graph, generation, and trigger controls remain blocked by the exact missing routes below; this slice does not close the whole page-parity issue.
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.


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.
Configured-repository Workspace reads are now available through GET /api/v1/projects/{projectId}/source-control/refs, GET /api/v1/projects/{projectId}/source-control/tree?ref={commitSha}, and GET /api/v1/projects/{projectId}/source-control/files/{path}?ref={commitSha}. They use the configured repository, current project read authority, and its GitHub App connection; the tree and file are pinned to an immutable commit. This is separate from the produced-run file browser on Run Changes. Local worktree edits and repository import remain unavailable.
| Gap | 0.x endpoint | Missing v1 method and path | Plan |
|---|---|---|---|
| Board task position | POST /api/projects/{p}/backlog/reorder | Available: PUT /api/v1/projects/{projectId}/backlog/tasks/{taskId}/position | Queue positions are stored and revision-checked. The Board supports earlier/later actions and drag and drop within or between Backlog and Ready. |
| Send all to Ready | POST /api/projects/{p}/backlog/ready-all | Available: POST /api/v1/projects/{projectId}/backlog/ready-all | Moves eligible tasks in one graph change. The Board has a Backlog action. |
| Confirmed work-plan promotion | Existing Orchestrator promotion owner operation; no 0.x Board action | Available: GET /api/v1/projects/{projectId}/runs/{runId}/backlog/promotions/preview and POST /api/v1/projects/{projectId}/runs/{runId}/backlog/promotions | The Board previews the confirmed work plan without writing. On confirmation, the owner uses the current graph revision and commits tasks, dependencies, and origins together. A stale decision or graph revision returns a conflict without partial changes. This action promotes a work plan; it is not file decomposition. |
| Board columns and stages | GET /api/projects/{p}/board, GET /api/projects/{p}/workflow-stages | GET /api/v1/projects/{projectId}/board | Return Human Review and Problems placement with the backlog; show both columns. |
| Task delete | DELETE /api/projects/{p}/backlog/tasks/{id} | Available: DELETE /api/v1/projects/{projectId}/backlog/tasks/{taskId} | The Board confirms the task title, sends the observed graph and task revisions, and replaces local state with the owner's returned graph. Loaded dependents and known repository-issue links are disabled in the UI; the owner remains authoritative for accepted-plan origins, issue-sync receipts, and an active issue sync cycle. No matching mounted 0.x card action was found; this is a new v1 control, not a restored legacy interaction. |
| Automatic pickup settings | GET and PUT /api/projects/{p}/backlog/settings | No v1 route | Keep automatic pickup unavailable until v1 has a scheduler. Do not persist settings that cannot run or show a no-op control. |
| File decomposition | POST /api/projects/{p}/backlog/decompose | No v1 route | File decomposition is not available. The Board only promotes an existing confirmed work plan; it does not read local files or call a model. |
| Run delete | DELETE /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 archive | POST /api/runs/{id}/archive | POST /api/v1/projects/{projectId}/runs/{runId}/archive | Hide finished runs from lists without deleting their records. |
| Run terminal diagnostic | GET /api/runs/{id}/terminal-diagnostic | GET /api/v1/projects/{projectId}/runs/{runId}/terminal-diagnostic | Return the failure reason of a failed run; show it in the status strip. |
| Run retry | POST /api/runs/{id}/retry | POST /api/v1/projects/{projectId}/runs/{runId}/retry | Create a new run from the same selection; link it from the failed run. |
| BYOK providers | GET and POST /api/admin/byok-providers, PUT and DELETE …/{id}, POST …/{id}/activate, POST …/deactivate | GET 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/deactivate | Store provider endpoints with secret references; add a Platform settings section. |
| Platform-default Copilot | GET /api/admin/platform-default-copilot/status, POST …/begin, POST …/disconnect | GET /api/v1/platform/copilot-connection, POST /api/v1/platform/copilot-connection/begin, POST /api/v1/platform/copilot-connection/disconnect | Platform runtime defaults hold model defaults only. Add a platform credential connection and show its status. |
| Account AI access | GET /api/account/ai-access | GET /api/v1/account/ai-access | Return which model sources the caller can use; show it in the persona menu. |
| Operator assistant | POST /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/runs | Chief 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 readiness | GET /api/projects/{p}/github/unattended-readiness | GET /api/v1/projects/{projectId}/source-control/unattended-readiness | Report whether runs can use the repository without a signed-in user; show it on Settings > Repository. |
| Automation status | GET /api/projects/{p}/automation/status, POST …/activate, POST …/deactivate | GET /api/v1/projects/{projectId}/automation, POST /api/v1/projects/{projectId}/automation/activate, POST /api/v1/projects/{projectId}/automation/deactivate | Report and switch backlog automation; add a Board control. |
| Response-duration percentiles | GET /api/projects/{p}/metrics fields responseDuration and timeToFirstToken (p50Ms, p95Ms) | Same fields on GET /api/v1/projects/{projectId}/metrics | Add p50 and p95 to the metrics response; show two tiles on Observability. |
| Cross-project overview | GET /api/overview | GET /api/v1/overview | Return totals across the caller's projects; show them on Overview and on /observability. |
| Live project health | GET /api/projects/{p}/dashboard | GET /api/v1/projects/{projectId}/health | Define 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 feed | GET /api/overview field recent_activity | GET /api/v1/overview field recentActivity | Collect 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 completions | GET /api/projects/{p}/dashboard field tasks_done_this_week | GET /api/v1/projects/{projectId}/task-metrics | Record task completion timestamps in the backlog owner and return measured counts by range. Until then, keep the completed tasks tile unavailable. |
| Dashboard agent leaderboard | GET /api/projects/{p}/metrics field leaderboard | GET /api/v1/projects/{projectId}/agent-metrics | Add 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 trend | GET /api/projects/{p}/metrics daily quality trend | GET /api/v1/projects/{projectId}/metrics field dailySuccess | Aggregate 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 traces | GET /api/metrics/runs/{runId}/traces | GET /api/v1/projects/{projectId}/runs/{runId}/traces | Run Activity replays run events today. Add span timing and show a trace view. |
| Diagnostics | GET /api/diagnostics, GET /api/diagnostics/detailed | GET /api/v1/platform/diagnostics | Return service self-checks; add a section on Diagnostics. |
| Project diagnostics | GET /api/projects/{p}/diagnostics | GET /api/v1/projects/{projectId}/diagnostics | Return configuration and connection checks for one project. |
| Heartbeat | GET /api/diagnostics/heartbeat | GET /api/v1/platform/heartbeat | Return the last heartbeat of each service process; add a table on Heartbeat. |
| Cluster topology | GET /api/diagnostics/cluster, GET /api/diagnostics/cluster/topology | GET /api/v1/platform/cluster | Return nodes and replicas; add a table on Cluster. |
| System runtime | GET /api/system/runtime | GET /api/v1/platform/runtime | Return host details, such as the .NET runtime and operating system, and show them on Cluster. The web app version and each component version are already shown. |
| Workflow catalog | GET /api/projects/{p}/workflows, GET /api/projects/{p}/workflows/{id} | GET /api/v1/projects/{projectId}/workflows, GET /api/v1/projects/{projectId}/workflows/{workflowId} | Return available workflow summaries, validation results, and details for the Workflows cards. |
| Workflow YAML and graph | GET /api/projects/{p}/workflows/{id}/yaml, GET /api/projects/{p}/workflows/{id}/graph | GET /api/v1/projects/{projectId}/workflows/{workflowId}/yaml, GET /api/v1/projects/{projectId}/workflows/{workflowId}/graph | Return the saved YAML and graph descriptor for the editors and inline detail panel. |
| Workflow edit and triggers | PUT /api/projects/{p}/workflows/{id} | PUT /api/v1/projects/{projectId}/workflows/{workflowId} | Create or save a workflow definition, including schedule and event trigger changes, with validation feedback. |
| Workflow generation and resume | POST /api/projects/{p}/workflows/generate, GET /api/projects/{p}/workflows/generation-jobs/{jobId}, GET /api/projects/{p}/workflows/generation-jobs/{jobId}/result | POST /api/v1/projects/{projectId}/workflows/generate, GET /api/v1/projects/{projectId}/workflows/generation-jobs/{jobId}, GET /api/v1/projects/{projectId}/workflows/generation-jobs/{jobId}/result | Return a reviewable YAML draft and support checking a pending generation job. |
| Workflow sync | POST /api/projects/{p}/workflows/sync | POST /api/v1/projects/{projectId}/workflows/sync | Read workflow files from the repository. |
| Workflow run | POST /api/projects/{p}/workflows/{id}/run | POST /api/v1/projects/{projectId}/workflows/{workflowId}/runs | Start a run with that workflow. |
| Default workflow | PUT /api/projects/{p}/workflows/default | Available: PUT /api/v1/projects/{projectId}/configuration saves defaultWorkflowId | The Workflows page can clear a saved default. Choosing a different workflow needs the catalog route above. |
| Task workflow override | PUT /api/projects/{p}/backlog/tasks/{id}/workflow-override | PUT /api/v1/projects/{projectId}/backlog/tasks/{taskId}/workflow | Store a workflow choice on a task; add it to the card editor. |
| Team memory summary | GET /api/projects/{p}/decisions, GET /api/projects/{p}/decisions/inbox, GET /api/projects/{p}/memory, GET /api/projects/{p}/sessions | GET /api/v1/projects/{projectId}/knowledge/records plus sessionHistoryRecordsTotal from GET /api/v1/projects/{projectId}/metrics | Pending proposals use kind=proposal&state=pending; decision and active-memory totals use the other supported project-wide search filters. These count Knowledge proposals, not legacy inbox entries. The v1 summary counts records in accepted run-history trees; this is not a literal legacy SessionContext handoff total. The per-run history endpoint remains GET /api/v1/projects/{projectId}/runs/{runId}/history/sessions. |
| Agent history | GET /api/projects/{p}/team/members/{name}/history | GET /api/v1/projects/{projectId}/agents/{agentId}/history | Return recent history for one project agent; show it in the Agents drawer. |
| Repository-backed team sync | GET and POST /api/projects/{p}/team/sync | GET and POST /api/v1/projects/{projectId}/team/sync | The 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 delete | DELETE /api/projects/{p}?confirm=true | DELETE /api/v1/projects/{projectId} | Delete an archived project with its revision; add it to Danger zone. |
Behavior limits
These limits are not missing routes:
- Create-from-GitHub: project creation grants the creator Owner authority. Saving the optional repository configuration remains a separate operation and can fail without undoing project creation.
- 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.












