Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
24 commits
Select commit Hold shift + click to select a range
ce9a47c
refactor(ui): remove antd from classic-mode Observability
ShaileshParmar11 Oct 10, 2026
6fc6b2d
fix(ui): address classic Observability review findings
ShaileshParmar11 Oct 11, 2026
44702a2
style(ui): organize classic alert mapper imports
ShaileshParmar11 Oct 11, 2026
13a71a5
fix(ui): fully reveal virtualized select keyboard destinations
ShaileshParmar11 Oct 11, 2026
1b70199
Fix Classic Observability AUT regressions
ShaileshParmar11 Oct 11, 2026
341a867
Align Classic Observability migration with rebased main
ShaileshParmar11 Oct 11, 2026
97f6208
fix(ui): restore statistic widget card surfaces
ShaileshParmar11 Oct 12, 2026
1144dbc
fix(ui): give the complete profiler section a card surface
ShaileshParmar11 Oct 12, 2026
ecf5606
fix(ui): bound Classic alert FQN selectors using core chips
ShaileshParmar11 Oct 12, 2026
b7517fe
fix(ui): keep add-test-case actions outside dialog scrolling
ShaileshParmar11 Oct 12, 2026
462ab7f
fix(ui): align add-test-case footer button labels
ShaileshParmar11 Oct 12, 2026
cbbbe55
Align Classic Observability with rebased core styling and baselines
ShaileshParmar11 Oct 12, 2026
2f27e06
Fix Observability Sonar warnings and diagnostic keyboard focus
ShaileshParmar11 Oct 12, 2026
2cc92f2
Replace static Observability inline styles with core props and token …
ShaileshParmar11 Oct 12, 2026
61a3eea
Simplify Classic Observability transforms and reuse Lodash guards
ShaileshParmar11 Oct 12, 2026
307c919
Merge main into Classic Observability migration
ShaileshParmar11 Oct 13, 2026
7ad258d
Set alert widget changes key by key instead of resetting the form
ShaileshParmar11 Oct 13, 2026
86a81d6
Merge remote-tracking branch 'origin/main' into ShaileshParmar11/clas…
ShaileshParmar11 Oct 13, 2026
629e713
Address review findings on Classic Observability migration
ShaileshParmar11 Oct 13, 2026
06154c0
Merge remote-tracking branch 'origin/main' into ShaileshParmar11/clas…
ShaileshParmar11 Oct 14, 2026
9273c44
Name the Recent Events filter button with its applied filter
ShaileshParmar11 Oct 14, 2026
e0e5806
Merge remote-tracking branch 'origin/main' into ShaileshParmar11/clas…
ShaileshParmar11 Oct 14, 2026
5c64672
Merge remote-tracking branch 'origin/main' into ShaileshParmar11/clas…
shah-harshit Oct 14, 2026
f5649e3
fix(ui): move this branch's xxs Buttons to xs after the Button size c…
shah-harshit Oct 14, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
83 changes: 33 additions & 50 deletions .github/playwright/impact-map.generated.json
Original file line number Diff line number Diff line change
Expand Up @@ -144,6 +144,7 @@
"playwright/e2e/Features/DataQuality/DataQualityPermissions.spec.ts",
"playwright/e2e/Features/DataQuality/Dimensionality.spec.ts",
"playwright/e2e/Features/DataQuality/IncidentManagerDateFilter.spec.ts",
"playwright/e2e/Features/DataQuality/IncidentManagerSqlQuery.spec.ts",
"playwright/e2e/Features/DataQuality/Profiler.spec.ts",
"playwright/e2e/Features/DataQuality/RunTestCase.spec.ts",
"playwright/e2e/Features/DataQuality/TableLevelTests.spec.ts",
Expand Down Expand Up @@ -746,13 +747,16 @@
"playwright/e2e/Features/AppMode/AppModeRouteIsolation.spec.ts",
"playwright/e2e/Features/AppMode/AppModeUrlHandling.spec.ts",
"playwright/e2e/Features/ApplicationsSettingsModal.spec.ts",
"playwright/e2e/Features/CustomMetric.spec.ts",
"playwright/e2e/Features/DataQuality/IncidentManagerDateFilter.spec.ts",
"playwright/e2e/Features/DataQuality/IncidentManagerSqlQuery.spec.ts",
"playwright/e2e/Features/DataQuality/RunTestCase.spec.ts",
"playwright/e2e/Features/DataQuality/TestCaseDetailsPage.spec.ts",
"playwright/e2e/Features/IncidentManager.spec.ts",
"playwright/e2e/Features/ProfilePlatformSettings.spec.ts",
"playwright/e2e/Features/ProfilePreferences.spec.ts",
"playwright/e2e/Pages/BotsProfile.spec.ts"
"playwright/e2e/Pages/BotsProfile.spec.ts",
"playwright/e2e/Pages/CustomProperties.spec.ts"
]
},
{
Expand Down Expand Up @@ -796,6 +800,7 @@
"playwright/e2e/Features/DataQuality/BundleSuiteBulkOperations.spec.ts",
"playwright/e2e/Features/DataQuality/DataQuality.spec.ts",
"playwright/e2e/Features/DataQuality/IncidentManagerDateFilter.spec.ts",
"playwright/e2e/Features/DataQuality/IncidentManagerSqlQuery.spec.ts",
"playwright/e2e/Features/DataQuality/Profiler.spec.ts",
"playwright/e2e/Features/DataQuality/ProfilerIngestionForm.spec.ts",
"playwright/e2e/Features/DataQuality/RunTestCase.spec.ts",
Expand Down Expand Up @@ -1678,6 +1683,7 @@
"playwright/e2e/Features/DataQuality/IncidentManagerAfterReindex.spec.ts",
"playwright/e2e/Features/DataQuality/IncidentManagerAfterSoftDelete.spec.ts",
"playwright/e2e/Features/DataQuality/IncidentManagerDateFilter.spec.ts",
"playwright/e2e/Features/DataQuality/IncidentManagerSqlQuery.spec.ts",
"playwright/e2e/Features/DataQuality/Profiler.spec.ts",
"playwright/e2e/Features/DataQuality/ProfilerSettingsAfterReindex.spec.ts",
"playwright/e2e/Features/DataQuality/RunTestCase.spec.ts",
Expand Down Expand Up @@ -3026,6 +3032,7 @@
"playwright/e2e/Features/DataQuality/DataQuality.spec.ts",
"playwright/e2e/Features/DataQuality/DataQualityPermissions.spec.ts",
"playwright/e2e/Features/DataQuality/IncidentManagerDateFilter.spec.ts",
"playwright/e2e/Features/DataQuality/IncidentManagerSqlQuery.spec.ts",
"playwright/e2e/Features/DataQuality/Profiler.spec.ts",
"playwright/e2e/Features/DataQuality/ProfilerIngestionForm.spec.ts",
"playwright/e2e/Features/DataQuality/RunTestCase.spec.ts",
Expand Down Expand Up @@ -3249,6 +3256,7 @@
"playwright/e2e/Features/AIMode/ProfileNotificationTab.spec.ts",
"playwright/e2e/Features/AdvancedSearch.spec.ts",
"playwright/e2e/Features/ContextCenterDashboard.spec.ts",
"playwright/e2e/Features/DataQuality/IncidentManagerSqlQuery.spec.ts",
"playwright/e2e/Features/DomainFilterQueryFilter.spec.ts",
"playwright/e2e/Features/LandingPageWidgets/LandingPageContextCenter.spec.ts",
"playwright/e2e/Features/LandingPageWidgets/LandingPageDataEstate.spec.ts",
Expand Down Expand Up @@ -3427,6 +3435,7 @@
"playwright/e2e/Features/DataQuality/IncidentManagerAfterReindex.spec.ts",
"playwright/e2e/Features/DataQuality/IncidentManagerAfterSoftDelete.spec.ts",
"playwright/e2e/Features/DataQuality/IncidentManagerDateFilter.spec.ts",
"playwright/e2e/Features/DataQuality/IncidentManagerSqlQuery.spec.ts",
"playwright/e2e/Features/DataQuality/Profiler.spec.ts",
"playwright/e2e/Features/DataQuality/ProfilerIngestionForm.spec.ts",
"playwright/e2e/Features/DataQuality/ProfilerSettingsAfterReindex.spec.ts",
Expand Down Expand Up @@ -5177,6 +5186,7 @@
"playwright/e2e/Features/DataProductPersonaCustomization.spec.ts",
"playwright/e2e/Features/DataQuality/DataQuality.spec.ts",
"playwright/e2e/Features/DataQuality/IncidentManagerDateFilter.spec.ts",
"playwright/e2e/Features/DataQuality/IncidentManagerSqlQuery.spec.ts",
"playwright/e2e/Features/DataQuality/TableTestCasePagination.spec.ts",
"playwright/e2e/Features/FailedTestCaseSampleData.spec.ts",
"playwright/e2e/Features/Glossary/GlossaryAdvancedOperations.spec.ts",
Expand Down Expand Up @@ -5521,6 +5531,15 @@
"playwright/e2e/Flow/AlertSeveralSources.spec.ts"
]
},
{
"sources": [
"openmetadata-ui/src/main/resources/ui/src/components/Alerts/ClassicAlertRuleSection.tsx"
],
"specs": [
"playwright/e2e/Flow/AlertSeveralSources.spec.ts",
"playwright/e2e/Flow/ObservabilityAlerts.spec.ts"
]
},
{
"sources": [
"openmetadata-ui/src/main/resources/ui/src/components/Alerts/DestinationFormItem/DestinationFormItem.component.tsx"
Expand Down Expand Up @@ -5561,27 +5580,6 @@
"playwright/e2e/Pages/Lineage/LineageFilters.spec.ts"
]
},
{
"sources": [
"openmetadata-ui/src/main/resources/ui/src/components/Alerts/ObservabilityFormFiltersItem/ObservabilityFormFiltersItem.tsx"
],
"specs": [
"playwright/e2e/Features/AIMode/AiNotificationAlerts.spec.ts",
"playwright/e2e/Features/AIMode/ProfileNotificationTab.spec.ts",
"playwright/e2e/Flow/AlertSeveralSources.spec.ts",
"playwright/e2e/Flow/NotificationAlerts.spec.ts",
"playwright/e2e/Flow/ObservabilityAlerts.spec.ts"
]
},
{
"sources": [
"openmetadata-ui/src/main/resources/ui/src/components/Alerts/ObservabilityFormTriggerItem/ObservabilityFormTriggerItem.tsx"
],
"specs": [
"playwright/e2e/Flow/AlertSeveralSources.spec.ts",
"playwright/e2e/Flow/ObservabilityAlerts.spec.ts"
]
},
{
"sources": [
"openmetadata-ui/src/main/resources/ui/src/components/AppBar/Suggestions.tsx"
Expand Down Expand Up @@ -5670,6 +5668,7 @@
],
"specs": [
"playwright/e2e/Features/AccessControlSettings.spec.ts",
"playwright/e2e/Features/DataQuality/IncidentManagerSqlQuery.spec.ts",
"playwright/e2e/Features/ExploreQueryBar.spec.ts",
"playwright/e2e/Features/Pagination.spec.ts",
"playwright/e2e/Flow/ExploreDiscovery.spec.ts",
Expand Down Expand Up @@ -6368,6 +6367,14 @@
"playwright/e2e/Features/DataQuality/DataQualityDashboard.spec.ts"
]
},
{
"sources": [
"openmetadata-ui/src/main/resources/ui/src/components/DataQuality/CustomMetricForm/CustomMetricForm.component.tsx"
],
"specs": [
"playwright/e2e/Features/CustomMetric.spec.ts"
]
},
{
"sources": [
"openmetadata-ui/src/main/resources/ui/src/components/DataQuality/DataQualityDashboard/DataQualityDashboard.component.tsx"
Expand Down Expand Up @@ -6465,16 +6472,10 @@
},
{
"sources": [
"openmetadata-ui/src/main/resources/ui/src/components/DataQuality/IncidentManager/SqlQueryTab/AddSqlQueryFormModal/AddSqlQueryFormModal.component.tsx"
"openmetadata-ui/src/main/resources/ui/src/components/DataQuality/IncidentManager/SqlQueryTab/SqlQueryTab.component.tsx"
],
"specs": [
"playwright/e2e/Features/AccessControlSettings.spec.ts",
"playwright/e2e/Features/ExploreQueryBar.spec.ts",
"playwright/e2e/Features/Pagination.spec.ts",
"playwright/e2e/Flow/ExploreDiscovery.spec.ts",
"playwright/e2e/Pages/ClassificationConditionalRendering.spec.ts",
"playwright/e2e/Pages/ExploreTree.spec.ts",
"playwright/e2e/Pages/Tags.spec.ts"
"playwright/e2e/Features/DataQuality/IncidentManagerSqlQuery.spec.ts"
]
},
{
Expand Down Expand Up @@ -6656,15 +6657,6 @@
"playwright/e2e/Pages/Tags.spec.ts"
]
},
{
"sources": [
"openmetadata-ui/src/main/resources/ui/src/components/Database/Profiler/ProfilerSettings/CustomRangeWidget.tsx"
],
"specs": [
"playwright/e2e/Features/DataQuality/Profiler.spec.ts",
"playwright/e2e/Features/DataQuality/ProfilerSettingsAfterReindex.spec.ts"
]
},
{
"sources": [
"openmetadata-ui/src/main/resources/ui/src/components/Database/Profiler/ProfilerSettings/ProfilerSettings.tsx"
Expand Down Expand Up @@ -9871,8 +9863,7 @@
"openmetadata-ui/src/main/resources/ui/src/components/common/SliderWithInput/SliderWithInput.tsx"
],
"specs": [
"playwright/e2e/Features/DataQuality/Profiler.spec.ts",
"playwright/e2e/Features/DataQuality/ProfilerSettingsAfterReindex.spec.ts"
"playwright/e2e/Features/DataQuality/Profiler.spec.ts"
]
},
{
Expand Down Expand Up @@ -11819,6 +11810,7 @@
"playwright/e2e/Features/DataQuality/IncidentManagerAfterReindex.spec.ts",
"playwright/e2e/Features/DataQuality/IncidentManagerAfterSoftDelete.spec.ts",
"playwright/e2e/Features/DataQuality/IncidentManagerDateFilter.spec.ts",
"playwright/e2e/Features/DataQuality/IncidentManagerSqlQuery.spec.ts",
"playwright/e2e/Features/DataQuality/Profiler.spec.ts",
"playwright/e2e/Features/DataQuality/ProfilerIngestionForm.spec.ts",
"playwright/e2e/Features/DataQuality/ProfilerSettingsAfterReindex.spec.ts",
Expand Down Expand Up @@ -13310,15 +13302,6 @@
"playwright/e2e/Features/PersonaAppLayout.spec.ts"
]
},
{
"sources": [
"openmetadata-ui/src/main/resources/ui/src/utils/Alerts/AlertsUtil.tsx"
],
"specs": [
"playwright/e2e/Flow/AlertSeveralSources.spec.ts",
"playwright/e2e/Flow/ObservabilityAlerts.spec.ts"
]
},
{
"sources": [
"openmetadata-ui/src/main/resources/ui/src/utils/ClassificationUtils.tsx"
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
# Classic alert widgets update controlled values through a callback

- **Status:** Accepted
- **Revisions:** v1 2026-10-10 (initial)
- **Deciders:** Shailesh Parmar
- **Guard:** `AlertFormSourceItemSeveralSources.test.tsx`, Collate `TemplateFormItem.test.tsx`, and paired build review
- **Related:** ADR:2026-10-10-alert-widgets-use-values-and-oss-merges-before-collate

## Context

Classic Observability now uses React Hook Form and core components. Collate's notification
template widget previously wrote directly into an Ant Design form instance. The shared
notification form still has legacy form state, so exposing a particular form library would
couple downstream widgets to incompatible implementations.

## Decision

`AddAlertFormWidgetProps.values` contains the current editable subscription. A widget that
changes fields calls `onValuesChange` with a partial subscription. The owning form merges
those changes into its latest values. Read-only widgets consume `values` without invoking
the callback. `formRef` remains optional for legacy callers, and migrated widgets do not
require it.

A custom notification template is an editing draft containing `displayName`, `templateSubject`
and `templateBody`. It has no persisted template identity until the create API succeeds.
Do not require or fabricate a template `id` or `name` when updating this draft. The parent
continues to own template creation and subscription submission.

Validate OSS and Collate together. Merge the OSS Classic migration first, then its Collate
companion immediately afterward. Keep Collate's OpenMetadata submodule on main and verify
its build against merged OSS before completing the migration. Collate requires the new
callback, draft type, profiler state and core component exports.

## Consequences

Widgets share a controlled contract across form libraries. Collate's companion change is
required before its Classic template picker can write into the migrated OSS form; the
interval between merges is a coordinated integration window. This does not change the
notification template API or persisted subscription schema.
Original file line number Diff line number Diff line change
Expand Up @@ -98,7 +98,10 @@ export const Popover = ({
</svg>
</AriaOverlayArrow>
)}
<AriaDialog className={cx('tw:outline-hidden', containerClassName)}>
<AriaDialog
aria-label={popoverProps['aria-label']}
aria-labelledby={popoverProps['aria-labelledby']}
className={cx('tw:outline-hidden', containerClassName)}>
{children}
</AriaDialog>
</AriaPopover>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,20 @@ const renderAutocomplete = (onItemInserted: (id: unknown) => void) =>
);

describe('Autocomplete – selection commit', () => {
it('provides a named remove button and the full selected label', () => {
const label = 'service.database.schema.' + 'long_table_name_'.repeat(20);
render(
<Autocomplete items={[]} selectedItems={[{ id: label, label }]}>
{(item) => (
<Autocomplete.Item id={item.id}>{item.label}</Autocomplete.Item>
)}
</Autocomplete>
);

expect(screen.getByRole('button', { name: /remove/i })).toBeVisible();
expect(screen.getByTitle(label)).toHaveTextContent(label);
});

it('inserts the focused option on Enter', async () => {
const onItemInserted = vi.fn();
renderAutocomplete(onItemInserted);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ import {
} from '@/components/base/select/select';
import { Typography } from '@/components/foundations/typography';
import { useResizeObserver } from '@/hooks/use-resize-observer';
import { useCoreTranslation } from '@/i18n/useCoreTranslation';
import { cx } from '@/utils/cx';
import { isReactComponent } from '@/utils/is-react-component';
import { Search } from '../../../icons';
Expand Down Expand Up @@ -155,6 +156,7 @@ const InnerAutocomplete = ({
isDisabled?: boolean;
placeholder?: string;
}) => {
const { t } = useCoreTranslation();
const focusManager = useFocusManager();
const context = useContext(AutocompleteContext);
const comboBoxStateContext = useContext(ComboBoxStateContext);
Expand Down Expand Up @@ -264,11 +266,14 @@ const InnerAutocomplete = ({
context.renderTag(item, () => context.onRemove(new Set([item.id])))
) : (
<BadgeWithButton
buttonLabel={t('label.remove-entity', { entity: item.label })}
className="tw:max-w-full"
color="gray"
data-testid="autocomplete-selected-item"
isDisabled={isDisabled}
key={item.id}
size="lg"
title={item.label}
type="modern"
onButtonClick={() => context.onRemove(new Set([item.id]))}
onButtonKeyDown={(e) => handleTagKeyDown(e, item.id)}>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -589,6 +589,7 @@ export const BadgeWithButton = <T extends BadgeTypes>(
buttonTestId,
children,
isDisabled,
onButtonClick,
onButtonKeyDown,
tooltip,
tooltipPlacement = 'top',
Expand Down Expand Up @@ -656,7 +657,7 @@ export const BadgeWithButton = <T extends BadgeTypes>(
data-testid={buttonTestId}
disabled={isDisabled}
type="button"
onClick={props.onButtonClick}
onClick={onButtonClick}
onKeyDown={onButtonKeyDown}>
<Icon className="tw:size-3 tw:stroke-[3px] tw:transition-inherit-all" />
</button>
Expand Down
Loading
Loading