> ## Documentation Index
> Fetch the complete documentation index at: https://docs.getcollate.io/llms.txt
> Use this file to discover all available pages before exploring further.

# Breaking Changes - UI & Customization | Official Documentation

> The transitional MUI* wrapper components are removed, App Mode introduces per-persona and per-tenant defaults, AI Mode drops the /askCollate URL prefix, and a large lazy-loading refactor changes fork-visible import paths in Collate 2.0.

# UI & Customization

For end users this is a visual and navigational refresh. For anyone who forks the UI, writes a UI
plugin, or maintains end-to-end test suites, it's a large refactor — the design system consolidates,
routing gains a new App Mode concept, and a code-splitting pass changes where things live.

## Design system consolidation removes the transitional MUI\* components

**Breaking for forks and plugins.** Cosmetic for end users.

In 1.13, the UI module carried a transitional set of `MUI*` wrapper components. Collate 2.0 removes
them and standardizes on the shared **`@openmetadata/ui-core-components`** package — `MUISelect`,
`MUITextField`, `MUIUserTeamSelect`, `MUIDomainSelect`, `MUIAsyncTreeSelect` and several others are
deleted, along with the **`SELECT_MUI` field type** in the form builder.

Other removed modules with core-components replacements: `CondensedBreadcrumb`, `DescriptionV1`, the
legacy delete modals (`DeleteModal`, `EntityDeleteModal`, `DeleteWidgetModal`), activity-feed card
components, and `KnowledgeGraph` (replaced by `OntologyExplorer` — see
[Lineage](/ai-2-0/release-2.0/breaking-changes/lineage)).

<Tip>
  Search your fork for `MUI` imports, `SELECT_MUI`, `usePaginationControls`, `NotistackUtils`,
  `CommonUtils` and `DescriptionV1`. Expect a mechanical but wide migration —
  `PaginationCardDefault` replaces `usePaginationControls`, and `Input` from core-ui replaces the
  `useSearch` hook.
</Tip>

## App Mode introduces a three-level resolution order

**New concept.** Affects the login experience and persona configuration. Collate 2.0 introduces two
application experiences — **Classic** and **AI** (assistant-driven, requires the AI plugin) — resolved
in this order, highest priority first:

1. **User preference**: the `appMode` entry in the user's preferences bag.
2. **Persona `appMode`**: `classic` or `AI` (default `classic`), forced on login.
3. **Tenant `defaultAppMode`**: the `appConfiguration` setting (`ai`, `classic`, or `null`).

The active mode is held in a single source of truth backed by session storage, so sibling tabs no
longer lose the active mode. The switcher only appears when the AI application is installed.

A new per-user preferences API backs this (`GET/PUT/DELETE /v1/users/{userId}/preferences`), stored
in a new `user_preferences` table. It's deliberately **not** a full entity — no versioning, audit or
soft-delete — and is cascade-deleted with the user.

<Tip>
  Do not store per-user UI state in the User entity's `extension`. Use the preferences API instead.
</Tip>

## AI Mode drops the /askCollate URL prefix, and no longer auto-engages

**Breaking.** Affects bookmarks, deep links, Slack workflows, and browser extensions built on the old
AI Mode paths.

| 1.13                          | 2.0                |
| ----------------------------- | ------------------ |
| `/askCollate/conversations`   | `/conversations`   |
| `/askCollate/ai-studio`       | `/ai-studio`       |
| `/askCollate/connections/...` | `/connections/...` |

Legacy `/askCollate/*` links redirect, but anything that parses or constructs those paths should be
updated. AI Mode also no longer auto-engages from a URL: in 1.13, visiting certain paths silently
switched you into the AI experience; in 2.0 the mode is explicit, driven only by the resolution order
above, and navigating to an AI-only route while in Classic Mode no longer changes it.

<Note>
  Nobody is moved to AI Mode automatically by the 2.0 upgrade itself. Every user stays in Classic Mode
  until they switch, are assigned a persona that pins AI, or an admin sets the tenant default.
</Note>

## Personas gain AI context

**Additive.** Personas gain a `contextDefinition` field — "rules and settings used to materialize
the shared AI context for this persona" — plus endpoints to read and author it:
`GET /v1/personas/search`, `GET /v1/personas/{id}/context` and `.../me/context`,
`GET/PUT /v1/personas/{id}/aiContext`, and `POST /v1/personas/{id}/aiContext/rules[/preview]`.

## Context Center adds new routes that proxies must allow

**Additive**, but affects navigation and reverse proxies. New routes: `/knowledge-center`,
`/context-center` and its sub-pages (`dashboard`, `articles`, `documents`, `filter`, `memories`,
`integrations`, `archive`). New REST namespaces: `/v1/contextCenter/pages`,
`/v1/contextCenter/memories`, `/v1/contextCenter/drive/**` and `/v1/attachments`.

<Warning>
  If you front Collate with a proxy that allowlists paths, add `/knowledge-center`, `/context-center`,
  `/api/v1/contextCenter` and `/api/v1/attachments`. Uploads require object storage to be enabled — see
  [Platform & Security](/ai-2-0/release-2.0/breaking-changes/platform-and-security).
</Warning>

## A large lazy-loading refactor changes fork-visible import paths

**Behavioural.** Affects forks with deep imports. Collate 2.0 does a large code-splitting pass: pure
utility functions are extracted into `*PureUtils` modules, `utils/CommonUtils.tsx` and
`utils/EntityUtils.tsx` are **deleted** with facade imports migrated to direct sources, and
settings/entity/entity-import routers plus heavy components are lazy-loaded.

<Tip>
  Deep imports from `utils/CommonUtils` or `utils/EntityUtils` will not resolve. Import from the
  specific domain module instead.
</Tip>

## Visual and navigation changes ripple through screenshots and end-to-end tests

**Behavioural.** Affects end users, screenshots in your internal documentation, and end-to-end
tests.

| Change               | Detail                                                                                                     |
| -------------------- | ---------------------------------------------------------------------------------------------------------- |
| Entity page header   | Redesigned to the 2.0 card layout                                                                          |
| Dark theme           | Supported via design tokens                                                                                |
| Owner display        | Multi-owner headers stack avatars with a hover popover                                                     |
| Announcements        | Rendered in the entity header, not only in the feed widget                                                 |
| Sidebar              | "Marketplace" renamed to **Data Marketplace** / **Overview**                                               |
| Agents tab           | Revamped agent listing and details wired to real data                                                      |
| Service icons        | Migrated from PNG to WebP                                                                                  |
| Glossary Terms table | Adaptable search, column resize, drag reorder, sticky header                                               |
| Landing page         | Widgets lazy-loaded; admins can set a default panel colour                                                 |
| Log viewer           | Modal with live streaming, replacing the standalone Logs Viewer page                                       |
| Empty states         | New prefilled placeholder variants across glossary, classification, metric, domain, and data-product pages |
| Toasts               | Consolidated on the core-components toast provider                                                         |
| Permission errors    | `403` responses surface a proper toast                                                                     |
| Asset Health widget  | Added to the table detail page                                                                             |
| Language             | Swedish (`sv-SE`) added; the UI sends an `X-OpenMetadata-Language` header                                  |

<Tip>
  Expect widespread `data-testid` and DOM-structure churn. Budget for an end-to-end test refresh.
</Tip>

## New extension points are the supported way to customize in 2.0

**Additive.** `ObservabilityRouterClassBase` and `ConnectionsRouterClassBase` make navigation and
connection routing overridable by downstream distributions, `EntityUtilClassBase.getEntityTypes()`
overrides the entity-type list, and `brandName` replaces hard-coded product strings for
white-labelling. The component library itself gains `Breadcrumbs`, `EmptyPlaceholder`,
`ProgressSteps` and `Toast` — with one rename to know about if you consume the package: the
Select-family `placeholderIcon` prop is renamed to **`icon`**.

## Full detail

For the full narrative walkthrough of UI & Customization in Collate 2.0 — including screenshots and step-by-step context — see [Release 2.0: UI & Customization](/ai-2-0/release-2.0/ui-and-customization).
