> For the complete documentation index, see [llms.txt](https://docs.concurrence.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.concurrence.com/api-reference/change-logs/web-platform/web-platform-history-01.md).

# Web Platform History: Archive 1

Retained Web Platform history, archive 1, with original entry headings and links back to current integration guidance.

Historical entries retain their original release/source context. Use [Current Upgrade Guidance](/api-reference/change-logs/upgrade-guide.md) for current integration boundaries and [Web Platform](/api-reference/change-logs/web-platform.md) for the recent history and archive index. An older entry does not establish current availability.

<details>

<summary>Developer Console: Unified Run Detail and Takeover Surface (July 2026)</summary>

#### Unified Run Detail and Takeover Surface <a href="#unified-run-detail-and-takeover-surface" id="unified-run-detail-and-takeover-surface"></a>

Every row in Runs now opens a consistent detail page, and voice and non-voice takeover share one operator surface.

**What changed:**

* **One run-detail route.** Voice, text, SMS, email, web, and framework rows all open `/runs/{run_id}` with common kind, channel, and status context.
* **Framework trajectory view.** Framework runs display ordered perception, decision, tool, and completion steps with clear loading, empty, truncated, and error states.
* **Consistent takeover surface.** Runs list, run detail, and playground entry points use the same controls. Voice runs open live-audio controls; non-voice runs open the authored-turn composer.
* **Operator guidance in context.** Voice operators can send guidance without taking over and see its delivery status or failure.
* **Close-time handback.** Closing a non-voice takeover surface requests handback so the run is not intentionally left suspended.

**What you need to do:**

* **No action required.** Existing call and conversation details remain available from the unified run page.

</details>

<details>

<summary>Developer Console: Dataset-First Customer Data Intake (July 2026)</summary>

#### Dataset-First Customer Data Intake <a href="#dataset-first-customer-data-intake" id="dataset-first-customer-data-intake"></a>

The Data workspace now organizes intake around named datasets and provides a single update workflow for source-backed content.

**What changed:**

* **Dataset selector and workspace.** A side rail switches between datasets while the main pane shows source, schema, pipeline status, files, and readiness for the selected dataset.
* **One-click source update.** Source-backed datasets start an update, show progress immediately, and refresh automatically when the update finishes.
* **Manual uploads preserved.** Datasets without a connected source keep the existing publish flow and show when files are waiting to publish.
* **Actionable file review.** Review links filter the files table to failed or held items and display their error reasons.
* **Clear large-workspace counts.** The workspace discloses when a displayed file count is partial.

**What you need to do:**

* **No action required.** Existing intake sources and uploads appear in the dataset workspace automatically.

</details>

<details>

<summary>v2.201.96 - Developer Console: Runs Page Redesigned into Live / All Runs / Overview Tabs (July 2026)</summary>

#### Runs Page Redesigned into Live / All Runs / Overview Tabs <a href="#runs-page-redesigned-into-live-all-runs-overview-tabs" id="runs-page-redesigned-into-live-all-runs-overview-tabs"></a>

The unified Runs page has been reorganized from a single table with a summary strip into three horizontal tabs, each focused on a distinct operator intent.

**What changed:**

* **Three tabs: Live, All runs, Overview.** The Runs page now presents three tabs instead of a single combined view:
  * **Live** - The operator queue. Shows only live runs with urgency-ranked ordering. The Status filter axis is hidden on this tab (the lens fixes status to live server-side). Fleet capacity widgets display here for internal users. This is the default landing for the Takeover sidebar shortcut.
  * **All runs** - The full browse table with every filter axis (kind, channel, status). No urgency chrome is shown, even when filtering to live status, so the two views stay visually distinct. This is the default landing for the "Runs" sidebar item.
  * **Overview** - The workspace summary stat strip and distribution ribbons, moved off the queue table so summary metrics do not squeeze the run list.
* **Deep-linkable tab selection.** The active tab is stored in the URL query string, so tab selections are deep-linkable and survive back/forward navigation.
* **Sidebar nav split.** The "Runs" and "Takeover" sidebar items now highlight independently based on the active tab. "Takeover" highlights when the Live tab is active; "Runs" highlights on all other tabs. Both items share the same page path and use a query-string check to determine which is active.
* **Legacy URL support.** Bookmarks and links that used the previous live-status filter parameter are automatically redirected to the Live tab on first load. The old Active Calls and Escalations redirects now land on the Live tab.

**What you need to do:**

* **Update any bookmarks.** If you have bookmarks or integrations that link to the Runs page with the old live-status filter parameter, they will continue to work (they redirect to the Live tab automatically), but you can update them to use the new tab parameter for clarity.
* **No API changes.** The underlying runs endpoint, filters, and data model are unchanged. This is a presentation-layer reorganization.

</details>

<details>

<summary>v2.201.95 - Developer Console: Improved Framework Authoring UX (July 2026)</summary>

#### Improved Framework Authoring UX <a href="#improved-framework-authoring-ux" id="improved-framework-authoring-ux"></a>

The New Agent picker and playground have been updated to improve the experience for authoring and testing agents on partner SDK frameworks.

**What changed:**

* **Redesigned framework cards in the New Agent picker.** The framework selection cards now use a taller layout with better visual separation between the framework badge and description. Cards animate on hover with a slight lift and shadow, and a contextual "Open authoring surface" link appears on hover and focus to indicate where the selection leads.
* **Updated playground helper text.** The playground information banner now uses clearer language when describing how to test agents on partner SDK frameworks - it directs users to open the agent from the Agents page and use its framework test run. The text also notes that voice runtime configuration is available on the Service for applicable model families.

**What you need to do:**

* **No action required.** These are presentation changes. No APIs, data, or workspace configurations are affected.

</details>

<details>

<summary>v2.201.94 - Developer Console: Refined Govern Page Hierarchy (July 2026)</summary>

#### Refined Govern Page Hierarchy <a href="#refined-govern-page-hierarchy" id="refined-govern-page-hierarchy"></a>

Governance surfaces (Developer, Members, and Personal Access Tokens pages) have been updated with a lighter visual hierarchy that reduces card nesting and improves scannability.

**What changed:**

* **Developer page tab renamed.** The first tab on the Developer page is now labeled "Workspace API Keys" (previously "API Keys") for clarity about the credential scope.
* **Getting Started section.** The Getting Started strip on the Developer page now renders as an open section instead of inside a bordered card, and its child blocks use a lighter utility cell treatment with less visual weight.
* **Members page layout.** The "Grant Access" form on the Members page is now a section heading rather than a bordered card, matching the lighter page hierarchy. The audit log note uses a subtle inline treatment instead of a card container.
* **Transfer Ownership card.** The Transfer Ownership danger zone card now uses a dedicated danger-zone visual treatment.
* **Personal Access Tokens page.** The "How These Tokens Work" explainer section and the "Create Personal Access Token" and "Accessible Workspace IDs" forms now render as open sections rather than bordered cards. The three info blocks under "How These Tokens Work" use a top-border divider layout instead of individually bordered cards. Workspace access rows use a divider-separated list instead of individually bordered cards.
* **Active Tokens section.** The Active Tokens table area uses a dedicated table surface treatment.

**What you need to do:**

* **No action required.** These are presentation changes. No APIs, data, or workspace configurations are affected.

</details>

<details>

<summary>v2.201.93 - Developer Console: Surface Field Card Layout Improvements (July 2026)</summary>

#### Surface Field Card Layout Improvements <a href="#surface-field-card-layout-improvements" id="surface-field-card-layout-improvements"></a>

The field cards on the Surface detail page have been redesigned for better readability, especially for fields with nested metadata like options, placeholders, and prefill values.

**What changed:**

* **Improved field layout.** Field cards now use a vertical layout with consistent spacing between sections. The field label, type badge, and metadata (key, placeholder, prefill) are visually separated for easier scanning.
* **Redesigned options display.** Fields with selectable options now render each option as an individual tag within a bordered container, replacing the previous inline comma-separated list.
* **Updated badge placement.** The field type badge and conditional/validation indicators have moved to a dedicated column on the right side of each field card, separating them from the field label and description.
* **Refined required and sensitive indicators.** Required fields now display a text label instead of a badge. Sensitive fields use a warning-styled badge for better visibility.
* **Metadata displayed inline.** Placeholder and prefill values now appear inline below the field key, separated by dot dividers, instead of in a separate highlighted block.

**What you need to do:**

* **No action required.** These are presentation changes. No APIs, data, or workspace configurations are affected.

</details>

<details>

<summary>v2.201.92 - Developer Console: Govern Surfaces Visual Polish (July 2026)</summary>

#### Govern Surfaces Visual Polish <a href="#govern-surfaces-visual-polish" id="govern-surfaces-visual-polish"></a>

Governance pages (Compliance, Developer, and Members) have been updated to match the platform's Design HQ visual language, with refreshed page headers, tab styling, table surfaces, and card layouts.

**What changed:**

* **Updated page descriptions.** The Compliance page description now reads "See what changed, who accessed sensitive data, and which controls still need attention." The Developer page description now reads "Issue, rotate, and review the credentials your workspace uses to call the platform API."
* **Developer page badge.** The Developer page header now displays a "Developer" badge above the title for context.
* **Members page header.** The Members page header now shows an "Workspace access" eyebrow label and an updated description that reads "Manage team members, roles, and invitations for {workspace}."
* **Members table heading.** The members table heading has been renamed from "Workspace members" to "Workspace access" for consistency with the page header.
* **Transfer Ownership card repositioned.** The Transfer Ownership (Danger zone) card on the Members page now appears above the Grant Access card instead of at the bottom of the page, making it more discoverable for workspace owners.
* **Consistent visual treatment.** All governance tables, cards, tabs, and page containers now use a unified visual treatment consistent with the rest of the platform.

**What you need to do:**

* **No action required.** These are presentation changes. No APIs, data, or workspace configurations are affected.

</details>

<details>

<summary>v2.201.91 - Developer Console: Surface Detail Page UX Improvements (July 2026)</summary>

#### Surface Detail Page UX Improvements <a href="#surface-detail-page-ux-improvements" id="surface-detail-page-ux-improvements"></a>

The Surface detail page has been redesigned for clarity, with improved navigation, a streamlined action bar, and updated field rendering.

**What changed:**

* **Breadcrumb navigation.** The Surface detail page now displays a breadcrumb trail (Surfaces / Surface Title) above the page title, making it easy to navigate back to the Surfaces list.
* **Eyebrow label.** A "Surfaces" eyebrow label appears above the page title for context.
* **Streamlined action bar.** The primary action buttons (Refresh and Deliver/Resend) remain in the header. Secondary actions - Edit, Reshape, Copy link, View analytics, View entity, and Archive - have moved into a "More actions" overflow menu (three-dot icon) to reduce toolbar clutter. The Refresh button is now disabled while a refresh is in progress.
* **Destructive action separation.** The Archive action appears below a separator in the overflow menu and is styled as a destructive action, making it visually distinct from other actions.
* **Updated field list layout.** Surface fields are now displayed as a divided list within a bordered container instead of individually bordered cards. Field metadata (placeholder, prefill, options) appears in a subtle highlighted block within each field row, improving scannability.

**What you need to do:**

* **No action required.** These are presentation changes. No APIs, data, or workspace configurations are affected.

</details>

<details>

<summary>v2.201.90 - Developer Console: Surfaces Collection Workflow UX Improvements (July 2026)</summary>

#### Surfaces Collection Workflow UX Improvements <a href="#surfaces-collection-workflow-ux-improvements" id="surfaces-collection-workflow-ux-improvements"></a>

The Surfaces list and review queue have been redesigned for clarity and faster scanning. The list view now uses a card-based layout, and pending review items use inline cards with contextual actions instead of a data table.

**What changed:**

* **Card-based surface list.** The Surfaces List tab now displays surfaces as a responsive card grid instead of a data table. Each card shows the surface title, description, status badge with human-readable labels (Draft, Delivered, Opened, In progress, Completed, Expired, Archived), channel, field count, and creation time. Hovering a card reveals an "Open surface" prompt. Cards link directly to the surface detail page.
* **Redesigned review queue.** The Review tab now displays pending surfaces as individual cards with a warning-tinted border instead of a table with column headers. Each card shows the surface title, a "Pending review" badge, channel, entity, source, and creation time inline. Approve and Reject actions are displayed directly on each card. A header above the card list shows a summary count of surfaces waiting for review and a brief description of the review step.
* **Updated surface detail description.** The default description on the surface detail page now reads "Review the collection flow, delivery status, and submitted data" to better describe the page content.

**What you need to do:**

* **No action required.** These are presentation changes. No APIs, data, or workspace configurations are affected.

</details>

<details>

<summary>v2.201.89 - Developer Console: Sensorium Availability by Workspace ID and UI Refinements (July 2026)</summary>

#### Sensorium Availability by Workspace ID and UI Refinements <a href="#sensorium-availability-by-workspace-id-and-ui-refinements" id="sensorium-availability-by-workspace-id-and-ui-refinements"></a>

The Sensorium demo section and navigation are now resolved by stable workspace identity in addition to workspace slug, and several UI refinements improve accessibility and clarity across the data sources catalog and Sensorium pages.

**What changed:**

* **Sensorium availability by workspace ID.** The Sensorium navigation section and demo surface now resolve by the workspace's immutable identifier in addition to the workspace slug. This ensures that workspaces whose display name differs from the backend slug (for example, a workspace named "Population Health" with a backend slug of "m42") correctly surface the Sensorium section. Previously, only slug-based matching was used, which could miss workspaces whose console URL slug did not match the allowlist.
* **Section-level synthetic data disclosure.** The per-page "Sample data" banners previously shown on individual Sensorium pages have been replaced by a single persistent disclosure banner at the top of the entire Sensorium section. This keeps the synthetic-data signal visible on every page (including deep-linked pages) without repetitive per-page noise.
* **Connector catalog disclosure.** The data sources connector catalog now displays an inline note clarifying that availability statuses shown in the catalog are illustrative and do not reflect live connection state for the current workspace.
* **Connector brand icons render monochrome.** Connector brand glyphs in the data sources catalog now render in monochrome using the current text color, consistent with the design system. Previously, some connector icons used hardcoded vendor brand colors that could break in dark mode.
* **Data flow diagram accessibility.** The data flow diagram in the data sources header now carries an ARIA label describing the illustrated flow, improving screen reader accessibility.

**What you need to do:**

* **No action required.** These are navigation, accessibility, and presentation changes. No APIs, data, or workspace configurations are affected.

</details>

<details>

<summary>v2.201.88 - Developer Console: Govern Workspace UX Improvements (July 2026)</summary>

#### Govern Workspace UX Improvements <a href="#govern-workspace-ux-improvements" id="govern-workspace-ux-improvements"></a>

The Govern workspace experience has been refined with updated navigation labels, a simplified PHI access report description, and table layout improvements across several pages.

**What changed:**

* **Navigation labels updated.** Several sidebar labels have been renamed for clarity: "Home" is now "Dashboard", "Records" is now "Entity Browser", "Sources" is now "Data Sources", "Memory" is now "Agent Memory", "Settings" is now "Workspace", "Programs" is now part of the consolidated navigation, and "Outreach" is now "Surfaces". A new "Command Center" and "Queue" label have been added to the sidebar where applicable.
* **PHI access report description simplified.** The compliance PHI access tab now displays a shorter, clearer description of what the report covers rather than listing individual record types.
* **API Keys table layout improved.** The API Keys table columns no longer use extra-wide column sizing, resulting in a more compact and readable table layout.
* **Audit events time presets inlined.** The compliance Events tab time-range preset buttons now compute timestamps inline rather than relying on shared utility functions, with no change to user-facing behavior.

**What you need to do:**

* **No action required.** These are navigation and presentation changes. No APIs, data, or workspace configurations are affected.

</details>

<details>

<summary>v2.201.87 - Developer Console: Workspace-Scoped Demo Surfaces and Navigation Updates (July 2026)</summary>

#### Workspace-Scoped Demo Surfaces and Navigation Updates <a href="#workspace-scoped-demo-surfaces-and-navigation-updates" id="workspace-scoped-demo-surfaces-and-navigation-updates"></a>

Demo and preview surfaces in the Developer Console are now scoped to the workspace they belong to rather than gated by global feature flags. Navigation labels and availability are driven by workspace identity, and inline sample-data banners have been replaced by workspace-level disclosure so the demo boundary is unmissable without per-page noise.

**What changed:**

* **Demo surfaces scoped to workspace.** Synthetic demo pages (Proactive Journeys, Agent Memory, and the Sensorium section) are now visible only in workspaces explicitly configured for demo content. Previously, some of these pages were gated by a global demo-preview flag and appeared as palette-only items. They now appear in the sidebar when the active workspace qualifies.
* **Navigation labels updated.** "Journeys (sample)" is now "Proactive Journeys" and "Memory (sample)" is now "Agent Memory" in the sidebar. The synthetic nature of these pages is communicated through workspace scoping and in-page context rather than nav labels.
* **Sensorium routes available in demo workspaces.** The Sensorium section (Overview, Observation, Patient Profile, Forecast, Interventions, Campaigns) is now accessible in both the original allowlisted workspaces and in configured demo workspaces, so sales teams can demonstrate the full product surface from a single workspace.
* **Inline sample-data banners removed.** The per-page and per-section banners that read "Sample data" on Journeys, Agent Memory, and Sensorium pages have been removed. Demo boundaries are now enforced at the workspace and navigation level.
* **Data Sources catalog in demo workspaces.** When viewing Data Sources in a demo workspace, the default tab is the connector catalog (a synthetic showcase of available connectors) rather than the active sources list. A data flow diagram appears in the page header to illustrate the platform data story. The "Add source" button is hidden in demo workspaces since the catalog is illustrative.
* **Connector cards use brand marks.** Connector cards in the catalog now display official vendor glyphs (where available) instead of monogram abbreviations, improving visual recognition.
* **Voice Library visible in demo workspace sidebar.** The Voice Library page, previously palette-only, now appears in the sidebar when the active workspace is a demo workspace.
* **Non-production demo workspace override.** Staging and preview environments support a URL parameter for temporarily treating a workspace as a demo workspace, enabling QA of demo surfaces without requiring the canonical demo workspace. This override is not available in production.

**What you need to do:**

* **No action required.** These are navigation and presentation changes. No APIs, data, or workspace configurations are affected. If you previously accessed demo pages through the command palette, they now appear directly in the sidebar when your workspace qualifies.

</details>

<details>

<summary>v2.201.86 - Developer Console: Improved Outreach Save Workflow (July 2026)</summary>

#### Improved Outreach Save Workflow <a href="#improved-outreach-save-workflow" id="improved-outreach-save-workflow"></a>

The Rules and Templates tabs on the Outreach page now provide clearer feedback about unsaved changes and offer a dedicated discard option.

**What changed:**

* **Unsaved changes indicator.** Both the Rules tab and the Templates tab now display an inline status indicator showing whether changes have been saved. When edits are pending, a warning dot and "Unsaved changes" label appear. When all changes are saved, a checkmark and "All changes saved" label appear.
* **Discard changes button.** A new "Discard changes" button lets you revert all pending edits back to the last saved state without leaving the page. The button is disabled when there are no unsaved changes.
* **Save button updated.** The save button now includes a save icon and sits alongside the discard button in a unified action bar at the bottom of the form, separated from the form fields by a visual divider.

**What you need to do:**

* **No action required.** This is a UX improvement. Save behavior is unchanged - the save button still submits all pending changes at once.

</details>

<details>

<summary>v2.201.85 - Developer Console: Unified Takeover Surface (July 2026)</summary>

#### Unified Takeover Surface <a href="#unified-takeover-surface" id="unified-takeover-surface"></a>

The three separate takeover components - the voice takeover drawer on the Runs table, the non-voice authored-turn composer drawer, and the playground inline takeover bar - have been consolidated into a single unified takeover surface. The surface derives its interaction mode from the run's channel automatically.

**What changed:**

* **One takeover surface for all channels.** Voice runs open a live-audio takeover view (join, listen, go live, hand back, guidance, transcript, audio meters). Non-voice runs (text, SMS, email, web) open an authored-turn composer view (take over, compose replies, hand back). The surface selects the correct mode based on the run - there is no longer a separate drawer per channel type.
* **Consistent across all entry points.** The Runs table row action, the run detail page header button, and the playground inline bar all use the same underlying surface. Eligibility, identity resolution, and safety behavior are structurally identical everywhere - they cannot diverge.
* **Safety model unchanged.** Voice: join always starts in listen mode; going live requires explicit confirmation; a persistent banner shows while the patient can hear you. Non-voice: taking over pauses the agent; a persistent banner shows while the operator is driving; hand-back resumes the agent. Identity is always the signed-in user's own operator profile with no picker.
* **Playground inline bar unchanged in behavior.** The playground takeover bar works exactly as before - same join flow, same go-live confirmation, same analytics events. It now shares the same component as the drawer variants.

**What you need to do:**

* **No action required.** This is an internal refactor. All takeover workflows, eligibility rules, and safety guarantees are unchanged. The user-facing behavior is identical.

</details>

<details>

<summary>v2.201.84 - Developer Console: Takeover Entry Point on Run Detail Page (July 2026)</summary>

#### Takeover Entry Point on Run Detail Page <a href="#takeover-entry-point-on-run-detail-page" id="takeover-entry-point-on-run-detail-page"></a>

Operators can now take over a run directly from the run detail page without navigating back to the Runs table.

**What changed:**

* **"Take over" button on the run detail page header.** When viewing a run that is eligible for takeover, a "Take over" button appears in the page header alongside the back navigation. Clicking it opens the same takeover drawer used on the Runs table row action - voice-eligible runs open the live-audio takeover drawer, and non-voice-eligible runs (text, SMS, email, web) open the authored-turn composer drawer.
* **Same eligibility guards as the table.** The detail page uses the same takeover eligibility logic as the Runs table row action, so a run that is eligible for takeover on the list is also eligible on the detail page, and vice versa. The two surfaces cannot diverge.
* **No workflow change for existing takeover paths.** The Runs table row action continues to work as before. The detail page entry point is an additional convenience for operators who have already navigated into a run's detail.

**What you need to do:**

* **No action required.** This is an additive UX improvement. Existing takeover workflows are unchanged.

</details>

<details>

<summary>v2.201.83 - Developer Console: Performance Page Link Relabeled (July 2026)</summary>

#### Performance Page Link Relabeled <a href="#performance-page-link-relabeled" id="performance-page-link-relabeled"></a>

The Team Performance page in the Operators section previously displayed a "Takeover" button that navigated to the live triage queue. This was misleading - the Performance page has no run context, so there is nothing to take over. The button has been relabeled to accurately describe its destination.

**What changed:**

* **"Takeover" button renamed to "Live queue".** The action button on the Team Performance page now reads "Live queue" and navigates to the live triage queue, matching what the button actually does. Takeover actions remain available on individual runs in the Runs page where a run context exists.

**What you need to do:**

* **No action required.** This is a label correction. The navigation destination is unchanged.

</details>

<details>

<summary>v2.201.82 - Developer Console: Escalation Triage Folded into Runs Live (July 2026)</summary>

#### Escalation Triage Folded into Runs Live <a href="#escalation-triage-folded-into-runs-live" id="escalation-triage-folded-into-runs-live"></a>

The standalone Escalations page and its sidebar nav item in the Operators section have been retired. Escalation triage is now part of the Runs Live view, where active escalations surface as urgency-ranked live runs.

**What changed:**

* **Escalations nav item removed.** The "Escalations" entry in the Operators sidebar section has been removed. The Operators section now contains the operator roster (Operators) and Performance surfaces.
* **Escalations tab removed.** The "Escalations" tab inside the Operators section layout has been removed.
* **Redirect in place.** Navigating to the previous `/operators/escalations` path now redirects to the Runs Live view (pre-filtered to live runs), where escalation triage is handled through the urgency-ranked lens.
* **No data loss.** All escalation data remains accessible through the Runs Live surface. The urgency ranking, critical spotlight, and triage capabilities introduced in the previous release continue to work in the Runs Live context.

**What you need to do:**

* **Update any bookmarks or links** that point to the Operators Escalations page. They will redirect automatically, but direct links to the Runs Live view are preferred.
* **No workflow changes required.** Escalation triage is available on the Runs Live page with the same urgency-first ranking.

</details>

<details>

<summary>v2.201.81 - Developer Console: Urgency-First Escalation Triage (July 2026)</summary>

#### Urgency-First Escalation Triage <a href="#urgency-first-escalation-triage" id="urgency-first-escalation-triage"></a>

The Escalations page in the Operators section now ranks every active escalation by urgency and separates the most dangerous calls into a visual spotlight, replacing the previous flat table ordering.

**What changed:**

* **Urgency triage.** Every active escalation is classified into a critical, high, medium, or low urgency tier based on the combination of immediate flag, risk score, wait time, required operator specialization, and call status. The ranking is designed to fail dangerous - unknown risk on an unclaimed call is treated as high rather than low, and an unknown call direction is treated as real rather than test.
* **Critical spotlight.** Escalations classified as critical are pulled out of the table and displayed as priority cards at the top of the page. Each card shows a triage score, clinical concept, caller identity, risk and status badges, wait time, required specialty, and direct action buttons for takeover and transcript viewing. An alert banner announces when one or more critical escalations are waiting.
* **Status strip.** A headline summary strip shows immediate count, high-urgency count, oldest wait time, connected count, and total escalations so operators can read the queue shape at a glance.
* **Urgency column.** The queue table now leads with an urgency column that uses a color rail, a distinct icon shape, and the urgency word (high, medium, or low) so urgency is communicated through multiple visual channels, not color alone.
* **Risk column.** Risk score has its own column so operators can compare risk down the column. Unknown risk displays as "Risk -", never as "0%" - an unknown-risk call must never read as safe.
* **Sim/Test badge.** Simulated and test calls display a badge on the call identifier so operators can distinguish non-real traffic.
* **Wait time ticks live.** Wait time re-derives between server refreshes so a call crossing a wait threshold surfaces within seconds.
* **Completeness warning.** When the loaded set does not represent all active escalations, a warning banner tells operators that more exist than are shown and links to the full live queue.
* **Stale data handling.** If the live data feed is temporarily interrupted, the page retains the last known state with a warning banner rather than blanking the board. A complete fetch failure on first load shows an explicit error state explaining the service is unreachable.
* **Live indicator.** A live-status indicator in the page header shows connection health and how recently data was updated.
* **Row click opens transcript.** Clicking a table row opens the transcript for read-only inspection. The irreversible takeover action remains only in the row action menu, so accidental clicks in a reordering live list cannot trigger a takeover.
* **Queue clear state.** When no escalations are active, the page shows a clear "queue clear" empty state confirming no callers are waiting.

**What you need to do:**

* **No action required.** All existing escalation data and auto-refresh behavior are preserved. The urgency ranking is applied automatically.

</details>

<details>

<summary>v2.201.80 - Developer Console: Dataset-First Intake Workspace (July 2026)</summary>

#### Dataset-First Intake Workspace <a href="#dataset-first-intake-workspace" id="dataset-first-intake-workspace"></a>

The Intake tab (Data Sources) now opens with a dataset-first workspace that organizes the entire intake pipeline around datasets rather than individual pipeline stages.

**What changed:**

* **Dataset workspace is the primary surface.** The Intake tab now opens to a workspace view where each dataset is a selectable card showing its name, type, file counts, searchable row count, and current readiness status. Selecting a dataset reveals its detail panel with a primary action button, pipeline visualization, file status counts, source and schema information, a recent files table, and searchable data status.
* **Pipeline visualization.** A four-step pipeline strip (Check Drive, Prepare files, Publish, Agent setup) shows where each dataset stands in the intake lifecycle. Steps are color-coded to indicate completed, active, needs-attention, and upcoming states.
* **Single primary action per dataset.** Each dataset exposes one contextual action that advances it to the next step: "Update from Drive" (check mapped folders for new files), "Prepare files" (extract and validate landed files), "Publish" (make successful data searchable), "Review files" (inspect files with issues), or "Refresh status" (poll for progress). The button label and behavior adapt to the dataset's current state.
* **Dataset update runs.** Datasets with mapped Drive sources support a one-click update that orchestrates the full check-prepare-publish cycle. The workspace tracks the update run's progress (checking Drive, preparing, publishing, completed, needs review, or failed) and polls automatically while active. Elapsed time is displayed during active updates.
* **Readiness labels.** Each dataset shows a human-readable readiness badge: Published, Ready to publish, Publishing, Preparing files, Ready to prepare, New files found, Ready to check Drive, Checking Drive, Needs review, Update failed, or Needs data.
* **Status labels updated.** File status labels now use "Preparing" instead of "Processing" across the intake UI. Batch status labels are now task-oriented: "Found files" (was Discovered), "Ready to prepare" (was Ready), "Preparing" (was Processing), and "Prepared" (was Completed).
* **Advanced section.** The lower-level pipeline segments (Uploads, Schemas, Sources, Batches, Destinations) are still accessible in a collapsible Advanced section for operator debugging and deep-linked workflows. The Advanced section opens automatically when a non-default segment is deep-linked.
* **Sources table improvements.** The Sources table now shows mapped folders with dataset names and direct links to the corresponding Drive folders, replacing the previous flat dataset list column.
* **Upload dialog pre-selects dataset.** When uploading files from a dataset's detail panel, the upload dialog pre-selects that dataset.
* **Local environment support.** The intake UI feature flag now enables the tab in local development environments in addition to staging and preview.

**What you need to do:**

* **No action required.** The dataset workspace is the new default view. All existing intake data and workflows are preserved. The Advanced section provides full access to the previous pipeline-stage views.

</details>

<details>

<summary>v2.201.79 - Developer Console: Escalations Table Unified with Operator Roster (July 2026)</summary>

#### Escalations Table Unified with Operator Roster <a href="#escalations-table-unified-with-operator-roster" id="escalations-table-unified-with-operator-roster"></a>

The active escalation queue on the Escalations page now renders as a standard data table - the same component used by the operator roster and the Runs table - replacing the previous stack of inline row divs.

**What changed:**

* **Escalations rendered as a data table.** The active escalation queue is now a full table with sortable columns (Call, Status, Priority, Caller, Concept, Trigger, Specialty, Wait, Requested), infinite scroll pagination, and standard loading, empty, and error states. This replaces the previous card-based row layout and brings the escalation queue into visual and behavioral parity with the operator roster table and the Runs table.
* **Row actions column.** Each escalation row now has an actions menu. Requested escalations with a call identifier offer a "Join call" action (navigates to the live Runs view). Any escalation with a call identifier offers a "View transcript" action (navigates to the transcript detail page). These replace the previous inline link buttons.
* **Priority column.** Immediate and risk-score indicators are combined into a single Priority column with badge styling, replacing the scattered badge placement in the old row layout.
* **Page layout updated.** The Escalations page now uses the standard page shell layout, matching other pages in the Operators section. The page header uses a standard action button instead of a configuration header with a secondary action. The statistics section toggle controls now use the shared toggle group component instead of a hand-rolled button row.
* **No search or filter controls on the queue.** The escalation queue is a small, auto-refreshing live list (not a searchable registry), so search and column filter controls are intentionally omitted.

**What you need to do:**

* **No action required.** These are visual and interaction improvements. All existing escalation data, actions, and auto-refresh behavior are preserved.

</details>

<details>

<summary>v2.201.78 - Developer Console: Operator Surfaces Adopt Design-System Components (July 2026)</summary>

#### Operator Surfaces Adopt Design-System Components <a href="#operator-surfaces-adopt-design-system-components" id="operator-surfaces-adopt-design-system-components"></a>

The Escalations, Team Performance, operator roster, and run takeover surfaces now use shared design-system components for layout, empty states, and data visualization, replacing inline one-off implementations.

**What changed:**

* **Escalations page restructured.** The active escalation queue now appears first as the primary triage surface, with aggregate statistics moved below as secondary context. Both sections use shared section headers. The inline horizontal bar chart has been replaced by a standard distribution bar component. Empty states for both the queue and statistics sections now use the shared empty-state component with descriptive guidance text. Navigation actions (takeover link, back-to-escalations link on the transcript page) now use client-side routing instead of full page reloads.
* **Team Performance page updated.** The availability breakdown (online, busy, offline) is now displayed as a labeled status strip with tone-coded segments instead of three colored numbers in a single metric card. The operator rankings section uses a shared section header and empty-state component. The headline metrics grid has been adjusted from a four-column to a three-column layout (total operators, escalations handled, average handle time), with availability shown separately in the status strip. Rank medallion colors have been refined for better visual distinction (bronze now uses a distinct tone from gold).
* **Operator type badge centralized.** Operator type badges (crisis counselor, administrative, clinical) now derive their color variant from a single shared helper, ensuring consistent coloring across the operator roster table and the operator detail card.
* **Run takeover drawer improvements.** The live transcript in the takeover drawer now distinguishes speakers with labeled rows (Caller, You, Agent), each with an icon and a colored left border, instead of relying on text color alone. The transcript auto-scrolls to the newest segment when the operator is near the bottom, without interrupting scroll-back. The agent guidance section is visually receded into a muted aside so it reads as secondary to the transcript and audio controls. Section headers within the drawer (guidance, live transcript) now use the shared section header component.
* **Create Operator page simplified.** The redundant page header above the stepped form has been removed; the stepped container's own title is sufficient.

**What you need to do:**

* **No action required.** These are visual and layout improvements with no behavioral changes. All existing functionality is preserved.

</details>

<details>

<summary>v2.201.77 - Developer Console: Eval Quality Panel on the Metrics Page (July 2026)</summary>

#### Eval Quality Panel on the Metrics Page <a href="#eval-quality-panel-on-the-metrics-page" id="eval-quality-panel-on-the-metrics-page"></a>

The Quality page in the Improve section now includes a channel-agnostic Eval Quality panel that surfaces production-eval verdicts across all conversation channels.

**What changed:**

* **Eval Quality panel added to the Quality page.** A new panel on the Metrics page displays pass-rate, average score, and total evaluation counts aggregated across all conversation channels (voice, text, SMS, email, web) for the last 30 days. The panel shows three stat cards (pass rate, average score, total evals), a pass-rate-over-time trend chart, and a per-eval-key breakdown so teams can see which evaluations are passing or failing.
* **Empty state before evaluations are active.** When no evaluation verdicts exist for the workspace, the panel displays a descriptive empty state explaining that pass-rate and score trends will appear once production evaluations run against the workspace's conversations. This ensures the surface is ready when automatic post-conversation evaluation is enabled.
* **Error handling.** If the eval quality data cannot be loaded, the panel shows an error state with a clear message rather than crashing or displaying stale data.

**What you need to do:**

* **No action required.** The panel appears automatically on the Quality page. Data populates once production evaluations are running against the workspace's conversations.

</details>

<details>

<summary>v2.201.76 - Developer Console: Improve Section IA - Workspace-Switch Context and PageShell Migration (July 2026)</summary>

#### Improve Section IA - Workspace-Switch Context and PageShell Migration <a href="#improve-section-ia-workspace-switch-context-and-pageshell-migration" id="improve-section-ia-workspace-switch-context-and-pageshell-migration"></a>

Workspace switching from Improve-section pages now lands on the equivalent page in the target workspace, and the Team Performance page has been migrated to the standard page layout.

**What changed:**

* **Workspace-switch context for Improve pages.** Switching workspaces while on any Improve-section surface (Metrics, Insights, Dashboards, Coverage, Overview) now navigates to the same page in the target workspace. Previously, workspace switches from these pages silently dropped the user to the home page.
* **Team Performance page layout unified.** The Team Performance page now uses the standard page shell layout consistent with the rest of the console, replacing the legacy configuration container layout.
* **Operator name display improved.** The per-operator ranking list on Team Performance now shows only the operator's human-readable name. The truncated identifier fragment is used as a subtitle only when no name is available, reducing visual noise for named operators.

**What you need to do:**

* **No action required.** These are navigation and layout improvements with no behavioral changes.

</details>

<details>

<summary>v2.201.75 - Developer Console: Improve Section UX - Quality Polarity, KPI Fixes, and Dashboard Polish (July 2026)</summary>

#### Improve Section UX - Quality Polarity, KPI Fixes, and Dashboard Polish <a href="#improve-section-ux-quality-polarity-kpi-fixes-and-dashboard-polish" id="improve-section-ux-quality-polarity-kpi-fixes-and-dashboard-polish"></a>

Several fixes across the Improve section (Insights, Dashboards, and Operator Performance) correct metric display issues and improve usability.

**What changed:**

* **Insight metric sentiment/polarity rendering fixed.** Insight block metrics now correctly use the `sentiment` field (good/bad/neutral) for color and the `trend` field (up/down/flat) for arrow direction. Previously, some metric blocks assumed "up" always meant good, which produced incorrect coloring for "higher is worse" metrics like escalation rate. When the `sentiment` field is absent (older payloads), the renderer falls back to a label-based polarity heuristic.
* **Dead KPIs populated.** The production health overview now correctly reads escalation rate and median latency from the analytics response. Previously these KPIs always displayed as unavailable because they were reading from fields that no longer existed in the response shape.
* **Latency KPI consistency fix.** The median latency KPI now reads from a consistent latency component across all percentiles, preventing a silent mismatch where the median could reflect a different measurement than the 90th and 99th percentile values.
* **Dashboard detail page titles.** Individual dashboard pages now display a human-readable title derived from the dashboard name (e.g., "Call Quality" instead of the generic "Dashboard") without requiring an additional data fetch.
* **Empty dashboard state.** The Dashboards index page now shows a descriptive empty state when no dashboards are configured for the workspace, instead of rendering a blank grid.
* **Insights error handling improved.** The Insights page now gracefully handles cases where the digest response omits or returns a non-array value for suggested questions, instead of crashing the page. Mid-stream errors from the insights service are also surfaced as readable messages instead of silently producing a "no response" fallback.
* **Operator Performance renamed.** The Operator Performance page header has been renamed to "Team Performance" to better reflect its scope. The "Takeover" button now uses client-side navigation instead of a full page reload.
* **Performance data refresh.** The Team Performance view now refreshes data automatically on a regular cadence so operator status indicators stay current without manual page reloads.

**What you need to do:**

* **No action required.** These are bug fixes and UX improvements. If you consume insight blocks programmatically, ensure you use the `sentiment` field for coloring and the `trend` field for arrow direction - do not assume "up" means good.

</details>

<details>

<summary>v2.201.74 - Developer Console: Generalized Data Visualization and Distribution Ribbons (July 2026)</summary>

#### Generalized Data Visualization and Distribution Ribbons <a href="#generalized-data-visualization-and-distribution-ribbons" id="generalized-data-visualization-and-distribution-ribbons"></a>

Chart defaults and part-to-whole visualizations have been promoted from domain-specific code into shared platform components, so every chart and distribution bar across the Developer Console uses the same visual language and semantic color tokens.

**What changed:**

* **Distribution ribbon component.** A new reusable distribution ribbon visualizes part-to-whole breakdowns as a compact stacked bar with an adjacent legend. The ribbon normalizes segments, renders accessible summaries, and handles empty states gracefully. It replaces the previous domain-specific sentiment bar and is now used across the platform.
* **Runs summary strip expanded.** The summary strip above the Runs table now includes two distribution ribbons - a status mix showing how all workspace runs currently resolve, and a run mix showing the split between conversation and framework workloads. These ribbons appear when the workspace has at least one run.
* **Framework run trajectory breakdown.** The framework run detail panel now displays a distribution ribbon summarizing the mix of trajectory step kinds (perception, decision, tool, completion) above the step-by-step list, giving operators a quick shape-of-the-run overview.
* **Insight digest charts updated.** Trend charts on the Insights digest view now use the shared chart layout defaults and the platform chart component, ensuring consistent styling with other charts across the console.
* **Shared chart layout defaults.** Plotly chart layout defaults (margins, grid colors, legend positioning, hover labels, reference markers) have been promoted from domain-specific configuration into a shared utility. All charts across the console - including domain dashboards, insight views, and run visualizations - now inherit the same low-chrome, token-based styling.
* **Consistent color tokens.** Charts and distribution ribbons reference a shared set of semantic color tokens (primary, success, warning, destructive, info, muted) so colors are consistent across all visualizations regardless of where they appear.

**What you need to do:**

* **No action required.** This is a visual and structural improvement. All existing charts and visualizations continue to work with updated styling.

</details>

<details>

<summary>v2.201.73 - Developer Console: Operate Surface Cleanup - Dead Routes and Code Removed (July 2026)</summary>

#### Operate Surface Cleanup - Dead Routes and Code Removed <a href="#operate-surface-cleanup-dead-routes-and-code-removed" id="operate-surface-cleanup-dead-routes-and-code-removed"></a>

Several legacy routes and their backing code have been removed from the Developer Console. These routes were either already redirecting to their replacement surfaces or were entirely unused. This cleanup removes the redirect stubs and dead code so the codebase only contains live surfaces.

**What changed:**

* **Command Center routes removed.** The `/command-center` and `/operators/command-center` routes have been deleted. Both were already redirecting to `/home` and `/runs?f_status=live` respectively. Users with old bookmarks to these URLs will now see a 404 instead of a redirect.
* **Operators dashboard and queue routes removed.** The `/operators` dashboard and `/operators/queue` routes have been deleted. Both were already redirecting to the unified Runs page with the live status filter. Users with old bookmarks to these URLs will now see a 404.
* **Gap Scanner route removed.** The `/gap-scanner` route has been deleted. It was already redirecting to the Programs page (Outreach) with the detection tab selected.
* **Proactive Journey routes removed.** The `/dashboards/proactive-journey` and `/dashboards/proactive-journey/{journeyId}` routes have been deleted. They were already redirecting to the Journeys page.
* **Call observer route removed.** The `/calls/observe/{callSid}` route has been deleted. It was already redirecting to the Playground.
* **Agent Trace detail page replaced with redirect.** The `/agent-trace/{id}` detail page has been replaced with a server-side redirect to `/runs/{id}`, completing the consolidation of trace views into the unified Runs detail surface.
* **Operator takeover route prefix updated.** The route-access gate for operator-role users now keys off the Runs page prefix instead of the retired command center prefix, so operators land on the correct surface.
* **Stored workspace preferences updated.** If a returning user had a stored workspace preference pointing to a deleted route (such as `/command-center` or `/operators/queue`), the console now automatically redirects to the corresponding live route instead of landing on a 404.
* **Navigation highlights cleaned up.** Legacy route prefixes that were kept in the sidebar highlight rules solely for redirect stubs (such as `/gap-scanner`, `/dashboards/proactive-journey`, and `/calls/observe`) have been removed. The sidebar no longer highlights based on routes that do not exist.

**What you need to do:**

* **Update any bookmarks or external links** that point to the removed routes. Use the current canonical URLs instead:
  * `/command-center` → `/{workspace}/home`
  * `/operators`, `/operators/queue`, `/operators/command-center` → `/{workspace}/runs?f_status=live`
  * `/gap-scanner` → `/{workspace}/outreach?tab=detection`
  * `/dashboards/proactive-journey` → `/{workspace}/journeys`
  * `/calls/observe/{callSid}` → `/{workspace}/playground/{callSid}`
  * `/agent-trace/{id}` → `/{workspace}/runs/{id}`

</details>

<details>

<summary>v2.201.72 - Developer Console: Operator Guidance in the Voice Takeover Drawer (July 2026)</summary>

#### Operator Guidance in the Voice Takeover Drawer <a href="#operator-guidance-in-the-voice-takeover-drawer" id="operator-guidance-in-the-voice-takeover-drawer"></a>

Operators monitoring a live voice call can now send text guidance to the agent without taking over the call. The agent keeps driving the conversation and folds the guidance into its next turn.

**What changed:**

* **Guidance panel in the takeover drawer.** The voice takeover drawer on the Runs page now includes a "Guide the agent" section above the live transcript. Operators can type a short instruction (up to 5,000 characters) and send it to the agent while remaining in listen mode - no audio join or takeover required. The agent continues responding to the caller and incorporates the guidance into its next turn.
* **Delivery status feedback.** After sending guidance, the drawer displays an honest status message based on the server's delivery outcome: delivered (the agent will fold it in), deduplicated (already sent, not delivered twice), queued but the agent is not listening, or not delivered. This replaces a generic "sent" confirmation so operators know whether the agent actually received the guidance.
* **No takeover required.** Guidance is available as soon as the operator's identity is resolved in the workspace. The operator does not need to join the call audio or switch to takeover mode - they can guide the agent from listen mode.
* **State isolation between runs.** The guidance draft, sending state, and status notice are reset whenever the drawer opens on a different run, so a half-typed message for one call never carries over to a different call.

**What you need to do:**

* **No action required.** This is an additive feature in the takeover drawer. Existing takeover, listen, and hand-back controls are unchanged.

</details>

<details>

<summary>v2.201.71 - Developer Console: Improve Section Reordered to Follow the Analyst's Path (July 2026)</summary>

#### Improve Section Reordered to Follow the Analyst's Path <a href="#improve-section-reordered-to-follow-the-analysts-path" id="improve-section-reordered-to-follow-the-analysts-path"></a>

The Improve section in the Developer Console sidebar has been reordered to match the analyst's natural workflow: start with scored quality, then explore the data, then review team performance.

**What changed:**

* **Navigation order updated.** The Improve section now lists items in this order: Quality, Insights, Dashboards, Team Performance. Previously, Dashboards appeared before Insights.
* **Section description updated.** The Improve section subtitle now reads "How is quality trending, and why?" instead of "How is quality trending?" to reflect the exploratory tools (Insights and Dashboards) that help answer why quality is changing.
* **No routing or functionality changes.** All destination pages, URLs, and behavior are unchanged. Only the sidebar item order and section subtitle are affected.

**What you need to do:**

* **No action required.** This is a navigation ordering change. All pages remain at the same URLs with the same functionality.

</details>

<details>

<summary>v2.201.70 - Developer Console: Operator Nav Label Corrected to "Review Queue" (July 2026)</summary>

#### Operator Nav Label Corrected to "Review Queue" <a href="#operator-nav-label-corrected-to-review-queue" id="operator-nav-label-corrected-to-review-queue"></a>

The operator navigation sidebar previously labeled the approval queue page as "Outreach", which described a different surface (admin-side deliveries) and misdescribed what operators do on that page. The label now reads "Review Queue" to accurately reflect the operator's task: reviewing and approving or rejecting pending items.

**What changed:**

* **Operator sidebar label updated.** The operator navigation item that links to the approval queue (the surfaces page filtered to the review tab) is now labeled "Review Queue" instead of "Outreach". This resolves the naming collision with the admin navigation's "Outreach" item and correctly describes the operator workflow.
* **No routing or functionality changes.** The destination page, URL, and behavior are unchanged. Only the sidebar label visible to operator-role users is affected.

**What you need to do:**

* **No action required.** This is a label correction. The page content, URL, and operator workflow are unchanged.

</details>

<details>

<summary>v2.201.69 - Developer Console: Runs Surface Now Uses the Platform SDK (July 2026)</summary>

#### Runs Surface Now Uses the Platform SDK <a href="#runs-surface-now-uses-the-platform-sdk" id="runs-surface-now-uses-the-platform-sdk"></a>

The Developer Console's Runs page now reads all run data through the platform SDK's typed resource client instead of hand-rolled HTTP calls, so the console uses the same client surface that SDK customers use.

**What changed:**

* **SDK-derived types for runs.** The run list, run detail, run summary, and framework run trajectory views now use types derived from the platform SDK schema rather than locally maintained type definitions. This eliminates the possibility of type drift between the console and the API contract.
* **SDK client for all read operations.** The run list (with multi-value filtering by kind, channel, and status), the run summary strip, the single-run detail lookup, and the framework trajectory view all go through the SDK's typed client. Query parameters, pagination cursors, and sort ordering are serialized by the SDK rather than assembled manually.
* **No user-facing behavior changes.** Filtering, pagination, sort order, the summary strip, run detail pages, trajectory rendering, and all takeover operations work exactly as before. The change is purely in how the console communicates with the API.
* **Takeover operations unchanged.** Run-scoped operator takeover, handback, authored-turn, guidance, mode-switch, and access-token operations remain on the existing transport and are unaffected by this change.

**What you need to do:**

* **No action required.** This is an internal infrastructure improvement with no changes to the Runs page behavior, filtering, or available features.

</details>

<details>

<summary>v2.201.68 - Developer Console: Command Center Retired in Favor of Unified Runs Live View (July 2026)</summary>

#### Command Center Retired in Favor of Unified Runs Live View <a href="#command-center-retired-in-favor-of-unified-runs-live-view" id="command-center-retired-in-favor-of-unified-runs-live-view"></a>

The standalone Operator Command Center (the full-screen takeover console under the Operators section) has been retired. Operator takeover now happens entirely on the unified Runs page using the Live status filter and the run-scoped takeover drawer - the same surface used for all other run inspection and intervention.

**What changed:**

* **Command Center route redirects to Runs.** The `/operators/command-center` route now redirects to the Runs page with the live status filter pre-selected (`/runs?f_status=live`). Existing bookmarks and in-app links continue to work through the redirect.
* **Operators index and queue routes updated.** The `/operators` and `/operators/queue` routes now redirect to the Runs live view instead of the retired Command Center.
* **Takeover tab removed from Operators section.** The "Takeover" tab in the Operators section navigation has been removed. The remaining tabs - Operators, Escalations, and Performance - are unchanged.
* **Operator navigation updated.** The sidebar "Takeover" navigation item for operators now points to the Runs page with the live status filter, and highlights for both the Runs page and legacy operator routes.
* **Escalation and performance links updated.** "Join" links on the Escalations page and empty-state actions on the Performance page now navigate to the Runs live view instead of the retired Command Center.

**What you need to do:**

* **Update any bookmarks or saved links** that point to `/operators/command-center` - they will continue to work through the redirect, but you can update them to `/runs?f_status=live` directly.
* **No workflow changes required.** All takeover functionality (join call, listen, talk, send guidance, hand back) remains available through the takeover drawer on the Runs page. The takeover drawer uses the same identity model and safety controls as the retired Command Center.

</details>

<details>

<summary>v2.201.67 - Developer Console: Server-Driven API Key Permission Form (July 2026)</summary>

#### Server-Driven API Key Permission Form <a href="#server-driven-api-key-permission-form" id="server-driven-api-key-permission-form"></a>

The API key creation form now builds its role and permission options from the platform's permission catalog endpoint instead of a locally maintained permission list, eliminating drift between the console and the server that previously caused key-creation failures.

**What changed:**

* **Permission catalog integration.** The Create API Key page now fetches the authoritative role-to-permission model from the platform at load time and uses it to populate the default permission set, the permission scope editor, and the scope summary. Previously, the console maintained its own copy of the role-to-permission matrix, which could fall out of sync with the server - for example, listing a permission as a default for a role that the server did not accept for that role - causing the default create flow to fail with a validation error.
* **Scope summaries use the catalog everywhere.** The API keys table, the expanded key detail panel, and the key rotation dialog now derive their scope summaries ("Full admin access", "Custom - 12 permissions", etc.) from the server catalog. While the catalog is loading, these views fall back to a plain permission count so the UI is never blank.
* **Error state for catalog failures.** If the permission catalog cannot be loaded, the Create API Key page shows a clear error message with a Retry button instead of rendering a form with incorrect defaults. This is a deliberate design choice - displaying a form with stale permission data is worse than blocking form display until the catalog is available.
* **New permissions supported.** The permission scope editor now supports Channel, Trigger, and Conversation permissions that were previously not shown in the form. Because the form is now catalog-driven, any permission the server adds in the future will appear automatically without a console update.

**What you need to do:**

* **No action required.** This is an internal UX improvement. The API key creation, listing, deletion, and rotation endpoints are unchanged. Keys created before this change are unaffected.

</details>

<details>

<summary>v2.201.66 - Developer Console: Framework Run Trajectory View (July 2026)</summary>

#### Framework Run Trajectory View <a href="#framework-run-trajectory-view" id="framework-run-trajectory-view"></a>

The run detail page for framework runs now renders the step-by-step trajectory inline, replacing the previous placeholder message that indicated trajectory rendering was coming.

**What changed:**

* **Trajectory panel on framework run detail.** When you open a framework run from the Runs table, the detail page now displays a Trajectory section that shows the ordered structural steps of the run - perception, decision, tool invocation, and completion steps - read from the platform's durable trace source. Each step displays its sequence number, step kind badge, and a one-line summary: tool steps show the tool name with input and result digests, decision steps show the state transition, and other steps show the state or actor.
* **Tool success indicators.** Tool steps display a color-coded badge indicating whether the tool call succeeded or failed, so operators can spot failures at a glance without expanding individual steps.
* **Truncation notice.** When a run has more steps than the server-side bound, the panel displays a note indicating that only the first N steps are shown and the run has additional steps beyond what is displayed.
* **Loading and error states.** The trajectory section shows a loading indicator while fetching and a clear error message if the trajectory is unavailable, rather than leaving the section blank.

**What you need to do:**

* **No action required.** This is an additive UX improvement. The trajectory data comes from the existing trajectory API endpoint. Existing framework runs, conversation runs, and all other run detail views are unaffected.

</details>

<details>

<summary>v2.201.65 - Developer Console: Unified Agent Authoring UX and Channel Taxonomy (July 2026)</summary>

#### Unified Agent Authoring UX and Channel Taxonomy <a href="#unified-agent-authoring-ux-and-channel-taxonomy" id="unified-agent-authoring-ux-and-channel-taxonomy"></a>

The Developer Console now provides a coherent authoring path for bring-your-own agents, surfaces more world-model detail on agent pages, and consolidates channel labeling across the application.

**What changed:**

* **In-console agent definition registration.** The New Agent picker for the OpenAI SDK and Anthropic SDK frameworks now routes to a dedicated authoring page where you can compose and register a framework-native definition directly in the console. Previously, these frameworks redirected to the definitions list with instructions to use the CLI or API. The authoring page includes a JSON editor pre-filled with a starter template for the chosen framework, a name field, a Validate button for dry-run schema validation (resolved framework, agent count, write-tool indicator), and a Register button that mints the first immutable version and navigates to the definition detail page.
* **Definition test runner.** Active agent definitions with at least one version now show a "Test run" panel on the definition detail page. Enter a message and launch a run against the definition's latest version on its own framework - the run reaches world state only through the platform's tool surface. The test runner displays the same run result view (status, token usage, trajectory) used on the service Framework Runs panel.
* **Expanded World Model & Capabilities panel.** The agent detail page's World Model & Capabilities panel now shows world-model scope (scoped entity count or workspace-wide), entity creation permission, enrichment write scope, entity anchor requirement, and unanchored/API-key write policy alongside the existing read tools, write tools, and clinical write floor fields.
* **Consistent channel labels.** Channel type labels ("Voice", "Text (SMS)") are now sourced from a single definition used across the service detail page, service edit form, home agent cards, and playground service cards. Previously, labels were defined independently in each location and could drift.
* **Playground channel callout.** The Playground page now includes a callout explaining that it tests Amigo Agent Framework services over voice and text, and directing users to the Agents page for SDK-framework agent test runs.
* **Agents table framework filter scoping.** The framework filter dropdown on the unified Agents table now shows only frameworks that have at least one agent row, so frameworks with no agents (such as voice-only runtimes with no agent entity) no longer appear as filter options.
* **Native definition "Updated" column.** Native agent definitions in the unified Agents table now show "Versioned" in the Updated column (with a tooltip explaining they are versioned via the CLI or API) instead of a bare dash.
* **Shared run result component.** The framework run result display (status badges, token accounting with cache breakdowns, trajectory step list with actor attribution) is now shared between the service Framework Runs panel and the new definition test runner, ensuring consistent presentation everywhere a run result appears.

**What you need to do:**

* **No action required.** These are additive UX improvements. Existing agent definitions, services, and workflows are unaffected. Definitions can still be registered via the Agent Forge CLI or the agent-definitions API.

</details>

<details>

<summary>v2.201.64 - Developer Console: Scalable Upload-Link Flow with Pagination and Confirmation (July 2026)</summary>

#### Scalable Upload-Link Flow with Pagination and Confirmation <a href="#scalable-upload-link-flow-with-pagination-and-confirmation" id="scalable-upload-link-flow-with-pagination-and-confirmation"></a>

The Data Sources upload-link experience now handles large upload lists, adds a revoke confirmation dialog, and improves error recovery throughout.

**What changed:**

* **Paginated uploads dialog.** The uploads dialog for a given link now loads uploads in pages instead of fetching everything at once. A "Load more uploads" button appears when additional pages are available, so the dialog stays responsive even for links with hundreds of uploaded files.
* **Error handling and retry.** If uploads fail to load, the dialog shows an error state with a Retry button. If loading additional pages fails, a contextual retry button appears at the bottom of the list so previously loaded uploads remain visible.
* **Revoke confirmation dialog.** Revoking an upload link now requires explicit confirmation through a destructive-action dialog that names the link being revoked and explains that existing files will remain available. Previously, clicking the revoke button took effect immediately with no confirmation.
* **View received files button.** Each link row now has a dedicated "View received files" button (folder icon) so operators can open the uploads dialog without relying solely on the row click.
* **Revoke button relabeled.** The revoke action button has been relabeled from "Delete generated link" to "Revoke upload link" with a updated icon to better reflect the action.
* **Download guard.** The download button is now disabled while any download is in progress, preventing concurrent download attempts that could cause errors.
* **Copy link feedback improvements.** Clipboard copy now shows distinct toast messages depending on whether the link was just created ("Link created") or copied from an existing row ("Link copied"), and handles clipboard permission failures gracefully with an error toast.
* **SDK-backed intake operations.** Upload link operations (list, create, revoke, list uploads, download) now use the typed platform SDK client instead of raw HTTP calls, improving type safety and consistency with other platform operations.

**What you need to do:**

* **No action required.** These are usability and reliability improvements to the existing upload-link workflow. All existing upload links and files are unaffected.

</details>

<details>

<summary>v2.201.63 - Developer Console: EHR Sync Routed Through Tools (July 2026)</summary>

#### EHR Sync Routed Through Tools <a href="#ehr-sync-routed-through-tools" id="ehr-sync-routed-through-tools"></a>

The built-in EHR Sync integration page is now accessed through the Tools > Integrations section using the platform's standard route system, replacing the previous direct path.

**What changed:**

* **EHR Sync uses the standard route system.** The built-in EHR Sync integration link in the Integrations section now uses the platform's centralized route definitions instead of a hardcoded path. The page is accessible at the same location under Tools > Integrations > EHR Sync, but the navigation is now consistent with how all other integration pages are routed.
* **No change to functionality.** The EHR Sync page itself, its configuration options, and its behavior are unchanged. This is a routing and navigation consistency improvement only.

**What you need to do:**

* **No action required.** If you had bookmarked the EHR Sync page, the URL remains the same. Navigation from the Integrations section continues to work as before.

</details>

<details>

<summary>v2.201.62 - Developer Console: Unified Run Detail Page (July 2026)</summary>

#### Unified Run Detail Page <a href="#unified-run-detail-page" id="unified-run-detail-page"></a>

Every row in the Runs table - voice calls, text/SMS/email/web conversations, and framework runs - now opens a dedicated detail page at its own URL. Previously, voice rows opened the call detail view, conversation rows opened the conversation detail view, and framework rows were inert with no detail page at all.

**What changed:**

* **Unified `/runs/{runId}` detail page.** Clicking any row in the Runs table navigates to a single run detail page that resolves the run by its channel-neutral identifier and composes the appropriate detail view based on the run's kind and channel. Voice runs display the full call detail (audio, transcript, analysis). Text, SMS, email, and web runs display the conversation detail with transcript and world-model memory. Framework runs display run metadata (framework, status, entity, service, timing, and correlation identifier).
* **Framework runs are now clickable.** Framework run rows in the Runs table were previously unclickable dead ends with no detail page. They now navigate to the unified detail page, which shows the run's metadata. A note on the page indicates that step-by-step trajectory rendering for framework runs is coming in a follow-up.
* **Consistent header strip.** The detail page displays a header with the run's type (channel badge for conversation runs, framework badge for framework runs), status badge, entity name, and service name - matching the information shown in the Runs table row.
* **Back navigation.** The detail page includes a back button that returns to the Runs list.
* **No changes to standalone detail pages.** The existing call detail and conversation detail pages remain available at their own URLs. The unified run detail page reuses the same detail views internally.

**What you need to do:**

* **No action required.** This is an additive change. The Runs table row click now navigates to the unified detail page instead of forking to separate call or conversation pages. All previous detail page URLs remain functional.

</details>

<details>

<summary>v2.201.61 - Developer Console: Non-Voice Takeover Composer on Runs Page (July 2026)</summary>

#### Non-Voice Takeover Composer on Runs Page <a href="#non-voice-takeover-composer-on-runs-page" id="non-voice-takeover-composer-on-runs-page"></a>

Operators can now take over non-voice conversation runs (text, SMS, email, web) directly from the Runs table, composing replies that the platform sends instead of the agent's next outbound turn.

**What changed:**

* **Non-voice takeover drawer.** Eligible non-voice runs (text, SMS, email, web channels with running or paused status) now show a "Take over" row action in the Runs table. Clicking it opens a composer drawer where the operator can pause the agent, type a reply, and send it as the next outbound turn to the caller. This is the non-voice counterpart to the existing voice takeover drawer.
* **Takeover lifecycle.** The drawer follows the same safety model as voice takeover: the operator must explicitly click "Take over" to pause the agent, a persistent banner shows the entire time the operator is driving, and "Hand back" resumes the agent. The acting operator is always the signed-in user's own profile - no operator picker, no impersonation.
* **Near-live transcript.** While the drawer is open, the conversation transcript refreshes periodically so new caller and agent turns appear during a takeover session.
* **Repeatable replies.** The operator can send multiple authored turns while driving. Each reply is staged and consumed by the agent's next outbound step (exactly once per turn).
* **Voice takeover eligibility tightened.** The voice takeover drawer now requires the run's channel to be "voice" explicitly. Previously, any run with a live transport handle could open the voice drawer. Non-voice runs are routed to the new non-voice composer drawer instead.
* **Identity and error handling.** If the signed-in user has no operator profile in the workspace, the drawer shows an explanatory empty state. Errors during takeover, send, or handback are surfaced inline and do not close the drawer.

**What you need to do:**

* **No action required.** This is an additive feature. Voice takeover workflows are unchanged. Non-voice runs that were previously not actionable from the Runs table now have a takeover option.

</details>

<details>

<summary>v2.201.60 - Developer Console: Operate Section Renamed to "Runs" and Takeover Points to Live View (July 2026)</summary>

#### Operate Section Renamed to "Runs" and Takeover Points to Live View <a href="#operate-section-renamed-to-runs-and-takeover-points-to-live-view" id="operate-section-renamed-to-runs-and-takeover-points-to-live-view"></a>

The Operate section's top-level list item has been renamed from "Conversations & Calls" to "Runs", and the Takeover nav item now links directly to the Runs page filtered to live runs.

**What changed:**

* **"Conversations & Calls" renamed to "Runs".** The first item in the Operate navigation group is now labeled "Runs". This reflects the unified run model - every trajectory (voice, text, SMS, email, web conversations and framework runs) is a run, and the Runs page is the single surface for viewing them all.
* **Takeover now links to the Runs Live view.** The Takeover nav item no longer opens a separate operator console page. Instead, it navigates to the Runs page with a pre-applied live status filter, so operators land directly on the list of active runs where they can take over any eligible run from the row action. The Takeover item no longer highlights its own route - the "Runs" item owns the navigation highlight.
* **No functional changes.** The Runs page, takeover drawer, and all takeover workflows are unchanged. This is a navigation label and routing update only.

**What you need to do:**

* **No action required.** If you had bookmarked the previous Takeover route, the new link goes to the Runs page filtered to live runs. All takeover functionality remains available from the Runs table's row actions.

</details>

<details>

<summary>v2.201.59 - Developer Console: Coverage Map Tab Removed, Single Overview (July 2026)</summary>

#### Coverage Map Tab Removed - Single Overview <a href="#coverage-map-tab-removed-single-overview" id="coverage-map-tab-removed-single-overview"></a>

The Coverage page for a service no longer has a tabbed layout. The separate Map tab (interactive state-transition graph) has been removed, and the page now renders the Overview directly without tabs.

**What changed:**

* **Map tab removed.** The Coverage page previously had two tabs: Overview and Map. The Map tab - which rendered an interactive, zoomable state-transition graph with node selection, a drill-down panel, a stats bar, and a state legend - has been removed. All coverage information is now presented on the single Overview view.
* **No more tabbed layout.** The page no longer uses tabs at all. Opening a service's coverage page goes straight to the Overview content.
* **Overview is unchanged.** The Overview content (states table, gap analysis, session data) remains exactly as before. No information that was exclusive to the Overview has been removed or relocated.
* **Graph-related empty states removed.** The dedicated empty states shown inside the Map tab ("No coverage data yet" and "No sessions recorded") have been removed along with the graph. The page-level empty state that links to the playground remains.

**What you need to do:**

* **No action required.** If you used the Map tab to visualize state transitions, that view is no longer available. The same underlying coverage data (states, sessions, pass/fail counts) is accessible through the Overview.

</details>

<details>

<summary>v2.201.58 - Developer Console: Runs Table Multi-Value Filters Pushed Server-Side (July 2026)</summary>

#### Runs Table Multi-Value Filters Pushed Server-Side <a href="#runs-table-multi-value-filters-pushed-server-side" id="runs-table-multi-value-filters-pushed-server-side"></a>

The Runs page filter controls now push all selected values to the API on every filter axis, fixing a bug where selecting more than one value on a single axis silently bypassed server-side filtering.

**What changed:**

* **All selected filter values are sent to the API.** Selecting multiple values on the kind, channel, or status filter axis now sends every selected value to the runs list and summary endpoints as a multi-value OR filter. Previously, selecting two or more values on a single axis sent no filter for that axis, causing the infinite-scroll table to display unfiltered results while the filter chips indicated an active filter.
* **Fleet capacity widget scoped to single Live filter.** The workspace-global fleet capacity widget (visible to internal users) now displays only when the status filter contains exactly "live" as the sole selection. A broader multi-status selection that includes live no longer triggers the capacity view, since a mixed-status view is not the "watch live" use case.
* **No change to single-value behavior.** Selecting a single value on any axis works exactly as before. The fix only affects multi-select scenarios.

**What you need to do:**

* **No action required.** This is a bug fix. If you previously selected multiple status or channel values and noticed the table showing all runs instead of the filtered subset, that issue is now resolved.

</details>

<details>

<summary>v2.201.57 - Developer Console: Coverage State Graph Rendered as SVG (July 2026)</summary>

#### Coverage State Graph Rendered as SVG <a href="#coverage-state-graph-rendered-as-svg" id="coverage-state-graph-rendered-as-svg"></a>

The simulation coverage state graph has been rewritten from a canvas-based renderer to inline SVG rendering. The previous canvas implementation had layout issues - the right edge of the graph was frequently cut off, and the graph sizing raced against the container, producing broken layouts on initial load and resize.

**What changed:**

* **SVG rendering replaces canvas.** The coverage state graph now renders as inline SVG with a `viewBox` that matches the graph's bounding box. The graph scales to fit its container at any width without manual sizing, eliminating the right-edge cutoff and broken layout issues.
* **Left-to-right layout.** The graph now uses a left-to-right layout (conversation flow direction) instead of top-to-bottom. This better fills the wide graph pane and reads more naturally as a state-transition flow.
* **Native interactivity.** Nodes are real DOM elements - natively clickable, hoverable, and keyboard-focusable. Wheel zooms the graph, and drag pans. No WebGL or canvas dependency is required.
* **Canvas error fallback removed.** The previous canvas renderer included an error boundary fallback for WebGL failures. Since SVG rendering has no WebGL dependency, this fallback has been removed.
* **Graph building spinner removed.** The intermediate "Building graph" spinner between data load and render has been removed. The SVG renders synchronously from the layout data, so there is no settling or physics simulation delay.

**What you need to do:**

* **No action required.** This is a rendering improvement. The graph displays the same coverage data (states, transitions, session counts, pass/fail rings, terminal markers) with the same drill-down panel behavior. If you previously experienced right-edge cutoff or broken layouts on the coverage page, those issues are resolved.

</details>

<details>

<summary>v2.201.56 - Developer Console: Calls and Conversations Lists Redirect to Unified Runs (July 2026)</summary>

#### Calls and Conversations Lists Redirect to Unified Runs <a href="#calls-and-conversations-lists-redirect-to-unified-runs" id="calls-and-conversations-lists-redirect-to-unified-runs"></a>

The standalone Calls list and Conversations list pages have been replaced by redirects to the unified Runs page. The Runs page - introduced in an earlier release - already displays voice calls and text conversations in a single filterable table. The old standalone list pages duplicated that view and created a confusing split experience.

**What changed:**

* **`/calls` redirects to Runs (voice filter).** Navigating to the Calls list page now redirects to the Runs page with the channel filter pre-set to voice. All call records continue to appear in the Runs table under the voice channel filter.
* **`/conversations` redirects to Runs.** Navigating to the Conversations list page now redirects to the Runs page with no channel filter, showing all conversation types.
* **Call and conversation detail pages are unchanged.** The call detail view (`/calls/{id}`) and conversation detail view (`/conversations/{id}`) remain fully functional. Every "view call" and "view conversation" link throughout the console still opens the correct detail page.
* **Active Calls moved to Runs live view.** The internal Active Calls fold now lives on the Runs live view, consistent with the unified Runs surface.

**What you need to do:**

* **Update any bookmarks or saved links.** If you have bookmarked the `/calls` or `/conversations` list pages, they will automatically redirect to the Runs page. Update your bookmarks to point to the Runs page directly.
* **No workflow changes required.** All call and conversation data is accessible from the unified Runs page with the same filtering, search, and drill-down capabilities.

</details>

<details>

<summary>v2.201.55 - Developer Console: Context Graph State Types Aligned with Backend (July 2026)</summary>

#### Context Graph State Types Aligned with Backend <a href="#context-graph-state-types-aligned-with-backend" id="context-graph-state-types-aligned-with-backend"></a>

The context graph editor previously offered state types that the backend does not accept, causing the entire graph create request to fail when one of those types was used.

**What changed:**

* **Unsupported state types removed from the editor.** The "Recall", "Reflection", and "Tool Call" state types have been removed from the context graph version editor. These types have no backend state model - authoring a state with one of them caused the graph create endpoint to reject the entire version. The editor now offers only the four types the platform accepts: Action, Decision, Annotation, and Data Collection.
* **State type badge colors updated.** The state overview badges now reflect the current set of supported types. The Data Collection type uses a success (green) badge. Unknown or legacy state types fall through to a neutral default badge rather than displaying a colored badge for a type that no longer exists.

**What you need to do:**

* **No action required.** If you previously created graph versions using Recall, Reflection, or Tool Call states and received errors, re-create those states using one of the four supported types.

</details>

<details>

<summary>v2.201.54 - Developer Console: Query Explorer Table Corrections and Live Takeover Transcript (July 2026)</summary>

#### Query Explorer Table Corrections and Live Takeover Transcript <a href="#query-explorer-table-corrections-and-live-takeover-transcript" id="query-explorer-table-corrections-and-live-takeover-transcript"></a>

The Query Explorer listed table names that did not match the platform's queryable table registry, so every query returned a "not queryable" error. The live transcript in the run takeover drawer also did not refresh during an active call.

**What changed:**

* **Query Explorer tables corrected.** The predefined schema and table list in the Query Explorer now matches the platform's actual queryable table registry. The `world` schema lists the correct synced tables (including entity, event timeline, enrichment, and call intelligence tables), and a `platform` schema replaces the previous `public` schema with the correct queryable platform tables. Previously, every Execute returned a "table is not queryable" error because the listed tables did not exist in the registry.
* **Default table and sort order updated.** The Query Explorer now defaults to the primary synced entity table with an appropriate default sort column, instead of defaulting to a table and sort column that did not exist.
* **Live transcript in takeover drawer.** The run takeover drawer now polls for new transcript segments while the drawer is open on a live call, so caller and agent turns appear in near-real time during a takeover. Previously the transcript loaded once and never refreshed.

**What you need to do:**

* **No action required.** These are correctness fixes. If you previously saw "table is not queryable" errors in the Query Explorer, queries will now execute successfully against the corrected table list.

</details>

<details>

<summary>v2.201.53 - Developer Console: Outreach Overview and Rule Card Label Corrections (July 2026)</summary>

#### Outreach Overview and Rule Card Label Corrections <a href="#outreach-overview-and-rule-card-label-corrections" id="outreach-overview-and-rule-card-label-corrections"></a>

Several controls and labels on the Outreach (Programs) screens referenced outcomes or capabilities that are not implemented, creating a misleading experience. This release removes or relabels them so every visible control honestly reflects what the platform does today.

**What changed:**

* **"Fatigue skips" tile removed from scan results.** The overview scan results grid no longer displays a "Fatigue skips" tile. Fatigue suppression is not implemented - the stat was always zero - so the tile was misleading. The grid now shows four tiles: People scanned, Gaps found, Surfaces created, and Cooldown skips.
* **Scan results help text updated.** The explanatory caption below scan results now reads "Cooldown skips explain a scan that created nothing - people already scanned recently are skipped." The previous text referenced fatigue skips alongside cooldown skips.
* **"Mark for review" toggle relabeled.** The per-rule toggle previously labeled "Mark for review" is now labeled "Emit pending-review event" with updated description text clarifying that no approval workflow consumes the event today and nothing is actually held for review.
* **"Recent interaction" trigger option relabeled.** The trigger option previously labeled "Recent interaction" is now labeled "All scanned people (no interaction filter)" with updated description text clarifying that no recency or interaction filter is applied yet. The option value is unchanged.

**What you need to do:**

* **No action required.** These are label and display corrections. No APIs, data, or functionality changed. If you have internal documentation or training materials that reference the old labels ("Fatigue skips", "Mark for review", "Recent interaction"), update them to match the corrected labels.

</details>

<details>

<summary>v2.201.52 - Developer Console: Data Surface Accuracy Fixes (July 2026)</summary>

#### Data Surface Accuracy Fixes <a href="#data-surface-accuracy-fixes" id="data-surface-accuracy-fixes"></a>

Several data-facing screens in the Developer Console displayed labels, statuses, or controls that did not match what the underlying data actually represented. This release corrects those mismatches so every label, badge, and control honestly reflects the data shown.

**What changed:**

* **Connector catalog status badges.** Two connectors in the data sources catalog displayed an "available" badge despite their descriptions indicating they were not ready. NextGen Healthcare now shows a "paused" badge (matching its description noting a credential rotation pause), and Veradigm now shows a "coming soon" badge (matching its description noting the connector is under development). No connector functionality changed - only the status badges were corrected.
* **Recent event stream search.** The "Search entities" box on the recent event stream now filters the displayed rows as you type. Previously the search input accepted text but did not filter anything.
* **Availability summary card labels.** The data insights availability summary cards now use labels that accurately describe the raw values shown: "Slots" (was "Future Slots"), "Providers" (was "Active Providers"), "Facilities" (was "Active Facilities"), and "Slots Last Updated" (was "Next Slot At"). The underlying values are unchanged - only the labels were corrected to stop implying filters or semantics the values do not have.
* **Agent Memory page.** The Functional Memory page (labeled "Agent Memory") now displays a prominent banner stating that all numbers and controls on the page are sample data, not connected to the workspace's real data. The page description was updated to "Preview of how agent memory dimensions are configured and scored. Not yet connected to this workspace's data." Previously the page could be mistaken for live workspace memory analytics.

**What you need to do:**

* **No action required.** These are label and display corrections. No APIs, data, or functionality changed. If you have internal documentation or training materials that reference the old labels ("Future Slots", "Active Providers", "Active Facilities", "Next Slot At"), update them to match the corrected labels.

</details>

<details>

<summary>v2.201.51 - Developer Console: Page Titles Aligned with Navigation Labels (July 2026)</summary>

#### Page Titles Aligned with Navigation Labels <a href="#page-titles-aligned-with-navigation-labels" id="page-titles-aligned-with-navigation-labels"></a>

Page titles and action buttons across the Developer Console now match the sidebar navigation labels that open them, eliminating mismatches where a nav item said one thing but the page header said another.

**What changed:**

* **Records.** The data browser page title changed from "Entity Browser" to "Records", matching its nav label. The subtitle now reads "Records in this workspace" instead of "Explore what's in your world model."
* **API Keys & Tokens.** The developer page title changed from "Developer" to "API Keys & Tokens".
* **Quality.** The metrics page title changed from "Metrics" to "Quality".
* **Programs.** The outreach page title changed from "Outreach" to "Programs".
* **Outreach.** The surfaces page title changed from "Surfaces" to "Outreach".
* **Automations.** The triggers page title changed from "Triggers" to "Automations".
* **Takeover button.** The secondary action button on the Escalations and Operator Performance pages changed from "Dashboard" to "Takeover", linking to the Operator Command Center.
* **Audit Log palette entry removed.** The command-palette-only "Audit Log" nav entry has been removed.

**What you need to do:**

* **No action required.** These are cosmetic label changes. All URLs, routes, and functionality remain the same. If you have internal documentation or training materials that reference the old page titles, update them to match the new labels.

</details>

<details>

<summary>v2.201.50 - Developer Console: Coverage Map Rebuilt as State-Transition Graph (July 2026)</summary>

#### Coverage Map Rebuilt as State-Transition Graph <a href="#coverage-map-rebuilt-as-state-transition-graph" id="coverage-map-rebuilt-as-state-transition-graph"></a>

The simulation coverage Map has been rebuilt from the ground up as a state-transition graph. States are the nodes, edges are state-to-state transitions, and sessions are no longer individual nodes on the canvas. Clicking a state opens a drill-down panel listing every session that visited it.

**What changed:**

* **State-transition graph model.** The coverage Map now renders states (or tools, for services without a state-machine topology) as fixed-position nodes laid out by the platform's graph layout engine. Edges between nodes represent observed and expected state transitions, drawn as directed arrows with optional frequency labels. The layout is static and stable - there is no force-simulation settling or physics jitter.
* **Sessions moved off the canvas.** Sessions are no longer floating dots orbiting their primary state. Instead, clicking a state node opens a right-hand detail panel listing every session that visited that state, sorted worst-score-first so failures surface immediately. Each session row shows a preview, turn count, score badge, and a link to the full call detail page. Fork sessions are marked with an icon.
* **State detail panel.** The new panel displays the state name, terminal and untested badges, session and turn counts, pass rate, tools used in that state, and the full session list. The panel is 380px wide and shifts the graph canvas to fit.
* **URL-driven selection.** Selecting a state writes a `?state=` query parameter to the URL (previously `?session=`). Clicking the background or the close button clears the selection.
* **Dimming on selection.** When a state is selected, all other state nodes dim to 35% opacity so the focused state and its transitions stand out.
* **Simplified graph overlays.** The search/filter panel and the keyboard navigation hints have been removed. The legend and stats bar remain. The legend now drives selection - clicking a state in the legend selects it on the graph.
* **Live SSE updates.** Incoming simulation turns now increment the target state's observed turn count in place rather than spawning a new session node on the canvas. Full data reconciles on the next query refetch.
* **Improved resize behavior.** The graph refits to the viewport on container resize, with coalesced refit calls to avoid stacking during drag resizes.

**What you need to do:**

* **No action required.** This is a UX rebuild of the coverage Map tab. All underlying coverage data is unchanged. If you have bookmarked coverage URLs with a `?session=` parameter, those parameters will be ignored - use the new `?state=` parameter to deep-link to a specific state.

</details>

<details>

<summary>v2.201.49 - Developer Console: Voice Takeover Re-keyed to Run Identifier (July 2026)</summary>

#### Voice Takeover Re-keyed to Run Identifier <a href="#voice-takeover-re-keyed-to-run-identifier" id="voice-takeover-re-keyed-to-run-identifier"></a>

The Developer Console's voice takeover controls now use the channel-neutral run identifier for control-plane operations instead of media-layer call identifiers.

**What changed:**

* **Run-scoped takeover controls.** The Runs takeover drawer and Playground takeover bar derive the run identifier from the voice call identifier using the same deterministic mapping as the backend, then call the run-scoped takeover, switch-mode, access-token, and handback endpoints.
* **Legacy operator routes removed from the console flow.** Voice takeover no longer calls the operator-scoped join, leave, switch-mode, or access-token routes.
* **Media connection unchanged.** The browser audio leg still connects through the telephony client using the connection parameters returned by the run access-token endpoint.
* **Caller-bound operator identity.** The controls use the signed-in caller's operator identity rather than allowing a different operator identity to be supplied.

**What you need to do:**

* **No action required.** The visible takeover workflow is unchanged. Custom operator consoles should use the run-scoped control-plane endpoints for new integrations.

</details>


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.concurrence.com/api-reference/change-logs/web-platform/web-platform-history-01.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
