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 2025/12/01 21:05:03 UTC

(superset) branch fix-datasource-editor-async updated (62c9eb74e9 -> 82202ddf45)

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

jli pushed a change to branch fix-datasource-editor-async
in repository https://gitbox.apache.org/repos/asf/superset.git


 discard 62c9eb74e9 chore: add 30s timeout to test
 discard a42d9fe8d3 fix(DatasourceEditor): replace selectOption with direct userEvent for CI stability
 discard 54cd276014 fix(DatasourceEditor): replace selectOption with direct userEvent for CI stability
 discard 7b415480c0 fix(DatasourceEditor): use asyncRender and role-based selectors for CI stability
 discard ffbd1cee9d perf(DatasourceEditor): dismiss warning modal and trim test data
 discard 3476ef06a2 fix(DatasourceEditor): use proper async patterns to fix CI timeouts
 discard ec0697c6d6 fix(DatasourceEditor): replace fireEvent with userEvent to fix CI timeouts
 discard a1ab88fa8c perf(DatasourceEditor): optimize tests with fireEvent and shared utilities
 discard cf65c4ef94 perf(DatasourceEditor): speed up slow tests with fireEvent and selectOption
 discard c1e7b37c1c refactor(DatasourceEditor): reduce test timeouts and fix lint issues
 discard 958121b347 fix(DatasourceEditor): add async cleanup to prevent test pollution
 discard 7b3413fd1f refactor(DatasourceEditor): extract test utilities and add factory function
 discard dbbf62ab08 test(DatasourceEditor): remove describe() blocks and consolidate tests
 discard 74cc15f3c7 fix(dashboard): eliminate timer pollution in FiltersConfigModal tests
 discard 265bc2dda0 refactor(DatasourceEditor): extract duplicate API mocks to shared utility
 discard c22665e06f fix(DatasourceEditor): add missing OwnersSelector API mock to prevent async errors
 discard a9e4c54c65 fix(DatasourceEditor): add mount guards and fix async race conditions
     add 6701d0ae0c fix: Use singlestoredb dialect for sqlglot (#36096)
     add 467b008f36 fix: save button was enabled even no changes were made to the dashboard (#35817)
     add 4a04d46118 fix(explore): re-apply filters when 'Group remaining as Others' is enabled (#35937)
     add 74a590cb76 fix(dashboard): refresh tabs as they load when dashboard is refreshed (#35265)
     add 78f9debdd4 fix(dashboard): prevent tab content cutoff and excessive whitespace in empty tabs (#35834)
     add 37d58a476c fix(chart): align legend with chart grid in List mode for Top/Bottom orientations (#36077)
     add b051f779e6 chore: bump FAB to 5.0.2 (#36086)
     add f8933c2743 style(database-modal): vertically align the button and the InfoTooltip icon (#36087)
     add 9ef87e75d5 fix(ace-editor-popover): main AntD popover closes when clicking autocomplete suggestions in Ace Editor (#35986)
     add f3e620cd0f fix: RLS in virtual datasets (#36061)
     add 001b6cb801 feat: Floating Point Formatting for Scatter Point Chart (#35915)
     add e6a5616543 fix: opacity color formating (#36101)
     add c955a5dc08 fix(histogram): add NULL handling for histogram (#35693)
     add c2baba50f9 chore: abstract models and daos into superset-core (#35259)
     add 9605a4a9cb fix(mcp-service): ensure Flask app context in auth hook and resolve Pydantic warnings (#36013)
     add 85413f2a65 fix: fix crossfilter persisting after removal (#35998)
     add dad469297c feat(mcp): add configurable branding for MCP service (#36033)
     add 962faa2196 fix: Use total count to filter datasets (#36135)
     add fb8eb2a5c3 fix(dashboard): ensure world map chart uses correct country code format in crossfilter (#35919)
     add 519990e2fb fix: pin setuptools <81 to prevent pkg_resources removal (#36104)
     add 6723a58780 perf: Fix dashboard performance issues (#36119)
     add 9bff64824b fix(navbar): some styling + components inconsistencies (#36120)
     add 282f4e5de2 feat(embedded): add setThemeMode API for dynamic theme switching (#36125)
     add fb7d0e0e3d chore: annotate important types (#36034)
     add 9d06a5888f fix(csv-upload): log detailed errors during chunk concatenation for debugging (#36108)
     add 3b226038ba fix(datasets): prevent double time filter application in virtual datasets (#35890)
     add 6fc7af5ba8 build: update Dockerfile to 3.11.14-slim-trixie (#36047)
     add 28bdec2c79 fix(tags): ensure tag creation is compatible with MySQL by avoiding Markup objects (#36075)
     add f8943c17c2 chore(deps): bump js-yaml in /superset-websocket (#36142)
     add fb325a8f24 fix(translations): Fix Russian translations for EmptyState (#34055)
     add cc1d22012c chore(deps): bump antd from 5.28.0 to 5.28.1 in /docs (#36065)
     add 225886e859 chore(deps-dev): bump @typescript-eslint/parser from 8.46.2 to 8.46.4 in /docs (#36064)
     add d91d81b5df chore(deps-dev): bump typescript-eslint from 8.46.2 to 8.46.4 in /docs (#36066)
     add b5cac47ba7 chore(deps-dev): bump @eslint/js from 9.39.0 to 9.39.1 in /docs (#35975)
     add a9fd600c52 fix: 'save and go to dashboard' option was disabled after changing the chart type (#36122)
     add 8315804c85 fix(cache): apply dashboard filters to non-legacy visualizations  (#36109)
     add 80ec241108 feat(dashboard): "embed code" option on dashboard share tab (#33163)
     add 43e9e1ec36 fix:  role list edit modal height (#36123)
     add a268232ed6 fix(datasets): prevent viewport overflow in dataset creation page (#36166)
     add 53b9045943 chore(DatabaseModal): simplify collapsible logic for extra extension section (#36118)
     add 21f85a4145 feat(tree chart): add initial tree depth to tree chart (#35425)
     add 4582f0e8d2 fix(dashboard): ensure charts re-render when visibility state changes (#36011)
     add 66afdfd119 docs(mcp): add comprehensive architecture, security, and production deployment documentation (#36017)
     add d0bf1cca60 chore(deps-dev): bump js-yaml from 3.14.1 to 3.14.2 in /superset-embedded-sdk (#36172)
     add cdbd5bf4f9 chore(docs): config Kapa to use logo from the repo (#36177)
     add 69fc7f6852 chore(deps-dev): bump webpack from 5.102.1 to 5.103.0 in /docs (#36178)
     add 9f55287672 chore(deps): bump caniuse-lite from 1.0.30001754 to 1.0.30001756 in /docs (#36179)
     add f5b79c3623 chore(deps-dev): bump eslint from 9.39.0 to 9.39.1 in /docs (#35976)
     add 05d10d8e77 chore(deps-dev): bump @typescript-eslint/parser from 8.46.2 to 8.46.3 in /superset-websocket (#35973)
     add 53207302f9 chore: bump duckdb et al. (#36171)
     add 6d359161bb fix(dashboard): adjust vertical spacing for numerical range filter to prevent overlaps (#36167)
     add 35f156a1e1 feat(streaming): Streaming CSV uploads for over 100k records for constant memory usage (#35478)
     add 92d8139136 fix(security): enable AUTH_RATE_LIMITED to work correctly (#36195)
     add e68150c3ce chore(deps-dev): bump @types/node from 24.10.0 to 24.10.1 in /superset-websocket (#36198)
     add be0283b9f2 chore(deps): bump antd from 5.28.1 to 5.29.1 in /docs (#36180)
     add 7805666103 perf(docker): exclude unnecessary directories from Flask reloader watch (#36143)
     add 71c015c579 feat(Tabs): Rearange tabs when editing dashboard (#35156)
     add 979d385eea fix: recompile dependencies with linux and update generate dependency script (#36194)
     add 348b19cb4c fix(sqllab): validate results backend writes and enhance 410 diagnostics (#36222)
     add 02bbc7c7de chore(deps-dev): bump eslint from 9.39.0 to 9.39.1 in /superset-websocket (#36217)
     add e6b258f418 chore(deps): bump http-errors from 2.0.0 to 2.0.1 in /superset-websocket/utils/client-ws-app (#36218)
     add 9d40c24a16 refactor(datasets): add comprehensive unit tests for dataset API hooks and fix api guards (#36175)
     add e7c54376e2 test(table): remove conditionals from TableChart tests  (#36149)
     add a0c29cc260 test: fix flaky MySQL integration test in test_update_v1_response (#36176)
     add e303537e0c fix: adhoc column quoting (#36215)
     add a2267d869b refactor: refactor `get_query_result` (#36057)
     add 08c1d03479 fix(screenshots): Only cache thumbnails when image generation succeeds (#36126)
     add cac6ffcd3c fix: Extra controls width for Area Chart on dashboards (#36133)
     add a6b6eb4ab3 chore(deps-dev): bump @types/lodash from 4.17.20 to 4.17.21 in /superset-websocket (#36231)
     add bf2cef7d87 chore(sqllab): add logging for switching south panel tabs (#36168)
     add ab8352ee66 fix: Table chart types headers are offset from the columns in the table (#36190)
     add 186693b840 feat(ag-grid): add SQLGlot-based SQL escaping for where and having filter clauses (#36136)
     add 062e4a2922 fix: Columns bleeding into other cells (#36134)
     add c966dd4f9e feat(dashboards): Add config to filter implicit tags in list API (#36246)
     add cd36845d56 fix: remove unwanted info from tags REST API (#36266)
     add 8d5d71199a feat(mcp): Add flexible input parsing to handle double-serialized requests (#36249)
     add 0c87034b17 fix: cache key generation (#36225)
     add bae716fa83 fix(log): remove unwanted info from logs REST API (#36269)
     add a4860075d2 feat: add mcp abstractions to core (#36151)
     add aca18fff99 fix: double computation of `contribution_totals` (#36226)
     add cf88551a56 fix(mcp): Allow MCP tools to accept string or object request formats (#36271)
     add 06a8f4df02 feat(datasets): add datetime format detection to dataset columns (#36150)
     add fb2a8ac9a2 docs: clarify duplicate report deliveries for alerts & reports (#36264)
     add ab36bd3965 build: Add pytest-asyncio to enable async MCP service tests (#36251)
     add f98939103b fix(mcp-service): improve MCP tool parameter clarity and validation (#36137)
     add 18ab5382b1 feat(mcp): implement selective column serialization for list tools (#36035)
     add fe21485065 docs: Reorganizes the extensions documentation (#36298)
     add 2af5a5adb0 fix(mcp): access wrapped function in dataset tool tests (#36295)
     add 1bf1890084 chore(deps-dev): bump typescript-eslint from 8.46.2 to 8.48.0 in /superset-websocket (#36252)
     add df0211fe29 chore(deps-dev): bump typescript-eslint from 8.47.0 to 8.48.0 in /docs (#36254)
     add 2db0107d12 chore(deps): bump caniuse-lite from 1.0.30001756 to 1.0.30001757 in /docs (#36256)
     add 170d1b92eb chore(deps): bump cookie from 1.0.2 to 1.1.0 in /superset-websocket (#36283)
     add 81e561bdc9 chore(deps): bump swagger-ui-react from 5.30.2 to 5.30.3 in /docs (#36284)
     add 341ae994c5 feat(embed): get charts payload (#36237)
     add a0e63faf62 fix: add a fallback to chart state callback (#36327)
     add de7f41a888 fix(deckgl): polygon elevation fixed value (#35266)
     add c9a7a85159 feat(chart): add axes settings for trendline (#36002)
     add d5c5dbb3bf refactor(word-cloud): convert rotation and color controls to React components (POC) (#36275)
     add 01f032017f feat(controlPanel): add integer validation for rows per page setting (#36289)
     add a745fd49fa fix(deckgl): use DatasourceType enum in polygon transformProps test + some TS issues (#36336)
     add a754258fad fix(timeshift): Add a more reliable strategy for correct temporal col (#36309)
     add 9fc7a83320 fix: Do no aggregate results for CSV downloads from AG Grid raw records table (#36247)
     add 775d1ba061 fix: normalize totals cache keys for async hits (#36274)
     add fd7ce4976a docs: Improve the Quick Start to make it more AI-friendly (#36307)
     add de69377b04 chore(deps): bump node-forge from 1.3.1 to 1.3.2 in /docs (#36300)
     add 2b6b4e363b chore(deps): bump cookie from 1.1.0 to 1.1.1 in /superset-websocket (#36303)
     add 4935938bb1 chore(deps-dev): bump prettier from 3.6.2 to 3.7.3 in /docs (#36353)
     add d4206de8e0 docs: fix formatting of BaseCache import statement in docs (#36278)
     add 92986c2ecc chore(deps): bump node-forge from 1.3.1 to 1.3.2 in /superset-frontend (#36299)
     add b12f5f8394 fix: CI failures caused by a ruff version mismatch (#36358)
     add db995ad5bf chore: Adds non-interactive mode to `superset-extensions init` command (#36308)
     add de0de4156b fix(DatasourceEditor): add mount guards and fix async race conditions
     add b6efa24a33 fix(DatasourceEditor): add missing OwnersSelector API mock to prevent async errors
     add aa26cb5079 refactor(DatasourceEditor): extract duplicate API mocks to shared utility
     add 8b13e41609 fix(dashboard): eliminate timer pollution in FiltersConfigModal tests
     add ae23c700ae test(DatasourceEditor): remove describe() blocks and consolidate tests
     add ff65c8390d refactor(DatasourceEditor): extract test utilities and add factory function
     add e7a51f2787 fix(DatasourceEditor): add async cleanup to prevent test pollution
     add 88f90fb8a6 refactor(DatasourceEditor): reduce test timeouts and fix lint issues
     add e21435a0fc perf(DatasourceEditor): speed up slow tests with fireEvent and selectOption
     add 505d9a6b81 perf(DatasourceEditor): optimize tests with fireEvent and shared utilities
     add f20f8c28ab fix(DatasourceEditor): replace fireEvent with userEvent to fix CI timeouts
     add 09b7d6e79e fix(DatasourceEditor): use proper async patterns to fix CI timeouts
     add 17fdb6578c perf(DatasourceEditor): dismiss warning modal and trim test data
     add 3e14cba3fc fix(DatasourceEditor): use asyncRender and role-based selectors for CI stability
     add 002d605d6e fix(DatasourceEditor): replace selectOption with direct userEvent for CI stability
     add 3fb6fd5461 fix(DatasourceEditor): replace selectOption with direct userEvent for CI stability
     add 82202ddf45 chore: add 30s timeout to test

This update added new revisions after undoing existing revisions.
That is to say, some revisions that were in the old version of the
branch are not in the new version.  This situation occurs
when a user --force pushes a change and generates a repository
containing something like this:

 * -- * -- B -- O -- O -- O   (62c9eb74e9)
            \
             N -- N -- N   refs/heads/fix-datasource-editor-async (82202ddf45)

You should already have received notification emails for all of the O
revisions, and so the following emails describe only the N revisions
from the common base, B.

Any revisions marked "omit" are not gone; other references still
refer to them.  Any revisions marked "discard" are gone forever.

No new revisions were added by this update.

Summary of changes:
 .github/CODEOWNERS                                 |    1 +
 .github/workflows/pre-commit.yml                   |    4 +-
 .gitignore                                         |    1 +
 .pre-commit-config.yaml                            |   13 +-
 Dockerfile                                         |    2 +-
 UPDATING.md                                        |  101 ++
 docker/docker-bootstrap.sh                         |    2 +-
 .../pythonpath_dev/superset_config_docker_light.py |    1 +
 docs/developer_portal/extensions/architecture.md   |    4 +-
 .../extensions/contribution-types.md               |  130 ++
 .../{deploying-extension.md => deployment.md}      |   24 +-
 .../extensions/development-mode.md                 |   48 -
 docs/developer_portal/extensions/development.md    |  239 ++++
 .../extensions/extension-metadata.md               |   55 -
 .../extensions/extension-points/sqllab.md          |  209 +++
 .../extensions/extension-project-structure.md      |   78 --
 .../extensions/frontend-contribution-types.md      |   90 --
 .../extensions/interacting-with-host.md            |  120 --
 docs/developer_portal/extensions/mcp.md            |  459 +++++++
 docs/developer_portal/extensions/overview.md       |   56 +-
 docs/developer_portal/extensions/quick-start.md    |  131 +-
 .../{security-implications.md => security.md}      |   10 +-
 docs/developer_portal/sidebars.js                  |   20 +-
 docs/docs/configuration/alerts-reports.mdx         |    8 +
 docs/docs/configuration/async-queries-celery.mdx   |   10 +-
 docs/docs/contributing/pkg-resources-migration.md  |  101 ++
 docs/docusaurus.config.ts                          |    2 +-
 docs/package.json                                  |   18 +-
 docs/sidebarTutorials.js                           |   20 +-
 docs/static/img/superset-logo-icon-only.png        |  Bin 0 -> 118635 bytes
 docs/yarn.lock                                     |  256 ++--
 pyproject.toml                                     |    7 +-
 pytest.ini                                         |    1 +
 requirements/base.in                               |    6 +
 requirements/base.txt                              |   15 +-
 requirements/development.txt                       |   29 +-
 scripts/uv-pip-compile.sh                          |   17 +
 superset-core/README.md                            |    2 +-
 superset-core/pyproject.toml                       |    7 +-
 superset-core/src/superset_core/__init__.py        |    4 +
 superset-core/src/superset_core/api/__init__.py    |    8 -
 superset-core/src/superset_core/api/daos.py        |  262 ++++
 superset-core/src/superset_core/api/models.py      |  295 +++++
 superset-core/src/superset_core/api/query.py       |   51 +
 superset-core/src/superset_core/api/rest_api.py    |   72 ++
 .../src/superset_core/api/types/models.py          |   90 --
 superset-core/src/superset_core/api/types/query.py |   41 -
 .../src/superset_core/api/types/rest_api.py        |   64 -
 superset-core/src/superset_core/mcp/__init__.py    |  161 +++
 superset-embedded-sdk/package-lock.json            |   16 +-
 superset-embedded-sdk/package.json                 |    2 +-
 superset-embedded-sdk/src/index.ts                 |   22 +-
 .../src/superset_extensions_cli/cli.py             |   54 +-
 superset-extensions-cli/tests/test_cli_init.py     |  136 ++
 superset-frontend/package-lock.json                |   42 +-
 superset-frontend/package.json                     |    3 +
 .../src/shared-controls/sharedControls.tsx         |   26 +
 .../src/utils/getColorFormatters.ts                |   20 +-
 .../test/utils/getColorFormatters.test.ts          |  967 +++++++-------
 .../AsyncAceEditor/AsyncAceEditor.test.tsx         |  252 ++++
 .../src/components/AsyncAceEditor/index.tsx        |   81 +-
 .../src/components/EditableTitle/index.tsx         |    4 +-
 .../src/components/EditableTitle/types.ts          |    1 +
 .../src/components/{Flex => Progress}/index.tsx    |   11 +-
 .../src/components/Tabs/Tabs.test.tsx              |  107 +-
 .../superset-ui-core/src/components/Tabs/Tabs.tsx  |   10 +
 .../superset-ui-core/src/components/index.ts       |    2 +
 .../superset-ui-core/src/query/types/Query.ts      |    3 +
 .../legacy-plugin-chart-world-map/src/WorldMap.js  |    5 +-
 .../src/layers/Polygon/buildQuery.test.ts          |  456 +++++++
 .../src/layers/Polygon/buildQuery.ts               |   28 +-
 .../src/layers/Polygon/transformProps.test.ts      |  260 ++++
 .../src/layers/Polygon/transformProps.ts           |   34 +-
 .../plugin-chart-ag-grid-table/src/buildQuery.ts   |   10 +-
 .../src/controlPanel.tsx                           |    5 +-
 .../src/stateConversion.ts                         |   18 +-
 .../test/buildQuery.test.ts                        |   24 +
 .../BigNumberWithTrendline/controlPanel.tsx        |   59 +
 .../BigNumberWithTrendline/transformProps.test.ts  |   13 +
 .../BigNumberWithTrendline/transformProps.ts       |   91 +-
 .../plugin-chart-echarts/src/BigNumber/types.ts    |    4 +
 .../src/Timeseries/EchartsTimeseries.test.tsx      |  311 +++++
 .../src/Timeseries/EchartsTimeseries.tsx           |   28 +-
 .../Timeseries/Regular/Scatter/controlPanel.tsx    |   47 +
 .../src/Timeseries/constants.ts                    |    1 +
 .../src/Timeseries/transformProps.ts               |    5 +-
 .../plugin-chart-echarts/src/Timeseries/types.ts   |    1 +
 .../plugin-chart-echarts/src/Tree/constants.ts     |    1 +
 .../plugin-chart-echarts/src/Tree/controlPanel.tsx |   17 +
 .../src/Tree/transformProps.ts                     |    2 +
 .../plugins/plugin-chart-echarts/src/Tree/types.ts |    1 +
 .../plugins/plugin-chart-echarts/src/controls.tsx  |    2 +-
 .../plugin-chart-echarts/src/utils/series.ts       |    9 +
 .../test/BigNumber/transformProps.test.ts          |  122 ++
 .../test/Timeseries/Scatter/controlPanel.test.ts   |  156 +++
 .../test/Timeseries/Scatter/transformProps.test.ts |  183 +++
 .../src/react-pivottable/Styles.js                 |    7 +
 .../src/DataTable/hooks/useSticky.tsx              |   14 +-
 .../plugin-chart-table/src/controlPanel.tsx        |    5 +-
 .../plugin-chart-table/test/TableChart.test.tsx    |   85 +-
 .../plugin/{controlPanel.ts => controlPanel.tsx}   |   24 +-
 .../src/plugin/controls/ColorSchemeControl.tsx     |   62 +
 .../ColorSchemeControl/ColorSchemeLabel.tsx        |    2 +-
 .../plugin}/controls/ColorSchemeControl/index.tsx  |   11 +-
 .../src/plugin/controls/RotationControl.tsx        |   76 ++
 .../src/plugin/controls}/index.ts                  |    3 +-
 .../test/ColorSchemeControl.test.tsx               |   83 ++
 .../test/RotationControl.test.tsx                  |   59 +
 .../test/controlPanel.test.ts                      |   47 +
 .../plugin-chart-word-cloud/test/tsconfig.json     |    3 +-
 .../src/SqlLab/components/ResultSet/index.tsx      |  162 ++-
 .../src/SqlLab/components/SouthPane/index.tsx      |    4 +
 .../src/components/Chart/chartAction.js            |   12 +-
 .../src/components/Chart/chartActions.test.js      |   64 +
 .../StreamingExportModal.test.tsx                  |  244 ++++
 .../StreamingExportModal/StreamingExportModal.tsx  |  380 ++++++
 .../components/StreamingExportModal}/index.ts      |    6 +-
 .../useStreamingExport.test.ts                     |  126 ++
 .../StreamingExportModal/useStreamingExport.ts     |  380 ++++++
 superset-frontend/src/constants.ts                 |    7 +
 .../DashboardBuilder/DashboardBuilder.test.tsx     |  136 +-
 .../DashboardBuilder/DashboardBuilder.tsx          |    2 +-
 .../DashboardBuilder/DashboardContainer.tsx        |    1 +
 .../src/dashboard/components/DashboardGrid.jsx     |    3 +
 .../dashboard/components/DashboardGrid.test.jsx    |   80 +-
 .../dashboard/components/GroupByBadge/index.tsx    |   50 +-
 .../dashboard/components/Header/Header.test.tsx    |  131 ++
 .../src/dashboard/components/Header/index.jsx      |   18 +-
 .../SliceHeaderControls.test.tsx                   |   37 +
 .../components/SliceHeaderControls/index.tsx       |    2 +
 .../components/gridComponents/Chart/Chart.jsx      |  204 ++-
 .../components/gridComponents/Chart/Chart.test.jsx |  154 +++
 .../components/gridComponents/Tab/Tab.jsx          |   51 +-
 .../components/gridComponents/Tab/Tab.test.tsx     |   97 +-
 .../components/gridComponents/Tabs/Tabs.jsx        |   70 +-
 .../gridComponents/TabsRenderer/TabsRenderer.tsx   |  199 ++-
 .../menu/ShareMenuItems/ShareMenuItems.test.tsx    |  115 ++
 .../components/menu/ShareMenuItems/index.tsx       |   80 +-
 .../nativeFilters/ChartCustomization/selectors.ts  |   42 +-
 .../FilterBar/FilterControls/FilterControl.tsx     |    4 +
 .../FilterBar/FilterControls/FilterControls.tsx    |    6 +-
 .../nativeFilters/FilterBar/Horizontal.tsx         |    2 +-
 .../nativeFilters/FilterBar/Vertical.tsx           |    2 +-
 .../FilterCard/useFilterDependencies.ts            |   33 +-
 .../FiltersConfigForm/DatasetSelect.test.tsx       |   66 +-
 .../FiltersConfigForm/DatasetSelect.tsx            |  109 +-
 .../FiltersConfigModal/FiltersConfigModal.test.tsx |    2 +-
 .../FiltersConfigModal/FiltersConfigModal.tsx      |   57 +-
 .../dashboard/components/nativeFilters/state.ts    |   27 +-
 .../src/dashboard/reducers/dashboardState.js       |   20 +-
 superset-frontend/src/dashboard/types.ts           |    1 +
 .../util/charts/getFormDataWithExtraFilters.ts     |   15 +-
 .../charts/{useChartIds.ts => useAllChartIds.ts}   |   10 +-
 ...dsFromLayout.ts => getChartIdsFromComponent.ts} |   35 +-
 superset-frontend/src/embedded/api.tsx             |   16 +-
 superset-frontend/src/embedded/index.tsx           |   39 +-
 superset-frontend/src/embedded/utils.test.ts       |  228 +++-
 superset-frontend/src/embedded/utils.ts            |  133 +-
 .../explore/components/ControlPanelsContainer.tsx  |   30 +-
 .../components/ExploreChartHeader/index.jsx        |   11 +-
 .../useExploreAdditionalActionsMenu/index.jsx      |  116 +-
 .../src/explore/controlUtils/getControlState.ts    |   10 +-
 .../controlUtils/standardizedFormData.test.ts      |   86 +-
 .../explore/controlUtils/standardizedFormData.ts   |    6 +
 .../src/explore/exploreUtils/index.js              |   14 +-
 .../databases/DatabaseModal/ExtraOptions.test.tsx  |   17 +
 .../databases/DatabaseModal/ExtraOptions.tsx       |    6 +-
 .../databases/DatabaseModal/SqlAlchemyForm.tsx     |    4 +-
 .../src/features/databases/DatabaseModal/styles.ts |    4 +-
 .../AddDataset/DatasetPanel/DatasetPanel.tsx       |    2 +-
 .../datasets/DatasetLayout/DatasetLayout.test.tsx  |   69 +
 .../datasets/hooks/useDatasetLists.test.ts         |  392 ++++++
 .../src/features/datasets/hooks/useDatasetLists.ts |    3 +-
 superset-frontend/src/features/datasets/styles.ts  |    3 +-
 superset-frontend/src/features/home/EmptyState.tsx |   24 +-
 superset-frontend/src/features/home/Menu.tsx       |  147 +--
 superset-frontend/src/features/home/RightMenu.tsx  |    9 +
 .../src/features/home/commonMenuData.ts            |    5 +
 .../src/features/roles/RoleListEditModal.tsx       |    1 -
 .../src/hooks/apiResources/datasets.test.ts        |  449 +++++++
 superset-frontend/src/hooks/useThemeMenuItems.tsx  |    2 +
 superset-frontend/src/logger/LogUtils.ts           |    2 +
 .../src/utils/getControlsForVizType.ts             |   12 +
 superset-frontend/webpack.proxy-config.js          |   21 +-
 superset-websocket/package-lock.json               |  658 ++++------
 superset-websocket/package.json                    |   12 +-
 .../utils/client-ws-app/package-lock.json          |   92 +-
 .../utils/client-ws-app/package.json               |    2 +-
 superset/charts/data/api.py                        |  143 ++-
 .../chart/data/streaming_export_command.py         |   80 ++
 superset/commands/chart/warm_up_cache.py           |  107 +-
 superset/commands/database/uploaders/csv_reader.py |   12 +-
 superset/commands/dataset/refresh.py               |   18 +
 superset/commands/explore/get.py                   |    6 +-
 superset/commands/security/create.py               |    2 +-
 superset/commands/security/update.py               |    2 +-
 superset/commands/sql_lab/results.py               |   57 +-
 .../commands/sql_lab/streaming_export_command.py   |  142 +++
 .../commands/streaming_export}/__init__.py         |    0
 superset/commands/streaming_export/base.py         |  214 ++++
 superset/common/query_context.py                   |   12 +-
 superset/common/query_context_processor.py         |  830 +-----------
 superset/common/query_object.py                    |   44 +-
 superset/common/utils/query_cache_manager.py       |    2 +
 superset/config.py                                 |   18 +
 superset/connectors/sqla/models.py                 |  230 ++--
 superset/core/api/core_api_injection.py            |  180 +++
 superset/core/api/types/models.py                  |   72 --
 superset/core/api/types/query.py                   |   29 -
 superset/core/api/types/rest_api.py                |   35 -
 superset/core/mcp/core_mcp_injection.py            |  225 ++++
 superset/daos/base.py                              |   25 +-
 superset/dashboards/api.py                         |  141 ++-
 superset/dashboards/schemas.py                     |    7 +
 superset/datasets/api.py                           |   82 ++
 superset/datasets/datetime_format_detector.py      |  211 ++++
 superset/datasets/schemas.py                       |    3 +
 superset/initialization/__init__.py                |   38 +-
 superset/jinja_context.py                          |    5 +-
 superset/key_value/models.py                       |    4 +-
 superset/mcp_service/ARCHITECTURE.md               |  693 ++++++++++
 superset/mcp_service/CLAUDE.md                     |  198 ++-
 superset/mcp_service/PRODUCTION.md                 | 1332 ++++++++++++++++++++
 superset/mcp_service/SECURITY.md                   |  803 ++++++++++++
 superset/mcp_service/app.py                        |   64 +-
 superset/mcp_service/auth.py                       |  161 ++-
 .../chart/prompts/create_chart_guided.py           |    6 +-
 superset/mcp_service/chart/schemas.py              |   66 +-
 superset/mcp_service/chart/tool/generate_chart.py  |   49 +-
 .../chart/tool/get_chart_available_filters.py      |    8 +-
 superset/mcp_service/chart/tool/get_chart_data.py  |    6 +-
 superset/mcp_service/chart/tool/get_chart_info.py  |   26 +-
 .../mcp_service/chart/tool/get_chart_preview.py    |    8 +-
 superset/mcp_service/chart/tool/list_charts.py     |   32 +-
 superset/mcp_service/chart/tool/update_chart.py    |   37 +-
 .../mcp_service/chart/tool/update_chart_preview.py |    8 +-
 superset/mcp_service/common/error_schemas.py       |    9 +-
 superset/mcp_service/dashboard/schemas.py          |   61 +-
 .../tool/add_chart_to_existing_dashboard.py        |    8 +-
 .../dashboard/tool/generate_dashboard.py           |    8 +-
 .../tool/get_dashboard_available_filters.py        |    8 +-
 .../dashboard/tool/get_dashboard_info.py           |    8 +-
 .../mcp_service/dashboard/tool/list_dashboards.py  |   41 +-
 superset/mcp_service/dataset/schemas.py            |   34 +-
 .../dataset/tool/get_dataset_available_filters.py  |    8 +-
 .../mcp_service/dataset/tool/get_dataset_info.py   |   27 +-
 superset/mcp_service/dataset/tool/list_datasets.py |   35 +-
 .../explore/tool/generate_explore_link.py          |   25 +-
 superset/mcp_service/flask_singleton.py            |   15 +-
 superset/mcp_service/mcp_config.py                 |    5 +-
 superset/mcp_service/mcp_core.py                   |   20 +-
 superset/mcp_service/run_proxy.sh                  |    0
 superset/mcp_service/server.py                     |   21 +-
 superset/mcp_service/sql_lab/tool/execute_sql.py   |    8 +-
 .../sql_lab/tool/open_sql_lab_with_context.py      |    8 +-
 superset/mcp_service/system/prompts/quickstart.py  |    6 +-
 .../mcp_service/system/tool/get_instance_info.py   |    8 +-
 superset/mcp_service/system/tool/health_check.py   |    9 +-
 superset/mcp_service/utils/schema_utils.py         |  455 +++++++
 superset/migrations/shared/utils.py                |    4 +-
 ...8ocx6rto6_expand_username_field_to_128_chars.py |   97 ++
 ...ec10479_add_datetime_format_to_table_columns.py |   68 +
 superset/models/core.py                            |    3 +-
 superset/models/dashboard.py                       |   13 +-
 superset/models/helpers.py                         |  987 ++++++++++++++-
 superset/models/slice.py                           |    5 +-
 superset/models/sql_lab.py                         |   11 +-
 superset/security/manager.py                       |   44 +-
 superset/sql/parse.py                              |   55 +-
 superset/sql_lab.py                                |   46 +-
 superset/sqllab/api.py                             |  117 ++
 superset/superset_typing.py                        |  323 ++++-
 superset/tags/api.py                               |    1 -
 superset/tags/filters.py                           |    4 +-
 superset/tags/models.py                            |    6 +-
 superset/translations/ru/LC_MESSAGES/messages.po   |   29 +-
 superset/utils/cache.py                            |   22 +-
 superset/utils/core.py                             |   18 +-
 superset/utils/log.py                              |   11 +
 superset/utils/pandas_postprocessing/histogram.py  |    5 +
 superset/utils/rls.py                              |   53 +-
 superset/utils/screenshots.py                      |   21 +-
 superset/views/base.py                             |    1 +
 superset/views/core.py                             |   14 +-
 superset/views/custom_tags_api_mixin.py            |  105 ++
 superset/views/log/api.py                          |    6 +-
 superset/views/utils.py                            |   18 +-
 superset/viz.py                                    |    5 +-
 superset_text.yml                                  |    2 +-
 tests/integration_tests/charts/commands_tests.py   |   58 +-
 tests/integration_tests/charts/data/api_tests.py   |   26 +-
 tests/integration_tests/dashboards/api_tests.py    |  105 ++
 tests/integration_tests/datasets/commands_tests.py |    3 +
 tests/integration_tests/query_context_tests.py     |   70 +-
 .../security/row_level_security_tests.py           |   99 ++
 .../sql_lab/test_execute_sql_statements.py         |  124 ++
 tests/integration_tests/sqla_models_tests.py       |   16 +-
 tests/integration_tests/superset_test_config.py    |    4 +
 tests/integration_tests/tags/api_tests.py          |   85 ++
 .../tags/mysql_compatibility_test.py               |  285 +++++
 .../unit_tests/commands/chart}/__init__.py         |    0
 .../chart/streaming_export_command_test.py         |  258 ++++
 .../commands/chart/warm_up_cache_test.py           |  490 +++++++
 .../commands/databases/csv_reader_test.py          |   65 +
 .../unit_tests/commands/sql_lab}/__init__.py       |    0
 .../sql_lab/streaming_export_command_test.py       |  540 ++++++++
 .../common/test_query_context_processor.py         |  788 ++++++++++--
 tests/unit_tests/common/test_time_shifts.py        |   32 +-
 tests/unit_tests/dao/base_dao_test.py              |    5 +-
 tests/unit_tests/dao/key_value_test.py             |    1 +
 tests/unit_tests/datasets/commands/export_test.py  |    5 +
 .../datasets/test_datetime_format_detector.py      |  225 ++++
 .../mcp_service/chart/test_chart_schemas.py        |   12 +-
 .../mcp_service/chart/test_chart_utils.py          |   26 +-
 .../dashboard/tool/test_dashboard_generation.py    |   87 +-
 .../dashboard/tool/test_dashboard_tools.py         |   66 +-
 .../mcp_service/dataset/tool/test_dataset_tools.py |  118 +-
 tests/unit_tests/mcp_service/test_mcp_config.py    |  137 ++
 .../mcp_service/test_mcp_tool_registration.py      |   51 +
 .../mcp_service/utils/test_schema_utils.py         |  515 ++++++++
 tests/unit_tests/models/helpers_test.py            |  561 ++++++++-
 .../models/test_time_filter_double_application.py  |  369 ++++++
 .../pandas_postprocessing/test_histogram.py        |   67 +
 tests/unit_tests/queries/query_object_test.py      |   63 +-
 tests/unit_tests/sql/parse_tests.py                |   88 ++
 tests/unit_tests/sql/transpile_to_dialect_test.py  |  347 +++++
 tests/unit_tests/tags/models_test.py               |  263 ++++
 .../unit_tests/utils/test_screenshot_cache_fix.py  |  410 ++++++
 328 files changed, 24912 insertions(+), 4295 deletions(-)
 create mode 100644 docs/developer_portal/extensions/contribution-types.md
 rename docs/developer_portal/extensions/{deploying-extension.md => deployment.md} (59%)
 delete mode 100644 docs/developer_portal/extensions/development-mode.md
 create mode 100644 docs/developer_portal/extensions/development.md
 delete mode 100644 docs/developer_portal/extensions/extension-metadata.md
 create mode 100644 docs/developer_portal/extensions/extension-points/sqllab.md
 delete mode 100644 docs/developer_portal/extensions/extension-project-structure.md
 delete mode 100644 docs/developer_portal/extensions/frontend-contribution-types.md
 delete mode 100644 docs/developer_portal/extensions/interacting-with-host.md
 create mode 100644 docs/developer_portal/extensions/mcp.md
 rename docs/developer_portal/extensions/{security-implications.md => security.md} (82%)
 create mode 100644 docs/docs/contributing/pkg-resources-migration.md
 create mode 100644 docs/static/img/superset-logo-icon-only.png
 create mode 100644 superset-core/src/superset_core/api/daos.py
 create mode 100644 superset-core/src/superset_core/api/models.py
 create mode 100644 superset-core/src/superset_core/api/query.py
 create mode 100644 superset-core/src/superset_core/api/rest_api.py
 delete mode 100644 superset-core/src/superset_core/api/types/models.py
 delete mode 100644 superset-core/src/superset_core/api/types/query.py
 delete mode 100644 superset-core/src/superset_core/api/types/rest_api.py
 create mode 100644 superset-core/src/superset_core/mcp/__init__.py
 copy superset-frontend/packages/superset-ui-core/src/components/{Flex => Progress}/index.tsx (80%)
 create mode 100644 superset-frontend/plugins/legacy-preset-chart-deckgl/src/layers/Polygon/buildQuery.test.ts
 create mode 100644 superset-frontend/plugins/legacy-preset-chart-deckgl/src/layers/Polygon/transformProps.test.ts
 create mode 100644 superset-frontend/plugins/plugin-chart-echarts/src/Timeseries/EchartsTimeseries.test.tsx
 create mode 100644 superset-frontend/plugins/plugin-chart-echarts/test/Timeseries/Scatter/controlPanel.test.ts
 create mode 100644 superset-frontend/plugins/plugin-chart-echarts/test/Timeseries/Scatter/transformProps.test.ts
 rename superset-frontend/plugins/plugin-chart-word-cloud/src/plugin/{controlPanel.ts => controlPanel.tsx} (81%)
 create mode 100644 superset-frontend/plugins/plugin-chart-word-cloud/src/plugin/controls/ColorSchemeControl.tsx
 copy superset-frontend/{src/explore/components => plugins/plugin-chart-word-cloud/src/plugin}/controls/ColorSchemeControl/ColorSchemeLabel.tsx (99%)
 copy superset-frontend/{src/explore/components => plugins/plugin-chart-word-cloud/src/plugin}/controls/ColorSchemeControl/index.tsx (97%)
 create mode 100644 superset-frontend/plugins/plugin-chart-word-cloud/src/plugin/controls/RotationControl.tsx
 copy superset-frontend/{packages/superset-core/src/ui/components => plugins/plugin-chart-word-cloud/src/plugin/controls}/index.ts (85%)
 create mode 100644 superset-frontend/plugins/plugin-chart-word-cloud/test/ColorSchemeControl.test.tsx
 create mode 100644 superset-frontend/plugins/plugin-chart-word-cloud/test/RotationControl.test.tsx
 create mode 100644 superset-frontend/plugins/plugin-chart-word-cloud/test/controlPanel.test.ts
 create mode 100644 superset-frontend/src/components/StreamingExportModal/StreamingExportModal.test.tsx
 create mode 100644 superset-frontend/src/components/StreamingExportModal/StreamingExportModal.tsx
 copy superset-frontend/{packages/superset-ui-core/src/components/assets/images => src/components/StreamingExportModal}/index.ts (80%)
 create mode 100644 superset-frontend/src/components/StreamingExportModal/useStreamingExport.test.ts
 create mode 100644 superset-frontend/src/components/StreamingExportModal/useStreamingExport.ts
 copy superset-frontend/src/dashboard/util/charts/{useChartIds.ts => useAllChartIds.ts} (75%)
 copy superset-frontend/src/dashboard/util/{getChartIdsFromLayout.ts => getChartIdsFromComponent.ts} (63%)
 create mode 100644 superset-frontend/src/features/datasets/hooks/useDatasetLists.test.ts
 create mode 100644 superset-frontend/src/hooks/apiResources/datasets.test.ts
 create mode 100644 superset/commands/chart/data/streaming_export_command.py
 create mode 100644 superset/commands/sql_lab/streaming_export_command.py
 rename {superset-core/src/superset_core/api/types => superset/commands/streaming_export}/__init__.py (100%)
 create mode 100644 superset/commands/streaming_export/base.py
 create mode 100644 superset/core/api/core_api_injection.py
 delete mode 100644 superset/core/api/types/models.py
 delete mode 100644 superset/core/api/types/query.py
 delete mode 100644 superset/core/api/types/rest_api.py
 create mode 100644 superset/core/mcp/core_mcp_injection.py
 create mode 100644 superset/datasets/datetime_format_detector.py
 create mode 100644 superset/mcp_service/ARCHITECTURE.md
 create mode 100644 superset/mcp_service/PRODUCTION.md
 create mode 100644 superset/mcp_service/SECURITY.md
 mode change 100644 => 100755 superset/mcp_service/run_proxy.sh
 create mode 100644 superset/mcp_service/utils/schema_utils.py
 create mode 100644 superset/migrations/versions/2025-11-12_12-54_x2s8ocx6rto6_expand_username_field_to_128_chars.py
 create mode 100644 superset/migrations/versions/2025-11-17_19-03_a9c01ec10479_add_datetime_format_to_table_columns.py
 create mode 100644 superset/views/custom_tags_api_mixin.py
 create mode 100644 tests/integration_tests/tags/mysql_compatibility_test.py
 rename {superset/core/api/types => tests/unit_tests/commands/chart}/__init__.py (100%)
 create mode 100644 tests/unit_tests/commands/chart/streaming_export_command_test.py
 create mode 100644 tests/unit_tests/commands/chart/warm_up_cache_test.py
 copy {superset-core/src/superset_core => tests/unit_tests/commands/sql_lab}/__init__.py (100%)
 create mode 100644 tests/unit_tests/commands/sql_lab/streaming_export_command_test.py
 create mode 100644 tests/unit_tests/datasets/test_datetime_format_detector.py
 create mode 100644 tests/unit_tests/mcp_service/test_mcp_config.py
 create mode 100644 tests/unit_tests/mcp_service/test_mcp_tool_registration.py
 create mode 100644 tests/unit_tests/mcp_service/utils/test_schema_utils.py
 create mode 100644 tests/unit_tests/models/test_time_filter_double_application.py
 create mode 100644 tests/unit_tests/sql/transpile_to_dialect_test.py
 create mode 100644 tests/unit_tests/tags/models_test.py
 create mode 100644 tests/unit_tests/utils/test_screenshot_cache_fix.py