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

# Web Platform

Release history for the Amigo web applications. Latest numbered release: **v2.201.96** (July 2026). Newer Developer Console updates without standalone release metadata are listed first and intentionally unnumbered.

{% hint style="info" %}
**Two Web Applications**: The Amigo platform has two frontend applications, each with its own section below:

* **Developer Console**: Platform API management (workspaces, voice agents, pipeline, analytics, surfaces, compliance)
* **Admin Portal**: Classic API management (organizations, agents, conversations, simulations, tools, playground)
  {% endhint %}

## Developer Console

<details>

<summary>Developer Console: Agents Table, Navigation, and Dashboard Polish (July 2026)</summary>

#### Agents Table, Navigation, and Dashboard Polish

The Developer Console received several usability refinements to the Agents list, sidebar navigation, Surfaces section, and the Metrics dashboard.

**What changed:**

* **Agents table column order.** The Agents table now shows the Name column before the Framework column, making agent names visible without horizontal scrolling. The Name column minimum width was increased for readability.
* **Framework badge styling.** Framework badges in the Agents table use a smaller caption style for a cleaner visual density.
* **Surfaces page title corrected.** The Surfaces page now displays the title "Surfaces" instead of the previous "Outreach" label, matching the navigation entry and the section's purpose as patient-facing data-collection forms.
* **Surfaces page description updated.** The page description uses standard sentence punctuation instead of an em dash.
* **Sidebar navigation label.** The sidebar entry for patient-facing forms is now labeled "Surfaces" consistently throughout the console.
* **Metrics dashboard heading.** The embedded metrics overview dashboard no longer renders a redundant heading and subheading inherited from the shared dashboard component, reducing visual noise on the Metrics page.

**What you need to do:**

* **No action required.** These are visual and labeling improvements. No workflows, APIs, or URLs changed.

</details>

<details>

<summary>Developer Console: Metric-First Performance Ledger and Per-Conversation Eval Verdicts (July 2026)</summary>

#### Metric-First Performance Ledger and Per-Conversation Eval Verdicts

The Simulations section now leads with a performance overview organized by metric, and each conversation shows its individual evaluation verdicts.

**What changed:**

* **Performance overview on the simulations landing page.** The simulations list page now includes a performance overview that groups results by metric. Pass rates, score distributions, and trends are visible before drilling into any individual run.
* **Per-conversation eval verdicts.** Run detail pages show evaluation results for each conversation session, including assertion outcomes, metric scores, and justification text. The same verdicts appear on the conversation detail page when viewing a simulation session.
* **Coverage retired as a verdict.** Coverage is no longer treated as an evaluation verdict. Coverage data remains available through the existing coverage views, but it no longer appears alongside pass/fail metric verdicts in simulation results.
* **Agent Readiness page removed.** The Agent Readiness page and its residency-level progression model have been removed from the console navigation. Readiness concepts are superseded by the metric-first performance views in the Simulations section.
* **Navigation updated.** The console sidebar no longer includes the Agent Readiness link. The Simulations section is the primary destination for evaluating agent performance across runs.

**What you need to do:**

* **Use the Simulations performance overview for agent evaluation.** Teams that previously used the Agent Readiness page should use the simulations performance overview and per-conversation eval verdicts to assess agent quality.
* **Update any bookmarks or internal references to Agent Readiness.** The Agent Readiness URL no longer resolves.

</details>

<details>

<summary>Developer Console: Magic-Link Sign-In Always Available (July 2026)</summary>

#### Magic-Link Sign-In Always Available

The passwordless magic-link sign-in option is now always offered on the login page. It no longer depends on a server-side feature gate.

**What changed:**

* **Magic-link always shown.** The login page displays the magic-link sign-in option whenever the authentication configuration has loaded, rather than waiting for a per-environment feature flag. The option appears alongside other sign-in methods such as Google and the local development bypass.
* **Simplified auth configuration response.** The client-side authentication configuration endpoint no longer returns a separate magic-link enablement field. The login page treats magic-link as unconditionally available.
* **No behavioral change for end users.** Users who previously saw the magic-link option continue to see it. Users in environments where the feature gate was not enabled now see it as well.

**What you need to do:**

* **Remove `MAGIC_LINK_ENABLED` from environment configuration.** If your deployment sets this variable, it is no longer read and can be removed. The magic-link option appears regardless of its value.

</details>

<details>

<summary>Developer Console: Browser Voice Test Calls Restored (July 2026)</summary>

#### Browser Voice Test Calls Restored

The Playground now starts browser voice test calls through the current session-allocation flow before connecting microphone audio.

**What changed:**

* **Voice test-call startup updated.** The Playground requests an isolated test session, then connects to the returned voice-session address instead of opening the retired direct connection path.
* **Existing test workflow preserved.** Microphone capture, live observer events, and call inspection continue through the same Playground controls.
* **Clear startup failures.** Allocation or capacity failures appear through the existing test-call error state instead of leaving the call at a failed connection.

**What you need to do:**

* **No action required.** Start browser voice tests from the Playground as before.

</details>

<details>

<summary>Developer Console: Event-Based Trigger Creation Restored (July 2026)</summary>

#### Event-Based Trigger Creation Restored

The trigger creation flow once again supports running an action when a selected workspace event occurs.

**What changed:**

* **Event trigger mode.** The creation form now offers scheduled, event-based, and manual modes.
* **Supported event picker.** Event-based triggers select from the platform's supported workspace events instead of accepting an arbitrary event name.
* **Optional event filter.** Authors can provide an event-filter object alongside the selected event type.
* **Live matching behavior.** Matching events enqueue trigger runs through the existing run history surface. Event intake is at most once and does not replay events missed while matching is unavailable.

**What you need to do:**

* **Review event-based triggers before activation.** Confirm the selected event and filter are narrow enough for the action. Use a separate reconciliation path if every source event must be processed.

</details>

<details>

<summary>Developer Console: Runs Split into Live, All Runs, and Overview Views (July 2026)</summary>

#### Runs Split into Live, All Runs, and Overview Views

The unified Runs workspace now separates the operator queue, full run browser, and aggregate reporting by intent.

**What changed:**

* **Live tab.** Shows only live runs in an urgency-ranked, table-first operator queue. Status is fixed to live, so this view does not show a status filter.
* **All runs tab.** Shows the full filterable run table without urgency styling, even when a user filters the table to live status.
* **Overview tab.** Hosts workspace summary statistics and run distributions without compressing the operational tables.
* **Deep-linkable tabs.** The selected view is stored in `?tab=`. Runs opens All runs by default; Takeover links open Live directly.
* **Legacy link compatibility.** An incoming `?f_status=live` bookmark opens the Live tab and is converted to the current tab URL.

**What you need to do:**

* **Update saved operator links to `?tab=live`.** Existing live-status bookmarks still redirect to the correct view.

</details>

<details>

<summary>Developer Console: Server-Driven API-Key Permissions and Framework Authoring (July 2026)</summary>

#### Server-Driven API-Key Permissions and Framework Authoring

Governance and agent authoring now use the platform's live contracts instead of incomplete local choices.

**What changed:**

* **API-key form uses the permission catalog.** Role defaults and available permissions load from the server. If the catalog cannot load, the form stops with a retry state rather than falling back to a stale matrix.
* **Framework agent registration.** The New Agent flow provides a JSON editor for supported native frameworks, dry-run validation, and registration without leaving the console.
* **Native agent testing.** Registered definitions with a version can launch a framework run from their detail page.
* **World-model scope shown.** Agent detail displays the effective world scope and write floor so authors can review the data boundary before testing.
* **Consistent framework and channel labels.** Pickers, lists, and playground guidance now use the same framework names and channel taxonomy.

**What you need to do:**

* **No action required.** API-key defaults and agent-authoring choices now follow the server automatically.

</details>

<details>

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

#### Unified Run Detail and Takeover Surface

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

**What changed:**

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

**What you need to do:**

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

</details>

<details>

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

#### Dataset-First Customer Data Intake

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

**What changed:**

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

**What you need to do:**

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

</details>

<details>

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

#### Runs Page Redesigned into Live / All Runs / Overview Tabs

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

**What changed:**

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

**What you need to do:**

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

</details>

<details>

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

#### Improved Framework Authoring UX

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

**What changed:**

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

**What you need to do:**

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

</details>

<details>

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

#### Refined Govern Page Hierarchy

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

**What changed:**

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

**What you need to do:**

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

</details>

<details>

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

#### Surface Field Card Layout Improvements

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

**What changed:**

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

**What you need to do:**

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

</details>

<details>

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

#### Govern Surfaces Visual Polish

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

**What changed:**

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

**What you need to do:**

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

</details>

<details>

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

#### Surface Detail Page UX Improvements

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

**What changed:**

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

**What you need to do:**

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

</details>

<details>

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

#### Surfaces Collection Workflow UX Improvements

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

**What changed:**

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

**What you need to do:**

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

</details>

<details>

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

#### Sensorium Availability by Workspace ID and UI Refinements

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

**What changed:**

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

**What you need to do:**

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

</details>

<details>

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

#### Govern Workspace UX Improvements

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

**What changed:**

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

**What you need to do:**

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

</details>

<details>

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

#### Workspace-Scoped Demo Surfaces and Navigation Updates

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

**What changed:**

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

**What you need to do:**

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

</details>

<details>

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

#### Improved Outreach Save Workflow

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

**What changed:**

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

**What you need to do:**

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

</details>

<details>

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

#### Unified Takeover Surface

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

**What changed:**

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

**What you need to do:**

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

</details>

<details>

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

#### Takeover Entry Point on Run Detail Page

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

**What changed:**

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

**What you need to do:**

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

</details>

<details>

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

#### Performance Page Link Relabeled

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

**What changed:**

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

**What you need to do:**

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

</details>

<details>

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

#### Escalation Triage Folded into Runs Live

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

**What changed:**

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

**What you need to do:**

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

</details>

<details>

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

#### Urgency-First Escalation Triage

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

**What changed:**

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

**What you need to do:**

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

</details>

<details>

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

#### Dataset-First Intake Workspace

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

**What changed:**

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

**What you need to do:**

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

</details>

<details>

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

#### Escalations Table Unified with Operator Roster

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

**What changed:**

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

**What you need to do:**

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

</details>

<details>

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

#### Operator Surfaces Adopt Design-System Components

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

**What changed:**

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

**What you need to do:**

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

</details>

<details>

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

#### Eval Quality Panel on the Metrics Page

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

**What changed:**

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

**What you need to do:**

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

</details>

<details>

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

#### Improve Section IA - Workspace-Switch Context and PageShell Migration

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

**What changed:**

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

**What you need to do:**

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

</details>

<details>

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

#### Improve Section UX - Quality Polarity, KPI Fixes, and Dashboard Polish

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

**What changed:**

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

**What you need to do:**

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

</details>

<details>

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

#### Generalized Data Visualization and Distribution Ribbons

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

**What changed:**

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

**What you need to do:**

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

</details>

<details>

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

#### Operate Surface Cleanup - Dead Routes and Code Removed

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

**What changed:**

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

**What you need to do:**

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

</details>

<details>

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

#### Operator Guidance in the Voice Takeover Drawer

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

**What changed:**

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

**What you need to do:**

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

</details>

<details>

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

#### Improve Section Reordered to Follow the Analyst's Path

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

**What changed:**

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

**What you need to do:**

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

</details>

<details>

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

#### Operator Nav Label Corrected to "Review Queue"

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

**What changed:**

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

**What you need to do:**

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

</details>

<details>

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

#### Runs Surface Now Uses the Platform SDK

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

**What changed:**

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

**What you need to do:**

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

</details>

<details>

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

#### Command Center Retired in Favor of Unified Runs Live View

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

**What changed:**

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

**What you need to do:**

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

</details>

<details>

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

#### Server-Driven API Key Permission Form

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

**What changed:**

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

**What you need to do:**

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

</details>

<details>

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

#### Framework Run Trajectory View

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

**What changed:**

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

**What you need to do:**

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

</details>

<details>

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

#### Unified Agent Authoring UX and Channel Taxonomy

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

**What changed:**

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

**What you need to do:**

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

</details>

<details>

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

#### Scalable Upload-Link Flow with Pagination and Confirmation

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

**What changed:**

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

**What you need to do:**

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

</details>

<details>

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

#### EHR Sync Routed Through Tools

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

**What changed:**

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

**What you need to do:**

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

</details>

<details>

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

#### Unified Run Detail Page

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

**What changed:**

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

**What you need to do:**

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

</details>

<details>

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

#### Non-Voice Takeover Composer on Runs Page

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

**What changed:**

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

**What you need to do:**

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

</details>

<details>

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

#### Operate Section Renamed to "Runs" and Takeover Points to Live View

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

**What changed:**

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

**What you need to do:**

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

</details>

<details>

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

#### Coverage Map Tab Removed - Single Overview

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

**What changed:**

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

**What you need to do:**

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

</details>

<details>

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

#### Runs Table Multi-Value Filters Pushed Server-Side

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

**What changed:**

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

**What you need to do:**

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

</details>

<details>

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

#### Coverage State Graph Rendered as SVG

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

**What changed:**

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

**What you need to do:**

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

</details>

<details>

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

#### Calls and Conversations Lists Redirect to Unified Runs

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

**What changed:**

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

**What you need to do:**

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

</details>

<details>

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

#### Context Graph State Types Aligned with Backend

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

**What changed:**

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

**What you need to do:**

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

</details>

<details>

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

#### Query Explorer Table Corrections and Live Takeover Transcript

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

**What changed:**

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

**What you need to do:**

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

</details>

<details>

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

#### Outreach Overview and Rule Card Label Corrections

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

**What changed:**

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

**What you need to do:**

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

</details>

<details>

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

#### Data Surface Accuracy Fixes

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

**What changed:**

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

**What you need to do:**

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

</details>

<details>

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

#### Page Titles Aligned with Navigation Labels

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

**What changed:**

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

**What you need to do:**

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

</details>

<details>

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

#### Coverage Map Rebuilt as State-Transition Graph

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

**What changed:**

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

**What you need to do:**

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

</details>

<details>

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

#### Voice Takeover Re-keyed to Run Identifier

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

**What changed:**

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

**What you need to do:**

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

</details>

<details>

<summary>v2.201.48 - Developer Console: Coverage Overview and Graph Reskin (July 2026)</summary>

#### Coverage Overview and Graph Reskin

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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>

<details>

<summary>v2.199.0 - Developer Console: Honest Raw-Transcript Fallback for Voice Conversation Detail (July 2026)</summary>

#### Honest Raw-Transcript Fallback for Voice Conversation Detail

The voice conversation detail page now detects when per-turn transcripts are unavailable and displays the raw recognized transcript honestly instead of rendering a single misleading system message.

**What changed:**

* **Raw-transcript fallback detection.** When a voice call's turn-by-turn log was not retained (the live session expired and no durable per-turn record was found), the platform previously displayed a single system message containing the entire recognized transcript. This appeared as one chat bubble labeled "System" even when the call had many turns, which was misleading. The detail page now detects this condition and renders a dedicated notice instead.
* **Transcript notice panel.** When the fallback is detected, the page shows a notice explaining that per-turn transcripts are unavailable, states how many turns the call actually had, and displays the raw recognized transcript in a clearly labeled block. If no transcript was recorded, the panel indicates that as well.
* **No change to normal calls.** Calls with full per-turn transcripts continue to render the standard turn-by-turn conversation view.

**What you need to do:**

* **No action required.** The fallback detection and notice are automatic. No configuration changes or new permissions are needed.

</details>

<details>

<summary>v2.198.0 - Developer Console: World-Model Lens on Conversation Detail (July 2026)</summary>

#### World-Model Lens on Conversation Detail

The conversation detail page now includes a world-model interaction panel and framework attribution, giving operators an aggregate view of how the agent read and wrote against the world model during a conversation.

**What changed:**

* **World-model interaction panel.** The text conversation detail view now shows a dedicated panel summarizing the conversation's world-model activity: total reads and writes, which tools were used for each, the anchor entity, and any failed tool calls. This is an aggregate view across all turns - the transcript still shows tool calls turn by turn.
* **Capabilities and write-floor panel.** Alongside the interaction summary, a second panel displays the harness capabilities and enforced write floor for the bound service, including the available read and write tools and the clinical write principal. If no service is bound to the conversation, the panel indicates that capabilities cannot be resolved.
* **Framework attribution badge.** Each conversation now displays a framework badge on the detail page header, identifying which runtime produced the conversation. All conversations through the standard conversation path are attributed to the context-graph framework.

**What you need to do:**

* **No action required.** The new panels appear automatically on the text conversation detail page. No configuration changes or new permissions are needed.

</details>

<details>

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

#### Unified Runs Surface

The Developer Console now has a unified Runs page that brings text conversations, voice calls, and framework runs into a single surface with tabbed navigation. This replaces the separate Conversations and Agent Trace sidebar entries with one "Runs" entry under Operations.

**What changed:**

* **New Runs page.** A new page at `/{workspace}/runs` provides a tabbed view of all agent runs. The Text conversations tab is available to all users and shows the same conversations table previously found under the standalone Conversations page. The Voice calls and Framework runs tabs are visible to Amigo staff only (matching the previous Agent Trace visibility gate).
* **Sidebar updated.** The Operations section now leads with "Runs" instead of separate "Conversations" and "Agent Trace" entries. The Runs entry highlights when you are on the Runs page, the Conversations page, or the Agent Trace page, so existing bookmarks and deep links continue to work.
* **Agent Trace still accessible.** The Agent Trace page remains at its existing URL and continues to show the voice call review list. It is no longer a separate sidebar entry - voice call review is accessed through the Voice calls tab on the Runs page instead.
* **Framework runs placeholder.** The Framework runs tab displays a placeholder indicating that framework runs from partner SDKs are not yet listed in this surface. Individual runs remain inspectable through the API and the Framework Runs panel under Evaluation.

**What you need to do:**

* **No action required.** All existing URLs continue to work. The Conversations page and Agent Trace page are still accessible at their original paths. The sidebar navigation has been consolidated, but no functionality has been removed.

</details>

<details>

<summary>v2.196.0 - Developer Console: Unified Testing Under Evaluation + Voice Library Moved to Tools (July 2026)</summary>

#### Unified Testing Under Evaluation + Voice Library Moved to Tools

The Developer Console sidebar has been reorganized so all testing and evaluation surfaces live under a single Evaluation section, and the Voice Library has moved from the Agents section to the Tools section.

**What changed:**

* **Playground moved to Evaluation.** The Playground now lives under the Evaluation section (subtitled "Try, test, and measure agent quality") rather than Operations. This gives "where do I test my agent?" a single answer - the Playground, simulations, case libraries, and quality metrics are all grouped together.
* **Operations updated.** The Operations section (subtitled "Watch live and past runs") now leads with Runs (the unified run surface that replaced the separate Conversations and Agent Trace entries). Playground is no longer listed here.
* **Voice Library moved to Tools.** The Voice Library has moved from the Agents section to the Tools section (subtitled "Capabilities agents use - tools, skills, integrations, voices"). Voice assets are capabilities that agents use, so they sit alongside tools, skills, and integrations.

**What you need to do:**

* **No action required.** This is a navigation reorganization only. All pages remain at the same URLs. No workflows, API interactions, or functionality have changed - only the sidebar grouping has been updated.

</details>

<details>

<summary>v2.195.0 - Developer Console: Plain-Language Section Descriptions in Sidebar (July 2026)</summary>

#### Plain-Language Section Descriptions in Sidebar

The Developer Console sidebar now displays a short, plain-language subtitle beneath each navigation section header, so a new enterprise admin can understand the purpose of each section at a glance without needing to learn platform-specific terminology.

**What changed:**

* **Section descriptions added.** Every top-level navigation group in the sidebar now shows a one-line description beneath its title. For example, the Agents section reads "Build agents on any framework," the Tools section reads "Capabilities agents use - tools, skills, integrations, voices," and the Evaluation section reads "Try, test, and measure agent quality."
* **Hidden when collapsed.** When the sidebar is collapsed to icon-only mode, the descriptions are hidden along with the section titles, keeping the compact view uncluttered.
* **All sections covered.** Descriptions are provided for Home, Agents, Tools, World Model, Operations, Deployment, Evaluation, Engagement, Data, Governance, Sensorium, Workspace, Admin, and Conversations (operator view).

**What you need to do:**

* **No action required.** This is a display-only enhancement to the sidebar navigation. No URLs, workflows, or API interactions have changed.

</details>

<details>

<summary>v2.194.0 - Developer Console: Per-Service World Model and Capabilities Panel (July 2026)</summary>

#### Per-Service World Model and Capabilities Panel

The agent detail page now includes a World Model & Capabilities panel that shows the tools and world-model scope an agent binds to when deployed in a given service. Because tool bindings in the Amigo Agent Framework are service-scoped, the panel lets you select one of the agent's referencing services and inspect its harness context.

**What changed:**

* **New World Model & Capabilities card.** The agent detail page now displays an expandable card below the version list. When the agent is deployed in at least one service, the card shows the harness context for the selected service - read tools, write tools, clinical write principal, clinical scope, and enforcement point.
* **Service selector.** A dropdown at the top of the card lets you switch between services that reference the agent. The panel fetches the harness context for the selected service and updates the displayed tools and write-floor information.
* **Empty state guidance.** If the agent is not deployed in any service, the card displays a message explaining that tools bind per service and that deploying the agent in a service will populate this panel.

**What you need to do:**

* **No action required.** This is a display-only enhancement to the existing agent detail page. No URLs, workflows, or API interactions have changed.

</details>

<details>

<summary>v2.193.0 - Developer Console: Framework Badge on Service Detail (July 2026)</summary>

#### Framework Badge on Service Detail

The Service detail page now displays the framework of the bound agent directly in the Linked Resources card, so you can see which framework powers the service without navigating to the agent detail page.

**What changed:**

* **Framework badge in Linked Resources.** The Service detail page now includes a Framework row in the Linked Resources card, showing a branded framework badge for the agent bound to the service. This surfaces the same framework information available on the agent detail and unified agents list, but in the context of the service that deploys it.

**What you need to do:**

* **No action required.** This is a display-only enhancement to the existing Service detail page. No URLs, workflows, or API interactions have changed.

</details>

<details>

<summary>v2.192.0 - Developer Console: Agent Detail Redesign Phase 2 - Framework Badge and Capabilities (July 2026)</summary>

#### Agent Detail Redesign Phase 2 - Framework Badge and Capabilities

The agent detail pages now surface framework information and native capabilities directly, closing two visibility gaps in the agent detail experience.

**What changed:**

* **Framework badge on platform agent detail.** The agent sidebar now displays the framework badge for platform agents, so the authoring framework is visible without navigating back to the agent list.
* **Capabilities card on native agent definition detail.** The definition detail page now includes a Capabilities section that displays the world tools allowed by the definition's latest version. If the definition has no versions yet, the card indicates that capabilities are defined per version. If the latest version allows no world tools, the card states that explicitly.
* **Version-level capability resolution.** Capabilities are fetched from the latest version of the definition, reflecting the fact that allowed world tools are authored per version for native definitions.

**What you need to do:**

* **No action required.** These are display-only enhancements to existing detail pages. No URLs, workflows, or API interactions have changed.

</details>

<details>

<summary>v2.191.0 - Developer Console: Unified Agents List (July 2026)</summary>

#### Unified Agents List

The Agents page now shows a single, unified list of agents across all four supported frameworks - Amigo Agent Framework, OpenAI SDK, Anthropic SDK, and OpenAI Realtime - replacing the previous split between the Agents list and the separate Native Agents registry page.

**What changed:**

* **Unified agent table.** The Agents page now merges platform agents and native (bring-your-own-framework) agent definitions into a single table. Each row displays the agent's framework (with branded badge), name, status, and last-updated time. Clicking a row navigates to the appropriate detail page based on the agent's framework.
* **Framework filter.** A new framework dropdown above the table lets you filter agents by framework (All frameworks, Amigo Agent Framework, OpenAI SDK, Anthropic SDK, OpenAI Realtime). Client-side search by name or ID is also available.
* **New Agent button with framework picker.** A "New Agent" button opens a dialog where you choose which framework to author on. Each option shows the framework badge and a short description of the authoring path, then routes you to the corresponding authoring surface (Context Graphs for Amigo Agent Framework, Native Agents registry for OpenAI SDK and Anthropic SDK, Services for OpenAI Realtime).
* **Native Agents sidebar item removed.** The separate "Native Agents" navigation item has been removed from the sidebar. Native agent definitions are now accessed through the unified Agents list. The agent-definitions detail route is still reachable by clicking a native agent row, and the sidebar keeps the Agents item active when viewing a native definition detail page.
* **Updated page description.** The Agents page description now reflects the multi-framework scope: "Agents across every framework - Amigo Agent Framework, OpenAI SDK, Anthropic SDK, and OpenAI Realtime."
* **Agent definition detail improvements.** The definition detail page now includes a copy button next to the definition ID and uses improved typography for the empty-versions state. The back button label has been simplified from "Back to Native Agents" to "Back to Agents."
* **Truncation indicator.** When the number of agents from any single source exceeds the display limit, a note appears below the table indicating that results are capped and suggesting the framework filter or search to narrow results.

**What you need to do:**

* **No action required.** All existing pages remain at the same URLs. The Native Agents detail pages are still accessible; only the sidebar entry point and the list page have changed. If you had bookmarked the Native Agents list page, use the main Agents page instead and filter by framework.

</details>

<details>

<summary>v2.190.0 - Developer Console: Layered Navigation and Framework Branding (July 2026)</summary>

#### Layered Navigation and Framework Branding

The Developer Console sidebar navigation has been further refined to express a layered stack - Frameworks, Capabilities, World Model - and framework references throughout the console now display branded logos alongside their labels.

**What changed:**

* **Layered sidebar navigation.** The sidebar sections now express a three-layer stack that separates what agents are built on, what they can do, and what they act on:
  * **Agents** (Frameworks layer) - Author an agent on any of the four supported frameworks. Includes the agent list, Native Agents registry, Context Graphs, and Voice Library.
  * **Tools** (Capabilities layer) - What agents can do. Tools, Skills, and Integrations are consolidated here. Skills and Integrations are accessible via the Tools page tab bar and the command palette; the sidebar entry point is "Tools."
  * **World Model** (Substrate layer) - The durable state agents act on. Agent Memory and Entity Browser live here. Tools have moved up to the new Tools section.
  * **Operations** - Observe and operate what agents are doing, live and historical. Playground, Conversations, Trace, and Review live here. This section was previously named "Runs."
  * **Evaluation** - Test and measure agent quality. Simulations, case libraries, and related items live here. Previously named "Simulations."
  * **Engagement** - Proactive outreach and patient-facing surfaces. Previously named "Outbound."
  * **Governance** - Compliance posture and audit trail. Previously named "Reports."
* **Framework logos and branded labels.** Agent definitions, the definitions table, and run detail now display a framework logo alongside each framework name. The four supported frameworks display as "Amigo Agent Framework," "OpenAI SDK," "Anthropic SDK," and "OpenAI Realtime" with their respective brand marks. Previously, frameworks were shown as plain text badges.
* **Consistent framework label taxonomy.** Framework labels are now sourced from a single taxonomy across all console surfaces (agent definitions list, definition detail, run results). The labels "Claude Agent SDK" and "OpenAI Agents SDK" have been renamed to "Anthropic SDK" and "OpenAI SDK" respectively for consistency with the vendor brand names.
* **Integrations moved from Workspace to Tools.** The Integrations palette entry has moved from the Workspace section to the Tools section, reflecting its role as a capability rather than a workspace setting.

**What you need to do:**

* **No action required.** All existing pages remain at the same URLs. The changes affect sidebar navigation grouping, section names, and framework display formatting. No workflows or endpoints have changed.

</details>

<details>

<summary>v2.189.0 - Developer Console: Framework-Agnostic Navigation and Native Agents Registry (July 2026)</summary>

#### Framework-Agnostic Navigation and Native Agents Registry

The Developer Console sidebar navigation has been reorganized to reflect the framework-agnostic world-model architecture, and a new Native Agents registry page lets you browse and inspect bring-your-own-framework agent definitions.

**What changed:**

* **Reorganized sidebar navigation.** The sidebar sections now follow a framework-agnostic information architecture. The previous section ordering (Home, Agents, Conversations, Simulations, Outbound, Data, Reports, Workspace) has been replaced with a structure that separates authoring, world model, runs, and deployment concerns:
  * **Agents** - Author agents of any framework. Includes the agent list, the new Native Agents registry, Context Graphs, and Voice Library.
  * **World Model** - The substrate agents bind to. Tools, Agent Memory, and Entity Browser now live here (previously under Agents or Data).
  * **Runs** - What agents did, regardless of framework. Playground, Conversations, Trace, and Review live here. This section was previously named "Conversations."
  * **Deployment** - Binding an agent to channels. Services has moved here from the Agents section.
* **New Native Agents page.** A new "Native Agents" item in the Agents section opens a registry of bring-your-own-framework agent definitions (Claude Agent SDK, OpenAI Agents SDK). The list page shows each definition's name, framework, and status with infinite-scroll pagination. Clicking a definition opens a detail page showing the definition metadata, all immutable versions, and per-version details (agent count, write-tool indicator, validator revision, and body hash).
* **Agent Memory and Entity Browser moved to World Model.** These items previously appeared under the Data section. They now sit under World Model alongside Tools, reflecting their role as the world state that agents read and write.
* **Services moved to Deployment.** The Services item previously appeared under Agents. It now sits under Deployment, separating the concern of authoring an agent from deploying one.

**What you need to do:**

* **No action required.** All existing pages remain at the same URLs. The changes affect only sidebar navigation grouping and ordering. The new Native Agents pages are available automatically.

</details>

<details>

<summary>v2.188.0 - Developer Console: Framework Runs - Native Definition Runs and Actor Badges (July 2026)</summary>

#### Framework Runs - Native Definition Runs and Actor Badges

The Framework Runs panel on the service detail page now supports launching native agent definition runs and displays actor attribution badges on trajectory steps.

**What changed:**

* **Run source selector.** A new Source dropdown at the top of the Framework Runs form lets you choose between two run modes: "This service's agent" (the existing platform run path) and "Native definition (bring your own)" (a new native run path). Platform runs remain the default.
* **Native definition runs.** When you select the native source, the framework and version set fields are replaced by a free-form JSON editor where you paste your own agent definition document. The definition must include a `framework` field and conform to the platform's clamp schema. Invalid JSON is caught client-side before submission; server-side validation returns detailed errors for schema violations.
* **Actor badges on trajectory steps.** Each trajectory step now shows an actor badge when the step includes actor attribution. In multi-agent runs (handoff graphs, subagent delegations), this badge identifies which agent within the definition produced the step, making cross-agent trajectories easier to read.
* **SDK updated to 0.86.0.** The platform SDK dependency has been updated to 0.86.0, which includes the native run request shape and optional framework field.

**What you need to do:**

* **No action required.** The source selector, native config editor, and actor badges appear automatically on the Framework Runs panel. To try a native run, switch the source to "Native definition," paste a valid definition JSON, enter a message, and launch the run.

</details>

<details>

<summary>v2.187.0 - Developer Console: Framework Runs - Cache Token Usage and Two-Column Form Layout (July 2026)</summary>

#### Framework Runs - Cache Token Usage and Two-Column Form Layout

The Framework Runs panel on the service detail page now displays granular cache token usage and uses a more compact two-column form layout.

**What changed:**

* **Cache token usage in run results.** When a completed run includes cache-read or cache-write token counts, the token usage line now shows these alongside standard input and output counts (e.g., "Tokens: 150 in - 200 out - 1,000 cache read - 500 cache write"). Cache entries appear only when non-zero, so runs without caching remain compact.
* **Two-column form layout.** The Framework and Version Set fields now sit side by side on wider screens, matching the form layout conventions used elsewhere on the service page. The message field retains full width below.
* **SDK updated to 0.85.0.** The platform SDK dependency has been updated to 0.85.0, which includes the cache token fields in the run usage model.

**What you need to do:**

* **No action required.** The updated layout and cache token display appear automatically on the Framework Runs panel.

</details>

<details>

<summary>v2.186.0 - Developer Console: Framework Runs Panel on Service Detail Page (July 2026)</summary>

#### Framework Runs Panel on Service Detail Page

The service detail page in the Developer Console now includes a Framework Runs panel that lets you dispatch and monitor partner-framework agent runs directly from the console.

**What changed:**

* **New Framework Runs card.** A new card appears on the service detail page with a form to launch an agent run against an external framework. You select a framework (Claude Agent SDK or OpenAI Agents SDK), specify a version set (defaults to `release`), enter a user message, and click Launch Run.
* **Live run polling.** After dispatch, the panel polls the run status automatically. While the run is in progress, a spinner and status badge indicate the current state. Polling stops when the run reaches a terminal status (succeeded, failed, or timed out).
* **Run results inline.** When a run completes, the panel displays the outcome - status badge, framework label, duration, token usage (input and output), and the agent's final text for successful runs. Failed and timed-out runs show the error message.
* **Trajectory steps.** If the run produced trajectory steps, they are listed below the result with step kind badges and content previews, so you can see the sequence of actions the framework agent took.
* **Framework selection.** The framework dropdown lists the two supported frameworks with human-readable labels. The default selection is Claude Agent SDK.

**What you need to do:**

* **No action required.** The Framework Runs panel appears automatically on every service detail page. Select a framework, enter a message, and launch a run to test your service's agent configuration against an external framework.

</details>

<details>

<summary>v2.185.0 - Developer Console: Background Tools Fleet Capacity Widget on Active Calls Page (July 2026)</summary>

#### Background Tools Fleet Capacity Widget on Active Calls Page

The Active Calls page in the Developer Console now displays a second fleet capacity widget showing the isolated background-tool runner fleet alongside the existing voice fleet widget.

**What changed:**

* **Background Tools fleet widget.** A new fleet capacity strip labeled "Background Tools Fleet" appears below the existing Voice Fleet Capacity strip on the Active Calls page. It shows the same capacity metrics - ready, allocated, total, headroom - but scoped to the isolated fleet that executes background tool runs.
* **Distinct labels.** The allocated count on the background-tools widget is described as "running tools" rather than "live calls" to reflect what the fleet handles. The title reads "Background Tools Fleet" instead of "Voice Fleet Capacity."
* **Independent polling.** Each widget polls its fleet independently on the same interval, and the two widgets never share cached data, so the numbers always reflect the correct fleet.

**What you need to do:**

* **No action required.** The widget appears automatically on the Active Calls page. Operators monitoring fleet capacity now see both fleets at a glance.

</details>

<details>

<summary>v2.184.0 - Developer Console: Destinations Tab in Intake - Trigger Customer Data Materialization (July 2026)</summary>

#### Destinations Tab in Intake

The Intake tab under Data Sources now includes a Destinations segment that shows each dataset's materialized destination table and lets you trigger the customer data materializer directly from the console.

**What changed:**

* **New Destinations segment.** A fifth segment - Destinations - has been added to the Intake tab (alongside Uploads, Schemas, Sources, and Batches). It lists every registered dataset with its ingestion mode (snapshot or document), materialization status, row count, and last-materialized time.
* **Per-dataset materialization.** Each dataset row includes a Materialize button that triggers materialization for that single dataset. A toast notification confirms the run was started.
* **Materialize all curated.** A top-level "Materialize all curated" button triggers materialization for every curated dataset in the workspace in a single run.
* **Refresh.** A Refresh button reloads the destinations list so you can check for updated row counts and timestamps after a run completes.
* **Async feedback.** Materialization runs asynchronously. The UI indicates which dataset (or all datasets) is being materialized and disables additional triggers until the current request completes. Errors are surfaced in a toast notification.

**What you need to do:**

* **No action required.** The Destinations segment is available automatically. Navigate to Data Sources, open the Intake tab, and select the Destinations segment to view and trigger materialization.

</details>

<details>

<summary>v2.183.0 - Developer Console: Live Agent Messages After Deferred Tool Completion in Text Playground (July 2026)</summary>

#### Live Agent Messages After Deferred Tool Completion in Text Playground

When a deferred tool completes in the background and the agent produces a follow-up message outside the normal turn cycle, that message now appears live in the text playground conversation timeline - without waiting for the next user turn or a page refresh.

**What changed:**

* **Out-of-band agent messages rendered live.** After a deferred (background) tool completes, the agent may narrate a follow-up answer outside the synchronous turn cycle. Previously, this message only appeared after a page refresh or the next user turn. Now it appears in the conversation timeline as soon as the platform delivers it.
* **Workspace event stream subscription.** The playground subscribes to workspace-level agent message events alongside the existing background completion events. Messages belonging to a different conversation or arriving after the session ends are silently ignored.
* **Deduplication at render.** If the agent's out-of-band message echoes text already shown from a synchronous turn reply, the duplicate is suppressed at render time so messages are never shown twice.
* **On-turn refresh as catch-up.** The existing on-turn refresh path continues to serve as a catch-up mechanism, so no messages are lost even if the live event is missed.

**What you need to do:**

* **No action required.** The change is automatic. Deferred tool completions that trigger agent follow-up messages now surface immediately in the text playground.

</details>

<details>

<summary>v2.182.0 - Developer Console: Tool Dispatch Axes on Context Graph Bindings; Delivery Removed from Skill Editor (July 2026)</summary>

#### Tool Dispatch Axes on Context Graph Bindings

Tool bindings in the context graph editor now expose three orthogonal dispatch axes - Execution, Delivery, and Lifecycle - alongside the existing Result persistence selector. Delivery mode has been removed from the skill creation form because it is now authored per state-tool binding on the context graph.

**What changed:**

* **Three dispatch axes per tool binding.** Each tool attached to a context graph state now shows four selectors in a grid: Execution (Blocking or Background), Delivery (Interrupt or Queue), Lifecycle (Independent or Coupled), and Result (Accumulate or Override). These replace the previous single Result persistence dropdown.
* **Sensible defaults.** New tool bindings default to Blocking / Interrupt / Independent / Accumulate, which reproduces the historical inline behavior. Existing graphs that do not set these fields behave identically to before.
* **Background + Queue prevented.** Selecting Background execution automatically snaps Delivery back to Interrupt and disables the Queue option, because a backgrounded result that is queued would never reach the user.
* **Coupled lifecycle explanation.** Selecting Coupled lifecycle displays an inline note: if the conversation moves on before the tool finishes, its result is dropped instead of folded in. This applies to text channels only - voice keeps its own call-teardown rule.
* **Delivery removed from skill editor.** The Delivery dropdown (Interrupt / Queue) has been removed from the skill creation form. Delivery is now controlled per tool binding in the context graph, not on the skill itself.
* **Sparse storage.** Dispatch axes at their default values are omitted from the stored configuration, keeping stored context graph versions compact.

**What you need to do:**

* **No action required for existing graphs.** Defaults match the previous behavior. Existing tool bindings without explicit dispatch axis values continue to work as before.
* **Review skill templates.** If you relied on the skill-level Delivery setting, note that delivery is now configured per tool binding in the context graph editor.

</details>

<details>

<summary>v2.181.0 - Developer Console: Sortable "Uploaded at" Column in Intake Files List (July 2026)</summary>

#### Sortable "Uploaded at" Column in Intake Files List

The Files list in the Intake tab now lets you sort by upload time, so you can quickly find the most recent or oldest uploads.

**What changed:**

* **Sortable column header.** The "Uploaded at" column header is now a toggle button. Clicking it switches between newest-first and oldest-first sort order. A directional arrow on the header indicates the current sort direction.
* **Newest-first by default.** The Files list defaults to newest-first, so recently uploaded files and version bumps appear at the top.
* **Client-side sorting.** Sorting applies across the full file set loaded in the browser, so toggling the sort direction is instant and does not trigger a new data fetch.
* **No action required.** The change is automatic. The Files list now supports sort toggling without any configuration changes.

</details>

<details>

<summary>v2.180.0 - Developer Console: Graceful Handling of Large Folder Sync Timeouts in Intake (July 2026)</summary>

#### Graceful Handling of Large Folder Sync Timeouts in Intake

Syncing a large external drive source no longer shows a "Sync failed" error when the operation takes longer than the gateway allows. The sync continues in the background and the UI now tells you so.

**What changed:**

* **Informational toast instead of error.** When syncing a large drive source takes longer than the gateway timeout, the Developer Console now shows a "Sync still running" informational toast instead of a "Sync failed" error. The message explains that discovery is finishing in the background and suggests checking the Batches tab or refreshing shortly.
* **Batches list refreshed on timeout.** When a sync times out, the Batches list is automatically refreshed so the batch created server-side appears without requiring a manual page reload.
* **Genuine failures still surface as errors.** Actual sync failures - such as missing credentials, authorization errors, or missing sources - continue to show the "Sync failed" error toast as before. Only gateway timeouts are reclassified as informational.
* **No action required.** The change is automatic. Large drive source syncs that previously appeared to fail will now display accurate status without any configuration changes.

</details>

<details>

<summary>v2.179.0 - Developer Console: Live Background Tool Results in Text Playground (July 2026)</summary>

#### Live Background Tool Results in Text Playground

Background skill completions now appear in the text playground conversation timeline the instant they finish, without waiting for the next turn.

**What changed:**

* **Live delivery.** When a background skill completes during an active text playground session, the result is pushed into the conversation timeline immediately. Previously, background completions only appeared after the next turn was sent. The playground now subscribes to workspace-level completion events and renders each result as soon as it arrives.
* **Task-based correlation.** Each background completion is matched to its original dispatch by a stable task-based key. Completions that belong to a different conversation or arrive after the session has ended are silently dropped, so stale results never appear in the wrong session.
* **On-turn catch-up preserved.** The existing path that drains background completions on the next turn remains active as a catch-up mechanism. If a completion event is missed (for example, due to a brief network interruption), it is still picked up when the next turn is sent.
* **No action required.** The change is automatic. Background skills configured with background execution will show results live in the text playground without any configuration changes.

</details>

<details>

<summary>v2.178.0 - Developer Console: Fleet Capacity Widget Labeled as Platform-Wide (July 2026)</summary>

#### Fleet Capacity Widget Labeled as Platform-Wide

The Voice Fleet Capacity widget on the Active Calls page now clearly indicates that capacity counts span all workspaces, not just the current one.

**What changed:**

* **Platform-wide label.** The widget title now reads "Voice Fleet Capacity - all workspaces" to make it clear that the counts reflect the shared platform-wide pool, not workspace-scoped resources.
* **Allocated description updated.** The "Allocated" metric description now reads "live calls - all workspaces" instead of "live calls."
* **Explanatory caption.** A caption below the widget explains that the fleet is a shared platform-wide pool - the counts span every workspace, not just the current one. Headroom represents the total remaining isolated-call capacity across the fleet.
* **No action required.** The change is cosmetic. No configuration or workflow changes are needed.

</details>

<details>

<summary>v2.177.0 - Developer Console: Paginated Files List in Intake Tab (July 2026)</summary>

#### Paginated Files List in Intake Tab

The Files list in the Intake tab now loads all files across multiple pages, removing the previous cap of 50 files.

**What changed:**

* **Full file list loading.** The Files list now automatically fetches all pages of files for the workspace. Previously, only the first 50 files were displayed, which meant datasets with more than 50 files - such as those synced from an external drive source - showed an incomplete list. The list now loads all pages progressively so that client-side search and status filters operate on the complete file set.
* **No action required.** The change is automatic. Workspaces with more than 50 files in their intake datasets will now see the full list without any configuration changes.

</details>

<details>

<summary>v2.176.0 - Developer Console: Document Source Origin in Files List (July 2026)</summary>

#### Document Source Origin in Files List

The Files list in the Intake tab now shows where each document originated, so operators can distinguish between documents synced from external cloud storage and documents uploaded manually.

**What changed:**

* **Source column added.** The Files list now includes a Source column that displays the origin of each document. Documents synced from an external drive source display "Drive" with a link to the original file in the source system. Manually uploaded documents display "Upload". Documents without a known origin display a dash.
* **Link to source file.** For drive-synced documents, the Source column entry links directly to the file in the external storage system, so operators can quickly navigate to the original source. The external file identifier is shown as a tooltip for reference.
* **No action required.** The Source column appears automatically in the Files list. No configuration changes are needed.

</details>

<details>

<summary>v2.175.0 - Developer Console: Google Drive Sources and Batches in Intake Tab (July 2026)</summary>

#### Google Drive Sources and Batches in Intake Tab

The Intake tab in the Developer Console now includes Sources and Batches segments for connecting external cloud storage folders to datasets and managing file discovery batches.

**What changed:**

* **Sources segment.** A new Sources view lists registered external data sources with their mapped datasets, connection status (Active, Disabled, Error), and creation timestamp. Each source row includes a Sync Now action that triggers file discovery for the source's configured folders.
* **Add Drive Source dialog.** A new dialog lets operators register an external source by providing a display name and one or more folder-to-dataset mappings. Each mapping accepts a folder identifier (or a full folder URL, which is automatically parsed to extract the identifier) and a dataset slug. The dialog validates that folder identifiers and dataset slugs conform to the expected format and that dataset slugs are unique within the source. Source credentials are provisioned out-of-band and are not part of the registration payload.
* **Batches segment.** A new Batches view lists file discovery batches with their dataset, status (Discovered, Ready, Processing, Completed, Failed), file count, and discovery timestamp. Batches in Ready status display a Start Processing action that triggers extraction for all files in the batch.
* **Segmented control updated.** The Intake tab segmented control now includes four segments: Uploads, Schemas, Sources, and Batches. Each segment is deep-linkable via the `segment` query parameter.
* **Refresh controls.** Both the Sources and Batches views include a Refresh button for manual data reload.

**What you need to do:**

* **No action required.** The new segments appear automatically in the Intake tab. To connect an external source, navigate to Data Sources, select the Intake tab, switch to the Sources segment, and click Add Drive source.

</details>

<details>

<summary>v2.174.0 - Developer Console: Voice Fleet Capacity Widget on Active Calls Page (July 2026)</summary>

#### Voice Fleet Capacity Widget on Active Calls Page

The Active Calls page in the Developer Console now displays a live fleet capacity widget showing the health and availability of the voice infrastructure.

**What changed:**

* **Fleet capacity widget.** A new widget at the top of the Active Calls page shows real-time voice fleet capacity: ready instances (warm buffer), allocated instances (live calls), total instances, and available headroom. The headroom indicator uses color-coded severity - green when capacity is healthy, yellow when tight, and red when near the ceiling.
* **State distribution bar.** Below the summary metrics, a distribution bar breaks down instances by state, giving operators a visual overview of fleet composition at a glance.
* **Always visible.** The widget renders even when there are zero active calls, so operators always have visibility into the warm pool and available headroom without needing to wait for call activity.
* **Live polling.** The widget polls alongside the active calls list, so capacity data stays current without manual refresh.
* **Graceful loading.** The widget stays hidden during initial load to avoid a second loading indicator alongside the active calls list. It appears once the first data response arrives. If the capacity data fails to load, an error message is displayed.

**What you need to do:**

* **No action required.** The widget appears automatically on the Active Calls page. No configuration or feature flags are needed.

</details>

<details>

<summary>v2.173.0 - Developer Console: Revert Live Background Activity Surface in Text Playground (July 2026)</summary>

#### Revert Live Background Activity Surface in Text Playground

The live background activity lane, provenance labels, and post-close result capture introduced in v2.171.0 and v2.172.0 have been reverted. Background skill results return to the previous behavior of appearing on the next conversation turn.

**What changed:**

* **Background activity lane removed.** The dedicated "Background activity" section below conversation turns has been removed. Background tool results and agent messages are no longer displayed in a separate lane.
* **Provenance labels removed.** The "Background tool" label, "Background" badge, and "Proactive update" accent on tool cards and agent messages have been removed. All tool cards display the standard "Tool completed" / "Tool failed" / "Calling tool" labels. All agent messages display the standard "Agent" label.
* **Relative timestamps removed.** The live-updating relative timestamp chips on background cards and messages have been removed.
* **Post-close result capture removed.** The session subscription no longer stays active after close to capture late-arriving background results.
* **Live deduplication removed.** The deduplication logic for live background pushes against the conversation history has been removed.
* **Standard conversation flow restored.** Background skill results appear in the conversation when the next turn is sent, matching the behavior prior to v2.171.0.

**What you need to do:**

* **No action required.** If you relied on live background result rendering, background skill results now appear after sending the next message in the conversation.

</details>

<details>

<summary>v2.172.0 - Developer Console: Background Activity Lane, Provenance Labels, and Post-Close Results in Text Playground (July 2026)</summary>

#### Background Activity Lane, Provenance Labels, and Post-Close Results in Text Playground

{% hint style="warning" %}
**Reverted in v2.173.0.** The features described in this entry were reverted. See v2.173.0 above.
{% endhint %}

Background skill results and unsolicited agent messages now render in a dedicated "Background activity" lane in the text playground, with provenance labels, relative timestamps, and support for results that arrive after the session ends.

**What changed:**

* **Dedicated background activity lane.** Background tool results and proactive agent messages now render in a visually separated "Background activity" section below the numbered conversation turns, rather than being attached to whatever turn happens to be open. This prevents background results from being mistaken for a reply to the user's last message.
* **Provenance labels on background cards.** Tool call cards originating from background skill execution are labeled "Background tool completed" (or "Background tool running" / "Background tool failed") with a "Background" badge, distinguishing them from in-turn tool calls. Unsolicited agent messages are labeled "Proactive update" with a distinct visual accent instead of the plain "Agent" label.
* **Relative timestamps.** Each background tool card and proactive message displays a live-updating relative timestamp (e.g. "20s ago", "5m ago") showing when it arrived, so you can see how stale a proactive update is at a glance.
* **Post-close result capture.** Background results that arrive after the session has ended are now captured and displayed in the background activity lane rather than silently dropped. The session subscription stays active briefly after close to catch late-arriving results.
* **Improved deduplication.** Deduplication between live background pushes and the next-turn drain now normalizes text before comparison, so results that differ only by minor formatting are correctly collapsed to a single card.

**What you need to do:**

* **No action required.** Background skill results and agent messages now appear automatically in the dedicated lane. If you previously relied on sending a follow-up message to see async skill results, that workaround is no longer necessary.

</details>

<details>

<summary>v2.171.0 - Developer Console: Live Background Tool Results and Agent Messages in Text Playground (July 2026)</summary>

#### Live Background Tool Results and Agent Messages in Text Playground

{% hint style="warning" %}
**Reverted in v2.173.0.** The features described in this entry were reverted. See v2.173.0 above.
{% endhint %}

The text playground now renders background skill results and unsolicited agent messages live, without requiring the user to send another turn.

**What changed:**

* **Live background tool results.** When a skill configured with background execution completes during an active text playground session, the tool result card appears in the conversation immediately. Previously, background skill results only surfaced after the user sent the next message. This eliminates the "must refresh to see the result" symptom for async skill workflows.
* **Live unsolicited agent messages.** Agent messages that arrive without a preceding user turn - for example, proactive notifications triggered by a background skill - now render in the conversation as they arrive.
* **Automatic deduplication.** Both background tool results and agent messages are deduplicated against the conversation history. When the next turn drains the same result or message from the server, the playground keeps a single copy rather than showing a duplicate card or bubble.
* **Works across session states.** Live pushes are rendered whether the session is actively connected, has ended, or is in an error state. Idle and connecting sessions ignore live pushes as expected.

**What you need to do:**

* **No action required.** Background skill results and agent messages now appear automatically in the text playground. If you previously needed to send a follow-up message to see async skill results, that workaround is no longer necessary.

</details>

<details>

<summary>v2.170.0 - Developer Console: Multi-Type Document Schemas in Customer Data Intake (July 2026)</summary>

#### Multi-Type Document Schemas in Customer Data Intake

The Developer Console now supports creating document schemas that accept multiple file types, so a single schema can handle a mix of document formats.

**What changed:**

* **Multi-type document schemas.** When creating a document schema (PDF, Word, Markdown, or text), the Create Schema dialog now shows an "Also accept" toggle group listing the other document types. Select any combination of additional types that the schema should accept alongside the primary type. For example, a schema with a primary type of PDF can also accept Word and Markdown uploads.
* **Upload validation updated.** The file upload dialog now validates uploaded files against all accepted types for the schema, not just the primary type. The file input's accept filter reflects the full set of accepted types, so the browser's file picker shows all valid extensions.
* **Validation error messages updated.** When an uploaded file does not match any accepted type, the error message lists all accepted extensions (e.g. "File must be one of: .pdf, .docx, .md matching the schema") rather than showing only the primary type.
* **Per-document type consistency.** Each document retains a single file type across its versions. The multi-type setting controls which types the schema accepts for new uploads, not type conversion between versions.

**What you need to do:**

* **No action required.** Existing single-type document schemas continue to work as before. The "Also accept" option appears automatically when you create a new document schema. To add additional accepted types to an existing schema, recreate the schema with the desired types selected.

</details>

<details>

<summary>v2.169.0 - Developer Console: Workspace Voice Settings and Voice Runtime Controls (July 2026)</summary>

#### Workspace Voice Settings and Voice Runtime Controls

The Developer Console now includes a dedicated Voice tab in Workspace Settings for managing workspace-level voice defaults, and the service edit page exposes voice runtime selection directly.

**What changed:**

* **Voice settings tab in Workspace Settings.** A new "Voice" tab appears alongside General and Retention in the workspace settings page. The tab provides a form for managing workspace-level voice defaults including STT provider, TTS provider, voice ID, tone, speed, volume, and pronunciation dictionary ID. Individual agents can override `voice_id` in their agent config, and services can override pipeline behavior.
* **TTS provider selection with provider-specific configuration.** Choose between three TTS providers using visual card selectors. Selecting a provider reveals its configuration panel - ElevenLabs shows model, voice ID, stability, similarity, style, speed, and speaker boost controls; Groq shows voice selection and speed controls with automatic Arabic dialect support.
* **STT provider selection.** Choose the speech-to-text engine for the workspace, or select "Platform default" to inherit the current production default.
* **Per-language TTS routing.** A new "Per-Language TTS Routing" section lets you route calls to different TTS providers based on language. Add languages from a supported list, choose a provider for each, and configure provider-specific settings per language. Language overrides take precedence over the workspace default provider for matched languages.
* **Domain awareness fields.** Tag-based inputs for keyterms (domain-specific vocabulary for speech recognition), correction categories (categories of audio transcription to verify), and sensitive topics (topics that trigger proactive emotion-aware handling). The Cartesia TTS provider also shows a pronunciation dictionary ID field.
* **Post-call intelligence toggles.** Toggle switches for post-call analysis (quality scoring and keyword extraction) and transcript correction (re-transcription for improved accuracy).
* **Voice runtime selection on service edit page.** When editing a service with a Voice channel type, a "Voice Runtime" dropdown lets you choose which runtime drives calls for that service. The label has been updated from "Voice provider" to "Voice Runtime" throughout the service detail and edit views.
* **Voice runtime displayed on agent versions.** The agent version card now shows the voice runtime when configured, using a human-readable label.
* **Form labels standardized.** All form labels on the service edit page now use consistent label components for improved accessibility.

**What you need to do:**

* **No action required.** The Voice tab appears automatically in workspace settings. Existing voice configurations are loaded and displayed when you open the tab. The voice runtime dropdown appears on the service edit page when the channel type is Voice.

</details>

<details>

<summary>v2.168.0 - Developer Console: Document Version History and Upload New Version in Files UI (July 2026)</summary>

#### Document Version History and Upload New Version in Files UI

The Files list in the Customer Data Intake section now groups uploads by document, displays version information, and lets you upload a new version of an existing document directly from the table.

**What changed:**

* **Files grouped by document.** Uploads that belong to the same document are now collapsed into a single row in the Files table. The row shows the latest version's status, schema, upload time, and error reason. Documents without version tracking (such as standalone CSV uploads) continue to appear as individual rows.
* **Version column.** A new "Version" column displays the current version number and total version count for each document (for example, "v3 - 3 versions"). Documents without version tracking show a dash.
* **Upload new version action.** Each document row with version tracking now has an "Upload new version" button (file-plus icon) in the Actions column. Clicking it opens the Upload dialog pre-configured for that document - the schema selector is locked to the document's dataset, and the dialog title and description reflect that you are adding a new version rather than uploading a new file.
* **Version history preserved.** Uploading a new version adds to the document's version chain. The latest successfully processed version becomes the current version. Previous versions remain in the system.
* **Existing upload flow unchanged.** The "Upload File" button continues to create new documents as before. Only the new "Upload new version" action targets an existing document.

**What you need to do:**

* **No action required.** The version grouping, version column, and upload-new-version action appear automatically in the Files list. Existing uploads and schemas are unaffected.

</details>

<details>

<summary>v2.167.0 - Developer Console: Document Schema Support in Create Schema Dialog (July 2026)</summary>

#### Document Schema Support in Create Schema Dialog

The Create Schema dialog in the Customer Data Intake section now supports document file types alongside CSV.

**What changed:**

* **File type selector is now active.** The file type dropdown in the Create Schema dialog is no longer locked to CSV. You can now choose from CSV, PDF, DOCX, MD, and TXT file types when creating a new intake schema.
* **Document datasets require only a name.** When you select a document file type (PDF, Word, Markdown, or text), the dialog hides the primary key and fields sections and displays a note explaining that document datasets are extracted to text on upload with no schema to define. You only need to provide a name and file type.
* **CSV schemas unchanged.** Selecting CSV continues to show the full schema editor with primary key, fields, and the "Infer from CSV" option, exactly as before.
* **Validation adapts to file type.** The form validates document schemas (name + file type only) and structured schemas (name + file type + fields + primary key) with appropriate rules for each.

**What you need to do:**

* **No action required.** The new file types appear automatically in the Create Schema dialog. Existing CSV schemas are unaffected.

</details>

<details>

<summary>v2.166.0 - Developer Console: Voice Session Provider Selection on Services (July 2026)</summary>

#### Voice Session Provider Selection on Services

The service edit page in the Developer Console now lets you choose which voice session runtime drives calls for a voice service.

**What changed:**

* **Voice provider selector on service edit.** When editing a voice service, a new "Voice provider" dropdown appears below the channel type selector. You can choose between the in-house pipeline, the real-time speech-to-speech runtime, or the Atlas runtime. The selection is saved as part of the service's voice configuration.
* **Conditional visibility.** The voice provider dropdown only appears when the service channel type is set to Voice. Text services do not show the selector.
* **Non-destructive save.** Saving the voice provider preserves all other voice configuration fields (latency settings, filler phrases, forwarding rules) that may have been configured through the API or CLI. Only the session provider field is updated.
* **Voice provider shown in service detail.** The read-only service detail view now displays the configured voice provider under Voice Configuration. Services without an explicit provider show "In-house" as the default.

**What you need to do:**

* **No action required.** Existing services continue to use the in-house pipeline by default. You can now change the voice runtime directly from the Developer Console without using the API or CLI.

</details>

<details>

<summary>v2.165.0 - Developer Console: Call Infrastructure Track in Live Observer (July 2026)</summary>

#### Call Infrastructure Track in Live Observer

The Live Observer for active calls now includes a Call Infrastructure panel that surfaces the per-call voice isolation lifecycle - allocation, media attachment per leg, and teardown.

**What changed:**

* **Call Infrastructure panel.** When observing a live call, the observer sidebar now shows a "Call infrastructure" card that displays the allocated media server identity, the node it landed on, and the allocation latency. Allocation latency is classified as "warm pool" (sub-250ms, indicating a pre-warmed replica was available) or "cold start" (longer, indicating a scale-up wait).
* **Per-leg media status.** The panel shows real-time media attachment status for both the caller and agent legs. While the call is active, unattached legs display as "pending" with a neutral indicator. Once the call ends, a leg that never attached is flagged as "never attached" with a failure indicator - this is the primary signal for no-audio issues where media never reached the allocated server.
* **Teardown details.** When the allocated server is reaped, the panel shows the teardown reason and total server lifetime. Orphaned servers that were reaped because media never attached are highlighted as failures.
* **New infrastructure events in the event log.** Three new event types appear in the playground and observer event logs: server allocation, media attachment (per leg), and server shutdown. These events are categorized as session events and do not render as standalone timeline entries in the observer - their data feeds the Call Infrastructure panel instead.

**What you need to do:**

* **No action required.** The Call Infrastructure panel appears automatically when observing calls that use per-call voice isolation. Calls on the shared media path do not emit infrastructure events and will not show the panel.

</details>

<details>

<summary>v2.164.0 - Developer Console: Client-Side Validation for Endpoint Path Templates (July 2026)</summary>

#### Client-Side Validation for Endpoint Path Templates

The endpoint builder in the Developer Console now validates path templates inline, catching unsupported placeholder syntax before you save.

**What changed:**

* **Inline path template validation.** When editing an integration endpoint path, the form now checks for RFC 6570 reserved-expansion operators (`{+var}`, `{#var}`, `{.var}`, `{/var}`, `{;var}`, `{?var}`, `{&var}`) and displays an inline error if any are found. Only simple `{var}` placeholders are allowed. Previously, these were rejected by the platform on save with a 422 error - now you get immediate feedback in the form.
* **Updated path field description.** The path field help text now explains that `{var}` placeholders are supported for path parameters (e.g. `users/{id}`) and that IDs containing reserved characters are encoded automatically.
* **Save blocked on invalid paths.** The endpoint form disables saving when a reserved-expansion operator is detected, so invalid templates cannot be submitted.

**What you need to do:**

* **No action required.** The validation appears automatically when editing endpoint paths. If you have existing endpoints with reserved-expansion operators, the platform already rejects them on save - this change surfaces that restriction earlier in the editing flow.

</details>

<details>

<summary>v2.163.0 - Developer Console: Normalize Inferred CSV Field Names to Valid Identifiers (July 2026)</summary>

#### Normalize Inferred CSV Field Names to Valid Identifiers

CSV-inferred field names in the Create Schema dialog are now automatically normalized to valid column identifiers, and the form validates that all field names conform to the required format before submission.

**What changed:**

* **Automatic field name normalization.** When inferring schema fields from a CSV file, header values are now converted to valid column identifiers. The normalization lowercases the header, replaces runs of non-alphanumeric characters with underscores, trims leading and trailing underscores, and prefixes an underscore when the result would start with a digit. For example, a CSV header "Client NPS Response Created Date" becomes `client_nps_response_created_date`.
* **Collision deduplication.** When normalization produces duplicate field names (for example, headers "Date" and "date" both normalize to `date`), subsequent duplicates receive a numeric suffix (`date_2`, `date_3`, etc.) to ensure all field names are unique.
* **Field name validation on submit.** The Create Schema form now validates that every field name matches the required identifier format (letters, digits, and underscores only, starting with a letter or underscore). Invalid field names are rejected with a descriptive error message before the form is submitted to the backend.

**What you need to do:**

* **No action required.** Inferred field names are normalized automatically. If you manually enter field names, the form now validates them before submission and displays a clear error if the name contains spaces or other unsupported characters.

</details>

<details>

<summary>v2.162.0 - Developer Console: Infer Schema Fields from CSV in Create Schema (July 2026)</summary>

#### Infer Schema Fields from CSV in Create Schema

The Create Schema dialog in the Customer Data Intake section now supports inferring field definitions from an uploaded CSV file, reducing manual data entry when onboarding existing datasets.

**What changed:**

* **Infer from CSV button.** The Fields section of the Create Schema dialog now includes an "Infer from CSV" button. Clicking it opens a file picker that accepts `.csv` files.
* **Automatic field inference.** When you upload a CSV, the platform reads the header row to determine field names, samples the data rows to infer each column's type (string, integer, float, boolean, date, or datetime), and populates the field list automatically. The schema name is also pre-filled from the filename if you have not already entered one.
* **Primary key detection.** The platform makes a best-effort guess at the primary key based on common column naming patterns (such as columns named `id` or ending in `_id` or `_uid`). The guessed primary key is pre-filled but fully editable.
* **Fully editable result.** All inferred fields, types, and the primary key remain editable after inference. The dialog displays a note indicating how many fields were inferred and from which file, so you can review and adjust before saving.
* **Standard CSV support.** The parser handles quoted fields, escaped quotes, commas and newlines inside quotes, CRLF line endings, and byte-order marks.

**What you need to do:**

* **No action required.** The "Infer from CSV" button appears automatically in the Create Schema dialog. You can continue creating schemas manually if you prefer.

</details>

<details>

<summary>v2.161.0 - Developer Console: Fix Identity Bindings Display on Integration Detail Page (July 2026)</summary>

#### Fix Identity Bindings Display on Integration Detail Page

The identity bindings display on the integration detail page now correctly reads bindings from the custom token exchange auth configuration and renders each binding as a key-value pair.

**What changed:**

* **Bindings read from auth configuration.** Identity bindings are now sourced from the custom token exchange auth configuration rather than from a top-level integration field. This fixes cases where bindings were present on the auth config but not displayed.
* **Key-value display format.** Each identity binding is now displayed as a "parameter name → identity attribute" badge (e.g., `patient_id → external_user.subject_key`), making the mapping between parameters and identity sources clear at a glance.
* **Scoped to custom token exchange.** The identity bindings row appears only for integrations using custom token exchange authentication. Other auth types show "No identity bindings" as before.

**What you need to do:**

* **No action required.** Identity bindings on custom token exchange integrations are now displayed correctly and automatically.

</details>

<details>

<summary>v2.160.0 - Developer Console: Gemini 3.x Models and Experimental Badge in Skill Editor (July 2026)</summary>

#### Gemini 3.x Models and Experimental Badge in Skill Editor

The model picker in the skill editor now includes four additional models from the next-generation Gemini family, and preview models are flagged with an "experimental" badge.

**What changed:**

* **Four new models added.** The model dropdown in the skill editor now includes four additional models from a newer generation, covering both production-ready and preview variants. All new models appear alongside existing options with their respective provider icons.
* **Experimental badge on preview models.** Models that are still in preview display an "experimental" badge next to their name in the model picker, so you can distinguish generally available models from preview models at a glance.
* **Sampling parameter warnings apply.** Models that reject sampling parameters continue to show the dynamic amber warning on the temperature and top-p fields, consistent with the behavior introduced in v2.157.0.

**What you need to do:**

* **No action required.** The new models and experimental badges appear automatically in the skill editor model picker. Preview models are functional but may change before general availability.

</details>

<details>

<summary>v2.159.0 - Developer Console: New Models in Skill Editor Model Picker (July 2026)</summary>

#### New Models in Skill Editor Model Picker

The model picker in the skill editor now includes two additional models, expanding the set of models available when configuring a skill.

**What changed:**

* **Two new models added.** The model dropdown in the skill editor now includes two additional models: one smaller-footprint model optimized for fast inference, and one lightweight model suited for cost-sensitive workloads. Both models appear alongside existing options with their respective provider icons.
* **Sampling parameter warnings apply.** Models that reject sampling parameters continue to show the dynamic amber warning on the temperature and top-p fields, consistent with the behavior introduced in v2.157.0.

**What you need to do:**

* **No action required.** The new models appear automatically in the skill editor model picker. You can select them when creating or editing a skill.

</details>

<details>

<summary>v2.158.0 - Developer Console: Identity Bindings on Integration Detail Page (July 2026)</summary>

#### Identity Bindings on Integration Detail Page

The integration detail page in the Developer Console now displays identity bindings configured on an integration.

**What changed:**

* **Identity bindings row.** The Authentication section on the integration detail page now includes an "Identity Bindings" row. If the integration has identity bindings configured, each binding is displayed as a badge. If no bindings are configured, the row shows "No identity bindings."
* **Applies to all integration types.** The identity bindings row appears for both built-in (platform-managed) and custom integrations.

**What you need to do:**

* **No action required.** Identity bindings are displayed automatically on the integration detail page if they are configured on the integration.

</details>

<details>

<summary>v2.157.0 - Developer Console: Updated Model Selector with Provider Icons (July 2026)</summary>

#### Updated Model Selector with Provider Icons

The model selector in the new-skill editor now displays the current set of supported models with provider icons, and shows a dynamic warning when the selected model does not support sampling parameters.

**What changed:**

* **Expanded model list.** The model dropdown in the Agent step of the new-skill editor now lists all currently supported models across all providers, replacing the previous hardcoded two-model list.
* **Provider icons.** Each model in the dropdown displays a provider icon alongside the model name, making it easier to distinguish models from different providers at a glance.
* **Dynamic sampling parameter warning.** When you select a model that rejects sampling parameters, the temperature and top-p fields display an amber warning indicating that sampling parameters will be ignored for that model. Previously, this guidance was a static note. Now it responds to the selected model.

**What you need to do:**

* **No action required.** The model selector automatically reflects the current set of supported models. If you previously selected a model that is no longer listed, update your skill configuration to use a currently supported model.

</details>

<details>

<summary>v2.156.0 - Developer Console: Intake Files List, Upload, Schemas List, and Create Schema (July 2026)</summary>

#### Intake Files List, Upload, Schemas List, and Create Schema

The Intake tab under Data Sources now includes fully functional Files and Schemas segments, replacing the previous placeholder views.

**What changed:**

* **Files list.** The Files segment displays all uploaded files with columns for file name, schema, status, error reason, upload timestamp, and a download action. Status is shown as a badge: Success (curated), Failed (rejected or failed), Processing (received, scanned, or processing), or Needs review (held). The list supports search by file name or schema name, filtering by status, and manual refresh.
* **Upload File dialog.** Upload a CSV file against a registered schema. The dialog validates that a schema is selected, a file is chosen, the file extension matches the schema's file type, and the file size is within the schema's configured limit. After upload, the file appears in the Files list with its processing result.
* **Schemas list.** The Schemas segment displays registered schema contracts with name, version, and field count columns. The list supports search by schema name.
* **Create Schema dialog.** Define a new schema contract by specifying a name, file type (CSV), a primary key (single or composite), and one or more typed fields. Supported field types: string, integer, float, boolean, date, and datetime. Validation requires a non-empty name, at least one named field with unique names, at least one primary key column, and all primary key columns must exist in the field list.

**What you need to do:**

* **No action required.** The Intake tab now provides full schema management and file upload capabilities. If you previously used placeholder views, the new segments replace them automatically.

</details>

<details>

<summary>v2.155.0 - Developer Console: Intake Tab Enabled by Default on Staging and Preview (July 2026)</summary>

#### Intake Tab Enabled by Default on Staging and Preview

The Intake tab under Data Sources in the Developer Console is now visible by default on staging and preview environments.

**What changed:**

* **Intake tab on by default for staging and preview.** The Data Sources Intake tab is now enabled for all workspaces on staging and preview tiers without requiring a feature gate. Previously, the tab was hidden on all environments until explicitly enabled.
* **Production unchanged.** On production, the Intake tab remains gated behind the existing feature flag and must be enabled independently.

**What you need to do:**

* **No action required.** If you are on a staging or preview environment, the Intake tab is now visible automatically. Production workspaces are unaffected.

</details>

<details>

<summary>v2.154.0 - Developer Console: Per-Skill Sampling Parameters in Skill Editor (July 2026)</summary>

#### Per-Skill Sampling Parameters in Skill Editor

The new-skill editor in the Developer Console now supports setting per-skill temperature and top-p sampling parameters.

**What changed:**

* **Temperature field.** The Agent step of the new-skill editor now includes an optional Temperature field (0-1). Controls sampling randomness for the skill's model. Leave blank to use the model default.
* **Top-p field.** The Agent step now includes an optional Top-p field (0-1). Controls nucleus sampling for the skill's model. Leave blank to use the model default.
* **Validation.** Both fields accept values between 0 and 1 inclusive. Invalid values are flagged inline. Blank values are omitted from the skill configuration, preserving the model's default behavior.
* **Mutual exclusivity guidance.** The editor advises setting at most one of temperature or top-p. Models that reject sampling parameters ignore them silently.
* **Model-gated note.** The field descriptions note that some models (those that reject sampling parameters) ignore these values.

**What you need to do:**

* **No action required.** Existing skills are unaffected. Both fields default to blank (model default). To use sampling parameters, set temperature or top-p (not both) when creating a new skill.

</details>

<details>

<summary>v2.153.0 - Developer Console: Agent Memory Dimensions Page (July 2026)</summary>

#### Agent Memory Dimensions Page

The Developer Console now includes an Agent Memory page for inspecting and configuring how the agent remembers patient information across structured dimensions.

**What changed:**

* **Agent Memory page.** A new page under the workspace navigation (demo preview) displays all configured memory dimensions - both built-in and custom. Each dimension card shows the dimension name, description, extraction mode (LLM or static), event sources, patient coverage, total facts, average confidence, and last-updated time.
* **Dimension configuration.** Each dimension can be toggled active or inactive and assigned a weight (0-10) that influences how prominently its facts appear in the agent's context. Changes are tracked as unsaved until explicitly saved.
* **Memory summary.** A summary section at the top of the page shows overall memory coverage (percentage of patients with memory), total facts, facts added in the last seven days, active dimension count, per-dimension coverage bars, and a breakdown of data sources contributing to memory.
* **Custom dimensions.** You can add custom dimensions by specifying a name, description, event types, and optional extraction paths. Custom dimensions can also be removed. Built-in dimensions cannot be deleted.
* **Navigation entry.** The Agent Memory page is accessible from the workspace sidebar under a new "Agent Memory" link (demo preview).
* **Example mode link.** The example mode home page now includes a link card for inspecting patient memory.

**What you need to do:**

* **No action required.** This is a new demo preview page. The page uses demonstration data and does not modify production memory configuration.

</details>

<details>

<summary>v2.152.0 - Developer Console: Text Playground Sending State Indicator (July 2026)</summary>

#### Text Playground Sending State Indicator

The Text playground in the Developer Console now shows a clear status indicator while a message is being sent and the agent response is pending.

**What changed:**

* **"Awaiting agent response" indicator.** After sending a message in the Text playground, the chat input now displays "Awaiting agent response..." as placeholder text and is disabled until the agent responds. Previously, the input showed no visual feedback between sending a message and receiving the response, which could make it unclear whether the message was sent.
* **Distinct status states.** The chat input now reflects three states: ready (accepting input), sending (awaiting agent response, input disabled), and ended (chat ended, input disabled). Each state shows appropriate placeholder text.

**What you need to do:**

* **No action required.** This is a UI enhancement to the existing Text playground experience.

</details>

<details>

<summary>v2.151.0 - Developer Console: Text Conversation Detail View (July 2026)</summary>

#### Text Conversation Detail View

The Conversations section in the Developer Console now provides a rich detail view for text conversations, with per-turn audit information, tool call inspection, and metadata.

**What changed:**

* **Text conversation detail view.** Text conversations now display a full detail view with metadata, transcript, and an audit strip. Voice conversations retain the previous summary view and link out to the call detail page for the rich per-turn experience.
* **Audit strip.** Text conversations with anomalies - failed tool calls, escalations, or failed conversation status - display an audit strip above the transcript with labeled chips identifying each issue by tool name, turn number, or escalation type.
* **Expanded metadata.** The text conversation detail view shows additional metadata fields: completion reason, escalation status, quality score, and total tool call count, alongside the existing fields (turns, duration, created, updated, entity, service, caller, final state).
* **Transcript with inline agent trace.** The transcript renders user and agent chat bubbles with inline agent traces showing state transitions, selected actions, and tool calls (including failures). Each turn has an expandable inspector that shows the full action trace with tool inputs, outputs, and available actions.
* **System message interleaving.** System-role turns - which are not present in live sessions - are displayed as centered notices interleaved at the correct position in the transcript.
* **Tool call details on conversation detail.** The conversation detail API request now includes tool call details by default, so per-turn tool calls (inputs, outputs, duration, success status, and failure messages) are available in the detail view.

**What you need to do:**

* **No action required.** This is a UI enhancement to the existing conversation detail page. Text conversations automatically use the new detail view; voice conversations continue to show the summary view.

</details>

<details>

<summary>v2.150.0 - Developer Console: Copy Link on Surface Detail Page (July 2026)</summary>

#### Copy Link on Surface Detail Page

The Surface detail page in the Developer Console now includes a **Copy link** button for sharing active surface links.

**What changed:**

* **Copy link action.** Web surfaces and other surfaces with an active link now display a **Copy link** button on the detail page. Clicking it copies the patient-facing URL to your clipboard. The button is available while the surface is active - it is hidden for surfaces in `expired` or `archived` status.
* **SDK bump.** The Developer Console now uses Platform SDK v0.71.0.

**What you need to do:**

* **No action required.** This is a UI enhancement to the existing surfaces detail page.

</details>

<details>

<summary>v2.149.0 - Developer Console: Surface Analytics Time Window, Review Search, and Data Export (July 2026)</summary>

#### Surface Analytics Time Window, Review Search, and Data Export

The Surfaces section in the Developer Console now includes a configurable analytics time window, a search bar on the review queue, and CSV/JSON export for surface data.

**What changed:**

* **Analytics time window.** The Surface Analytics tab now includes a time window selector with options for the last 7, 30, or 90 days. Completion rates, channel effectiveness, and field abandonment cards all respect the selected window. The default is 30 days.
* **Analytics CSV export.** An **Export CSV** button on the Analytics tab downloads a CSV file containing completion-by-source, channel effectiveness, and field abandonment data for the selected time window.
* **Review queue search.** The Surface Review tab now includes a search bar that filters the review queue by title, entity, or source. A count shows how many surfaces match out of the total. When no surfaces match the search, an empty state is displayed with guidance to adjust the query.
* **Submission data export.** The Surface detail page now shows **Export JSON** and **Export CSV** buttons on the Submission card for completed surfaces. Export JSON downloads the raw submitted data as a JSON file. Export CSV converts the submitted key-value pairs into a CSV file.

**What you need to do:**

* **No action required.** These are UI enhancements to existing surfaces functionality.

</details>

<details>

<summary>v2.148.0 - Developer Console: Surface Detail - Edit, Reshape, Progress, and Archive (July 2026)</summary>

#### Surface Detail - Edit, Reshape, Progress, and Archive

The Surface detail page in the Developer Console now supports editing, reshaping, archiving, and real-time progress tracking for surfaces. The surface creation flow has also been updated with corrected channel options and email service binding.

**What changed:**

* **Edit surface.** Surfaces in `created` or `delivered` status can be edited inline. Clicking **Edit** opens the surface sheet pre-populated with the current title, description, and fields. Channel, entity, and expiry are immutable after creation and are not shown in edit mode. Saving calls the update endpoint and refreshes the detail view.
* **Reshape surface.** Surfaces in `delivered`, `opened`, or `partial` status can be reshaped. Clicking **Reshape** clones the surface's unfilled fields into a new surface and navigates to the new surface's detail page.
* **Archive surface.** Surfaces that are not already in a terminal state (`archived`, `expired`, or `completed`) can be archived. Clicking **Archive** opens a confirmation dialog. Archiving soft-deletes the surface - it no longer appears in the active list and cannot be delivered.
* **Progress tracking.** Surfaces in `delivered`, `opened`, or `partial` status now display a Progress card in the sidebar showing total fields, filled count, empty count, and a list of required fields that are still empty.
* **Channel options corrected.** The create surface sheet now offers only **Web** (generates a shareable link) and **Email** (delivers through a bound email service) channels. SMS, WhatsApp, and iMessage options have been removed - these channels were not supported by the surfaces backend and would fail silently.
* **Email service binding.** When creating a surface with the email channel, the sheet now requires selecting an email service (use case). The workspace's email services are loaded dynamically. If no email services are configured, a hint directs you to the Channels configuration.
* **Web surface link copied on create.** When a web-channel surface is created, the shareable link is automatically copied to your clipboard.
* **Deliver dialog updated.** The deliver dialog now requests an email address instead of a phone number, matching the supported email delivery channel.

**What you need to do:**

* **No action required.** These are UI enhancements. If you previously attempted to create surfaces with SMS, WhatsApp, or iMessage channels and received errors, use the Web or Email channel instead.

</details>

<details>

<summary>v2.147.0 - Developer Console: Reverted Channel Catalog and Request Access (July 2026)</summary>

#### Reverted Channel Catalog and Request Access

The Channel Catalog page and Request Access flow introduced in v2.147.0 have been reverted. The top-level Channels page, channel catalog cards, and the "Request access" dialog have been removed from the Developer Console.

**What changed:**

* **Channels catalog page removed.** The top-level Channels page that listed internal-preview channels (Email, SMS, iMessage, WhatsApp) with "Request access" buttons has been removed.
* **Request access dialog removed.** The dialog for submitting channel enablement requests to the Amigo team is no longer available in the console.
* **Navigation restored.** The sidebar "Channels" link now points to the channel provisioning pages (use cases) as a private preview feature, matching the navigation structure prior to v2.147.0. The channel provisioning pages (use cases, SES setup) remain available under their existing paths.

**What you need to do:**

* **Use the API for channel access requests.** If you need to request access to internal-preview channels, use the `POST /channels/access-requests` API endpoint directly. The console UI for this flow has been removed.

</details>

<details>

<summary>v2.146.0 - Developer Console: SQL Editor Examples Updated to Current World Model Tables (July 2026)</summary>

#### SQL Editor Examples Updated to Current World Model Tables

The SQL Editor page and agent readiness scenario sources now reference the current world model serving tables. Previously, example queries and tooltips pointed to retired table names that could cause errors when executed.

**What changed:**

* **SQL Editor description updated.** The page description now states that SELECT queries run against the current workspace-scoped world model tables rather than the retired table names.
* **SQL Editor placeholder query updated.** The example query in the SQL input field now demonstrates a workspace-scoped query against the current world model tables, including a workspace filter and specific column selection.
* **Agent readiness tooltips updated.** The world model scenario source tooltip now references the current serving tables for person projections and cohort statistics.

**What you need to do:**

* **No action required.** This is a UI correction. If you previously copied example queries from the SQL Editor placeholder, update them to use the table names now shown in the editor.

</details>

<details>

<summary>v2.145.0 - Developer Console: Workspace Selector IDs Now Copyable (July 2026)</summary>

#### Workspace Selector IDs Now Copyable

The workspace selection screen now displays the workspace ID for each workspace and provides a copy button, making it easier to grab workspace IDs without navigating into the workspace first.

**What changed:**

* **Workspace ID visible on each card.** Each workspace card in the selection list now shows the workspace ID below the workspace name, role, and region.
* **Copy button.** A copy button next to each workspace ID copies the ID to your clipboard. A success toast confirms the copy; if the copy fails, an error toast prompts you to copy it manually.
* **Metadata row simplified.** The workspace ID has been moved from the inline metadata line (which previously showed role, region, and ID together) to its own dedicated row. The metadata line now shows only the role and region.

**What you need to do:**

* **No action required.** This is a UI enhancement. Workspace IDs are now easier to find and copy from the workspace selection screen.

</details>

<details>

<summary>v2.144.0 - Developer Console: Removed Desktop, Prompt Logs, and Tasks Pages (July 2026)</summary>

#### Removed Desktop, Prompt Logs, and Tasks Pages

Three pages that were no longer functional have been removed from the Developer Console. These pages previously returned errors because their backing platform services were retired in earlier releases.

**What changed:**

* **Desktop page removed.** The Desktop page, which allowed connecting to and interacting with a remote desktop session (viewing screenshots, sending clicks, typing, scrolling, and disconnecting), has been removed. The Desktop entry has been removed from the sidebar command palette.
* **Prompt Logs page removed.** The Prompt Logs page, which displayed per-turn LLM input and output (system prompts, history, tool catalogs, model, and response) with filtering by conversation ID, call SID, prompt type, and state name, has been removed.
* **Tasks page removed.** The Tasks page, which allowed searching tasks by call SID and viewing task status, skill, tier, duration, and dispatch time, has been removed. The Tasks entry has been removed from the sidebar command palette.
* **Dead routes cleaned up.** Several route definitions that referenced removed pages have been cleaned up internally.

**What you need to do:**

* **No action required.** These pages were already non-functional. If you had bookmarks or links to the Desktop, Prompt Logs, or Tasks pages, those URLs will no longer resolve.

</details>

<details>

<summary>v2.143.0 - Developer Console: Agent Memory UI Removed (July 2026)</summary>

#### Agent Memory UI Removed

The Agent Memory section has been removed from the Developer Console. Memory inspection and management are no longer available through the console UI.

**What changed:**

* **Patient Memory page removed.** The dedicated Patient Memory page, which displayed per-patient memory facts, memory tiers (safety-critical, clinically significant, supporting context), derivation pipelines, evidence sources, and agent usage details, has been removed from the console.
* **Functional Memory configuration page removed.** The Functional Memory page, which allowed configuring memory dimensions (toggling active state, adjusting weights, adding custom dimensions) and viewing memory analytics (coverage, facts, data sources), has been removed.
* **Patient detail memory tab removed.** The memory section on individual patient detail pages, which showed memory facts and formatting, has been removed. Patient detail pages continue to display other patient information.
* **Sidebar navigation updated.** The Functional Memory link has been removed from the console sidebar. The example mode walkthrough no longer references memory inspection.

**What you need to do:**

* **No action required.** If you previously used the console to inspect or configure agent memory, note that these capabilities are no longer available in the Developer Console UI. Memory functionality at the API and agent runtime level is unaffected by this console change.

</details>

<details>

<summary>v2.142.0 - Developer Console: Conversation Detail Turn Count Alignment (July 2026)</summary>

#### Conversation Detail Turn Count Alignment

The conversation detail page now counts turns the same way as the conversations list, so the turn count displayed on a conversation's detail view matches the count shown in the list.

**What changed:**

* **Consistent turn counting.** The Turns metric on the conversation detail page now counts exchanges (inbound user messages) rather than all message rows. Previously, the detail page could show a turn count roughly double the list value because it counted user, agent, and system messages as individual turns. The detail page now uses the same unit as the conversations list and the API's `turn_count` field.
* **Stale-zero protection preserved.** The detail page still compares the locally computed count against the persisted `turn_count` on the conversation record and displays whichever is higher. This guards against a stale zero in the persisted count without inflating the displayed value.

**What you need to do:**

* **No action required.** This is a display correction. If you previously noticed the detail page showing a higher turn count than the conversations list for the same conversation, the values now match.

</details>

<details>

<summary>v2.141.0 - Developer Console: Channel Use Cases, Conversation Channel Filter, and SES Navigation (July 2026)</summary>

#### Channel Use Cases, Conversation Channel Filter, and SES Navigation

The Developer Console now includes a use case management page for creating, viewing, binding, and deleting channel use cases, plus a channel filter on the conversations table and sidebar navigation for SES setups.

**What changed:**

* **Channel use cases page.** A new Channels section in the sidebar (private preview) provides a use cases list page showing all channel use cases in the workspace. Each row displays the channel type, name, sender address (for email), inbox posture badges (unsubscribable, accepts cold inbound), and the currently bound service. The table supports search by name or sender address.
* **Create email use case form.** A dedicated creation form lets you define an email use case by selecting a verified SES setup (sending domain), entering a name, entity name (the display name recipients see), sender email address, optional sender display-name alias (4-40 characters, rendered in the From header), email type (transactional or marketing), and two inbox posture toggles. Marketing email automatically requires unsubscribe support. The form validates all fields before submission, matching the platform API constraints.
* **Service binding management.** Each use case row has actions to bind to a service, change the current binding, or unbind. Binding is the act that enables the channel for the workspace - inbound traffic for the use case resolves to the bound service, and outbound dispatch from the service routes through the use case. Rebinding replaces the current binding immediately. Unbinding turns the channel off.
* **Use case deletion.** Use cases can be deleted from the row actions menu. The platform API refuses deletion while a service is still bound - you must unbind first.
* **Conversation channel filter.** The conversations table now includes a Channel filter dropdown matching the calls table convention. Selecting a single channel pushes the filter to the API for server-side filtering. Selecting zero or multiple channels filters the loaded rows client-side. Available channels include voice, SMS, WhatsApp, email, web, and iMessage.
* **SES setups navigation.** The SES Setups page, previously reachable only by direct URL, now has a dedicated sidebar link under the Channels section (private preview). A shortcut button on the use cases page also links to SES setups for quick access.

**What you need to do:**

* **No action required.** These are new UI features. The Channels section is available in private preview - workspaces must be enrolled to see the sidebar links. The conversation channel filter is available to all workspaces.

</details>

<details>

<summary>v2.140.0 - Developer Console: Text Playground Entity ID Validation (July 2026)</summary>

#### Text Playground Entity ID Validation

The Text playground now validates the entity ID input before starting a session, preventing sessions that would fail server-side due to an invalid entity ID format.

**What changed:**

* **Client-side entity ID validation.** The entity ID field in the Text playground now checks that the value is either a valid UUID (e.g. `550e8400-e29b-41d4-a716-446655440000`) or a phone number before allowing the session to start. Previously, any freeform string was accepted, and invalid values caused server-side failures after session creation.
* **Inline error with destructive styling.** When the entity ID value is invalid, the input shows a red border and a descriptive error message explaining the accepted formats. The error is linked to the input via accessibility attributes for screen reader support.
* **Start action is blocked while invalid.** Clicking the start button with an invalid entity ID opens the configuration popover to surface the error instead of starting a session that would fail. Correcting or clearing the value removes the error and re-enables starting.
* **Blank values are still accepted.** An empty entity ID is valid - it starts an anonymous session, matching the previous behavior.

**What you need to do:**

* **No action required.** This is a usability improvement that prevents a class of silent failures in the Text playground. Entity IDs that were previously accepted but caused server-side errors are now caught before the session starts.

</details>

<details>

<summary>v2.139.0 - Developer Console: External Integration API Key Permissions (July 2026)</summary>

#### External Integration API Key Permissions

The Developer Console now supports External Integration permissions when creating and managing API keys, allowing fine-grained control over external OAuth integration management.

**What changed:**

* **New External Integrations permission group.** The API key permissions editor now includes an External Integrations group with four permissions: View external integrations (read external integration metadata and credentials), Create external integrations (register external OAuth integrations), Update external integrations (edit external integration metadata and credentials), and Delete external integrations (remove external integrations and revoke their credentials).
* **Admin and owner roles include all External Integration permissions.** API keys with admin or owner-level access now include all four External Integration permissions by default.
* **Member and viewer roles do not include External Integration permissions.** Lower privilege roles do not receive External Integration permissions by default. These permissions can be added manually when creating or editing an API key with a custom scope.

**What you need to do:**

* **No action required for existing API keys.** Existing keys are unaffected. When creating new API keys or updating existing ones, you can now configure External Integration permissions through the permissions editor.

</details>

<details>

<summary>v2.138.0 - Developer Console: Data API Key Permissions (July 2026)</summary>

#### Data API Key Permissions

The Developer Console now supports Data permissions when creating and managing API keys, allowing fine-grained control over workspace data access.

**What changed:**

* **New Data permission group.** The API key permissions editor now includes a Data group with three permissions: View data (read workspace data records), Write data (create and update workspace data records), and Query data (run queries against workspace data).
* **Viewer role includes Data:View and Data:Query.** API keys with viewer-level access now include permissions to view and query workspace data by default.
* **Member role includes Data:Write.** API keys with member-level access now include permission to create and update workspace data records by default.
* **Admin and owner roles inherit all Data permissions.** Higher privilege roles automatically include all three Data permissions.

**What you need to do:**

* **No action required for existing API keys.** Existing keys are unaffected. When creating new API keys or updating existing ones, you can now configure Data permissions through the permissions editor.

</details>

<details>

<summary>v2.137.0 - Developer Console: Text Playground Surfaces Turn Failures (July 2026)</summary>

#### Text Playground Surfaces Turn Failures

The Text playground now displays an error banner when a text turn fails mid-session, instead of silently showing no response.

**What changed:**

* **Error banner on mid-session failures.** When a text turn fails during an active session (for example, due to a transient backend error), the playground now shows the error in a banner at the top of the conversation. Previously, the error was hidden because the session remained connected, and the failure appeared as a silent "no response" with no indication that something went wrong.
* **Consistent error visibility.** Error banners now appear whenever an error is set and the session has not cleanly ended, regardless of whether the session is still connected. This covers both connection-level failures and per-turn failures that occur while the session remains active.

**What you need to do:**

* **No action required.** This is a fix to error visibility in the Text playground. You will now see explicit error messages in cases that previously produced silent failures.

</details>

<details>

<summary>v2.136.0 - Developer Console: Data Sources Page in Example Mode (July 2026)</summary>

#### Data Sources Page in Example Mode

The Developer Console now shows the real Data Sources page when a workspace is in example mode, replacing the previously hardcoded example page.

**What changed:**

* **Real Data Sources page in example mode.** Workspaces using example mode now see the same Data Sources page as regular workspaces, including the connector catalog, active sources, and file upload tabs. Previously, example mode displayed a static placeholder page with hardcoded sample data that did not reflect actual workspace configuration.
* **Removed example-only components.** The static Data Sources example page and its associated fixtures have been removed. Example mode workspaces now use the same interactive Data Sources interface as all other workspaces.

**What you need to do:**

* **No action required.** If your workspace uses example mode, the Data Sources page now shows real workspace data and controls instead of static sample content.

</details>

<details>

<summary>v2.135.0 - Developer Console: Integration Approval Policy and Playground Approve/Reject (July 2026)</summary>

#### Integration Approval Policy and Playground Approve/Reject

The Developer Console now supports configuring human-in-the-loop approval gates on integrations and resolving pending approvals directly from the Text playground.

**What changed:**

* **Approval policy field on integration creation.** The integration creation form now includes an Approval Policy selector with three options: None (no approval required), Writes (approve create, update, and delete calls), and All (approve every call). The default is None, which preserves existing behavior.
* **Approval policy displayed on integration detail.** The integration detail page shows the configured approval policy as a badge in the Configuration card. Integrations with no approval gate show "No approval required"; gated integrations show "Writes need approval" or "All calls need approval".
* **Playground approve/reject card.** When the agent parks a gated integration write during a Text playground conversation, an inline approval card appears above the chat input. The card shows the tool the agent wants to run and provides Approve and Reject buttons. Approving the action lets the agent proceed; rejecting it declines the action with an optional reason the agent sees. The card clears after resolution.
* **Reject with reason.** Clicking Reject opens a dialog where you can optionally provide a reason. The reason is surfaced to the agent so it can adjust its response.
* **Text and SMS only.** Approval gates are enforced on text and SMS conversation paths. Voice conversations do not yet support the approval gate.

**What you need to do:**

* **No action required for existing integrations.** The default approval policy is None, so all endpoint calls continue to execute immediately.
* **To enable approval gates,** set the Approval Policy when creating a new integration, or update an existing integration through the API. Then use the Text playground (or the API endpoints) to approve or reject pending actions during conversations.

</details>

<details>

<summary>v2.134.2 - Developer Console: CSP Updated for Call Recording Playback (July 2026)</summary>

#### CSP Updated for Call Recording Playback

The Content Security Policy now permits media playback from in-memory object URLs, fixing call recording playback on the Calls detail page.

**What changed:**

* **Call recording playback unblocked.** The Calls detail page plays back call recordings by fetching the audio file and creating an in-memory object URL for the browser's audio element. The previous CSP had no `media-src` directive, so the browser fell back to the default policy, which blocked these in-memory URLs. Audio and video media loads now explicitly allow the same source types as image loads (same-origin, data URIs, in-memory object URLs, and HTTPS), so recordings play without being blocked by the security policy.
* **No security regression.** The new directive mirrors the existing image source policy. No additional origins or protocols are permitted beyond what was already allowed for images.

**What you need to do:**

* **No action required.** Call recording playback on the Calls page now works without workarounds. All other console functionality is unchanged.

</details>

<details>

<summary>v2.134.1 - Developer Console: CSP Updated for Voice Playground Worklets (July 2026)</summary>

#### CSP Updated for Voice Playground Worklets

The Content Security Policy now permits the script sources required by the Voice playground's audio worklets, fixing voice mode in the playground.

**What changed:**

* **Voice playground audio worklets unblocked.** The Voice playground uses audio worklets for microphone capture and PCM playback. These worklets are loaded from dynamically constructed sources that browsers enforce against the CSP script-src directive. The previous policy blocked these loads, which silently broke voice mode. The CSP now allows the required source types so both the playback and recording worklets load correctly.
* **Worker-src updated.** The worker-src directive has been expanded to match, ensuring consistency between script and worker source policies.
* **No security regression.** The policy already permits inline scripts and eval for framework compatibility. The additional source types do not weaken the existing policy. The planned follow-up to move to per-request nonces will supersede the current inline/eval grants.

**What you need to do:**

* **No action required.** If you use the Voice playground, voice mode now works without workarounds. All other console functionality is unchanged.

</details>

<details>

<summary>v2.134.0 - Developer Console: Agent-First Text Playground Sessions (July 2026)</summary>

#### Agent-First Text Playground Sessions

The Text playground now lets you choose whether the user or the agent speaks first when starting a conversation.

**What changed:**

* **Start mode selector.** A new toggle appears next to the Start button in the Text playground. You can choose between "User first" (the default) and "Agent first" before starting a session.
* **Agent-first mode.** When you select "Agent first" and start a session, the platform sends an initial turn to the agent immediately after session creation. The agent generates the opening message without waiting for user input. This is useful for testing greeting behavior, proactive outreach scripts, and scenarios where the agent should initiate the conversation.
* **User-first mode unchanged.** The default behavior is identical to previous releases - the session waits for you to type the first message.
* **Available on new and restarted sessions.** The start mode selector appears both when starting a fresh session and when starting a new session after the previous one has ended.

**What you need to do:**

* **No action required.** The default behavior (user-first) is unchanged. Use the new toggle to test agent-initiated conversation flows.

</details>

<details>

<summary>v2.133.0 - Developer Console: Simulation Write Actions Gated by Role (July 2026)</summary>

#### Simulation Write Actions Gated by Role

The Developer Console now enforces role-based permissions on simulation write actions in the UI, matching the permission model already enforced by the platform API.

**What changed:**

* **Run Case button permission-gated.** The Run button on saved simulation cases in the Case Library is disabled for users whose workspace role does not carry the Service update permission. A tooltip explains that admin or owner access is required. If a 403 is returned from the API (for example, due to a role change after page load), the error message indicates the permission requirement instead of showing a generic failure.
* **Run Suite button permission-gated.** The Run button on simulation suites is disabled for viewer, operator, and member roles, with the same explanatory message. API-level 403 errors are surfaced with a clear permission message.
* **New simulation run form permission-gated.** The simulation run form (used for spot-check and bridge runs) disables the submit button and displays a permission message for roles that lack write access. The form cannot be submitted even if the user bypasses the disabled state.
* **Consistent permission messaging.** All gated actions display the same message: admin or owner access is required to run simulations.

**What you need to do:**

* **No action required.** If you have admin or owner access, simulation controls work as before. If you have viewer, operator, or member access, simulation write actions were already rejected by the API with a 403 - the console now disables those controls proactively instead of showing an error after submission.

</details>

<details>

<summary>v2.132.2 - Developer Console: CSP and HSTS Restored with CDN Compatibility (July 2026)</summary>

#### CSP and HSTS Restored with CDN Compatibility

The Developer Console re-introduces Content Security Policy (CSP) and HSTS headers, resolving the compatibility issues that caused the rollback in v2.132.1. The CSP now accounts for CDN-served static assets, so all pages render and function correctly in deployed environments.

**What changed:**

* **CSP and HSTS restored.** The full Content Security Policy and HTTP Strict Transport Security headers are back on every response. The CSP has been updated to allow script, style, and font loading from the CDN origin that serves static assets, fixing the rendering and interactivity issues seen in v2.132.0.
* **All routes covered.** Security headers are applied at both the routing configuration level (covering all pages including login, workspace selection, device approval, and static assets) and on responses issued directly by the authentication middleware (redirects, error responses). No response leaves the console without the full header set.
* **HSTS configuration unchanged.** Strict-Transport-Security uses a two-year max-age without `includeSubDomains` or `preload`, consistent with v2.132.0.
* **CSP inline/eval note.** The policy still permits inline scripts and eval to support the application framework and bundled libraries. A follow-up release will move to per-request nonces for stronger script-injection protection.

**What you need to do:**

* **No action required.** This is a security hardening change. All console functionality works as before. If you embed the Developer Console in an iframe, note that framing is blocked by both X-Frame-Options and CSP frame-ancestors.

</details>

<details>

<summary>v2.132.1 - Developer Console: Security Header Scope Adjustment (July 2026)</summary>

#### Security Header Scope Adjustment

The Developer Console reverted the broad Content Security Policy (CSP) and HSTS headers introduced in v2.132.0 due to compatibility issues. Core security headers remain in place on all authenticated routes.

**What changed:**

* **CSP and HSTS removed.** The Content Security Policy and HTTP Strict Transport Security headers added in v2.132.0 have been removed while the team addresses compatibility with the application framework and bundled libraries. These will be reintroduced in a future release with a refined policy.
* **Core security headers retained.** X-Content-Type-Options, X-Frame-Options, X-XSS-Protection, Referrer-Policy, and Permissions-Policy headers continue to be applied on all responses passing through the authentication middleware. Clickjacking protection via `X-Frame-Options: DENY` remains active.
* **No change to console functionality.** All pages and features work as before. The only difference is that CSP and HSTS headers are no longer present in responses until the follow-up release.

**What you need to do:**

* **No action required.** This is an internal security adjustment. If you were relying on the HSTS or CSP headers introduced in v2.132.0, note that they are temporarily removed and will return in a future version.

</details>

<details>

<summary>v2.132.0 - Developer Console: Security Headers on All Routes (July 2026)</summary>

#### Security Headers on All Routes

The Developer Console now applies a full set of HTTP security headers to every route, including pages that were previously served without them.

**What changed:**

* **Security headers on all pages.** Content Security Policy (CSP), HTTP Strict Transport Security (HSTS), X-Frame-Options, X-Content-Type-Options, Referrer-Policy, Permissions-Policy, and X-XSS-Protection headers are now set on every response - including authentication pages, workspace selection, device approval, and static assets. Previously, some pages outside the authenticated routes were served without security headers.
* **Clickjacking protection.** Both `X-Frame-Options: DENY` and CSP `frame-ancestors 'none'` are set, providing clickjacking protection in both modern and legacy browsers.
* **HSTS enabled.** Strict-Transport-Security is set with a two-year max-age, instructing browsers to use HTTPS for all future requests to the console. The `includeSubDomains` and `preload` directives are intentionally omitted for now pending a subdomain audit.
* **Content Security Policy.** The CSP restricts script origins, disables object embeds, constrains frame embedding, and limits form actions. Note: the current policy still permits inline scripts and eval to support the application framework and bundled libraries - a follow-up will move to per-request nonces for stronger script-injection protection.
* **Consistent coverage.** Security headers are applied at both the routing configuration level and on responses issued directly by the authentication middleware (redirects, error responses), ensuring no response leaves the console without the full header set.

**What you need to do:**

* **No action required.** This is a security hardening change. All console functionality works as before. If you embed the Developer Console in an iframe, note that framing is now blocked by both X-Frame-Options and CSP frame-ancestors.

</details>

<details>

<summary>v2.131.0 - Developer Console: Device Login Preserves Return URL (July 2026)</summary>

#### Device Login Preserves Return URL

The Developer Console now preserves the return destination through the entire device login authentication flow. When an unauthenticated user lands on the device approval page, signs in via Google, and selects a workspace, they are automatically returned to the device approval page instead of landing on the dashboard.

**What changed:**

* **Return URL preserved through sign-in.** When the device approval page redirects an unauthenticated user to sign in, it now passes the approval page URL as a post-login destination. This destination is carried through Google authentication and workspace selection, so the user lands back on the device approval page after completing sign-in.
* **Updated sign-in prompt.** The device approval page now tells users "we'll bring you right back here afterward" instead of asking them to re-open the link from their CLI. The flow is now automatic - no manual re-navigation required.
* **Open-redirect protection.** The return URL is validated at every step in the chain to ensure it is a same-origin internal path. Protocol-relative URLs, backslash-prefixed paths, and external URLs are rejected, falling back to the default dashboard destination.

**What you need to do:**

* **No action required.** This is a UX improvement to the device login flow. Users authenticating via CLI device codes will now experience a smoother flow that returns them to the approval page automatically after sign-in.

</details>

<details>

<summary>v2.130.0 - Developer Console: Example Mode for Console Pages (July 2026)</summary>

#### Example Mode for Console Pages

The Developer Console now supports an example mode that displays representative sample data across all major console pages. This lets prospective users and new workspace members explore the console experience without requiring a configured workspace with live data.

**What changed:**

* **Example mode on all primary pages.** The Dashboard, Calls, Call Detail, Data Sources, Actions, Agent Memory, and Agent Readiness pages can now display pre-populated example content showing realistic healthcare workflow data - including sample agents, calls, data sources, tools, memory dimensions, and readiness results.
* **Feature-gated activation.** Example mode is controlled by a feature gate. When enabled, each console page renders example content instead of loading live workspace data. This is useful for demos, onboarding walkthroughs, and evaluating the console before connecting production systems.
* **Local override for development.** In local and preview environments, example mode can be activated via a URL parameter (`?example=1`) or session storage, allowing developers and sales teams to toggle example content without requiring a feature gate change.
* **No impact on production workspaces.** When example mode is not enabled, all pages behave exactly as before. Live data loading, filtering, and interaction are unchanged.

**What you need to do:**

* **No action required.** This is an additive feature. Existing workspaces and console behavior are unaffected. Example mode is only visible when explicitly enabled through the feature gate or local override.

</details>

<details>

<summary>v2.129.0 - Developer Console: Text Playground Action Loading State (July 2026)</summary>

#### Text Playground Action Loading State

The text playground turn detail panel now shows a loading indicator for available actions while a turn is in-flight, instead of displaying stale actions from a previous turn.

**What changed:**

* **Loading state for available actions.** When a message is being sent and the latest turn has not yet received its available actions from the conversation detail, the turn detail panel now displays a skeleton loading indicator under "Loading available actions" instead of showing actions from a prior turn or an empty list.
* **No more stale action display.** Previously, selecting the most recent turn while a message was in-flight could show available actions from the previously completed turn, which was misleading. The panel now correctly distinguishes between "actions not yet loaded" and "no actions available."
* **No change for completed turns.** Turns that have already received their available actions from the conversation detail continue to display them as before. The loading state applies only to the latest turn while a response is pending.

**What you need to do:**

* **No action required.** The turn detail panel now shows an explicit loading state for available actions while a turn is in-flight, so the actions displayed accurately reflect the current turn state.

</details>

<details>

<summary>v2.128.0 - Developer Console: Create Workspace Hidden for Non-Admin Users (July 2026)</summary>

#### Create Workspace Hidden for Non-Admin Users

The workspace selection page in the Developer Console no longer shows the "Create Workspace" option to users who lack the required permissions. This mirrors the backend restriction introduced in Platform API v0.9.281, where workspace creation requires the `workspaces:write` scope carried only by admin and owner credentials.

**What changed:**

* **Create Workspace button hidden for non-admin users.** The workspace selection page now checks whether the current user holds an admin or owner role in at least one existing workspace. If not, the "Create Workspace" action is not displayed. This prevents users from encountering a permission error after clicking a button that would always fail.
* **Updated empty state messaging.** Users who have no workspace memberships now see the title "No workspace access yet" and a message directing them to ask a workspace administrator for an invitation. Previously, the empty state encouraged creating a workspace, which would fail for users without admin or owner credentials.
* **No change for admin and owner users.** Users who hold admin or owner roles in at least one workspace continue to see the "Create Workspace" option as before.

**What you need to do:**

* **No action required.** This is a UX improvement that aligns the Developer Console with the backend permission model. Users who could not create workspaces before (due to the backend restriction) will no longer see a button that fails. Users with admin or owner access are unaffected.

</details>

<details>

<summary>v2.127.0 - Developer Console: One-Click Invite via Magic Link (July 2026)</summary>

#### One-Click Invite via Magic Link

Workspace invitation links now work end-to-end with magic-link sign-in. When an invited user clicks a magic-link that carries an invitation reference, the Developer Console signs them in and routes them directly into the invited workspace - no extra clicks required.

**What changed:**

* **Invitation-aware magic links.** Invitation emails can now include the invitation identifier in the magic-link URL. After the user clicks the link and the sign-in token is exchanged, the console detects the invitation reference and hands off to the invitation acceptance flow automatically.
* **Validated invitation reference.** The invitation identifier embedded in the link is validated as a well-formed invitation ID before it is used. If the value does not match the expected format, it is silently ignored and the user proceeds through the normal post-login flow. This prevents the redirect target from being steered to an arbitrary destination.
* **Straight-to-workspace experience.** After sign-in, the user is routed to the invitation acceptance handler, which pins the invitation and lands the user on the workspace selection page where auto-accept (introduced in v2.126.0) takes over. The combined effect is that clicking one link in an email signs the user in and drops them into the workspace.
* **Secure token handling preserved.** The sign-in token is still scrubbed from the browser URL and history immediately after extraction, before any network request is made. The invitation identifier does not extend the token's lifetime or exposure window.

**What you need to do:**

* **No action required.** This is a UX improvement for the invitation flow when using magic-link sign-in. All existing sign-in methods, invitation behavior, and workspace selection continue to work unchanged. Users who arrive via a magic link without an invitation reference see the same post-login flow as before.

</details>

<details>

<summary>v2.126.0 - Developer Console: Auto-Accept Invitation After Sign-In (July 2026)</summary>

#### Auto-Accept Invitation After Sign-In

The Developer Console now automatically accepts a pending workspace invitation when a user arrives through an invite link and completes sign-in. Previously, invited users had to click an "Accept" button on the workspace selection page after signing in - a redundant step since they already expressed intent by clicking the invite link.

**What changed:**

* **Automatic invitation acceptance.** When a user clicks an invite link, signs in (or signs up), and lands on the workspace selection page, the console now detects the pending invitation that matches the invite link and accepts it automatically. The user sees a "Joining \[workspace name]" screen with a progress indicator instead of a manual accept button.
* **Only the linked invitation is auto-accepted.** Auto-accept applies exclusively to the invitation referenced by the invite link. If a user has multiple pending invitations, only the one they clicked through is accepted automatically. All other invitations still require a deliberate click to accept.
* **Graceful fallback on failure.** If the automatic acceptance fails for any reason, the console falls back to the standard manual accept UI with the error displayed. The user can retry by clicking the accept button manually.
* **No flash of manual UI.** The "Joining" screen appears immediately when the matching invitation is detected, so there is no brief flash of the accept button before the auto-accept takes effect.

**What you need to do:**

* **No action required.** This is a UX improvement for the invitation flow. All existing sign-in methods, invitation behavior, and workspace selection continue to work unchanged. Users who arrive without an invite link see the same workspace selection page as before.

</details>

<details>

<summary>v2.125.0 - Developer Console: Passwordless Magic-Link Login (July 2026)</summary>

#### Passwordless Magic-Link Login

The Developer Console login page now supports passwordless magic-link sign-in as an alternative to Google OAuth. Users enter their email address and receive a single-use sign-in link - no password required.

**What changed:**

* **Magic-link sign-in option on login page.** When enabled, the login page displays an email input below the existing sign-in options. Enter your email address and click "Email me a sign-in link" to receive a one-time login link. The confirmation message is intentionally generic and does not reveal whether an account exists for the address.
* **One-click sign-in from email.** Clicking the link in the email signs you in automatically. The link is single-use and expires after a short window. If the link has already been used or has expired, you are shown a clear error with an option to request a new one.
* **Multi-workspace support.** If your account belongs to multiple workspaces, you are routed to the workspace selection page after clicking the magic link. Because magic-link tokens are single-use, an expired workspace selection session redirects you back to the login page to request a new link rather than attempting a silent re-authentication.
* **Controlled rollout.** Magic-link login is gated by a server-side configuration flag. The feature does not appear on the login page until it is explicitly enabled for your deployment.

**What you need to do:**

* **No action required for existing users.** Google OAuth and all other existing sign-in methods continue to work unchanged. Magic-link login is an additional option that appears when enabled.

</details>

<details>

<summary>v2.124.0 - Developer Console: API Keys and Personal Access Tokens Consolidated on Developer Page (July 2026)</summary>

#### API Keys and Personal Access Tokens Consolidated on Developer Page

The Developer Console now routes all API key and Personal Access Token (PAT) management to the tabbed Developer page. The standalone API Keys and Personal Access Tokens pages have been removed.

**What changed:**

* **Single Developer page with tabs.** API keys and Personal Access Tokens are now managed on the Developer page under the `api-keys` and `tokens` tabs respectively (`/{workspace}/developer?tab=api-keys` and `/{workspace}/developer?tab=tokens`). The previous standalone routes (`/{workspace}/api-keys` and `/{workspace}/personal-access-tokens`) have been removed.
* **Navigation updated.** Sidebar navigation, the account page quick-action links, the user menu, and the home page developer setup section all link to the appropriate Developer page tab instead of the removed standalone pages.
* **Create API Key flow unchanged.** The API key creation wizard continues to work at its existing route and returns to the Developer page API keys tab on completion or cancellation.

**What you need to do:**

* **Update any bookmarks or saved links.** If you have bookmarked `/{workspace}/api-keys` or `/{workspace}/personal-access-tokens`, update them to `/{workspace}/developer?tab=api-keys` and `/{workspace}/developer?tab=tokens` respectively.

</details>

<details>

<summary>v2.123.0 - Developer Console: Case Library and Suite Loading Improvements (July 2026)</summary>

#### Case Library and Suite Loading Improvements

The Developer Console Case Library and Suites pages now load case data more efficiently and display richer case detail information.

**What changed:**

* **Suite-aware case loading.** When a suite is selected on the Case Library page, the console now loads only the cases belonging to that suite rather than fetching the entire case library. Suites with explicit case lists load those cases directly; suites with required tags fetch matching cases using tag filters. Hybrid suites that use both explicit case lists and required tags load from both sources and merge the results.
* **Paginated case loading with load-more.** The Case Library now loads cases incrementally with a "Load more cases" button instead of attempting to fetch the entire library at once. The table header displays loaded and total case counts so you can see how much of the library has been fetched.
* **Improved case detail display.** The case detail panels now show temperament in the scenario section, display case ID, workspace ID, service ID, and created-by fields in the metadata section, and render evaluation criteria as structured cards instead of raw JSON. Grounding data and metadata are displayed as human-readable key-value grids with nested value support rather than collapsed JSON blocks.
* **Service filter disabled during suite filtering.** The service filter is now automatically disabled when a suite filter is active, since suite membership already determines which cases are shown.
* **Unknown suite handling.** Selecting a suite filter value that does not match any saved suite now shows a clear "Unknown simulation suite" message with an option to clear the filter, instead of showing an empty table.
* **Suites page no longer loads all cases.** The Suites page now displays suite metadata and case counts from the suites API directly, without loading the full case library. This significantly improves page load time for workspaces with large case libraries.
* **Simplified suite table display.** The Suites table now shows case counts and timestamps with a cleaner layout, removing redundant service and patient binding details that are better viewed on the Case Library page.

**What you need to do:**

* **No action required.** These are display and performance improvements. All existing case and suite data is unchanged.

</details>

<details>

<summary>v2.122.0 - Developer Console: Voice Defaults Tab Removed from Workspace Settings (July 2026)</summary>

#### Voice Defaults Tab Removed from Workspace Settings

The Voice Defaults tab has been removed from the Developer Console workspace settings page. Workspace-level voice configuration - including TTS provider selection, per-language TTS routing, voice ID, tone, speed, volume, domain awareness (keyterms, correction categories, pronunciation dictionary), sensitive topics, and post-call intelligence toggles - is no longer managed through workspace settings.

**What changed:**

* **Voice Defaults tab removed from settings.** The workspace settings page no longer includes a Voice Defaults tab. The remaining tabs are General and Retention.
* **Voice configuration moved to agent and service level.** Voice settings such as TTS provider, voice ID, tone, speed, and volume are now configured per agent or per service rather than as workspace-wide defaults. This gives you more granular control over voice behavior across different agents and services within a workspace.

**What you need to do:**

* **Review your voice configuration.** If you previously relied on workspace-level voice defaults, verify that your agents and services have the voice settings they need configured directly. Workspace-level defaults no longer apply.

</details>

<details>

<summary>v2.121.0 - Developer Console: Security Tab Removed from Workspace Settings (July 2026)</summary>

#### Security Tab Removed from Workspace Settings

The Security tab has been removed from the Developer Console workspace settings page. Security features including session management, IP allowlists, account lockout management, and egress IP display are no longer accessible through workspace settings.

**What changed:**

* **Security tab removed from settings.** The workspace settings page no longer includes a Security tab. The remaining tabs are General, Voice Defaults, and Retention.
* **Admin security page removed.** The standalone admin security page has also been removed. Security management for workspaces is no longer available through the Developer Console.

**What you need to do:**

* **No action required.** If you previously used the Security tab to manage IP allowlists, view locked accounts, manage sessions, or view egress IPs, these controls are no longer available in the Developer Console. Contact your account team if you need to manage workspace security settings.

</details>

<details>

<summary>v2.120.0 - Developer Console: Integration Type Handling Improvements (July 2026)</summary>

#### Integration Type Handling Improvements

The Developer Console now handles integration types more consistently across the tools and integrations pages, improving reliability when the API omits the integration kind field.

**What changed:**

* **Consistent integration kind display.** Integration detail pages, the integrations table, and the integration tool picker now display the integration kind reliably even when the API response omits the field. REST integrations are correctly identified and labeled throughout the console.
* **REST-specific fields shown only for REST integrations.** Configuration details like base URL, auth type, and endpoint count are now shown only for REST integrations using a consistent check. Desktop integrations no longer show empty or irrelevant REST fields.
* **Integration test dialog improvements.** The integration test dialog now correctly resolves only REST integrations when looking up tools by name or endpoint ID. Non-REST integrations are excluded from test resolution, preventing confusing error states.
* **Tool inventory filtering.** The tools overview page now filters integration endpoints to REST integrations before building the tool inventory, ensuring that only actionable REST endpoints appear in the unified tools list.

**What you need to do:**

* **No action required.** These are display and consistency improvements. No API behavior, integration configuration, or data model has changed.

</details>

<details>

<summary>v2.117.0 - Developer Console: Data Sources Connector Catalog and Page Redesign (July 2026)</summary>

#### Data Sources Connector Catalog and Page Redesign

The Developer Console data sources section has been redesigned with a new connector catalog, reorganized page tabs, and a detail drawer for each connector.

**What changed:**

* **Connector catalog tab.** The data sources page now opens to a Connector Catalog tab that displays all available, connected, paused, and coming-soon connectors organized by category: EHR & Clinical, CRM & Engagement, Data Warehouses, Data Lakes & Pipelines, Messaging & Telephony, and Files & Custom. Each connector is shown as a card with its name, connection protocol, and status badge. A search bar and segmented status filter let you narrow the catalog to find specific connectors.
* **Connector detail drawer.** Clicking any connector card opens a side drawer with a description, the list of entities that Amigo ingests from that system, compliance details (HIPAA, PHI handling, BAA), and connection steps. Connected or paused connectors show their current workspace status and a field mapping preview. Coming-soon connectors display a notice that the connector is under development.
* **Three-tab layout.** The page now uses three top-level tabs: Connector Catalog, Sources, and Upload. The previous two-tab layout (Sources and Upload) has been replaced. The Sources tab retains the connected sources table with filtering, search, health badges, and sync history. The Upload tab retains the existing file upload functionality.
* **Stat strips on each tab.** The Connector Catalog tab shows summary counts for connected, paused, available, and coming-soon connectors. The Sources tab shows total sources, active count, sources needing attention, and time since last sync.
* **Page header redesigned.** The data sources page header now includes a hero section describing the platform's data ingestion capabilities and a data flow diagram illustrating how sources are normalized and mapped into the world model.
* **Source count badges on tabs.** The Connector Catalog and Sources tab labels show count badges indicating the number of connectors in the catalog and the number of connected sources, respectively.
* **Default tab changed.** The data sources page now defaults to the Connector Catalog tab instead of the Sources tab.
* **Custom connector request CTA.** A footer section at the bottom of the catalog encourages users to request custom connectors, noting a two-week turnaround from request to production sync.

**What you need to do:**

* **No action required.** These are visual and navigation changes to the data sources section. No data, API behavior, or connector configuration has changed. Bookmarks or links using the previous `?view=sources` query parameter will continue to work; the new tab values are `catalog`, `active`, and `upload`.

</details>

<details>

<summary>v2.116.0 - Developer Console: Simulations Observability Improvements (July 2026)</summary>

#### Simulations Observability Improvements

The Developer Console simulations section has been redesigned with improved run grouping, richer run detail headers, and a reorganized case library layout.

**What changed:**

* **Suite runs are grouped in the runs list.** Simulation runs triggered as part of a suite execution are now collapsed into a single expandable row in the runs table. The collapsed row shows an aggregate status, total sessions and turns, and the services involved. Expand the row to see individual child runs. Standalone case runs and spot checks remain as individual rows.
* **Run source filter.** A new filter dropdown on the simulations page lets you filter the runs list by execution source: all runs, suite runs, case runs, or spot checks. The filter is also accessible via the `source` URL query parameter, so links from suite run confirmations can pre-filter to suite runs.
* **Run overview summary.** The runs list now displays summary cards showing the count of suite runs, case runs, and spot checks, along with how many runs are visible under the current filters.
* **Run detail header shows outcome cards.** The run detail page now displays three outcome cards at the top: session score (percentage of sessions passing above threshold with pass/total counts), eval results (passed/total with failed and pending breakdowns), and run status (with duration when completed).
* **Execution context on each run row.** Each run row now shows contextual information below the source badge, such as the originating suite or case ID, helping you trace a run back to its source without opening the detail page.
* **Case library redesigned.** The case library table has been rebuilt with an expandable detail row for each case. Clicking a case row expands an inline panel showing scenario, persona, eval criteria, service, labels, patient binding, and opening message. The table columns now include binding, evals summary, and suite membership.
* **Suite names shown on cases.** The case library now displays which suites each case belongs to, derived from suite membership rather than case tags.
* **Suites page simplified.** Suite cards now show service names, patient binding counts, and required tags in a compact layout. Entity preview lists and summary stat blocks have been replaced with inline metadata.
* **Suite run confirmation improved.** After triggering a suite run, the confirmation banner now shows the batch ID, skipped count, and failed-to-start count, with a direct link to the runs page filtered to suite runs.
* **Services load with full pagination.** The simulations pages now load the complete service list across all pages, so service name resolution is accurate for workspaces with large service catalogs.
* **Column renamed.** The "Source" column in the runs table has been renamed to "Execution" and the "Tags" column has been renamed to "Labels" to better describe their content.

**What you need to do:**

* **No action required.** These are visual and usability improvements to the simulations section. No data, API behavior, or simulation execution logic has changed.

</details>

<details>

<summary>v2.115.0 - Developer Console: Workspace Selection Sorted Alphabetically (July 2026)</summary>

#### Workspace Selection Sorted Alphabetically

The Developer Console workspace selection screen now sorts workspaces alphabetically by name.

**What changed:**

* **Workspaces sorted by name.** The workspace selection list displayed after login now sorts workspaces alphabetically by name using locale-aware, case-insensitive ordering with natural numeric sorting (e.g., "Workspace 2" appears before "Workspace 10"). Workspaces with identical display names are sorted by ID as a tiebreaker.
* **Display name fallback.** Workspaces without a name are sorted by their workspace ID, consistent with the existing display logic that shows the ID when no name is set.

**What you need to do:**

* **No action required.** This is a visual improvement to workspace selection ordering. No functionality or workspace data has changed.

</details>

<details>

<summary>v2.114.0 - Developer Console: Sortable Last Event Column on Data Source Entities (July 2026)</summary>

#### Sortable Last Event Column on Data Source Entities

The Developer Console data source entities table now supports sorting by the Last Event column.

**What changed:**

* **Last Event column is sortable.** The Last Event column header in the data source entities table is now a clickable sort toggle. Clicking cycles through three states: newest first, oldest first, and default ordering. A directional arrow icon indicates the current sort direction.
* **Pagination resets on sort change.** Changing the sort order resets pagination to the first page, so you always see results from the beginning of the new ordering.
* **Default behavior unchanged.** When no sort is selected, the table continues to display entities in the same default order as before.

**What you need to do:**

* **No action required.** This is an additive UI enhancement. Existing data source entity browsing behavior is unchanged unless you click the new sort toggle.

</details>

<details>

<summary>v2.113.0 - Developer Console: Sidebar Navigation Label Truncation Fixed (July 2026)</summary>

#### Sidebar Navigation Label Truncation Fixed

The Developer Console sidebar no longer truncates navigation labels when the sidebar is in its expanded state.

**What changed:**

* **Navigation labels display fully.** Previously, sidebar navigation labels could be clipped due to extra padding in the sidebar layout. Labels now display their full text in the expanded sidebar view.
* **Collapsed sidebar alignment improved.** When the sidebar is collapsed to icon-only mode, navigation icons are now centered correctly within the sidebar rail.

**What you need to do:**

* **No action required.** This is a visual fix. Navigation behavior and sidebar functionality are unchanged.

</details>

<details>

<summary>v2.112.0 - Developer Console: Execution Tier Removed from Skills UI (July 2026)</summary>

#### Execution Tier Removed from Skills UI

The Developer Console no longer displays execution tier information for skills. The skill creation wizard has been simplified to remove tier selection and computer-use-specific configuration steps.

**What changed:**

* **Tier selection step removed from skill creation.** The "Action Type" step that let you choose between orchestrated and computer use execution has been removed. All new skills use the standard orchestrated execution model. The creation wizard now starts at the template selection step.
* **Computer use configuration steps removed.** The "Execution" step (agent loop settings including max agent turns, checkpointing, and approval required) is no longer part of the skill creation wizard. These fields are no longer included in the skill creation form.
* **Tier badge removed from skills table.** The skills list table no longer shows a Tier column. The execution tier filter has been removed from the table filter controls.
* **Tier badge removed from tools inventory.** The per-service tools view no longer displays an execution tier badge on skill entries.
* **Skill detail page simplified.** The skill configuration tab no longer shows an execution tier banner or computer-use-specific agent loop configuration (max agent turns, checkpointing). The approval required field has been removed from the companion agent configuration card.

**What you need to do:**

* **No action required.** These are UI-only changes that align the Developer Console with the platform API changes in v0.9.247 that removed the computer use execution tier. Existing skills continue to work as before.

</details>

<details>

<summary>v2.111.0 - Developer Console: Integrations Table and Skill Binding Copy Simplified (July 2026)</summary>

#### Integrations Table and Skill Binding Copy Simplified

The Developer Console integrations table no longer displays the Kind column, and copy referencing "skill tools" has been simplified.

**What changed:**

* **Kind column removed from integrations table.** The integrations list no longer shows a Kind column (REST / Desktop). The Kind filter has also been removed from the table filter controls.
* **Simplified integration tool picker copy.** The integration tool picker no longer refers to "skill tools" - it now says "tools" instead. The descriptive subtitle below the "Integration Tools" heading has been removed. The empty-state message now reads "Create an integration first, then come back to wire it" instead of referencing skills.
* **Server-side filtering only.** The integrations table now uses server-side filtering exclusively. The previous client-side filtering behavior for the Kind column is no longer needed.

**What you need to do:**

* **No action required.** These are cosmetic changes. Integration functionality is unchanged.

</details>

<details>

<summary>v2.110.0 - Developer Console: Playground Service Ordering Preserved from Server (July 2026)</summary>

#### Playground Service Ordering Preserved from Server

The Developer Console playground now displays active services in the order returned by the server rather than re-sorting them alphabetically on the client.

**What changed:**

* **Server-defined service ordering.** The playground services list previously sorted active services alphabetically by name on the client side. Services are now displayed in the order the server returns them, which preserves any server-side ordering logic (such as relevance or configuration order).

**What you need to do:**

* **No action required.** The service list in the playground may appear in a different order than before. The set of displayed services has not changed - only active services are shown, with pagination for large catalogs.

</details>

<details>

<summary>v2.109.0 - Developer Console: Retention Policy Constraints Aligned with Platform API (July 2026)</summary>

#### Retention Policy Constraints Aligned with Platform API

The Developer Console retention settings now enforce the same constraints as the platform API, and save operations surface clearer feedback on success and failure.

**What changed:**

* **Minimum retention raised to 365 days.** All retention period fields (call recordings, call transcripts, audit logs, world events, PHI data) now require a minimum of 365 days, matching the platform API constraint. The previous minimum of 1 day is no longer accepted.
* **Maximum retention capped at 36,500 days.** Retention periods cannot exceed 36,500 days (approximately 100 years). Values above this limit are rejected with a validation message.
* **Whole numbers required.** Retention values must be whole numbers. Decimal values are rejected with a validation message.
* **Default values updated.** When no existing policy is set, all retention fields now default to 365 days instead of the previous defaults (90 days for most fields, 365 for audit logs).
* **Improved save feedback.** Success and error messages after saving retention settings are now more descriptive. Error messages include detail from the server response when available.

**What you need to do:**

* **Review existing retention settings.** If any retention period was previously set below 365 days, update it to at least 365 days. The form will reject values outside the 365-36,500 day range.

</details>

<details>

<summary>v2.108.0 - Developer Console: Environment Overrides Removed from Settings (July 2026)</summary>

#### Environment Overrides Removed from Settings

The Environment Overrides tab has been removed from the Developer Console workspace settings. This feature was non-functional and has been cleaned up.

**What changed:**

* **Environments tab removed.** The "Environments" tab no longer appears in workspace settings. The settings page now includes General, Voice Defaults, Retention, and Security tabs.
* **Environment override management removed.** The key-value environment variable editor that previously appeared under the Environments tab is no longer available. No data was being persisted by this feature, so no existing configuration is lost.

**What you need to do:**

* **No action required.** The removed feature was not operational. No workspace configuration has changed.

</details>

<details>

<summary>v2.107.0 - Developer Console: MFA Configuration Removed from Security Settings (July 2026)</summary>

#### MFA Configuration Removed from Security Settings

Multi-factor authentication (MFA) configuration has been removed from the Developer Console security settings. MFA is now managed outside the Developer Console.

**What changed:**

* **MFA card removed from Your Security.** The "Your Security" section no longer includes the MFA enrollment, verification, or unenrollment card. The section now focuses on active session management.
* **Admin MFA reset removed from Workspace Security.** The "Reset User MFA" card has been removed from the workspace security settings. Administrators can no longer reset MFA for individual users from the Developer Console.
* **Section tooltip updated.** The "Your Security" tooltip now reads "Manage your active sessions" instead of referencing multi-factor authentication.

**What you need to do:**

* **No action required.** If you previously managed MFA through the Developer Console, use your organization's identity provider or authentication service to configure MFA going forward.

</details>

<details>

<summary>v2.106.0 - Developer Console: Playground Services Pagination and Active Filter (July 2026)</summary>

#### Playground Services Pagination and Active Filter

The Developer Console playground now paginates services and shows only active services, making it easier to find and test services in workspaces with large service catalogs.

**What changed:**

* **Only active services shown.** The playground services section now displays only active services. Inactive services are filtered out, so the list reflects services that are ready for testing.
* **Services sorted alphabetically.** Active services are sorted by name in ascending order, so you can find services predictably in large lists.
* **Pagination support.** The playground loads services in pages. When more services are available, a "Load more services" button appears below the service grid. Clicking the button fetches the next page of results.
* **Empty state updated.** When no active services are found, the playground displays "No active services found" with guidance to activate or create a service and a link to the Services page.

**What you need to do:**

* **No action required.** The playground automatically filters to active services and supports pagination. If you have inactive services you want to test, activate them from the Services page first.

</details>

<details>

<summary>v2.105.0 - Developer Console: Simulation Cases and Suites Aligned with Platform Schema (July 2026)</summary>

#### Simulation Cases and Suites Aligned with Platform Schema

The Developer Console simulation cases and suites pages have been updated to match the current platform API schema for simulation cases and first-class suites.

**What changed:**

* **Case detail view updated.** The case detail page now displays scenario content (instructions, initial message) and grounding data using the current platform schema structure. The "Fixtures and grounding" section is replaced by a dedicated "Grounding" section. The "Constraints", "Target spec", and "Assertions" sections are replaced by a single "Evals" section showing evaluation criteria. A new "Metadata" section displays the full case metadata object.
* **Case source displayed.** The case detail page and case library table now show the case source from metadata instead of the previous provenance label.
* **Suite filtering loads from the API.** The Case Library page now loads suites from the platform suites API rather than deriving them from case tags. Suite options in the filter dropdown are populated from first-class suite resources, ensuring consistency with the Suites page.
* **Suites page loads suite resources.** The Suites page now fetches suites from the dedicated suites API endpoint. Suites are no longer inferred from case tags. Each suite card displays its description and required tags alongside the existing case count and entity information.
* **Suite run uses suite ID.** Running a suite from the Suites page now targets the suite-specific run endpoint using the suite ID, rather than passing required tags to the general benchmark endpoint.
* **Page descriptions updated.** The Case Library page description now reads "Durable simulation cases with embedded personas, scenarios, patient bindings, and evals." The Suites page description now reads "Customer-defined sets of simulation cases that can be reviewed and run together."
* **Empty state messaging updated.** The empty state on the Suites page now reads "Create a simulation suite to group runnable cases" instead of referencing tag-based suite inference.

**What you need to do:**

* **No action required.** These changes align the Developer Console with the current platform API schema. If you previously relied on tag-derived suites in the Developer Console, create first-class suite resources through the API to see them in the updated UI.

</details>

<details>

<summary>v2.104.0 - Developer Console: Integrations UI Migrated to SDK 0.58.0 (July 2026)</summary>

#### Integrations UI Migrated to SDK 0.58.0

The Developer Console integrations pages have been updated to reflect the Platform API integration auth redesign and endpoint sub-resource changes introduced in SDK 0.58.0.

**What changed:**

* **Auth types updated throughout.** The integration creation wizard, detail page, and table now reflect the four new auth types: Static Header, OAuth2 Client Credentials, OAuth2 JWT Bearer, and Custom Token Exchange. The previous auth types (API Key Header, Bearer Token, Bearer Token Exchange, GCP Workload Identity, SMART Backend Services, JSON Token Exchange) are no longer available in the UI.
* **New "Custom Token Exchange" form.** The integration creation wizard includes a new form section for the Custom Token Exchange auth type, supporting exchange URL, body encoding (JSON or form), response token path (RFC 6901 JSON Pointer), static headers, static body fields, parameter headers, and parameter body fields.
* **OAuth2 JWT Bearer form expanded.** The JWT Bearer form now includes fields for assertion algorithm selection, assertion lifetime, include-iat and include-jti toggles, and an extra claims JSON editor.
* **OAuth2 Client Credentials form updated.** The Client Credentials form now includes a client auth method selector (HTTP Basic or Request Body).
* **"Secret Value" field replaces per-type secret fields.** All auth types now use a single "Secret Value" field in the creation wizard, matching the unified secret storage model in the API.
* **Integration "Kind" replaces "Protocol" and "Source".** The integrations table and detail page now display "Kind" (REST or Desktop) instead of "Protocol" and the previous "Built-in" / "Custom" source badge.
* **Endpoints loaded as a sub-resource.** The integration detail page now loads endpoints as a separate sub-resource rather than reading them inline from the integration object. The endpoint count is shown on the configuration card.
* **Inline endpoint editing removed.** The integration detail page no longer supports inline endpoint editing. Endpoint management is handled through the API or Agent Forge CLI.
* **Integration test dialog updated.** The integration test dialog in both the detail page and the playground now resolves endpoints via the sub-resource API, supporting the new endpoint data model.
* **Table filtering updated.** The integrations table now filters by "Kind" (REST, Desktop) instead of "Protocol". The kind filter is applied client-side.
* **Delete restricted to REST integrations.** Desktop integrations are system-provisioned and cannot be deleted from the Developer Console. The delete option is only shown for REST integrations.

**What you need to do:**

* **If you create integrations through the Developer Console:** The creation wizard now uses the new auth types and field names. Review the [Integration Auth Redesign changelog entry](/api-reference/change-logs/amigo-api.md) for migration details on each auth type.
* **If you previously edited endpoints inline on the detail page:** Use the Platform API or Agent Forge CLI to manage endpoints. The detail page now displays endpoints in read-only mode.

</details>

<details>

<summary>v2.103.0 - Developer Console: Tool Call Duration in Playground Inline View (July 2026)</summary>

#### Tool Call Duration in Playground Inline View

The Developer Console playground now displays tool call duration inline next to each tool call in the text conversation trace view.

**What changed:**

* **Tool call duration shown inline.** Each completed tool call in the inline agent trace now displays its duration in seconds with one decimal place (e.g. "1.2s", "0.1s", "12.3s"). The duration appears next to the tool name after the call completes.
* **Duration hidden for in-progress calls.** Tool calls that are still running do not show a duration chip. The duration only appears once the call has completed.
* **Failed tool calls show duration.** Failed tool calls display their duration in the same position, styled with a destructive color to visually associate the timing with the failure.
* **Zero-duration calls handled.** Instant tool calls (e.g. cache hits reporting zero duration) display "0.0s" rather than hiding the duration chip.
* **Accessible labeling.** The duration chip includes a screen-reader label describing the tool call timing.

**What you need to do:**

* **No action required.** This is an additive visual enhancement to the playground trace view. Tool call duration data was already available in the underlying events - it is now surfaced inline for easier debugging.

</details>

<details>

<summary>v2.102.0 - Developer Console: Secure Access Login Card Removed (July 2026)</summary>

#### Secure Access Login Card Removed

The "Secure access" informational card has been removed from the Developer Console login page. The login page now shows only the sign-in methods (Google, preview user, dev mode) without the additional security description panel.

**What changed:**

* **Secure access card removed.** The login page previously displayed an informational card below the sign-in buttons describing authentication details ("short-lived tokens and rotating refresh"). This card has been removed. The login page now ends after the sign-in method buttons.
* **Login card extracted as a standalone component.** The login UI has been refactored into a dedicated component with explicit props for each sign-in method, making the login page easier to test and maintain. No visual changes to the sign-in buttons, error banners, or reason banners.

**What you need to do:**

* **No action required.** This is a visual simplification of the login page. All sign-in methods continue to work as before.

</details>

<details>

<summary>v2.101.0 - Developer Console: Realtime Playground Mode Removed (July 2026)</summary>

#### Realtime Playground Mode Removed

The Realtime (stream) playground mode has been removed from the Developer Console. The playground now supports two modes: Voice and Text (simulation).

**What changed:**

* **Realtime mode removed from the playground.** The playground session page no longer offers a "Realtime" or "Stream" mode. The mode selector and service card links now show only Voice and Text options.
* **Service card links updated.** Service cards on the playground landing page no longer display a "Realtime" button. Voice services show Voice and Text buttons; text-only services show only the Text button.
* **Start button simplified.** The playground start button no longer displays authentication readiness states ("Opening", "Auth unavailable") that were specific to the realtime WebSocket transport. The start button is always enabled for text sessions.
* **Connection status banners simplified.** The playground no longer shows WebSocket-specific status banners (reconnection counts, token loading, authentication errors) since these applied only to the removed realtime mode.

**What you need to do:**

* **If you used the Realtime playground mode:** Use the Text (simulation) mode instead for interactive text-based testing. The Text mode provides the same conversation testing capabilities with the simulation transport.
* **If you bookmarked a playground URL with `?mode=stream`:** Update your bookmark to use `?mode=simulation` instead.

</details>

<details>

<summary>v2.100.0 - Developer Console: Simplified Conversation Status Badges (July 2026)</summary>

#### Simplified Conversation Status Badges

The conversation detail page now displays a single unified status badge with a tooltip, replacing the previous separate status and lifecycle badges.

**What changed:**

* **Single status badge with tooltip.** The conversation detail page now shows one status badge that combines the conversation status into a clear label (e.g. "Status: Closed", "Status: In progress"). Hovering over the badge displays a tooltip with a plain-language description of what the status means.
* **Lifecycle badge removed.** The separate lifecycle badge (Active, Dormant, Closed) that previously appeared alongside the status badge has been removed. The status badge now provides sufficient context on its own.
* **Status descriptions added.** Each status value now has a human-readable description shown in the tooltip, explaining whether the conversation is open, ended, in progress, completed, failed, or paused.

**What you need to do:**

* **No action required.** This is a visual simplification. The conversation detail page now presents status information more concisely with added context via tooltips.

</details>

<details>

<summary>v2.99.0 - Developer Console: Per-Endpoint Test Button on Integration Detail Page (July 2026)</summary>

#### Per-Endpoint Test Button on Integration Detail Page

Each endpoint listed on the integration detail page now has its own Test button, allowing you to test individual endpoints directly from the integration detail view.

**What changed:**

* **Per-endpoint Test button added.** Each endpoint card on the integration detail page now includes a Test button. Clicking the button opens the integration test dialog pre-configured for that specific endpoint, so you can invoke and verify individual endpoints without leaving the integration detail page.
* **Test dialog scoped to selected endpoint.** The test dialog opens with the selected endpoint's tool name pre-filled, so the test targets the exact endpoint you chose rather than requiring manual selection.

**What you need to do:**

* **No action required.** This is a new capability. You can now test individual integration endpoints directly from the integration detail page in the Developer Console.

</details>

<details>

<summary>v2.98.0 - Developer Console: Connection Health UI Removed from Integration Detail (July 2026)</summary>

#### Connection Health UI Removed from Integration Detail

The connection health card and test connection button have been removed from the integration detail page in the Developer Console.

**What changed:**

* **Connection health card removed.** The integration detail page no longer displays a connection health card. The card previously showed the most recent connection probe result and provided a "Test Connection" button for on-demand probing.
* **Test connection button removed.** The ability to trigger a connection probe from the integration detail page is no longer available.
* **Connection status badge removed.** The health status badge that displayed probe outcomes (healthy, auth failed, unreachable, timeout, SSL error, misconfigured) and last-tested timestamps is no longer shown on the integration detail page.

**What you need to do:**

* **If you previously used the Test Connection button:** On-demand connection probing is no longer available from the Developer Console integration detail page. Integration configuration and endpoint details remain visible and functional.

</details>

<details>

<summary>v2.97.0 - Developer Console: Developer Settings Section Removed (July 2026)</summary>

#### Developer Settings Section Removed

The Developer section has been removed from the Developer Console Settings page.

**What changed:**

* **Developer tab removed.** The Settings page no longer includes a Developer tab. This tab was previously available to internal users and allowed pinning backend traffic to a preview deployment by PR number.
* **Preview PR cookie management removed from the UI.** The ability to set or clear a preview PR cookie through the Settings interface is no longer available. Preview routing behavior for staging environments continues to function through other mechanisms.

**What you need to do:**

* **If you previously used the Developer settings tab:** This tab is no longer available in the console. Preview deployment routing is no longer configurable through the Settings page.

</details>

<details>

<summary>v2.96.0 - Developer Console: Analytics and Recordings Pages Removed (July 2026)</summary>

#### Analytics and Recordings Pages Removed

The Analytics and Recordings pages have been removed from the Developer Console. These pages are no longer accessible through the console interface.

**What changed:**

* **Analytics page removed.** The Analytics page - which displayed call quality, latency, tool performance, operator performance, emotion trends, event breakdowns, data quality, usage summaries, phone volume, and advanced call statistics - has been removed from the Developer Console.
* **Recordings page removed.** The Recordings page - which allowed browsing and playing back call recordings - has been removed from the Developer Console.
* **Navigation links removed.** The Analytics and Recordings entries in the workspace sidebar are no longer present.
* **Routes removed.** The `/analytics` and `/recordings` URL paths are no longer valid. Visiting these URLs will no longer load their respective pages.

**What you need to do:**

* **If you previously used the Analytics page:** Analytics dashboards are no longer available in the Developer Console. Call metrics and performance data remain available through the API.
* **If you previously used the Recordings page:** Call recording playback is no longer available in the Developer Console. Recordings remain accessible through the API.

</details>

<details>

<summary>v2.95.0 - Developer Console: Integration Updates in Maintenance Mode (July 2026)</summary>

#### Integration Updates in Maintenance Mode

The Developer Console integration detail page now reflects that integration endpoint updates are temporarily in maintenance mode.

**What changed:**

* **Endpoint editing disabled.** The Edit button for integration endpoints is no longer available on custom integrations while maintenance mode is active. The endpoints section displays existing endpoint configuration in read-only mode.
* **Maintenance banner.** A maintenance notice appears in the endpoints section of custom integrations, indicating that endpoint changes are temporarily paused and that existing configuration remains available.
* **Page description updated.** The integration detail page description for custom integrations now reads "Integration updates are temporarily unavailable" instead of "View and manage integration details."

**What you need to do:**

* **If you need to update integration endpoints:** Endpoint editing is temporarily unavailable. Existing endpoint configurations continue to function normally. This is a temporary maintenance state and editing will be re-enabled in a future release.

</details>

<details>

<summary>v2.94.0 - Developer Console: Updated Column on Resource List Pages (July 2026)</summary>

#### Updated Column on Resource List Pages

Resource list pages in the Developer Console now display an "Updated" column showing when each resource was last modified.

**What changed:**

* **Updated column added.** The list pages for agents, context graphs, services, integrations, and skills now include an "Updated" column. The column displays a relative timestamp (e.g. "3 hours ago", "2 days ago") indicating when the resource was last updated.
* **Applies to all resource types.** The new column appears on the Agents, Context Graphs, Services, Integrations, and Skills list pages.

**What you need to do:**

No action is required. The new column appears automatically on all resource list pages.

</details>

<details>

<summary>v2.93.0 - Developer Console: Billing Section Removed (July 2026)</summary>

#### Billing Section Removed

The Billing page has been removed from the Developer Console. Usage and invoice information is no longer available through the console interface.

**What changed:**

* **Billing page removed.** The Billing page - which displayed current and previous period usage summaries, meter breakdowns, usage trend charts, invoice status, and recent invoices - has been removed from the Developer Console.
* **Navigation link removed.** The Billing entry in the workspace sidebar is no longer present.
* **Billing route removed.** The `/billing` URL path is no longer valid. Visiting this URL will no longer load a billing dashboard.

**What you need to do:**

* **If you previously used the Billing page:** This page is no longer available in the Developer Console. Contact your account team for billing and usage inquiries.

</details>

<details>

<summary>v2.92.0 - Developer Console: Playground Loading Animation During Agent Initialization (July 2026)</summary>

#### Playground Loading Animation During Agent Initialization

The Developer Console voice playground now shows more detailed connection progress during test calls, distinguishing between agent initialization and transport connection phases.

**What changed:**

* **Phase-aware connection status.** The playground now displays "Preparing agent..." while the agent engine is initializing, then switches to "Connecting..." once initialization completes and the transport connection is being established. Previously, the playground showed a generic "Connecting..." message for the entire startup sequence.
* **Status badge reflects phase.** The header badge shows "Preparing" during agent initialization and "Connecting" during transport setup, giving a clearer picture of startup progress.
* **Cancel during initialization.** An End button is now available during the agent preparation phase, so you can cancel the test call before the agent finishes initializing. Previously, the End button only appeared after the connection was fully established.

**What you need to do:**

No action is required. The improved loading states appear automatically in the voice playground.

</details>

<details>

<summary>v2.91.0 - Developer Console: Complete Case Library Loading and Legacy Suite Tag Support (July 2026)</summary>

#### Complete Case Library Loading and Legacy Suite Tag Support

The Developer Console Case Library and Suites pages now load all available cases automatically, and legacy suite tags are recognized alongside the standard `suite:` prefix.

**What changed:**

* **Complete case loading.** The Case Library and Suites pages now load the entire case library automatically with built-in pagination and rate-limit handling. The previous Load more button and partial-load notices have been removed. Suite counts and filters always reflect the full case library.
* **Legacy suite tag support.** Suite tags using a legacy naming convention are now recognized in addition to the standard `suite:` prefix. Cases tagged with either format are grouped into the same suite, so suites are not duplicated when a workspace contains a mix of old and new tag formats. Filtering by suite matches cases carrying either tag format.
* **Simplified empty states.** When no cases match the selected suite filter, the empty state now directs you to clear the suite filter to inspect the full case library, rather than offering a Load more button.
* **Consistent loading indicator.** The pages display a loading state while the full case library is being fetched, replacing the previous partial-load banner.

**What you need to do:**

No action is required. Case browsing and suite execution work as before. Workspaces with legacy suite tags will see their cases grouped correctly without any tag migration.

</details>

<details>

<summary>v2.90.0 - Developer Console: Simulation Case and Suite Loading Now Explicit (July 2026)</summary>

#### Simulation Case and Suite Loading Now Explicit

The Developer Console Case Library and Suites pages now load cases on demand instead of auto-loading up to 1,000 cases in the background.

**What changed:**

* **Explicit case loading.** The Case Library and Suites pages load the first page of cases automatically. Additional pages are loaded explicitly using the Load more button. Previously, the console auto-fetched up to 1,000 cases in the background on page load.
* **Updated summary labels.** The Case Library summary tiles now show "Available cases" with the total count from the workspace, rather than distinguishing between loaded and total counts. Suite counts reflect the cases currently loaded into the view, with a note when additional pages are available.
* **Improved empty states.** When no cases match the current suite filter, the empty state now offers a Load more button (if additional pages exist) or a Clear suite filter button, instead of only linking to the simulation run page.
* **Suite tag prefix simplified.** Suite tags are now identified exclusively by the `suite:` prefix. Previously, an additional legacy prefix was also recognized.
* **Suite run button simplified.** The Run suite button label is now always "Run suite" regardless of case count. When running from a partial case load, the suite run targets up to 200 matching cases from the server rather than being limited to locally loaded case counts.

**What you need to do:**

No action is required. Case browsing and suite execution work as before. For large case libraries, use the Load more button to bring additional cases into the view.

</details>

<details>

<summary>v2.89.0 - Developer Console: Integration Tool Tests Routed to Dedicated Endpoint (July 2026)</summary>

#### Integration Tool Tests Routed to Dedicated Endpoint

The Developer Console now routes integration tool tests through a dedicated test endpoint, separate from the standard tool invocation path.

**What changed:**

* **Integration tool tests use a dedicated endpoint.** When testing integration tools from the Tools > Test page, the Developer Console now sends test requests to a purpose-built test endpoint rather than the general tool execution path. This gives more accurate test results and clearer error reporting for integration tool validation.
* **Improved test page for integration tools.** The tool test page now distinguishes between integration tools and other tool types, routing each to the appropriate backend endpoint automatically. No manual configuration is needed.

**What you need to do:**

No action is required. Integration tool tests in the Developer Console automatically use the new routing. Test behavior and results are unchanged for non-integration tools.

</details>

<details>

<summary>v2.87.1 - Developer Console: Playground Connecting State During Agent Cold Start (July 2026)</summary>

#### Playground Connecting State During Agent Cold Start

The Developer Console playground now displays a visible "Connecting" state while the voice agent is starting up, before the session is fully established.

**What changed:**

* **Connecting badge shown during cold start.** When a voice playground session is initiated, a "Connecting" badge appears next to the service name while the agent connection is being established. Previously, the playground showed no visual indicator between clicking Start and the session becoming live.
* **Pulsing icon during connection.** The voice mode icon animates with a pulse effect during the connecting phase, providing a clear visual cue that the connection is in progress.
* **Distinct color treatment.** The connecting state uses an informational color scheme (blue), distinguishing it from the neutral idle state and the green live state.

**What you need to do:**

No action is required. This is a visual improvement that provides better feedback during agent cold starts in the playground.

</details>

<details>

<summary>v2.87.0 - Developer Console: Playground Connection Status Improvements (July 2026)</summary>

#### Playground Connection Status Improvements

The Developer Console playground now shows improved connection status banners when observing voice calls.

**What changed:**

* **Simplified connection banners.** The playground no longer shows a separate "failed after 5 retries" error banner. Connection errors and retry states are now consolidated into clearer status indicators.
* **Reconnection banner updated.** The reconnecting banner no longer displays a retry counter or a "/5" limit. It now shows a neutral "Connecting to agent..." message with an informational style instead of a warning style.
* **Error display improved.** Error banners now display whenever there is an active error and the session is not connected or ended, rather than only on the first connection attempt.

**What you need to do:**

No action is required. These are visual improvements to the playground connection status display.

</details>

<details>

<summary>v2.86.0 - Developer Console: Protocol Selector and Category Column Removed from Integrations (July 2026)</summary>

#### Protocol Selector and Category Column Removed from Integrations

The Developer Console removes the protocol selector from the integration creation form and the category column from the integrations table. The protocol is now determined automatically, and integrations are no longer visually categorized.

**What changed:**

* **Protocol selector removed from integration creation.** The new integration form no longer includes a protocol dropdown. REST is set automatically. The connection step description now reads "Configure the connection details including base URL and authentication."
* **Category column removed from integrations table.** The integrations list no longer displays a Category column (Utility / Custom) or its associated filter. Integrations are listed without category classification.
* **Category filter removed.** The Category filter in the integrations table filter bar has been removed. The protocol filter remains available.

**What you need to do:**

No action is required. Existing integrations are unaffected. The protocol is set to REST automatically when creating new integrations through the Developer Console.

</details>

<details>

<summary>v2.85.0 - Developer Console: FHIR Protocol Removed from Integrations (June 2026)</summary>

#### FHIR Protocol Removed from Integrations

The Developer Console removes the FHIR protocol option from the integrations workflow. Integrations now support the REST protocol only.

**What changed:**

* **FHIR protocol option removed from integration creation.** The protocol selector on the new integration form no longer includes FHIR. Only REST is available.
* **FHIR-specific badge styling removed.** Tool call badges and integration protocol badges no longer apply FHIR-specific visual styling. All protocol badges now use the default style.
* **Healthcare category removed from integrations table.** The integrations list no longer includes a "Healthcare" category filter. Integrations previously categorized as Healthcare are now categorized as Utility or Custom.
* **FHIR filter removed from integrations table.** The protocol filter on the integrations list no longer includes FHIR as a filter option.
* **Updated descriptions.** The integrations tab tooltip now reads "Connectors to third-party systems: REST APIs" and the integration creation form description now reads "REST integrations wrap HTTP APIs."

**What you need to do:**

No action is required. Existing FHIR integrations are unaffected at the API level. The Developer Console no longer provides a UI for creating or viewing FHIR-specific configuration. If you need FHIR integration management, use the Platform API directly.

</details>

<details>

<summary>v2.84.0 - Developer Console: MCP Protocol Removed from Integrations (June 2026)</summary>

#### MCP Protocol Removed from Integrations

The Developer Console removes the MCP (Model Context Protocol) option from the integrations workflow. Integrations now support the REST protocol only.

**What changed:**

* **MCP protocol option removed from integration creation.** The protocol selector on the new integration form no longer includes MCP. Only REST is available.
* **MCP connection step removed.** The MCP-specific configuration step (transport, command, arguments, server URL, headers) has been removed from the integration creation wizard.
* **MCP details removed from integration detail page.** The MCP Server card that displayed transport, command, arguments, server URL, and headers is no longer shown on integration detail pages. The Base URL field now displays for all integrations regardless of protocol.
* **MCP filter removed from integrations table.** The protocol filter on the integrations list no longer includes MCP as a filter option.
* **Updated descriptions.** The integrations tab tooltip now reads "Connectors to third-party systems: REST APIs" and the tool picker guide no longer mentions MCP servers.

**What you need to do:**

No action is required. Existing MCP integrations are unaffected at the API level. The Developer Console no longer provides a UI for creating or viewing MCP-specific configuration. If you need MCP integration management, use the Platform API directly.

</details>

<details>

<summary>v2.83.0 - Developer Console: Create Version Button Removed from Agent Detail (June 2026)</summary>

#### Create Version Button Removed from Agent Detail

The Developer Console removes the manual "Create Version" button from the agent detail page. Agent versions should now be created through the Amigo SDK or API.

**What changed:**

* **Create Version button removed.** The agent detail page no longer includes a "Create Version" button or the associated inline form for manually creating agent versions. The versions section continues to display existing versions and supports editing via the **Edit JSON** button.
* **Updated empty state guidance.** When an agent has no versions, the empty state message now directs users to create the first version through the Amigo SDK or API, then use **Edit JSON** in the console to iterate.

**What you need to do:**

Use the Amigo SDK or Platform API to create new agent versions. Once a version exists, you can continue to edit it using the **Edit JSON** button on the agent detail page in the Developer Console.

</details>

<details>

<summary>v2.82.0 - Developer Console: Webhook Destinations Removed, Data Source Types Updated, EHR Connector Changes (June 2026)</summary>

#### Webhook Destinations Removed, Data Source Types Updated, EHR Connector Changes

The Developer Console removes the webhook destinations feature, updates data source type options, and refreshes the list of supported EHR connectors.

**Webhook destinations removed:**

* **Webhooks tab removed from Developer page.** The Developer page now shows only the API Keys and Personal Tokens tabs. The Webhooks tab and all associated webhook destination management UI have been removed.
* **Webhook destinations pages removed.** The webhook destinations list page, detail page, create page, and all related components (delivery history, secret rotation, edit form, event type input) have been removed from the console.
* **Webhook navigation removed.** The Webhooks entry has been removed from the sidebar navigation and command palette.
* **Trigger detail simplified.** The trigger detail page no longer shows linked webhook sources or the "Add Webhook" button. The Sources tab now displays only cron schedule information. The tab icon has been updated from a webhook icon to a calendar icon. The empty state message now refers to configuring a cron schedule instead of adding a webhook.

**Data source type changes:**

* **CRM type replaced with FHIR.** The "CRM" data source type has been replaced with "FHIR" across the data source list, filters, and creation form.
* **New data source types added.** Three new data source types are now available: Database, Custom, and Customer Intake.
* **Updated empty state text.** The data sources empty state message now reads "Connect an EHR, FHIR store, or other external system" instead of the previous "EHR, CRM, or other external system" wording.

**EHR connector changes:**

* **Revolution EHR removed.** Revolution EHR has been removed from the EHR integration options and connector type list.
* **HubSpot removed.** HubSpot has been removed from the EHR integration options and connector type list.
* **New EHR connectors added.** Three new EHR connectors are now available: CharmHealth, eClinicalWorks, and Meditab.

No configuration changes are required. Workspaces that previously used webhook destinations should transition to alternative integration patterns.

</details>

<details>

<summary>v2.81.0 - Developer Console: Warehouse Tab and Workspace Database Improvements (June 2026)</summary>

#### Warehouse Tab and Workspace Database Improvements

The Developer Console Tools section now includes a **Warehouse** tab and updates to the **Workspace** (Database) tab. These changes give developers clearer separation between analytic lookups over historical data and workspace-private mutable state.

**New Warehouse tab:**

* **Warehouse tab in Tools.** A new Warehouse tab appears in the Tools section alongside Workspace, Integrations, and Skills. Warehouse tools let the agent perform deterministic analytic lookups over historical data - no LLM in the loop. These are the `fn_*` tools backed by the platform's analytic data warehouse.
* **Function directory.** The Warehouse page lists all platform functions registered in the workspace, showing name, type, return kind, description, and last test status. Clicking a function opens its inspector.
* **Inspect by name.** Enter a function name directly to inspect its definition, SQL template, parameters, and metadata without scrolling through the directory.
* **Test panel.** Each function can be tested directly from the console. Provide JSON input, run the function, and see results including row count, duration, and pass/fail status. Test results are persisted server-side so the directory reflects the latest test outcome.

**Workspace (Database) tab improvements:**

* **Simplified query tool list.** The Workspace Database page now loads all query tools in a single request instead of paginated infinite scroll. The table shows parameter count and last invocation timestamp instead of the previous enabled/disabled status and target columns.
* **Typed parameter editor.** The query tool form now uses a structured parameter editor instead of raw JSON input. Each parameter has a name, type (string, integer, number, boolean), description, and optional default value. Up to 32 parameters can be declared per tool.
* **Timeout configuration.** Query tools now expose a timeout setting (100ms to 30,000ms) directly in the form.
* **Invoke replaces test.** The test panel on query tool detail pages now uses the invoke endpoint, showing results in a structured table with row count and duration.
* **Sandbox fork removed.** The Sandbox Fork card has been removed from the Workspace Database page. Fork creation and deletion are no longer available through the console.
* **Enable/disable toggle removed.** Query tools no longer have an enabled/disabled toggle. All registered query tools are active.

**Inventory changes:**

* **Single function source.** The Tools inventory page now loads functions from a single consolidated endpoint instead of merging two separate function stores. This simplifies the inventory and eliminates the legacy/registered deduplication logic.

No configuration changes are required.

</details>

<details>

<summary>v2.80.0 - Developer Console: Expanded FHIR Entity Details and Patient Insurance (May 2026)</summary>

#### Expanded FHIR Entity Details and Patient Insurance

The Developer Console now surfaces additional fields across FHIR resource detail views and the patient entity state panel. These changes align the console with recently expanded FHIR API views, so operators and developers can see richer entity data without leaving the console.

**Patient details:**

* **Insurance section.** Patient detail views now display insurance information when available, including payer name, member ID, policyholder name, policyholder relationship, and policyholder date of birth. This appears both in the FHIR resource detail card and in the patient entity state panel.
* **Marital status.** The patient FHIR card now shows marital status when present in the resource data.
* **Address fields.** The patient entity state panel now displays city, state, and postal code.

**Practitioner details:**

* **NPI identifier.** The practitioner FHIR card now extracts and displays the National Provider Identifier (NPI) when present in the resource's identifier list.

**Appointment details:**

* **Appointment type, duration, reason, and cancellation reason.** The appointment FHIR card now shows appointment type, duration in minutes, visit reason, and cancellation reason when available.
* **Participant roles and icons.** Appointment participants now display their role (e.g., primary performer, attender) and use role-specific icons to distinguish practitioners from other participants.
* **Improved fallback title.** Appointments without a description now fall back to the appointment type for display.

**New Slot resource card:**

* **Slot detail view.** The FHIR resource browser now renders a structured detail card for Slot resources, showing status, start/end times, schedule reference, and comments. Previously, Slot resources displayed as raw data.
* **Slot list view.** The resource list now shows formatted date and status for Slot entries.

No configuration changes are required.

</details>

<details>

<summary>v2.79.0 - Developer Console: SDK-Aligned Observer Event Types (May 2026)</summary>

#### SDK-Aligned Observer Event Types

The Developer Console playground and call observation views now use observer event type definitions from the platform SDK (v0.5.5) instead of hand-maintained local types. This aligns the console with the canonical event schema and adds support for two new real-time event types.

**What changed:**

* **Event types derived from SDK.** All observer event payloads - session lifecycle, transcripts, tool calls, emotion, empathy, latency, barge-in, participants, and voice context - are now sourced from the SDK's typed definitions. This eliminates drift between the console and the platform API when new fields are added or existing fields change.
* **New event types: forward call resolved and speaker muted.** The playground event log and call observer now handle `forward_call_resolved` and `speaker_muted` events. These appear in the event log and are categorized as session events in the event type filter.
* **State transition type field renamed.** The state transition display in the playground conversation view and call observer now reads the transition type from the updated field name in the SDK schema. No user-facing label changes - transitions continue to display the same way.
* **Null-safe field handling.** Duration, barge-in count, speaker metadata, and other optional fields are now handled with explicit null coalescing throughout the playground UI, preventing display errors when the platform omits optional fields from event payloads.

No configuration changes are required. The playground and call observation views continue to work as before, with improved reliability for events that contain optional fields.

</details>

<details>

<summary>v2.77.0 - Developer Console: Environment-Aware Analytics (May 2026)</summary>

#### Environment-Aware Analytics

The Developer Console now reports its environment tier - production, staging, or development - to the analytics and feature gating system. Previously, all console instances reported as the same environment, making it difficult to distinguish production usage from staging or local development in analytics dashboards and feature gate evaluations.

With this release, the console automatically detects which environment it is running in based on the deployment context and passes that information to the feature gating system. This means:

* **Feature gates** can now target specific environments - for example, enabling an experimental feature only in staging before rolling it out to production
* **Analytics data** is segmented by environment, so usage metrics from staging and development do not pollute production dashboards
* **Experiment results** reflect production behavior only, without noise from internal testing

No configuration is required. The environment is detected automatically and applied to all feature checks and analytics events.

</details>

<details>

<summary>v2.75.0 - Developer Console: Remove Cross-Workspace Team Assignments (May 2026)</summary>

#### Cross-Workspace Team Assignments Removed

The cross-workspace team assignments feature has been removed from both the Admin section and the Members page.

* The **Team Assignments** tab has been removed from the Admin navigation
* The **All Workspaces** tab on the Members page has been removed - the Members page now shows only the current workspace's members without tabs

Workspace member management remains available through the single-workspace Members page, which continues to support inviting, updating, and removing members within the current workspace.

</details>

<details>

<summary>v2.71.0 - Developer Console: Webhook Destination Management (May 2026)</summary>

#### Complete Webhook Destination UI

The Developer Console now provides full management of webhook destinations. Previously, webhook destinations could only be created and deleted. This release adds editing, secret rotation, delivery history, activation controls, and improved creation workflows.

**Navigation**: A new **Webhooks** item appears in the sidebar navigation under the settings section, providing direct access to the webhook destinations list.

**Create workflow improvements**:

* The trigger field is now a dropdown that lists available triggers from your workspace instead of requiring a raw ID
* Field mapping uses structured key-value pair inputs instead of raw JSON
* Accepted event types use a tag-based input with add/remove controls
* Form validation provides inline feedback before submission

**Detail page enhancements**:

* **Configuration and Delivery History tabs** - the detail page is now tabbed, with configuration details on one tab and delivery history on another
* **Inline editing** - click Edit to modify the webhook name, description, field mapping, accepted event types, and retry attempts without leaving the page
* **Active/Inactive toggle** - activate or deactivate a webhook destination directly from the detail page with a status badge showing the current state
* **Secret rotation** - a Rotate Secret button generates a new signing secret with a grace period before the old secret expires. The new secret is displayed once and must be copied immediately
* **Delivery history** - view past webhook deliveries with event type, timestamp, event ID, and expandable payload details. Results load incrementally with a Load More button

**List page improvements**:

* Client-side search filtering for webhook destinations
* Empty state now includes a Create Webhook Destination action button

</details>

<details>

<summary>v2.70.0 - Developer Console: Environment Conversion, Team Assignments, and Auto-Provisioning (May 2026)</summary>

#### Environment Conversion

Workspace settings now include an **Environment** row with a **Convert** button that lets admins convert a workspace between staging and production environments. Clicking Convert opens a dialog that checks conversion requirements, displays any warnings, and requires you to type the workspace slug to confirm. After conversion, the workspace environment badge updates immediately.

#### Team Assignments

A **Team Assignments** tab is available in the Admin section for users with admin access to two or more workspaces. This feature was later removed in v2.75.0.

#### Auto-Provisioning on Workspace Creation

Newly created workspaces are now automatically provisioned immediately after creation. If auto-provisioning fails, workspace creation still succeeds - you can manually provision later from workspace settings.

#### Provisioning Status in Settings

Workspace settings now show provisioning status. Provisioned workspaces display the provisioning date. Workspaces that have not been provisioned show a "Not provisioned" badge with a **Provision** button to trigger provisioning manually.

</details>

<details>

<summary>v2.65.0 - Developer Console: Feature Gating for Navigation Items (May 2026)</summary>

#### Release-Stage Gating in the Sidebar

Navigation items in the Developer Console sidebar are now gated by release stage using feature flags. Previously, pre-release features were shown or hidden based solely on whether the logged-in user had an internal email address. The sidebar now evaluates per-feature flags to determine visibility, giving finer-grained control over who sees what.

The release stages are:

| Stage               | Visibility                                                                                                       |
| ------------------- | ---------------------------------------------------------------------------------------------------------------- |
| **GA**              | Visible to all users                                                                                             |
| **Beta**            | Visible only to users explicitly enrolled in the feature flag. No email-based fallback - users must be enrolled. |
| **Private Preview** | Visible to enrolled users or Amigo employees                                                                     |
| **Internal**        | Visible to enrolled users or Amigo employees                                                                     |

Sidebar badges now reflect the stage: Beta items show a "Beta" badge, and Private Preview items show a "Preview" badge. Internal items continue to show a subtle dot indicator. The command palette uses the same badge logic.

This change replaces the previous "Public Preview" stage with two more granular stages (Beta and Private Preview), giving product teams better control over feature rollout progression.

</details>

<details>

<summary>v2.64.0 - Developer Console: Simplified Calls Table (May 2026)</summary>

#### Simplified Call Log Columns

The calls table in the Developer Console now shows a more focused set of columns. The Caller and Messages columns have been removed to reduce noise and keep attention on the most actionable information - call ID, type, agent, status, and timing.

The search bar placeholder has been updated to reflect the available search scope. Search is now scoped to call ID only.

This is a visual-only change. No data has been removed - call details, caller information, and message counts are still available on the individual call detail view.

</details>

<details>

<summary>v2.63.0 - Developer Console: Analytics Stat Card Layout (May 2026)</summary>

#### Improved KPI Card Readability

The analytics dashboard stat cards now display the metric value and its period-over-period change side by side on the same line instead of stacking them vertically. The percentage delta appears next to the value with color-coded direction indicators - green for increases, red for decreases, and muted for unchanged values.

Each delta now includes an accessible label describing the direction and magnitude of the change compared to the previous period. Flat deltas (0%) are explicitly labeled as "Unchanged" rather than showing no indicator.

This is a visual-only change. No new data, endpoints, or configuration options are involved.

</details>

<details>

<summary>v2.62.0 - Developer Console: Idle Session Warning (May 2026)</summary>

#### Bank-Style Idle Timeout Warning

The Developer Console now displays a warning dialog when a user has been idle and their session is about to expire due to the HIPAA-mandated inactivity timeout. Previously, idle sessions were terminated without advance notice - users would be redirected to the login page with an informational banner but no opportunity to extend their session.

When the platform detects prolonged inactivity, a modal dialog appears with the title "Still there?" and a live countdown showing how much time remains before automatic sign-out. The countdown displays in mm:ss format and updates every second. Users have two options:

* **Stay signed in** - Dismisses the dialog, refreshes the session credentials on the server, and resets the idle timer. The user continues working without interruption.
* **Sign out** - Immediately ends the session and redirects to the login page.

While the warning dialog is visible, passive activity like mouse movement or scrolling does not dismiss it. The user must explicitly choose to stay signed in. This prevents accidental dismissal from a brush of the trackpad.

The idle timer is synchronized across browser tabs. Activity in any tab resets the idle timer for all tabs in the same session. If a user clicks "Stay signed in" in one tab, the warning is dismissed in all other tabs. If a user signs out from the warning dialog, all tabs are signed out.

The warning dialog only appears for authenticated sessions. Unauthenticated pages (such as the login page itself) do not run the idle timer.

</details>

<details>

<summary>v2.61.0 - Developer Console: Caller ID for Text Playground (May 2026)</summary>

#### Caller ID Support in Text Playground

The text playground now supports setting a simulated caller phone number before starting a session, matching the capability already available in the voice playground. A split button next to the "Start Session" and "New Session" actions lets you open a popover to enter a phone number that is sent as the caller identity when the session begins. The engine uses this to run patient resolution, so you can test caller-specific behavior without making a real phone call.

The entered number is saved to local storage and restored on your next visit, with separate storage for voice and text playgrounds so the two do not interfere with each other. Leaving the field blank omits the caller identity from the session payload, which causes the engine to use its default caller with no patient match - the same behavior as before this change.

#### Shared Caller ID Component

The caller ID split button used in the voice playground has been refactored into a shared component used by both voice and text playgrounds. There is no change in voice playground behavior.

</details>

<details>

<summary>v2.60.0 - Developer Console: Login Reason Banner (May 2026)</summary>

#### Context for Redirected Users

When users are redirected to the login page due to session expiry, inactivity timeout, or a failed token refresh, the login page now displays an informational banner explaining why they were signed out. Previously, users who were redirected saw the same bare login form as a first-time visitor, with no indication of what happened.

The banner displays a short message tailored to the reason:

* **Session expired** - The user's session ended naturally or the server rejected a token. The banner prompts them to sign in again.
* **Inactivity timeout** - The session ended due to inactivity (the HIPAA-mandated idle timeout). The banner explains the security policy and prompts sign-in.

If the login page is loaded without a recognized reason - including direct navigation or any unexpected value - no banner appears, preserving the existing login experience.

The reason indicator is separate from the existing OAuth error banner. OAuth callback failures continue to appear as destructive alerts; session-related redirects appear as neutral informational banners.

</details>

<details>

<summary>v2.59.0 - Developer Console: Voice Auth Gated by Environment Flag (May 2026)</summary>

#### Voice Authentication Disabled by Default

Voice biometric authentication in the Developer Console is now disabled by default. Previously, the console checked workspace security settings for voice authentication on every login. Now, the voice auth guard only activates when the deployment is explicitly configured to enable it.

When disabled (the default), the guard short-circuits immediately after login with no network calls and no user-facing change. When enabled, the existing behavior is preserved - the guard checks workspace-level voice auth settings and proceeds with voiceprint enrollment or verification as before.

This is a deployment-level setting. Toggling it requires a redeploy of the Developer Console - runtime environment changes have no effect. Organizations that have not explicitly opted in to voice authentication will see no change in behavior.

</details>

<details>

<summary>v2.58.0 - Developer Console: Dashboard Pre-Launch Polish (May 2026)</summary>

#### Improved Loading States

The workspace dashboard now displays skeleton loading indicators for all data sections - status cards, world model statistics, clinical resources, and recent activity - instead of showing placeholder dashes or empty content while data loads. This gives a smoother visual experience on initial page load and when switching between workspaces.

#### Updated Configuration Labels

Several labels on the dashboard configuration summary have been updated for clarity:

* **"Integrations" renamed to "Data Connections"** - Better describes the role of connected external data sources.
* **"Graphs" renamed to "Context Graphs"** - Uses the full product term consistently.
* **"Numbers" renamed to "Phone Numbers"** - Removes ambiguity.

#### Welcome State for New Workspaces

When a workspace has just been created, the Developer Setup section now displays a personalized welcome message with the workspace name and shorter setup instructions, rather than the standard "Developer Setup" heading.

#### Accessibility Improvements

The EHR Status, Active Calls, and Services status cards now include descriptive accessible labels that convey current state information to screen readers, improving navigation for assistive technology users.

#### Dashboard Error Boundary

The dashboard now catches rendering errors gracefully and displays a recovery screen with a "Try Again" button, instead of showing a generic application error page.

#### Removed Call Analytics Section

The inline call analytics summary (total calls, completion rate, average duration, average turns) has been removed from the dashboard home page. Call analytics remain available on the dedicated Analytics page.

</details>

<details>

<summary>v2.57.0 - Developer Console: Billing Dashboard - ACU Visibility and Period Metadata (May 2026)</summary>

#### Restored ACU Visibility

The Billing page now guarantees that key usage meters - including Amigo Consumption Units (ACU), voice minutes, call count, and token usage - always appear in the usage summary, regardless of their ranking by value. Previously, low-value meters could be pushed off the dashboard by higher-value ones, which meant customers on lighter plans might not see their primary billing unit at all.

All metered dimensions for the current billing period are now displayed in a dedicated "Usage by meter" section, ordered so that the most important billing meters appear first.

#### Period Metadata

The billing summary cards now show the date range for the current billing period and clarify the relationship to the previous period. The cost comparison label has been updated from a short "vs previous" to a more descriptive explanation (e.g., "higher than previous period" or "lower than previous period").

#### Invoice Status Descriptions

The invoice status chart now includes a legend with plain-language descriptions for each status (draft, sent, paid, void), making it easier to understand invoice lifecycle at a glance. The "overdue" status has been removed from the display to match the backend invoice model.

#### Usage Trend Chart Improvements

The usage trends chart now displays the billing period date range in its description and uses improved tooltip styling for better readability.

</details>

<details>

<summary>v2.56.0 - Developer Console: Call Log Naming Polish (May 2026)</summary>

#### Updated Labels and Terminology

The Calls section of the Developer Console now uses clearer, more consistent terminology throughout:

* **"Simulated" renamed to "Test Call"** - Calls generated from simulation runs are now labeled "Test Call" instead of "Simulated" in the call list, call detail header, sidebar metadata, and type filter. This better communicates that these are test-originated calls rather than implying a separate execution mode.
* **"Call SID" renamed to "Call ID"** - The identifier shown in the call detail debug panel and used in the copy-to-clipboard tooltip is now labeled "Call ID" for consistency with the rest of the platform.
* **"Turns" renamed to "Messages"** - The calls table column, transcript panel counters, conversation summary stats, and empty-state messages now use "Messages" instead of "Turns" to align with how users think about conversation activity.
* **Search placeholder updated** - The search bar placeholder now reads "Search by caller or call ID" instead of referencing "call SID".

No changes to underlying data or API behavior - these are display-only label updates.

</details>

<details>

<summary>v2.55.0 - Developer Console: DPoP Token Binding and Refresh Backoff (May 2026)</summary>

#### DPoP Sender-Constrained Token Support

The Developer Console now supports DPoP (Demonstration of Proof-of-Possession) sender-constrained tokens as introduced in Platform API v0.9.114. When DPoP is active, the console generates an ECDSA P-256 key pair during login and uses it to create signed DPoP proof JWTs for all token operations, including proactive token refreshes. This binds tokens to the browser session's private key, so intercepted tokens cannot be reused by a different client.

The DPoP key is stored in a secure, HTTP-only cookie with a lifetime matching the refresh token. Token refreshes automatically include a DPoP proof header when a key is present. If DPoP proof creation fails, the console logs a diagnostic and proceeds without the proof - tokens that are not DPoP-bound continue to work as before.

#### Refresh Backoff

When a token refresh fails, the console now enforces a short backoff period before attempting another refresh. During the backoff window, requests that require authentication return immediately with an authentication error (for API routes) or redirect to the login page (for page navigations) rather than retrying the refresh repeatedly. This prevents cascading refresh attempts when the authentication service is temporarily unavailable and reduces unnecessary load during outages.

The backoff is automatically cleared after a short interval, allowing normal refresh behavior to resume.

</details>

<details>

<summary>v2.54.0 - Developer Console: Session Expiry Handling (May 2026)</summary>

#### Automatic Redirect on Session Expiry

The Developer Console now detects expired sessions and redirects to the login page automatically instead of leaving pages in a broken state. Previously, if a session expired due to inactivity or a failed token refresh, API calls would fail silently and the page would stop functioning - requiring a manual browser refresh or navigation to recover.

Now, when the platform determines that a session cannot be recovered:

* **All API requests** - Both queries and mutations that receive a terminal authentication failure trigger an automatic redirect to the login page with a reason indicator, so users see a clear "session expired" message.
* **Real-time event streams** - The workspace event stream (used for live updates across the console) detects repeated connection failures and probes for authentication status. If the session is confirmed dead, the stream closes and the redirect fires.
* **Idempotent handling** - Multiple simultaneous failures (common when several components fetch data at once) result in a single redirect rather than competing navigations.

The login page displays a friendly message indicating the session expired and prompting the user to sign in again.

</details>

<details>

<summary>v2.53.0 - Developer Console: Run Simulation Page with Live Progress (May 2026)</summary>

#### Natural Language Simulation Runs

The Developer Console now includes a Run Simulation page that lets you describe what you want to test in plain English, review the inferred target spec, and launch simulation runs directly from the browser. The page is accessible from the Simulations section in the sidebar navigation.

You enter an objective (for example, "The scheduling flow handles insurance friction and out-of-network cases"), pick a service, and choose how many patient variations to generate. The platform interprets your objective, infers a target spec with desired states, non-desired states, ordered pathways, and completion criteria, then generates distinct patient personas and runs them against the agent.

Key capabilities:

* **Natural language objective input** - Describe the property you want to verify in prose. Example prompts are provided as quick-start suggestions. Minimum 8 characters required.
* **Plan preview and editing** - Optionally preview the inferred target spec before running. The review screen lets you add or remove desired states, non-desired states, and completion criteria using chip-based editors. Non-desired states can be toggled between hard (zeros the score) and soft (flagged in rationale). Ordered pathways can be deleted. A rationale section explains why the spec was chosen.
* **One-shot mode** - Skip the preview step and go directly from objective to running simulation in a single action.
* **Live progress dashboard** - Once a run starts, a real-time dashboard shows a stage pipeline (Interpreting, Generating, Running, Scoring, Done), per-session conversation lanes with progress bars, turn counts, and scores, plus a live activity log of session and coverage events.
* **Session lanes** - Each patient variation appears as a card showing the scenario description, persona name and communication style, turn progress, and a pass/fail score once scoring completes. Forked sessions are visually distinguished.
* **Live counters and summary** - Headline metrics update in real time: total interactions, pass rate, sessions done, state coverage percentage, and passed scenario count.
* **Activity log** - A scrollable event feed shows session starts, forks, completions, scores, and newly covered states as they happen.
* **Target spec card** - The inferred goal is displayed as chip groups for desired states, non-desired states, ordered pathways, and completion criteria, with a collapsible rationale section.
* **Stage pipeline** - A visual progress indicator shows which phase the run is in, with completed stages marked green.
* **Loading hero** - While the platform is interpreting the objective or generating scenarios, a prominent loading state keeps the user informed with estimated timing and the option to close the tab without losing the run.
* **Recent runs** - The intro form shows a list of recent simulation runs with status, session count, turn count, and relative timestamps. Clicking a run reopens its live dashboard.
* **URL persistence** - The run ID and service ID are stored in the URL, so closing the tab or sharing the link preserves access to the in-flight or completed run.
* **Advanced settings** - Configurable number of patient variations (1-50), max turns per conversation (1-40), concurrency (1-20), and optional coverage forking that spawns parallel branches at decision points for wider coverage.

</details>

<details>

<summary>v2.52.0 - Developer Console: Agent Readiness Page (May 2026)</summary>

#### Agent Readiness Dashboard

The Developer Console now includes an Agent Readiness page that replaces the previous Agent Performance page. Agent Readiness provides a structured, tier-based view of how ready an agent is for production deployment.

The page evaluates agents against a readiness rubric organized into tiers (basic, intermediate, advanced) across categories including Task Completion, Coverage, Safety, and Communication Quality. Each criterion shows a pass, fail, or not-yet-measured status with supporting evidence. Criteria are evaluated automatically from simulation run data, coverage graph state, and session history.

Key capabilities:

* **Readiness level indicator** - A 1-5 level score computed from tier completion. Each tier must be fully passing before the agent advances to the next level. The level bar shows partial progress within the current tier.
* **Criterion detail drawer** - Clicking any criterion card opens a detail panel showing the criterion description, pass/fail counts, failure details (such as untested states or low-empathy states), and the specific sessions contributing to the result.
* **Recent runs list** - An expandable list of recent simulation runs with per-session drill-down. Each session is rendered inside a scenario card showing the persona name, role, communication style, scenario description, session metadata, score, and a link to the full call trace.
* **Fork tree rendering** - Forked sessions are indented under their parent session with fork metadata (fork turn index, parent session ID) and a visual accent border, making branching simulation runs easy to follow.
* **Score rationale display** - Session scores include parsed rationale showing which target criteria were met or missed, including specific missed completion states, forbidden state violations, and pathway failures.
* **Run tags** - Simulation runs display user-facing tags (such as branch names) while filtering out structural bridge tags.

The readiness rubric requires minimum run counts before certain criteria are measured (for example, the sustained pass rate criterion requires at least 10 completed runs). Criteria that cannot yet be evaluated display as "not yet measured" rather than failing.

Agent Readiness is accessible from the sidebar navigation under the Simulations section.

</details>

<details>

<summary>v2.51.0 - Developer Console: Navigation Restructure and Takeover Rename (May 2026)</summary>

#### Navigation Information Architecture Overhaul

The Developer Console sidebar navigation has been reorganized for clarity. The former "Quality" section has been removed and its items redistributed into new purpose-built sections:

* **Simulations** - Groups agent performance, coverage, and metrics pages together for pre-deployment and ongoing evaluation workflows
* **Analytics** - Contains analytics dashboards and surface analytics
* **Governance** - Groups safety, compliance, and monitoring pages

Items within the Operate section have been reordered, and the Review Queue and Recordings pages now appear directly in Operate for faster access during live operations.

#### Operator Command Center Renamed to Takeover

The "Operator Command Center" has been renamed to "Takeover" throughout the console. This applies to the sidebar navigation, page titles, operator-only views, and error messages. The rename better reflects the conference-first takeover model where operators join active calls rather than managing them from a separate command center.

#### Developer Setup Section Simplified

The Developer Setup card on the home page no longer displays a "Do this later" link. The layout has been simplified to a single row with the title and completion counter.

</details>

<details>

<summary>v2.49.0 - Developer Console: Insights Charts Rendered via Plotly (May 2026)</summary>

#### Unified Plotly Chart Rendering for Insights

The Insights page now renders all chart blocks using a single Plotly-based chart component instead of separate chart implementations for bar, line, and pie charts. This provides richer interactivity (zoom, pan, hover tooltips) and consistent styling across all chart types.

The daily digest trend chart on the Insights overview also uses the same Plotly renderer, replacing the previous fixed line chart with an interactive scatter plot.

#### Updated Insight Block Types

Insight responses from the API now return chart data as a unified `plotly` block type instead of separate `bar_chart`, `line_chart`, and `pie_chart` block types. The `plotly` block includes a `figure` object containing Plotly trace data and layout configuration, giving the backend full control over chart appearance and type.

</details>

<details>

<summary>v2.48.0 - Developer Console: Intake Customer Slug Auto-Derived from Workspace (May 2026)</summary>

#### Customer Slug Automatically Derived from Workspace

The Customer File Intake page no longer requires a manual customer slug when generating upload links. The customer slug is now automatically derived from the current workspace, removing the slug input field, auto-formatting logic, and validation from the link creation dialog.

The simplified creation dialog asks only for an optional link name (e.g. "Q2 Patient Records") and an expiration period. The Create button is enabled immediately without slug validation.

Additional UI changes:

* The link table column header changed from "Customer" to "Name"
* The customer slug subtitle is no longer shown below the display name in the link table
* The dialog description now reads "Create a shareable link for customers to upload files to this workspace"

</details>

<details>

<summary>v2.44.0 - Developer Console: Intake Slug Auto-Formatting and Validation (May 2026)</summary>

#### Slug Input Improvements for Customer File Intake

The Customer File Intake page now auto-formats the customer slug as you type. Spaces, underscores, uppercase letters, and special characters are automatically converted to a valid slug format (lowercase letters, numbers, and hyphens). The input field shows real-time validation feedback:

* **Valid slug** - displays the formatted value that will be used
* **Invalid slug** - shows an inline error explaining the format requirements (lowercase letters, numbers, hyphens, 2-63 characters)
* **Empty field** - displays example slugs for guidance

The Create button is disabled until the slug passes validation, preventing submission of malformed customer identifiers.

</details>

<details>

<summary>v2.43.0 - Developer Console: Customer File Intake Management (May 2026)</summary>

#### Customer File Intake Page

The Developer Console now includes a dedicated File Intake page for managing shareable upload links. Operators can generate, view, copy, and revoke upload links directly from the console without using the API.

**Link management:**

* Generate new upload links with a customer slug, optional display name, and configurable expiration (1 to 30 days)
* View all links in a table showing customer, status, upload count, expiration, and available actions
* Copy the upload URL to clipboard or open the upload page in a new tab
* Revoke active links with a single click
* Filter includes expired and revoked links for full history

**Upload tracking:**

* Click the upload count on any link to view all files received through that link
* Upload details show filename, file type, size, and received timestamp

The File Intake page appears in the sidebar navigation under the Data section. Pairs with the shareable upload link endpoints shipped in Amigo API v0.9.96.

</details>

<details>

<summary>v2.41.0 - Developer Console: Entity Briefs (May 2026)</summary>

#### Entity Narrative Briefs

Patient detail pages now display AI-generated narrative briefs that synthesize the patient's world model data into a structured summary. Each brief shows evidence pointers, confidence scores, and event counts so every claim is traceable back to source data.

* **Version history** - a drawer shows previous brief versions, so you can see how the narrative evolved as new data arrived
* **Live updates** - briefs automatically refresh when the platform generates a new version, using the workspace event stream for real-time notification
* **Empty state** - patients without a generated brief show a clean placeholder instead of an error

Pairs with the entity brief endpoints shipped in Amigo API v0.9.68.

</details>

<details>

<summary>v2.40.0 - Developer Console: Platform Health Monitoring (May 2026)</summary>

#### Connector Health Strip

The Data Sources page now displays a health strip showing real-time status for every data source writing into the workspace. Each source chip shows freshness (fresh, stale, quiet, or never), events per minute, and last ingested time. Polls every 60 seconds.

#### Loop Latency Widget

The Pipeline page now includes a loop latency widget measuring end-to-end time from data ingestion to agent action. Shows headline median latency, pair count, and an hourly sparkline. Useful for verifying that the data-to-action loop is fast enough for real-time clinical workflows.

#### Live Pulse Panel

The Pipeline page now includes a live event feed showing the most recent workspace events as they occur. Events stream in real time via the workspace event stream, so operators see pipeline activity without refreshing.

Pairs with the platform health monitoring endpoints shipped in Amigo API v0.9.68.

</details>

<details>

<summary>v2.37.0 - Developer Console: Embeddable Dashboards (May 2026)</summary>

#### Dashboards

New Dashboards section in the Developer Console for viewing custom data dashboards configured for your workspace. The dashboards index page lists all available dashboards with their title and description. Clicking a dashboard opens a full-page embedded view scoped to the current workspace.

Dashboards are currently available to internal users. The navigation entry appears under the Analytics section alongside existing analytics and coverage pages.

Pairs with the dashboard workspace scoping and embed proxy endpoints shipped in Amigo API v0.9.79 and v0.9.80.

</details>

<details>

<summary>v2.36.0 - Developer Console: Platform Health Dashboard &#x26; Entity Briefs (April 19, 2026)</summary>

#### Platform Health Dashboard

Three new widgets across the Developer Console's pipeline and data source pages provide real-time visibility into platform health:

* **Live Pulse Panel** on the Pipeline page - real-time event stream showing platform activity as it happens via SSE. Events appear as they flow through the system, giving operators an at-a-glance view of whether the platform is actively processing data.
* **Connector Health Strip** on the Data Sources page - per-source health indicators showing event rates, last ingestion time, and freshness category (fresh, stale, quiet, never) for every data source in the workspace. Operators can spot a stalled connector without running a separate data query.
* **Loop Latency Widget** on the Pipeline page footer - hourly sparkline showing end-to-end latency from data ingestion to agent action. Displays the overall median latency and pair count, helping operators detect processing bottlenecks.

Pairs with the platform health monitoring endpoints shipped in Amigo API v0.9.68.

#### Entity Brief Card

New brief card on the patient detail page showing AI-generated narrative summaries of the patient's world model data. The card displays the latest brief with its confidence score, evidence event count, and generation timestamp. Operators can generate a fresh brief on demand, and the card auto-refreshes via SSE when a new brief is published. A version history drawer shows previous briefs for comparison.

Pairs with the entity narrative brief endpoints shipped in Amigo API v0.9.68.

</details>

<details>

<summary>v2.35.0 - Developer Console: Desktop Session Viewer (April 18, 2026)</summary>

#### Desktop Session Viewer

New desktop session viewer in the Developer Console for managing and interacting with RDP desktop sessions directly from the browser. Operators can start sessions, view live screenshots, send actions, and disconnect - without requiring direct cloud infrastructure access or VPN connectivity.

Pairs with the desktop session proxy endpoints shipped in Amigo API v0.9.67.

</details>

<details>

<summary>v2.34.0 - Developer Console: Webhook Destinations &#x26; Playground Improvements (April 16, 2026)</summary>

#### Webhook Destinations Management

New Webhook Destinations section in the Developer Console sidebar for managing inbound webhook endpoints that external systems (CRMs, scheduling platforms, workflow automation tools) POST to in order to fire triggers:

* **List page** - All workspace webhook destinations with URL, linked trigger, accepted event types, and status. Supports infinite scroll.
* **Create form** - Pick a trigger, set event type whitelist, configure retry attempts, define the field mapping from inbound payload to trigger input template. Secret is revealed once in a reveal dialog on creation; must be copied at that moment because it is not shown again.
* **Detail page** - Inbound URL, field mapping, accepted event types, retry configuration, signing secret management (rotate, revoke).

Pairs with the webhook event type validation and retry features shipped in Amigo API v0.9.60 and the URL canonicalization shipped in v0.9.63.

#### Playground Caller ID Input

The "Start Test Call" button in the voice agent playground now has a split-button chevron popover that accepts an arbitrary caller phone number. The value flows through the test-call WebSocket as the `caller_id` query parameter, so the backend's caller-resolution runs against a real patient record instead of the synthetic playground default.

This unblocks testing of known-caller flows: the agent can greet by name, pull ambient patient context, and exercise phone-number-to-entity resolution paths that were previously impossible to hit from the playground. Leaving the field empty preserves the original unknown-caller behavior.

#### Playground Microphone Selection

The voice agent playground now shows a microphone picker when starting or retrying a test call. The dropdown enumerates available audio input devices and subscribes to device-change events, so plugging in a headset mid-session updates the list automatically. If the selected device is disconnected, the picker resets to the system default. During an active call, the selected device label is shown inline.

</details>

<details>

<summary>v2.33.0 - Developer Console: Voice Biometric Auth, Patient 360 &#x26; Insights Rework (April 15, 2026)</summary>

#### Voice Biometric Login

Optional voice biometric authentication as a post-login security step. When a workspace enables `voice_auth_enabled` in security settings, console users complete a voice verification challenge after standard login:

* **Enrollment** - First-time users record a 10-second voice sample reading a passphrase to create their voiceprint
* **Verification** - Returning users read a randomized 5-second passphrase that is compared against their enrolled voiceprint
* Real-time audio visualizer shows recording level during capture
* Passphrase is rotated per challenge for anti-replay protection

Voice biometric authentication is best-effort: microphone permission failures, network errors, or pipeline unavailability gracefully skip to standard authenticated access. Users can also manually skip the voice challenge.

#### Voice Auth Admin Controls

New voice authentication card on the workspace Security settings page with a toggle to enable or disable voice biometric login for all workspace users.

#### Patient 360 Hub

Redesigned patient detail page as a single scrollable 360 hub view. Replaces the previous tabbed layout with all patient data visible at a glance: identity section with avatar, 2x2 clinical summary grid, compact activity timeline with inline expansion, relationships section, and memory dimension cards. Source and domain filters on activity. Expandable raw data on clinical items. FHIR source view on clinical records.

#### Insights Agent Rework

Overhauled insights agent UX: abort/stop streaming support, auto-growing textarea, inline visual cards from tool results during streaming, copy-to-clipboard on text blocks, proper empty workspace state with fallback suggestions, and visible tool error states.

#### Release Stage Gating

4-tier release stage system (GA, public preview, private preview, internal) that gates console pages based on user role. 23 GA pages are visible to all workspace users, internal pages are hidden from external users. "Internal" and "Preview" badges appear in the sidebar and command palette. Direct URL access to gated pages is blocked by a route guard.

#### FHIR Browser Restored

FHIR Browser page restored to the World sidebar navigation.

</details>

<details>

<summary>v2.32.0 - Developer Console: Trigger Management &#x26; Pipeline Freshness (April 14, 2026)</summary>

#### Trigger Management

New Triggers section in the Developer Console sidebar for managing scheduled action triggers. The list page shows all workspace triggers with infinite scroll, active/paused status, schedule, and next fire time. The detail page has two tabs:

* **Configuration** - Edit trigger name, description, cron schedule, timezone, action binding, event filter, and input template. Pause/resume and delete actions available from the page header.
* **Execution History** - Chronological list of trigger runs showing event type, data payload, and timestamps.

Manual fire button lets you test a trigger without waiting for its schedule.

#### Pipeline Sync Freshness

The pipeline inspector now shows poll freshness (time since last successful sync poll) instead of the stale write timestamp that was previously displayed. This gives a more accurate picture of how current the data is, particularly for connectors with frequent poll cycles.

</details>

<details>

<summary>v2.31.0 - Developer Console: World Section Rework &#x26; Actions Terminology (April 14, 2026)</summary>

#### World Section Rework

The World navigation section has been restructured from 11 items to 5 focused pages:

* **Patients** - Browse patient entities with location and conditions columns. Supports semantic search (e.g., "diabetic patients in Abu Dhabi") and tags filtering. Summary bar shows memory stats across dimensions. Each patient opens a detail page with four tabs: Summary, Activity (date-grouped events with source filtering), Relationships, and Memory (extracted facts with confidence scores).
* **Agent Memory** - Renamed from "Functional Memory." Dimension cards now display extraction mode, associated event types, sample fact snippets, and confidence metadata.
* **Data Sources** - Dedicated configuration page for connected external systems (previously mixed into the World Data page).
* **Sync** - Unified inbound/outbound page with a visual flow diagram showing the data path from sources through the world model to downstream systems. Includes gap scanner status and entity resolution metrics.
* **Entity Browser** - Repurposed from the previous World Data page. Overview cards, events, entities, and import tabs. Entity type cards link directly to the Patients page for person entities.

Semantic search and tags filtering are wired to the platform entity search API. Memory sample facts and extracted text types are surfaced throughout the patient and memory views.

**Current status:** This entry records the v2.31.0 interface. The active Patients page no longer offers semantic entity search or tags filtering; use its supported text and field controls instead.

#### Actions Terminology

Skill-facing tools throughout the console have been renamed to "actions" to align with the API terminology. This affects the skills configuration pages, the tools management page, and the playground.

</details>

<details>

<summary>v2.30.0 - Developer Console: Insights Agent, Agent Performance, Metrics &#x26; Playground Overhaul (April 13, 2026)</summary>

#### Insights Agent

New conversational data analysis interface for exploring workspace data in natural language. Ask questions about call quality, surface completion rates, escalation trends, or any workspace metric and receive structured analysis with inline visualizations.

The agent streams responses in real time. Reasoning steps, tool invocations, and data queries are visible as they execute. Results always reflect live data from the workspace's analytics and metric store endpoints.

#### Agent Performance Page

New Agent Performance page for viewing simulation results. Displays readiness scoring, failure analysis, score trends over time, and per-session detail for recent simulation runs. Gives teams visibility into how agent configurations perform against test scenarios before deploying to production.

#### Metrics Page

New Metrics page for creating and managing evaluation metrics. Configure metric definitions with scoring criteria, extraction modes, and channel scoping directly from the console. Metrics defined here feed into the metric store for automated evaluation across interactions.

#### Text Playground Visual Overhaul

The text playground has been redesigned with chat-style message bubbles, a typing indicator during agent processing, and a turn-by-turn timeline showing state transitions and tool calls. Tool call details (inputs, outputs, duration) are now visible inline rather than hidden in debug panels. Sessions auto-start on page load.

#### Billing Dashboard

The billing page has been rewritten with KPI cards showing current period totals, period-over-period deltas, and trend charts. Billing data is now aggregated server-side, eliminating the previous client-side calculation that could produce stale results on large workspaces.

#### Analytics KPI Dashboard

The analytics page now includes a KPI row at the top showing headline metrics (call volume, quality score, escalation rate) with period deltas. This gives a quick pulse check without scrolling to individual charts.

#### Tools Page Redesign

The tools management page has been redesigned with improved layout matching the updated design system. Tool cards show configuration status and last-modified metadata inline.

</details>

<details>

<summary>v2.28.0 - Developer Console: Voice Library, Gap Scanner &#x26; GTM Dashboard (April 10, 2026)</summary>

#### Voice Library

New Voice Library page for browsing and previewing available voices. Workspace admins can listen to voice samples before assigning them to services, with search and filtering by voice characteristics. Audio previews handle both WAV and raw PCM formats automatically.

#### Gap Scanner Developer Experience

The gap scanner configuration on the Settings page now includes:

* **Pipeline integration card** - View gap scanner status and recent activity directly from the pipeline page
* **Gap preview** - Preview which entities would be targeted before enabling auto-delivery
* **Validation indicators** - Visual feedback on requirement rule completeness and channel configuration

These additions make the gap scanner easier to configure and validate without needing to run a full scan cycle.

#### GTM Dashboard

The Developer Console now supports go-to-market workflows alongside clinical deployments:

* **Pipeline chart** - Visual funnel showing deal progression through pipeline stages
* **Deal stage stepper** - Step-by-step deal progression on deal detail panels
* **CRM-oriented sidebar labels** - Navigation updated with Contacts, Organizations, and Deals labels for CRM-focused workspaces
* **Neutral dashboard** - Home dashboard adapted for non-clinical workspace contexts

#### Functional Memory Page Rework

The Functional Memory page has been redesigned with improved dimension card layout. Each dimension card now displays its configuration inline with clearer visual hierarchy, reducing the number of clicks needed to review and adjust memory settings.

</details>

<details>

<summary>v2.26.0 - Developer Console: Emotion Pipeline, Operator UX &#x26; Memory Analytics (April 9, 2026)</summary>

#### Emotion Panel Redesign

The emotion panel in the playground and call detail views has been redesigned with a signal-first hierarchy:

* **Caller Status** - Plain English summary of caller emotional state with colored status indicator
* **Call Health** - 0-100 composite score bar combining valence, trend, compound emotions, and behavioral signals
* **Trust Signal** - Flags when voice tone contradicts words ("caller may not be satisfied despite verbal agreement")
* **Active Emotions** - Compound emotions as colored pills, shown only when notable
* **Session Verdict** - End-of-call summary paragraph suitable for review tickets
* **Three-Layer Pipeline Debugger** - Shows how emotion flows from detection to agent behavior per turn: what the emotion engine detected, what empathy tier was decided, and what TTS voice tone was applied

#### Operator Command Center

Production-ready operator experience:

* **Operator identity gate** - Operators select their profile on first visit (stored per workspace). Auto-selects if only one operator exists.
* **Escalation type badges** - Queue items show escalation source (safety, high risk, caller distressed, stuck in loop)
* **Browser notifications + alert sound** - Push notifications and audio alerts on escalation, works in background tabs
* **Toast escalation alerts** - Persistent in-app toasts that stack until dismissed
* **System health dashboard** - Replaces empty queue with escalations handled today, operators online, and average wait time
* **Simplified navigation** - Operator role sees only Command Center in sidebar; admin tabs reduced from 6 to 4

#### Memory Analytics Dashboard

The Functional Memory page now includes an analytics section with hero metrics (coverage, total facts, active dimensions, entities with data), per-dimension breakdown table, top data sources with progress bars, and recent activity stats.

#### LLM Extraction Mode

Custom memory dimensions can now be configured with LLM extraction mode from the Functional Memory page. The UI shows extraction mode alongside weight and event type settings.

#### Hybrid Topology Knowledge Graph

The coverage knowledge graph now uses adaptive anchor derivation: clustering sessions around context graph states when topology is clear, falling back to tool-based clustering or free layout when state distribution is sparse.

#### Simulated Sessions in Calls Page

Simulation coverage sessions now appear in the calls list alongside real calls, filterable by direction. Click through to the standard call detail view with full conversation, tool calls, and state transitions.

</details>

<details>

<summary>v2.25.0 - Developer Console: Functional Memory Management (April 8, 2026)</summary>

#### Functional Memory Page

New Functional Memory page under the World section for managing workspace memory dimensions. Each dimension displays as a card showing its weight, active/inactive toggle, associated event types, and extraction paths. Workspace admins can:

* **Adjust dimension weights** to prioritize certain memory categories
* **Toggle dimensions** on or off without deleting them
* **Add custom dimensions** for domain-specific memory needs
* **Delete custom dimensions** (built-in dimensions can only be deactivated)

Unsaved changes trigger a browser warning to prevent accidental navigation.

#### Patient Memory Tab Upgrade

The Memory tab on patient detail pages now reads from the Platform API's memory query endpoints instead of the previous workaround. Facts are lazy-loaded per dimension on expand, showing extracted content, source conversation, timestamp, and confidence. A "Customize dimensions" link navigates to the Functional Memory settings page.

</details>

<details>

<summary>v2.24.0 - Developer Console: Conversation Tree Explorer (April 8, 2026)</summary>

#### Coverage Conversation Tree

The coverage knowledge graph visualization has been redesigned as an interactive conversation tree. Each turn is a node, and sessions form visible chains. Clicking any node highlights the full session path and opens a conversation panel showing the complete caller/agent text for every turn in that session.

Features:

* **Session path tracing** - Click a node to highlight its session chain; non-selected sessions dim for visual clarity
* **Conversation panel** - Read the full turn-by-turn dialogue for any session
* **Animated particles** flowing along selected session edges
* **Session-level coloring** - Each session gets a distinct hue for easy visual differentiation
* **Fork edges** rendered as curved dashed lines showing branch points
* **Organic clustering** with slow alpha decay for Obsidian-style layout

</details>

<details>

<summary>v2.23.0 - Developer Console: Simulation Coverage Knowledge Graph (April 8, 2026)</summary>

#### Coverage Knowledge Graph

New Coverage section with an interactive D3 force-directed graph visualization for simulation coverage results. Nodes are sized by turn count and colored by pass rate. Ghost nodes (untested context graph states) appear as outlined placeholders, highlighting coverage gaps.

Features:

* **Drag, pan, and zoom** for navigating large state graphs
* **Node click** opens a session drawer showing conversation details for that state
* **Hover tooltips** with session count, pass rate, and turn count
* **Timelapse controls** that scrub through turns showing progressive discovery of the state space over time

The coverage page lists all runs per service, with drill-down to the knowledge graph view.

</details>

<details>

<summary>v2.22.0 - Developer Console: Text Playground, Behaviors &#x26; Memory (April 8, 2026)</summary>

#### Multi-Channel Text Playground

New text playground alongside the existing voice playground for testing services via text chat. Select a service and simulate a multi-turn text conversation without making a phone call. Useful for testing context graph logic, tool execution, and response quality independently of voice configuration.

#### Behaviors Settings

New Behaviors page as a first-class section in the console. Create, edit, and delete dynamic behavior triggers directly from the UI. Each behavior displays its trigger conditions, response instructions, and associated service.

#### Memory Tab

The World Explorer now includes a Memory tab alongside existing entity and event views. The memory tab shows L1 extracted memories with surface domain dimensions, making it easier to inspect what the agent has learned about an entity across interactions.

#### Sidebar Improvements

* Behaviors promoted to a first-class sidebar entry
* Collapsible sidebar with full navigation hierarchy
* Coverage section added under Testing

</details>

<details>

<summary>v2.21.0 - Developer Console: Context Graph Visualizer (April 7, 2026)</summary>

#### Context Graph Visualizer

The context graph detail page now includes an interactive visual representation of the state machine. States and transitions are rendered as a navigable graph on the version panel, making it easier to understand conversation flow structure. Clicking a state opens the state detail panel showing transitions, tools, and exit conditions.

</details>

<details>

<summary>v2.20.0 - Developer Console: CRM, FHIR &#x26; Phone Number Management (April 7, 2026)</summary>

#### CRM Management

The CRM page now includes detail panels for companies and deals alongside the existing contact view. Company details show associated contacts and deals. Deal details show pipeline stage, value, and linked contacts. All three CRM entity types support inline viewing from the CRM list page.

#### FHIR Resource Browser

Three new resource cards in the FHIR browser:

* **Location** - Clinic/facility details with address, status, and associated services
* **Organization** - Healthcare organization details with identifiers and contact info
* **Practitioner** - Provider details with qualifications, specialties, and identifiers

#### Phone Number Registration

New registration dialog on the Phone Numbers page. Workspace admins can register new phone numbers directly from the Developer Console instead of through the API.

#### Phone Volume Analytics

New analytics tab showing call volume by phone number, enabling workspace operators to monitor load distribution across their phone number pool.

</details>

<details>

<summary>v2.19.0 - Developer Console: Personas, Billing &#x26; Workspace Settings (April 7, 2026)</summary>

#### Personas Management

New Personas section for managing cross-channel agent identities. Create, edit, and delete personas that define agent name, role, background, and communication style. Services display their associated persona name in the services table.

#### Billing Dashboard

New Billing page showing workspace usage metrics and billing information.

#### Workspace Settings Expansion

The Settings page has been redesigned with a vertical sidebar tab layout and three new configuration sections:

* **Branding** - Configure workspace-level branding for patient-facing surfaces (logo, colors, fonts)
* **Environments** - Manage environment overlays (sandbox vs production) with tool and data source overrides
* **Workflows** - Define declarative multi-step workflow specifications

#### Tool Naming Update

All tool definitions updated to use canonical naming conventions, matching the Platform API change. Queue and ticket tools added to the tool inventory.

#### Fixes

* Settings page tab switching no longer causes layout shift
* Observer WebSocket now retries on rate limit responses instead of disconnecting

</details>

<details>

<summary>v2.18.0 - Developer Console: Athenahealth Connector &#x26; Preview Deployments (April 6, 2026)</summary>

#### Athenahealth EHR Connector

The EHR sync settings page now supports athenahealth as a connector type. Workspaces can configure athenahealth data sources from the Developer Console with display metadata, dropdown selection, and status banners.

#### PR Preview Deployments

Pull requests now automatically deploy isolated preview environments. Each preview gets its own namespace with auto-login support, so reviewers can test frontend changes without local setup. Preview namespaces are cleaned up automatically by a daily cron job.

Cross-repo preview linking connects Developer Console previews to Platform API previews, so frontend PRs that depend on backend changes can be tested together.

#### Emotion Detection Improvements

The call detail emotion panel now shows the highest toxicity category name (instead of a generic percentage) and uses visual severity styling above 70%. New emotions added to the detection palette: Hostility, Contempt, Calmness, and Surprise.

</details>

<details>

<summary>v2.16.0 - Developer Console: Simulation Traces &#x26; Conversation View (April 3, 2026)</summary>

#### Simulation Conversation Traces

The simulations detail page has been rebuilt around conversation traces. Each simulation evaluation now displays the full multi-turn conversation between the simulated caller and the agent, including tool calls, state transitions, and empathy classifications. This replaces the previous exploration graph and point-detail panel with a more readable conversation-first layout.

#### Simplified Simulations List

The simulations list page now uses a more compact table layout with direct access to run status, scores, and conversation traces.

</details>

<details>

<summary>v2.15.0 - Developer Console: Voice Simulation &#x26; Network Settings (April 2, 2026)</summary>

#### Voice Simulation Explorer

New Simulations page with real-time visualization of VoiceSim runs:

* **Exploration graph** - Interactive visualization of the configuration search space, showing evaluated points, scores, and neighboring configurations.
* **Score timeline** - Chronological view of evaluation scores to track exploration progress.
* **Scenario radar** - Radar chart comparing configuration performance across all 8 built-in scenarios.
* **Config diff** - Side-by-side comparison of a configuration against production defaults, highlighting dimensions that diverge.
* **Live feed** - Real-time SSE-powered progress updates during active simulation runs.

Simulations are accessible from the Quality section in the sidebar navigation.

#### Network Settings

New network section on the workspace settings page displaying the platform's egress IP addresses for firewall allowlisting. Customers configuring EHR or CRM connectivity can copy IPs directly without contacting support.

</details>

<details>

<summary>v2.14.0 - Developer Console: Navigation Restructure (April 2, 2026)</summary>

#### Workflow-Aligned Navigation

The console sidebar has been reorganized from flat feature sections into workflow-aligned groups:

* **Overview** - Dashboard and Command Center
* **Build** - Playground, Agents, Context Graphs, Skills, Integrations, Services, Tools
* **Operate** - Operator Command Center, Calls, Active Calls, Recordings, Operators, Phone Numbers
* **Data & Intelligence** - Pipeline, Data Sources, World Model, FHIR, Surfaces, Analytics, CRM
* **Safety & Compliance** - Safety Dashboard, Monitor Concepts, Review Queue, Triage
* **Configuration** - Workspace Settings, API Keys, Unification Rules

Tool Testing is accessible from the Build section via the command palette and from the tools list page.

</details>

<details>

<summary>v2.13.0 - Developer Console: Tool Testing Playground (April 2, 2026)</summary>

#### Tool Testing Playground

New Tool Testing page lets developers select a service, browse its resolved tools (world tools, skills, integrations), and execute them with custom input parameters, entity context, and dry run mode. Results display execution duration, tier, blocked side effects, and sub-tool call logs.

#### Surface UI Improvements

* Surface detail page now includes expanded debugging panels with refresh behavior for tracking delivery status changes in real time.
* Surface analytics page has additional delivery and completion breakdowns.

#### Fixes

* Playground observer status banners display correctly with all required props.
* Tool-testing Zod schemas aligned with backend response models.

</details>

<details>

<summary>v2.12.0 - Developer Console: Backend Integration &#x26; HSM Extension Types (April 1, 2026)</summary>

#### Source Overview Integration

The pipeline page now includes a per-source overview panel showing aggregated pipeline health: event counts by status, last sync time, and error summary. This provides at-a-glance monitoring for individual data sources without navigating to the full pipeline status view.

#### Context Graph Extension Types

Context graph action states now support three new extension type configurations in the editor:

* **Wait conditions** - Configure states that pause until a condition clears (surface submission or human approval), with the agent making empathetic small-talk while waiting.
* **Channel overrides** - Define per-channel behavior (voice vs. SMS) for objective, action guidelines, and filler suppression within the same context graph.
* **Surface templates** - Attach surface specs that auto-create on state entry, linking to the session's primary entity.

#### Multi-Value Source Type Filtering

Data source queries now support filtering by multiple source types simultaneously, matching the new Platform API multi-value `source_type` parameter.

#### Pagination Totals

All list views across the console now display the total count of matching records, powered by the new `total` field on paginated API responses.

</details>

<details>

<summary>v2.11.0 - Developer Console: Surface Management &#x26; Delivery (April 1, 2026)</summary>

#### Surface Create & Deliver

Full surface lifecycle management from the console:

* **Create surface sheet** - `CreateSurfaceSheet` side panel for building new surfaces with field editor, channel selection, entity linking, and expiration configuration.
* **Deliver surface dialog** - `DeliverSurfaceDialog` for sending surfaces to patients via SMS or iMessage, with phone number input and delivery confirmation.
* **iMessage channel support** - Surfaces can now be delivered via iMessage in addition to SMS, WhatsApp, email, voice, and web.
* **Surface detail enhancements** - Expanded detail page with submission viewer, delivery status timeline, and field-level response display.
* **Surface analytics** - Updated analytics page with delivery and completion metrics.

#### Fixes

* Surface status badges use correct schema enum values.
* Text sessions table correctly renders session metadata.

</details>

<details>

<summary>v2.10.0 - Developer Console: API Key Rotation &#x26; Developer Setup (April 1, 2026)</summary>

#### API Key Rotation

Full UI for rotating API keys without leaving the console:

* **Rotate dialog** - `RotateApiKeyDialog` prompts for new expiration (1-90 days) and displays the rotated key exactly once with copy-to-clipboard.
* **Expanded key detail** - `ApiKeyExpandedContent` shows key metadata including `last_used_at` timestamp, creation date, and role.
* **Usage visibility** - API key table rows now display when each key was last used, helping identify stale keys before rotation.

#### Developer Setup Guidance

New onboarding experience on the workspace home page for developers setting up their first workspace:

* **Setup checklist** - `DeveloperSetupSection` guides through initial configuration steps (create agent, configure voice, connect data source, set up phone number).
* **Contextual home content** - `DeveloperHomeContent` adapts the home page based on workspace setup progress, showing relevant next steps.

#### Fixes

* Workspace activation is now best-effort in all navigation paths, preventing redirect loops when the identity service is slow.
* Workspace access falls back to the platform API when the identity service returns an empty workspace list.
* Select-workspace page wrapped in Suspense for `useSearchParams` prerender compatibility.

</details>

<details>

<summary>v2.9.0 - Developer Console: Empathy Observer, Data Source Operations &#x26; Remediation (March 31, 2026)</summary>

#### Empathy Pipeline Observer

The playground and call observer now display empathy pipeline events in real time:

* **Empathy tier badges** - Each turn shows the classified empathy tier (T0-T3) alongside emotion signals.
* **Filler type indicators** - Filler events display their taxonomy type (`empathy`, `receipt`, `working`) with corresponding styling.
* **Baseline decay tracking** - The empathy baseline value is visible in the event stream, showing how the agent's empathy sensitivity decays across turns.

#### Data Source Operations Panel

New dedicated panel for monitoring data source operations from the data source detail page:

* **Operations timeline** - Chronological view of sync operations per data source with status, duration, and event counts.
* **Connector health indicators** - Live connector runner status and recent poll results displayed inline.
* **Operation detail drill-down** - Click any operation to view individual events processed, errors encountered, and entity resolution outcomes.

#### Source-System Recovery Handoff

The world sync page now includes source-system recovery tools:

* **Source breakdown panel** - Per-source-system view of sync status with healthy/degraded/failed indicators and event counts.
* **Source breakdown table** - Detailed table of sync events grouped by source system with filtering by status and resource type.
* **Recovery actions** - Failed source systems surface actionable remediation steps based on the failure pattern (auth expired, rate limited, schema mismatch).

#### Remediation Hardening

* **Pipeline remediation actions** - New `PipelineRemediationActions` component provides contextual retry and skip actions for failed pipeline events.
* **World sync helpers** - Extracted sync event classification and status logic into testable helpers with full test coverage.
* **Patient detail remediation** - Patient detail pages now surface sync status and link to the relevant pipeline inspector for troubleshooting.
* **Cross-page deep links** - Entity and event links from pipeline/world sync inspectors navigate directly to detail pages with context preserved.

</details>

<details>

<summary>v2.8.0 - Developer Console: Pipeline &#x26; World Sync Inspectors (March 31, 2026)</summary>

#### Pipeline Source Inspector

New side panel for inspecting pipeline data sources in detail:

* **Source inspector sheet** - Click any pipeline source to open a detail panel with event history, sync metrics, and outbound delivery logs.
* **Outbound summary** - Aggregated view of outbound sink delivery status per source, with status filtering (all, pending, delivered, failed).
* **Source event history** - Chronological list of inbound events from each source with timestamps and status badges.

#### World Sync Event Inspector

New inspection and remediation tools for the world sync page:

* **Sync event inspector** - Click any sync event to view full detail: entity link, status, timestamps, and error context.
* **Retry failed events** - One-click retry for failed sync events directly from the inspector panel.
* **Status filters** - Filter the sync event table by status (pending, synced, failed, skipped) with URL-synced state.

#### Data Journey State Continuity

Table filters and navigation state now persist across the data journey pages:

* **URL-synced filters** - Filter state for patients, pipeline, world explorer, and world sync tables is stored in URL query parameters, surviving page refreshes and back/forward navigation.
* **Cross-page navigation** - Entity links in the pipeline inspector and world sync inspector navigate to the correct detail pages with context preserved.

#### Fixes

* Smart FHIR data source name field now stays editable during create flow.

</details>

<details>

<summary>v2.7.0 - Developer Console: Workspace UX &#x26; Live Playground (March 31, 2026)</summary>

#### Workspace Navigation

* **Workspace selector redesign** - Redesigned workspace selection page with improved search, recent workspaces, and keyboard navigation.
* **URL-based workspace routing** - Workspace context now derived from URL parameters with validated routing, replacing session-based state.
* **Command palette** - `Cmd+K` command palette for quick navigation across workspaces and pages.
* **Console header** - Unified header component with workspace context and navigation breadcrumbs.

#### Live Playground & Operator Handoff

* **Live session metadata** - New `useLiveSessionMeta` hook showing active participants, call duration, and session state in real time.
* **Session event timeline** - Event log panel displays structured session events (operator joined, guidance sent, takeover initiated) alongside conversation events.
* **Operator takeover flow** - Improved state machine for listen/guide/takeover transitions with clearer UI feedback and error recovery.
* **Integration test dialog** - Improved test call setup with service selection and configuration preview.

</details>

<details>

<summary>v2.6.0 - Developer Console: Configuration Management &#x26; Data Source CRUD (March 31, 2026)</summary>

#### Configuration Create Flows

New create pages for core configuration entities:

* **Context graphs** - `/hsms/new` stepped create wizard with JSON editor
* **Services** - `/services/new` expanded create form with version set configuration

All configuration tables (agents, context graphs, services, integrations) now include inline search with URL-synced query parameters.

#### Data Source Management

* **Detail page** - `/data-sources/[id]` dedicated detail view with connection config, sync status, and inline edit
* **Table improvements** - Search, source type filtering, and inline status indicators
* **Delete with confirmation** - Delete dialog with mutation hook

</details>

<details>

<summary>v2.5.0 - Developer Console: Enterprise Analytics &#x26; Compliance (March 30, 2026)</summary>

#### Analytics Enhancements

* **Advanced call stats tab** - Percentile-based call metrics (p50/p90/p99 latency, duration distribution, completion rates) with period-over-period comparison.
* **Operator performance tab** - Per-operator metrics: calls handled, average handle time, escalation resolution rate, and takeover frequency.

#### Compliance Enhancements

* **Audit export tab** - Export audit logs as NDJSON for offline analysis or handoff to auditors. Date range selection with download link generation.
* **PHI access tab** - Dedicated view for PHI access events: who accessed what patient data, when, and from where. Filterable by actor, resource, and date range.

#### Entity Intelligence

* Enhanced entity graph visualization with relationship counts and interactive navigation
* Entity lineage cards with provenance tracking and merge history
* Duplicate detection page with improved matching visualization

#### Other

* Surface type system with typed interfaces and test coverage
* Navigation config updates for enterprise dashboard sections
* Biome formatting applied across 177 files

</details>

<details>

<summary>v2.4.0 - Developer Console: SMART FHIR Data Source Management (March 30, 2026)</summary>

#### Self-Service SMART FHIR Setup

Full UI for creating, viewing, editing, and deleting SMART FHIR data sources without leaving the Developer Console:

* **Stepped create wizard** - `/data-sources/new` page with type selector. Selecting `smart_fhir` opens a guided form for FHIR base URL, token endpoint, client ID, algorithm (RS384/ES384), resource types, poll cadences, and FHIR scopes.
* **Private key handling** - PEM textarea on create. On edit, a "Key configured" badge confirms the key is provisioned, with a replace toggle to upload a new key.
* **Structured detail view** - SMART FHIR data sources display labeled fields instead of raw JSON, matching the integrations page pattern.
* **Delete with confirmation** - Delete dialog with mutation hook and automatic table refresh.
* **Zod validation** - Client-side validation for all SMART FHIR fields (URL format, client ID pattern, valid algorithm, non-empty scopes).

</details>

<details>

<summary>v2.3.0 - Developer Console: Playground Redesign &#x26; Next.js 16 (March 30, 2026)</summary>

#### Playground Redesign

Complete overhaul of the playground interface for test calls and live sessions:

* **Guidance bar** - New `GuidanceBar` component replaces the previous command bar, providing contextual operator guidance with injection controls for prompting or redirecting the agent during calls.
* **Test call controls** - Dedicated `TestCallControls` component for initiating and managing test calls, separate from live session controls.
* **Operator takeover restored** - Full operator takeover flow (listen, guide, take over) rebuilt with clearer state transitions and a dedicated `GuidanceInjectionPanel`.
* **Event log improvements** - Event log panel redesigned with better filtering and more compact layout.

#### Shared Primitive Components

New shared component library (`primitives/`) extracted from playground for cross-feature reuse:

* `Chip`, `FilterChip` - Tag and filter controls
* `MetricBadge` - Inline metric displays
* `PanelEmptyState`, `PanelHeader` - Consistent panel chrome
* `StatusDot` - Health/status indicators

#### Framework Upgrade

* Upgraded to **Next.js 16** with React 19 and Turbopack dev server
* All page components migrated to React 19 async patterns
* Turbopack replaces webpack for development builds (faster hot module replacement)

</details>

<details>

<summary>v2.2.0 - Developer Console: Call Detail Overhaul (March 30, 2026)</summary>

#### DAW-Style Audio Timeline

The call detail page now uses a multi-track timeline inspired by digital audio workstation (DAW) layouts. Each track (agent audio, caller audio, tool calls, state transitions) is rendered as a separate lane with a shared time axis, replacing the previous stacked segment view. This makes it easier to see exactly what happened at any point during a call.

#### Call Detail Redesign

Complete rebuild of the call detail page across four areas:

* **Intelligence visibility** - All call intelligence data (emotion trajectory, risk timeline, quality scores, tool performance) is now visible on the overview tab without requiring separate panels or tabs.
* **Phase grouping** - Conversation turns are grouped by context graph phase, making it clear when the agent transitioned between workflow stages.
* **Risk timeline** - Dedicated risk timeline visualization showing how risk scores evolved across the call, with markers for escalation-triggering events.
* **Compact layout** - Reduced visual density with smaller transcript bubbles and tighter spacing, fitting more content on screen without scrolling.

#### Unified Playground

* **Unified toolbar** - Single toolbar combining call controls, panel toggles, and export options
* **Unified tool panel** - All inspection tools (config, metrics, events, HSM graph) consolidated into a single resizable panel
* **Barge-in alerts** - Visual notification when the caller interrupts the agent mid-utterance
* **Latency readout** - Real-time latency metrics displayed inline during active calls
* **Session export** - Export full conversation sessions (transcript, events, metrics) as JSON

#### Enterprise Design Polish

* 24 visual fixes across call detail, playground, operators, and sidebar
* Emotion color system extracted into shared utilities for consistent visualization
* Operator guidance and takeover panels redesigned with clearer state transitions

</details>

<details>

<summary>v2.1.0 - Developer Console: Operator Command Center (March 29, 2026)</summary>

#### Operator Command Center

Single-screen operator interface that replaces the multi-page escalation workflow with a unified triage-to-intervention experience:

* **Priority queue panel** - Real-time ranked call list showing caller, state, wait time, turn count, risk score, emotion, and urgency level (critical/high/medium/low). Urgency computed from risk score and escalation status.
* **AI briefing** - On-demand call summary with situation, patient context, risk assessment, key issues, recommended actions, and call history. Enables operators to join calls with full context in seconds.
* **Intervention bar** - Listen, guide, and takeover modes accessible from the same screen with live audio meters for agent and caller streams.
* **Split command view** - Queue on the left, active call on the right. One click to select a call, one click to intervene.

Built using `SplitCommandView`, `QueueItem`, `BriefingCard`, and `InterventionBar` from the design system patterns library.

#### Additional Changes

* **Config section fix** - Home page configuration section layout and interaction improvements
* **UI overhaul** - 10 fixes across playground, calls, operators, sidebar, and auth middleware
* **Design system migration** - Remaining hand-rolled components replaced with design system equivalents

</details>

<details>

<summary>v2.0.0 - Developer Console: Enterprise Dashboard (March 29, 2026)</summary>

The Developer Console has reached full feature coverage for the Platform API's enterprise capabilities, including surfaces, call intelligence, compliance, and real-time analytics.

#### Surfaces & Gap Scanner

* **Surfaces page** - View, create, and manage data collection surfaces with lifecycle status tracking
* **Gap scanner settings** - Configure automated data gap detection rules, field requirements, cooldown, and fatigue gating
* **Test caller numbers page** - Manage phone numbers for test calls

#### Call Intelligence & Recordings

* **Call intelligence panel** - View per-call intelligence profiles: emotion trajectory, risk timeline, latency waterfall, tool performance, quality score
* **Recordings page** - Browse and play call recordings with voice hook integration
* **Emotion trends tab** - Visualize emotion distribution and valence/arousal trends
* **Latency, safety, and tool performance tabs** - Analytics dashboards for voice pipeline performance
* **Advanced call stats and comparison** - Percentile-based call metrics with period-over-period comparison

#### Pipeline & Command Center

* **Pipeline page** - Real-time connector runner status, per-source health, sync history, outbound sync
* **Command center page** - Single-pane workspace health dashboard aggregating voice, pipeline, data quality, and identity metrics

#### Compliance & Audit

* **Compliance page** - HIPAA evidence report and SOC 2 access review exports
* **Retention settings** - View and configure per-workspace data retention policies
* **Audit log** - Browse and export audit events with PHI access filtering
* **Session management** - View and revoke active sessions

#### World Model & Entity Intelligence

* **Entity search, graph, provenance, and duplicates** - React Query hooks and pages for all entity intelligence endpoints
* **CRM detail views** - Per-entity CRM data visualization

#### Real-Time Features

* **SSE event stream** - Client and `useEventStream` hook for real-time workspace updates
* **Live indicators** - Real-time status indicators integrated from design system

#### Design System

* **Full design system integration** - Consuming AmigoTable, Banner, Stepper, DateRangePicker, MultiSelect, Combobox, TagInput, Timeline, LiveIndicator, and FilterBar from `@amigo-ai/primitives` and `@amigo-ai/patterns`
* **Semantic color tokens** - Consistent theming via design system token layer
* **TypeScript strict mode** with tightened ESLint rules

</details>

## Admin Portal

<details>

<summary>v1.17.0 - Admin Portal: Navigation Cleanup &#x26; Research Agent (April 6, 2026)</summary>

#### Consolidated Navigation

Continuing the migration of management capabilities to the Developer Console, the following pages have been removed from the Admin Portal:

* **Context Graphs** - Create, edit, and upload context graphs (now Developer Console only)
* **Functional Memory** - User dimensions configuration
* **Analytics Services** - Per-service analytics dashboards and metric charts
* **Tool Repository Browser** - Source code browsing (tool repository API deprecated in v0.9.44)

These capabilities remain available through the Developer Console or Agent Forge CLI.

#### Research Agent with MCP

The Research Agent now uses MCP (Model Context Protocol) for data access, replacing the previous hardcoded SQL tool. This enables the research agent to discover and use data tools dynamically through a tool catalog, supporting richer queries across more data sources. Tracing now supports direct OTLP export for monitoring.

#### Brand Redesign

The Admin Portal has been updated with the Amigo brand identity:

* Redesigned sidebar with Amigo branding replacing workspace logos
* Updated training room cards with brand-aligned styling
* Refreshed navigation with bold selected items and compact search bar
* New font integration across the application

</details>

<details>

<summary>v1.16.0 - Admin Portal: Simplified Navigation (April 3, 2026)</summary>

#### Removed Legacy Pages

The Agents section and Calls Analytics dashboard have been removed from the Admin Portal sidebar. Agent management is now exclusively handled through the Developer Console, and call analytics are available through the Command Center.

</details>

<details>

<summary>v1.15.0 - Admin Portal: Tool Repository Browser (March 30, 2026)</summary>

#### Tool Repository Service

The Admin Portal now includes a client-side service for browsing the tool source code repository. Users can view branches, commits (with change stats and committer info), directory contents, and file content directly from the portal, consuming the tool repository API endpoints introduced in v0.9.40.

</details>

<details>

<summary>v1.14.0 - Admin Portal: Developer Portal Removal &#x26; Webhook Enhancements (March 29, 2026)</summary>

#### Developer Portal Removal

The Admin Portal no longer includes the developer portal routes. All developer-facing functionality (agents, context graphs, calls, data sources, CRM, FHIR, integrations, operators, skills, monitor concepts) has been consolidated into the Developer Console. This is a **breaking change** for any bookmarks or links pointing to `/developer/...` paths in the Admin Portal.

Removed sections: agent management, call detail/observe, CRM, data sources, data explorer, FHIR browser, integrations, monitor concepts, operator management, home dashboard, and all developer-specific components (command palette, endpoint builder, workspace switcher).

#### Webhook Enhancements

* **`agent-framework-resource-updated`** webhook type added. Fires when agent framework resources (agents, context graphs, dynamic behaviors) are modified

</details>

<details>

<summary>v1.13.0 - Admin Portal: Playground Refresh, World Explorer &#x26; Operator Dashboard (March 26, 2026)</summary>

#### Playground

* **Dark toolbar and improved panel UX** - Design refresh with better visual hierarchy
* **Full Inspector + HSM panels** in test-call playground
* **Emotion panel overhaul** and HSM graph visualization
* **Escalation UI** - Live events, timeline markers, and inspector tab for escalation monitoring
* **Operator join-call UI** in session toolbar
* **Structured audio corrections** with STT comparison
* **Voice control plane API** with enriched observer events

#### World Explorer

* **Entity type registry overview page** with projection views
* **Dedicated entity endpoints** for each entity type
* **Entity CRUD** on the entities tab
* **CRM browser + FHIR clinical views** + delete patients

#### Operator Dashboard

* **Operator section** with CRUD pages for operator management
* **Browser-based call joining** for operators

#### Data & Integrations

* **World Sync dashboard** with sync health banner
* **Review queue improvements** - Batch operations, claims, correction schema, diff viewer, entity grouping, confidence charts
* **MCP integration form** and task visualization

#### Other

* **KPI dashboard** - Standalone admin portal dashboard
* **Voice calls analytics** page
* **Metric versioning** - Adapted for metric version migrations
* **Tool management** - Display names, error styling, tool additional\_instruction, tool capacity observability
* **Call timeline** - EOT confidence in turn badges, speaker role labels
* **HSM version editor** and skill dependency views
* **WhatsApp Embedded Signup** routing
* **Phone number management** - Call forwarding configuration UI

</details>

<details>

<summary>v1.12.0 - User Variables Management (February 23, 2026)</summary>

#### Web Platform Features

**User Variables Management**

Admins can now manage nonsensitive user variables directly from the user profile, for better integration with external systems and tools.

**Key Features**

* **Direct Profile Management**: Add, edit, or delete user variables without leaving the user profile
* **Tool Integration**: Key-value pairs are automatically passed to tools during invocation
* **External System IDs**: Store and manage external system user IDs (e.g., CRM, Salesforce) for smooth integration
* **Admin Control**: Only administrators can manage user variables for security and data consistency

**How to Access**

Navigate to Admin → Users, select a user, and scroll to the User Variables card on the Overview tab to add, edit, or delete key-value pairs.

</details>

<details>

<summary>v1.11.0 - API Key Expiration Webhooks (February 11, 2026)</summary>

#### Web Platform Features

**API Key Expiration Webhook**

You can now subscribe to API key expiration notifications via webhooks, so you can rotate keys proactively and prevent service disruptions.

{% hint style="info" %}
**New feature**: Subscribe to the `api-key-expiration-soon` webhook event to receive alerts at 14, 7, and 1 day before a key expires.
{% endhint %}

**Key Features**

* **Expiration Alerts**: Receive notifications at 14, 7, and 1 day before a key expires
* **Webhook Integration**: Subscribe to the new 'API Key Expiration Soon' event type
* **Proactive Management**: Ensure uninterrupted service by rotating keys before expiration
* **Easy Configuration**: Enable notifications through the standard webhook configuration interface

**How to Configure**

Navigate to Settings → Webhooks, create or edit a webhook, and enable the 'API Key Expiration Soon' event type to receive alerts at 14, 7, and 1 day before a key expires.

</details>

<details>

<summary>v1.10.0 - Call Recording Playback (February 2, 2026)</summary>

#### Web Platform Features

**Call Recording Playback in Session Overview**

Voice call recordings are now accessible directly from the session Overview tab, providing a simple way to review customer interactions without leaving the platform.

![Call recording playback in session overview](/files/rCAj5qZc3EbPYZlRzVXb)

**Key Features**

* **Overview Tab Integration**: Audio player now appears in the Overview tab of Past Sessions
* **Full Playback Controls**: Play/pause, seek, and volume adjustment for Twilio call recordings
* **Easy Navigation**: Access recordings from Training Room → Past Sessions → select voice conversation → Overview tab
* **Easy Review**: Review customer interactions, train agents, or audit conversation quality without context switching

**How to Access**

Navigate to Training Room → Past Sessions, select any voice conversation, and click the Overview tab in the right panel to find the audio player.

</details>

<details>

<summary>v1.9.0 - Developer Portal (March 10, 2026)</summary>

#### Web Platform Features

**Developer Portal**

A completely new section of the application providing a unified interface for platform management, live testing, and call review.

**Platform Management**

* **Agents**: List, create, and view agent details and versions
* **Services**: Full CRUD for services with version set management
* **Skills**: Browse skills with dependency visualization
* **HSMs**: Context Graph management with version history and a new version editor with skill picker
* **Integrations**: Full CRUD with support for OAuth2 JWT Bearer and managed credential auth methods
* **Phone Numbers**: View and configure phone numbers with call forwarding settings
* **API Keys**: Manage API keys within the developer context
* **FHIR Browser**: Browse and interact with FHIR resources
* **Tools Catalog**: Browse all available platform tools organized by category with input schema previews
* **Patients**: List and detail views for patient records
* **Data Sources**: List and detail views for connected data sources
* **Data**: Entity tables, event tables, and data import interface
* **Home Dashboard**: Aggregate dashboard showing system health, active calls, and recent events

**Live Playground**

* **Voice Call Playground**: Initiate and observe real-time voice calls with inspector panel
* **Tool Capacity Observability**: Real-time tool capacity metrics panel in the playground inspector
* **Call Observation**: Monitor active calls with live transcript and event stream
* **Endpoint Builder**: Interactive API endpoint testing component

**Call Review**

* **Audio Playback**: Full audio player bar with waveform visualization
* **Call Trace**: Detailed timeline view of call events with tool calls, turn transitions, and errors
* **EOT Confidence**: End-of-turn confidence scores displayed in call timeline and turn badges
* **Speaker Role Labels**: Agent/Caller labels in call history transcripts
* **Tool Display Names**: Human-readable tool names with styled error states for failed calls

**How to Access**

Navigate to the Developer section in the sidebar navigation. The Developer Portal includes its own workspace switcher, breadcrumbs, and command palette.

</details>

<details>

<summary>v1.8.0 - API Key Table Redesign (March 9, 2026)</summary>

#### Web Platform Features

**API Key Table Redesign**

The API key management interface has been completely refactored to use the standardized AmigoTable component system for a more consistent experience.

**Key Features**

* **AmigoTable Migration**: Standardized table with filtering, sorting, and pagination
* **New ID Column Type**: Dedicated ID column with copy-to-clipboard functionality
* **Improved UX**: Redesigned layout with better tooltip handling and truncation

</details>

<details>

<summary>v1.7.0 - Analytics Improvements (March 5, 2026)</summary>

#### Web Platform Features

**Analytics Improvements**

**What Changed**

* **Bounce Rate Calculation**: Changed from call-based to interaction-based calculation for more accurate metrics
* **Duration Distribution**: Added granular duration distribution bins for more detailed call duration analysis

</details>

<details>

<summary>v1.6.0 - WhatsApp Embedded Signup (March 3, 2026)</summary>

#### Web Platform Features

**WhatsApp Embedded Signup**

A new onboarding flow for connecting WhatsApp Business accounts directly within the platform.

**Key Features**

* **Guided Signup Flow**: Step-by-step WhatsApp Business account connection
* **Backend Integration**: Dedicated API route for WhatsApp embedded signup processing
* **Smooth Onboarding**: Complete the signup process without leaving the platform

**How to Access**

Navigate to the WhatsApp Embedded Signup page from the admin settings.

**Developer Portal Routes**

Added foundational route hierarchy for the upcoming Developer Portal.

</details>

<details>

<summary>v1.5.0 - Voice Calls Analytics (February 24, 2026)</summary>

#### Web Platform Features

**Voice Calls Analytics Dashboard**

A new analytics dashboard for monitoring voice call performance and trends.

**Key Features**

* **Summary Stats**: Total calls, completed, failed, and average duration at a glance
* **Bounce Rate Tracking**: Monitor conversation bounce rates
* **Latency Metrics**: P50 and P90 turn-level latency measurements
* **Call Volume Trends**: Line chart showing call volume over time with configurable granularity
* **Latency Trends**: Visualize latency patterns over selected time ranges
* **Duration Distribution**: Histogram view of call duration distribution
* **Prior Period Comparison**: Percent change calculations against previous period

**How to Access**

Navigate to Admin → Analytics → Calls to access the dashboard.

</details>

<details>

<summary>v1.1.0 - Context Graph Editing, Voice Recordings, Conversation Tags (January 30, 2026)</summary>

#### Web Platform Features

**Context Graph Editing**

Direct JSON editing for Context Graphs is now available within the UI, eliminating the need to switch to external tools when making configuration changes.

![Context graph editing](/files/5SgEEckpEEQwiFJ2HCsz)

**Key Features**

* **Inline JSON Editor**: Edit Context Graph JSON directly in the platform with syntax highlighting and validation
* **Real-time Updates**: Changes are applied immediately without requiring external tooling
* **Improved Workflow**: Faster iteration when tweaking context configurations

**How to Access**

Navigate to a Context Graph configuration to access the inline JSON editor.

**API Key Management Enhancements**

API keys now support custom naming for easier organization and identification when managing multiple integrations.

**What Changed**

* **Named API Keys**: Assign descriptive names to API keys for better identification
* **Improved Layout**: Fixed delete button overflow issues on smaller screens in the API keys table

**How to Use**

When creating or editing API keys, provide a meaningful name to help track different integrations or environments.

**Voice Call Recordings**

Twilio call recordings can now be played back directly from session details, so you can review conversations without leaving the platform.

**Key Features**

* **In-App Playback**: Listen to Twilio recordings directly in session details
* **Twilio Call SID Display**: Session details now show the Twilio Call SID for easier cross-referencing
* **Authorization Fixes**: Resolved issues with Twilio recording playback authorization

**How to Access**

Navigate to any session with a Twilio voice call to access the recording playback controls.

**Service Configuration Updates**

New configuration options improve service setup and customization.

**What Changed**

* **Key Terms Field**: Add key terms when creating or updating services to improve agent understanding
* **Enhanced Metadata**: Better organization of service-level configuration

**Conversation Tagging**

Tags can now be attached to conversations at the start and are visible during live sessions for better organization and tracking.

**Key Features**

* **Start-time Tagging**: Attach tags when initiating conversations
* **Live Visibility**: View tags during active sessions for quick context
* **Organization**: Categorize conversations by topic, campaign, or customer segment
* **Metadata Loading Fix**: Resolved issues with metadata loading for new text conversations

**How to Use**

Add tags when starting a conversation, or view existing tags in the live session interface.

**Cartesia Voice Provider**

Cartesia is now available as a voice provider option with enhanced transcript alignment capabilities.

**Key Features**

* **New Voice Option**: Select Cartesia as a voice provider in service configuration
* **Word-level Alignment**: Improved transcript synchronization for more accurate playback
* **Enhanced Quality**: Additional voice provider choice for different use cases

**How to Configure**

Select Cartesia as the voice provider in your service configuration settings.

**Additional Improvements**

* **Filter Improvements**: Past Sessions filter dropdown now hides inactive services to reduce clutter
* **Error Visibility**: Error details are now fully visible without being cut off
* **Scrolling Fixes**: Improved scrolling behavior on the conversation artifacts page
* **Error Handling**: Usage stats now gracefully handle database errors instead of displaying error messages
* **Keyboard Shortcuts**: Cmd+click now opens user actions in a new tab for improved navigation

</details>

<details>

<summary>v1.0.0 - Initial Platform Release (December 2025)</summary>

#### Web Platform Features

**Billing Dashboard**

A new Billing Dashboard is now available under Settings, providing visibility into workspace usage and consumption metrics.

**Key Features**

* **Consumption Trends**: Visualize usage patterns with interactive charts showing consumption over time
* **Budget Cycle Tracking**: Monitor spending within configured budget cycles
* **Audit Logs**: Access detailed audit logs with pagination for tracking billing-related events
* **Timezone-Aware Display**: All dates and times are displayed in the user's local timezone for accurate reporting

**How to Access**

Navigate to Settings → Billing in the web platform to access the dashboard.

**Live Session Controls**

Administrators can now generate recommended user responses during live conversations to assist with real-time coaching and quality assurance.

**Key Features**

* **Response Recommendations**: Generate contextually appropriate user responses during active sessions
* **Temperament Configuration**: Adjust response tone and style using configurable temperament settings
* **Response Modes**: Choose from multiple response generation modes tailored to different conversation scenarios
* **Input Channel Selection**: Configure response fidelity based on input channel requirements

**How to Use**

Access the Live Session Control panel during active conversation monitoring to generate and review recommended responses.

**Tool Call Indicators for Admins**

Conversation messages now display tool call indicators for administrators, providing visibility into agent tool usage during conversations.

**What Changed**

* Tool call events are surfaced directly in the conversation UI for admin users
* Agent inner thoughts are displayed with a dedicated message component
* Tool output messages provide clearer context in the InteractionDetails component

**Voice Call UI Improvements**

The voice call interface has been enhanced with improved visual design and additional functionality.

**Key Features**

* **Call Duration Timer**: Real-time display of call duration during active voice sessions
* **Improved Event Cards**: Smooth hover transitions and fade animations for voice call event stream cards
* **Audio Filler Fixes**: Resolved issues with transcript alignment after audio filler playback

**View Prompts for AI Debugging**

A new View Prompts feature allows administrators to inspect the prompts used in AI decision-making across different agent types.

**Key Features**

* Full prompt log viewing for all agent types
* Access to compute\_metrics and tool\_params log paths
* Select next action prompt log button in Quantized Reasoning header

**Analytics Improvements**

Several analytics enhancements improve data accuracy and usability.

**What Changed**

* **Metric Overlay Selection**: Add metric overlays on service analytics with date range constraints
* **Timezone Consistency**: Date range URL serialization now properly handles timezone offsets
* **Day Boundary Filtering**: LIVE\_METRICS\_RESULTS queries use proper day boundaries for date filtering
* **Chart Legends**: Chart legends repositioned to top right for better visibility
* **Pagination Fixes**: Analytics pagination and cursor-based queries now work correctly

**Model Selection UI**

A redesigned model selection interface provides a cleaner experience when configuring LLM models for services.

**What Changed**

* New visual design for model selection across service configuration
* Models are now fetched dynamically from the Get Models API
* Legacy LLM load balancing sets have been removed in favor of simplified model preferences

**AmigoTable Component System**

A new unified table component system (AmigoTable) standardizes table presentation and functionality across the platform.

**Technical Details**

* Consistent filtering, sorting, and pagination across all tables
* Support for server-side and client-side filtering
* Column types: text, delta, number, toggle, tag list, and link
* URL synchronization for filter state persistence
* Infinite scroll support for large datasets

**Migrated Tables**

* Agents table
* Users table
* Metrics table
* Dynamic Behavior table
* HSM table
* Metric Results table

**Additional Improvements**

* **Browser Search**: Context graph JSON content now supports browser Cmd+F search
* **End Chat Button**: End chat button now displays correctly for user role type conversations
* **Sticky Save Footer**: User profile save changes converted to sticky footer pattern
* **Settings Consistency**: Design consistency improvements across all Settings pages with semantic design tokens

#### Amigo Platform Features

**GPT 5.1 Available in Service Version Sets via Azure**

GPT 5.1 is now available for use in Service Version Sets via Azure for experimental use.

**What changed:**

GPT 5.1 can now be selected as a model option when configuring Service Version Sets through Azure. The model exposes the following parameters for customization:

* **Temperature**: Controls the randomness of model outputs
* **Top P**: Controls diversity via nucleus sampling
* **Verbosity**: Controls the level of detail in model responses
* **Reasoning Effort**: Controls the computational effort allocated to reasoning tasks

**What you need to do:**

Configure GPT 5.1 in your Service Version Sets. Select "azure\_gpt-5.1\_2025\_11\_13" as your model option and adjust the available parameters to match your use case requirements.

</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.amigo.ai/api-reference/change-logs/web-platform.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.
