Skip to content

refactor(ui): remove antd from AI-mode Observability - #34936

Merged
ShaileshParmar11 merged 19 commits into
mainfrom
ShaileshParmar11/ai-observability-antd-free
Oct 10, 2026
Merged

ShaileshParmar11 merged 19 commits into
mainfrom
ShaileshParmar11/ai-observability-antd-free

Conversation

@ShaileshParmar11

@ShaileshParmar11 ShaileshParmar11 commented Oct 8, 2026 •

Copy link
Copy Markdown
Contributor

Fixes #34935
Part of open-metadata/openmetadata-collate#6826

Summary

Every component reachable from AI-mode Observability now uses @openmetadata/ui-core-components, migrated in place while preserving the existing entry points and workflows. The antd scan over the Observability tree goes from 86 files on main to 0 of 587.

src/
├── components/Alerts, pages/AddObservabilityPage   # alert forms, InlineAlert -> core Alert, values instead of formRef
├── components/DataQuality/**                       # status/severity/bundle modals, AddTestCaseList, SelectionCardGroup, ProfilerProgressWidget
├── components/.../Ingestion*, PipelineActions      # suite pipelines tab, recent runs, kill/run-details modals
├── components/Learning*, ArticleViewer, ...        # LearningDrawer -> SlideoutMenu
├── components/Entity/*Header*, ManageButton, ...   # headers, tier card, edit icons, version timeline
├── components/BlockEditor/**                       # bubble/table/slash menus, link modal, extensions
├── pages/TasksPage/**, ActivityFeed/**             # task tabs, assignees, AsyncSelectList, feed cards, ActivityFeedDrawer -> SlideoutMenu
└── components/common/Table/Table.interface.ts      # owns its table types (antd-shaped) instead of re-exporting antd

Shared fixes found during the before/after review:

 EditorSlots
-  <BubbleMenu/> <BlockMenu/> <TableMenu/>
+  {editable && <BubbleMenu/> <BlockMenu/> <TableMenu/>}      # read-only previews stop capturing tag/cert tooltip triggers

Intentional differences:

  • Classic Incident Manager filters use the same core controls as AI mode. Date selections are staged until Apply, the URL persists startTs / endTs, and Clear all resets the filters.
  • Reassigning an incident now prefills the assignee as an object, so the request no longer sends id: undefined.
  • Core visuals: core buttons, a close X on modals, the link modal centred, a "No Severity" item in the severity picker, 28px action buttons. The assignee picker shows "No data found" until you type; it returns the same API results.

Evidence

  • Before/after composites: 72 places, each one image with Before | After × Light | Dark (main at 9675c6d vs this branch), attached below. Groups: alerts (6), incidents and status (8), test cases, suites and library (22), pipelines (5), learning (4), entity headers and versions (10), block editor (4), tasks and feed (9), other classic pages (4).

  • Unit: latest affected-component run: 60 suites / 877 tests passed, covering ActivityFeedDrawer, MathEquationComponent, SelectionCardGroup, ConnectionStepCard, EditorSlots read-only menus, Incident Manager and the other migrated components.

  • Types/lint: the application typecheck recorded before this merge reported 575 baseline diagnostics. The Playwright typecheck recorded at 49c688eb44a reports 116 errors, identically reproduced with the unchanged HEAD version of the repaired spec; none are in IncidentManagerDateFilter.spec.ts. Full Playwright lint passes with 0 errors / 197 existing warnings; PR-wide Playwright formatting passes; 170 guardrail tests pass. All applicable pre-commit hooks passed without bypasses.

  • Playwright (local, affected specs): 174/230 on the first run; after fixes, all branch-only failures pass:

    • Before: BundleSuiteBulkOperations, suggest-tags task (TaskCreation, Tasks), Logical TestSuite and IncidentManager lifecycle fail on helpers that targeted .ant-* DOM.
    • After: the helpers target the core DOM and those specs pass.
    • The specs still failing locally fail the same way on main: ProfileNotificationTab:438, DataQualityDashboard (Domain cannot be empty when data products are provided), ObservabilityAlerts webhook delivery, LearningResources:329 (duplicate seed data).
  • Incident Manager date-filter verification (49c688eb44a):

    • Updated all 11 cases in playwright/e2e/Features/DataQuality/IncidentManagerDateFilter.spec.ts to exercise the core picker, dropdowns and Clear all control. Coverage verifies staged selection, exact browser-local day boundaries in API and URL parameters, clearing, reload persistence, and both date fields.
    • 12/12 focused checks passed, including the original IncidentManager.spec.ts filter test, with no retries.
    • 110/110 repeated checks passed: each repaired case ran ten times with four workers and no retries, after refreshing the standard authentication fixtures.
    • Regenerated the Playwright impact map; its freshness check passes.

    Repeated verification, from the UI directory after running the standard setup project:

    PLAYWRIGHT_TEST_BASE_URL=http://localhost:3200 PW_PRESEEDED_STATE=true yarn playwright test e2e/Features/DataQuality/IncidentManagerDateFilter.spec.ts --project=chromium --repeat-each=10 --workers=4 --retries=0 --no-deps --reporter=list
  • Latest main merge (6bcfc9885c5, branch head b69d75955ac): GitHub reports no merge conflicts. Resolved the suppression-count conflict against the measured merged ledger (591 positional locators) and regenerated token artifacts to remove four unused legacy colors. After the merge, 12/12 focused browser checks passed without retries, the affected Jest run passed 60 suites / 877 tests, the core-table suite passed 11 tests, and both core and application production builds passed. Playwright guardrails (170 tests), token tests (18 tests), token drift, impact-map freshness, applicable commit hooks, and the new Java ownership pre-push check all passed. The 110/110 repeated run above was recorded on the date-filter fix commit before this main merge.

  • AUT: run 37959279545 built successfully; both local-webserver lanes passed, while both full-suite lanes failed. The original Incident Manager filter test passed on both databases, but all 11 date-filter cases still targeted the removed legacy controls. The fix above passes locally; AUT validation of the latest commit remains pending.

  • Review regressions fixed (76f445a8df1): bundle-suite typing always performs the server search, including an exact loaded label; only an explicit combobox selection sets the suite, cancels pending search, and enables Add. Added tests using the real core combobox. Large test-case pickers use React Aria Virtualizer / GridList exported by core-components, with stable entity keys, measured variable-height cards, preserved spacing, selection state, and scroll paging. No new dependency or rc-* import. Regression tests verify selection after an offscreen row remounts and eight accumulated pages with a bounded rendered window.

  • Focused verification for the review fixes: 5 Jest suites / 86 tests passed; both existing bundle-add and picker-filter browser flows passed with one worker and no retries, using a temporary page-local Classic-mode override because the saved admin preference is AI (spec files restored afterward). A separate browser fixture loaded 200 mixed-height cards in eight 25-row pages, kept 5–9 cards mounted, and preserved selection after scrolling away and back. Core type-check, core/application builds, changed-file UI checkstyle, impact-map freshness, decision-record validation, and all applicable commit hooks passed. The full application type-check retains 581 errors, with the same diagnostic locations/codes on unchanged HEAD; the full legacy token audit retains the same 88 errors on unchanged HEAD. Neither baseline failure was expanded by this patch.

  • Recorded integration contract: alert-widget values and OSS-before-Collate decision record. Both PRs are conflict-free; the coordinated merge requirement remains OSS first, then Collate Query parser not able to recognise table with special char during usage #7216 immediately afterward. Latest-commit AUT validation remains pending.

Merge Danger

Door: two-way

Revert restores antd; no schema, API or data change.

Blast Radius: wide-UI

Shared components outside Observability use these too: BlockEditor menus, the activity feed and task pages, CertificationTag, SlideoutMenu (core), and every Table.interface importer at type level. Collate depends on this: companion PR #7216 (same branch) reads values in TestAlertButton because formRef is no longer passed to extra alert buttons. Merge this first, then the Collate PR right after.

Follow-ups, already broken on main and not touched here:

  • The alert modal input is not passed through.
  • The "show deleted" toggle on AI Test Cases is not wired.

Migrate every component reachable from AI-mode Observability to
@openmetadata/ui-core-components in place, with no behaviour change:
alerts, incidents, test cases and suites, pipelines, learning drawer,
entity headers, block editor, tasks and activity feed.

- Table.interface.ts now owns its table types instead of re-exporting antd's
- SlideoutMenu overlay stacks at z-50 like the core modal overlay
- EditorSlots skips the editing menus for read-only previews
- Playwright helpers target the core DOM instead of .ant-* selectors

Part of open-metadata/openmetadata-collate#6826
Copilot AI balanced review requested due to automatic review settings October 8, 2026 11:43
@ShaileshParmar11 ShaileshParmar11 self-assigned this Oct 8, 2026

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot was unable to review this pull request because the user who requested the review has reached their quota limit.

@github-actions github-actions Bot added safe to test Add this label to run secure Github workflows on PRs UI UI specific issues labels Oct 8, 2026
@github-actions

github-actions Bot commented Oct 8, 2026

Copy link
Copy Markdown
Contributor

🔄 Playwright impact map auto-refreshed

This PR touched specs or UI source that changed the source→spec routing map. I regenerated .github/playwright/impact-map.generated.json and pushed the diff to this branch.

- source entries: 852 → 852
- 0 added, 0 removed, 2 changed spec-list

Entries whose spec list changed:
  openmetadata-ui/src/main/resources/ui/src/components/Settings/CustomProperty/CustomPropertyEditForm/CustomPropertyEditForm.tsx
  openmetadata-ui/src/main/resources/ui/src/components/Settings/Services/Ingestion/IngestionListTable/PipelineActions/PipelineActions.tsx

What is this file? It is the auto-generated half of Playwright's PR planner. It routes "if source X changes, run specs Y" by walking spec imports and cross-referencing getByTestId strings. Hand-authored routing in impact-map.json always wins on conflict.

What if I want to regenerate locally instead? Run this before pushing your next change to skip the bot commit:

python3 .github/scripts/generate_playwright_impact_map.py
git add .github/playwright/impact-map.generated.json
git commit --amend --no-edit  # or a separate commit

Copilot AI balanced review requested due to automatic review settings October 8, 2026 11:43

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot was unable to review this pull request because the user who requested the review has reached their quota limit.

@github-actions

github-actions Bot commented Oct 8, 2026 •

Copy link
Copy Markdown
Contributor

Jest test Coverage

UI tests summary

Lines Statements Branches Functions
Coverage: 76%
76.63% (121941/159129) 62.7% (75654/120642) 64.19% (25359/39505)

…bservability-antd-free

# Conflicts:
#	openmetadata-ui/src/main/resources/ui/src/components/Explore/EntitySummaryPanel/LineageTab/LineageTabContent.tsx
#	openmetadata-ui/src/main/resources/ui/src/components/common/ErrorWithPlaceholder/FilterErrorPlaceHolder.tsx
#	openmetadata-ui/src/main/resources/ui/src/components/common/RichTextEditor/RichTextEditorPreviewerV1.tsx
#	openmetadata-ui/src/main/resources/ui/src/components/common/RichTextEditor/rich-text-editor-previewerV1.less
…y-antd-free' into ShaileshParmar11/ai-observability-antd-free
Copilot AI balanced review requested due to automatic review settings October 8, 2026 12:21

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot was unable to review this pull request because the user who requested the review has reached their quota limit.

- ModalWithMarkdownEditor: markdown-editor test id wraps the dialog again, as
  it did with antd, so helpers that look for the dialog inside it still work
- DescriptionSourceBadge: take main's version, keeping the tooltip trigger
  keyboard focusable
- EntityVersionTimeLine: the version history panel is a dialog again
- BulkEditEntity: keep row identities stable so the grid does not discard an
  open cell edit when the tag picker closes
- CSV grid editors: refocus the selected cell after the modal editor closes so
  arrow-key navigation keeps working
- Playwright helpers: target core dialogs and the core tag picker instead of
  antd selectors
…bservability-antd-free

# Conflicts:
#	.github/playwright/impact-map.generated.json
#	openmetadata-ui/src/main/resources/ui/playwright/e2e/Features/ActivityAPI.spec.ts
#	openmetadata-ui/src/main/resources/ui/playwright/e2e/Features/IncidentManager.spec.ts
#	openmetadata-ui/src/main/resources/ui/playwright/e2e/Features/Tasks/TaskAssigneeManagement.spec.ts
#	openmetadata-ui/src/main/resources/ui/playwright/e2e/Features/Tasks/TaskCreation.spec.ts
#	openmetadata-ui/src/main/resources/ui/playwright/utils/activityFeed.ts
#	openmetadata-ui/src/main/resources/ui/playwright/utils/glossary.ts
#	openmetadata-ui/src/main/resources/ui/playwright/utils/incidentManager.ts
#	openmetadata-ui/src/main/resources/ui/playwright/utils/task.ts
#	openmetadata-ui/src/main/resources/ui/playwright/utils/taskWorkflow.ts
#	openmetadata-ui/src/main/resources/ui/src/components/DataQuality/TestCaseStatusModal/TestCaseStatusModal.component.tsx
#	openmetadata-ui/src/main/resources/ui/src/components/Database/Profiler/TableProfiler/ProfilerProgressWidget/ProfilerProgressWidget.tsx
#	openmetadata-ui/src/main/resources/ui/src/components/Database/SchemaTable/SchemaTable.component.tsx
#	openmetadata-ui/src/main/resources/ui/src/components/Entity/EntityStatusBadge/EntityStatusBadge.component.tsx
#	openmetadata-ui/src/main/resources/ui/src/components/Entity/EntityVersionTimeLine/EntityVersionTimeLine.tsx
#	openmetadata-ui/src/main/resources/ui/src/components/Modals/ConfirmationModal/ConfirmationModal.tsx
#	openmetadata-ui/src/main/resources/ui/src/components/Suggestions/SuggestionsSlider/SuggestionsSlider.tsx
#	openmetadata-ui/src/main/resources/ui/src/components/Visualisations/Chart/CustomPieChart.component.tsx
#	openmetadata-ui/src/main/resources/ui/src/components/common/AsyncSelectList/AsyncSelectList.tsx
#	openmetadata-ui/src/main/resources/ui/src/components/common/ErrorWithPlaceholder/AssignErrorPlaceHolder.tsx
#	openmetadata-ui/src/main/resources/ui/src/components/common/ErrorWithPlaceholder/CreateErrorPlaceHolder.tsx
#	openmetadata-ui/src/main/resources/ui/src/components/common/ErrorWithPlaceholder/ErrorPlaceHolderIngestion.tsx
#	openmetadata-ui/src/main/resources/ui/src/components/common/ErrorWithPlaceholder/PermissionErrorPlaceholder.tsx
#	openmetadata-ui/src/main/resources/ui/src/components/common/InlineEdit/InlineEdit.component.tsx
#	openmetadata-ui/src/main/resources/ui/src/components/common/InlineEdit/InlineEdit.interface.ts
#	openmetadata-ui/src/main/resources/ui/src/components/common/Skeleton/CommonSkeletons/LabelCountSkeleton/LabelCountSkeleton.component.tsx
#	openmetadata-ui/src/main/resources/ui/src/components/common/Skeleton/SummaryPanelSkeleton/SummaryPanelSkeleton.component.tsx
#	openmetadata-ui/src/main/resources/ui/src/pages/TasksPage/shared/Assignees.test.tsx
#	openmetadata-ui/src/main/resources/ui/src/pages/TasksPage/shared/Assignees.tsx
#	openmetadata-ui/src/main/resources/ui/src/pages/TasksPage/shared/TaskPayloadSchemaFields.tsx
Copilot AI balanced review requested due to automatic review settings October 9, 2026 08:34

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot was unable to review this pull request because the user who requested the review has reached their quota limit.

@github-actions

github-actions Bot commented Oct 9, 2026

Copy link
Copy Markdown
Contributor

🔄 Playwright impact map auto-refreshed

This PR touched specs or UI source that changed the source→spec routing map. I regenerated .github/playwright/impact-map.generated.json and pushed the diff to this branch.

- source entries: 890 → 890
- 0 added, 0 removed, 1 changed spec-list

Entries whose spec list changed:
  openmetadata-ui/src/main/resources/ui/src/components/Settings/Services/Ingestion/IngestionListTable/PipelineActions/PipelineActions.tsx

What is this file? It is the auto-generated half of Playwright's PR planner. It routes "if source X changes, run specs Y" by walking spec imports and cross-referencing getByTestId strings. Hand-authored routing in impact-map.json always wins on conflict.

What if I want to regenerate locally instead? Run this before pushing your next change to skip the bot commit:

python3 .github/scripts/generate_playwright_impact_map.py
git add .github/playwright/impact-map.generated.json
git commit --amend --no-edit  # or a separate commit

Copilot AI balanced review requested due to automatic review settings October 9, 2026 08:35

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot was unable to review this pull request because the user who requested the review has reached their quota limit.

The merge brought back the antd Row/Col layout that main had already moved
to core Grid. Take main's version and only keep TableProps from
Table.interface instead of antd.
…y-antd-free' into ShaileshParmar11/ai-observability-antd-free
Copilot AI balanced review requested due to automatic review settings October 9, 2026 08:46

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot was unable to review this pull request because the user who requested the review has reached their quota limit.

@github-actions

github-actions Bot commented Oct 9, 2026 •

Copy link
Copy Markdown
Contributor

⚠️ UI Checkstyle passed — lint findings in changed files

🔍 ESLint findings in this PR's files — 0 error(s), 79 warning(s)

Errors block the build. Warnings do not yet — they are rules whose backlog is still
being worked down, listed so this PR does not add to it. See docs/ui-code-quality-gate.md.

0 error(s), 79 warning(s) across 36 changed file(s).

Count Rule
53 react-hooks/exhaustive-deps
19 openmetadata-imports/no-lower-layer-page-imports
5 openmetadata-imports/no-circular-imports
1 openmetadata-imports/review-sequential-api-calls
1 openmetadata-imports/no-cross-page-imports
All findings
Location Rule Message
🟡 src/components/BlockEditor/BlockEditor.tsx:245:8 react-hooks/exhaustive-deps React Hook useEffect has a missing dependency: 'isPopoverOpenRef'. Either include it or remove the dependency array.
🟡 src/components/BlockEditor/BubbleMenu/BubbleMenu.tsx:100:6 react-hooks/exhaustive-deps React Hook useMemo has a missing dependency: 'toggleLink'. Either include it or remove the dependency array. If 'toggleLink' changes too often, find the parent
🟡 src/components/BlockEditor/Extensions/File/AttachmentComponents/AttachmentPlaceholder.tsx:16:1 openmetadata-imports/no-circular-imports This runtime import participates in a circular dependency. Extract the shared type/constant/utility or invert the dependency.
🟡 src/components/BlockEditor/Extensions/slash-command/SlashCommandList.tsx:19:1 openmetadata-imports/no-circular-imports This runtime import participates in a circular dependency. Extract the shared type/constant/utility or invert the dependency.
🟡 src/components/BlockEditor/TableMenu/TableMenu.tsx:145:6 react-hooks/exhaustive-deps React Hook useEffect has a missing dependency: 'view.dom'. Either include it or remove the dependency array.
🟡 src/components/BulkEditEntity/BulkEditEntity.component.tsx:243:6 react-hooks/exhaustive-deps React Hook useCallback has a missing dependency: 'newRowConfig?.defaults'. Either include it or remove the dependency array.
🟡 src/components/DataQuality/AddTestCaseList/AddTestCaseList.component.tsx:293:34 react-hooks/exhaustive-deps React Hook useCallback received a function whose dependencies are unknown. Pass an inline function instead.
🟡 src/components/DataQuality/AddTestCaseList/AddTestCaseList.component.tsx:326:35 react-hooks/exhaustive-deps React Hook useCallback received a function whose dependencies are unknown. Pass an inline function instead.
🟡 src/components/DataQuality/AddTestCaseList/AddTestCaseList.component.tsx:670:6 react-hooks/exhaustive-deps React Hook useEffect has a missing dependency: 'fetchTestCases'. Either include it or remove the dependency array.
🟡 src/components/DataQuality/AddTestCaseList/AddTestCaseList.component.tsx:695:5 react-hooks/exhaustive-deps React Hook useCallback has an unnecessary dependency: 'fetchColumnOptions'. Either exclude it or remove the dependency array.
🟡 src/components/DataQuality/AddTestCaseList/AddTestCaseList.component.tsx:826:6 react-hooks/exhaustive-deps React Hook useMemo has an unnecessary dependency: 'items'. Either exclude it or remove the dependency array.
🟡 src/components/DataQuality/IncidentManager/Severity/Severity.component.tsx:59:5 react-hooks/exhaustive-deps React Hook useCallback has a missing dependency: 'onCancel'. Either include it or remove the dependency array.
🟡 src/components/DataQuality/TestCaseStatusModal/TestCaseStatusModal.component.tsx:31:1 openmetadata-imports/no-lower-layer-page-imports Pages are route-level composition modules. Move the shared implementation/type to a lower layer instead of importing a page from here.
🟡 src/components/DataQuality/TestCaseStatusModal/TestCaseStatusModal.component.tsx:32:1 openmetadata-imports/no-lower-layer-page-imports Pages are route-level composition modules. Move the shared implementation/type to a lower layer instead of importing a page from here.
🟡 src/components/DataQuality/TestCaseStatusModal/TestCaseStatusModal.component.tsx:244:25 openmetadata-imports/review-sequential-api-calls Review these sequential API requests. If they are independent, start them together with Promise.all/Promise.allSettled; keep sequencing only when data-dependent
🟡 src/components/DataQuality/TestCaseStatusModal/TestCaseStatusModal.component.tsx:277:6 react-hooks/exhaustive-deps React Hook useEffect has a missing dependency: 'fetchInitialAssign'. Either include it or remove the dependency array.
🟡 src/components/DataQuality/TestCaseStatusModal/TestCaseStatusModal.component.tsx:292:6 react-hooks/exhaustive-deps React Hook useEffect has a missing dependency: 'form'. Either include it or remove the dependency array.
🟡 src/components/DataQuality/TestCaseStatusModal/TestCaseStatusModal.interface.ts:18:1 openmetadata-imports/no-lower-layer-page-imports Pages are route-level composition modules. Move the shared implementation/type to a lower layer instead of importing a page from here.
🟡 src/components/DataQuality/TestCases/TestCases.component.tsx:32:1 openmetadata-imports/no-lower-layer-page-imports Pages are route-level composition modules. Move the shared implementation/type to a lower layer instead of importing a page from here.
🟡 src/components/DataQuality/TestCases/TestCases.component.tsx:33:1 openmetadata-imports/no-lower-layer-page-imports Pages are route-level composition modules. Move the shared implementation/type to a lower layer instead of importing a page from here.
🟡 src/components/DataQuality/TestCases/TestCases.component.tsx:46:1 openmetadata-imports/no-circular-imports This runtime import participates in a circular dependency. Extract the shared type/constant/utility or invert the dependency.
🟡 src/components/DataQuality/TestCases/useTestCaseFilterOptions.tsx:249:34 react-hooks/exhaustive-deps React Hook useCallback received a function whose dependencies are unknown. Pass an inline function instead.
🟡 src/components/DataQuality/TestCases/useTestCaseFilterOptions.tsx:253:35 react-hooks/exhaustive-deps React Hook useCallback received a function whose dependencies are unknown. Pass an inline function instead.
🟡 src/components/DataQuality/TestCases/useTestCaseFilterOptions.tsx:257:39 react-hooks/exhaustive-deps React Hook useCallback received a function whose dependencies are unknown. Pass an inline function instead.
🟡 src/components/DataQuality/TestCases/useTestCaseFilterOptions.tsx:261:43 react-hooks/exhaustive-deps React Hook useCallback received a function whose dependencies are unknown. Pass an inline function instead.
🟡 src/components/DataQuality/TestCases/useTestCaseFilters.ts:228:6 react-hooks/exhaustive-deps React Hook useMemo has missing dependencies: 'getInitialOptions', 'handleSearchParam', and 'onSearchByKey'. Either include them or remove the dependency array.
🟡 src/components/DataQuality/TestCases/useTestCaseList.test.ts:20:1 openmetadata-imports/no-lower-layer-page-imports Pages are route-level composition modules. Move the shared implementation/type to a lower layer instead of importing a page from here.
🟡 src/components/DataQuality/TestCases/useTestCaseList.ts:32:1 openmetadata-imports/no-lower-layer-page-imports Pages are route-level composition modules. Move the shared implementation/type to a lower layer instead of importing a page from here.
🟡 src/components/DataQuality/TestCases/useTestCaseList.ts:237:6 react-hooks/exhaustive-deps React Hook useEffect has a missing dependency: 'getTestCases'. Either include it or remove the dependency array.
🟡 src/components/DataQuality/TestCases/useTestCaseListPage.tsx:20:1 openmetadata-imports/no-circular-imports This runtime import participates in a circular dependency. Extract the shared type/constant/utility or invert the dependency.
🟡 src/components/DataQuality/TestCases/useTestCaseListPage.tsx:20:1 openmetadata-imports/no-lower-layer-page-imports Pages are route-level composition modules. Move the shared implementation/type to a lower layer instead of importing a page from here.
🟡 src/components/DataQuality/TestCases/useTestCaseListPage.tsx:21:1 openmetadata-imports/no-lower-layer-page-imports Pages are route-level composition modules. Move the shared implementation/type to a lower layer instead of importing a page from here.
🟡 src/components/DataQuality/TestCases/useTestCaseListPage.tsx:22:1 openmetadata-imports/no-lower-layer-page-imports Pages are route-level composition modules. Move the shared implementation/type to a lower layer instead of importing a page from here.
🟡 src/components/DataQuality/TestSuite/TestSuitePipelineTab/TestSuitePipelineTab.component.tsx:248:6 react-hooks/exhaustive-deps React Hook useCallback has a missing dependency: 't'. Either include it or remove the dependency array.
🟡 src/components/DataQuality/TestSuite/TestSuitePipelineTab/TestSuitePipelineTab.component.tsx:266:5 react-hooks/exhaustive-deps React Hook useCallback has a missing dependency: 't'. Either include it or remove the dependency array.
🟡 src/components/DataQuality/TestSuite/TestSuitePipelineTab/TestSuitePipelineTab.component.tsx:290:5 react-hooks/exhaustive-deps React Hook useCallback has a missing dependency: 't'. Either include it or remove the dependency array.
🟡 src/components/DataQuality/TestSuite/TestSuitePipelineTab/TestSuitePipelineTab.component.tsx:319:5 react-hooks/exhaustive-deps React Hook useCallback has a missing dependency: 't'. Either include it or remove the dependency array.
🟡 src/components/DataQuality/TestSuite/TestSuitePipelineTab/TestSuitePipelineTab.component.tsx:391:5 react-hooks/exhaustive-deps React Hook useMemo has a missing dependency: 'handleAddPipelineRedirection'. Either include it or remove the dependency array.
🟡 src/components/DataQuality/TestSuite/TestSuitePipelineTab/TestSuitePipelineTab.component.tsx:411:6 react-hooks/exhaustive-deps React Hook useEffect has a missing dependency: 'getAllIngestionWorkflows'. Either include it or remove the dependency array.
🟡 src/components/Database/SchemaTable/SchemaTable.component.tsx:353:6 react-hooks/exhaustive-deps React Hook useEffect has a missing dependency: 'fetchTestCaseSummary'. Either include it or remove the dependency array.
🟡 src/components/Database/SchemaTable/SchemaTable.component.tsx:455:5 react-hooks/exhaustive-deps React Hook useCallback has a missing dependency: 'tableFqn'. Either include it or remove the dependency array.
🟡 src/components/Database/SchemaTable/SchemaTable.component.tsx:741:5 react-hooks/exhaustive-deps React Hook useCallback has missing dependencies: 'handleEditDisplayNameClick' and 't'. Either include them or remove the dependency array.
🟡 src/components/Database/SchemaTable/SchemaTable.component.tsx:868:5 react-hooks/exhaustive-deps React Hook useMemo has missing dependencies: 'handleColumnClick' and 't'. Either include them or remove the dependency array.
🟡 src/components/Database/SchemaTable/SchemaTable.component.tsx:948:5 react-hooks/exhaustive-deps React Hook useMemo has a missing dependency: 't'. Either include it or remove the dependency array.
🟡 src/components/Entity/EntityVersionTimeLine/EntityVersionTimeLine.tsx:42:6 react-hooks/exhaustive-deps React Hook useEffect has a missing dependency: 'getResourceLimit'. Either include it or remove the dependency array.
🟡 src/components/Entity/EntityVersionTimeLine/EntityVersionTimeLine.tsx:102:6 react-hooks/exhaustive-deps React Hook useMemo has missing dependencies: 'maxVersions' and 't'. Either include them or remove the dependency array.
🟡 src/components/Entity/Task/TaskTab/TaskTabNew.component.tsx:78:1 openmetadata-imports/no-lower-layer-page-imports Pages are route-level composition modules. Move the shared implementation/type to a lower layer instead of importing a page from here.
🟡 src/components/Entity/Task/TaskTab/TaskTabNew.component.tsx:79:1 openmetadata-imports/no-lower-layer-page-imports Pages are route-level composition modules. Move the shared implementation/type to a lower layer instead of importing a page from here.
🟡 src/components/Entity/Task/TaskTab/TaskTabNew.component.tsx:790:9 react-hooks/exhaustive-deps The 'updateTaskData' function makes the dependencies of useCallback Hook (at line 895) change on every render. To fix this, wrap the definition of 'updateTaskDa
🟡 src/components/Entity/Task/TaskTab/TaskTabNew.component.tsx:1342:6 react-hooks/exhaustive-deps React Hook useMemo has unnecessary dependencies: 'onTaskDropdownClick', 'taskHandler.approvedValue', and 'taskHandler.rejectedValue'. Either exclude them or rem

… and 29 more. Run make ui-checkstyle-changed locally for the full list.


Fix locally (fast - only checks files changed in this branch):

make ui-checkstyle-changed

Copilot AI balanced review requested due to automatic review settings October 9, 2026 16:18

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot was unable to review this pull request because the user who requested the review has reached their quota limit.

Copilot AI balanced review requested due to automatic review settings October 9, 2026 17:20

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot was unable to review this pull request because the user who requested the review has reached their quota limit.

Copilot AI balanced review requested due to automatic review settings October 10, 2026 05:39

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot was unable to review this pull request because the user who requested the review has reached their quota limit.

Copilot AI balanced review requested due to automatic review settings October 10, 2026 06:02

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot was unable to review this pull request because the user who requested the review has reached their quota limit.

Copilot AI balanced review requested due to automatic review settings October 10, 2026 06:38

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot was unable to review this pull request because the user who requested the review has reached their quota limit.

@gitar-bot

gitar-bot Bot commented Oct 10, 2026

Copy link
Copy Markdown
Code Review ✅ Approved 1 closed / 1 findings

🟡 Medium risk · Replacing Ant Design across Observability and shared task, feed, and editor components changes many UI workflows, so interaction regressions could disrupt incident or task operations.

Migrates AI-mode Observability components from antd to @openmetadata/ui-core-components in place, preserving entry points and workflows. The previously open finding that AddTestCaseList dropped virtualization, causing the DOM to grow with every loaded page, has been resolved.

✅ 1 closed
✅ Performance: AddTestCaseList dropped virtualization; DOM grows with every loaded page

📄 openmetadata-ui/src/main/resources/ui/src/components/DataQuality/AddTestCaseList/AddTestCaseList.component.tsx
This change swaps out rc-virtual-list for a plain overflow-y-auto Box that renders every row in listSource. Scrolling through a large suite pulls in 25 test cases per page and never unmounts earlier rows. A few hundred rows in, each with a core Checkbox, links and text, the selection list and its select-all re-renders slow down, which the virtualized version did not. The added comment admits this. The frontend performance guideline asks for virtualization once a list passes about 100 rows, and test-case lists in this picker routinely do. Fix: put back windowing with a core-compatible virtualizer (e.g. @tanstack/react-virtual over the scroll container, or the react-aria virtualized ListBox), and keep the isNearScrollBottom trigger for paging.

Review coverage

📋 Rules No rules evaluated

🧪 Functional validation Not enabled · Set up

🤖 Auto-approval Not enabled · Set up

Options

Display: compact → Counting what did not apply, without listing it.

Comment with these commands to change the behavior for this request:

Compact
gitar display:verbose         

Was this helpful? React with 👍 / 👎 | Powered by Gitar — free for open source

@sonarqubecloud

Copy link
Copy Markdown

@ShaileshParmar11
ShaileshParmar11 added this pull request to the merge queue Oct 10, 2026
Merged via the queue into main with commit 13a24c1 Oct 10, 2026
72 of 73 checks passed
@ShaileshParmar11
ShaileshParmar11 deleted the ShaileshParmar11/ai-observability-antd-free branch October 10, 2026 07:56
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

safe to test Add this label to run secure Github workflows on PRs UI UI specific issues

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Remove antd from AI-mode Observability

3 participants