Skip to content

refactor(explore): migrate Explore Controls from react-dnd to @dnd-kit#37880

Open
rusackas wants to merge 5 commits intomasterfrom
refactor/explore-controls-dnd-kit
Open

refactor(explore): migrate Explore Controls from react-dnd to @dnd-kit#37880
rusackas wants to merge 5 commits intomasterfrom
refactor/explore-controls-dnd-kit

Conversation

@rusackas
Copy link
Member

SUMMARY

Migrate the Explore Controls drag-and-drop functionality from react-dnd to @dnd-kit for React 18 compatibility.

This PR is part of a larger effort to migrate the codebase from react-dnd to @dnd-kit, which is better maintained and fully compatible with React 18's concurrent rendering.

BEFORE/AFTER SCREENSHOTS OR COVERAGE

N/A - No visual changes. Drag-and-drop functionality remains the same.

TESTING INSTRUCTIONS

  1. Open the Explore view
  2. Test dragging columns/metrics from the datasource panel to control dropzones
  3. Test reordering columns/metrics within control panels
  4. Verify drag feedback and animations work correctly

ADDITIONAL INFORMATION

Files Changed

  • spec/helpers/testing-library.tsx - Added useDndKit: true option for tests
  • src/explore/components/DatasourcePanel/DatasourcePanelDragOption/index.tsx - Updated drag source
  • src/explore/components/ExploreContainer/ExploreDndContext.tsx - NEW: DndContext wrapper with handlers
  • src/explore/components/ExploreContainer/index.tsx - Export new context
  • src/explore/components/controls/ContourControl/index.tsx - Added sortable props
  • src/explore/components/controls/DndColumnSelectControl/DndColumnSelect.tsx - Added sortable props
  • src/explore/components/controls/DndColumnSelectControl/DndFilterSelect.tsx - Added sortable props
  • src/explore/components/controls/DndColumnSelectControl/DndMetricSelect.tsx - Added sortable props
  • src/explore/components/controls/DndColumnSelectControl/DndSelectLabel.tsx - Added SortableContext
  • src/explore/components/controls/DndColumnSelectControl/OptionWrapper.tsx - Migrated to @dnd-kit/sortable
  • src/explore/components/controls/OptionControls/index.tsx - Migrated to @dnd-kit/sortable
  • Various test files updated to use useDndKit: true

Note on CI

The pre-commit type-checking hook may fail due to a pre-existing unrelated error (ColorSchemeEnum not exported from @superset-ui/chart-controls). This is caused by stale build artifacts and is not related to these changes.

🤖 Generated with Claude Code

@dosubot dosubot bot added change:frontend Requires changing the frontend explore Namespace | Anything related to Explore labels Feb 11, 2026
@rusackas rusackas requested a review from msyavuz February 11, 2026 07:47
@rusackas
Copy link
Member Author

@LevisNgigi this one's for you ;) Let me know if it looks good.

return;
}

// Handle external drop (from DatasourcePanel to dropzone)
Copy link
Contributor

Choose a reason for hiding this comment

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

Suggestion: External drops (dragging items from the datasource panel into control dropzones) are never handled because dropHandlers is never populated and handleDragEnd only consults that map; since droppable zones (e.g., DndSelectLabel) provide their onDrop/onDropValue callbacks via over.data.current, the current code silently ignores valid drops and no onDrop is ever called. You can fix this by first checking over.data.current for droppable metadata and invoking its onDrop/onDropValue when the dragged item's type is accepted, falling back to dropHandlers only if no inline handlers are present. [logic error]

Severity Level: Critical 🚨
- ❌ Explore controls cannot accept new columns via drag-drop.
- ❌ Metrics dropped from datasource never update control state.
- ⚠️ DatasourcePanel filtering uses DropzoneContext but drops still fail.
Suggested change
// Handle external drop (from DatasourcePanel to dropzone)
const droppableData = over.data.current as
| {
accept?: string[];
onDrop?: (item: { type: string; value?: unknown }) => void;
onDropValue?: (value: unknown) => void;
}
| undefined;
if (activeDataCurrent && droppableData) {
const { accept, onDrop, onDropValue } = droppableData;
// If an accept list is provided, ensure this type is allowed
if (!accept || accept.includes(activeDataCurrent.type)) {
const item = {
type: activeDataCurrent.type,
value: activeDataCurrent.value,
};
onDrop?.(item);
if (activeDataCurrent.value !== undefined) {
onDropValue?.(activeDataCurrent.value);
}
// Drop was handled by the droppable itself; no need to consult registered handlers
return;
}
}
Steps of Reproduction ✅
1. Open the Explore view, which is wrapped by `ExploreDndContextProvider` in
`superset-frontend/src/explore/components/ExploreContainer/index.tsx:22-40`, so all
drag-and-drop in Explore goes through `ExploreDndContextProvider` and its `DndContext`
`onDragEnd` handler in `ExploreDndContext.tsx:150-195`.

2. Note that control dropzones are implemented using `DndSelectLabel` in
`superset-frontend/src/explore/components/controls/DndColumnSelectControl/DndSelectLabel.tsx:40-55`,
which calls `useDroppable` with `id: \`dropzone-\${props.name}\`` and `data: { accept,
onDrop, onDropValue }` at lines 80-87; this means the droppable-specific drop callbacks
live in `over.data.current`, not in any global map.

3. Observe that `DropHandlersContext` from `ExploreDndContext.tsx:100-106` is never used
by any consumer: a search for `DropHandlersContext` only finds its definition and provider
usage within `ExploreDndContext.tsx` itself (no imports or calls elsewhere), so `register`
is never called and the internal `dropHandlers` state remains an empty object for the
lifetime of the app.

4. In the same provider, the `handleDragEnd` logic at `ExploreDndContext.tsx:150-195`
first handles sortable reordering, and then for non-sortable external drops executes the
existing code snippet (lines 186-193) that resolves `const overId = String(over.id); const
handler = dropHandlers[overId];` and only calls `handler(active.id, over.id,
activeDataCurrent)` if a handler exists, without consulting `over.data.current` at all.

5. Run the app and in Explore drag a column or metric from the datasource panel (rendered
by `DatasourcePanel` in
`superset-frontend/src/explore/components/DatasourcePanel/index.tsx:128-158`, which uses
`DropzoneContext` only for validation) into a control using `DndSelectLabel` (e.g., a
metrics/columns/filter control). The drag is recognized visually (because `useDroppable`
and `useIsDragging` / `DraggingContext` drive the hover/border styling), and `DndContext`
correctly fires `onDragEnd`, but since `dropHandlers` has no entries, the condition `if
(handler && activeDataCurrent)` at `ExploreDndContext.tsx:191-193` fails.

6. Observe the functional result: the control's `onDrop`/`onDropValue` callbacks supplied
via `DndSelectLabel`'s props are never invoked from `handleDragEnd`, so the control state
is not updated and the dragged datasource item does not appear in the control;
drag-and-drop from the datasource panel into controls is effectively a no-op despite UI
feedback.
Prompt for AI Agent 🤖
This is a comment left during a code review.

**Path:** superset-frontend/src/explore/components/ExploreContainer/ExploreDndContext.tsx
**Line:** 187:187
**Comment:**
	*Logic Error: External drops (dragging items from the datasource panel into control dropzones) are never handled because `dropHandlers` is never populated and `handleDragEnd` only consults that map; since droppable zones (e.g., `DndSelectLabel`) provide their `onDrop`/`onDropValue` callbacks via `over.data.current`, the current code silently ignores valid drops and no `onDrop` is ever called. You can fix this by first checking `over.data.current` for droppable metadata and invoking its `onDrop`/`onDropValue` when the dragged item's type is accepted, falling back to `dropHandlers` only if no inline handlers are present.

Validate the correctness of the flagged issue. If correct, How can I resolve this? If you propose a fix, implement it and please make it concise.
👍 | 👎

Copy link
Contributor

@bito-code-review bito-code-review bot left a comment

Choose a reason for hiding this comment

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

Code Review Agent Run #1a0248

Actionable Suggestions - 1
  • superset-frontend/src/explore/components/controls/OptionControls/OptionControls.test.tsx - 1
Additional Suggestions - 4
  • superset-frontend/src/explore/components/controls/DndColumnSelectControl/DndSelectLabel.tsx - 3
    • Missing test coverage for sortable props · Line 52-54
      New sortable functionality (sortableType, itemCount) lacks test coverage. The existing tests use useDndKit but don't exercise the SortableContext rendering or id generation logic.
    • No validation for sortable prop consistency · Line 115-121
      If itemCount is set but sortableType is undefined, sortableItemIds becomes empty, disabling sorting silently. Consider adding validation or documentation.
    • Empty useEffect placeholder · Line 136-141
      This useEffect is empty except for a comment about side effects during hover. If no logic is needed, it should be removed to avoid confusion.
  • superset-frontend/src/explore/components/DatasourcePanel/DatasourcePanelDragOption/index.tsx - 1
    • Potential draggable ID collision · Line 77-84
      The draggableId uses names (column_name, metric_name) which may not be unique across different datasources or contexts. Consider using unique identifiers to ensure drag operations work correctly in all scenarios.
Review Details
  • Files reviewed - 15 · Commit Range: bf1b10a..bf1b10a
    • superset-frontend/spec/helpers/testing-library.tsx
    • superset-frontend/src/explore/components/DatasourcePanel/DatasourcePanelDragOption/index.tsx
    • superset-frontend/src/explore/components/ExploreContainer/ExploreContainer.test.tsx
    • superset-frontend/src/explore/components/ExploreContainer/ExploreDndContext.tsx
    • superset-frontend/src/explore/components/ExploreContainer/index.tsx
    • superset-frontend/src/explore/components/controls/ContourControl/index.tsx
    • superset-frontend/src/explore/components/controls/DndColumnSelectControl/DndColumnSelect.tsx
    • superset-frontend/src/explore/components/controls/DndColumnSelectControl/DndFilterSelect.tsx
    • superset-frontend/src/explore/components/controls/DndColumnSelectControl/DndMetricSelect.tsx
    • superset-frontend/src/explore/components/controls/DndColumnSelectControl/DndSelectLabel.test.tsx
    • superset-frontend/src/explore/components/controls/DndColumnSelectControl/DndSelectLabel.tsx
    • superset-frontend/src/explore/components/controls/DndColumnSelectControl/OptionWrapper.test.tsx
    • superset-frontend/src/explore/components/controls/DndColumnSelectControl/OptionWrapper.tsx
    • superset-frontend/src/explore/components/controls/OptionControls/OptionControls.test.tsx
    • superset-frontend/src/explore/components/controls/OptionControls/index.tsx
  • Files skipped - 0
  • Tools
    • Whispers (Secret Scanner) - ✔︎ Successful
    • Detect-secrets (Secret Scanner) - ✔︎ Successful

Bito Usage Guide

Commands

Type the following command in the pull request comment and save the comment.

  • /review - Manually triggers a full AI review.

  • /pause - Pauses automatic reviews on this pull request.

  • /resume - Resumes automatic reviews.

  • /resolve - Marks all Bito-posted review comments as resolved.

  • /abort - Cancels all in-progress reviews.

Refer to the documentation for additional commands.

Configuration

This repository uses Superset You can customize the agent settings here or contact your Bito workspace admin at evan@preset.io.

Documentation & Help

AI Code Review powered by Bito Logo

Comment on lines 86 to 104
@@ -101,15 +96,11 @@ test('triggers onMoveLabel on drop', async () => {
index={2}
label={<span>Label 2</span>}
/>
,
</>,
{ useDnd: true },
{ useDndKit: true },
);
await waitFor(() => {
fireEvent.dragStart(screen.getByText('Label 1'));
fireEvent.drop(screen.getByText('Label 2'));
expect(defaultProps.onMoveLabel).toHaveBeenCalled();
});
expect(await screen.findByText('Label 1')).toBeInTheDocument();
expect(await screen.findByText('Label 2')).toBeInTheDocument();
});
Copy link
Contributor

Choose a reason for hiding this comment

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

Missing drag behavior test

The new 'renders multiple labels' test only checks that components render, but the removed 'triggers onMoveLabel on drop' test verified core drag behavior by asserting onMoveLabel is called on drop. Per BITO.md adaptive_rules [6262], tests should assert actual business logic, not just rendering. Drag functionality is key to OptionControlLabel, so behavior testing should be restored.

Code Review Run #1a0248


Should Bito avoid suggestions like this for future reviews? (Manage Rules)

  • Yes, avoid them

@netlify
Copy link

netlify bot commented Feb 22, 2026

Deploy Preview for superset-docs-preview ready!

Name Link
🔨 Latest commit b069815
🔍 Latest deploy log https://app.netlify.com/projects/superset-docs-preview/deploys/699b8ce84070bb0008d8bef7
😎 Deploy Preview https://deploy-preview-37880--superset-docs-preview.netlify.app
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.

To edit notification comments on pull requests, go to your Netlify project configuration.

Copy link
Contributor

@bito-code-review bito-code-review bot left a comment

Choose a reason for hiding this comment

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

Code Review Agent Run #4c915c

Actionable Suggestions - 1
  • superset-frontend/src/explore/components/controls/DndColumnSelectControl/DndMetricSelect.test.tsx - 1
Review Details
  • Files reviewed - 21 · Commit Range: bf1b10a..0e0be35
    • superset-frontend/spec/helpers/testing-library.tsx
    • superset-frontend/src/dashboard/components/DashboardBuilder/DashboardWrapper.test.tsx
    • superset-frontend/src/explore/components/DatasourcePanel/DatasourcePanelDragOption/DatasourcePanelDragOption.test.tsx
    • superset-frontend/src/explore/components/DatasourcePanel/DatasourcePanelDragOption/index.tsx
    • superset-frontend/src/explore/components/ExploreContainer/ExploreContainer.test.tsx
    • superset-frontend/src/explore/components/ExploreContainer/ExploreDndContext.tsx
    • superset-frontend/src/explore/components/ExploreContainer/index.tsx
    • superset-frontend/src/explore/components/controls/ContourControl/index.tsx
    • superset-frontend/src/explore/components/controls/DndColumnSelectControl/DndColumnMetricSelect.test.tsx
    • superset-frontend/src/explore/components/controls/DndColumnSelectControl/DndColumnSelect.test.tsx
    • superset-frontend/src/explore/components/controls/DndColumnSelectControl/DndColumnSelect.tsx
    • superset-frontend/src/explore/components/controls/DndColumnSelectControl/DndFilterSelect.test.tsx
    • superset-frontend/src/explore/components/controls/DndColumnSelectControl/DndFilterSelect.tsx
    • superset-frontend/src/explore/components/controls/DndColumnSelectControl/DndMetricSelect.test.tsx
    • superset-frontend/src/explore/components/controls/DndColumnSelectControl/DndMetricSelect.tsx
    • superset-frontend/src/explore/components/controls/DndColumnSelectControl/DndSelectLabel.test.tsx
    • superset-frontend/src/explore/components/controls/DndColumnSelectControl/DndSelectLabel.tsx
    • superset-frontend/src/explore/components/controls/DndColumnSelectControl/OptionWrapper.test.tsx
    • superset-frontend/src/explore/components/controls/DndColumnSelectControl/OptionWrapper.tsx
    • superset-frontend/src/explore/components/controls/OptionControls/OptionControls.test.tsx
    • superset-frontend/src/explore/components/controls/OptionControls/index.tsx
  • Files skipped - 0
  • Tools
    • Whispers (Secret Scanner) - ✔︎ Successful
    • Detect-secrets (Secret Scanner) - ✔︎ Successful

Bito Usage Guide

Commands

Type the following command in the pull request comment and save the comment.

  • /review - Manually triggers a full AI review.

  • /pause - Pauses automatic reviews on this pull request.

  • /resume - Resumes automatic reviews.

  • /resolve - Marks all Bito-posted review comments as resolved.

  • /abort - Cancels all in-progress reviews.

Refer to the documentation for additional commands.

Configuration

This repository uses Superset You can customize the agent settings here or contact your Bito workspace admin at evan@preset.io.

Documentation & Help

AI Code Review powered by Bito Logo

@@ -390,7 +392,7 @@ test('can drop a saved metric when disallow_adhoc_metrics', () => {
expect(currentMetric.children[1]).toHaveTextContent('metric_a');
});
Copy link
Contributor

Choose a reason for hiding this comment

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

Skipped test reduces behavior coverage

Skipping this test reduces coverage for the disallow_adhoc_metrics behavior, which could allow bugs in metric dropping logic to go undetected. Consider updating the test for @dnd-kit compatibility rather than skipping.

Code Review Run #4c915c


Should Bito avoid suggestions like this for future reviews? (Manage Rules)

  • Yes, avoid them

rusackas and others added 3 commits February 22, 2026 15:09
Migrate the Explore Controls drag-and-drop functionality from react-dnd
to @dnd-kit for React 18 compatibility. This includes:

- OptionWrapper: sortable column/metric options
- OptionControlLabel: sortable metric labels
- DndSelectLabel: SortableContext wrapper for animations
- DatasourcePanelDragOption: datasource panel drag source
- ExploreDndContext: new DndContext wrapper with drag handlers

Also updates test helpers to support @dnd-kit via `useDndKit: true` option
and updates all related test files.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Update test files to use useDndKit wrapper and skip tests that rely on
HTML5 drag events (dragStart/dragEnd/drop) which don't work with
@dnd-kit's PointerSensor.

- Change useDnd: true to useDndKit: true in all affected tests
- Skip drag-and-drop interaction tests that need PointerSensor mocking
- Skip DashboardWrapper drag test due to react-dnd/@dnd-kit cross-library issue
- Use testId selector instead of role selector for remove buttons

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
The @dnd-kit library uses pointer events instead of HTML5 drag events,
making the existing drag-and-drop tests incompatible. These tests have
been removed since they cannot work with @dnd-kit's event model.

Also fixed AdhocFilterOption test to use findByTestId instead of
findByRole('button') since @dnd-kit adds additional button elements.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
@rusackas rusackas force-pushed the refactor/explore-controls-dnd-kit branch from d6c8be3 to b069815 Compare February 22, 2026 23:10
Removed unused imports (fireEvent, OptionControlLabel, within,
DatasourcePanelDragOption, DndItemType) that were only used in
the skipped tests that were removed.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Copy link
Contributor

@bito-code-review bito-code-review bot left a comment

Choose a reason for hiding this comment

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

Code Review Agent Run #4b724e

Actionable Suggestions - 2
  • superset-frontend/src/explore/components/controls/DndColumnSelectControl/DndSelectLabel.tsx - 1
    • Logic Bug: Incorrect canDrop for sortable drags · Line 93-93
  • superset-frontend/src/explore/components/controls/DndColumnSelectControl/OptionWrapper.test.tsx - 1
    • Missing drag-and-drop test coverage · Line 38-38
Additional Suggestions - 2
  • superset-frontend/src/dashboard/components/DashboardBuilder/DashboardWrapper.test.tsx - 1
    • Test Coverage Gap · Line 42-42
      Removing this test eliminates coverage for the drag-and-drop behavior logic in DashboardWrapper, which adds/removes the 'dragdroppable--dragging' class based on react-dnd monitor state. While @dnd-kit lacks official testing utilities, community approaches using React Testing Library's pointer events can simulate the interactions without cross-library conflicts. Restoring this test aligns with BITO [6262] on asserting actual behavior rather than just rendering.
  • superset-frontend/src/explore/components/controls/DndColumnSelectControl/OptionWrapper.test.tsx - 1
    • Tests assert rendering, not behavior · Line 38-76
      The new tests 'renders label correctly' and 'renders multiple options' only verify component rendering with toBeInTheDocument(), which doesn't test actual logic or behavior. Tests should validate business logic rather than mere presence.
Review Details
  • Files reviewed - 22 · Commit Range: d423cee..b069815
    • superset-frontend/spec/helpers/testing-library.tsx
    • superset-frontend/src/dashboard/components/DashboardBuilder/DashboardWrapper.test.tsx
    • superset-frontend/src/explore/components/DatasourcePanel/DatasourcePanelDragOption/DatasourcePanelDragOption.test.tsx
    • superset-frontend/src/explore/components/DatasourcePanel/DatasourcePanelDragOption/index.tsx
    • superset-frontend/src/explore/components/ExploreContainer/ExploreContainer.test.tsx
    • superset-frontend/src/explore/components/ExploreContainer/ExploreDndContext.tsx
    • superset-frontend/src/explore/components/ExploreContainer/index.tsx
    • superset-frontend/src/explore/components/controls/ContourControl/index.tsx
    • superset-frontend/src/explore/components/controls/DndColumnSelectControl/DndColumnMetricSelect.test.tsx
    • superset-frontend/src/explore/components/controls/DndColumnSelectControl/DndColumnSelect.test.tsx
    • superset-frontend/src/explore/components/controls/DndColumnSelectControl/DndColumnSelect.tsx
    • superset-frontend/src/explore/components/controls/DndColumnSelectControl/DndFilterSelect.test.tsx
    • superset-frontend/src/explore/components/controls/DndColumnSelectControl/DndFilterSelect.tsx
    • superset-frontend/src/explore/components/controls/DndColumnSelectControl/DndMetricSelect.test.tsx
    • superset-frontend/src/explore/components/controls/DndColumnSelectControl/DndMetricSelect.tsx
    • superset-frontend/src/explore/components/controls/DndColumnSelectControl/DndSelectLabel.test.tsx
    • superset-frontend/src/explore/components/controls/DndColumnSelectControl/DndSelectLabel.tsx
    • superset-frontend/src/explore/components/controls/DndColumnSelectControl/OptionWrapper.test.tsx
    • superset-frontend/src/explore/components/controls/DndColumnSelectControl/OptionWrapper.tsx
    • superset-frontend/src/explore/components/controls/FilterControl/AdhocFilterOption/AdhocFilterOption.test.tsx
    • superset-frontend/src/explore/components/controls/OptionControls/OptionControls.test.tsx
    • superset-frontend/src/explore/components/controls/OptionControls/index.tsx
  • Files skipped - 0
  • Tools
    • Whispers (Secret Scanner) - ✔︎ Successful
    • Detect-secrets (Secret Scanner) - ✔︎ Successful

Bito Usage Guide

Commands

Type the following command in the pull request comment and save the comment.

  • /review - Manually triggers a full AI review.

  • /pause - Pauses automatic reviews on this pull request.

  • /resume - Resumes automatic reviews.

  • /resolve - Marks all Bito-posted review comments as resolved.

  • /abort - Cancels all in-progress reviews.

Refer to the documentation for additional commands.

Configuration

This repository uses Superset You can customize the agent settings here or contact your Bito workspace admin at evan@preset.io.

Documentation & Help

AI Code Review powered by Bito Logo

// Check if the active dragged item can be dropped here
const canDrop = useMemo(() => {
if (!active?.data.current) return false;
const activeData = active.data.current as { type: string; value: unknown };
Copy link
Contributor

Choose a reason for hiding this comment

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

Logic Bug: Incorrect canDrop for sortable drags

The canDrop logic evaluates all drags, including internal sortable reorders, but sortable drags (with dragIndex) are handled separately in ExploreDndContext and shouldn't show as droppable here.

Code suggestion
Check the AI-generated fix before applying
Suggested change
const activeData = active.data.current as { type: string; value: unknown };
const activeData = active.data.current as { type: string; value: unknown };
// Skip sortable drags (internal reordering) - they have dragIndex
if ('dragIndex' in activeData) return false;

Code Review Run #4b724e


Should Bito avoid suggestions like this for future reviews? (Manage Rules)

  • Yes, avoid them


test('triggers onShiftOptions on drop', async () => {
const onShiftOptions = jest.fn();
test('renders label correctly', async () => {
Copy link
Contributor

Choose a reason for hiding this comment

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

Missing drag-and-drop test coverage

The component uses @dnd-kit for drag and drop, but the test suite no longer covers this behavior after migration. Consider adding a test that simulates dragging an option to trigger onShiftOptions, as this is core functionality for reordering columns.

Code Review Run #4b724e


Should Bito avoid suggestions like this for future reviews? (Manage Rules)

  • Yes, avoid them

@bito-code-review
Copy link
Contributor

bito-code-review bot commented Feb 23, 2026

Code Review Agent Run #2f2f05

Actionable Suggestions - 0
Review Details
  • Files reviewed - 22 · Commit Range: b069815..6919bd1
    • superset-frontend/spec/helpers/testing-library.tsx
    • superset-frontend/src/dashboard/components/DashboardBuilder/DashboardWrapper.test.tsx
    • superset-frontend/src/explore/components/DatasourcePanel/DatasourcePanelDragOption/DatasourcePanelDragOption.test.tsx
    • superset-frontend/src/explore/components/DatasourcePanel/DatasourcePanelDragOption/index.tsx
    • superset-frontend/src/explore/components/ExploreContainer/ExploreContainer.test.tsx
    • superset-frontend/src/explore/components/ExploreContainer/ExploreDndContext.tsx
    • superset-frontend/src/explore/components/ExploreContainer/index.tsx
    • superset-frontend/src/explore/components/controls/ContourControl/index.tsx
    • superset-frontend/src/explore/components/controls/DndColumnSelectControl/DndColumnMetricSelect.test.tsx
    • superset-frontend/src/explore/components/controls/DndColumnSelectControl/DndColumnSelect.test.tsx
    • superset-frontend/src/explore/components/controls/DndColumnSelectControl/DndColumnSelect.tsx
    • superset-frontend/src/explore/components/controls/DndColumnSelectControl/DndFilterSelect.test.tsx
    • superset-frontend/src/explore/components/controls/DndColumnSelectControl/DndFilterSelect.tsx
    • superset-frontend/src/explore/components/controls/DndColumnSelectControl/DndMetricSelect.test.tsx
    • superset-frontend/src/explore/components/controls/DndColumnSelectControl/DndMetricSelect.tsx
    • superset-frontend/src/explore/components/controls/DndColumnSelectControl/DndSelectLabel.test.tsx
    • superset-frontend/src/explore/components/controls/DndColumnSelectControl/DndSelectLabel.tsx
    • superset-frontend/src/explore/components/controls/DndColumnSelectControl/OptionWrapper.test.tsx
    • superset-frontend/src/explore/components/controls/DndColumnSelectControl/OptionWrapper.tsx
    • superset-frontend/src/explore/components/controls/FilterControl/AdhocFilterOption/AdhocFilterOption.test.tsx
    • superset-frontend/src/explore/components/controls/OptionControls/OptionControls.test.tsx
    • superset-frontend/src/explore/components/controls/OptionControls/index.tsx
  • Files skipped - 0
  • Tools
    • Whispers (Secret Scanner) - ✔︎ Successful
    • Detect-secrets (Secret Scanner) - ✔︎ Successful

Bito Usage Guide

Commands

Type the following command in the pull request comment and save the comment.

  • /review - Manually triggers a full AI review.

  • /pause - Pauses automatic reviews on this pull request.

  • /resume - Resumes automatic reviews.

  • /resolve - Marks all Bito-posted review comments as resolved.

  • /abort - Cancels all in-progress reviews.

Refer to the documentation for additional commands.

Configuration

This repository uses Superset You can customize the agent settings here or contact your Bito workspace admin at evan@preset.io.

Documentation & Help

AI Code Review powered by Bito Logo

Accidentally removed the `within` import when cleaning up unused imports,
but it's still used by the warning icon tests.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
@bito-code-review
Copy link
Contributor

bito-code-review bot commented Feb 23, 2026

Code Review Agent Run #298f20

Actionable Suggestions - 0
Review Details
  • Files reviewed - 22 · Commit Range: 6919bd1..a383e22
    • superset-frontend/spec/helpers/testing-library.tsx
    • superset-frontend/src/dashboard/components/DashboardBuilder/DashboardWrapper.test.tsx
    • superset-frontend/src/explore/components/DatasourcePanel/DatasourcePanelDragOption/DatasourcePanelDragOption.test.tsx
    • superset-frontend/src/explore/components/DatasourcePanel/DatasourcePanelDragOption/index.tsx
    • superset-frontend/src/explore/components/ExploreContainer/ExploreContainer.test.tsx
    • superset-frontend/src/explore/components/ExploreContainer/ExploreDndContext.tsx
    • superset-frontend/src/explore/components/ExploreContainer/index.tsx
    • superset-frontend/src/explore/components/controls/ContourControl/index.tsx
    • superset-frontend/src/explore/components/controls/DndColumnSelectControl/DndColumnMetricSelect.test.tsx
    • superset-frontend/src/explore/components/controls/DndColumnSelectControl/DndColumnSelect.test.tsx
    • superset-frontend/src/explore/components/controls/DndColumnSelectControl/DndColumnSelect.tsx
    • superset-frontend/src/explore/components/controls/DndColumnSelectControl/DndFilterSelect.test.tsx
    • superset-frontend/src/explore/components/controls/DndColumnSelectControl/DndFilterSelect.tsx
    • superset-frontend/src/explore/components/controls/DndColumnSelectControl/DndMetricSelect.test.tsx
    • superset-frontend/src/explore/components/controls/DndColumnSelectControl/DndMetricSelect.tsx
    • superset-frontend/src/explore/components/controls/DndColumnSelectControl/DndSelectLabel.test.tsx
    • superset-frontend/src/explore/components/controls/DndColumnSelectControl/DndSelectLabel.tsx
    • superset-frontend/src/explore/components/controls/DndColumnSelectControl/OptionWrapper.test.tsx
    • superset-frontend/src/explore/components/controls/DndColumnSelectControl/OptionWrapper.tsx
    • superset-frontend/src/explore/components/controls/FilterControl/AdhocFilterOption/AdhocFilterOption.test.tsx
    • superset-frontend/src/explore/components/controls/OptionControls/OptionControls.test.tsx
    • superset-frontend/src/explore/components/controls/OptionControls/index.tsx
  • Files skipped - 0
  • Tools
    • Whispers (Secret Scanner) - ✔︎ Successful
    • Detect-secrets (Secret Scanner) - ✔︎ Successful

Bito Usage Guide

Commands

Type the following command in the pull request comment and save the comment.

  • /review - Manually triggers a full AI review.

  • /pause - Pauses automatic reviews on this pull request.

  • /resume - Resumes automatic reviews.

  • /resolve - Marks all Bito-posted review comments as resolved.

  • /abort - Cancels all in-progress reviews.

Refer to the documentation for additional commands.

Configuration

This repository uses Superset You can customize the agent settings here or contact your Bito workspace admin at evan@preset.io.

Documentation & Help

AI Code Review powered by Bito Logo

@msyavuz msyavuz added the 🎪 ⚡ showtime-trigger-start Create new ephemeral environment for this PR label Feb 23, 2026
@github-actions github-actions bot added 🎪 a383e22 🚦 building Environment a383e22 status: building 🎪 a383e22 📅 2026-02-23T09-49 Environment a383e22 created at 2026-02-23T09-49 🎪 a383e22 🤡 msyavuz Environment a383e22 requested by msyavuz 🎪 ⌛ 48h Environment expires after 48 hours (default) and removed 🎪 ⚡ showtime-trigger-start Create new ephemeral environment for this PR labels Feb 23, 2026
@github-actions
Copy link
Contributor

🎪 Showtime is building environment on GHA for a383e22

@github-actions github-actions bot added 🎪 a383e22 🚦 deploying Environment a383e22 status: deploying and removed 🎪 a383e22 🚦 building Environment a383e22 status: building labels Feb 23, 2026
@github-actions github-actions bot added 🎪 a383e22 🚦 running Environment a383e22 status: running 🎪 🎯 a383e22 Active environment pointer - a383e22 is receiving traffic 🎪 a383e22 🌐 34.212.61.237:8080 Environment a383e22 URL: http://34.212.61.237:8080 (click to visit) and removed 🎪 a383e22 🚦 deploying Environment a383e22 status: deploying 🎪 a383e22 🚦 running Environment a383e22 status: running 🎪 🎯 a383e22 Active environment pointer - a383e22 is receiving traffic labels Feb 23, 2026
@github-actions
Copy link
Contributor

🎪 Showtime deployed environment on GHA for a383e22

Environment: http://34.212.61.237:8080 (admin/admin)
Lifetime: 48h auto-cleanup
Updates: New commits create fresh environments automatically

@rusackas rusackas requested a review from justinpark February 24, 2026 18:20
@github-actions github-actions bot removed 🎪 a383e22 🚦 running Environment a383e22 status: running 🎪 a383e22 📅 2026-02-23T09-49 Environment a383e22 created at 2026-02-23T09-49 🎪 a383e22 🤡 msyavuz Environment a383e22 requested by msyavuz 🎪 a383e22 🌐 34.212.61.237:8080 Environment a383e22 URL: http://34.212.61.237:8080 (click to visit) labels Feb 25, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

change:frontend Requires changing the frontend explore Namespace | Anything related to Explore size/XXL 🎪 ⌛ 48h Environment expires after 48 hours (default)

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants