> 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-02.md).

# Web Platform History: Archive 2

Retained Web Platform history, archive 2, 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>v2.201.48 - Developer Console: Coverage Overview and Graph Reskin (July 2026)</summary>

#### Coverage Overview and Graph Reskin <a href="#coverage-overview-and-graph-reskin" id="coverage-overview-and-graph-reskin"></a>

The per-service coverage page now leads with a readable overview tab before the graph, and the simulation coverage graph has been reskinned to match the platform's clinical-light design language.

**What changed:**

* **New Overview tab on the per-service coverage page.** The coverage detail page now opens to an Overview tab that displays key metrics (state coverage percentage, pass rate, session count, and fork count), a states table listing every state or tool with its coverage status, session count, pass/fail breakdown, and tools used, a conversation paths section showing the most-exercised trajectories through the state machine, and recent simulation runs. Untested states are listed first so gaps are immediately visible.
* **New Map tab for the graph.** The interactive force-directed coverage graph has moved to a dedicated Map tab on the same page. All existing graph interactions (selection, filtering, keyboard navigation, live SSE updates) continue to work as before.
* **Coverage list page redesign.** The workspace-level coverage list now shows per-service coverage cards with a progress bar, state coverage percentage, pass rate, session count, and status badge instead of the previous plain link cards. Coverage data is fetched per card with caching so the list loads quickly.
* **Graph reskin to clinical-light theme.** The coverage graph canvas now uses the platform's design-system surface colors instead of a hardcoded dark background. All canvas elements - state nodes, session nodes, links, overlays, legends, keyboard hints, filter panels, and status bars - render against the light card surface and follow the design-system color tokens. The graph automatically adapts if the design system theme changes.
* **Design-system categorical palette for states.** State colors now use the platform's data-visualization palette from the design-system token set, replacing the previous hardcoded color list. Colors remain deterministic per state name.
* **Tool-mode messaging.** When a service has no state-machine topology, the graph stats bar and overview cards now explain that sessions are grouped by tools used rather than showing a coverage percentage that would always read 100%.
* **Actionable empty state.** When a service has no coverage data, the page shows an empty state with a direct link to the playground so developers can start a test conversation immediately.

**What you need to do:**

* **No action required.** This is a visual and navigational improvement. All coverage data, live update behavior, and graph interactions are unchanged.

</details>

<details>

<summary>v2.201.47 - Developer Console: Unified Operator Identity and Go-Live Safety in the Playground (July 2026)</summary>

#### Unified Operator Identity and Go-Live Safety in the Playground <a href="#unified-operator-identity-and-go-live-safety-in-the-playground" id="unified-operator-identity-and-go-live-safety-in-the-playground"></a>

The playground's inline operator takeover bar now uses the same identity resolution and go-live safety model as the Operator Command Center and the Runs page takeover drawer.

**What changed:**

* **No operator picker.** The playground takeover bar no longer shows a free-choice operator dropdown. The acting operator is always the signed-in user's own email-matched operator profile, matching the behavior of the Command Center and the Runs takeover drawer. This closes the impersonation hole where a user could select a different operator's identity.
* **Join always enters in listen mode.** Clicking Join connects the operator to the call with their mic muted. The previous option to choose between listen and takeover before joining has been removed.
* **Go-live requires explicit confirmation.** Switching from listen to live (where the caller can hear the operator) now shows a confirmation dialog explaining that the operator is about to unmute and speak directly to the caller. Stepping back from live to listen is immediate and does not require confirmation.
* **Identity status feedback.** The takeover bar shows the operator's resolved name when identity is ready, a resolving indicator while lookup is in progress, and a clear message when no operator profile is linked to the signed-in account.

**What you need to do:**

* **No action required.** This is a safety improvement. The playground takeover bar now behaves identically to the other takeover surfaces. Operators who previously selected a different operator identity will now always operate as themselves.

</details>

<details>

<summary>v2.201.46 - Developer Console: Run-Scoped Operator Takeover Drawer (July 2026)</summary>

#### Run-Scoped Operator Takeover Drawer <a href="#run-scoped-operator-takeover-drawer" id="run-scoped-operator-takeover-drawer"></a>

Operators can now take over a live voice call directly from the Runs table without navigating away, using a drawer that is keyed on the exact run they clicked.

**What changed:**

* **"Take over" opens an in-place drawer.** The "Take over" row action on live voice runs now opens a takeover drawer on the right side of the Runs page instead of deep-linking to the Operator Command Center. The drawer is scoped to the run's own call, so it is structurally impossible to land on a different call than the one selected.
* **Same safety model as the Command Center.** Join always starts in listen mode (operator mic muted). Going live to the patient requires an explicit confirmation dialog. A persistent red LIVE banner shows the entire time the patient can hear the operator. Muting back to listen mode is immediate.
* **Shared operator identity resolution.** The drawer uses the same identity resolution as the Command Center - the acting operator is always the signed-in user's own operator profile, matched by email. There is no operator picker, so the impersonation hole that a free-choice dropdown would create cannot be reintroduced.
* **Live transcript and audio meters.** The drawer includes a near-live transcript and audio level meters for the operator's mic and the call audio.
* **Server-computed takeover eligibility.** The "Take over" action now keys on the server-computed takeover eligibility field on the run object when present, falling back to the previous client-side heuristic (live voice conversation) for run rows that predate the server field. This means the console automatically picks up new takeover-eligible channels as the server adds them, with no console change required.

**What you need to do:**

* **No action required.** This replaces the previous deep-link behavior. The Operator Command Center remains available for its existing escalation-queue workflow.

</details>

<details>

<summary>v2.201.45 - Developer Console: Branch Explorer in the Text Playground (July 2026)</summary>

#### Branch Explorer in the Text Playground <a href="#branch-explorer-in-the-text-playground" id="branch-explorer-in-the-text-playground"></a>

The text playground now includes a branch explorer that lets you fork a conversation into alternative caller messages and compare the agent's response to each side by side.

**What changed:**

* **New "Branch" button on the text playground.** After at least one user turn in a text session, a Branch button appears in the playground toolbar. Clicking it opens the branch explorer dialog.
* **Branch explorer dialog.** Enter up to six alternative caller messages. Click "Explore branches" to fork the conversation into parallel branches - one per alternative. The platform promotes the interactive session into a coverage run (if it is not already bound to one), then forks the session. Each branch runs independently and returns the agent's response.
* **Side-by-side results.** After exploration completes, the dialog displays each alternative alongside the agent's response (or an error) in a grid, so you can compare how phrasing changes affect agent behavior.
* **Coverage integration.** Branch results are recorded as coverage runs, so they feed into the same metrics and quality analysis as other simulation data.
* **Availability.** The branch explorer requires a text session with at least one user turn. The button does not appear for voice sessions or sessions with no user turns.

**What you need to do:**

* **No action required.** This is an additive feature. Open the text playground, start a conversation, and use the Branch button to explore alternative phrasings.

</details>

<details>

<summary>v2.201.44 - Developer Console: Built-ins Page Consumes the Live Tool Catalog (July 2026)</summary>

#### Built-ins Page Consumes the Live Tool Catalog <a href="#built-ins-page-consumes-the-live-tool-catalog" id="built-ins-page-consumes-the-live-tool-catalog"></a>

The Built-ins page in the Tools section now loads available built-in tools from the platform's live tool catalog rather than relying on a hardcoded static list.

**What changed:**

* **Live catalog for world and surface tools.** The Built-ins page now fetches the live built-in tool catalog from the platform API, so the displayed list of world-scoped and surface-scoped built-in tools stays current as tools are added or retired. The catalog is cached generously for the session since built-in tools change infrequently.
* **Static fallback for runtime tools.** Runtime built-in tools (voice session tools) are not included in the live catalog endpoint because they are session-scoped. These continue to be displayed from the static catalog.
* **Graceful degradation.** If the live catalog is unavailable or still loading, the page falls back to the full static catalog so the list never appears blank.

**What you need to do:**

* **No action required.** This is a UX improvement. The Built-ins page now reflects the platform's actual built-in tool set automatically.

</details>

<details>

<summary>v2.201.43 - Developer Console: Integration and Skill Detail Page Titles and Enable/Disable Toggles (July 2026)</summary>

#### Integration and Skill Detail Page Titles and Enable/Disable Toggles <a href="#integration-and-skill-detail-page-titles-and-enable-disable-toggles" id="integration-and-skill-detail-page-titles-and-enable-disable-toggles"></a>

The integration and skill detail pages now display the entity name as the page title and include an enable/disable toggle button in the page header.

**What changed:**

* **Dynamic page titles.** The integration detail page now shows the integration's display name as its title instead of the generic "Integration Configuration" heading. The skill detail page now shows the skill's name instead of "Skill Configuration".
* **Enable/Disable toggle.** Both the integration and skill detail pages now include an Enable/Disable button in the page header. Clicking the button toggles the entity's enabled state and shows a success or error toast confirming the result. The button label and icon update to reflect the current state - "Disable" when the entity is enabled, "Enable" when it is disabled.

**What you need to do:**

* **No action required.** These are UX improvements. Integration and skill detail pages now surface the entity name and enabled state directly in the header.

</details>

<details>

<summary>v2.201.42 - Developer Console: Tools Surface Hardening (July 2026)</summary>

#### Tools Surface Hardening <a href="#tools-surface-hardening" id="tools-surface-hardening"></a>

The Tools section of the Developer Console has been hardened across safety, layout, navigation, and data loading.

**What changed:**

* **SQL Editor write confirmation.** The SQL Editor now shows a confirmation dialog before executing mutating statements (INSERT, UPDATE, DELETE). The detection is a UX guardrail - the server-side safety envelope remains the authoritative control. The editor also clears stale results when the query text changes, so the displayed grid always matches the current editor content.
* **SQL Editor description updated.** The editor description now accurately states that DDL and multi-statement queries are not permitted, and that DML is confined to your custom tables.
* **Shared result grid.** Query results in the SQL Editor and on query-tool detail pages now render through a shared grid component with copy-as-JSON and download-as-CSV actions, a scrollable body capped at the documented 1,000-row limit, sticky column headers, and proper NULL styling. The grid also handles non-SELECT responses (showing rows affected) and empty result sets.
* **Playground tab in Tools tab bar.** The tool testing playground is now a dedicated "Playground" tab in the Tools section tab bar, rather than being bundled into the Inventory tab's active-route highlight. The playground link on the Inventory page still works.
* **Deep-linkable per-service view.** Selecting a service on the Tools inventory page now writes the selection into the URL query string (?service=ID), so per-service views are deep-linkable and survive page refresh and browser back/forward.
* **Progressive loading.** The Tools inventory page no longer blocks rendering while background data pages load or during stale-time refetches. The initial skeleton shows only until the first page of each data source arrives, and the page renders progressively as additional pages land.
* **Workspace database pagination.** The query-tools table now uses cursor-based infinite scrolling, matching the pagination pattern used by Skills and Integrations tables.
* **Skill creation validation.** The skill creation wizard now validates that the input schema is valid JSON (and a plain object) before enabling the Next button and before submitting the form. Previously, invalid JSON was silently replaced with an empty object.
* **Skill creation reactive step gating.** The Next and Create buttons on the skill creation wizard now re-enable reactively as you type, instead of requiring an unrelated interaction to trigger a re-render.
* **Error toasts on delete failures.** Deleting a skill or integration now shows an error toast when the server rejects the request, instead of failing silently.
* **Layout change: tab bar moved to page level.** The Tools section tab bar (Inventory, Playground, Built-ins, Database, Warehouse, Skills, Integrations) is no longer rendered by a shared layout that wraps every nested route. Tab-level pages opt into the tab bar individually, which removes the double-header and misplaced tab bar that previously appeared on detail, editor, and wizard pages (skill detail, SQL editor, query-tool detail, create-skill wizard).
* **Design-system alignment.** Callout banners, section headings, stat blocks, typography tokens, and tool-kind display elements now use the platform design system primitives throughout the Tools section.

**What you need to do:**

* **No action required.** These are UX and reliability improvements. If you have bookmarked a per-service tools view, you can now share the URL directly.

</details>

<details>

<summary>v2.201.41 - Developer Console: Playground Event Log Export Now Includes Full History (July 2026)</summary>

#### Playground Event Log Export Now Includes Full History <a href="#playground-event-log-export-now-includes-full-history" id="playground-event-log-export-now-includes-full-history"></a>

The playground event log export (both the Export button and the keyboard shortcut) now writes the complete, uncapped event history instead of only the events visible in the capped render buffer.

**What changed:**

* **Full event history on export.** During long playground sessions, the displayed event list is capped for rendering performance. Previously, the NDJSON export and the keyboard-shortcut JSON export both wrote only the capped buffer, so events from earlier in the session were missing from the exported file. The export now writes every event received during the session, regardless of how many are shown in the panel.
* **No change to the displayed list.** The event log panel still caps the visible event list for performance. Only the export output is affected.

**What you need to do:**

* **No action required.** This is a bug fix. Exported event logs from long sessions will now contain the complete history automatically.

</details>

<details>

<summary>v2.201.40 - Developer Console: Full-Duplex Voice Family Now Selectable in Service Configuration (July 2026)</summary>

#### Full-Duplex Voice Family Now Selectable in Service Configuration <a href="#full-duplex-voice-family-now-selectable-in-service-configuration" id="full-duplex-voice-family-now-selectable-in-service-configuration"></a>

The full-duplex voice model family is now generally available in the Developer Console's voice model family picker on the service edit page. Previously, the full-duplex family was recognized by the platform but not offered as a selectable option in the console.

**What changed:**

* **Full-duplex voice family selectable.** The service edit page's voice model family dropdown now includes the full-duplex option alongside the existing Amigo and real-time speech-to-speech families. The full-duplex family handles turn-taking natively rather than relying on voice activity detection.
* **Updated description.** The full-duplex family description no longer references a pending API availability status - it is now GA.

**What you need to do:**

* **No action required.** This is an additive change. If you want to use the full-duplex voice family, you can now select it directly from the service edit page in the Developer Console.

</details>

<details>

<summary>v2.201.39 - Developer Console: Claude Opus 4.8 Added to Model Registry (July 2026)</summary>

#### Claude Opus 4.8 Added to Model Registry <a href="#claude-opus-4.8-added-to-model-registry" id="claude-opus-4.8-added-to-model-registry"></a>

The Developer Console model registry now includes Claude Opus 4.8, so it appears in model selectors across the platform - including the skill creation picker (where it is available if the model family is supported for skills) and service configuration.

**What changed:**

* **Claude Opus 4.8 available in model selectors.** The model registry now lists Claude Opus 4.8 alongside the existing model options. This model was previously excluded because it was not available in the platform's inference environment; that access issue has been resolved.
* **Sampling parameter behavior.** Claude Opus 4.8, like other models in the same family, does not accept custom sampling parameters (temperature and top\_p). The skill editor warns when this model is selected, and sampling parameters are silently ignored at runtime.

**What you need to do:**

* **No action required.** This is an additive change. Claude Opus 4.8 is now available for selection wherever models are offered in the Developer Console.

</details>

<details>

<summary>v2.201.38 - Developer Console: Claude Sonnet 5 Added to Model Registry (July 2026)</summary>

#### Claude Sonnet 5 Added to Model Registry <a href="#claude-sonnet-5-added-to-model-registry" id="claude-sonnet-5-added-to-model-registry"></a>

The Developer Console model registry now includes Claude Sonnet 5, so it appears in model selectors across the platform - including the skill creation picker (where it is available if the model family is supported for skills) and service configuration.

**What changed:**

* **Claude Sonnet 5 available in model selectors.** The model registry now lists Claude Sonnet 5 alongside the existing model options. This model was previously excluded because it was not available in the platform's inference environment; that access issue has been resolved.
* **Sampling parameter behavior.** Claude Sonnet 5, like other models in the same family, does not accept custom sampling parameters (temperature and top\_p). The skill editor warns when this model is selected, and sampling parameters are silently ignored at runtime.

**What you need to do:**

* **No action required.** This is an additive change. Claude Sonnet 5 is now available for selection wherever models are offered in the Developer Console.

</details>

<details>

<summary>v2.201.37 - Developer Console: Surface Detail Shows Review and Archive Provenance + SDK Migration for Surface Analytics and Triggers (July 2026)</summary>

#### Surface Detail Shows Review and Archive Provenance <a href="#surface-detail-shows-review-and-archive-provenance" id="surface-detail-shows-review-and-archive-provenance"></a>

The Surface detail page now renders review and archive provenance so operators can see who reviewed a surface, when, and why - and whether a surface was archived, when, and with what reason. Rejected surfaces are clearly distinguished from naturally-expired ones.

**What changed:**

* **Review provenance in the properties panel.** The Surface detail properties panel now displays the review timestamp, reviewer credential identifier, and review notes (if present). These fields appear only when a review action has been taken.
* **Archive provenance in the properties panel.** The properties panel now displays the archive timestamp and archive reason (if present). These fields appear only when the surface has been archived.
* **Rejection badge on expired surfaces.** When a surface was rejected in review (expired status with review notes), the detail page shows a "Rejected in review" badge alongside the status badge, with the reject reason displayed inline. This makes it immediately clear that the surface was actively rejected rather than naturally expired.
* **Reviewed and Archived timeline events.** The Surface detail timeline now includes a "Reviewed" (or "Rejected in review") event when the surface has been reviewed, and an "Archived" event when the surface has been archived, so the full lifecycle is visible at a glance.
* **SDK migration for surface analytics.** Surface analytics endpoints (completion rates, channel effectiveness, field abandonment, and entity history) now use the platform SDK instead of the local HTTP client. This is a transparent migration with no change to the data returned or the filters available.
* **SDK migration for trigger list and fire.** The trigger list and fire operations now use the platform SDK's native methods instead of lower-level SDK calls. This is a transparent migration with no change to behavior.

**What you need to do:**

* **No action required.** These are additive UI improvements and internal SDK migrations. Surface detail pages now show more information; no existing functionality has changed.

</details>

<details>

<summary>v2.201.36 - Developer Console: PHI Access Report Copy Updated for Transcript Read-Auditing (July 2026)</summary>

#### PHI Access Report Copy Updated for Transcript Read-Auditing <a href="#phi-access-report-copy-updated-for-transcript-read-auditing" id="phi-access-report-copy-updated-for-transcript-read-auditing"></a>

The PHI access report description on the Compliance page now accurately reflects that conversation transcripts are read-audited.

**What changed:**

* **PHI access report description updated.** The description now includes conversation transcripts in the list of read-audited record types. Previously, the description stated that conversation transcripts were not yet read-audited. The description also clarifies that polled list views are deliberately not read-audited - opening a record is the access signal.

**What you need to do:**

* **No action required.** This is a copy correction that aligns the Compliance page with the current audit behavior.

</details>

<details>

<summary>v2.201.35 - Developer Console: Skill Picker Restricted to Supported Models (July 2026)</summary>

#### Skill Picker Restricted to Supported Models <a href="#skill-picker-restricted-to-supported-models" id="skill-picker-restricted-to-supported-models"></a>

The skill creation flow now offers only models that the platform can actually save for skills, preventing a confusing 422 error when trying to save a skill with an unsupported model.

**What changed:**

* **Skill model picker filtered.** The model selector in the skill creation wizard now shows only models that are accepted by the platform for skill configurations. Previously, the picker displayed all available models - including families that the platform rejects at save time - leading to a validation error after configuration.

**What you need to do:**

* **No action required.** This is a usability fix. If you previously encountered a save error when selecting certain models in the skill picker, those models are no longer offered. Existing saved skills are unaffected.

</details>

<details>

<summary>v2.201.34 - Developer Console: Operator Cluster and Remaining Private-Preview Surfaces Promoted to GA (July 2026)</summary>

#### Operator Cluster and Remaining Private-Preview Surfaces Promoted to GA <a href="#operator-cluster-and-remaining-private-preview-surfaces-promoted-to-ga" id="operator-cluster-and-remaining-private-preview-surfaces-promoted-to-ga"></a>

Several feature areas that were previously gated behind the private-preview program are now generally available to all users.

**What changed:**

* **Operator cluster promoted to GA.** The Takeover console, Escalations, and Operators roster pages are now available to all users. Previously these were restricted to private-preview customers.
* **Operator Performance promoted to GA.** The Operator Performance page is now available to all users.
* **Insights promoted to GA.** The Insights page is now available to all users.
* **Case Library and Suites promoted to GA.** The Case Library and Suites pages under Simulations are now visible to all users without a private-preview gate. The "Case library" and "Suites" action buttons on the Simulations page are now always shown.
* **Database tool page promoted to GA.** The Database page under Tools is now available to all users.

**What you need to do:**

* **No action required.** These are access-broadening changes. If you previously could not see the operator cluster, Insights, Case Library, Suites, or Database pages, they are now available at your workspace's access tier.

</details>

<details>

<summary>v2.201.33 - Developer Console: Gating Tranche - Runs Unpinned to GA, Compliance to GA, Operator Cluster to Private Preview (July 2026)</summary>

#### Gating Tranche - Runs Unpinned to GA, Compliance to GA, Operator Cluster to Private Preview <a href="#gating-tranche-runs-unpinned-to-ga-compliance-to-ga-operator-cluster-to-private-preview" id="gating-tranche-runs-unpinned-to-ga-compliance-to-ga-operator-cluster-to-private-preview"></a>

Several feature gates have been updated to broaden access across the Developer Console.

**What changed:**

* **Runs page fully unpinned.** The Runs table previously restricted general-availability users to conversation runs excluding voice. All users now see every run kind (conversation and framework) and every channel (voice, text, SMS, email, web) with all filter axes available. The summary strip above the table is now visible to all users, and its aggregate counts reconcile with the unpinned table. The page remains workspace-scoped server-side.
* **Runs page label updated.** The sidebar navigation label for the runs list has changed from "Conversations" to "Conversations & Calls" to reflect that the table now includes voice calls for all users.
* **Compliance and Audit promoted to GA.** The Compliance and Audit page is now available to all users. Previously it was restricted to internal users.
* **PHI access report description updated.** The PHI access report description now lists the specific record types covered (patient/entity record views, FHIR patient reads, call details and recordings, intake downloads, and audit report access) and notes that conversation transcripts and list views are not yet read-audited.
* **Operator cluster moved to private preview.** The Takeover console, Escalations, Operators roster, and Operator Performance pages have moved from internal-only to private preview, making them available to customers in the private preview program.

**What you need to do:**

* **No action required.** These are access-broadening changes. If you previously could not see the Compliance page, Runs filters, or the operator cluster, they are now available at your workspace's access tier.

</details>

<details>

<summary>v2.201.32 - Developer Console: GPT-5.6 Family Added to Available Models (July 2026)</summary>

#### GPT-5.6 Family Added to Available Models <a href="#gpt-5.6-family-added-to-available-models" id="gpt-5.6-family-added-to-available-models"></a>

The Developer Console now includes the GPT-5.6 model family in the available models list, giving skill authors access to three new model options.

**What changed:**

* **Three new models available.** GPT-5.6 Sol, GPT-5.6 Terra, and GPT-5.6 Luna are now selectable when configuring skills in the Developer Console. These models do not support sampling parameters (temperature and top\_p) - the skill editor will indicate this, and any sampling parameters set on a skill using these models are silently ignored.
* **Skill editor sampling parameter warnings.** When one of these models is selected, the skill editor dynamically warns that sampling parameters are not supported, consistent with how other sampling-incompatible models are handled.

**What you need to do:**

* **No action required.** These are additive changes. The new models appear in the model selector alongside existing options. Existing skill configurations are unaffected.

</details>

<details>

<summary>v2.201.31 - Developer Console: Data Honesty - Remove Fabricated UI Elements (July 2026)</summary>

#### Data Honesty - Remove Fabricated UI Elements <a href="#data-honesty-remove-fabricated-ui-elements" id="data-honesty-remove-fabricated-ui-elements"></a>

Several UI elements across the Developer Console that displayed fabricated, placeholder, or sample data as if it were real have been removed. This is a data-honesty cleanup with no functional regression - all removed elements showed hardcoded or deterministic fake values rather than data from the workspace.

**What changed:**

* **Scenario source chips removed from Agent Readiness.** The per-scenario "Sources" chips on the Agent Readiness run detail view have been removed. These chips displayed deterministic placeholder attribution labels (such as data source names) that were not connected to any real source-tracking system. Scenario cards continue to display all other information (score, rationale, session details) as before.
* **Compliance badges removed from Data Sources connector drawers.** The "Compliance" section (showing HIPAA, PHI handling, BAA badges and a region label) has been removed from the Available, Connected, and Coming Soon connector drawer views. These badges displayed hardcoded pass/pending values that were not backed by a real compliance verification system.
* **"What we ingest" entity lists removed from Data Sources connector drawers.** The "What we ingest" (or "What we'd ingest") section listing entity types per connector has been removed from all connector drawer views. These lists were hardcoded per connector and not derived from actual ingestion configuration.
* **Availability heatmap removed from Data Insights.** The "Slot availability by day and hour" heatmap on the Data Insights dashboard has been removed. The heatmap displayed hardcoded sample values rather than real slot availability data.
* **Bottlenecks panel removed from Data Insights.** The "Facility and specialty bottlenecks" panel on the Data Insights dashboard has been removed. The panel always displayed an empty-state message and was not connected to any data source.
* **Time range filter and slot status filter removed from Data Insights.** The time range selector (7d, 30d, 90d, 1y) and the "Slot status: All" filter button on the Data Insights dashboard have been removed. These controls were not connected to any data filtering logic.
* **Sample data preview card removed from Dashboards index.** The "Proactive Journeys" preview card with the "Sample data" badge has been removed from the Dashboards index page. The Journeys section remains accessible from the sidebar navigation.
* **Data page default view changed.** The Data page now defaults to the entities view instead of the overview view.

**What you need to do:**

* **No action required.** All removed elements displayed placeholder or fabricated data. No real functionality or data has been affected. If you had bookmarked or referenced any of these specific UI panels, they are no longer present.

</details>

<details>

<summary>v2.201.30 - Developer Console: Enterprise Lifecycle IA - Stage 1 Navigation Restructure and Redirects (July 2026)</summary>

#### Enterprise Lifecycle IA - Stage 1 Navigation Restructure and Redirects <a href="#enterprise-lifecycle-ia-stage-1-navigation-restructure-and-redirects" id="enterprise-lifecycle-ia-stage-1-navigation-restructure-and-redirects"></a>

The Developer Console sidebar navigation has been restructured to reflect an enterprise lifecycle information architecture. Several standalone pages have been consolidated into unified surfaces, and legacy routes now redirect automatically to their new locations.

**What changed:**

* **Navigation restructured.** The sidebar navigation has been reorganized around an enterprise lifecycle flow. Section groupings, labels, and ordering have been updated to guide users through a build-test-operate-analyze workflow.
* **Agent Definitions folded into Agents.** The standalone Native Agents list page has been removed. Native agent definitions now appear in the unified Agents table alongside platform agents. The `/agent-definitions` route redirects to `/agents`. Individual definition detail pages (accessed by row click) remain at their existing routes.
* **Agent Trace replaced by Runs.** The standalone Agent Trace page has been removed. Deep call investigation is available through the unified Runs surface. The `/agent-trace` route redirects to `/runs`.
* **Command Center retired.** The internal metrics wall page has been removed. Workspace-level operational status is available on the Home page. The `/command-center` route redirects to `/home`.
* **Operator Dashboard replaced by Takeover console.** The standalone Operator Dashboard has been removed. The escalation queue, briefing, and intervention features are available in the Operator Command Center (Takeover console). The `/operators` route redirects to `/operators/command-center`.
* **Operator Priority Queue folded into Takeover console.** The standalone Priority Queue page has been removed. The queue is the left panel of the Takeover console. The `/operators/queue` route redirects to `/operators/command-center`.
* **Live Observer replaced by Playground.** The standalone Live Observer page for watching active calls has been removed. Call observation happens through the Playground view, and observe-while-acting is handled by the Takeover console. The `/calls/observe/{callSid}` route redirects to `/playground/{callSid}`, preserving the call identifier.
* **FHIR page redirected to EHR Sync integration.** The standalone FHIR configuration page has been removed. EHR sync configuration and connection status are available on the EHR Sync integration page under Tools. The `/data-sources/fhir` route redirects to `/tools/integrations/ehr-sync`.
* **API Keys page redirected to Developer page.** The `/api-keys` route now redirects to `/developer?tab=api-keys`. The API key creation wizard at `/api-keys/new` remains available.
* **Personal Access Tokens page redirected to Developer page.** The `/personal-access-tokens` route now redirects to `/developer?tab=tokens`.
* **Voice Settings page redirected to Settings page.** The `/settings/voice-settings` route now redirects to `/settings?tab=voice`.
* **Policy Memo bare route redirected.** The `/m42/policy-memo` route (which previously returned a 404) now redirects to `/m42/observation`, where policy memos are accessible per district.

**What you need to do:**

* **Update any bookmarks or internal links.** All legacy routes redirect automatically to their new locations, so existing links continue to work. Update bookmarks to point to the new locations directly for a faster navigation experience.
* **Familiarize yourself with the new sidebar layout.** The sidebar sections and item ordering have changed. Features are in the same places functionally but grouped differently in navigation.

</details>

<details>

<summary>v2.201.29 - Developer Console: Data Sources Design System Typography and Layout Polish (July 2026)</summary>

#### Data Sources Design System Typography and Layout Polish <a href="#data-sources-design-system-typography-and-layout-polish" id="data-sources-design-system-typography-and-layout-polish"></a>

The Data Sources section of the Developer Console has been updated to use the platform design system's typography tokens and tighter spacing, replacing hardcoded font sizes with consistent type scale classes throughout the page.

**What changed:**

* **Design system typography applied.** All text elements across the Data Sources page - including the page header, connector cards, catalog footer, drawer content, connection steps, stat strips, field mapping tables, and segmented controls - now use the platform's shared type scale tokens instead of hardcoded pixel-based font sizes. This brings the Data Sources section into alignment with the rest of the Developer Console.
* **Simplified page header.** The Data Sources page header now has a shorter title and description, and the decorative data flow diagram has been removed.
* **Tighter stat strip spacing.** The stat strip component uses reduced vertical padding for a more compact layout.
* **Accessibility improvement.** Loading state indicators in tab counts now include a status role for screen readers.
* **Connector catalog toolbar.** The search field now uses responsive width constraints, and the segmented filter controls use consistent spacing.

**What you need to do:**

* **No action required.** These are visual polish changes with no behavioral or configuration impact.

</details>

<details>

<summary>v2.201.28 - Developer Console: Engagement Section Rebuild - Journeys, Outreach, Triggers, Surfaces (July 2026)</summary>

#### Engagement Section Rebuild - Journeys, Outreach, Triggers, Surfaces <a href="#engagement-section-rebuild-journeys-outreach-triggers-surfaces" id="engagement-section-rebuild-journeys-outreach-triggers-surfaces"></a>

The Engagement section of the Developer Console has been rebuilt with a new information architecture that consolidates related features, introduces a dedicated Journeys section, and restructures Outreach, Triggers, and Surfaces into tabbed, enterprise-grade pages.

**What changed:**

* **New Journeys section.** Proactive journey observability now lives at its own top-level route (`/journeys`) instead of nested under Dashboards. The Journeys list shows journey health summaries with funnel visualizations, outcome strips, and key metrics. Clicking a journey opens a detail dashboard with overview KPIs (each with a definition tooltip), funnel charts, outcome-by-channel breakdowns, agent resolution tables, eval quality panels, and member timeline drawers. All journey data is currently sample data - a persistent banner discloses that journey observability is not yet connected to workspace data. The sample period is labeled explicitly so the preview never implies recency.
* **Legacy journey and dashboard redirects.** The previous routes at `/dashboards/proactive-journey` and `/dashboards/proactive-journey/{id}` now redirect to `/journeys` and `/journeys/{id}` respectively, preserving existing bookmarks. The Dashboards index page links to the Journeys section with a "Sample data" badge instead of embedding the journey list inline.
* **Gap Scanner folded into Outreach.** The standalone Gap Scanner page has been removed. Gap scanner configuration is now the Detection tab within the redesigned Outreach page. The previous `/gap-scanner` route redirects to `/outreach?tab=detection` automatically.
* **Outreach page redesigned with tabs.** The Outreach page now uses a tabbed layout with four tabs: Overview (outreach health metrics and activity), Rules (outreach rule configuration with inline editing, quiet hours, consent gates, and template linking), Templates (data collection template management with field editors), and Detection (gap scanner settings, previously the standalone Gap Scanner page). Rule cards support expanded inline editing with channel selection, trigger configuration, and message template authoring. Template cards support field-level editing with common field presets and sensitive field marking.
* **Triggers page redesigned.** The Triggers list now includes a richer table with status badges, schedule labels, and action summaries. The trigger detail page is reorganized into an overview section, a settings form, and a runs history section with status tracking and retry visibility. Trigger creation uses a two-step flow: choose trigger mode (time-based or event-based), then configure the schedule or event. The schedule builder now includes a timezone selector. A new "Fire with input" dialog allows manual trigger invocation with custom input parameters.
* **Surfaces page redesigned with tabs.** The Surfaces page now uses a tabbed layout: a List tab (surface table with filtering, status badges, and progress indicators) and an Analytics tab (completion trends, channel breakdowns, and configurable time windows with CSV export). The surface detail page includes a new progress card showing field completion status. Surface creation uses a redesigned sheet with an entity picker field and structured field editor.
* **Navigation updates.** The sidebar Engagement section now includes Journeys as a top-level item alongside Outreach, Triggers, and Surfaces. The Gap Scanner item has been removed from navigation.
* **Outcome tone semantics updated.** Across journey dashboards, outcome badges, and charts, the tone mapping has been revised: "completed" uses the success tone, "handed off" uses the info tone (a deliberate routing outcome, not a failure), "unresolved" uses the warning tone (the true attention state), and "opted out" uses a neutral tone (a member preference, not a failure).

**What you need to do:**

* **Update any bookmarks.** Links to the Gap Scanner page redirect to the Outreach Detection tab automatically. Links to the proactive journey dashboard under `/dashboards/proactive-journey` redirect to `/journeys` automatically. Update bookmarks to point to the new locations directly.
* **Review Outreach configuration.** If you previously configured gap scanner settings on the standalone page, your settings are now accessible under the Detection tab on the Outreach page.

</details>

<details>

<summary>v2.201.27 - Developer Console: Unified Compliance &#x26; Audit, Developer, Members, and Settings Pages (July 2026)</summary>

#### Unified Compliance & Audit, Developer, Members, and Settings Pages <a href="#unified-compliance-and-audit-developer-members-and-settings-pages" id="unified-compliance-and-audit-developer-members-and-settings-pages"></a>

The Developer Console governance and workspace management surfaces have been redesigned into unified, tabbed pages that consolidate previously scattered features into fewer, more capable destinations.

**What changed:**

* **Compliance & Audit page consolidated.** The Compliance & Audit page now has six tabs: Overview (summary metrics and compliance posture), Events (cross-service audit trail with filtering by service, action, actor, resource type, resource ID, date range, and PHI-only toggle), PHI Access (dedicated PHI event view with entity drill-down), Access Review (credential access review table with CSV download for SOC2 evidence), Exports (audit export history and creation), and Identity (identity-service audit events). The Events and PHI Access tabs support row-click inspection in a detail drawer that shows actor, resource, IP address, user agent, and metadata. The Events tab includes date range presets (24h, 7d, 30d, 90d), an "Export this view" action that prefills the export dialog from the active filters, and URL-persisted filters for deep linking. The Events, PHI Access, Exports, and Identity tabs require admin scope - the same gate the former Admin Audit Log page enforced.
* **Admin Audit Log page removed and redirected.** The Admin section no longer contains an Audit Log tab. The route redirects to the Compliance & Audit page's Events tab automatically. The Admin Security tab (which had no page) has also been removed from the Admin navigation.
* **Developer page consolidated.** The Developer page now includes tabbed access to API Keys and Personal Access Tokens alongside the existing developer tools. A getting-started strip provides onboarding guidance for new workspaces. The standalone API Keys and Personal Access Tokens pages now redirect to the Developer page with the appropriate tab selected.
* **API key hygiene indicator.** The API Keys table now shows an "Unused 90+ days" badge on keys that have not been used for 90 or more days, helping teams identify stale credentials during access reviews.
* **Members page redesigned.** The Members page now uses a tabbed layout with separate tables for active members and pending invitations, replacing the previous combined view. A bulk invite dialog supports adding multiple members at once. Member and invitation tables include improved filtering and pagination.
* **Settings page reorganized.** The Settings page now groups configuration into General, Retention, and Danger Zone sections. A new Convert Environment card allows converting a workspace between environment types. The archive and provisioning actions are presented as individual danger-zone cards with confirmation flows.
* **Navigation updates.** The sidebar navigation reflects the consolidated structure. The Compliance & Audit, Developer, Members, and Settings items point to the unified pages.

**What you need to do:**

* **Update any bookmarks.** Links to the Admin Audit Log, standalone API Keys page, or standalone Personal Access Tokens page now redirect to their new locations automatically. Update bookmarks to point to the new destinations directly.
* **Access review workflow.** The Access Review tab now provides a structured table with CSV download instead of the previous card-based layout, which is better suited for periodic SOC2 evidence collection.

</details>

<details>

<summary>v2.201.26 - Developer Console: Sync Page Removed, Health Consolidated into Data Sources (July 2026)</summary>

#### Sync Page Removed, Health Consolidated into Data Sources <a href="#sync-page-removed-health-consolidated-into-data-sources" id="sync-page-removed-health-consolidated-into-data-sources"></a>

The standalone Sync page has been removed from the Developer Console. Per-source sync health, freshness indicators, and pipeline status are now available directly on the Data Sources page as part of the data section information architecture redesign.

**What changed:**

* **Sync page removed from navigation.** The Sync item has been removed from the Data section of the sidebar. The standalone Sync page with its inbound and outbound tabs no longer exists as a separate destination.
* **Existing Sync links redirect.** Any bookmarks or saved links to the old Sync page now redirect to the Data Sources page automatically, so no links are broken.
* **Infrastructure card updated.** The Pipeline card on the workspace home page now links to Data Sources instead of the former Sync page.
* **EHR integration link updated.** The EHR sync section link now points to Data Sources with the label "View Data Sources" instead of the former "View Sync" label.
* **Loop latency widget removed.** The loop latency sparkline widget that previously appeared on the Sync page has been removed along with the page.

**What you need to do:**

* **Update any bookmarks.** If you have bookmarked the Sync page, the redirect will take you to Data Sources automatically. Update your bookmarks to point to Data Sources directly.
* **Use Data Sources for sync monitoring.** Per-source health status, freshness, and sync activity are now available on the Data Sources page.

</details>

<details>

<summary>v2.201.25 - Developer Console: Family-Aware Voice Configuration (July 2026)</summary>

#### Family-Aware Voice Configuration <a href="#family-aware-voice-configuration" id="family-aware-voice-configuration"></a>

The Developer Console now hides Amigo pipeline voice settings that do not apply when a non-Amigo voice model family is selected, preventing operators from configuring knobs that have no effect.

**What changed:**

* **Service detail page is family-aware.** When a service uses a non-Amigo voice model family (real-time speech-to-speech or full-duplex), the service detail page no longer displays Amigo pipeline voice settings (TTS provider and model, fillers, response limits, barge-in tuning). Instead, a note explains that audio is generated end-to-end by the selected runtime and those settings do not apply. Call forwarding status is still shown.
* **Agent version cards are family-aware.** The voice configuration section on agent version cards now checks the voice model family. For Amigo pipeline agents, the full set of voice knobs (TTS provider, voice ID, stability, similarity, style) is displayed as before. For other families, a note explains that the pipeline voice settings do not apply to the selected runtime.
* **Service edit form shows contextual guidance.** The session provider dropdown on the service edit form now displays family-specific helper text. For the Amigo pipeline, it describes the default behavior. For other runtimes, it notes that Amigo pipeline settings (TTS, fillers, response limits) will not apply.

**What you need to do:**

* **No action required.** These are UX improvements that apply automatically. No voice configuration data is changed - the settings are hidden in the UI only when they have no effect on the selected runtime.

</details>

<details>

<summary>v2.201.24 - Developer Console: Data Sources Catalog Drawer Guidance (July 2026)</summary>

#### Data Sources Catalog Drawer Guidance <a href="#data-sources-catalog-drawer-guidance" id="data-sources-catalog-drawer-guidance"></a>

The data sources catalog drawers for available and coming-soon connectors now provide clear next-step guidance instead of ending on a dead-end close button.

**What changed:**

* **Available connector drawer shows provisioning guidance.** When you open an available connector in the data sources catalog, the drawer footer now explains that Amigo's team provisions the integration and directs you to contact your Amigo representative to connect the data source. The close button has been restyled to an outline variant.
* **Coming-soon connector drawer shows early access guidance.** When you open a coming-soon connector, the drawer footer now encourages you to ask your Amigo team about early access to the connector. The close button has been restyled to an outline variant.

**What you need to do:**

* **No action required.** These are UX improvements that apply automatically.

</details>

<details>

<summary>v2.201.23 - Developer Console: Data Sources Health Strip Unified to Design System (July 2026)</summary>

#### Data Sources Health Strip Unified to Design System <a href="#data-sources-health-strip-unified-to-design-system" id="data-sources-health-strip-unified-to-design-system"></a>

The summary strip at the top of the active data sources tab now uses the platform design system status strip component, replacing the previous bespoke implementation. The label and empty-state text for the last sync indicator have also been updated.

**What changed:**

* **Status strip unified to design system.** The summary strip on the Active Sources tab now uses the standard design system status strip, matching the visual language used elsewhere in the Developer Console.
* **"Since last sync" renamed to "Last sync".** The label for the most recent sync timestamp has been shortened for clarity.
* **Empty state updated.** When no sync has occurred, the last sync indicator now displays "Never" instead of "N/A".
* **"New Data Source" button renamed to "Add source".** The button label for adding a new data source has been simplified.

**What you need to do:**

* **No action required.** These are visual and labeling improvements that apply automatically.

</details>

<details>

<summary>v2.201.22 - Developer Console: Data Sources Catalog and Detail Improvements (July 2026)</summary>

#### Data Sources Catalog and Detail Improvements <a href="#data-sources-catalog-and-detail-improvements" id="data-sources-catalog-and-detail-improvements"></a>

The Data Sources page now lands on the workspace's real connected sources instead of the connector catalog, the catalog no longer displays fabricated connection states, and the data source detail view masks a broader set of sensitive configuration fields.

**What changed:**

* **Default landing tab changed.** The Data Sources page now opens on the active sources tab (your workspace's real connected data sources) instead of the connector catalog. Previously, the catalog was the default landing view, which could give a misleading first impression of connection state.
* **Catalog no longer shows fabricated statuses.** The connector catalog is a browse-and-add directory of available connectors. It no longer displays "Connected" or "Paused" status filters or counts - those states belong to the active sources tab, which reflects real per-workspace connection status. The catalog now shows "Available" and "Coming soon" filters only.
* **Catalog stats simplified.** The summary stats at the top of the catalog now show "Available to connect" and "Coming soon" counts only, removing the previously fabricated "Connected" and "Paused" counts.
* **Broader secret masking on data source detail.** The data source detail view now masks configuration values for any key that matches common secret-related patterns (including API keys, tokens, bearer credentials, access keys, and private keys) rather than only password and secret fields. This prevents accidental exposure of credentials in the configuration viewer.
* **Intake tab guard updated.** When the intake feature flag is off, deep-linking to the intake tab via URL now falls back to the active sources tab instead of the catalog.

**What you need to do:**

* **No action required.** These are UX and security improvements that apply automatically.

</details>

<details>

<summary>v2.201.21 - Developer Console: Patients Table Server-Backed Sort and Layout Improvements (July 2026)</summary>

#### Patients Table Server-Backed Sort and Layout Improvements <a href="#patients-table-server-backed-sort-and-layout-improvements" id="patients-table-server-backed-sort-and-layout-improvements"></a>

The Patients page has been redesigned with server-backed sorting, an improved column layout, and better condition overflow handling.

**What changed:**

* **Server-backed sort control.** The patients table now includes a sort dropdown that reorders the full dataset server-side rather than sorting only the visible page. Sort options include recently updated, least recently updated, most records, and name (A-Z / Z-A). The selected sort is persisted as a URL query parameter.
* **Column layout updated.** The table now displays MRN and DOB/Age (showing date of birth with computed age) as dedicated columns. The DOB column renders both the formatted date and the patient's age. The phone and tags columns have been removed.
* **Conditions overflow popover.** When a patient has more than two conditions, the overflow badge now opens an inline popover showing all remaining conditions instead of just displaying a count.
* **Inline patient count header.** The total patient count previously shown as a separate metric card above the table now appears as an inline header within the table container.
* **Column sorting disabled on headers.** Per-column header sorting has been removed to prevent misleading reordering of a single page of results. All sorting is handled through the server-backed sort dropdown.
* **Improved pagination display.** The pagination footer now shows a formatted range (e.g., "1-20 of 150") and handles empty states cleanly.
* **Search placeholder simplified.** The search field placeholder has been updated to "Search by name, phone, or ID".

**What you need to do:**

* **No action required.** These are visual and usability improvements that apply automatically.

</details>

<details>

<summary>v2.201.20 - Developer Console: Entity and Service Columns on Runs, Voice Settings and Playground Updates (July 2026)</summary>

#### Entity and Service Columns on Runs, Voice Settings and Playground Updates <a href="#entity-and-service-columns-on-runs-voice-settings-and-playground-updates" id="entity-and-service-columns-on-runs-voice-settings-and-playground-updates"></a>

The Runs table now surfaces who each run was with and which service handled it, and the Voice Settings form and Playground emotion panel have been simplified.

**What changed:**

* **Entity and Service columns on the Runs table.** The Runs list now shows an Entity column (who the run was with) and a Service column (which agent service handled it) as primary identifiers, grouped right after the Type column. Both render a dash when the value is not available for a run.
* **Correction Categories removed from Voice Settings.** The Correction Categories field has been removed from the Voice Settings form. All other voice settings fields are unchanged.
* **Vocal burst display removed from the Playground.** The emotion panel in the Playground no longer includes the vocal burst stream display.

**What you need to do:**

* **No action required.** The new Runs columns appear automatically, and no configuration changes are needed for the Voice Settings or Playground updates.

</details>

<details>

<summary>v2.201.19 - Developer Console: Close Conversation Action on List and Detail (July 2026)</summary>

#### Close Conversation Action on List and Detail <a href="#close-conversation-action-on-list-and-detail" id="close-conversation-action-on-list-and-detail"></a>

The Developer Console now lets operators close an active text conversation directly from the conversations list and the conversation detail page.

**What changed:**

* **Close action on conversation detail.** The conversation detail page for eligible text conversations now displays a "Close conversation" button in the page header. Clicking it opens a confirmation dialog that explains the effect: closing ends the current conversation, and the contact's next inbound message starts a fresh conversation with the latest agent configuration.
* **Close action on conversations table.** The conversations list table now includes a row-level action menu on eligible rows. The menu exposes a "Close conversation" item that opens the same confirmation dialog.
* **Eligibility rules.** The close action appears only for non-voice conversations that are not already closed. Voice conversations (which end with the call) and already-closed conversations do not show the action. This matches the server-side eligibility gate on the close endpoint.
* **Confirmation dialog.** Both surfaces share the same confirmation dialog, which explains that closing ends the current conversation thread and that the next inbound message from the contact will start a fresh conversation. The dialog shows a pending state while the close request is in flight.
* **Success and error feedback.** On success, a toast confirms the conversation was closed. On failure, a toast displays the error message.

**What you need to do:**

* **No action required.** The close action appears automatically on eligible conversations. No configuration changes are needed.

</details>

<details>

<summary>v2.201.18 - Developer Console: Legacy Review Queue Surface Retired (July 2026)</summary>

#### Legacy Review Queue Surface Retired <a href="#legacy-review-queue-surface-retired" id="legacy-review-queue-surface-retired"></a>

The legacy Review Queue page in the Developer Console has been removed. Review functionality is now handled entirely through the External Write Review surface introduced in v2.201.17.

**What changed:**

* **Review Queue page removed.** The `/review` page and all associated sub-pages (review item detail, quality pipeline charts, batch actions, entity grouping, and filter controls) have been removed from the Developer Console.
* **Sidebar navigation updated.** The "Review Queue" entry has been removed from the console sidebar. The External Write Review page remains available for managing external write proposals.
* **Routes cleaned up.** Direct links to the old `/review` paths will no longer resolve. The review section has been removed from workspace routing.

**What you need to do:**

* **External write proposals are reviewed on the External Write Review page.** The `/review` paths no longer resolve.

</details>

<details>

<summary>v2.201.17 - Developer Console: External Write Review Console Surface (July 2026)</summary>

#### External Write Review Console Surface <a href="#external-write-review-console-surface" id="external-write-review-console-surface"></a>

The Developer Console now includes a dedicated External Write Review page where reviewers can inspect, approve, or reject proposed writes to external systems before they are delivered.

**What changed:**

* **New External Write Review page.** A new page under the console navigation lets reviewers browse external write proposals awaiting human review. The page displays a filterable table of proposals with status, connector type, resource type, event type, and creation time columns.
* **Status filtering.** A toggle group at the top of the table filters proposals by status: Pending (proposed), Approved, Rejected, or All. The default view shows pending proposals so reviewers see what needs attention first.
* **Infinite-scroll pagination.** The proposal list loads incrementally as the reviewer scrolls, so large queues remain responsive without manual page navigation.
* **Review dialog.** Clicking "Review" on a proposal row opens a detail dialog showing the full proposed payload (the FHIR resource that would be written), resource type, resource ID, event type, confidence score, and connector type. Reviewers can approve the write or reject it with a required reason.
* **Decision enforcement.** Only proposals in "proposed" status can be approved or rejected. Previously decided proposals display their recorded decision, reviewer identity, and rejection reason in read-only mode.
* **Navigation.** The page appears in the console sidebar as "External Write Review" and is available to internal users. The page is empty for workspaces that have not opted into review-required external writes.

**What you need to do:**

* **No action required.** The page appears automatically in the Developer Console sidebar. It shows proposals only for workspaces where external write review is enabled. Workspaces without review-required writes see an empty state.

</details>

<details>

<summary>v2.201.16 - Developer Console: Memory Inspector - Entity Memory Panel and Memory-in-Conversation View (July 2026)</summary>

#### Memory Inspector - Entity Memory Panel and Memory-in-Conversation View <a href="#memory-inspector-entity-memory-panel-and-memory-in-conversation-view" id="memory-inspector-entity-memory-panel-and-memory-in-conversation-view"></a>

The Developer Console now includes a Memory Inspector that surfaces what the agent knows about a person and what memory was injected into each conversation turn.

**What changed:**

* **Entity memory panel on patient detail.** The patient detail page now includes a Memory section that displays the enriched memory the agent draws on for that person. The panel shows the current user model narrative, confidence scores, provenance links back to source conversations, and a full extraction log showing how each memory dimension was observed and updated over time. Current values are visually distinguished from superseded entries.
* **Memory-in-conversation view on conversation detail.** Each conversation detail page now includes a "What the agent remembered" section that shows the memory injected into the agent's prompt at each engage turn. For each turn, the view displays additional context items and user model text, with an expandable raw system prompt for debugging.
* **Memory-in-conversation view on call detail.** The call analysis panel on voice call detail pages now includes the same "What the agent remembered" section, showing per-turn memory injection for voice conversations.
* **Prompt log inspection.** Both memory-in-conversation views are powered by prompt logs, which record the system prompt sent to the agent at each engage turn. The views parse the memory sections from the prompt and present them in a structured format. A collapsible raw prompt view is available for each turn.

**What you need to do:**

* **No action required.** The Memory Inspector appears automatically on patient detail, conversation detail, and call detail pages. Memory data is populated from the existing enrichment and prompt log pipelines.

</details>

<details>

<summary>v2.201.15 - Developer Console: Trigger Event Type Reconciled with Platform SDK (July 2026)</summary>

#### Trigger Event Type Reconciled with Platform SDK <a href="#trigger-event-type-reconciled-with-platform-sdk" id="trigger-event-type-reconciled-with-platform-sdk"></a>

The trigger creation form now uses the platform's canonical event type list instead of free-text entry, and the UI separates trigger mode selection (time based vs event based) from event type selection.

**What changed:**

* **Validated event types replace free-text input.** The trigger creation form now validates the event type against the closed set of platform-supported events defined in the SDK. Previously, the form accepted arbitrary strings including a "Custom event type" option with a free-text input. Invalid or unsupported event types are now rejected at form submission with a clear validation message.
* **Two-step event selection for event-based triggers.** When creating an event-based trigger, you first choose the trigger mode ("Time based" or "Event based"), then select the specific platform event from a dropdown. This replaces the previous single dropdown that mixed trigger modes with event types.
* **"Custom event type" option removed.** The free-text custom event type input has been removed. All triggers must use one of the platform's supported event types.
* **Legacy event names handled gracefully.** Existing triggers that were created with the previous event type names (such as `trigger.scheduled` or `webhook.received`) continue to display correctly in the trigger list. The "Time based" label is shown for both the current and legacy scheduled event identifiers.
* **Event-based trigger description updated.** The description for event-based triggers now reads "Runs when a matching platform event arrives" instead of the previous webhook-specific wording.

**What you need to do:**

* **No action required for existing triggers.** Triggers created with previous event type values continue to work and display correctly.
* **When creating new triggers:** Select an event type from the provided dropdown. Free-text event types are no longer accepted.

</details>

<details>

<summary>v2.201.14 - Developer Console: "Take Over" Action on Live Voice Runs (July 2026)</summary>

#### "Take Over" Action on Live Voice Runs <a href="#take-over-action-on-live-voice-runs" id="take-over-action-on-live-voice-runs"></a>

The Runs table now includes a row-level action that lets operators take over a live voice call directly from the Runs page.

**What changed:**

* **"Take over" row action on live voice runs.** Runs that represent an active voice conversation now display a row action menu with a "Take over" option. Selecting it navigates directly to the Operator Command Center with the target call preselected.
* **Deep-link preselection.** The Command Center reads a `callSid` query parameter from the URL and uses it to seed the initial call selection. When a call matching that identifier appears in the live queue, it is automatically selected so the operator can begin intervention immediately.
* **Eligibility scoping.** The action appears only on voice conversation runs that are currently live (running or paused) and have an associated call identifier. Non-voice runs, completed runs, and framework runs do not display the action menu.
* **No interference with row click.** The action menu does not interfere with the existing row click behavior that opens the run detail page. Clicking the row still navigates to the detail view; the "Take over" action is accessed through the actions menu only.

**What you need to do:**

* **No action required.** The "Take over" action appears automatically on eligible live voice runs in the Runs table. Operators with access to the Command Center can use it to quickly jump into an active call.

</details>

<details>

<summary>v2.201.13 - Developer Console: Active Calls Folded into Runs Live View (July 2026)</summary>

#### Active Calls Folded into Runs Live View <a href="#active-calls-folded-into-runs-live-view" id="active-calls-folded-into-runs-live-view"></a>

The standalone "Active Calls" page has been retired and its functionality folded into the unified Runs page. Live voice calls now appear directly in the Runs table when the "live" status filter is active, and fleet capacity widgets are displayed on the live view for internal users.

**What changed:**

* **Active Calls page replaced with redirect.** The `/calls/active` route now redirects to the Runs page with the live status filter applied (`/runs?f_status=live`). Existing bookmarks and links continue to work through the redirect.
* **Fleet capacity widgets moved to Runs live view.** The fleet capacity indicators that previously appeared on the Active Calls page now display above the runs table when internal users are viewing the live status filter. Both the voice fleet and tool-runner fleet capacity widgets are shown.
* **Navigation updated.** The "Active Calls" entry has been removed from the Operations section of the sidebar. The Runs entry now highlights as active when viewing the legacy `/calls/active` or `/calls/observe` paths.
* **Internal-only visibility preserved.** The redirected path and fleet capacity widgets remain gated to internal users, matching the previous access posture.

**What you need to do:**

* **No action required.** If you had bookmarks to the Active Calls page, they will automatically redirect to the Runs live view. All live voice call data is available through the Runs table with the live status filter.

</details>

<details>

<summary>v2.201.12 - Developer Console: Runs Summary Strip on the Operations Runs Page (July 2026)</summary>

#### Runs Summary Strip on the Operations Runs Page <a href="#runs-summary-strip-on-the-operations-runs-page" id="runs-summary-strip-on-the-operations-runs-page"></a>

The Operations Runs page now displays a summary strip of metric cards above the runs table, showing workspace-wide aggregate counts at a glance.

**What changed:**

* **Summary metric cards.** Four metric cards appear above the runs table: Total runs, Live (running or paused), Completed, and Failed. These counts are sourced from the dedicated runs summary endpoint and reflect honest workspace-wide totals that the paginated table cannot derive client-side.
* **Auto-refresh.** The summary strip refreshes periodically so the Live count tracks in-flight runs without a manual page reload.
* **Graceful degradation.** If the summary data is unavailable, the cards display dashes instead of counts. The table below continues to function normally.
* **Internal-only visibility.** The summary strip is currently shown only to internal users.
* **Consistent card design.** The runs summary strip uses the same metric card design as the insights digest.

**What you need to do:**

* **No action required.** The summary strip appears automatically for internal users on the Runs page. No configuration is needed.

</details>

<details>

<summary>v2.201.11 - Developer Console: JWT Assertion Usage for Integration Auth (July 2026)</summary>

#### JWT Assertion Usage for Integration Auth <a href="#jwt-assertion-usage-for-integration-auth" id="jwt-assertion-usage-for-integration-auth"></a>

The integration creation and detail views now support selecting how a signed JWT is presented to the token endpoint when using the OAuth2 JWT Bearer auth type. This corresponds to the new `assertion_usage` field on the platform API.

**What changed:**

* **Assertion Usage field on the integration creation form.** When creating a new integration with the OAuth2 JWT Bearer auth type, the Connection step now includes an Assertion Usage selector with two options:
  * **Authorization grant (standard)** - sends the JWT as the `assertion` parameter under a `jwt-bearer` grant (RFC 7523 section 2.1). This is the default.
  * **Client authentication - Epic / SMART Backend Services** - sends the JWT as `client_assertion` under the `client_credentials` grant (RFC 7523 section 2.2), which is the `private_key_jwt` method required by providers like Epic.
* **Assertion Usage displayed on integration detail page.** The Auth Details section of an existing integration now shows the configured Assertion Usage alongside the other JWT configuration fields.
* **Default value.** New integrations default to "Authorization grant" if no selection is made, preserving the previous behavior.

**What you need to do:**

* **No action required for existing integrations.** Existing OAuth2 JWT Bearer integrations continue to use the authorization grant flow as before.
* **For new SMART Backend Services or Epic integrations:** Select "Client authentication" in the Assertion Usage field to use the `private_key_jwt` client credentials flow these providers require.

</details>

<details>

<summary>v2.201.10 - Developer Console: Topbar Navigation and Breadcrumb Improvements (July 2026)</summary>

#### Topbar Navigation and Breadcrumb Improvements <a href="#topbar-navigation-and-breadcrumb-improvements" id="topbar-navigation-and-breadcrumb-improvements"></a>

The Developer Console topbar has been updated with improved navigation controls, a proper breadcrumb trail, and refined hover states.

**What changed:**

* **Full breadcrumb navigation.** The topbar now displays an absolute breadcrumb path from Home to the current page, with clickable parent crumbs. On deep routes, middle crumbs collapse first when the bar runs out of room, while Home and the current page stay pinned and visible.
* **Back and forward navigation buttons.** The text chevron characters have been replaced with proper back and forward navigation buttons. The buttons are availability-aware - they render disabled when there is no navigation history in that direction, and gain a hover fill when navigation is available.
* **Divider before navigation chevrons.** A vertical divider now separates the sidebar collapse button from the back/forward navigation group, improving visual grouping.
* **Hover fill on collapse button.** The sidebar collapse button now shows a background fill on hover, consistent with the navigation buttons.
* **Responsive Docs button.** The Docs button is hidden on extremely narrow viewports to prevent navigation icons from overlapping.
* **Consistent design tokens.** The topbar now uses standard design tokens for colors, borders, and hover states instead of custom CSS variable references.

**What you need to do:**

* **No action required.** These are visual and interaction improvements that apply automatically. No configuration changes are needed.

</details>

<details>

<summary>v2.201.9 - Developer Console: Operator Identity Resolved from Authenticated User (July 2026)</summary>

#### Operator Identity Resolved from Authenticated User <a href="#operator-identity-resolved-from-authenticated-user" id="operator-identity-resolved-from-authenticated-user"></a>

The Command Center now resolves the acting operator identity from the signed-in user's account rather than allowing manual selection. This closes a security gap where any user could pick any operator profile and act on their behalf during escalations. The server now also enforces identity matching on all operator action endpoints, so even modified clients cannot submit operator actions attributed to a different user.

**What changed:**

* **Operator identity resolved automatically.** The Command Center matches the authenticated user's email to their operator profile in the workspace. There is no longer a picker that lets a user choose which operator to act as.
* **No localStorage-based identity.** Previously, the selected operator ID was stored in the browser and trusted on subsequent visits. Operator identity is now derived from the authenticated session on every load.
* **Server-side enforcement.** All operator action endpoints now verify that the caller's authenticated identity matches the target operator profile. Even if a client sends a mismatched operator ID, the server rejects the request with `403 Forbidden`. See the [API changelog](/api-reference/change-logs/amigo-api.md) for details.
* **Clear error states.** If the signed-in user has no operator profile linked to their email in the workspace, the Command Center displays a message explaining that an administrator needs to add them in the Operators tab. If the user is not signed in, a message prompts them to sign in with their operator account.
* **Security improvement.** The previous free-choice picker allowed any authenticated user to impersonate any operator for join-call, guidance, and wrap-up actions. This is no longer possible - you can only operate as yourself, enforced both client-side and server-side.

**What you need to do:**

* **Ensure operator profiles have correct email addresses.** The platform matches operator profiles by email. If an operator's profile does not have the same email as their sign-in account, they will not be able to access the Command Center. Ask your workspace administrator to verify operator email addresses in the Operators tab.
* **No action required if emails already match.** If your operators sign in with the same email address listed on their operator profiles, the transition is transparent.

</details>

<details>

<summary>v2.201.8 - Developer Console: Real Rejected Stat and Timeline Timestamps in Review Queue (July 2026)</summary>

#### Real Rejected Stat and Timeline Timestamps in Review Queue <a href="#real-rejected-stat-and-timeline-timestamps-in-review-queue" id="real-rejected-stat-and-timeline-timestamps-in-review-queue"></a>

The review queue dashboard now shows the actual Rejected count instead of a placeholder metric, and the review item sidebar displays full date-and-time timestamps instead of date-only values.

**What changed:**

* **Rejected stat replaces placeholder.** The review queue dashboard previously displayed a hardcoded "In Progress" metric that always showed zero (no data source existed for it). This has been replaced with a "Rejected" metric that shows the real count of rejected review items. The Rejected count is part of the total item count already displayed on the dashboard.
* **Full timestamps in review item timeline.** The Created, Updated, and Completed timestamps in the review item sidebar now display both date and time (for example, "7/15/2026, 2:30:00 PM") instead of date only ("7/15/2026"). This gives operators precise timing for when review items moved through each stage.

**What you need to do:**

* **No action required.** Both changes appear automatically for all users with access to the review queue. No configuration changes or new permissions are needed.
* **Update any references to "In Progress" metric.** If you have internal documentation or training materials that reference the "In Progress" metric on the review queue dashboard, update them to reference "Rejected" instead.

</details>

<details>

<summary>v2.201.7 - Developer Console: SSE-Drop Banner and Guidance Send Guard in Command Center (July 2026)</summary>

#### SSE-Drop Banner and Guidance Send Guard in Command Center <a href="#sse-drop-banner-and-guidance-send-guard-in-command-center" id="sse-drop-banner-and-guidance-send-guard-in-command-center"></a>

The Command Center now warns operators when live queue updates are interrupted, and prevents duplicate guidance messages from being sent to agents during takeover.

**What changed:**

* **SSE-drop warning banner.** When the live event stream disconnects during an active takeover session, a warning banner appears at the top of the Command Center: "Live queue updates paused - reconnecting. New escalations and queue changes may not appear until the connection is restored." The banner disappears automatically when the connection is restored.
* **Guidance send guard.** The guidance input now prevents duplicate sends when an operator presses Enter or clicks Send rapidly. While a guidance message is in flight, the input is disabled and the Send button is grayed out, so a second press cannot enqueue a duplicate message. This guard operates at the source - even non-UI callers cannot trigger a duplicate send while one is already pending.
* **Guidance error feedback.** If a guidance message fails to send, an inline error message appears below the input: "Guidance failed to send - try again." The error clears automatically when the operator switches calls or the takeover session disconnects, so a prior call's failure cannot bleed into the active call's status.

**What you need to do:**

* **No action required.** The SSE-drop banner and guidance send guard appear automatically for all operators with Command Center access. No configuration changes or new permissions are needed.

</details>

<details>

<summary>v2.201.6 - Developer Console: Fleet Capacity "Updated Ago" Timestamp (July 2026)</summary>

#### Fleet Capacity "Updated Ago" Timestamp <a href="#fleet-capacity-updated-ago-timestamp" id="fleet-capacity-updated-ago-timestamp"></a>

The Fleet Capacity widget on the Active Calls page now displays a live-ticking "updated ago" timestamp showing how recently the fleet status data was refreshed.

**What changed:**

* **Live "updated ago" label.** The Fleet Capacity widget now shows a continuously ticking label below the capacity breakdown indicating when the data was last refreshed (for example, "Updated 3s ago"). The label updates every second so operators can see at a glance whether the data is current.
* **Polling cadence note.** The label includes a note that the widget polls for fresh data periodically, giving operators context for how often the numbers refresh.
* **Shared duration component.** The active call duration display now uses the same shared live-ticking duration component used elsewhere in the Operations section, ensuring consistent formatting and behavior across the platform. The component now accepts an optional CSS class for styling flexibility.

**What you need to do:**

* **No action required.** The updated ago timestamp and consistent duration display appear automatically for all users with access to the Active Calls page. No configuration changes or new permissions are needed.

</details>

<details>

<summary>v2.201.5 - Developer Console: Live-Ticking Duration on Runs Table (July 2026)</summary>

#### Live-Ticking Duration on Runs Table <a href="#live-ticking-duration-on-runs-table" id="live-ticking-duration-on-runs-table"></a>

The Duration column on the unified Runs table now ticks in real time for active runs, so operators can watch elapsed time update live without refreshing the page.

**What changed:**

* **Live duration for active runs.** Runs that are still in progress (no end time recorded) now display a continuously updating elapsed timer in the Duration column. The timer counts up from the run's start time, updating every second.
* **Static duration for completed runs.** Runs that have ended continue to show the static elapsed wall-clock duration (start to end), unchanged from previous behavior.
* **Tabular number formatting.** The live duration uses tabular numerals so digits do not shift as the timer ticks, keeping the column visually stable.
* **Fade-in transition on the table.** The Runs table now fades in when it loads, providing a smoother visual transition.

**What you need to do:**

* **No action required.** The live-ticking duration appears automatically for all users who can see the Runs table. No configuration changes or new permissions are needed.

</details>

<details>

<summary>v2.201.4 - Developer Console: Caller, Outcome, Turns, and Direction Columns on Runs Table (July 2026)</summary>

#### Caller, Outcome, Turns, and Direction Columns on Runs Table <a href="#caller-outcome-turns-and-direction-columns-on-runs-table" id="caller-outcome-turns-and-direction-columns-on-runs-table"></a>

The unified Runs table now displays four additional columns for conversation runs: Caller, Outcome, Turns, and Direction.

**What changed:**

* **Caller column.** Shows the resolved caller identity when available, falling back to the raw contact number. Displays a dash when neither is present.
* **Outcome column.** Shows how the conversation ended (the completion reason), formatted as a human-readable label. Displays a dash when the outcome is not available.
* **Turns column.** Shows the number of conversational turns as an integer. Sorts numerically so that 10 sorts after 9. Displays a dash when the turn count is not available.
* **Direction column.** Shows whether the conversation was inbound or outbound, formatted as a human-readable label. Displays a dash when the direction is not available.
* **All columns are optional.** Framework runs and conversation runs without enrichment data display a dash in each column. No columns are removed or reordered - the new columns appear between the existing columns in the table.

**What you need to do:**

* **No action required.** The new columns appear automatically for all users who can see the Runs table. No configuration changes or new permissions are needed.

</details>

<details>

<summary>v2.201.3 - Developer Console: Operator Takeover - Real Audio Levels, LIVE Banner, and Go-Live Confirmation (July 2026)</summary>

#### Operator Takeover - Real Audio Levels, LIVE Banner, and Go-Live Confirmation <a href="#operator-takeover-real-audio-levels-live-banner-and-go-live-confirmation" id="operator-takeover-real-audio-levels-live-banner-and-go-live-confirmation"></a>

The Command Center now displays real audio levels during operator takeover, shows a prominent LIVE banner when the operator is speaking to the patient, and requires explicit confirmation before going live.

**What changed:**

* **Real audio levels.** The audio meters in the Command Center now reflect actual audio levels from the call instead of synthetic placeholder values. Two meters are displayed: "You" (operator microphone input level) and "Call" (everything the operator hears). The browser-side audio leg cannot separate agent and patient audio, so the outbound meter is labeled "Call" rather than showing fabricated per-party meters.
* **LIVE banner.** When the operator is in takeover mode (speaking directly to the patient), a prominent red banner appears at the top of the Command Center with the text "LIVE - the patient can hear you" and instructions to press Talk again or Mute to stop speaking. The banner is visible for the entire duration the operator's microphone is unmuted to the patient.
* **Go-live confirmation dialog.** Switching from listen mode to takeover mode now requires explicit confirmation through a dialog. The dialog warns that the operator is about to unmute and speak directly to the patient on the live call, and that the agent stops responding while the operator drives the conversation. This confirmation applies both when clicking the Talk button and when using the keyboard shortcut. Switching back from takeover to listen mode (muting) applies immediately with no confirmation, since muting is the safe direction.

**What you need to do:**

* **No action required.** These changes apply automatically to all Command Center sessions. No configuration changes or new permissions are needed.

</details>

<details>

<summary>v2.201.2 - Developer Console: Per-Run Detail Navigation on Unified Runs Table (July 2026)</summary>

#### Per-Run Detail Navigation on Unified Runs Table <a href="#per-run-detail-navigation-on-unified-runs-table" id="per-run-detail-navigation-on-unified-runs-table"></a>

Clicking a row in the unified Runs table now navigates to the run's detail page, restoring the drill-down behavior that existed in the previous separate conversations and calls tables.

**What changed:**

* **Row click opens run detail.** Clicking a conversation run row in the Runs table opens the detail view for that run. Voice conversation runs open the call detail page; non-voice conversation runs open the conversation detail page. This restores the per-run navigation that was available in the pre-unification text conversations and voice calls tables.
* **Framework runs are not clickable.** Framework run rows do not navigate anywhere on click, as framework runs do not yet have a dedicated detail page.

**What you need to do:**

* **No action required.** Row click navigation works automatically. No configuration changes or new permissions are needed.

</details>

<details>

<summary>v2.201.1 - Developer Console: Server-Authoritative Filters and Defensive Rendering on Runs Table (July 2026)</summary>

#### Server-Authoritative Filters and Defensive Rendering on Runs Table <a href="#server-authoritative-filters-and-defensive-rendering-on-runs-table" id="server-authoritative-filters-and-defensive-rendering-on-runs-table"></a>

The unified Runs table now delegates all column filtering to the server and handles unexpected values from the API gracefully.

**What changed:**

* **Column filters are fully server-authoritative.** Kind, channel, and status filters are now applied exclusively by the API. Previously, the table could re-filter rows client-side after the API had already returned the correct result set, which caused rows to disappear when a filter value (such as the virtual "live" status) did not match any client-side row data. Client-side column re-filtering is now off - the table trusts the API response.
* **Defensive badge rendering.** Channel and status badges now fall back gracefully when the API returns a value the current build does not recognize. An unknown channel displays the raw channel value instead of a generic label; an unknown status displays a neutral badge instead of causing a rendering error. This prevents display issues when the API introduces new channels or statuses ahead of a console release.
* **GA voice-channel scoping.** General-availability users continue to see conversation runs excluding voice. Voice conversation rows are now filtered at the display layer as a UX scope guard, consistent with the prior text-conversations scope. This is not a confidentiality boundary - the filter is a UI convenience that mirrors the GA feature set.
* **Pagination stability.** The infinite-scroll pagination counter uses the total loaded row count (before any client-side display filtering) so that the fill-viewport logic and the server's continuation token stay in agreement.

**What you need to do:**

* **No action required.** These are rendering and filtering improvements with no configuration changes or new permissions needed.

</details>

<details>

<summary>v2.201.0 - Developer Console: Unified Runs Table with Server-Side Filters (July 2026)</summary>

#### Unified Runs Table with Server-Side Filters <a href="#unified-runs-table-with-server-side-filters" id="unified-runs-table-with-server-side-filters"></a>

The Runs page now displays a single filterable table over every run in the workspace - context-graph conversations (voice, text, SMS, email, web) and framework runs (partner agent frameworks) - backed by the unified runs endpoint. This replaces the previous three-tab layout.

**What changed:**

* **One table, all runs.** The Runs page under Operations now shows a single table that includes both conversation runs and framework runs. The previous three-tab layout (Text conversations, Voice calls, Framework runs) has been removed.
* **Server-side filters.** Filter dropdowns for Kind (conversation or framework), Channel (voice, text, SMS, email, web), and Status (live, running, paused, completed, failed, timed out) push the selected value down to the API as a server-side filter. Selecting a single value in any dropdown filters at the API level; selecting multiple values filters the loaded rows client-side.
* **Type column.** Each row shows a Type column that displays a channel badge for conversation runs (e.g., Voice, Text, SMS) or a framework badge for framework runs, replacing the separate framework column from the old Framework runs tab.
* **Status badges.** Run statuses are displayed as color-coded badges - running shows an info tone, paused shows warning, completed shows success, and failed or timed-out shows error.
* **Duration column.** Each row shows the elapsed wall-clock duration computed from start and end timestamps. Runs that are still live show a dash.
* **Internal vs. GA visibility.** Internal users (Amigo staff) see all filter axes and all run types. General-availability users are scoped to conversation runs excluding voice - the kind filter is hidden, voice is excluded from the channel filter, and the query is pinned to conversation runs. This mirrors the prior GA "Text conversations" scope.
* **Cursor-based pagination.** The table supports infinite-scroll pagination with opaque continuation tokens. The default page size is 50 runs per page (up from 20 in the previous framework runs tab).
* **Replaces three-tab layout.** The previous tabs (Text conversations backed by the conversations endpoint, Voice calls backed by the calls endpoint, Framework runs backed by the agent-runs endpoint) have been consolidated into one table backed by the unified runs endpoint.

**What you need to do:**

* **No action required.** All runs appear automatically in the unified table. No configuration changes or new permissions are needed. If you previously used the Framework runs or Voice calls tabs, those runs now appear in the same table alongside text conversations, filterable by Kind and Channel.

</details>

<details>

<summary>v2.200.0 - Developer Console: Framework Runs Table on Unified Runs Surface (July 2026)</summary>

#### Framework Runs Table on Unified Runs Surface <a href="#framework-runs-table-on-unified-runs-surface" id="framework-runs-table-on-unified-runs-surface"></a>

The Framework runs tab on the unified Runs page now displays a real data table of framework agent runs (claude-agent-sdk and openai-agents) instead of the previous placeholder. Runs are listed as they execute in the workspace, with pagination support for large result sets.

**What changed:**

* **Framework runs table.** The Framework runs tab under Operations > Runs now shows a table of all framework agent runs in the workspace. Each row displays the framework, status, token usage (input and output), step count, duration, and start time.
* **Status badges.** Run statuses are displayed as color-coded badges - success states show green, error and failure states show red, and unrecognized or missing statuses degrade gracefully to a muted badge rather than causing errors.
* **Token usage display.** Each row shows input and output token counts in a compact format, making it easy to scan token consumption across runs.
* **Cursor-based pagination.** The table supports "Load more" pagination for workspaces with many runs. The page size defaults to 20 runs per page.
* **Replaces placeholder.** The previous placeholder message ("Framework runs aren't listed yet") has been removed. The tab now shows real run data from the durable agent-runs read model.

**What you need to do:**

* **No action required.** Framework runs appear automatically once they execute in your workspace. No configuration changes or new permissions are needed.

</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-02.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.
