You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@superset.apache.org by ru...@apache.org on 2026/04/19 19:27:44 UTC

(superset) branch chore/fc-02-legacy-plugin-components updated (62d9ee732ba -> 801a58ef9f8)

This is an automated email from the ASF dual-hosted git repository.

rusackas pushed a change to branch chore/fc-02-legacy-plugin-components
in repository https://gitbox.apache.org/repos/asf/superset.git


    from 62d9ee732ba revert: restore map-box class components (plugin deleted on master)
     add 6ba90968701 fix(explore): handle boolean false values correctly in control rendering (#39172)
     add 4f695e1b4d2 fix(filterReports): _generate_native_filter() crashes on null/empty filterValues (#38954)
     add 3a3a6536b7e fix(explore): Unnecessary scroll bars appearing on charts in Explore (#39160)
     add 587fe4af632 fix(reports): propagate PlaywrightTimeout so execution transitions to ERROR state (#39176)
     add 140f0001f21 fix(sqllab): demote "Save as new" button from primary to secondary (#39179)
     add a64609f4f39 fix(explore): add left-indentation to control panel hierarchy (#39177)
     add 36de05fe366 fix(plugin-chart-handlebars): improve CSS sanitization tooltip and hide when not needed (#39180)
     add ed659958f31 fix(sqllab): use monospace font for SQL in database error messages (#39181)
     add 62302ad8c3a perf(webpack): reduce watch mode memory usage and fix docker-compose-light env (#39183)
     add 4c2dd634643 fix(sqllab): Update style for code viewer container (#39075)
     add 2e80f2a473a fix: add template_processor so Jinja gets rendered before SQLGlot parse (#39207)
     add d5017e60c34 fix(sqllab): fix table navigator schema list, pin/unpin UX, copy actions, icons, and toolbar colors (#39173)
     add b8b2bdedf9b fix(ace-editor): style bracket matching to blend with theme (#39182)
     add 63cceb6a799 refactor(plugins): replace react-icons with antd icons, remove 83MB dependency (#39184)
     add d63308ca372 fix(frontend): fix loading spinner positioning in Save modal and filters panel (#39205)
     add 4e0890ee1fb feat(api): Add filter_dashboard_id parameter to apply dashboard filters to chart/data endpoint (#38638)
     add 1bde6f3bfda fix(mcp): resolve null fields in list_datasets, list_databases, and save_sql_query (#39206)
     add bad5a35fce0 fix(explore): constrain Edit Dataset modal height to prevent footer cutoff (#39211)
     add d915e4f3ff7 fix(tags): fix Bulk tag modal dropdown clipping and stale tag cache (#39210)
     add c49641538d5 feat: modernize deck.gl and map plugins with MapLibre/Mapbox dual renderer (#38035)
     add 5263abdc60e fix(AlertsReports): untie filters from alerts reports tabs flag (#38722)
     add 6649f35a0d6 fix(reports): escape SQL LIKE wildcards in find_by_extra_metadata (#38738)
     add 5815665cc62 feat: role/user CRUD events and login/logout tracking in the action log (#39121)
     add 68067d7f44f fix(mcp): handle OAuth-authenticated databases in execute_sql (#39166)
     add c7955a38ef7 fix: Drill to Detail for Embedded (#39214)
     add f49310b8ff8 fix(sql-lab): apply access check in SqlExecutionResultsCommand (#38952)
     add e17cf3c8086 fix(mcp): wire up compact schema serialization for search_tools results (#39229)
     add 680cef0ee07 fix(mcp): strip json_metadata and position_json from get_dashboard_info response (#39101)
     add e39dd1afce3 fix: implement native browser fullscreen for dashboard charts (#38819)
     add 8bcc90c7664 fix(dashboard): Vertical filter bar gradient is extending past the filter bar area (#39204)
     add aba7e6dae46 fix(table): cross-filtering breaks after renaming column labels via Custom SQL (#38858)
     add b1d69f5b398 docs(api): add Theme API endpoints to OpenAPI spec (#37943)
     add f632d2474b3 chore(deps-dev): bump webpack from 5.105.4 to 5.106.0 in /superset-frontend (#39268)
     add 4583ef93a47 chore(deps-dev): bump prettier from 3.8.1 to 3.8.2 in /superset-frontend (#39263)
     add 1ad76e847e7 chore(deps-dev): bump prettier from 3.8.1 to 3.8.2 in /superset-websocket (#39260)
     add b65396ccd4e chore(deps-dev): bump @types/node from 25.5.2 to 25.6.0 in /superset-websocket (#39262)
     add f1cf274751d chore(deps): bump axios from 1.13.5 to 1.15.0 in /docs (#39259)
     add 2ff50667e77 chore(deps): bump axios from 1.13.5 to 1.15.0 in /superset-frontend (#39258)
     add 69c8eef78e9 fix(ag-grid): jpeg export of ag-grid tables (#38781)
     add e9911fbac4a fix(echarts): prevent tooltip crash during dashboard auto-refresh (#39277)
     add 450701ecec3 fix(SqlLab): improve SQL diff modal — responsive width, padding, tabs, and copy button (#39246)
     add 0aa8cace1b6 fix(dataset-editor): fix SQL expression editor extra spaces and height expansion (#39248)
     add 98146251c4f fix(tests): improve ShareMenuItems test isolation to fix intermittent suite failure (#39280)
     add 7a243d329ef fix(dashboard): allow filter list to scroll in filter config modal sidebar (#39203)
     add eea3557f612 fix(dashboard): hide "Filters out of scope" section when empty (#39201)
     add de40b58e105 fix(tests): fix async teardown leak in FiltersConfigModal.test.tsx (#39281)
     add fa1f12a0b5f fix(explore): replace TableView with virtualized GridTable, add row limit controls, restore sample filters (#39212)
     add de98fdc37ba test(heatmap): restore buildQuery coverage on master (#39329)
     add c971ea3ec64 fix(heatmap): skip orderby for value-based axis sorts (#39290)
     add da371217ef6 fix: revert and restore server-side sorting for value axis sorts (#39331)
     add 1462ac92823 fix(dashboard): Ensure screenshot downloads always generate fresh images/pdfs (#38880)
     add 0f417f00408 fix(dashboard): preserve dynamic group by column order (#39333)
     add 66a9e2e16ed fix(explore): Prevent error toast when navigating away from Explore page (#39065)
     add 5138aa2c114 fix(select): select all button cutoff (#39005)
     add c2a35e2eeae fix(popup): Dropdown popup width doesn't match input width when tags collapse in oneLine mode (#39136)
     add 499e27ea54e fix(native-filter): infinite filter loading by deps (#39175)
     add f836c3eccd5 chore(deps-dev): bump typescript-eslint from 8.58.0 to 8.58.2 in /superset-websocket (#39337)
     add fa97d0357f3 chore(deps-dev): bump globals from 17.4.0 to 17.5.0 in /superset-websocket (#39310)
     add 6287a07912d chore(deps): bump anthropics/claude-code-action from 1.0.89 to 1.0.93 (#39318)
     add 002d8ad1e41 chore(deps-dev): bump @types/node from 25.5.0 to 25.6.0 in /superset-frontend (#39265)
     add 3e25f02da98 test(sqllab): migrate Cypress E2E tests to Playwright (#39071)
     add 86575e129b7 fix(native-filters): prevent infinite recursion in filter scope tree traversal (#39355)
     add ffcc6e8b635 fix(MCP): fix MCP logs (#39159)
     add 411f7698964 feat(filters): Adding empty state for filter modal (#38909)
     add b76080e2917 feat(security): add granular export controls - Phase 2 + 3 (#38581)
     add 4b88fc57b46 chore(deps-dev): bump prettier from 3.8.2 to 3.8.3 in /superset-websocket (#39358)
     add 8d9b5bd479a chore(deps): bump follow-redirects from 1.15.11 to 1.16.0 in /docs (#39352)
     add ddcb9be9a77 fix(sqllab): show schema refresh icon only on hover (#39367)
     add 84f7b4a9731 fix: `do_ping` takes a connection, not engine (#39013)
     add 724f1484b92 chore(mcp): update CLAUDE.md to reflect current codebase patterns (#39348)
     add b2bd2329bc9 chore(deps-dev): bump wait-on from 9.0.4 to 9.0.5 in /superset-frontend (#39322)
     add a6156676c82 chore(deps): bump fuse.js from 7.1.0 to 7.3.0 in /superset-frontend (#39146)
     add 5661fc91285 chore(deps): bump anthropics/claude-code-action from 1.0.93 to 1.0.96 + temporarily stop Dependabot PR for claude-code-action due to high release frequency but low usage(#39360)
     add 0d91f5e9823 chore(deps): bump markdown-to-jsx from 9.7.13 to 9.7.15 in /superset-frontend (#39217)
     add 18d6feb4994 feat(mcp): add create_virtual_dataset tool to save SQL queries as datasets (#39279)
     add 44e77fdf2b7 fix(explore): dispatch onChange immediately on NumberControl stepper arrow clicks (#39220)
     add c2d96e0dce1 fix(table): fix cross-filter not clearing on second click in Interactive Table (#39253)
     add c3a0f2749b5 fix(dashboard): apply dynamic groupby display controls to scoped charts (#39356)
     add 8471e823426 fix(css-templates): add missing height to CSS editor in CssTemplateModal (#39221)
     add b3e88db87e4 fix(table): use column label instead of SQL expression for orderby in downloads (#39332)
     add 998b9e387b4 fix(ListView): empty state not filling available width (#39387)
     add b11d4f3ef09 fix(i18n): typo in fr language (#36982)
     add 388596e4fe1 chore(deps): bump baseline-browser-mapping from 2.10.13 to 2.10.16 in /docs (#39148)
     add 45d5501aa7f fix(documentation): FAQ grammar for SQL query wording (#38923)
     add c1a1f2e7e77 docs: add Hifadih Business & Technology to In the Wild (#38824)
     add eaccb2e471b fix(EmptyState): prevent SVG cropping in empty state images (#37287)
     add e0dcb2908db chore(deps): bump swagger-ui-react from 5.32.1 to 5.32.4 in /docs (#39377)
     add e542e9f8403 chore(deps): bump actions/cache from 5.0.4 to 5.0.5 (#39368)
     add f4a6ea0fde3 chore(deps): bump actions/github-script from 8.0.0 to 9.0.0 (#39267)
     add e11a50bedfc chore(deps): bump @docusaurus/faster from 3.9.2 to 3.10.0 in /docs (#39195)
     add 61c45e3dd87 chore(deps-dev): bump @docusaurus/module-type-aliases from 3.9.2 to 3.10.0 in /docs (#39194)
     add 76a209663d5 chore(deps-dev): bump baseline-browser-mapping from 2.10.13 to 2.10.16 in /superset-frontend (#39150)
     add 05227e8a804 chore(deps): bump caniuse-lite from 1.0.30001786 to 1.0.30001788 in /docs (#39376)
     add 84af6c9f297 chore(deps-dev): bump @docusaurus/tsconfig from 3.9.2 to 3.10.0 in /docs (#39189)
     add 838ee870d02 fix(mcp): update instructions to use correct request wrapper and identifier params (#39392)
     add e7b9fb277eb fix(mcp): always push fresh app context per tool call to prevent g.user race (#39385)
     add 0b51e9cd5e3 fix(sqllab): format_sql to apply db dialect by database_id (#39393)
     add 0b419a07f54 fix: add comments to SQL clause validation (#39167)
     add 7c76fd3d81a fix(SelectFilter): auto clear search input (#39157)
     add cd7dddb5a1a chore(deps): bump baseline-browser-mapping from 2.10.16 to 2.10.19 in /docs (#39373)
     add 735dd5dbae6 chore(deps): bump @swc/core from 1.15.21 to 1.15.24 in /docs (#39133)
     add 69f062b804a feat(mcp): add a preview flow to mcp chart updates (#39383)
     add e5820b6b2b1 chore: Bump core packages to 0.1.0 RC2 (#39406)
     add 8ce234371b9 test(core): restore 100% TS coverage for core-packages-ts (copy utility) (#39384)
     add f850c6b1b18 fix(parallel-coordinates): improve dark mode visibility for labels, axis text, and data lines (#39415)
     add c2897312123 fix(mcp): prevent LLM from creating new dashboard instead of adding chart to existing one (#39353)
     add e5b3a9c25db fix(mcp): replace inputSchema with parameters_hint in search_tools results by default (#39411)
     add 2e0d482ccf5 fix(mcp): support explicit query_mode in TableChartConfig (#39412)
     add db7a2bd6822 chore(deps): bump protocol-buffers-schema from 3.6.0 to 3.6.1 in /superset-frontend (#39418)
     add 4bdc8d4c681 fix(sqllab): Relocate schema display on table preview (#39420)
     add be680408c95 fix(sqllab): enhance table explore tree with schema pinning, column sorting, and table schema refresh (#39396)
     add 690a411cf32 chore(ci): require PMC review for CI-executed scripts (#39462)
     add 3d85e8e23b0 chore: publish wheels (#36746)
     add 4ae16cb1408 chore(deps-dev): bump typescript-eslint from 8.58.0 to 8.58.2 in /docs (#39426)
     add f0ef9f5e9c7 chore(deps-dev): bump webpack from 5.105.4 to 5.106.2 in /docs (#39401)
     add cd6ce881a57 chore(deps): bump dompurify from 3.3.3 to 3.4.0 in /docs (#39398)
     add a7310b1fce0 chore(deps): bump @docusaurus/core from 3.9.2 to 3.10.0 in /docs (#39188)
     add e535dce0302 chore(deps-dev): bump prettier from 3.8.1 to 3.8.3 in /docs (#39400)
     add ce5b2aa4243 chore(deps): bump actions/upload-artifact from 7.0.0 to 7.0.1 (#39320)
     add a9487cbc84a chore(deps): bump aws-actions/amazon-ecr-login from 2.1.2 to 2.1.3 (#39403)
     add 03725d1aaa5 chore(deps): bump dompurify from 3.3.3 to 3.4.0 in /superset-frontend (#39399)
     add fca64de8e94 chore(deps-dev): bump prettier from 3.8.2 to 3.8.3 in /superset-frontend (#39372)
     add 55625c911f6 chore(deps-dev): bump timezone-mock from 1.4.0 to 1.4.2 in /superset-frontend (#38049)
     add fbd062165e2 chore(deps): bump @swc/core from 1.15.24 to 1.15.26 in /docs (#39374)
     add 801a58ef9f8 Merge branch 'master' into chore/fc-02-legacy-plugin-components

No new revisions were added by this update.

Summary of changes:
 .github/CODEOWNERS                                 |    5 +
 .github/dependabot.yml                             |    4 +
 .github/labeler.yml                                |    5 +
 .github/workflows/check_db_migration_confict.yml   |    2 +-
 .github/workflows/claude.yml                       |    4 +-
 .github/workflows/ephemeral-env-pr-close.yml       |    4 +-
 .github/workflows/ephemeral-env.yml                |   16 +-
 .github/workflows/no-hold-label.yml                |    2 +-
 .github/workflows/pre-commit.yml                   |    2 +-
 .github/workflows/release.yml                      |    4 +-
 .github/workflows/showtime-trigger.yml             |    2 +-
 .github/workflows/superset-e2e.yml                 |    4 +-
 .github/workflows/superset-extensions-cli.yml      |    2 +-
 .github/workflows/superset-frontend.yml            |    4 +-
 .github/workflows/superset-helm-release.yml        |    2 +-
 .github/workflows/superset-playwright.yml          |    2 +-
 .../workflows/superset-python-integrationtest.yml  |    2 +-
 .github/workflows/supersetbot.yml                  |    2 +-
 RELEASING/README.md                                |    2 +-
 RESOURCES/INTHEWILD.yaml                           |    5 +
 UPDATING.md                                        |   14 +
 docker-compose-light.yml                           |    9 +
 docker/docker-bootstrap.sh                         |    2 +-
 docs/developer_docs/api.mdx                        |   34 +-
 docs/docs/faq.mdx                                  |    2 +-
 docs/docs/security/granular-export-controls.mdx    |   78 +
 docs/package.json                                  |   37 +-
 docs/scripts/fix-openapi-spec.py                   |   25 +
 docs/static/img/logos/hifadih.png                  |  Bin 0 -> 18383 bytes
 docs/static/resources/openapi.json                 | 8663 ++++++++++++++------
 docs/versioned_docs/version-6.0.0/faq.mdx          |    2 +-
 docs/yarn.lock                                     | 2028 +++--
 pyproject.toml                                     |    3 +-
 requirements/base.txt                              |    2 +-
 requirements/development.txt                       |    2 +-
 superset-core/pyproject.toml                       |    6 +-
 superset-extensions-cli/pyproject.toml             |    4 +-
 .../e2e/sqllab/_skip.sourcePanel.index.test.js     |   73 -
 .../cypress-base/cypress/e2e/sqllab/query.test.ts  |  192 -
 .../cypress/e2e/sqllab/sqllab.helper.js            |   41 -
 .../cypress-base/cypress/e2e/sqllab/tabs.test.ts   |  113 -
 superset-frontend/package-lock.json                | 1120 ++-
 superset-frontend/package.json                     |   18 +-
 .../packages/superset-core/package.json            |    6 +-
 .../src/components/ControlSubSectionHeader.tsx     |    4 +
 .../packages/superset-ui-core/package.json         |    6 +-
 .../superset-ui-core/src/chart/types/VizType.ts    |    1 +
 .../src/components/AsyncAceEditor/index.tsx        |    5 +
 .../src/components/AsyncEsmComponent/index.tsx     |   22 +-
 .../CodeSyntaxHighlighter/index.test.tsx           |   42 +-
 .../src/components/CodeSyntaxHighlighter/index.tsx |  107 +-
 .../components/EmptyState/svgs/empty-dashboard.svg |  Bin 1631 -> 3078 bytes
 .../src/components/EmptyState/svgs/empty.svg       |  Bin 1944 -> 2690 bytes
 .../src/components/EmptyState/svgs/star-circle.svg |  Bin 2051 -> 2661 bytes
 .../src/components/Icons/AntdEnhanced.tsx          |    2 +
 .../src/components/Select/Select.test.tsx          |   74 +-
 .../src/components/Select/Select.tsx               |   29 +-
 .../src/components/Select/styles.tsx               |   10 +-
 .../ThemedAgGridReact/ThemedAgGridReact.test.tsx   |   45 +-
 .../src/components/ThemedAgGridReact/index.tsx     |   50 +-
 .../superset-ui-core/src/components/index.ts       |    1 +
 .../superset-ui-core}/src/utils/copy.ts            |    5 +-
 .../packages/superset-ui-core/src/utils/index.ts   |    1 +
 .../test/time-comparison/getTimeOffset.test.ts     |   42 +-
 .../test/time-comparison/parseDttmToDate.test.ts   |  114 +-
 .../superset-ui-core/test/utils/copy.test.ts       |  210 +
 superset-frontend/playwright.config.ts             |   17 +
 .../playwright/components/core/AgGrid.ts           |   85 +
 .../components/core/EditableTabs.ts}               |   49 +-
 .../playwright/components/core/Modal.ts            |    4 +-
 .../components/core/Popover.ts}                    |   58 +-
 .../playwright/components/core/Select.ts           |    3 +-
 .../playwright/components/core/Tabs.ts             |   55 +-
 .../playwright/components/core/index.ts            |    3 +
 .../components/modals/EditDatasetModal.ts          |    7 +-
 .../components/modals/SaveDatasetModal.ts}         |   33 +-
 .../components/modals/SaveQueryModal.ts}           |   30 +-
 .../playwright/components/modals/index.ts          |    2 +
 .../playwright/helpers/api/assertions.ts           |   16 +
 .../helpers/api/savedQuery.ts}                     |   38 +-
 .../playwright/helpers/fixtures/testAssets.ts      |   25 +-
 superset-frontend/playwright/pages/AuthPage.ts     |    4 +-
 superset-frontend/playwright/pages/SqlLabPage.ts   |  371 +
 .../playwright/tests/auth/login.spec.ts            |   37 +-
 .../playwright/tests/sqllab/sqllab.spec.ts         |  315 +
 superset-frontend/playwright/utils/constants.ts    |   16 +
 superset-frontend/playwright/utils/urls.ts         |    1 +
 .../legacy-plugin-chart-map-box/CHANGELOG.md       |   55 -
 .../plugins/legacy-plugin-chart-map-box/README.md  |   52 -
 .../legacy-plugin-chart-map-box/src/MapBox.tsx     |  243 -
 .../src/ScatterPlotGlowOverlay.tsx                 |  425 -
 .../src/stories/MapBox.stories.tsx                 |  107 -
 .../src/transformProps.ts                          |  162 -
 .../test/MapBox.test.tsx                           |  381 -
 .../legacy-plugin-chart-map-box/test/tsconfig.json |    9 -
 .../test/utils/roundDecimal.test.ts                |   28 -
 .../legacy-plugin-chart-map-box/tsconfig.json      |   25 -
 .../types/external.d.ts                            |  101 -
 .../src/ParallelCoordinates.ts                     |   28 +-
 .../src/ReactParallelCoordinates.tsx               |    4 +
 .../src/transformProps.ts                          |   10 +-
 .../legacy-preset-chart-deckgl/CHANGELOG.md        |   89 -
 .../plugins/legacy-preset-chart-deckgl/README.md   |   57 -
 .../test/utils/colors.test.ts                      |   25 -
 .../test/utils/getPointsFromPolygon.test.ts        |   56 -
 .../legacy-preset-chart-deckgl/types/external.d.ts |   71 -
 .../plugins/legacy-preset-chart-nvd3/package.json  |    2 +-
 .../src/AgGridTable/index.tsx                      |   41 +-
 .../src/AgGridTableChart.tsx                       |   89 +-
 .../plugin-chart-ag-grid-table/src/buildQuery.ts   |   11 +-
 .../src/utils/getCellClass.ts                      |    4 -
 .../src/utils/getCrossFilterDataMask.ts            |   49 +
 .../src/utils/reconcileColumnState.test.ts         |   86 +
 .../src/utils/reconcileColumnState.ts              |   83 +
 .../test/buildQuery.test.ts                        |   21 +-
 .../plugin-chart-echarts/src/components/Echart.tsx |   18 +-
 .../plugin-chart-echarts/src/utils/tooltip.ts      |    3 +-
 .../test/Heatmap/buildQuery.test.ts                |   95 +-
 .../src/plugin/controls/style.tsx                  |   19 +-
 .../plugins/plugin-chart-pivot-table/package.json  |    3 +-
 .../src/PivotTableChart.tsx                        |   48 +-
 .../src/react-pivottable/TableRenderers.tsx        |   17 +-
 .../package.json                                   |   19 +-
 .../src/MapLibre.css}                              |    2 +-
 .../src/MapLibre.tsx                               |  216 +
 .../src/buildQuery.ts                              |   90 +
 .../src/components/CanvasOverlay.tsx               |  121 +
 .../src/components/ScatterPlotOverlay.tsx          |  400 +
 .../src/controlPanel.ts                            |  126 +-
 .../src/images/MapBox-dark.jpg                     |  Bin
 .../src/images/MapBox.jpg                          |  Bin
 .../src/images/MapBox2-dark.jpg                    |  Bin
 .../src/images/MapBox2.jpg                         |  Bin
 .../src/images/thumbnail-dark.png                  |  Bin
 .../src/images/thumbnail.png                       |  Bin
 .../src/images/thumbnailLarge.png                  |  Bin
 .../src/index.ts                                   |   11 +-
 .../src/stories/PointClusterMap.stories.tsx        |  176 +
 .../src/stories/data.ts                            |    0
 .../src/transformProps.ts                          |  292 +
 .../src/utils/geo.ts                               |    0
 .../src/utils/luminanceFromRGB.ts                  |    0
 .../src/utils/mapbox.ts}                           |   18 +-
 .../src/utils/roundDecimal.ts                      |    0
 .../test/MapLibre.test.tsx                         |  262 +
 .../test/ScatterPlotOverlay.test.tsx}              |   88 +-
 .../test/controlPanel.test.ts                      |    0
 .../test/transformProps.test.ts                    |   88 +-
 .../tsconfig.json                                  |    5 -
 .../types/external.d.ts                            |    2 +-
 .../plugins/plugin-chart-table/package.json        |    1 -
 .../plugins/plugin-chart-table/src/TableChart.tsx  |   41 +-
 .../plugin-chart-table/src/transformProps.ts       |   16 +
 .../plugins/plugin-chart-table/src/types.ts        |    4 +
 .../plugin-chart-table/test/TableChart.test.tsx    |  334 +
 .../package.json                                   |   27 +-
 .../src/CategoricalDeckGLContainer.tsx             |   17 +-
 .../src/DeckGLContainer.tsx                        |  138 +-
 .../src/Multi/Multi.test.tsx                       |    2 +-
 .../src/Multi/Multi.tsx                            |   14 +-
 .../src/Multi/controlPanel.test.ts                 |    0
 .../src/Multi/controlPanel.ts                      |   10 +-
 .../src/Multi/images/example-dark.png              |  Bin
 .../src/Multi/images/example.png                   |  Bin
 .../src/Multi/images/thumbnail-dark.png            |  Bin
 .../src/Multi/images/thumbnail.png                 |  Bin
 .../src/Multi/images/thumbnailLarge.png            |  Bin
 .../src/Multi/index.ts                             |    0
 .../src/TooltipRow.tsx                             |    0
 .../src/components/DeckGLOverlayMapLibre.tsx}      |   18 +-
 .../src/components/DeckGLOverlayMapbox.tsx}        |   18 +-
 .../src/components/Legend.tsx                      |   10 +-
 .../src/components/Tooltip.tsx                     |    8 +-
 .../src/factory.tsx                                |   15 +-
 .../src/index.ts                                   |    0
 .../src/layers/Arc/Arc.tsx                         |    0
 .../src/layers/Arc/buildQuery.ts                   |    0
 .../src/layers/Arc/controlPanel.ts                 |    9 +-
 .../src/layers/Arc/images/example-dark.png         |  Bin
 .../src/layers/Arc/images/example.png              |  Bin
 .../src/layers/Arc/images/thumbnail-dark.png       |  Bin
 .../src/layers/Arc/images/thumbnail.png            |  Bin
 .../src/layers/Arc/images/thumbnailLarge.png       |  Bin
 .../src/layers/Arc/index.ts                        |    0
 .../src/layers/Arc/stories/Arc.stories.tsx         |    7 +-
 .../src/layers/Arc/stories/payload.ts              |    0
 .../src/layers/Arc/transformProps.ts               |    0
 .../src/layers/Contour/Contour.tsx                 |    0
 .../src/layers/Contour/buildQuery.ts               |    0
 .../src/layers/Contour/controlPanel.ts             |    4 +
 .../src/layers/Contour/getSafeCellSize.test.ts     |    0
 .../src/layers/Contour/getSafeCellSize.ts          |    0
 .../src/layers/Contour/images/example-dark.png     |  Bin
 .../src/layers/Contour/images/example.png          |  Bin
 .../src/layers/Contour/images/thumbnail-dark.png   |  Bin
 .../src/layers/Contour/images/thumbnail.png        |  Bin
 .../src/layers/Contour/images/thumbnailLarge.png   |  Bin
 .../src/layers/Contour/index.ts                    |    0
 .../src/layers/Contour/transformProps.ts           |    0
 .../src/layers/Geojson/Geojson.test.ts             |    5 +-
 .../src/layers/Geojson/Geojson.tsx                 |   16 +-
 .../src/layers/Geojson/buildQuery.ts               |   86 +
 .../src/layers/Geojson/controlPanel.ts             |    9 +-
 .../src/layers/Geojson/images/example-dark.png     |  Bin
 .../src/layers/Geojson/images/example.png          |  Bin
 .../src/layers/Geojson/images/thumbnail-dark.png   |  Bin
 .../src/layers/Geojson/images/thumbnail.png        |  Bin
 .../src/layers/Geojson/images/thumbnailLarge.png   |  Bin
 .../src/layers/Geojson/index.ts                    |    5 +-
 .../src/layers/Geojson/transformProps.ts           |   50 +
 .../src/layers/Grid/Grid.tsx                       |    0
 .../src/layers/Grid/buildQuery.ts                  |    0
 .../src/layers/Grid/controlPanel.ts                |    4 +
 .../src/layers/Grid/images/example-dark.png        |  Bin
 .../src/layers/Grid/images/example.png             |  Bin
 .../src/layers/Grid/images/thumbnail-dark.png      |  Bin
 .../src/layers/Grid/images/thumbnail.png           |  Bin
 .../src/layers/Grid/images/thumbnailLarge.png      |  Bin
 .../src/layers/Grid/index.ts                       |    0
 .../src/layers/Grid/stories/Grid.stories.tsx       |    7 +-
 .../src/layers/Grid/stories/payload.ts             |    0
 .../src/layers/Grid/transformProps.ts              |    0
 .../src/layers/Heatmap/Heatmap.tsx                 |    8 +-
 .../src/layers/Heatmap/buildQuery.ts               |    0
 .../src/layers/Heatmap/controlPanel.ts             |    4 +
 .../src/layers/Heatmap/images/example-dark.png     |  Bin
 .../src/layers/Heatmap/images/example.png          |  Bin
 .../src/layers/Heatmap/images/thumbnail-dark.png   |  Bin
 .../src/layers/Heatmap/images/thumbnail.png        |  Bin
 .../src/layers/Heatmap/images/thumbnailLarge.png   |  Bin
 .../src/layers/Heatmap/index.ts                    |    0
 .../src/layers/Heatmap/transformProps.ts           |    0
 .../src/layers/Hex/Hex.tsx                         |    0
 .../src/layers/Hex/buildQuery.ts                   |    0
 .../src/layers/Hex/controlPanel.ts                 |    4 +
 .../src/layers/Hex/images/example-dark.png         |  Bin
 .../src/layers/Hex/images/example.png              |  Bin
 .../src/layers/Hex/images/thumbnail-dark.png       |  Bin
 .../src/layers/Hex/images/thumbnail.png            |  Bin
 .../src/layers/Hex/images/thumbnailLarge.png       |  Bin
 .../src/layers/Hex/index.ts                        |    0
 .../src/layers/Hex/stories/Hex.stories.tsx         |    7 +-
 .../src/layers/Hex/stories/payload.ts              |    0
 .../src/layers/Hex/transformProps.ts               |    0
 .../src/layers/Path/Path.test.tsx                  |    0
 .../src/layers/Path/Path.tsx                       |    2 +-
 .../src/layers/Path/buildQuery.ts                  |    0
 .../src/layers/Path/controlPanel.ts                |    4 +
 .../src/layers/Path/images/example-dark.png        |  Bin
 .../src/layers/Path/images/example.png             |  Bin
 .../src/layers/Path/images/thumbnail-dark.png      |  Bin
 .../src/layers/Path/images/thumbnail.png           |  Bin
 .../src/layers/Path/images/thumbnailLarge.png      |  Bin
 .../src/layers/Path/index.ts                       |    0
 .../src/layers/Path/stories/Path.stories.tsx       |    7 +-
 .../src/layers/Path/stories/payload.ts             |    0
 .../src/layers/Path/transformProps.ts              |    0
 .../src/layers/Polygon/Polygon.test.tsx            |    2 +-
 .../src/layers/Polygon/Polygon.tsx                 |    3 +-
 .../src/layers/Polygon/buildQuery.test.ts          |    0
 .../src/layers/Polygon/buildQuery.ts               |    0
 .../src/layers/Polygon/controlPanel.ts             |   10 +-
 .../src/layers/Polygon/images/example-dark.png     |  Bin
 .../src/layers/Polygon/images/example.png          |  Bin
 .../src/layers/Polygon/images/thumbnail-dark.png   |  Bin
 .../src/layers/Polygon/images/thumbnail.png        |  Bin
 .../src/layers/Polygon/images/thumbnailLarge.png   |  Bin
 .../src/layers/Polygon/index.ts                    |    0
 .../src/layers/Polygon/stories/Polygon.stories.tsx |   10 +-
 .../src/layers/Polygon/stories/geojsonPayload.ts   |    0
 .../src/layers/Polygon/stories/payload.ts          |    0
 .../src/layers/Polygon/transformProps.test.ts      |    0
 .../src/layers/Polygon/transformProps.ts           |    0
 .../src/layers/Scatter/Scatter.tsx                 |    0
 .../src/layers/Scatter/buildQuery.test.ts          |    0
 .../src/layers/Scatter/buildQuery.ts               |    0
 .../src/layers/Scatter/controlPanel.ts             |    9 +-
 .../src/layers/Scatter/images/example-dark.png     |  Bin
 .../src/layers/Scatter/images/example.png          |  Bin
 .../src/layers/Scatter/images/thumbnail-dark.png   |  Bin
 .../src/layers/Scatter/images/thumbnail.png        |  Bin
 .../src/layers/Scatter/images/thumbnailLarge.png   |  Bin
 .../src/layers/Scatter/index.ts                    |    0
 .../src/layers/Scatter/stories/Scatter.stories.tsx |    7 +-
 .../src/layers/Scatter/stories/payload.ts          |    0
 .../src/layers/Scatter/transformProps.test.ts      |    0
 .../src/layers/Scatter/transformProps.ts           |    0
 .../src/layers/Screengrid/Screengrid.tsx           |    9 +-
 .../src/layers/Screengrid/buildQuery.ts            |    0
 .../src/layers/Screengrid/controlPanel.ts          |    9 +-
 .../src/layers/Screengrid/images/example-dark.png  |  Bin
 .../src/layers/Screengrid/images/example.png       |  Bin
 .../layers/Screengrid/images/thumbnail-dark.png    |  Bin
 .../src/layers/Screengrid/images/thumbnail.png     |  Bin
 .../layers/Screengrid/images/thumbnailLarge.png    |  Bin
 .../src/layers/Screengrid/index.ts                 |    0
 .../Screengrid/stories/Screengrid.stories.tsx      |    8 +-
 .../src/layers/Screengrid/stories/payload.ts       |    0
 .../src/layers/Screengrid/transformProps.ts        |    0
 .../src/layers/buildQueryUtils.ts                  |    0
 .../src/layers/common.test.ts                      |    0
 .../src/layers/common.tsx                          |    0
 .../src/layers/index.ts                            |    0
 .../src/layers/spatialUtils.test.ts                |    2 +-
 .../src/layers/spatialUtils.ts                     |   26 +-
 .../src/layers/transformUtils.test.ts              |    0
 .../src/layers/transformUtils.ts                   |    0
 .../src/layers/utils/metricUtils.test.ts           |    0
 .../src/layers/utils/metricUtils.ts                |    0
 .../src/preset.ts                                  |    0
 .../src/transformProps.ts                          |    0
 .../src/types.ts                                   |    0
 .../src/utilities/HandlebarsRenderer.tsx           |    0
 .../src/utilities/Shared_DeckGL.tsx                |   71 +-
 .../src/utilities/TooltipTemplateControl.tsx       |    0
 .../src/utilities/TooltipTemplateEditor.tsx        |    0
 .../src/utilities/controlRegistry.tsx              |    0
 .../src/utilities/controls.ts                      |    0
 .../src/utilities/multiValueUtils.ts               |    0
 .../src/utilities/sharedDndControls.tsx            |    0
 .../src/utilities/tooltipUtils.tsx                 |    0
 .../src/utilities/utils.ts                         |    0
 .../src/utils.test.ts                              |    0
 .../src/utils.ts                                   |   45 -
 .../src/utils/colors.ts                            |    0
 .../src/utils/computeBoundsFromPoints.ts           |    0
 .../src/utils/crossFiltersDataMask.test.ts         |    0
 .../src/utils/crossFiltersDataMask.ts              |    0
 .../src/utils/explore.ts                           |    0
 .../src/utils/fitViewport.ts                       |    0
 .../src/utils/geo.ts                               |    0
 .../src/utils/getPointsFromPolygon.ts              |    0
 .../preset-chart-deckgl/src/utils/mapbox.ts}       |   18 +-
 .../src/utils/safeStringify.ts                     |    0
 .../src/utils/sandbox.ts                           |    0
 .../preset-chart-deckgl}/tsconfig.json             |   13 +-
 .../types/external.d.ts                            |    2 +-
 superset-frontend/scripts/check-custom-rules.js    |    2 +
 .../src/SqlLab/components/ColumnElement/index.tsx  |   12 +-
 .../components/EditorWrapper/useKeywords.test.ts   |   27 +-
 .../SqlLab/components/EditorWrapper/useKeywords.ts |  108 +-
 .../HighlightedSql/HighlightedSql.test.tsx         |   37 +-
 .../src/SqlLab/components/HighlightedSql/index.tsx |   68 +-
 .../SqlLab/components/QueryLimitSelect/index.tsx   |    2 +-
 .../SqlLab/components/ResultSet/ResultSet.test.tsx |  223 +-
 .../src/SqlLab/components/ResultSet/index.tsx      |   86 +-
 .../components/SaveDatasetActionButton/index.tsx   |    4 +-
 .../src/SqlLab/components/SaveQuery/index.tsx      |    2 +-
 .../SqlLab/components/ShareSqlLabQuery/index.tsx   |    2 +-
 .../SqlEditorLeftBar/SqlEditorLeftBar.test.tsx     |    2 +-
 .../TableExploreTree/TableExploreTree.test.tsx     |    6 +-
 .../TableExploreTree/TreeNodeRenderer.tsx          |  280 +-
 .../SqlLab/components/TableExploreTree/index.tsx   |  219 +-
 .../components/TableExploreTree/useTreeData.ts     |  218 +-
 .../src/SqlLab/components/TablePreview/index.tsx   |    2 +-
 superset-frontend/src/SqlLab/fixtures.ts           |    2 +-
 .../components/Chart/DrillBy/DrillByModal.test.tsx |   44 +-
 .../Chart/DrillBy/useResultsTableView.test.ts      |   75 +-
 .../Chart/DrillBy/useResultsTableView.tsx          |   25 +-
 .../CopyToClipboard/CopyToClipboard.test.tsx       |   24 +
 .../src/components/CopyToClipboard/index.tsx       |   20 +-
 .../src/components/CopyToClipboard/types.ts        |    1 +
 .../DatabaseSelector/DatabaseSelector.test.tsx     |    6 +-
 .../src/components/DatabaseSelector/index.tsx      |   21 +-
 .../Datasource/DatasourceModal/index.tsx           |    3 +-
 .../DatasourceEditor/DatasourceEditor.tsx          |   47 +-
 .../ErrorMessage/DatabaseErrorMessage.tsx          |    1 +
 .../src/components/ErrorMessage/ErrorAlert.tsx     |   12 +-
 .../src/components/ErrorMessage/types.ts           |    1 +
 .../src/components/ListView/ListView.tsx           |    1 +
 .../src/components/PanelToolbar/index.tsx          |    4 +-
 .../TableSelector/TableSelector.test.tsx           |    2 +-
 superset-frontend/src/components/Tag/utils.tsx     |   11 +-
 .../DashboardBuilder/DashboardContainer.test.tsx   |  291 +-
 .../DashboardBuilder/DashboardContainer.tsx        |   43 +-
 .../Header/useHeaderActionsDropdownMenu.tsx        |    3 +
 .../src/dashboard/components/SliceHeader/index.tsx |    4 +
 .../SliceHeaderControls.test.tsx                   |   73 +-
 .../components/SliceHeaderControls/Styles.tsx      |   71 +
 .../components/SliceHeaderControls/index.tsx       |   89 +-
 .../components/gridComponents/Chart/Chart.tsx      |   12 +-
 .../gridComponents/ChartHolder/ChartHolder.tsx     |  109 +-
 .../DownloadMenuItems/DownloadMenuItems.test.tsx   |  112 +-
 .../components/menu/DownloadMenuItems/index.tsx    |   29 +-
 .../menu/ShareMenuItems/ShareMenuItems.test.tsx    |   34 +-
 .../nativeFilters/ConfigModal/SharedStyles.tsx     |    1 +
 .../FilterBar/ActionButtons/ActionButtons.test.tsx |   28 -
 .../FilterBar/ActionButtons/index.tsx              |   11 +-
 .../nativeFilters/FilterBar/FilterBar.test.tsx     |   17 +-
 .../FilterBar/FilterBarSettings/index.tsx          |    2 +-
 .../FilterControls/FilterControls.test.tsx         |   13 +
 .../FilterBar/FilterControls/FilterControls.tsx    |    7 +-
 .../FilterBar/FilterControls/FilterValue.tsx       |   35 +-
 .../FiltersDropdownContent.test.tsx                |   71 +
 .../FilterBar/FiltersDropdownContent/index.tsx     |    2 +-
 .../FiltersOutOfScopeCollapsible/index.tsx         |    1 -
 .../nativeFilters/FilterBar/Vertical.tsx           |   11 +-
 .../components/nativeFilters/FilterBar/index.tsx   |    2 -
 .../ConfigModalContent/ConfigModalContent.tsx      |   25 +-
 .../ConfigModalSidebar/ConfigModalSidebar.tsx      |  122 +-
 .../FiltersConfigForm/FilterScope/utils.test.ts    |   76 +-
 .../FiltersConfigForm/FilterScope/utils.ts         |   12 +
 .../FiltersConfigModal/FiltersConfigModal.test.tsx |  143 +-
 .../dashboard/hooks/useDownloadScreenshot.test.ts  |   73 +
 .../src/dashboard/hooks/useDownloadScreenshot.ts   |    3 +-
 .../util/charts/getFormDataWithExtraFilters.ts     |   35 +-
 .../util/getFormDataWithExtraFilters.test.ts       |  578 +-
 .../src/explore/actions/hydrateExplore.ts          |    4 +-
 .../explore/components/ControlPanelsContainer.tsx  |   27 +-
 .../CopyToClipboardButton.test.tsx                 |   28 +
 .../explore/components/DataTableControl/index.tsx  |   11 +-
 .../components/DataTablesPane/DataTablesPane.tsx   |    1 +
 .../components/DataTableControls.tsx               |   46 +-
 .../DataTablesPane/components/SamplesPane.tsx      |  118 +-
 .../components/SingleQueryResultPane.tsx           |   89 +-
 .../components/useGridResultTable.tsx              |  123 +
 .../DataTablesPane/components/useResultsPane.tsx   |   39 +-
 .../DataTablesPane/test/DataTablesPane.test.tsx    |   61 +-
 .../test/ResultsPaneOnDashboard.test.tsx           |   15 +-
 .../DataTablesPane/test/SamplesPane.test.tsx       |   27 +-
 .../components/DataTablesPane/test/fixture.tsx     |    4 +
 .../src/explore/components/DataTablesPane/types.ts |   12 +-
 .../ExploreChartHeader/ExploreChartHeader.test.tsx |    6 +-
 .../explore/components/ExploreChartPanel/index.tsx |    5 +-
 .../useResizeDetectorByObserver.ts                 |    5 +-
 .../src/explore/components/SaveModal.tsx           |   19 +-
 .../ConditionalFormattingControl.test.tsx          |   83 +
 .../ConditionalFormattingControl.tsx               |    5 +
 ...AdhocFilterEditPopoverSimpleTabContent.test.tsx |   20 +
 .../index.tsx                                      |    5 +-
 .../controls/NumberControl/NumberControl.test.tsx  |   15 +
 .../components/controls/NumberControl/index.tsx    |    6 +
 .../components/controls/TextAreaControl.tsx        |    7 +-
 .../VizTypeControl/VizTypeControl.test.tsx         |    2 +-
 .../useExploreAdditionalActionsMenu/index.tsx      |   57 +-
 .../exploreUtils/getSimpleSQLExpression.test.ts    |   12 +
 .../src/explore/exploreUtils/index.ts              |    3 +-
 .../src/features/alerts/AlertReportModal.tsx       |    8 +-
 .../src/features/cssTemplates/CssTemplateModal.tsx |    1 +
 .../AddDataset/LeftPanel/LeftPanel.test.tsx        |    8 +-
 .../src/features/queries/QueryPreviewModal.tsx     |   13 +-
 .../features/queries/SavedQueryPreviewModal.tsx    |   13 +-
 .../src/features/queries/SyntaxHighlighterCopy.tsx |    6 +-
 .../src/features/tags/BulkTagModal.tsx             |    3 +-
 superset-frontend/src/features/tags/TagModal.tsx   |    3 +
 .../components/Select/SelectFilterPlugin.tsx       |    1 +
 superset-frontend/src/hooks/usePermissions.ts      |   26 +-
 superset-frontend/src/pages/Chart/Chart.test.tsx   |   93 +
 superset-frontend/src/pages/Chart/index.tsx        |   38 +-
 .../src/pages/FileHandler/index.test.tsx           |    3 +-
 superset-frontend/src/utils/copy.ts                |   84 +-
 .../src/utils/downloadAsImage.test.ts              |  685 ++
 superset-frontend/src/utils/downloadAsImage.tsx    |  187 +-
 superset-frontend/src/utils/localStorageHelpers.ts |    2 +
 .../src/visualizations/presets/MainPreset.ts       |    6 +-
 superset-frontend/tsconfig.json                    |    4 +-
 superset-frontend/webpack.config.js                |   33 +-
 superset-websocket/package-lock.json               |  318 +-
 superset-websocket/package.json                    |    8 +-
 superset/charts/api.py                             |   29 +-
 superset/charts/data/api.py                        |  104 +-
 superset/charts/data/dashboard_filter_context.py   |  306 +
 superset/charts/schemas.py                         |   45 +
 superset/commands/database/utils.py                |    3 +-
 superset/commands/report/execute.py                |   17 +
 superset/commands/sql_lab/results.py               |   18 +-
 superset/config.py                                 |   18 +-
 superset/daos/base.py                              |   16 +-
 superset/daos/report.py                            |    2 +-
 superset/dashboards/api.py                         |   12 +-
 superset/databases/utils.py                        |    1 +
 superset/db_engine_specs/base.py                   |   13 +-
 superset/mcp_service/CLAUDE.md                     |  762 +-
 superset/mcp_service/app.py                        |   98 +-
 superset/mcp_service/auth.py                       |   36 +-
 superset/mcp_service/chart/chart_utils.py          |  103 +-
 superset/mcp_service/chart/schemas.py              |   27 +-
 superset/mcp_service/chart/tool/generate_chart.py  |   36 +
 superset/mcp_service/chart/tool/get_chart_data.py  |   23 +-
 .../mcp_service/chart/tool/get_chart_preview.py    |   23 +-
 superset/mcp_service/chart/tool/update_chart.py    |  304 +-
 .../mcp_service/chart/tool/update_chart_preview.py |   24 +
 superset/mcp_service/common/schema_discovery.py    |    4 +-
 superset/mcp_service/dashboard/schemas.py          |  225 +-
 .../tool/add_chart_to_existing_dashboard.py        |   60 +-
 .../dashboard/tool/generate_dashboard.py           |    9 +-
 superset/mcp_service/dataset/schemas.py            |   77 +
 superset/mcp_service/dataset/tool/__init__.py      |    2 +
 .../dataset/tool/create_virtual_dataset.py         |  137 +
 superset/mcp_service/dataset/tool/list_datasets.py |    5 +
 superset/mcp_service/mcp_config.py                 |   27 +-
 superset/mcp_service/middleware.py                 |   17 +-
 superset/mcp_service/server.py                     |  222 +-
 superset/mcp_service/sql_lab/schemas.py            |   36 +-
 superset/mcp_service/sql_lab/tool/execute_sql.py   |   24 +
 superset/mcp_service/utils/oauth2_utils.py         |   47 +
 superset/mcp_service/utils/permissions_utils.py    |    4 -
 superset/mcp_service/utils/response_utils.py       |  152 +
 ...00-00_ce6bd21901ab_migrate_deckgl_and_mapbox.py |  172 +
 superset/models/helpers.py                         |    6 +-
 superset/reports/models.py                         |   16 +-
 superset/security/manager.py                       |  190 +-
 superset/sql/execution/executor.py                 |    6 +
 superset/sql/parse.py                              |    2 +-
 superset/sqllab/api.py                             |   64 +-
 superset/translations/fr/LC_MESSAGES/messages.po   |   87 +-
 superset/utils/log.py                              |    9 +-
 superset/utils/oauth2.py                           |   29 +-
 superset/utils/webdriver.py                        |    3 +-
 superset/views/datasource/schemas.py               |    2 +-
 superset/views/datasource/utils.py                 |    7 +-
 superset/views/datasource/views.py                 |    8 +-
 superset/viz.py                                    |   23 +
 tests/integration_tests/charts/data/api_tests.py   |  215 +
 tests/integration_tests/datasource_tests.py        |   23 +-
 tests/integration_tests/event_logger_tests.py      |   61 +
 ...ce6bd21901ab_migrate_deckgl_and_mapbox__test.py |  187 +
 .../security/guest_token_security_tests.py         |  100 +-
 tests/integration_tests/security_tests.py          |   23 +-
 tests/integration_tests/sql_lab/api_tests.py       |   33 +-
 tests/integration_tests/sql_lab/commands_tests.py  |   33 +-
 .../integration_tests/test_granular_export_api.py  |  275 +
 .../charts/test_dashboard_filter_context.py        |  525 ++
 tests/unit_tests/commands/databases/utils_test.py  |    6 +-
 tests/unit_tests/commands/report/execute_test.py   |   50 +
 tests/unit_tests/daos/test_report_dao.py           |   92 +
 tests/unit_tests/db_engine_specs/test_base.py      |    2 +-
 .../mcp_service/chart/test_chart_schemas.py        |   38 +
 .../mcp_service/chart/test_chart_utils.py          |   56 +
 .../mcp_service/chart/tool/test_update_chart.py    |  415 +-
 .../dashboard/test_dashboard_schemas.py            |  224 +-
 .../tool/test_add_chart_to_existing_dashboard.py   |  297 +
 .../dashboard/tool/test_dashboard_generation.py    |   11 +-
 .../dashboard/tool/test_dashboard_tools.py         |   16 +-
 .../mcp_service/dataset/tool/test_dataset_tools.py |  301 +-
 .../mcp_service/sql_lab/tool/test_execute_sql.py   |   71 +
 .../mcp_service/test_g_user_race_condition.py      |  164 +
 .../mcp_service/test_middleware_logging.py         |  157 +
 .../mcp_service/test_tool_search_transform.py      |  548 ++
 tests/unit_tests/reports/model_test.py             |  122 +-
 tests/unit_tests/security/api_test.py              |    2 +-
 tests/unit_tests/security/audit_log_test.py        |  251 +
 tests/unit_tests/sql/execution/test_executor.py    |   72 +
 tests/unit_tests/sql/parse_tests.py                |   14 +-
 tests/unit_tests/utils/oauth2_tests.py             |   64 +
 tests/unit_tests/utils/webdriver_test.py           |   35 +-
 546 files changed, 25201 insertions(+), 9186 deletions(-)
 create mode 100644 docs/docs/security/granular-export-controls.mdx
 create mode 100644 docs/static/img/logos/hifadih.png
 delete mode 100644 superset-frontend/cypress-base/cypress/e2e/sqllab/_skip.sourcePanel.index.test.js
 delete mode 100644 superset-frontend/cypress-base/cypress/e2e/sqllab/query.test.ts
 delete mode 100644 superset-frontend/cypress-base/cypress/e2e/sqllab/sqllab.helper.js
 delete mode 100644 superset-frontend/cypress-base/cypress/e2e/sqllab/tabs.test.ts
 copy superset-frontend/{ => packages/superset-ui-core}/src/utils/copy.ts (95%)
 create mode 100644 superset-frontend/packages/superset-ui-core/test/utils/copy.test.ts
 create mode 100644 superset-frontend/playwright/components/core/AgGrid.ts
 copy superset-frontend/{src/components/ListView/DashboardCrossLinks.tsx => playwright/components/core/EditableTabs.ts} (51%)
 copy superset-frontend/{packages/superset-ui-core/src/time-format/types.ts => playwright/components/core/Popover.ts} (50%)
 copy superset-frontend/{spec/helpers/Cache.ts => playwright/components/modals/SaveDatasetModal.ts} (57%)
 copy superset-frontend/{spec/helpers/IntersectionObserver.ts => playwright/components/modals/SaveQueryModal.ts} (59%)
 copy superset-frontend/{src/types/SqlExpression.ts => playwright/helpers/api/savedQuery.ts} (54%)
 create mode 100644 superset-frontend/playwright/pages/SqlLabPage.ts
 create mode 100644 superset-frontend/playwright/tests/sqllab/sqllab.spec.ts
 delete mode 100644 superset-frontend/plugins/legacy-plugin-chart-map-box/CHANGELOG.md
 delete mode 100644 superset-frontend/plugins/legacy-plugin-chart-map-box/README.md
 delete mode 100644 superset-frontend/plugins/legacy-plugin-chart-map-box/src/MapBox.tsx
 delete mode 100644 superset-frontend/plugins/legacy-plugin-chart-map-box/src/ScatterPlotGlowOverlay.tsx
 delete mode 100644 superset-frontend/plugins/legacy-plugin-chart-map-box/src/stories/MapBox.stories.tsx
 delete mode 100644 superset-frontend/plugins/legacy-plugin-chart-map-box/src/transformProps.ts
 delete mode 100644 superset-frontend/plugins/legacy-plugin-chart-map-box/test/MapBox.test.tsx
 delete mode 100644 superset-frontend/plugins/legacy-plugin-chart-map-box/test/tsconfig.json
 delete mode 100644 superset-frontend/plugins/legacy-plugin-chart-map-box/test/utils/roundDecimal.test.ts
 delete mode 100644 superset-frontend/plugins/legacy-plugin-chart-map-box/tsconfig.json
 delete mode 100644 superset-frontend/plugins/legacy-plugin-chart-map-box/types/external.d.ts
 delete mode 100644 superset-frontend/plugins/legacy-preset-chart-deckgl/CHANGELOG.md
 delete mode 100644 superset-frontend/plugins/legacy-preset-chart-deckgl/README.md
 delete mode 100644 superset-frontend/plugins/legacy-preset-chart-deckgl/test/utils/colors.test.ts
 delete mode 100644 superset-frontend/plugins/legacy-preset-chart-deckgl/test/utils/getPointsFromPolygon.test.ts
 delete mode 100644 superset-frontend/plugins/legacy-preset-chart-deckgl/types/external.d.ts
 create mode 100644 superset-frontend/plugins/plugin-chart-ag-grid-table/src/utils/reconcileColumnState.test.ts
 create mode 100644 superset-frontend/plugins/plugin-chart-ag-grid-table/src/utils/reconcileColumnState.ts
 rename superset-frontend/plugins/{legacy-plugin-chart-map-box => plugin-chart-point-cluster-map}/package.json (65%)
 rename superset-frontend/plugins/{legacy-plugin-chart-map-box/src/MapBox.css => plugin-chart-point-cluster-map/src/MapLibre.css} (96%)
 create mode 100644 superset-frontend/plugins/plugin-chart-point-cluster-map/src/MapLibre.tsx
 create mode 100644 superset-frontend/plugins/plugin-chart-point-cluster-map/src/buildQuery.ts
 create mode 100644 superset-frontend/plugins/plugin-chart-point-cluster-map/src/components/CanvasOverlay.tsx
 create mode 100644 superset-frontend/plugins/plugin-chart-point-cluster-map/src/components/ScatterPlotOverlay.tsx
 rename superset-frontend/plugins/{legacy-plugin-chart-map-box => plugin-chart-point-cluster-map}/src/controlPanel.ts (73%)
 rename superset-frontend/plugins/{legacy-plugin-chart-map-box => plugin-chart-point-cluster-map}/src/images/MapBox-dark.jpg (100%)
 rename superset-frontend/plugins/{legacy-plugin-chart-map-box => plugin-chart-point-cluster-map}/src/images/MapBox.jpg (100%)
 rename superset-frontend/plugins/{legacy-plugin-chart-map-box => plugin-chart-point-cluster-map}/src/images/MapBox2-dark.jpg (100%)
 rename superset-frontend/plugins/{legacy-plugin-chart-map-box => plugin-chart-point-cluster-map}/src/images/MapBox2.jpg (100%)
 rename superset-frontend/plugins/{legacy-plugin-chart-map-box => plugin-chart-point-cluster-map}/src/images/thumbnail-dark.png (100%)
 rename superset-frontend/plugins/{legacy-plugin-chart-map-box => plugin-chart-point-cluster-map}/src/images/thumbnail.png (100%)
 rename superset-frontend/plugins/{legacy-plugin-chart-map-box => plugin-chart-point-cluster-map}/src/images/thumbnailLarge.png (100%)
 rename superset-frontend/plugins/{legacy-plugin-chart-map-box => plugin-chart-point-cluster-map}/src/index.ts (88%)
 create mode 100644 superset-frontend/plugins/plugin-chart-point-cluster-map/src/stories/PointClusterMap.stories.tsx
 rename superset-frontend/plugins/{legacy-plugin-chart-map-box => plugin-chart-point-cluster-map}/src/stories/data.ts (100%)
 create mode 100644 superset-frontend/plugins/plugin-chart-point-cluster-map/src/transformProps.ts
 rename superset-frontend/plugins/{legacy-plugin-chart-map-box => plugin-chart-point-cluster-map}/src/utils/geo.ts (100%)
 rename superset-frontend/plugins/{legacy-plugin-chart-map-box => plugin-chart-point-cluster-map}/src/utils/luminanceFromRGB.ts (100%)
 copy superset-frontend/{src/types/ChartSource.ts => plugins/plugin-chart-point-cluster-map/src/utils/mapbox.ts} (63%)
 rename superset-frontend/plugins/{legacy-plugin-chart-map-box => plugin-chart-point-cluster-map}/src/utils/roundDecimal.ts (100%)
 create mode 100644 superset-frontend/plugins/plugin-chart-point-cluster-map/test/MapLibre.test.tsx
 rename superset-frontend/plugins/{legacy-plugin-chart-map-box/test/ScatterPlotGlowOverlay.test.tsx => plugin-chart-point-cluster-map/test/ScatterPlotOverlay.test.tsx} (92%)
 rename superset-frontend/plugins/{legacy-plugin-chart-map-box => plugin-chart-point-cluster-map}/test/controlPanel.test.ts (100%)
 rename superset-frontend/plugins/{legacy-plugin-chart-map-box => plugin-chart-point-cluster-map}/test/transformProps.test.ts (75%)
 rename superset-frontend/plugins/{legacy-preset-chart-deckgl => plugin-chart-point-cluster-map}/tsconfig.json (58%)
 copy superset-frontend/plugins/{legacy-plugin-chart-calendar => plugin-chart-point-cluster-map}/types/external.d.ts (99%)
 rename superset-frontend/plugins/{legacy-preset-chart-deckgl => preset-chart-deckgl}/package.json (76%)
 rename superset-frontend/plugins/{legacy-preset-chart-deckgl => preset-chart-deckgl}/src/CategoricalDeckGLContainer.tsx (95%)
 rename superset-frontend/plugins/{legacy-preset-chart-deckgl => preset-chart-deckgl}/src/DeckGLContainer.tsx (64%)
 rename superset-frontend/plugins/{legacy-preset-chart-deckgl => preset-chart-deckgl}/src/Multi/Multi.test.tsx (99%)
 rename superset-frontend/plugins/{legacy-preset-chart-deckgl => preset-chart-deckgl}/src/Multi/Multi.tsx (96%)
 rename superset-frontend/plugins/{legacy-preset-chart-deckgl => preset-chart-deckgl}/src/Multi/controlPanel.test.ts (100%)
 rename superset-frontend/plugins/{legacy-preset-chart-deckgl => preset-chart-deckgl}/src/Multi/controlPanel.ts (94%)
 rename superset-frontend/plugins/{legacy-preset-chart-deckgl => preset-chart-deckgl}/src/Multi/images/example-dark.png (100%)
 rename superset-frontend/plugins/{legacy-preset-chart-deckgl => preset-chart-deckgl}/src/Multi/images/example.png (100%)
 rename superset-frontend/plugins/{legacy-preset-chart-deckgl => preset-chart-deckgl}/src/Multi/images/thumbnail-dark.png (100%)
 rename superset-frontend/plugins/{legacy-preset-chart-deckgl => preset-chart-deckgl}/src/Multi/images/thumbnail.png (100%)
 rename superset-frontend/plugins/{legacy-preset-chart-deckgl => preset-chart-deckgl}/src/Multi/images/thumbnailLarge.png (100%)
 rename superset-frontend/plugins/{legacy-preset-chart-deckgl => preset-chart-deckgl}/src/Multi/index.ts (100%)
 rename superset-frontend/plugins/{legacy-preset-chart-deckgl => preset-chart-deckgl}/src/TooltipRow.tsx (100%)
 copy superset-frontend/{src/views/ScrollToTop.tsx => plugins/preset-chart-deckgl/src/components/DeckGLOverlayMapLibre.tsx} (70%)
 copy superset-frontend/{src/views/ScrollToTop.tsx => plugins/preset-chart-deckgl/src/components/DeckGLOverlayMapbox.tsx} (70%)
 rename superset-frontend/plugins/{legacy-preset-chart-deckgl => preset-chart-deckgl}/src/components/Legend.tsx (94%)
 rename superset-frontend/plugins/{legacy-preset-chart-deckgl => preset-chart-deckgl}/src/components/Tooltip.tsx (95%)
 rename superset-frontend/plugins/{legacy-preset-chart-deckgl => preset-chart-deckgl}/src/factory.tsx (94%)
 rename superset-frontend/plugins/{legacy-preset-chart-deckgl => preset-chart-deckgl}/src/index.ts (100%)
 rename superset-frontend/plugins/{legacy-preset-chart-deckgl => preset-chart-deckgl}/src/layers/Arc/Arc.tsx (100%)
 rename superset-frontend/plugins/{legacy-preset-chart-deckgl => preset-chart-deckgl}/src/layers/Arc/buildQuery.ts (100%)
 rename superset-frontend/plugins/{legacy-preset-chart-deckgl => preset-chart-deckgl}/src/layers/Arc/controlPanel.ts (96%)
 rename superset-frontend/plugins/{legacy-preset-chart-deckgl => preset-chart-deckgl}/src/layers/Arc/images/example-dark.png (100%)
 rename superset-frontend/plugins/{legacy-preset-chart-deckgl => preset-chart-deckgl}/src/layers/Arc/images/example.png (100%)
 rename superset-frontend/plugins/{legacy-preset-chart-deckgl => preset-chart-deckgl}/src/layers/Arc/images/thumbnail-dark.png (100%)
 rename superset-frontend/plugins/{legacy-preset-chart-deckgl => preset-chart-deckgl}/src/layers/Arc/images/thumbnail.png (100%)
 rename superset-frontend/plugins/{legacy-preset-chart-deckgl => preset-chart-deckgl}/src/layers/Arc/images/thumbnailLarge.png (100%)
 rename superset-frontend/plugins/{legacy-preset-chart-deckgl => preset-chart-deckgl}/src/layers/Arc/index.ts (100%)
 rename superset-frontend/plugins/{legacy-preset-chart-deckgl => preset-chart-deckgl}/src/layers/Arc/stories/Arc.stories.tsx (93%)
 rename superset-frontend/plugins/{legacy-preset-chart-deckgl => preset-chart-deckgl}/src/layers/Arc/stories/payload.ts (100%)
 rename superset-frontend/plugins/{legacy-preset-chart-deckgl => preset-chart-deckgl}/src/layers/Arc/transformProps.ts (100%)
 rename superset-frontend/plugins/{legacy-preset-chart-deckgl => preset-chart-deckgl}/src/layers/Contour/Contour.tsx (100%)
 rename superset-frontend/plugins/{legacy-preset-chart-deckgl => preset-chart-deckgl}/src/layers/Contour/buildQuery.ts (100%)
 rename superset-frontend/plugins/{legacy-preset-chart-deckgl => preset-chart-deckgl}/src/layers/Contour/controlPanel.ts (97%)
 rename superset-frontend/plugins/{legacy-preset-chart-deckgl => preset-chart-deckgl}/src/layers/Contour/getSafeCellSize.test.ts (100%)
 rename superset-frontend/plugins/{legacy-preset-chart-deckgl => preset-chart-deckgl}/src/layers/Contour/getSafeCellSize.ts (100%)
 rename superset-frontend/plugins/{legacy-preset-chart-deckgl => preset-chart-deckgl}/src/layers/Contour/images/example-dark.png (100%)
 rename superset-frontend/plugins/{legacy-preset-chart-deckgl => preset-chart-deckgl}/src/layers/Contour/images/example.png (100%)
 rename superset-frontend/plugins/{legacy-preset-chart-deckgl => preset-chart-deckgl}/src/layers/Contour/images/thumbnail-dark.png (100%)
 rename superset-frontend/plugins/{legacy-preset-chart-deckgl => preset-chart-deckgl}/src/layers/Contour/images/thumbnail.png (100%)
 rename superset-frontend/plugins/{legacy-preset-chart-deckgl => preset-chart-deckgl}/src/layers/Contour/images/thumbnailLarge.png (100%)
 rename superset-frontend/plugins/{legacy-preset-chart-deckgl => preset-chart-deckgl}/src/layers/Contour/index.ts (100%)
 rename superset-frontend/plugins/{legacy-preset-chart-deckgl => preset-chart-deckgl}/src/layers/Contour/transformProps.ts (100%)
 rename superset-frontend/plugins/{legacy-preset-chart-deckgl => preset-chart-deckgl}/src/layers/Geojson/Geojson.test.ts (97%)
 rename superset-frontend/plugins/{legacy-preset-chart-deckgl => preset-chart-deckgl}/src/layers/Geojson/Geojson.tsx (97%)
 create mode 100644 superset-frontend/plugins/preset-chart-deckgl/src/layers/Geojson/buildQuery.ts
 rename superset-frontend/plugins/{legacy-preset-chart-deckgl => preset-chart-deckgl}/src/layers/Geojson/controlPanel.ts (98%)
 rename superset-frontend/plugins/{legacy-preset-chart-deckgl => preset-chart-deckgl}/src/layers/Geojson/images/example-dark.png (100%)
 rename superset-frontend/plugins/{legacy-preset-chart-deckgl => preset-chart-deckgl}/src/layers/Geojson/images/example.png (100%)
 rename superset-frontend/plugins/{legacy-preset-chart-deckgl => preset-chart-deckgl}/src/layers/Geojson/images/thumbnail-dark.png (100%)
 rename superset-frontend/plugins/{legacy-preset-chart-deckgl => preset-chart-deckgl}/src/layers/Geojson/images/thumbnail.png (100%)
 rename superset-frontend/plugins/{legacy-preset-chart-deckgl => preset-chart-deckgl}/src/layers/Geojson/images/thumbnailLarge.png (100%)
 rename superset-frontend/plugins/{legacy-preset-chart-deckgl => preset-chart-deckgl}/src/layers/Geojson/index.ts (94%)
 create mode 100644 superset-frontend/plugins/preset-chart-deckgl/src/layers/Geojson/transformProps.ts
 rename superset-frontend/plugins/{legacy-preset-chart-deckgl => preset-chart-deckgl}/src/layers/Grid/Grid.tsx (100%)
 rename superset-frontend/plugins/{legacy-preset-chart-deckgl => preset-chart-deckgl}/src/layers/Grid/buildQuery.ts (100%)
 rename superset-frontend/plugins/{legacy-preset-chart-deckgl => preset-chart-deckgl}/src/layers/Grid/controlPanel.ts (96%)
 rename superset-frontend/plugins/{legacy-preset-chart-deckgl => preset-chart-deckgl}/src/layers/Grid/images/example-dark.png (100%)
 rename superset-frontend/plugins/{legacy-preset-chart-deckgl => preset-chart-deckgl}/src/layers/Grid/images/example.png (100%)
 rename superset-frontend/plugins/{legacy-preset-chart-deckgl => preset-chart-deckgl}/src/layers/Grid/images/thumbnail-dark.png (100%)
 rename superset-frontend/plugins/{legacy-preset-chart-deckgl => preset-chart-deckgl}/src/layers/Grid/images/thumbnail.png (100%)
 rename superset-frontend/plugins/{legacy-preset-chart-deckgl => preset-chart-deckgl}/src/layers/Grid/images/thumbnailLarge.png (100%)
 rename superset-frontend/plugins/{legacy-preset-chart-deckgl => preset-chart-deckgl}/src/layers/Grid/index.ts (100%)
 rename superset-frontend/plugins/{legacy-preset-chart-deckgl => preset-chart-deckgl}/src/layers/Grid/stories/Grid.stories.tsx (92%)
 rename superset-frontend/plugins/{legacy-preset-chart-deckgl => preset-chart-deckgl}/src/layers/Grid/stories/payload.ts (100%)
 rename superset-frontend/plugins/{legacy-preset-chart-deckgl => preset-chart-deckgl}/src/layers/Grid/transformProps.ts (100%)
 rename superset-frontend/plugins/{legacy-preset-chart-deckgl => preset-chart-deckgl}/src/layers/Heatmap/Heatmap.tsx (95%)
 rename superset-frontend/plugins/{legacy-preset-chart-deckgl => preset-chart-deckgl}/src/layers/Heatmap/buildQuery.ts (100%)
 rename superset-frontend/plugins/{legacy-preset-chart-deckgl => preset-chart-deckgl}/src/layers/Heatmap/controlPanel.ts (98%)
 rename superset-frontend/plugins/{legacy-preset-chart-deckgl => preset-chart-deckgl}/src/layers/Heatmap/images/example-dark.png (100%)
 rename superset-frontend/plugins/{legacy-preset-chart-deckgl => preset-chart-deckgl}/src/layers/Heatmap/images/example.png (100%)
 rename superset-frontend/plugins/{legacy-preset-chart-deckgl => preset-chart-deckgl}/src/layers/Heatmap/images/thumbnail-dark.png (100%)
 rename superset-frontend/plugins/{legacy-preset-chart-deckgl => preset-chart-deckgl}/src/layers/Heatmap/images/thumbnail.png (100%)
 rename superset-frontend/plugins/{legacy-preset-chart-deckgl => preset-chart-deckgl}/src/layers/Heatmap/images/thumbnailLarge.png (100%)
 rename superset-frontend/plugins/{legacy-preset-chart-deckgl => preset-chart-deckgl}/src/layers/Heatmap/index.ts (100%)
 rename superset-frontend/plugins/{legacy-preset-chart-deckgl => preset-chart-deckgl}/src/layers/Heatmap/transformProps.ts (100%)
 rename superset-frontend/plugins/{legacy-preset-chart-deckgl => preset-chart-deckgl}/src/layers/Hex/Hex.tsx (100%)
 rename superset-frontend/plugins/{legacy-preset-chart-deckgl => preset-chart-deckgl}/src/layers/Hex/buildQuery.ts (100%)
 rename superset-frontend/plugins/{legacy-preset-chart-deckgl => preset-chart-deckgl}/src/layers/Hex/controlPanel.ts (97%)
 rename superset-frontend/plugins/{legacy-preset-chart-deckgl => preset-chart-deckgl}/src/layers/Hex/images/example-dark.png (100%)
 rename superset-frontend/plugins/{legacy-preset-chart-deckgl => preset-chart-deckgl}/src/layers/Hex/images/example.png (100%)
 rename superset-frontend/plugins/{legacy-preset-chart-deckgl => preset-chart-deckgl}/src/layers/Hex/images/thumbnail-dark.png (100%)
 rename superset-frontend/plugins/{legacy-preset-chart-deckgl => preset-chart-deckgl}/src/layers/Hex/images/thumbnail.png (100%)
 rename superset-frontend/plugins/{legacy-preset-chart-deckgl => preset-chart-deckgl}/src/layers/Hex/images/thumbnailLarge.png (100%)
 rename superset-frontend/plugins/{legacy-preset-chart-deckgl => preset-chart-deckgl}/src/layers/Hex/index.ts (100%)
 rename superset-frontend/plugins/{legacy-preset-chart-deckgl => preset-chart-deckgl}/src/layers/Hex/stories/Hex.stories.tsx (92%)
 rename superset-frontend/plugins/{legacy-preset-chart-deckgl => preset-chart-deckgl}/src/layers/Hex/stories/payload.ts (100%)
 rename superset-frontend/plugins/{legacy-preset-chart-deckgl => preset-chart-deckgl}/src/layers/Hex/transformProps.ts (100%)
 rename superset-frontend/plugins/{legacy-preset-chart-deckgl => preset-chart-deckgl}/src/layers/Path/Path.test.tsx (100%)
 rename superset-frontend/plugins/{legacy-preset-chart-deckgl => preset-chart-deckgl}/src/layers/Path/Path.tsx (99%)
 rename superset-frontend/plugins/{legacy-preset-chart-deckgl => preset-chart-deckgl}/src/layers/Path/buildQuery.ts (100%)
 rename superset-frontend/plugins/{legacy-preset-chart-deckgl => preset-chart-deckgl}/src/layers/Path/controlPanel.ts (97%)
 rename superset-frontend/plugins/{legacy-preset-chart-deckgl => preset-chart-deckgl}/src/layers/Path/images/example-dark.png (100%)
 rename superset-frontend/plugins/{legacy-preset-chart-deckgl => preset-chart-deckgl}/src/layers/Path/images/example.png (100%)
 rename superset-frontend/plugins/{legacy-preset-chart-deckgl => preset-chart-deckgl}/src/layers/Path/images/thumbnail-dark.png (100%)
 rename superset-frontend/plugins/{legacy-preset-chart-deckgl => preset-chart-deckgl}/src/layers/Path/images/thumbnail.png (100%)
 rename superset-frontend/plugins/{legacy-preset-chart-deckgl => preset-chart-deckgl}/src/layers/Path/images/thumbnailLarge.png (100%)
 rename superset-frontend/plugins/{legacy-preset-chart-deckgl => preset-chart-deckgl}/src/layers/Path/index.ts (100%)
 rename superset-frontend/plugins/{legacy-preset-chart-deckgl => preset-chart-deckgl}/src/layers/Path/stories/Path.stories.tsx (92%)
 rename superset-frontend/plugins/{legacy-preset-chart-deckgl => preset-chart-deckgl}/src/layers/Path/stories/payload.ts (100%)
 rename superset-frontend/plugins/{legacy-preset-chart-deckgl => preset-chart-deckgl}/src/layers/Path/transformProps.ts (100%)
 rename superset-frontend/plugins/{legacy-preset-chart-deckgl => preset-chart-deckgl}/src/layers/Polygon/Polygon.test.tsx (99%)
 rename superset-frontend/plugins/{legacy-preset-chart-deckgl => preset-chart-deckgl}/src/layers/Polygon/Polygon.tsx (99%)
 rename superset-frontend/plugins/{legacy-preset-chart-deckgl => preset-chart-deckgl}/src/layers/Polygon/buildQuery.test.ts (100%)
 rename superset-frontend/plugins/{legacy-preset-chart-deckgl => preset-chart-deckgl}/src/layers/Polygon/buildQuery.ts (100%)
 rename superset-frontend/plugins/{legacy-preset-chart-deckgl => preset-chart-deckgl}/src/layers/Polygon/controlPanel.ts (97%)
 rename superset-frontend/plugins/{legacy-preset-chart-deckgl => preset-chart-deckgl}/src/layers/Polygon/images/example-dark.png (100%)
 rename superset-frontend/plugins/{legacy-preset-chart-deckgl => preset-chart-deckgl}/src/layers/Polygon/images/example.png (100%)
 rename superset-frontend/plugins/{legacy-preset-chart-deckgl => preset-chart-deckgl}/src/layers/Polygon/images/thumbnail-dark.png (100%)
 rename superset-frontend/plugins/{legacy-preset-chart-deckgl => preset-chart-deckgl}/src/layers/Polygon/images/thumbnail.png (100%)
 rename superset-frontend/plugins/{legacy-preset-chart-deckgl => preset-chart-deckgl}/src/layers/Polygon/images/thumbnailLarge.png (100%)
 rename superset-frontend/plugins/{legacy-preset-chart-deckgl => preset-chart-deckgl}/src/layers/Polygon/index.ts (100%)
 rename superset-frontend/plugins/{legacy-preset-chart-deckgl => preset-chart-deckgl}/src/layers/Polygon/stories/Polygon.stories.tsx (94%)
 rename superset-frontend/plugins/{legacy-preset-chart-deckgl => preset-chart-deckgl}/src/layers/Polygon/stories/geojsonPayload.ts (100%)
 rename superset-frontend/plugins/{legacy-preset-chart-deckgl => preset-chart-deckgl}/src/layers/Polygon/stories/payload.ts (100%)
 rename superset-frontend/plugins/{legacy-preset-chart-deckgl => preset-chart-deckgl}/src/layers/Polygon/transformProps.test.ts (100%)
 rename superset-frontend/plugins/{legacy-preset-chart-deckgl => preset-chart-deckgl}/src/layers/Polygon/transformProps.ts (100%)
 rename superset-frontend/plugins/{legacy-preset-chart-deckgl => preset-chart-deckgl}/src/layers/Scatter/Scatter.tsx (100%)
 rename superset-frontend/plugins/{legacy-preset-chart-deckgl => preset-chart-deckgl}/src/layers/Scatter/buildQuery.test.ts (100%)
 rename superset-frontend/plugins/{legacy-preset-chart-deckgl => preset-chart-deckgl}/src/layers/Scatter/buildQuery.ts (100%)
 rename superset-frontend/plugins/{legacy-preset-chart-deckgl => preset-chart-deckgl}/src/layers/Scatter/controlPanel.ts (96%)
 rename superset-frontend/plugins/{legacy-preset-chart-deckgl => preset-chart-deckgl}/src/layers/Scatter/images/example-dark.png (100%)
 rename superset-frontend/plugins/{legacy-preset-chart-deckgl => preset-chart-deckgl}/src/layers/Scatter/images/example.png (100%)
 rename superset-frontend/plugins/{legacy-preset-chart-deckgl => preset-chart-deckgl}/src/layers/Scatter/images/thumbnail-dark.png (100%)
 rename superset-frontend/plugins/{legacy-preset-chart-deckgl => preset-chart-deckgl}/src/layers/Scatter/images/thumbnail.png (100%)
 rename superset-frontend/plugins/{legacy-preset-chart-deckgl => preset-chart-deckgl}/src/layers/Scatter/images/thumbnailLarge.png (100%)
 rename superset-frontend/plugins/{legacy-preset-chart-deckgl => preset-chart-deckgl}/src/layers/Scatter/index.ts (100%)
 rename superset-frontend/plugins/{legacy-preset-chart-deckgl => preset-chart-deckgl}/src/layers/Scatter/stories/Scatter.stories.tsx (93%)
 rename superset-frontend/plugins/{legacy-preset-chart-deckgl => preset-chart-deckgl}/src/layers/Scatter/stories/payload.ts (100%)
 rename superset-frontend/plugins/{legacy-preset-chart-deckgl => preset-chart-deckgl}/src/layers/Scatter/transformProps.test.ts (100%)
 rename superset-frontend/plugins/{legacy-preset-chart-deckgl => preset-chart-deckgl}/src/layers/Scatter/transformProps.ts (100%)
 rename superset-frontend/plugins/{legacy-preset-chart-deckgl => preset-chart-deckgl}/src/layers/Screengrid/Screengrid.tsx (97%)
 rename superset-frontend/plugins/{legacy-preset-chart-deckgl => preset-chart-deckgl}/src/layers/Screengrid/buildQuery.ts (100%)
 rename superset-frontend/plugins/{legacy-preset-chart-deckgl => preset-chart-deckgl}/src/layers/Screengrid/controlPanel.ts (94%)
 rename superset-frontend/plugins/{legacy-preset-chart-deckgl => preset-chart-deckgl}/src/layers/Screengrid/images/example-dark.png (100%)
 rename superset-frontend/plugins/{legacy-preset-chart-deckgl => preset-chart-deckgl}/src/layers/Screengrid/images/example.png (100%)
 rename superset-frontend/plugins/{legacy-preset-chart-deckgl => preset-chart-deckgl}/src/layers/Screengrid/images/thumbnail-dark.png (100%)
 rename superset-frontend/plugins/{legacy-preset-chart-deckgl => preset-chart-deckgl}/src/layers/Screengrid/images/thumbnail.png (100%)
 rename superset-frontend/plugins/{legacy-preset-chart-deckgl => preset-chart-deckgl}/src/layers/Screengrid/images/thumbnailLarge.png (100%)
 rename superset-frontend/plugins/{legacy-preset-chart-deckgl => preset-chart-deckgl}/src/layers/Screengrid/index.ts (100%)
 rename superset-frontend/plugins/{legacy-preset-chart-deckgl => preset-chart-deckgl}/src/layers/Screengrid/stories/Screengrid.stories.tsx (91%)
 rename superset-frontend/plugins/{legacy-preset-chart-deckgl => preset-chart-deckgl}/src/layers/Screengrid/stories/payload.ts (100%)
 rename superset-frontend/plugins/{legacy-preset-chart-deckgl => preset-chart-deckgl}/src/layers/Screengrid/transformProps.ts (100%)
 rename superset-frontend/plugins/{legacy-preset-chart-deckgl => preset-chart-deckgl}/src/layers/buildQueryUtils.ts (100%)
 rename superset-frontend/plugins/{legacy-preset-chart-deckgl => preset-chart-deckgl}/src/layers/common.test.ts (100%)
 rename superset-frontend/plugins/{legacy-preset-chart-deckgl => preset-chart-deckgl}/src/layers/common.tsx (100%)
 rename superset-frontend/plugins/{legacy-preset-chart-deckgl => preset-chart-deckgl}/src/layers/index.ts (100%)
 rename superset-frontend/plugins/{legacy-preset-chart-deckgl => preset-chart-deckgl}/src/layers/spatialUtils.test.ts (99%)
 rename superset-frontend/plugins/{legacy-preset-chart-deckgl => preset-chart-deckgl}/src/layers/spatialUtils.ts (93%)
 rename superset-frontend/plugins/{legacy-preset-chart-deckgl => preset-chart-deckgl}/src/layers/transformUtils.test.ts (100%)
 rename superset-frontend/plugins/{legacy-preset-chart-deckgl => preset-chart-deckgl}/src/layers/transformUtils.ts (100%)
 rename superset-frontend/plugins/{legacy-preset-chart-deckgl => preset-chart-deckgl}/src/layers/utils/metricUtils.test.ts (100%)
 rename superset-frontend/plugins/{legacy-preset-chart-deckgl => preset-chart-deckgl}/src/layers/utils/metricUtils.ts (100%)
 rename superset-frontend/plugins/{legacy-preset-chart-deckgl => preset-chart-deckgl}/src/preset.ts (100%)
 rename superset-frontend/plugins/{legacy-preset-chart-deckgl => preset-chart-deckgl}/src/transformProps.ts (100%)
 rename superset-frontend/plugins/{legacy-preset-chart-deckgl => preset-chart-deckgl}/src/types.ts (100%)
 rename superset-frontend/plugins/{legacy-preset-chart-deckgl => preset-chart-deckgl}/src/utilities/HandlebarsRenderer.tsx (100%)
 rename superset-frontend/plugins/{legacy-preset-chart-deckgl => preset-chart-deckgl}/src/utilities/Shared_DeckGL.tsx (90%)
 rename superset-frontend/plugins/{legacy-preset-chart-deckgl => preset-chart-deckgl}/src/utilities/TooltipTemplateControl.tsx (100%)
 rename superset-frontend/plugins/{legacy-preset-chart-deckgl => preset-chart-deckgl}/src/utilities/TooltipTemplateEditor.tsx (100%)
 rename superset-frontend/plugins/{legacy-preset-chart-deckgl => preset-chart-deckgl}/src/utilities/controlRegistry.tsx (100%)
 rename superset-frontend/plugins/{legacy-preset-chart-deckgl => preset-chart-deckgl}/src/utilities/controls.ts (100%)
 rename superset-frontend/plugins/{legacy-preset-chart-deckgl => preset-chart-deckgl}/src/utilities/multiValueUtils.ts (100%)
 rename superset-frontend/plugins/{legacy-preset-chart-deckgl => preset-chart-deckgl}/src/utilities/sharedDndControls.tsx (100%)
 rename superset-frontend/plugins/{legacy-preset-chart-deckgl => preset-chart-deckgl}/src/utilities/tooltipUtils.tsx (100%)
 rename superset-frontend/plugins/{legacy-preset-chart-deckgl => preset-chart-deckgl}/src/utilities/utils.ts (100%)
 rename superset-frontend/plugins/{legacy-preset-chart-deckgl => preset-chart-deckgl}/src/utils.test.ts (100%)
 rename superset-frontend/plugins/{legacy-preset-chart-deckgl => preset-chart-deckgl}/src/utils.ts (86%)
 rename superset-frontend/plugins/{legacy-preset-chart-deckgl => preset-chart-deckgl}/src/utils/colors.ts (100%)
 rename superset-frontend/plugins/{legacy-preset-chart-deckgl => preset-chart-deckgl}/src/utils/computeBoundsFromPoints.ts (100%)
 rename superset-frontend/plugins/{legacy-preset-chart-deckgl => preset-chart-deckgl}/src/utils/crossFiltersDataMask.test.ts (100%)
 rename superset-frontend/plugins/{legacy-preset-chart-deckgl => preset-chart-deckgl}/src/utils/crossFiltersDataMask.ts (100%)
 rename superset-frontend/plugins/{legacy-preset-chart-deckgl => preset-chart-deckgl}/src/utils/explore.ts (100%)
 rename superset-frontend/plugins/{legacy-preset-chart-deckgl => preset-chart-deckgl}/src/utils/fitViewport.ts (100%)
 rename superset-frontend/plugins/{legacy-preset-chart-deckgl => preset-chart-deckgl}/src/utils/geo.ts (100%)
 rename superset-frontend/plugins/{legacy-preset-chart-deckgl => preset-chart-deckgl}/src/utils/getPointsFromPolygon.ts (100%)
 copy superset-frontend/{src/types/ChartSource.ts => plugins/preset-chart-deckgl/src/utils/mapbox.ts} (63%)
 rename superset-frontend/plugins/{legacy-preset-chart-deckgl => preset-chart-deckgl}/src/utils/safeStringify.ts (100%)
 rename superset-frontend/plugins/{legacy-preset-chart-deckgl => preset-chart-deckgl}/src/utils/sandbox.ts (100%)
 copy superset-frontend/{packages/generator-superset/generators/plugin-chart/templates => plugins/preset-chart-deckgl}/tsconfig.json (59%)
 copy superset-frontend/plugins/{legacy-plugin-chart-calendar => preset-chart-deckgl}/types/external.d.ts (99%)
 create mode 100644 superset-frontend/src/dashboard/components/SliceHeaderControls/Styles.tsx
 create mode 100644 superset-frontend/src/dashboard/components/nativeFilters/FilterBar/FiltersDropdownContent/FiltersDropdownContent.test.tsx
 create mode 100644 superset-frontend/src/dashboard/hooks/useDownloadScreenshot.test.ts
 create mode 100644 superset-frontend/src/explore/components/DataTablesPane/components/useGridResultTable.tsx
 mode change 100644 => 100755 superset-frontend/src/explore/components/SaveModal.tsx
 create mode 100644 superset-frontend/src/explore/components/controls/ConditionalFormattingControl/ConditionalFormattingControl.test.tsx
 create mode 100644 superset-frontend/src/utils/downloadAsImage.test.ts
 create mode 100644 superset/charts/data/dashboard_filter_context.py
 create mode 100644 superset/mcp_service/dataset/tool/create_virtual_dataset.py
 create mode 100644 superset/mcp_service/utils/oauth2_utils.py
 create mode 100644 superset/mcp_service/utils/response_utils.py
 create mode 100644 superset/migrations/versions/2026-03-02_00-00_ce6bd21901ab_migrate_deckgl_and_mapbox.py
 create mode 100644 tests/integration_tests/migrations/ce6bd21901ab_migrate_deckgl_and_mapbox__test.py
 create mode 100644 tests/integration_tests/test_granular_export_api.py
 create mode 100644 tests/unit_tests/charts/test_dashboard_filter_context.py
 create mode 100644 tests/unit_tests/daos/test_report_dao.py
 create mode 100644 tests/unit_tests/mcp_service/dashboard/tool/test_add_chart_to_existing_dashboard.py
 create mode 100644 tests/unit_tests/mcp_service/test_g_user_race_condition.py
 create mode 100644 tests/unit_tests/security/audit_log_test.py