You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@superset.apache.org by jl...@apache.org on 2026/03/20 18:21:32 UTC
(superset) branch alert-report-test-gaps updated (b1378e63655 -> 3420c1f2f40)
This is an automated email from the ASF dual-hosted git repository.
jli pushed a change to branch alert-report-test-gaps
in repository https://gitbox.apache.org/repos/asf/superset.git
from b1378e63655 test(alerts/reports): use strict xfail for zero-boundary label bug
add 3cb00bf116d feat(database): add Google Cloud Datastore db engine spec (#37677)
add 60577bcd979 chore(deps-dev): bump webpack from 5.105.3 to 5.105.4 in /docs (#38380)
add d9a91f99dbb feat: support for import/export masked_encrypted_extra (frontend) (#38078)
add 9983e255f82 fix(charts): revert: improve negative stacked bar label positioning and accessibility (#37405) (#38484)
add c7a1f57487c fix(sqla): parenthesize extras where/having clauses in query generation (#38183)
add 577654cd02e fix(heatmap): correct tooltip display to show axis values instead of indices (#38487)
add e70c7944b75 fix(tests): achieve 100% TypeScript coverage for core packages (#38518)
add 62cebc8a0e6 fix(dashboard): prevent Apply button from disabling when required filters are auto-applied (#38479)
add dca41f9a7b8 fix(theme): prevent background color flash on page load (#38399)
add bf55f1e4388 chore(extensions): bump superset-core and superset-extensions-cli to 0.1.0rc1 (#38516)
add bc99b710bda fix(dashboard): ensure clear all respects required filter validation (#37681)
add 9017b9a74f2 chore: enable allow_update_branch in .asf.yaml (#38530)
add 61fbfda501e feat(security): add granular export controls (Phase 1) (#38361)
add 8e3e57c1c82 fix(docs): swizzle MethodEndpoint to fix SSG crash on all API pages (#38533)
add 4cd3ce164de fix(mcp): make fastmcp truly optional during Superset startup (#38534)
add 6ef4794778b fix(mcp): resolve chatbot tool call flakiness with URL and instruction fixes (#38532)
add a17f38a4e23 fix(embedded): add CurrentUserRestApi read permission to Public role defaults (#38474)
add 06fd0658ae7 chore(deps-dev): bump prettier-plugin-packagejson from 3.0.0 to 3.0.2 in /superset-frontend (#38508)
add 6c1df93215f chore(deps): bump aquasecurity/trivy-action from 0.34.2 to 0.35.0 (#38502)
add 9ecca47e693 feat(ci): only run precommit on changed files (#38155)
add 26c07b1ffb8 chore(deps-dev): bump eslint-plugin-react-you-might-not-need-an-effect from 0.9.1 to 0.9.2 in /superset-frontend (#38509)
add afa51125de4 chore(deps): bump the storybook group in /docs with 11 updates (#38501)
add 06d6b513cde chore(deps-dev): bump jest from 30.2.0 to 30.3.0 in /superset-frontend (#38549)
add 6d1d5d64d11 chore(deps): bump antd from 6.3.1 to 6.3.2 in /docs (#38547)
add 5f20d2e15ac chore(deps): bump react-syntax-highlighter from 16.1.0 to 16.1.1 in /superset-frontend (#38548)
add 0533ca9941e feat(mcp): register GlobalErrorHandlerMiddleware and LoggingMiddleware (#38523)
add 2a876e8b868 fix(mcp): add missing command.validate() to MCP chart data tools (#38521)
add 5fa70bdbd82 fix(mcp): add guardrails to prevent LLM artifact generation (#38391)
add 6342c4f338a feat(mcp): add horizontal bar chart orientation support to generate_chart (#38390)
add 5c2cbb58bc9 fix(mcp): add missing __init__.py for chart, dashboard, dataset packages (#38400)
add cc8ad23d6f9 chore(deps): bump react-diff-viewer-continued from 3.4.0 to 4.2.0 in /superset-frontend (#38552)
add 13fe88000a9 chore(deps-dev): bump lightningcss from 1.31.1 to 1.32.0 in /superset-frontend (#38511)
add 0cfd760a365 fix(mcp): improve default chart names with descriptive format (#38406)
add bde48e563ef fix: SQL Lab tab content padding (#38561)
add 31754a39c93 fix(i18n): correct variable name for translated SQL Lab query message (#38494)
add 6d7cfac8b2d fix(mcp): wrap LoggingMiddleware.on_message event_logger in try/except (#38560)
add eb77452857d feat(mcp): auto-generate dashboard title from chart names when omitted (#38410)
add 3bb9704cd51 fix(mcp): honor target_tab parameter when adding charts to tabbed dashboards (#38409)
add fe7f220c210 fix(charts): set reasonable default y-axis title margin to prevent label overlap (#38389)
add 9215eb5e45c fix(ag-grid): persist AG Grid column filters in explore permalinks (#38393)
add 9b8106b3820 chore(deps-dev): bump mini-css-extract-plugin from 2.10.0 to 2.10.1 in /superset-frontend (#38573)
add 59129419425 chore(deps-dev): bump @typescript-eslint/parser from 8.56.1 to 8.57.0 in /superset-websocket (#38570)
add d42e9c4d1b7 chore(deps): bump acorn from 8.9.0 to 8.16.0 in /superset-frontend (#38466)
add 3056c415075 chore(deps): bump caniuse-lite from 1.0.30001775 to 1.0.30001777 in /docs (#38463)
add d752be5f74a chore(deps): bump dompurify from 3.3.1 to 3.3.2 in /superset-frontend (#38455)
add ffe60bd9602 chore(deps-dev): bump oxlint from 1.51.0 to 1.53.0 in /superset-frontend (#38571)
add 27197faba97 fix(matrixify): Matrixify to not override slice id (#38515)
add a9def2fc152 fix: support nested function calls in cache_key_wrapper (#38569)
add 09e9c6a522e fix(embedded): prevent double RLS application in virtual datasets (#37395)
add 7943af359c2 feat(mcp): implement RBAC permission checking for MCP tools (#38407)
add 65e21cf13c4 docs: move MCP deployment guide to admin docs, add user-facing AI guide (#38585)
add 7f476a79b3e fix: add embedded box sizing rule for layout (#38351)
add 95f61bd223e fix: add parent_slice_id for multilayer charts to embed (#38243)
add d4f1f8db001 fix(mcp): extract role names as strings in UserInfo serialization (#38612)
add 4a9db243a17 chore(deps): bump caniuse-lite from 1.0.30001777 to 1.0.30001778 in /docs (#38593)
add 83955e87acc refactor(mcp): use serialize_user_object in get_instance_info (#38613)
add 0b8df8d3f2f build(deps): update `geostyler-*` deps to latest major versions (#38151)
add fc156d0014b fix(mcp): replace uuid with url and changed_on_humanized in default list columns (#38566)
add 56d6bb19136 feat(auth): add SAML login support to frontend (#38606)
add d91b96814e0 fix(mcp): Improve validation errors and field aliases to reduce failed LLM tool calls (#38625)
add 9516d1a306d fix(explore/dashboard): fix CSV/Excel downloads for legacy chart types (#38513)
add 32a64d02c74 fix(deckgl): polygon chart not rendering when boundary column contains nested geometry JSON (#38595)
add af5e05db2e4 fix(mcp): Support form_data_key without chart identifier for unsaved charts (#38628)
add f458e2d484f feat(mcp): add extra_form_data param to get_chart_data for dashboard filters (#38531)
add d5cf77cd60b fix(mcp): fix crashes in list tools, dataset info, chart preview, and add owner/favorite filters (#38277)
add f5383263bc7 fix(extensions): fix gitignore template and bump version (#38614)
add 18673369076 fix(editor): implement missing methods, fix cursor position clearing (#38603)
add f6106cd26f1 fix(timeshiftcolor): Time shift color to match the original color (#38473)
add ca2d26a1e2f fix(ag-grid-table): fix AND filter conditions not applied (#38369)
add ba7271b4d89 fix(world-map): add fallback fill color when colorFn returns null (#38602)
add ba7d7dcec0d chore(deps): bump react-syntax-highlighter from 16.1.0 to 16.1.1 in /superset-frontend (#38619)
add 242636b36b1 chore(deps): bump baseline-browser-mapping from 2.10.0 to 2.10.7 in /docs (#38622)
add f4a57a13bc9 chore(deps): bump dompurify from 3.3.2 to 3.3.3 in /superset-frontend (#38592)
add b6c3b3ef46d fix(mcp): return all statement results for multi-statement SQL queries (#38388)
add 97a66f7a647 feat(mcp): add BM25 tool search transform to reduce initial context size (#38562)
add e8061a9c2b4 style(metadata-bar): use bold font weight for metadata bar title (#38608)
add 6e7d6a85b45 fix(ag-grid-table): fix failing buildQuery test expectation (#38636)
add ed622e254a4 feat(matrixify): Revamp control panel (#38519)
add 48220fb33f8 feat(mcp): add save_sql_query tool for SQL Lab saved queries (#38414)
add 68e38c88936 chore(deps): bump undici from 7.22.0 to 7.24.1 in /superset-frontend (#38642)
add 176bf00c169 chore(deps-dev): bump baseline-browser-mapping from 2.10.0 to 2.10.7 + sync lockfile + run `npm audit fix` in /superset-frontend (#38621)
add 39cd1cdd436 chore(deps): bump dawidd6/action-download-artifact from 16 to 17 (#38620)
add cc066b35761 fix(docs): use absolute API doc links in developer docs (#38649)
add afe093f1ca5 fix(FilterBar): reduce padded space between filter header and first filter (#38646)
add dcb414aa064 feat(extensions): add update command to extensions cli (#38651)
add aa5adb0fce1 fix(embedded): default to light theme instead of system preference (#38644)
add 7909095ff34 feat(native-filters): add configurable LIKE/ILIKE operators to Select filter (#38470)
add 96705c156a9 fix(map-box): make opacity, lon, lat, and zoom controls functional (#38374)
add ca403dc45d0 fix(ci): allow docs testing to run despite absence of db diagnostics data (#38655)
add 1c8224f4c63 feat(mcp): Add tool annotations for MCP directory compliance (#38641)
add a854fa60a2e feat: apply RLS conservatively (#38683)
add c980f39aabe chore(deps): bump caniuse-lite from 1.0.30001778 to 1.0.30001780 in /docs (#38688)
add 461037f645d chore(deps-dev): bump typescript-eslint from 8.56.1 to 8.57.1 in /docs (#38684)
add 5865176f363 fix(dashboard): overload issue in dashboard export to excel (#29418)
add 6f301707f9f fix: Simplify extension folder name (#38690)
add 05b9970aa66 fix(map-box): prevent clusters from being smaller than individual points (#38458)
add 91986fff023 fix(tests): restore 100% TypeScript coverage for core packages (#38682)
add 834d2abe707 chore(deps): bump antd from 6.3.2 to 6.3.3 in /docs (#38686)
add e02ca8871dd fix(mcp): expose individual tool parameters when MCP_PARSE_REQUEST_ENABLED=False (#38714)
add a314e5b35ef fix: Row limit support for chart mcp tools (#38717)
add fd1c423826d fix(chart): prevent chart list from failing when a datasource lacks explore_url (#38721)
add 3edf75123a9 chore(deps): bump swagger-ui-react from 5.32.0 to 5.32.1 in /docs (#38708)
add 03de7e1ec62 fix(dashboard): use inline theme data to prevent 403 for non-admin users (#38384)
add 972e15e6011 fix(sql): remove WHERE 1 = 1 when temporal filter has "No filter" selected (#38704)
add 14b1b456e16 fix: Add aliases and groupby list to chart schemas (#38740)
add 5457c2da676 chore(deps): bump dawidd6/action-download-artifact from 17 to 19 (#38735)
add d6bfc98a616 feat(ci): use zstd for faster saving and loading `superset-node-ci` image (#38645)
add 211f29b7234 fix(mcp): Chart schema followups - DRY extraction, template fix, alias and test gaps (#38746)
add 01aa4d32816 chore(deps): bump match-sorter from 6.3.4 to 8.2.0 in /superset-frontend (#36470)
add 6465450b64a fix(firebolt): Firebolt SQL entered with EXCLUDE is rewritten to EXCEPT (#38742)
add d4646d43a76 docs(security): update vulnerability reporting policy and admin trust boundary (#38653)
add 65f13f773e5 fix(theme): ensure colorLink follows colorPrimary when not explicitly set (#38517)
add ee233d16d69 fix(dashboard): correct tab underline width for newly added dashboard tabs. (#38524)
add b754f2d1733 fix(theme): persist local theme id so "Local" tag remains after navigation (#38527)
add 6b9dd23e3a5 fix(timeseries-table): enable proper column sorting in timeseries-table chart (#38579)
add 82a74c88aa3 fix(button): Theming configurations for button elements is not consistent (#38604)
add cbb2b2f3c25 feat(themes): add JSON formatting to theme modal editor (#38739)
add c2a21915ff3 fix(mcp): fix dashboard slug null and execute_sql encoding error (#38710)
add 5e5c05362c2 fix(mcp): use correct permission class for save_sql_query tool (#38764)
add e088979fbed fix(reports): validate nativeFilters on report create/update and deactivate on dashboard filter deletion (#38715)
add 97ea479cdcd chore(deps-dev): bump flatted from 3.3.1 to 3.4.2 in /superset-websocket (#38752)
add ea1c6ee30f3 chore(deps): bump geostyler-openlayers-parser from 5.4.0 to 5.4.1 in /superset-frontend (#38755)
add 1af5da6aad3 chore(deps): bump baseline-browser-mapping from 2.10.7 to 2.10.9 in /docs (#38756)
add 1d72480c178 fix(mcp): fix detached Slice instance error in chart/dashboard serialization (#38767)
add 28d67d59cd7 chore(deps-dev): bump flatted from 3.2.2 to 3.4.2 in /superset-frontend/cypress-base (#38761)
add 3420c1f2f40 Merge remote-tracking branch 'origin/master' into alert-report-test-gaps
No new revisions were added by this update.
Summary of changes:
.asf.yaml | 4 +-
.github/SECURITY.md | 37 +-
.github/workflows/docker.yml | 2 +-
.github/workflows/pre-commit.yml | 10 +-
.github/workflows/superset-docs-deploy.yml | 4 +-
.github/workflows/superset-docs-verify.yml | 3 +-
.github/workflows/superset-frontend.yml | 15 +-
.gitignore | 1 +
UPDATING.md | 8 +
.../configuration/mcp-server.mdx} | 15 +-
docs/admin_docs/security/security.mdx | 8 +
docs/developer_docs/api.mdx | 484 ++--
docs/developer_docs/extensions/development.md | 10 +-
docs/developer_docs/extensions/quick-start.md | 2 +-
docs/developer_docs/sidebars.js | 1 -
.../docs/using-superset/using-ai-with-superset.mdx | 245 ++
docs/package.json | 30 +-
docs/scripts/generate-api-index.mjs | 6 +-
.../src/theme/ApiExplorer/MethodEndpoint/index.tsx | 120 +
docs/static/feature-flags.json | 6 +
docs/static/img/databases/datastore.png | Bin 0 -> 5248 bytes
docs/yarn.lock | 1126 ++++-----
pyproject.toml | 2 +-
requirements/base.txt | 2 +-
requirements/development.txt | 65 +-
superset-core/README.md | 98 +-
superset-core/pyproject.toml | 2 +-
superset-core/src/superset_core/mcp/decorators.py | 33 +-
superset-embedded-sdk/src/index.ts | 1 +
superset-extensions-cli/README.md | 73 +-
superset-extensions-cli/pyproject.toml | 3 +-
.../src/superset_extensions_cli/cli.py | 165 +-
.../templates/{.gitignore.j2 => gitignore.j2} | 0
.../src/superset_extensions_cli/utils.py | 10 +
superset-extensions-cli/tests/conftest.py | 68 +
superset-extensions-cli/tests/test_cli_build.py | 4 +-
superset-extensions-cli/tests/test_cli_init.py | 60 +-
superset-extensions-cli/tests/test_cli_update.py | 172 ++
superset-extensions-cli/tests/test_cli_validate.py | 63 +
superset-extensions-cli/tests/test_utils.py | 31 +-
superset-frontend/cypress-base/package-lock.json | 12 +-
superset-frontend/jest.config.js | 2 +-
superset-frontend/oxlint.json | 3 +-
superset-frontend/package-lock.json | 2636 +++++++++-----------
superset-frontend/package.json | 27 +-
.../packages/generator-superset/package.json | 2 +-
superset-frontend/packages/superset-core/README.md | 148 +-
.../packages/superset-core/package.json | 2 +-
.../packages/superset-core/src/editors/index.ts | 43 +
.../packages/superset-core/src/sqlLab/index.ts | 16 +
.../superset-core/src/theme/Theme.test.tsx | 70 +
.../packages/superset-core/src/theme/Theme.tsx | 15 +
.../packages/superset-core/src/theme/types.ts | 50 +
.../src/theme/utils/themeUtils.test.ts | 30 +
.../superset-core/src/theme/utils/utils.test.ts | 22 +
.../src/translation/Translator.test.ts | 132 +
.../superset-core/src/translation/Translator.ts | 1 +
.../src/translation/TranslatorSingleton.test.ts | 112 +
.../packages/superset-core/src/utils/logging.ts | 1 +
.../src/operators/utils/timeOffset.ts | 12 +-
.../src/sections/matrixify.tsx | 42 +-
.../src/shared-controls/matrixifyControls.tsx | 114 +-
.../test/operators/utils/timeOffset.test.ts | 92 +-
.../packages/superset-ui-core/package.json | 2 +-
.../Matrixify/MatrixifyGridGenerator.test.ts | 20 +
.../components/Matrixify/MatrixifyGridGenerator.ts | 2 +-
.../Matrixify/MatrixifyGridRenderer.test.tsx | 56 +-
.../components/Matrixify/MatrixifyGridRenderer.tsx | 6 +-
.../src/chart/types/matrixify.test.ts | 57 +-
.../superset-ui-core/src/chart/types/matrixify.ts | 80 +-
.../src/components/Button/Button.test.tsx | 167 ++
.../src/components/Button/index.tsx | 75 +-
.../src/components/EditableTitle/index.tsx | 11 +-
.../src/components/MetadataBar/ContentConfig.tsx | 2 +-
.../superset-ui-core/src/components/Tabs/Tabs.tsx | 120 +-
.../superset-ui-core/src/query/types/Operator.ts | 1 +
.../superset-ui-core/src/utils/featureFlags.ts | 1 +
.../superset-ui-core/test/query/getAxis.test.ts | 50 +-
.../test/utils/featureFlag.test.ts | 13 +
.../playwright/helpers/api/dashboard.ts | 1 +
superset-frontend/playwright/helpers/api/theme.ts | 62 +
.../playwright/helpers/fixtures/testAssets.ts | 21 +-
.../tests/experimental/dashboard/theme.spec.ts | 152 ++
.../legacy-plugin-chart-map-box/src/MapBox.tsx | 96 +-
.../src/ScatterPlotGlowOverlay.tsx | 61 +-
.../src/controlPanel.ts | 7 +-
.../src/transformProps.ts | 44 +-
.../test/MapBox.test.tsx | 381 +++
.../test/ScatterPlotGlowOverlay.test.tsx | 663 ++++-
.../test/controlPanel.test.ts | 81 +
.../test/transformProps.test.ts | 230 ++
.../legacy-plugin-chart-world-map/src/WorldMap.ts | 14 +-
.../test/WorldMap.test.ts | 53 +
.../src/Multi/Multi.test.tsx | 137 +
.../legacy-preset-chart-deckgl/src/Multi/Multi.tsx | 2 +
.../src/layers/Polygon/transformProps.test.ts | 120 +
.../src/layers/Polygon/transformProps.ts | 4 +
.../plugins/legacy-preset-chart-nvd3/package.json | 2 +-
.../plugin-chart-ag-grid-table/package.json | 1 -
.../src/AgGridTableChart.tsx | 3 +
.../plugin-chart-ag-grid-table/src/buildQuery.ts | 80 +-
.../src/transformProps.ts | 38 +-
.../plugin-chart-ag-grid-table/src/types.ts | 1 +
.../test/buildQuery.test.ts | 254 ++
.../plugins/plugin-chart-cartodiagram/package.json | 8 +-
.../test/util/layerUtil.test.ts | 7 +-
.../plugins/plugin-chart-echarts/package.json | 2 +-
.../src/Heatmap/transformProps.ts | 24 +-
.../src/Timeseries/EchartsTimeseries.test.tsx | 2 +-
.../src/Timeseries/constants.ts | 2 +-
.../src/Timeseries/transformProps.ts | 17 +-
.../src/Timeseries/transformers.ts | 43 +-
.../plugins/plugin-chart-echarts/src/constants.ts | 2 +-
.../test/MixedTimeseries/transformProps.test.ts | 2 +-
.../test/Timeseries/transformers.test.ts | 97 +-
.../plugins/plugin-chart-handlebars/package.json | 2 +-
.../plugins/plugin-chart-pivot-table/package.json | 2 +-
.../plugins/plugin-chart-table/package.json | 2 +-
.../src/SqlLab/components/ResultSet/index.tsx | 2 +-
.../src/SqlLab/components/SouthPane/index.tsx | 2 +
.../Chart/ChartContextMenu/ChartContextMenu.tsx | 6 +-
.../src/components/Chart/ChartRenderer.test.tsx | 22 +-
.../src/components/Chart/ChartRenderer.tsx | 6 +-
.../Chart/DrillBy/DrillBySubmenu.test.tsx | 4 +-
.../components/Chart/DrillBy/DrillBySubmenu.tsx | 6 +-
.../src/components/Chart/chartReducers.test.ts | 45 +-
.../src/components/CrudThemeProvider.test.tsx | 326 +++
.../src/components/CrudThemeProvider.tsx | 94 +-
.../components/ImportModal/ImportModal.test.tsx | 44 +
.../src/components/ImportModal/index.tsx | 51 +-
.../src/components/ImportModal/types.ts | 9 +-
.../src/core/editors/AceEditorProvider.tsx | 41 +-
superset-frontend/src/core/sqlLab/index.ts | 7 +
.../src/dashboard/components/Header/index.tsx | 7 +-
.../PropertiesModal/PropertiesModal.test.tsx | 70 +
.../dashboard/components/PropertiesModal/index.tsx | 7 +-
.../PropertiesModal/sections/StylingSection.tsx | 1 +
.../components/gridComponents/Tab/Tab.test.tsx | 38 +
.../components/gridComponents/Tab/Tab.tsx | 2 +-
.../nativeFilters/ConfigModal/SharedStyles.tsx | 19 +-
.../FilterBar/ActionButtons/index.tsx | 124 +-
.../nativeFilters/FilterBar/FilterBar.test.tsx | 1141 +++++----
.../nativeFilters/FilterBar/Header/index.tsx | 6 +-
.../nativeFilters/FilterBar/Vertical.tsx | 1 +
.../components/nativeFilters/FilterBar/index.tsx | 100 +-
.../nativeFilters/FilterBar/utils.test.ts | 1145 ++++++---
.../components/nativeFilters/FilterBar/utils.ts | 137 +-
.../FiltersConfigModal/FilterTitleContainer.tsx | 1 +
.../FiltersConfigForm/FiltersConfigForm.tsx | 116 +-
.../FiltersConfigForm/getControlItemsMap.tsx | 3 +-
.../FiltersConfigModal/ItemTitleContainer.tsx | 1 +
.../dashboard/containers/DashboardPage.test.tsx | 256 ++
.../src/dashboard/containers/DashboardPage.tsx | 8 +-
.../src/dashboard/reducers/dashboardInfo.test.ts | 156 ++
.../src/dashboard/reducers/dashboardInfo.ts | 39 +-
superset-frontend/src/dashboard/types.ts | 4 +-
superset-frontend/src/dataMask/reducer.ts | 20 +-
.../src/embedded/EmbeddedContextProviders.tsx | 3 +-
superset-frontend/src/embedded/index.tsx | 12 +
.../src/explore/actions/exploreActions.ts | 13 +
.../src/explore/actions/hydrateExplore.ts | 27 +-
.../components/ControlPanelsContainer.test.tsx | 9 +-
.../explore/components/ControlPanelsContainer.tsx | 7 +-
.../ExploreChartHeader/ExploreChartHeader.test.tsx | 2 +-
.../explore/components/ExploreChartPanel/index.tsx | 71 +-
.../LayerConfigsControl/GeoStylerWrapper.tsx | 1 +
.../controls/MatrixifyDimensionControl.tsx | 74 +-
.../explore/components/controls/SwitchControl.tsx | 65 +
.../components/controls/VerticalRadioControl.tsx | 104 +
.../src/explore/components/controls/index.ts | 4 +
.../useExploreAdditionalActionsMenu/index.tsx | 28 +-
.../src/explore/controlPanels/sections.tsx | 86 +-
.../src/explore/exploreUtils/exportChart.test.ts | 104 +-
.../src/explore/exploreUtils/getExploreUrl.test.ts | 31 +
.../exploreUtils/getLegacyEndpointType.test.ts | 6 +
.../src/explore/exploreUtils/index.ts | 32 +-
.../src/explore/reducers/exploreReducer.ts | 35 +-
superset-frontend/src/explore/types.ts | 7 +-
.../DatabaseConnectionForm/EncryptedField.tsx | 1 +
.../src/features/databases/DatabaseModal/index.tsx | 83 +-
.../src/features/themes/ThemeModal.test.tsx | 132 +
.../src/features/themes/ThemeModal.tsx | 86 +-
.../components/Select/SelectFilterPlugin.test.tsx | 413 ++-
.../components/Select/SelectFilterPlugin.tsx | 152 +-
.../filters/components/Select/buildQuery.test.ts | 94 +-
.../components/Select/controlPanel.test.ts} | 30 +-
.../src/filters/components/Select/controlPanel.ts | 75 +-
.../filters/components/Select/transformProps.ts | 11 +-
.../src/filters/components/Select/types.ts | 9 +
superset-frontend/src/filters/utils.ts | 45 +-
.../src/hooks/usePermissions.test.tsx | 128 +
superset-frontend/src/hooks/usePermissions.ts | 18 +-
superset-frontend/src/pages/Chart/index.tsx | 16 +
.../src/pages/ChartList/ChartList.testHelpers.tsx | 2 +-
superset-frontend/src/pages/Login/Login.test.tsx | 46 +-
superset-frontend/src/pages/Login/index.tsx | 4 +-
superset-frontend/src/theme/ThemeController.ts | 11 +
superset-frontend/src/theme/ThemeProvider.tsx | 3 +-
.../src/theme/tests/ThemeController.test.ts | 112 +
.../src/theme/tests/ThemeProvider.test.tsx | 33 +
.../src/theme/utils/antdTokenNames.ts | 14 +
superset-frontend/src/utils/urlUtils.ts | 9 +-
superset-frontend/src/views/CRUD/hooks.ts | 26 +-
superset-frontend/src/views/CRUD/types.ts | 10 +
superset-frontend/src/views/CRUD/utils.test.tsx | 154 ++
superset-frontend/src/views/CRUD/utils.tsx | 43 +-
.../TimeTable/utils/sortUtils/sortUtils.test.ts | 78 +-
.../TimeTable/utils/sortUtils/sortUtils.ts | 55 +-
superset-frontend/webpack.config.js | 2 +-
superset-websocket/package-lock.json | 344 ++-
superset-websocket/package.json | 2 +-
superset/charts/data/api.py | 13 +-
superset/commands/dashboard/update.py | 118 +-
superset/commands/database/validate.py | 2 +-
superset/commands/explore/get.py | 7 +-
superset/commands/report/base.py | 146 +-
superset/commands/report/create.py | 34 -
superset/commands/report/update.py | 1 +
superset/common/query_context_factory.py | 5 +-
superset/config.py | 5 +
superset/connectors/sqla/models.py | 12 +-
superset/core/mcp/core_mcp_injection.py | 57 +-
superset/daos/chart.py | 4 +-
superset/daos/dashboard.py | 59 +-
superset/daos/dataset.py | 11 +
superset/daos/report.py | 13 +
superset/db_engine_specs/datastore.py | 610 +++++
superset/explore/permalink/schemas.py | 10 +
superset/explore/permalink/types.py | 1 +
superset/jinja_context.py | 14 +-
superset/mcp_service/app.py | 36 +-
superset/mcp_service/auth.py | 136 +-
.../mcp_service/chart}/__init__.py | 0
superset/mcp_service/chart/chart_utils.py | 308 ++-
superset/mcp_service/chart/preview_utils.py | 18 +-
.../mcp_service/chart/resources/chart_configs.py | 30 +-
superset/mcp_service/chart/schemas.py | 506 ++--
superset/mcp_service/chart/tool/generate_chart.py | 62 +-
superset/mcp_service/chart/tool/get_chart_data.py | 323 ++-
superset/mcp_service/chart/tool/get_chart_info.py | 123 +-
.../mcp_service/chart/tool/get_chart_preview.py | 157 +-
superset/mcp_service/chart/tool/list_charts.py | 18 +-
superset/mcp_service/chart/tool/update_chart.py | 13 +-
.../mcp_service/chart/tool/update_chart_preview.py | 14 +-
.../chart/validation/dataset_validator.py | 11 +-
.../chart/validation/runtime/__init__.py | 2 +-
superset/mcp_service/common/cache_schemas.py | 35 +-
superset/mcp_service/common/schema_discovery.py | 22 +-
.../mcp_service/dashboard}/__init__.py | 0
superset/mcp_service/dashboard/schemas.py | 145 +-
.../tool/add_chart_to_existing_dashboard.py | 167 +-
.../dashboard/tool/generate_dashboard.py | 93 +-
.../dashboard/tool/get_dashboard_info.py | 12 +-
.../mcp_service/dashboard/tool/list_dashboards.py | 18 +-
.../mcp_service/dataset}/__init__.py | 0
superset/mcp_service/dataset/schemas.py | 31 +-
.../mcp_service/dataset/tool/get_dataset_info.py | 12 +-
superset/mcp_service/dataset/tool/list_datasets.py | 17 +-
.../explore/tool/generate_explore_link.py | 12 +-
superset/mcp_service/flask_singleton.py | 70 +-
superset/mcp_service/mcp_config.py | 39 +
superset/mcp_service/mcp_core.py | 7 +-
superset/mcp_service/middleware.py | 73 +-
superset/mcp_service/server.py | 159 +-
superset/mcp_service/sql_lab/schemas.py | 113 +-
superset/mcp_service/sql_lab/tool/__init__.py | 2 +
superset/mcp_service/sql_lab/tool/execute_sql.py | 104 +-
.../sql_lab/tool/open_sql_lab_with_context.py | 24 +-
.../mcp_service/sql_lab/tool/save_sql_query.py | 146 ++
superset/mcp_service/system/schemas.py | 125 +-
superset/mcp_service/system/system_utils.py | 4 +-
.../mcp_service/system/tool/get_instance_info.py | 32 +-
superset/mcp_service/system/tool/get_schema.py | 11 +-
superset/mcp_service/system/tool/health_check.py | 15 +-
superset/mcp_service/utils/schema_utils.py | 279 ++-
...1b2c3d4e5f6_add_granular_export_permissions.py} | 43 +-
superset/models/helpers.py | 88 +-
superset/models/slice.py | 9 +-
superset/security/manager.py | 70 +-
superset/sql/dialects/firebolt.py | 2 +
superset/sql/parse.py | 14 +-
superset/templates/superset/spa.html | 32 +-
superset/translations/ar/LC_MESSAGES/messages.po | 2 +-
superset/translations/ca/LC_MESSAGES/messages.po | 2 +-
superset/translations/de/LC_MESSAGES/messages.po | 2 +-
superset/translations/es/LC_MESSAGES/messages.po | 2 +-
superset/translations/fa/LC_MESSAGES/messages.po | 2 +-
superset/translations/fr/LC_MESSAGES/messages.po | 2 +-
superset/translations/ja/LC_MESSAGES/messages.po | 2 +-
superset/translations/mi/LC_MESSAGES/messages.po | 4 +-
superset/translations/nl/LC_MESSAGES/messages.po | 2 +-
superset/translations/pl/LC_MESSAGES/messages.po | 2 +-
.../translations/pt_BR/LC_MESSAGES/messages.po | 2 +-
superset/translations/sl/LC_MESSAGES/messages.po | 2 +-
superset/translations/uk/LC_MESSAGES/messages.po | 2 +-
superset/utils/rls.py | 20 +-
superset/views/base.py | 21 +-
superset/views/core.py | 51 +-
.../db_engine_specs/datastore_tests.py | 521 ++++
tests/integration_tests/reports/api_tests.py | 368 +++
tests/integration_tests/security_tests.py | 2 +
tests/integration_tests/sqla_models_tests.py | 5 +-
tests/unit_tests/db_engine_specs/test_datastore.py | 985 ++++++++
tests/unit_tests/jinja_context_test.py | 21 +
.../mcp_service/chart/test_chart_schemas.py | 226 +-
.../mcp_service/chart/test_chart_utils.py | 321 ++-
.../mcp_service/chart/test_new_chart_types.py | 125 +-
.../mcp_service/chart/tool/test_generate_chart.py | 96 +-
.../mcp_service/chart/tool/test_get_chart_data.py | 187 ++
.../mcp_service/chart/tool/test_list_charts.py | 12 +-
.../validation/test_column_name_normalization.py | 10 +-
tests/unit_tests/mcp_service/conftest.py | 19 +-
.../dashboard/test_dashboard_schemas.py | 119 +
.../dashboard/tool/test_dashboard_generation.py | 399 ++-
.../dashboard/tool/test_dashboard_tools.py | 19 +-
.../mcp_service/dataset/tool/test_dataset_tools.py | 25 +-
.../mcp_service/sql_lab/tool/test_execute_sql.py | 352 +++
.../sql_lab/tool/test_save_sql_query.py | 467 ++++
.../system/test_serialize_user_object.py | 167 ++
.../system/tool/test_get_current_user.py | 3 +-
.../mcp_service/system/tool/test_get_schema.py | 47 +-
.../mcp_service/system/tool/test_mcp_core.py | 5 +-
tests/unit_tests/mcp_service/test_auth_rbac.py | 225 ++
.../mcp_service/test_mcp_tool_registration.py | 70 +-
.../mcp_service/test_tool_search_transform.py | 173 ++
.../mcp_service/utils/test_schema_utils.py | 311 ++-
tests/unit_tests/models/helpers_test.py | 113 +
tests/unit_tests/models/slice_test.py | 38 +
.../models/test_double_rls_virtual_dataset.py | 286 +++
.../unit_tests/models/test_no_filter_time_range.py | 307 +++
.../models/test_virtual_dataset_format.py | 382 +++
tests/unit_tests/security/guest_rls_test.py | 298 +++
tests/unit_tests/security/manager_test.py | 114 +
.../security/test_granular_export_permissions.py | 110 +
tests/unit_tests/sql/parse_tests.py | 2 +-
tests/unit_tests/sql/test_firebolt_dialect.py | 62 +
tests/unit_tests/sql_lab_test.py | 3 +
tests/unit_tests/views/test_bootstrap_auth.py | 135 +
338 files changed, 23424 insertions(+), 5715 deletions(-)
rename docs/{developer_docs/extensions/mcp-server.md => admin_docs/configuration/mcp-server.mdx} (96%)
create mode 100644 docs/docs/using-superset/using-ai-with-superset.mdx
create mode 100644 docs/src/theme/ApiExplorer/MethodEndpoint/index.tsx
create mode 100644 docs/static/img/databases/datastore.png
rename superset-extensions-cli/src/superset_extensions_cli/templates/{.gitignore.j2 => gitignore.j2} (100%)
create mode 100644 superset-extensions-cli/tests/test_cli_update.py
create mode 100644 superset-frontend/packages/superset-core/src/translation/Translator.test.ts
create mode 100644 superset-frontend/packages/superset-core/src/translation/TranslatorSingleton.test.ts
create mode 100644 superset-frontend/playwright/helpers/api/theme.ts
create mode 100644 superset-frontend/playwright/tests/experimental/dashboard/theme.spec.ts
create mode 100644 superset-frontend/plugins/legacy-plugin-chart-map-box/test/MapBox.test.tsx
create mode 100644 superset-frontend/plugins/legacy-plugin-chart-map-box/test/controlPanel.test.ts
create mode 100644 superset-frontend/plugins/legacy-plugin-chart-map-box/test/transformProps.test.ts
create mode 100644 superset-frontend/src/components/CrudThemeProvider.test.tsx
create mode 100644 superset-frontend/src/dashboard/containers/DashboardPage.test.tsx
create mode 100644 superset-frontend/src/dashboard/reducers/dashboardInfo.test.ts
create mode 100644 superset-frontend/src/explore/components/controls/SwitchControl.tsx
create mode 100644 superset-frontend/src/explore/components/controls/VerticalRadioControl.tsx
copy superset-frontend/src/{features/datasets/AddDataset/RightPanel/RightPanel.test.tsx => filters/components/Select/controlPanel.test.ts} (52%)
create mode 100644 superset-frontend/src/hooks/usePermissions.test.tsx
create mode 100644 superset/db_engine_specs/datastore.py
copy {superset-core/src/superset_core/common => superset/mcp_service/chart}/__init__.py (100%)
copy {superset-core/src/superset_core/common => superset/mcp_service/dashboard}/__init__.py (100%)
copy {superset-core/src/superset_core/common => superset/mcp_service/dataset}/__init__.py (100%)
create mode 100644 superset/mcp_service/sql_lab/tool/save_sql_query.py
copy superset/migrations/versions/{2024-02-07_17-13_87d38ad83218_migrate_can_view_and_drill_permission.py => 2026-03-02_12-00_a1b2c3d4e5f6_add_granular_export_permissions.py} (65%)
create mode 100644 tests/integration_tests/db_engine_specs/datastore_tests.py
create mode 100644 tests/unit_tests/db_engine_specs/test_datastore.py
create mode 100644 tests/unit_tests/mcp_service/dashboard/test_dashboard_schemas.py
create mode 100644 tests/unit_tests/mcp_service/sql_lab/tool/test_save_sql_query.py
create mode 100644 tests/unit_tests/mcp_service/system/test_serialize_user_object.py
create mode 100644 tests/unit_tests/mcp_service/test_auth_rbac.py
create mode 100644 tests/unit_tests/mcp_service/test_tool_search_transform.py
create mode 100644 tests/unit_tests/models/test_double_rls_virtual_dataset.py
create mode 100644 tests/unit_tests/models/test_no_filter_time_range.py
create mode 100644 tests/unit_tests/models/test_virtual_dataset_format.py
create mode 100644 tests/unit_tests/security/guest_rls_test.py
create mode 100644 tests/unit_tests/security/test_granular_export_permissions.py
create mode 100644 tests/unit_tests/sql/test_firebolt_dialect.py
create mode 100644 tests/unit_tests/views/test_bootstrap_auth.py