Skip to main content

UI, Personas & 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 is a large refactor. The Explore page changes are documented separately in Discovery & Search.

Design system consolidation

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 standardises on the shared @openmetadata/ui-core-components package.

Removed component modules

The SELECT_MUI field type is removed from the form builder.

Other removed UI modules

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.

New extension points

Additive. These are the supported way to customise in 2.0.

App Mode

Full AI Mode guide

What is inside AI Mode, and the three ways to enable it: per user, per persona, per tenant.
New concept. Affects the login experience and persona configuration.
Collate 2.0 introduces two application experiences: Classic (the standard Collate UI) and AI (the assistant-driven experience, which requires the AI plugin). Resolution 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.
defaultAppMode accepts ai, classic, or null (no tenant default). 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. See AI Mode for the full enablement model.

Per-user preferences API

New API, backed by a new user_preferences table.
The preferences bag is a typed discriminated union keyed by type. It is deliberately not a full entity (no versioning, audit or soft-delete) and is cascade-deleted with the user.
Do not store per-user UI state in the User entity’s extension. Use the preferences API.

Personas gain AI context

Additive (Collate AI features).
Personas gain a contextDefinition field (“rules and settings used to materialize the shared AI context for this persona”), plus new endpoints:

Context Center & Knowledge Center

New routes. Affects navigation and reverse proxies.
New REST namespaces: /v1/contextCenter/pages, /v1/contextCenter/memories, /v1/contextCenter/drive/files, /v1/contextCenter/drive/folders and /v1/attachments. New entities: page, article, quickLink, pageHierarchy, folder, contextFile, contextFileContent, contextMemory and asset.
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.

Visual and navigation changes

Behavioural. Affects end users, screenshots in your internal documentation, and end-to-end tests.
Expect widespread data-testid and DOM-structure churn. Budget for an end-to-end test refresh.

Performance refactor (fork-visible)

Behavioural. Affects forks with deep imports.
Collate 2.0 does a large code-splitting and lazy-loading pass:
  • Pure utility functions are extracted into *PureUtils modules.
  • utils/CommonUtils.tsx and utils/EntityUtils.tsx are deleted. Facade imports are migrated to direct sources.
  • Settings, entity and entity-import routers, tab-level components and heavy components are lazy-loaded.
  • The build configuration is reworked for code splitting and chunk loading.
Deep imports from utils/CommonUtils or utils/EntityUtils will not resolve. Import from the specific domain module instead.

Component library

Additive. The shared component package gains Breadcrumbs, EmptyPlaceholder, ProgressSteps, Toast, a filter bar, an extra-small button size and a nightly Storybook build.
Two renames to be aware of when consuming the package: safe class renames applied across components, and the Select-family placeholderIcon prop renamed to icon.