# @adobe/exc-app Changelog

## 1.6.5 (2026-09-03)

- [Feature] Add client context APIs to `ai` — `ai.setClientContext(context)` stores structured context (`appDescription`, `pageDescription`, `focusedResources`, fallback `name`) at the shell level, shared across every solution/iframe on the page; `ai.getClientContext()` asynchronously returns a `ClientContextSnapshot` combining Unified Shell's own resolution of the current `application` (from documentation sources, the solution registry, then the last `setClientContext` values) with the current `view` and shared `focusedResources`. Adds `ClientContext`, `FocusedResource`, `ClientContextApplication`, `ClientContextView`, and `ClientContextSnapshot` types (EXC-49241) ([cb5e605f](https://github.com/Adobe-dxue/unified-shell/commit/cb5e605fcf89a8e0585ea922176aefb3f34cc81c))
- [Feature] Add `reloadIframe` built-in WebMCP tool — auto-registered browser-side tool that triggers `Page.iframeReload` so AO2 can reload the active solution iframe ([42d9d9d6](https://github.com/Adobe-dxue/unified-shell/commit/42d9d9d6e6cd3514f2badd0b71eda44778983e64))
- [Type Change] Rename the `AppIds` member `STRATEGIC_IDEATION` to `IDEATION_SPACE` (value `catalyze-frontend` unchanged) ([f7e01ba5](https://github.com/Adobe-dxue/unified-shell/commit/f7e01ba5adf76a1d07c10a6d16c3e929123144da))
- [Improvement] React 19 support — bump the `@apollo/client` peer dependency to `^3.14.1` and update the `init` bootstrap example in the docs from `ReactDOM.render` to `createRoot(...).render` (EXC-42203) ([f5b96934](https://github.com/Adobe-dxue/unified-shell/commit/f5b9693456ae64558b9f71c386074a0af9a2b03b))
- [Improvement] Clarify built-in WebMCP tool descriptions — disambiguate `getPageContext` vs `getElements` and clean up `changeText`, `clickElement`, `getFullDom`, and `shellNavigate` descriptions/input schemas so AO2 selects the right tool (EXC-3281) ([9fd9e9c4](https://github.com/Adobe-dxue/unified-shell/commit/9fd9e9c4ffc84604aad06fac77f1d5f607c3e9f1), [854a7cd2](https://github.com/Adobe-dxue/unified-shell/commit/854a7cd23f4c990e421c93b50a2b50599ef0977a))

## 1.6.4 (2026-08-14)

- [Type Change] Add `isAIRailEnabled` and `isCoworkerEnabled` to `AppContext` (via `ai.appContext()`) and `RuntimeConfiguration` (the default configuration payload) — lets a host app know whether the AI/Coworker rail is available for the current app (so `ai.openChat` will surface a panel) and whether Coworker is enabled, to choose the correct fallback destination (EXC-0000, [coworker-ui-experience#3246](https://github.com/Adobe-dxue/coworker-ui-experience/issues/3246)) ([81ba1457](https://github.com/Adobe-dxue/unified-shell/commit/81ba1457938cc48f5711099b4b16682e1d3ed7c9))
- [Type Change] Add `totalHeaderHeight` to `RuntimeConfiguration` — the header height plus any banners (announcement, network disconnect, etc) above the Shell, since banners now push the app down instead of overlaying it; clarify `shellHeight` docs to note it covers the header only (EXC-47391) ([f6e46992](https://github.com/Adobe-dxue/unified-shell/commit/f6e469920d6a98a26fafedd00e49ca90cb396a45))
- [Feature] Support attachments in `ai.openChat` — add an `AIAttachment` type (`artifactId`, `contentType`, `name`) referencing files the host solution has already uploaded, and accept `attachments` on `OpenChatProps` and `AIMessagePayload` to pass them as message context without re-uploading file content (EXC-49064) ([464b91ae](https://github.com/Adobe-dxue/unified-shell/commit/464b91ae29e432f7ab000a0d7025cb0ee250f559))
- [Feature] Support cooperative cancellation of WebMCP tool calls — `webmcp.executeTool` accepts an `options.signal` `AbortSignal`, and a `ToolDefinition.execute` handler now receives an optional `ToolExecutionContext` (with `signal`) as its second argument so long-running handlers can bail out when the caller aborts; both are additive and existing single/two-argument callers are unaffected ([5bbd4acd](https://github.com/Adobe-dxue/unified-shell/commit/5bbd4acd6fdaada4f0725798f77022bae68bdb30))

## 1.6.3 (2026-07-30)

- [Feature] WebMCP generic tools — built-in browser-side tools auto-registered for AO2: `getElements`, `getFullDom`, `clickElement`, and `changeText` (EXC-47666), `getPageContext` (EXC-47949), and `shellNavigate` to navigate the Shell to a URL or path (EXC-47953) ([b972fd3f](https://github.com/Adobe-dxue/unified-shell/commit/b972fd3ff45e239718d3f281bb98259231a2ef68), [1db68cf7](https://github.com/Adobe-dxue/unified-shell/commit/1db68cf731c08d66dc87669164946e905df6b184), [fc04e156](https://github.com/Adobe-dxue/unified-shell/commit/fc04e156338d03cb29fc861a65b9bc8c54c65cb1))
- [Feature] Add `openProfile` API to `ShellApi` — opens the Shell-owned Profile popover anchored to a caller-provided element ref; adds `icon` to the `userProfile.setButtons` `Button` type (EXC-48254) ([dc49941c](https://github.com/Adobe-dxue/unified-shell/commit/dc49941c48825d24285c5d19f4915aa4d2bcdb30))
- [Feature] Add F6 keyboard landmark navigation — Shell now handles `react-aria-landmark-navigation` events at the iframe boundary so landmark navigation crosses from a solution's frame into the Shell (EXC-45322) ([e7135cb8](https://github.com/Adobe-dxue/unified-shell/commit/e7135cb8867b0a8ee612c7dc8665fb640c541200))
- [Type Change] Add `TOOL_PERMISSION` enum (`ALLOW`, `ASK`, `ASK_REMEMBER`) and optional `permission` field on `ToolDefinition` — lets a WebMCP tool declare its user-consent policy before AO2 invokes it ([a1893b1a](https://github.com/Adobe-dxue/unified-shell/commit/a1893b1acde6ba23085700edbfaeb672631ff607))
- [Type Change] Add `COWORKER` to `AppIds` and `AEC` to `AppParent`; rename the `JOURNEY_OPTIMIZER_B2B_PRIME` value from `falcoHome` to `falco-unified` (EXC-48727) ([fcaa105d](https://github.com/Adobe-dxue/unified-shell/commit/fcaa105d2ea8881fdfe5d0130030c78f4730200f))
- [Type Change] Add `headerlessMode` to `RuntimeConfiguration` — hides the shell header when enabled (EXC-48253) ([8c5aa4b3](https://github.com/Adobe-dxue/unified-shell/commit/8c5aa4b35a79355b39bbdfd297b3bd9be6fe561f))
- [Type Change] Add `GENSTUDIO_EMAIL_DESIGNER` to the `COMPONENT` enum (GS-35737) ([8787aa98](https://github.com/Adobe-dxue/unified-shell/commit/8787aa981237747738b229effafd805f9209b9fa))
- [Improvement] Gate built-in WebMCP tools behind the `shell-webmcp-tools` feature flag CSV allowlist — a tool only registers if its name is included, and tools that fall out of the allowlist on a later update are unregistered (EXC-48774) ([e4c9c0f0](https://github.com/Adobe-dxue/unified-shell/commit/e4c9c0f0aebec7d9eaae2edebc814aa359726178))
- [Improvement] `webmcp.registerTool`/`unregisterTool` default an omitted `component` to the registering frame's `messenger.appId`, and `registerTool` now throws on a real name collision instead of silently overwriting the existing handler (EXC-48836) ([f411397f](https://github.com/Adobe-dxue/unified-shell/commit/f411397f0d33841bfcaa3dd334f6d7c003cef50f))
- [Bug fix] Fix nested SPA page-load P95 measurement artifact — ignore repeated nested `page.done()` calls that were re-measuring against the original nest start and inflating load times (EXC-43476) ([8882b260](https://github.com/Adobe-dxue/unified-shell/commit/8882b260fb9f475213b1f5d9f620138a48a9f3e1))
- [Bug fix] Refresh `digitalData.user.language` on locale preference change so Gainsight guides and the Experience League widget pick up the new locale without a hard refresh (EXC-48773) ([442f68cb](https://github.com/Adobe-dxue/unified-shell/commit/442f68cb8495831773b50a65bdaad761d305fe14))
- [Bug fix] Keep the menu open when the Pulse dialog is opened (EXC-48497) ([761e8b5c](https://github.com/Adobe-dxue/unified-shell/commit/761e8b5c6aeb00a135a72d00a833d3c94bcd541b))
- [Bug fix] Reposition the popover on zoom (EXC-48496) ([bba61172](https://github.com/Adobe-dxue/unified-shell/commit/bba6117200c5ea9f1b86a49a569dffc4bf347447))

## 1.6.2 (2026-06-08)

- [Bug fix] Fix issue where version.ts was not bundled properly due to yarn version upgrade.

## 1.6.0 (2026-05-22)

- [Feature] Add `webmcp` module — solution-facing API at `@adobe/exc-app/webmcp` for registering browser-side tools that AO2 can invoke via the WebMCP protocol; exposes `registerTool`, `unregisterTool`, `executeTool`, `getTools`, and `on`/`off` for the `change:tools` event, plus `ToolDefinition`, `SerializableToolDefinition`, `InputSchema`, `InputSchemaProperty`, `ToolHandler`, and `ToolsChangedHandler` types (EXC-47541) ([7513d99b](https://github.com/Adobe-dxue/unified-shell/commit/7513d99bb35a83f641eb61446c69bd81924e134a))

## 1.5.11 (2026-05-14)

- [Feature] Add `appContext` to `openChat` — `OpenChatProps` now accepts `appContext?: JSONValue` to pass structured context directly to the AI panel without requiring an `APP_CONTEXT` interframe request; adds new `JSONValue` type ([ac33f834](https://github.com/Adobe-dxue/unified-shell/commit/ac33f8346aaaa8cf90a2c77d6e255df3cce09b16))
- [Type Change] Refactor `LeftNavConfig` into a discriminated union — adds `LeftNavDisabledConfig` (`{enabled: false}`) and `LeftNavEnabledConfig` interfaces; pass `{enabled: false}` to `useLeftNavButton` to remove a previously registered button (EXC-47389) ([33f32482](https://github.com/Adobe-dxue/unified-shell/commit/33f324823e482f29ddcca26d5059cb52e8efe521))
- [Type Change] Add `gqlPreview` to `BaseNetworkConfig` — shell propagates the `gql_preview` URL param to nested SPA iframes via `RuntimeConfiguration`; fixes cross-origin failure when nested frames tried to read `win.top.location` directly ([6887b342](https://github.com/Adobe-dxue/unified-shell/commit/6887b3429efcb29b9b45b684facf746422b8961b), [767a7ee1](https://github.com/Adobe-dxue/unified-shell/commit/767a7ee172192706988acbaab78601b069774ad3))
- [Type Change] Add `LABS` (`cxLabs`) to `AppIds` — moves AEP Labs to the CX product line (EXC-47665) ([5b487131](https://github.com/Adobe-dxue/unified-shell/commit/5b4871313f3fb35aaa7e1b80c432c3827e358d64))
- [Bug fix] Fix lost metrics on iframe navigation — bumps `@exc/metrics-runtime` to 1.0.6; unflushed metrics are now handed off to the parent frame's transport on `pagehide` so they survive iframe destruction during app-to-app navigation (EXC-47193) ([d6097d70](https://github.com/Adobe-dxue/unified-shell/commit/d6097d708622d89fb8780b15228ac2986cbff823))
- [Improvement] Set up error filter after metrics configure — calls `setUpErrorFilter` post-configuration to catch and suppress errors thrown by solution apps (EXC-46335) ([83e5ed55](https://github.com/Adobe-dxue/unified-shell/commit/83e5ed551e3eaf1295dd50dbead0561602c39630))

## 1.5.10 (2026-04-09)

- [Feature] Spotlight mode for AI Assistant — adds `SPOTLIGHT_MODE` to `InterFrameActionType` and new `SpotlightModeOptions` interface with `enabled`, `spotlightConfig`, `onHover`, and `onClick` callbacks (NXUI-1425) ([562b4bda](https://github.com/Adobe-dxue/unified-shell/commit/562b4bda12351ba615905b96d22258a30a20f2e3))
- [Feature] Add `aiConfig` to `RuntimeConfiguration` — exposes `applicationId` and `contextualNudge` so the runtime can access AI solution config without requesting `APP_CONTEXT` ([80177443](https://github.com/Adobe-dxue/unified-shell/commit/80177443ea20e925e0a4f722c437287926f34d77))
- [Type Change] Add `BEYOND` (Analytics Studio) and `CATALYZE` to `AIApplicationId`, add `BEYOND` to `AppParent` type (AN-443002) ([050a18ba](https://github.com/Adobe-dxue/unified-shell/commit/050a18baefe455d3f6e6375c22c80e8deb5ba433), [89c5b9ec](https://github.com/Adobe-dxue/unified-shell/commit/89c5b9ec900cc09eaa54de58b9d16a995f4c5502))
- [Bug fix] Filter error toasts with `role=alertdialog` from modal detection — prevents toast notifications from incorrectly triggering modal state (NXUI-1431) ([5d4c92fa](https://github.com/Adobe-dxue/unified-shell/commit/5d4c92fad8e14a242ed28c1e4aed17c5092d3f90))

## 1.5.9 (2026-04-02)

- [Feature] Auto open expanded AI Assistant using `openChat` — adds `Modality` enum (`FULLSCREEN`, `RAIL`), `modality` field to `AIMessagePayload` and `OpenChatProps` (EXC-46744) ([2cd9f29](https://github.com/Adobe-dxue/unified-shell/commit/2cd9f29ddd51054942d9842dad30d57645df630f))
- [Type Change] Add `TOGGLE_EXPANSION` with `isExpanded` boolean to `AIMessageEvent` for collapsed state transition before navigation (EXC-46676) ([d1b409a](https://github.com/Adobe-dxue/unified-shell/commit/d1b409afc78af5a12d91dc13dd91e68f5b02677a))
- [Feature] Add `openAIPanel` option to `ShellRedirectOptions` to open the AI Panel after shell redirect navigation (EXC-46805) ([d4a6e06](https://github.com/Adobe-dxue/unified-shell/commit/d4a6e06e43093ad0fe2ee6997bf0dd7b4d7bf663))
- [Type Change] Add `isAWSOrg` to `RuntimeConfiguration` for AEP applications ([4a52986](https://github.com/Adobe-dxue/unified-shell/commit/4a52986410755351bbf2ac2a9aaf6c05b44cb5fd))
- [Type Change] Add `env` to `FeatureFlagConfig` for current environment context ([daf436c](https://github.com/Adobe-dxue/unified-shell/commit/daf436cc8dfaed93ae8e4081ec4e472a04dc8c26))
- [Type Change] Add `STRATEGIC_IDEATION` (Catalyze) and `JOURNEY_OPTIMIZER_B2B_PRIME` (Falco) to `AppIds` (EXC-46711, SPHR-26993) ([ad1a4c6](https://github.com/Adobe-dxue/unified-shell/commit/ad1a4c6b0b0aed2f20eab4a4e03c8d9b45e9f684), [93ab68a](https://github.com/Adobe-dxue/unified-shell/commit/93ab68ad09681622169b6d8234027225c254224d))
- [Bug fix] Fix A11y skip menu focus target for AI Assistant chat input in expanded rail — no interface change (EXC-46771) ([c394bc2](https://github.com/Adobe-dxue/unified-shell/commit/c394bc2fbdcbdd6ccf06e83b7ca80e05c536d9be))
- [Improvement] Reliability: defensive null checks in metrics and util — no interface change (EXC-46335) ([cbb6868](https://github.com/Adobe-dxue/unified-shell/commit/cbb68686aefcaad3c971dc5a82a3de8120b0ed8a))

## 1.5.7, 1.5.8 (2026-03-16)

- [Feature] Hybrid mode: expand and collapse AI Assistant — adds `toggleExpansion` API, `FormFactor` enum, `SET_FORM_FACTOR`/`TOGGLE_EXPANSION` message types, and `isRightPanelExpanded` config flag (EXC-46233) ([f42e7c8](https://github.com/Adobe-dxue/unified-shell/commit/f42e7c8a811ccefb62e418ba150a74909bdbdbd5))
- [Feature] AI enablement for Experimentation Accelerator and Falco ([b30f301](https://github.com/Adobe-dxue/unified-shell/commit/b30f30134a270e5aa7c574b07fc50b9a4c6e56e7))
- [Feature] Add `DOM_SCREENSHOT` interframe action and rail navigation notification (NXUI-1073) ([31ee49f](https://github.com/Adobe-dxue/unified-shell/commit/31ee49fd394a4bfc65b87f082ff6f0232a73166e))

## 1.5.5 (2026-03-05)

- [Feature] Add LLM Optimizer to app switcher and quick access (EXC-46206) ([830bbe1](https://github.com/Adobe-dxue/unified-shell/commit/830bbe1ed7ae2c28902b784a851a765f69fbe970))
- [Feature] Implement opening NextGenUI Right Rail with a specific conversation loaded — overloads `openChat` to accept `OpenChatProps` with `conversationId`, `query`, and `shouldSubmit` ([7ac5569](https://github.com/Adobe-dxue/unified-shell/commit/7ac5569789f36c5790708b517b0133035ff6052e))
- [Feature] Add AI automation entry to AEC left nav (EXC-46490) ([4291305](https://github.com/Adobe-dxue/unified-shell/commit/429130571a7d344116138aab29230d7bcca8f18c))
- [Type Change] Falco composed app with home and people — adds `FALCO` to `AppParent` type ([f91dc8e](https://github.com/Adobe-dxue/unified-shell/commit/f91dc8e118523ef709f4fafc86446362bceecc2f))

## 1.5.4 (2026-02-12)

- [Feature] CHE2 support for GQL, XQL, and IO — extracts `BaseNetworkConfig` interface, adds `getRegionEndpoint` function, `ServiceType` enum, `bypassRegionLock` option, and regional endpoint types (EXC-45337) ([6780b9a](https://github.com/Adobe-dxue/unified-shell/commit/6780b9a5c8cd7eba4fb62feb447aa45a2899a8ac))
- [Feature] Automatically handle registered interframe actions in shell for `APP_CONTEXT` — adds `InterFrameActionType` enum and tightens interframe types to `Record<string, any>` (EXC-45538) ([a85ca9f](https://github.com/Adobe-dxue/unified-shell/commit/a85ca9f9789c8cf3c513d7c75d801d4f8ba21756))
- [Type Change] Add `success` boolean and `errorDetail` to `SettingsResponse` (EXC-38197) ([b44fdc5](https://github.com/Adobe-dxue/unified-shell/commit/b44fdc564973bfc129683de0339402460b440e69))
- [Type Change] Add `pageName` to `RuntimeConfiguration` (EXC-46035) ([8ab0c85](https://github.com/Adobe-dxue/unified-shell/commit/8ab0c856e8eb7ead9577dac58def02cadd54a8b7))
- [Type Change] Update collaborator types list and switcher with new types — adds `AGENCY` and `PLATFORM` collaborator types, adds `product` field to `Instance` (EXC-46214) ([ca0b14b](https://github.com/Adobe-dxue/unified-shell/commit/ca0b14b55f741cfe21fc0e09a3795d9f0c69455d))
- [Feature] Add Target and Workfront AI knowledge sources ([b19e00e](https://github.com/Adobe-dxue/unified-shell/commit/b19e00e5cc57e22555da36376d245c68f7b55461))
- [Feature] Add Sales Qualifier AI knowledge source ([dd7db6f](https://github.com/Adobe-dxue/unified-shell/commit/dd7db6f60b2c1595c7558fc08b1075b267759b35))
- [Feature] Add Marketo Engage AI knowledge source (EXC-46234) ([f4906f7](https://github.com/Adobe-dxue/unified-shell/commit/f4906f71bbe54a9deabdfb62bb1bfd4edbda2e58))
- [Bug fix] Fix Marketo Engage AI application id to lowercase ([1401515](https://github.com/Adobe-dxue/unified-shell/commit/140151514d02aa291bf397e3274bdbcd4a7763ad))
- [Feature] Commerce Admin UI instance switcher support (EXC-45838) ([2b43435](https://github.com/Adobe-dxue/unified-shell/commit/2b4343564df76ad6588438a610d752b1e84eb226))
- [Type Change] Updates for Pangea customer release — renames `PROJECT_PANGEA` to `UNIFIED_METRIC_CONTRACT_INSIGHTS` in `AppIds` (EXC-43872) ([a0cd6a5](https://github.com/Adobe-dxue/unified-shell/commit/a0cd6a5ca4a72ccd54a1dc37630ee36b0611bbea))
