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/08/14 22:32:55 UTC

(superset) branch fix-sqllab-async-query-stuck-running updated (17ff845b9c8 -> 0cbeb595b7b)

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

sadpandajoe pushed a change to branch fix-sqllab-async-query-stuck-running
in repository https://gitbox.apache.org/repos/asf/superset.git


    from 17ff845b9c8 Merge branch 'master' into fix-sqllab-async-query-stuck-running
     add 998c4086867 fix(rls): return a descriptive error for duplicate rule names (#42819)
     add 4c5a3356f33 fix(dashboard): redirect using sanitized slug from save response (#42853)
     add 9086bab2c22 ci(e2e): stop gunicorn worker recycling mid-run; slow-test budget for mixed-chart filter spec (#42867)
     add af258c21d03 fix(mixed-chart): Mixed chart secondary yaxis title position misplaced fix (#42713)
     add 63a81c21256 fix(dashboard): remeasure chart description height after markdown render (#41536)
     add 3ded398a1f3 fix(chart): dataset dropdown sorted by name (#42475)
     add edf30c7019c chore: add logging event for drill to detail (#42563)
     add 0d57c5ab502 fix(dashboard): consistently apply the datasource-access check when serializing member charts and datasets (#42716)
     add f6077eeaa14 fix(dataset): validate stored column and metric expressions at query time (#42087)
     add d91ca50872b perf(charts): reuse datasource in query context (#42476)
     add bdf8ce69abb feat(Reports&Alerts): remove Selenium support, require Playwright (#43028)
     add 52483675870 fix: verify database access before dataset repointing, and tab ownership before tab-state updates (#42936)
     add 0a2cfb9fba4 chore(deps-dev): bump oxfmt from 0.61.0 to 0.62.0 in /superset-frontend (#43046)
     add 8bd25b3feda chore(deps-dev): bump the typescript-eslint group across 1 directory with 2 updates (#43038)
     add a0099af88fc fix(deck.gl): dismiss custom tooltips on hover-out (#43075)
     add d570335f677 fix: bind permission-sync task to user id, use per-user RLS cache sentinel on parse failure (#42938)
     add 584466e02b2 fix(sql-lab): improved SQL statement parsing and validation (#42928)
     add 885f00130c0 fix(sqla): drop stale main_dttm_col from dttm_cols when non-temporal (#30510) (#41964)
     add 56573fa2cda feat(mcp): filter asset lists by certification (#42656)
     add 8734a232d8c fix(reports): apply chart number and currency formatting to tables sent as text (#42820)
     add 8e455034d05 chore(codeowners): trim stale ownership blocks, reword maps notice (#43079)
     add b4f3fae2880 fix(sql): guard FORCE_LIMIT against SHOW statements (#36939) (#42588)
     add 8f6587d0e67 fix(caching): sort extra_cache_keys before hashing (#34543) (#42597)
     add 2c10e6260f7 fix(explore): pin and fix clipped segments in horizontal row-contribution stacked bar charts (#42610)
     add 174d35380dd chore(deps-dev): bump tsx from 4.23.5 to 4.23.7 in /superset-frontend (#43083)
     add d840568f3bb chore(deps): bump dompurify from 3.4.12 to 3.4.13 in /superset-frontend (#43082)
     add 4354b37b963 fix(sql-lab): apply SQL_QUERY_MUTATOR to streaming exports (#40465) (#42739)
     add a501fed560e fix(rls): handle same-named CTEs and quoted aliases in the SQL rewrite (#43005)
     add a0d7ec9fafd fix(select): permission label search matches displayed label (#42041) (#42592)
     add cc35056bc96 test(core): pin dashboard save-error toast mapping for non-JSON 403 responses (#42250)
     add aefee482239 fix(GridTable): remove unused rowSelection option to silence AG Grid error #200 (#43078)
     add 4baf1cf648e fix(reports): preserve Slack v1 private-channel text delivery (#42089)
     add ed696b99336 test(sql): pin optimizer hint blocks survive format() round-trip (#38189) (#42733)
     add 0c2f91968e6 fix: commit migration write in get_shared_value to stop recurring md5 deprecation warning (#42916)
     add 01ecefd732e fix(security_manager): stop SupersetAuthView from shadowing AUTH_REMOTE_USER (#42949)
     add eb7d4cba42f fix(explore): hide Superset annotation source for users without annotation access (#43006)
     add 8014f782d3c feat: bump SQLAlchemy to 2.0 and flask-sqlalchemy to 3.1.1 (#42803)
     add 0915a39bcbe fix(dataset): improve dataset, report, and expression validation (#42929)
     add bc1a8e0858b refactor(tags): align ExportTagsCommand with ExportModelsCommand (#42339)
     add 739365979d4 fix: upgrade brace-expansion to 5.0.8 (CVE-2026-14257) (#42435)
     add 685f26b1bf9 fix(cache): warm native dashboard filter defaults (#43073)
     add de2276225af test(playwright): pin drill-to-detail modal table height (#42406)
     add 22caf221b7c fix(echarts): truncate values at Y axis bounds instead of dropping them (#42300)
     add 07accd56f21 chore(deps): bump core-js from 3.49.0 to 3.50.0 in /superset-frontend (#43107)
     add eefb3e38359 chore(deps-dev): bump tsx from 4.23.7 to 4.23.9 in /superset-frontend (#43106)
     add 657a2a4cb2a chore(deps): bump mapbox-gl from 3.27.0 to 3.28.0 in /superset-frontend (#43105)
     add 524d99159a0 chore(deps): bump immer from 11.1.15 to 11.1.16 in /superset-frontend (#43104)
     add 276d6f04f53 chore(deps): bump actions/setup-java from 5.6.0 to 5.7.0 (#43102)
     add 08dfca96313 fix(ci): enforce a single Alembic migration head (#42890)
     add 59361581cdf fix(embedded): restore chart rendering for guest dashboards (#43095)
     add e2bb33b1da1 chore(deps): bump the ag-grid group across 1 directory with 2 updates (#43103)
     add 5554b892ffa fix(mcp): preserve table chart state during updates (#42655)
     add 762fdccfdef fix(oauth2): log database token failures (#42644)
     add e1777737a71 fix(docs): sync live component demos to the docs site's dark mode toggle (#42602)
     add c8305b0ba98 feat(ci): publish Python unit test results as PR check annotations (#42503)
     add fbeba10f750 fix(sqllab): make MenuDotsDropdown trigger focusable for tab rename (#43015)
     add d5ae93c9b8d test(echarts): pin Bar chart X Axis Title flows through untouched (#42560) (#42599)
     add 25c2ca11276 ci: run pre-commit checks via prek (#42500)
     add b8ca729f9fc fix(sql): only force a LIMIT onto query expressions (#43097)
     add d0658bacc89 fix(mcp): give concurrent tool calls isolated db sessions (#42629)
     add ec136f6d8df fix(charts): decode CSV bytes payload before feeding pandas StringIO (#32370) (#42735)
     add c8cb09d4589 fix(dev): stop the webpack dev-proxy from hanging on a mid-stream backend disconnect (#42811)
     add e1468a709c0 fix(sunburst): keep SQL null and literal string "null" as distinct groups (#43013)
     add 117b92a517a fix(mcp): expose table column formatting (#42658)
     add 5b281585194 fix(helm): stop shipping conflicting podDisruptionBudget defaults (#42995)
     add 6211f9936b3 feat(mobile): Add mobile-friendly dashboard consumption mode (#37141)
     add 67bbe0ac173 ci: speed up backend CI with astral-sh/setup-uv and apt package caching (#42498)
     add dc9547554b4 fix(echarts): normalize BigInt metric values before summing/dividing in stacked charts (#36401) (#42594)
     add f7a2f0ec501 feat(table): allow choosing Sum or Average for the "Show summary" totals row (#43027)
     add 3c7633f935f fix(encrypt): stop naive padding from truncating secrets ending in '*' (#43074)
     add 01d0772d4f3 fix(box-plot): distribute across field not marked as required for datasets without a temporal column (#43087)
     add a63483b9b1a fix(sql): rebase Dremio dialect on sqlglot's native dialect (#43099)
     add 3fb58900b9a chore(duckdb): remove cursor.description workaround, no longer reproducible (#43101)
     add 930ba64fdf3 fix(ci): format ErrorMessage tests (#43114)
     add 8f78f9eb9c7 chore: update CODEOWNERS for extension and config files (#43142)
     add 537f0fd2dbe fix(sqllab): use dialect-specific quote chars for autocomplete identifiers (#41492)
     add a188e9473ab feat(chart): let Drill By scope to the clicked x-axis value (#42296)
     add bacaf08a22f docs(perf): add Dashboard Performance guide covering virtualization, lazy tabs, and chart-count guidance (#40238)
     add aec567f7d6c chore(deps): bump antd from 6.5.3 to 6.5.4 in /superset-frontend (#43162)
     add a6db0d1cde2 chore(deps): bump query-string from 9.4.1 to 9.5.0 in /superset-frontend (#43161)
     add 9bc3173e3a3 chore(deps): bump antd from 6.5.3 to 6.5.4 in /docs (#43160)
     add 8523ea4d0a9 chore(deps): bump caniuse-lite from 1.0.30001806 to 1.0.30001807 in /docs (#43159)
     add acf39e3ef0c chore(deps): bump dompurify from 3.4.12 to 3.4.13 in /superset-frontend (#43158)
     add 3b99e092d08 chore(deps-dev): bump tsx from 4.23.9 to 4.23.10 in /superset-frontend (#43157)
     add 9c5bde94918 chore(deps): bump mapbox-gl from 3.28.0 to 3.28.1 in /superset-frontend (#43156)
     add 7c0c5283c3f chore(deps-dev): bump the storybook group in /superset-frontend with 5 updates (#43155)
     add a4c47359e61 chore(deps): bump the storybook group in /docs with 2 updates (#43154)
     add 84c371d56e1 chore: fix stale developer_portal paths (#43143)
     add 92728169de9 docs: document the zstd prerequisite for the frontend dev server (#43109)
     add c395b9a2383 fix(examples): migrate Life Expectancy VS Rural % example off the removed legacy bubble viz_type (#43152)
     add 856599027a8 fix(mcp): harden the embedded-guest chart data-read path
     add 1e65d93a836 fix(sql): handle ORDER BY in embedded MSSQL queries (#43127)
     add b62ec512d2c fix(explore): hide edit-properties menu item for non-owner/non-editor users (#38884) (#42737)
     add c068a8c09cf fix(dashboard): preserve certification fields when Certification panel is closed (#42957)
     add dd1afb029fd fix(ci): stop py311/py312 docker builds from silently matching lean (#42509)
     add 0a7ebe1dd18 fix(ci): stop superseded Docs Deployment runs from showing as cancelled (#42488)
     add e808fcbcada fix(mcp): bind all generated charts to dashboard time filters (#42490)
     add edfb009e1c4 fix(mcp): expose query context to Jinja macros (#42822)
     add 81e431cd501 fix(mcp): return all chart query results (#42824)
     add 8967e6c2d33 fix(mcp): accept changed_on_delta_humanized as order_column in list tools (#42571)
     add f4587218dd1 fix(mcp): populate user_id in MCP audit logs (#42767)
     add 2eedc609a80 fix(sql_lab): return 400 not 500 when raise_for_access hits malformed Jinja in results.py (#43145)
     add 0cbeb595b7b Merge branch 'master' into fix-sqllab-async-query-stuck-running

No new revisions were added by this update.

Summary of changes:
 .asf.yaml                                          |    1 +
 .github/CODEOWNERS                                 |   39 +-
 .github/actions/setup-backend/action.yml           |   28 +-
 .github/workflows/bashlib.sh                       |   19 +-
 .github/workflows/bump-python-package.yml          |    5 +-
 .github/workflows/docker.yml                       |   63 +-
 .../workflows/enforce-single-migration-head.yml    |   82 +
 .github/workflows/github-action-validator.yml      |    3 +
 .github/workflows/pre-commit.yml                   |   31 +-
 .../scripts/check-docs-deploy-freshness.sh         |   49 +
 .../scripts/check-docs-deploy-freshness.test.sh    |  100 ++
 .github/workflows/superset-docs-deploy.yml         |   87 +-
 .github/workflows/superset-playwright.yml          |   11 +
 .../workflows/superset-python-unittest-report.yml  |   70 +
 .github/workflows/superset-python-unittest.yml     |   33 +-
 .github/workflows/superset-translations.yml        |    5 +-
 AGENTS.md                                          |    2 +-
 CONTRIBUTING.md                                    |    2 +-
 UPDATING.md                                        |  104 ++
 docker/pythonpath_dev/superset_config.py           |    1 +
 docs/admin_docs/configuration/alerts-reports.mdx   |   54 +
 .../configuration/dashboard-performance.mdx        |  184 +++
 .../contributing/development-setup.md              |   24 +
 .../frontend/component-style-guidelines.md         |    2 +-
 docs/docs/using-superset/mobile-experience.mdx     |   93 ++
 docs/package.json                                  |    8 +-
 docs/src/components/StorybookWrapper.jsx           |   67 +-
 docs/static/feature-flags.json                     |   12 +-
 .../img/screenshots/mobile/mobile_dashboard.jpg    |  Bin 0 -> 68479 bytes
 .../screenshots/mobile/mobile_dashboard_list.jpg   |  Bin 0 -> 82502 bytes
 .../screenshots/mobile/mobile_filter_drawer.jpg    |  Bin 0 -> 58074 bytes
 docs/static/img/screenshots/mobile/mobile_home.jpg |  Bin 0 -> 35338 bytes
 .../img/screenshots/mobile/mobile_nav_drawer.jpg   |  Bin 0 -> 35385 bytes
 .../img/screenshots/mobile/mobile_unsupported.jpg  |  Bin 0 -> 42668 bytes
 docs/yarn.lock                                     |   52 +-
 helm/superset/Chart.yaml                           |    2 +-
 helm/superset/README.md                            |   28 +-
 helm/superset/templates/pdb-beat.yaml              |    2 +-
 helm/superset/templates/pdb-flower.yaml            |    2 +-
 helm/superset/templates/pdb-mcp.yaml               |    2 +-
 helm/superset/templates/pdb-worker.yaml            |    2 +-
 helm/superset/templates/pdb-ws.yaml                |    2 +-
 helm/superset/templates/pdb.yaml                   |    2 +-
 helm/superset/tests/pdb_test.yaml                  |   87 +
 helm/superset/values.yaml                          |   26 +-
 pyproject.toml                                     |   57 +-
 pytest.ini                                         |   20 -
 requirements/base.txt                              |   38 +-
 requirements/development.txt                       |   52 +-
 scripts/docker-build-extra-flags.sh                |   48 +
 superset-core/pyproject.toml                       |    2 +-
 superset-frontend/cypress-base/package-lock.json   |   15 +-
 superset-frontend/cypress-base/package.json        |    3 +
 superset-frontend/package-lock.json                |  875 +++++++---
 superset-frontend/package.json                     |   31 +-
 .../src/theme/SupersetThemeProvider.test.tsx       |  205 +++
 .../superset-core/src/theme/Theme.test.tsx         |   41 +
 .../packages/superset-core/src/theme/Theme.tsx     |   88 +-
 .../src/utils/getTotalsMetrics.test.ts             |   79 +
 .../src/utils/getTotalsMetrics.ts                  |   43 +
 .../superset-ui-chart-controls/src/utils/index.ts  |    1 +
 .../packages/superset-ui-core/package.json         |    6 +-
 .../superset-ui-core/src/chart/types/Base.ts       |    7 +
 .../src/components/AsyncAceEditor/index.tsx        |    3 +
 .../src/components/AsyncAceEditor/types.ts         |    3 +
 .../src/components/Dropdown/Dropdown.test.tsx      |   35 +-
 .../src/components/Dropdown/index.tsx              |   28 +-
 .../src/components/DynamicEditableTitle/index.tsx  |   16 +
 .../src/components/PageHeaderWithActions/index.tsx |   18 +
 .../src/components/Select/AsyncSelect.test.tsx     |   46 +
 .../superset-ui-core/src/utils/featureFlags.ts     |    1 +
 .../test/query/getClientErrorObject.test.ts        |   26 +
 superset-frontend/playwright.config.ts             |   18 +
 .../generators/docs/mobile-screenshots.spec.ts     |  173 ++
 superset-frontend/playwright/pages/EmbeddedPage.ts |   38 +-
 .../tests/dashboard/drill-to-detail.spec.ts        |  162 ++
 .../mixed-chart-dashboard-filters.spec.ts          |    6 +
 .../tests/mobile/mobile-dashboard.spec.ts          |  284 ++++
 .../tests/mobile/mobile-navigation.spec.ts         |  192 +++
 superset-frontend/playwright/utils/constants.ts    |    2 +-
 .../plugin-chart-ag-grid-table/src/buildQuery.ts   |   24 +-
 .../src/controlPanel.tsx                           |   27 +-
 .../test/buildQuery.test.ts                        |   68 +
 .../src/BoxPlot/controlPanel.ts                    |    5 +-
 .../src/MixedTimeseries/transformProps.ts          |   22 +-
 .../src/Timeseries/EchartsTimeseries.test.tsx      |   99 +-
 .../src/Timeseries/EchartsTimeseries.tsx           |   57 +-
 .../src/Timeseries/transformProps.ts               |  139 +-
 .../plugin-chart-echarts/src/utils/series.ts       |   43 +-
 .../plugin-chart-echarts/src/utils/treeBuilder.ts  |  125 +-
 .../src/utils/xAxisDrillByFilter.ts                |  164 ++
 .../test/BoxPlot/controlPanel.test.ts              |   57 +
 .../test/MixedTimeseries/transformProps.test.ts    |   52 +
 .../test/Timeseries/Bar/transformProps.test.ts     |   90 ++
 .../test/Timeseries/transformProps.test.ts         |  337 ++++
 .../plugin-chart-echarts/test/utils/series.test.ts |  112 +-
 .../test/utils/treeBuilder.test.ts                 |   72 +
 .../test/utils/xAxisDrillByFilter.test.ts          |  238 +++
 .../plugin-chart-point-cluster-map/package.json    |    2 +-
 .../plugins/plugin-chart-table/src/buildQuery.ts   |    5 +
 .../plugin-chart-table/src/controlPanel.tsx        |   25 +
 .../plugin-chart-table/test/buildQuery.test.ts     |   65 +
 .../preset-chart-deckgl/src/layers/common.test.ts  |   27 +
 .../preset-chart-deckgl/src/layers/common.tsx      |   15 +-
 superset-frontend/scripts/po2json.sh               |    6 +-
 superset-frontend/spec/helpers/mobileTestUtils.ts  |  169 ++
 .../components/EditorWrapper/useKeywords.test.ts   |  160 ++
 .../SqlLab/components/EditorWrapper/useKeywords.ts |   63 +-
 .../SqlEditorTabHeader/SqlEditorTabHeader.test.tsx |    8 +-
 .../SqlLab/components/SqlEditorTabHeader/index.tsx |   15 +-
 .../TabbedSqlEditors/TabbedSqlEditors.test.tsx     |    6 +-
 .../ChartContextMenu/ChartContextMenu.test.tsx     |   70 +-
 .../Chart/ChartContextMenu/ChartContextMenu.tsx    |   27 +-
 .../Chart/DrillBy/DrillBySubmenu.test.tsx          |  134 ++
 .../components/Chart/DrillBy/DrillBySubmenu.tsx    |  112 +-
 .../Chart/DrillDetail/DrillDetailModal.test.tsx    |   35 +
 .../Chart/DrillDetail/DrillDetailModal.tsx         |   20 +-
 .../ErrorMessage/BasicErrorAlert.test.tsx          |    9 +-
 .../ErrorMessage/DatabaseErrorMessage.test.tsx     |    9 +-
 .../DatasetNotFoundErrorMessage.test.tsx           |    9 +-
 .../ErrorMessageWithStackTrace.test.tsx            |    9 +-
 .../FrontendNetworkErrorMessage.test.tsx           |    9 +-
 .../ErrorMessage/ParameterErrorMessage.test.tsx    |    9 +-
 .../ErrorMessage/TimeoutErrorMessage.test.tsx      |    9 +-
 .../src/components/GridTable/index.tsx             |    1 -
 .../src/components/ListView/CardCollection.tsx     |   13 +
 .../src/components/ListView/ListView.test.tsx      |  224 +++
 .../src/components/ListView/ListView.tsx           |  103 +-
 superset-frontend/src/components/ListView/utils.ts |   25 +-
 .../MobileRouteGuard/MobileRouteGuard.test.tsx     |   64 +
 .../src/components/MobileRouteGuard/index.tsx      |   49 +-
 .../src/core/editors/AceEditorProvider.tsx         |   14 +-
 .../src/dashboard/actions/dashboardState.test.ts   |  141 ++
 .../src/dashboard/actions/dashboardState.ts        |    9 +-
 .../DashboardBuilder/DashboardBuilder.test.tsx     |   49 +
 .../DashboardBuilder/DashboardBuilder.tsx          |   87 +-
 .../DashboardBuilder/DashboardWrapper.tsx          |   17 +
 .../dashboard/components/DashboardBuilder/state.ts |   15 +-
 .../dashboard/components/Header/Header.test.tsx    |    7 +
 .../src/dashboard/components/Header/index.tsx      |   48 +-
 .../src/dashboard/components/Header/types.ts       |    4 +
 .../Header/useHeaderActionsDropdownMenu.tsx        |   81 +-
 .../PropertiesModal/PropertiesModal.test.tsx       |   51 +
 .../dashboard/components/PropertiesModal/index.tsx |    2 +-
 .../components/SliceHeader/SliceHeader.test.tsx    |   42 +
 .../src/dashboard/components/SliceHeader/index.tsx |    7 +-
 .../components/gridComponents/Chart/Chart.test.tsx |  180 ++-
 .../components/gridComponents/Chart/Chart.tsx      |   34 +-
 .../ChartHolder/ChartHolder.test.tsx               |  147 +-
 .../gridComponents/ChartHolder/ChartHolder.tsx     |   64 +-
 .../components/gridComponents/Row/Row.tsx          |   22 +
 .../gridComponents/TabsRenderer/TabsRenderer.tsx   |   55 +-
 .../nativeFilters/FilterBar/Vertical.tsx           |   74 +-
 .../components/nativeFilters/FilterBar/index.tsx   |    1 +
 .../components/nativeFilters/FilterBar/types.ts    |    5 +
 .../components/resizable/ResizableContainer.tsx    |   16 +
 .../ExploreChartHeader/ExploreChartHeader.test.tsx |   11 +-
 .../AnnotationLayer.subdirectory.test.tsx          |    1 +
 .../AnnotationLayer.test.tsx                       |  147 +-
 .../AnnotationLayerControl/AnnotationLayer.tsx     |   90 +-
 .../controls/AnnotationLayerControl/index.test.tsx |   52 +
 .../controls/AnnotationLayerControl/index.tsx      |   15 +-
 .../useExploreAdditionalActionsMenu/index.tsx      |   23 +-
 .../useExploreAdditionalActionsMenu.test.tsx       |   69 +-
 .../src/features/dashboards/DashboardCard.tsx      |   12 +-
 .../src/features/home/ActivityTable.tsx            |   28 +-
 .../src/features/home/EmptyState.test.tsx          |   39 +
 superset-frontend/src/features/home/EmptyState.tsx |   10 +-
 superset-frontend/src/features/home/Menu.tsx       |   75 +-
 .../src/features/home/RightMenu.test.tsx           |  127 +-
 superset-frontend/src/features/home/RightMenu.tsx  |  197 ++-
 .../src/features/home/SubMenu.test.tsx             |   32 +
 superset-frontend/src/features/home/SubMenu.tsx    |   66 +-
 superset-frontend/src/features/home/types.ts       |    1 +
 .../src/features/roles/RoleFormItems.test.tsx      |   43 +-
 .../src/features/roles/RoleFormItems.tsx           |   12 +
 superset-frontend/src/hooks/useIsMobile.ts         |   88 ++
 superset-frontend/src/logger/LogUtils.ts           |    2 +
 .../src/pages/ChartCreation/ChartCreation.test.tsx |   59 +
 .../src/pages/ChartCreation/index.tsx              |    2 +
 .../src/pages/DashboardList/DashboardList.test.tsx |    7 +
 .../src/pages/DashboardList/index.tsx              |   33 +-
 .../src/pages/Home/Home.mobile.test.tsx            |  183 +++
 superset-frontend/src/pages/Home/Home.test.tsx     |    7 +
 superset-frontend/src/pages/Home/index.tsx         |   43 +-
 .../MobileUnsupported/MobileUnsupported.test.tsx   |   95 ++
 .../src/pages/MobileUnsupported/index.tsx          |  141 ++
 superset-frontend/src/views/App.tsx                |   37 +-
 superset-frontend/src/views/CRUD/utils.tsx         |   12 +
 superset-frontend/src/views/routes.tsx             |   36 +-
 .../tools/webpack.proxy-config.test.js             |  272 ++++
 superset-frontend/webpack.proxy-config.js          |  102 +-
 superset/charts/client_processing.py               |  484 +++++-
 superset/charts/data/api.py                        |    7 +-
 superset/charts/data/form_data.py                  |   63 +
 superset/cli/export_example.py                     |    2 +-
 superset/commands/chart/export.py                  |   24 +-
 superset/commands/chart/warm_up_cache.py           |    3 +-
 superset/commands/dashboard/export.py              |    4 +-
 superset/commands/database/oauth2.py               |   23 +-
 superset/commands/database/sync_permissions.py     |   19 +-
 superset/commands/database/validate_sql.py         |   12 +
 superset/commands/dataset/duplicate.py             |    2 +-
 superset/commands/dataset/update.py                |  122 +-
 superset/commands/export/assets.py                 |    6 +-
 superset/commands/importers/v1/examples.py         |    2 +-
 superset/commands/report/alert.py                  |   31 +
 superset/commands/report/base.py                   |   58 +-
 superset/commands/report/create.py                 |    2 +
 superset/commands/report/exceptions.py             |   32 +
 superset/commands/report/execute.py                |  230 +--
 superset/commands/report/slack_upgrade.py          |  225 +++
 superset/commands/report/update.py                 |   13 +
 superset/commands/security/create.py               |   43 +-
 superset/commands/security/update.py               |   57 +-
 superset/commands/sql_lab/estimate.py              |   22 +-
 superset/commands/sql_lab/results.py               |   10 +
 superset/commands/streaming_export/base.py         |   24 +-
 superset/commands/tag/export.py                    |   86 +-
 superset/common/query_context_factory.py           |    8 +-
 superset/common/query_object.py                    |   16 +
 superset/common/query_object_factory.py            |    4 +-
 superset/config.py                                 |   58 +-
 superset/connectors/sqla/models.py                 |   90 +-
 superset/daos/dashboard.py                         |   13 +-
 superset/daos/dataset.py                           |    2 +-
 superset/daos/security.py                          |   20 +-
 superset/dashboards/api.py                         |   55 +-
 superset/dashboards/filters.py                     |  119 +-
 superset/databases/api.py                          |    7 +-
 superset/databases/schemas.py                      |   24 +
 superset/databases/utils.py                        |   43 +-
 superset/db_engine_specs/base.py                   |   45 +-
 superset/db_engine_specs/bigquery.py               |    7 +
 superset/db_engine_specs/clickhouse.py             |   24 +-
 superset/db_engine_specs/couchbase.py              |    6 +-
 superset/db_engine_specs/databend.py               |   24 +-
 superset/db_engine_specs/databricks.py             |   51 +-
 superset/db_engine_specs/duckdb.py                 |   49 +-
 superset/db_engine_specs/hive.py                   |    6 +
 superset/db_engine_specs/mssql.py                  |    5 +
 superset/db_engine_specs/mysql.py                  |    4 +
 superset/db_engine_specs/postgres.py               |    7 +-
 superset/db_engine_specs/snowflake.py              |   28 +-
 superset/db_engine_specs/sybase.py                 |    5 +
 .../charts/Life_Expectancy_VS_Rural.yaml           |   47 +-
 superset/exceptions.py                             |   13 +-
 superset/extensions/__init__.py                    |   14 +-
 superset/initialization/__init__.py                |   33 +-
 superset/jinja_context.py                          |   33 +-
 superset/key_value/shared_entries.py               |    1 +
 superset/mcp_service/app.py                        |   28 +
 superset/mcp_service/auth.py                       |  144 +-
 superset/mcp_service/chart/chart_utils.py          |  220 ++-
 superset/mcp_service/chart/compile.py              |   28 +-
 superset/mcp_service/chart/plugins/table.py        |   19 +-
 superset/mcp_service/chart/preview_utils.py        |    2 +-
 .../mcp_service/chart/resources/chart_configs.py   |    2 +
 superset/mcp_service/chart/schemas.py              |  165 +-
 superset/mcp_service/chart/tool/get_chart_data.py  |  131 +-
 .../mcp_service/chart/tool/get_chart_preview.py    |   13 +-
 superset/mcp_service/chart/tool/list_charts.py     |   17 +-
 superset/mcp_service/chart/tool/update_chart.py    |  212 ++-
 .../mcp_service/chart/tool/update_chart_preview.py |   56 +-
 .../chart/validation/dataset_validator.py          |  113 +-
 superset/mcp_service/chart/validation/pipeline.py  |    2 +-
 superset/mcp_service/common/schema_discovery.py    |    3 +
 .../mcp_service/dashboard/tool/list_dashboards.py  |   12 +-
 superset/mcp_service/dataset/schemas.py            |   14 +
 superset/mcp_service/dataset/tool/list_datasets.py |   24 +-
 superset/mcp_service/dataset/tool/query_dataset.py |    3 +
 superset/mcp_service/mcp_config.py                 |    1 +
 superset/mcp_service/mcp_core.py                   |   60 +-
 superset/mcp_service/middleware.py                 |   85 +-
 superset/mcp_service/screenshot/__init__.py        |   19 +-
 .../mcp_service/screenshot/pooled_screenshot.py    |  492 ------
 .../mcp_service/screenshot/webdriver_config.py     |  143 --
 superset/mcp_service/screenshot/webdriver_pool.py  |  437 -----
 superset/mcp_service/server.py                     |   10 +
 superset/mcp_service/session_scope.py              |   69 +
 superset/mcp_service/utils/token_utils.py          |   62 +-
 ...8-07-26_11-10_c82ee8a39623_add_implicit_tags.py |    6 +-
 ...-08_01-17_e96dbf2cfef0_datasource_cluster_fk.py |    4 +-
 ...57699a813e_add_tables_relation_to_row_level_.py |    6 +-
 ...828ac4e_add_rls_filter_type_and_grouping_key.py |    2 +-
 ...654_fix_data_access_permissions_for_virtual_.py |    2 +-
 ...b56500de1855_add_uuid_column_to_import_mixin.py |    5 +-
 ...2fdb_add_granularity_to_charts_where_missing.py |    2 +-
 ...8_09-13_c501b7c653a3_add_missing_uuid_column.py |    5 +-
 ...14-38_a9422eeaae74_new_dataset_models_take_2.py |    5 +-
 superset/models/core.py                            |   35 +-
 superset/models/helpers.py                         |  196 ++-
 superset/models/sql_types/presto_sql_types.py      |   28 +-
 superset/reports/notifications/base.py             |    6 +
 superset/reports/notifications/exceptions.py       |    4 +
 superset/reports/notifications/slack.py            |  132 +-
 .../notifications/slack_channel_resolver.py        |   94 ++
 superset/reports/notifications/slack_mixin.py      |   21 +
 superset/reports/notifications/slack_transport.py  |  310 ++++
 superset/reports/notifications/slackv2.py          |  225 ++-
 superset/row_level_security/api.py                 |    4 +
 superset/security/manager.py                       |   89 +-
 superset/sql/dialects/dremio.py                    |   28 +-
 superset/sql/parse.py                              |  456 ++++--
 superset/sqllab/api.py                             |    8 +
 superset/sqllab/schemas.py                         |   36 +-
 superset/sqllab/sqllab_execution_context.py        |   39 +
 superset/sqllab/utils.py                           |    1 +
 superset/tasks/async_queries.py                    |    7 +-
 superset/tasks/cache.py                            |   45 +-
 superset/tasks/context.py                          |   14 +-
 superset/tasks/manager.py                          |    7 +-
 superset/tasks/slack.py                            |   16 +-
 superset/templates/superset/spa.html               |    7 +
 superset/utils/core.py                             |    2 +
 superset/utils/decorators.py                       |   25 +-
 superset/utils/encrypt.py                          |   57 +-
 superset/utils/filters.py                          |    6 +-
 superset/utils/log.py                              |   60 +-
 superset/utils/machine_auth.py                     |   33 +-
 superset/utils/number_format.py                    |  607 +++++++
 superset/utils/oauth2.py                           |   36 +-
 superset/utils/rls.py                              |   37 +-
 superset/utils/screenshots.py                      |   58 +-
 superset/utils/slack.py                            |  597 +++++--
 superset/utils/webdriver.py                        |  668 +-------
 superset/views/base_api.py                         |   75 +-
 superset/views/core.py                             |    5 +
 superset/views/datasource/views.py                 |   22 +-
 superset/views/sql_lab/views.py                    |    6 +
 superset/views/utils.py                            |   26 +-
 tests/integration_tests/celery_tests.py            |   16 +
 tests/integration_tests/charts/api_tests.py        |   78 +
 tests/integration_tests/dashboards/api_tests.py    |   46 +-
 .../dashboards/soft_delete_tests.py                |    7 +-
 tests/integration_tests/databases/api_tests.py     |   43 +-
 tests/integration_tests/datasource_tests.py        |    3 -
 .../db_engine_specs/hive_tests.py                  |    4 +-
 .../db_engine_specs/presto_tests.py                |    4 +-
 tests/integration_tests/model_tests.py             |   20 +-
 .../integration_tests/non_additive_totals_tests.py |   42 +
 tests/integration_tests/reports/alert_tests.py     |    5 +
 tests/integration_tests/reports/commands_tests.py  |  549 +++++--
 .../security/row_level_security_tests.py           |   53 +
 tests/integration_tests/sql_lab/api_tests.py       |    7 +-
 tests/integration_tests/sql_lab/commands_tests.py  |   42 +-
 tests/integration_tests/sqla_models_tests.py       |   16 +-
 tests/integration_tests/superset_test_config.py    |   18 +
 tests/integration_tests/thumbnails_tests.py        |  113 +-
 tests/integration_tests/utils/encrypt_tests.py     |   12 +-
 .../integration_tests/utils/machine_auth_tests.py  |   56 +-
 .../integration_tests/versioning/id_reuse_tests.py |    2 +-
 .../unit_tests/charts/data/form_data_test.py       |   21 +-
 tests/unit_tests/charts/test_client_processing.py  |  827 +++++++++-
 .../chart/streaming_export_command_test.py         |   46 +
 .../commands/chart/warm_up_cache_test.py           |   24 +-
 tests/unit_tests/commands/databases/oauth2_test.py |   42 +
 .../databases/sync_permissions_identity_test.py    |  140 ++
 .../commands/databases/sync_permissions_test.py    |   10 +-
 tests/unit_tests/commands/databases/update_test.py |    4 +-
 .../commands/databases/validate_sql_test.py        |    5 +
 .../unit_tests/commands/dataset/test_duplicate.py  |   18 +-
 tests/unit_tests/commands/dataset/update_test.py   |  200 +++
 tests/unit_tests/commands/export_test.py           |    4 +-
 .../commands/importers/v1/examples_test.py         |   18 +-
 tests/unit_tests/commands/report/alert_test.py     |    5 +
 tests/unit_tests/commands/report/base_test.py      |   92 ++
 tests/unit_tests/commands/report/execute_test.py   | 1333 +++++++++++++++-
 tests/unit_tests/commands/report/update_test.py    |    6 +
 tests/unit_tests/commands/security/rls_test.py     |  170 +-
 .../sql_lab/streaming_export_command_test.py       |  120 ++
 tests/unit_tests/commands/sql_lab/test_estimate.py |   72 +-
 .../common/test_query_context_factory.py           |   22 +
 tests/unit_tests/connectors/sqla/models_test.py    |  279 ++++
 tests/unit_tests/databases/api_test.py             |   10 +
 tests/unit_tests/databases/filters_test.py         |    2 +-
 tests/unit_tests/databases/oauth2_api_test.py      |  275 ++++
 tests/unit_tests/databases/test_schemas.py         |   54 +
 tests/unit_tests/db_engine_specs/test_base.py      |   14 +-
 tests/unit_tests/db_engine_specs/test_bigquery.py  |   12 +
 .../unit_tests/db_engine_specs/test_databricks.py  |   17 +
 tests/unit_tests/db_engine_specs/test_duckdb.py    |   28 +
 tests/unit_tests/db_engine_specs/test_hive.py      |   23 +
 tests/unit_tests/db_engine_specs/test_mssql.py     |   11 +
 tests/unit_tests/db_engine_specs/test_mysql.py     |   11 +
 tests/unit_tests/db_engine_specs/test_postgres.py  |   21 +
 tests/unit_tests/db_engine_specs/test_snowflake.py |   40 +-
 .../unit_tests/db_engine_specs/test_sybase.py      |   21 +-
 tests/unit_tests/db_engine_specs/test_trino.py     |   40 +-
 tests/unit_tests/extensions/test_sqlalchemy.py     |   18 +-
 .../key_value/test_shared_entries_migration.py     |   40 +
 .../mcp_service/chart/test_big_number_chart.py     |    1 +
 .../mcp_service/chart/test_chart_utils.py          |   90 ++
 tests/unit_tests/mcp_service/chart/test_compile.py |   40 +
 .../chart/test_dashboard_time_binding.py           |  567 +++++++
 .../mcp_service/chart/test_new_chart_types.py      |   60 +
 .../mcp_service/chart/tool/test_get_chart_data.py  |  456 +++++-
 .../chart/tool/test_get_chart_type_schema.py       |    9 +-
 .../mcp_service/chart/tool/test_list_charts.py     |  105 ++
 .../mcp_service/chart/tool/test_update_chart.py    |  474 ++++++
 .../chart/tool/test_update_chart_preview.py        |  277 +++-
 .../validation/test_column_name_normalization.py   |   68 +
 .../dashboard/tool/test_dashboard_generation.py    |   19 +
 .../dashboard/tool/test_dashboard_tools.py         |   63 +-
 .../mcp_service/dataset/tool/test_dataset_tools.py |  120 +-
 .../mcp_service/dataset/tool/test_query_dataset.py |   68 +
 .../mcp_service/system/tool/test_mcp_core.py       |   69 +-
 .../mcp_service/test_auth_user_resolution.py       |   70 +-
 .../mcp_service/test_guest_token_auth.py           |    7 -
 tests/unit_tests/mcp_service/test_middleware.py    |   67 +
 .../mcp_service/test_middleware_logging.py         |  103 ++
 .../mcp_service/test_pooled_screenshot.py          |   22 +-
 tests/unit_tests/mcp_service/test_session_scope.py |  233 +++
 .../models/test_virtual_dataset_format.py          |   92 ++
 tests/unit_tests/queries/query_object_test.py      |   67 +
 .../reports/notifications/slack_tests.py           | 1665 +++++++++++++++++---
 tests/unit_tests/security/manager_test.py          |   83 +
 .../security/test_embedded_guest_chart_access.py   |  185 +++
 tests/unit_tests/sql/dialects/dremio_tests.py      |   27 +
 tests/unit_tests/sql/parse_tests.py                |  683 +++++++-
 tests/unit_tests/sql_lab_execution_context.py      |   46 +
 tests/unit_tests/sql_lab_test.py                   |   18 +-
 tests/unit_tests/sqllab/api_test.py                |   46 +
 tests/unit_tests/sqllab/test_schemas.py            |   54 +
 tests/unit_tests/sqllab/test_utils.py              |   52 +
 tests/unit_tests/subjects/test_filters.py          |   27 +
 tests/unit_tests/tasks/test_cache.py               |   51 +-
 tests/unit_tests/tasks/test_slack.py               |   75 +
 tests/unit_tests/utils/encrypt_test.py             |   61 +
 tests/unit_tests/utils/filters_test.py             |   41 +-
 tests/unit_tests/utils/number_format_test.py       |  562 +++++++
 tests/unit_tests/utils/oauth2_tests.py             |  104 +-
 tests/unit_tests/utils/rls_test.py                 |  225 +++
 tests/unit_tests/utils/screenshot_test.py          |   81 +-
 tests/unit_tests/utils/slack_test.py               |  793 +++++++++-
 tests/unit_tests/utils/test_decorators.py          |   60 +-
 .../unit_tests/utils/test_encrypt_cbc_iv_reuse.py  |   14 +-
 .../utils/test_playwright_migration_working.py     |  199 ---
 tests/unit_tests/utils/webdriver_test.py           |  554 +------
 tests/unit_tests/views/datasource/views_test.py    |  184 +++
 .../views/test_sql_lab_tab_state_views.py          |  129 ++
 tests/unit_tests/views/test_utils.py               |   85 +-
 442 files changed, 28451 insertions(+), 5875 deletions(-)
 create mode 100644 .github/workflows/enforce-single-migration-head.yml
 create mode 100755 .github/workflows/scripts/check-docs-deploy-freshness.sh
 create mode 100755 .github/workflows/scripts/check-docs-deploy-freshness.test.sh
 create mode 100644 .github/workflows/superset-python-unittest-report.yml
 create mode 100644 docs/admin_docs/configuration/dashboard-performance.mdx
 create mode 100644 docs/docs/using-superset/mobile-experience.mdx
 create mode 100644 docs/static/img/screenshots/mobile/mobile_dashboard.jpg
 create mode 100644 docs/static/img/screenshots/mobile/mobile_dashboard_list.jpg
 create mode 100644 docs/static/img/screenshots/mobile/mobile_filter_drawer.jpg
 create mode 100644 docs/static/img/screenshots/mobile/mobile_home.jpg
 create mode 100644 docs/static/img/screenshots/mobile/mobile_nav_drawer.jpg
 create mode 100644 docs/static/img/screenshots/mobile/mobile_unsupported.jpg
 create mode 100644 helm/superset/tests/pdb_test.yaml
 create mode 100755 scripts/docker-build-extra-flags.sh
 create mode 100644 superset-frontend/packages/superset-core/src/theme/SupersetThemeProvider.test.tsx
 create mode 100644 superset-frontend/packages/superset-ui-chart-controls/src/utils/getTotalsMetrics.test.ts
 create mode 100644 superset-frontend/packages/superset-ui-chart-controls/src/utils/getTotalsMetrics.ts
 create mode 100644 superset-frontend/playwright/generators/docs/mobile-screenshots.spec.ts
 create mode 100644 superset-frontend/playwright/tests/dashboard/drill-to-detail.spec.ts
 create mode 100644 superset-frontend/playwright/tests/mobile/mobile-dashboard.spec.ts
 create mode 100644 superset-frontend/playwright/tests/mobile/mobile-navigation.spec.ts
 create mode 100644 superset-frontend/plugins/plugin-chart-echarts/src/utils/xAxisDrillByFilter.ts
 create mode 100644 superset-frontend/plugins/plugin-chart-echarts/test/BoxPlot/controlPanel.test.ts
 create mode 100644 superset-frontend/plugins/plugin-chart-echarts/test/utils/xAxisDrillByFilter.test.ts
 create mode 100644 superset-frontend/spec/helpers/mobileTestUtils.ts
 create mode 100644 superset-frontend/src/components/MobileRouteGuard/MobileRouteGuard.test.tsx
 copy superset-embedded-sdk/src/withTimeout.ts => superset-frontend/src/components/MobileRouteGuard/index.tsx (50%)
 create mode 100644 superset-frontend/src/explore/components/controls/AnnotationLayerControl/index.test.tsx
 create mode 100644 superset-frontend/src/hooks/useIsMobile.ts
 create mode 100644 superset-frontend/src/pages/Home/Home.mobile.test.tsx
 create mode 100644 superset-frontend/src/pages/MobileUnsupported/MobileUnsupported.test.tsx
 create mode 100644 superset-frontend/src/pages/MobileUnsupported/index.tsx
 create mode 100644 superset-frontend/tools/webpack.proxy-config.test.js
 create mode 100644 superset/charts/data/form_data.py
 create mode 100644 superset/commands/report/slack_upgrade.py
 delete mode 100644 superset/mcp_service/screenshot/pooled_screenshot.py
 delete mode 100644 superset/mcp_service/screenshot/webdriver_config.py
 delete mode 100644 superset/mcp_service/screenshot/webdriver_pool.py
 create mode 100644 superset/mcp_service/session_scope.py
 create mode 100644 superset/reports/notifications/slack_channel_resolver.py
 create mode 100644 superset/reports/notifications/slack_transport.py
 create mode 100644 superset/utils/number_format.py
 copy superset/migrations/versions/2022-02-25_08-06_ab9a9d86e695_deprecate_time_range_endpoints.py => tests/unit_tests/charts/data/form_data_test.py (67%)
 create mode 100644 tests/unit_tests/commands/databases/sync_permissions_identity_test.py
 create mode 100644 tests/unit_tests/databases/oauth2_api_test.py
 copy superset-frontend/netlify.toml => tests/unit_tests/db_engine_specs/test_sybase.py (60%)
 create mode 100644 tests/unit_tests/mcp_service/chart/test_dashboard_time_binding.py
 create mode 100644 tests/unit_tests/mcp_service/test_session_scope.py
 create mode 100644 tests/unit_tests/security/test_embedded_guest_chart_access.py
 create mode 100644 tests/unit_tests/sqllab/test_schemas.py
 create mode 100644 tests/unit_tests/sqllab/test_utils.py
 create mode 100644 tests/unit_tests/tasks/test_slack.py
 create mode 100644 tests/unit_tests/utils/number_format_test.py
 create mode 100644 tests/unit_tests/utils/rls_test.py
 delete mode 100644 tests/unit_tests/utils/test_playwright_migration_working.py
 create mode 100644 tests/unit_tests/views/test_sql_lab_tab_state_views.py