You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@superset.apache.org by ha...@apache.org on 2026/07/18 03:19:10 UTC

(superset) branch feat/replace-http-server-with-python-native-equivalent updated (a0c960f2530 -> bd03dec23d3)

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

hainenber pushed a change to branch feat/replace-http-server-with-python-native-equivalent
in repository https://gitbox.apache.org/repos/asf/superset.git


    from a0c960f2530 feat(ci): optimize Storybook testing in CI by replacing `http-server` with Python3 static server
     add 51ce2b11ad3 chore(deps-dev): update impyla requirement from <0.23,>0.16.2 to >=0.24.0,<0.25 (#41951)
     add 7a752d1c228 fix(dashboard): restore arrow key navigation in modal inputs opened from dropdown (#37978)
     add 5c12f216d51 feat(mcp): add delete_chart and delete_dashboard tools (#41472)
     add 678fcba8b48 feat(helm): Superset 6 structured config schema with deprecation path (#41777)
     add b641008da6a fix(versioning): preserve complete multi-flush history (#41940)
     add df209cedbf8 chore(deps-dev): update sqlalchemy-firebird requirement from <2.2,>=0.7.0 to >=0.8.0,<2.2 (#41950)
     add e8521471820 test: add edge-case tests for datetime_to_epoch function (#39404)
     add a03cabffa77 perf(csv): avoid regex in CSV value escaping (#40195)
     add 0ecf34d80e1 fix(a11y): add aria-label to ViewportControl text inputs (#41931)
     add b237aefb1ea fix(a11y): add aria-label to RightMenu documentation and bug-report icon links (#41903)
     add f5deda78641 fix(dataset): copy catalog field when duplicating a BigQuery dataset (#41106)
     add 189f258e0ce fix(drill): coerce temporal drill filter values (#40180)
     add 5e6b29d1a32 chore(deps-dev): bump sqlalchemy-hana from 0.4.0 to 3.0.3 (#41953)
     add 49dc0acd827 fix(pre-commit): prettier hook drops first file and never batches (#41944)
     add b8c0171976d test(rls): assert related/subjects honors search filter for roles (#31466) (#41969)
     add 958d1ab256a test(rls): assert dataset search returns all mask matches (#29707) (#41968)
     add 13c5a324027 fix(tests): correct stale TYPE_CHECKING import path in base_data_loader (#41972)
     add a1d1d69f5ea ci: enforce SQLAlchemy 2.0 deprecation warnings in unit-test CI (#41915)
     add 2a18a556b09 chore(frontend): lint Emotion CSS-in-JS with Stylelint (#41871)
     add db1912c6d98 chore(deps): bump cachetools from 6.2.1 to 7.1.4 (#41947)
     add 0ca51d9796a fix(Database Connection Form): Added validation to db credential input (#37919)
     add e403d9b0742 chore(lint): convert legacy plugin chart components to function components (#39452)
     add 12f28ce2354 chore(deps): bump holidays from 0.82 to 0.99 (#41949)
     add 98c3ec7a718 chore(deps): bump sqlglot from 30.8.0 to 30.12.0 (#41948)
     add d380663e710 chore(deps-dev): bump syntaqlite from 0.4.2 to 0.6.0 (#41952)
     add c0e5f5226d4 fix(explore): let chart owners overwrite when owners come through as objects (#41352)
     add c762b75ddc5 chore(lint): upgrade no-unused-vars rule from warn to error (#41132)
     add 8f339545adb chore(deps-dev): bump baseline-browser-mapping from 2.10.41 to 2.10.42 in /superset-frontend (#41993)
     add 73925922a9a chore(deps): bump react-arborist from 3.12.0 to 3.13.2 in /superset-frontend (#41992)
     add bb5d7dbb17b chore(deps): bump immer from 11.1.9 to 11.1.11 in /superset-frontend (#41991)
     add 9180ace1ddc chore(deps): bump actions/labeler from 6.1.0 to 6.2.0 (#41988)
     add 96bf1a1e4cd chore(deps): bump caniuse-lite from 1.0.30001800 to 1.0.30001802 in /docs (#41987)
     add 0cf217cdea5 chore(deps-dev): bump vitest from 4.1.9 to 4.1.10 in /superset-websocket (#41986)
     add f7b7bad9a88 chore(deps-dev): bump tsx from 4.22.5 to 4.23.0 in /superset-frontend (#41985)
     add 1c7a3f395f4 chore(deps): bump fs-extra from 11.3.2 to 11.3.6 in /superset-frontend (#41990)
     add 3c6982252b2 chore(deps-dev): bump webpack from 5.108.3 to 5.108.4 in /superset-frontend (#41989)
     add 029d49539bc fix(event-log): match embedded routes precisely in logger middleware (#41942)
     add 2fac66d1a30 feat(mcp): add update_dataset_metric tool for editing saved dataset metrics (#40975)
     add 8f75f1a353d fix(dashboard): deleted Display Control reappears after Apply Filters (#41999)
     add 68ebc22e1ee refactor: replace Engine.execute() with Connection.execute() (#41917)
     add 5dd060b714a fix(chart-echarts): disable animation for report screenshots so time-shift lines render fully (#42003)
     add 1627fab741b fix(i18n): make every catalog compile clean, canonicalize, fix ja plurals (#41828)
     add e063f5093c9 feat(frontend): upgrade Ant Design from v5 to v6 (#41636)
     add 873566c8272 fix(mcp): stop masking dashboard lookup DB errors as not-found (#41919)
     add d43a0d7633a chore: sqlalchemy.database package warnings are irrelevant (#41978)
     add 64df96be00a fix(nvd3): invoke shiftMetric() in TimePivot formDataOverrides (#41916)
     add 521e51429a7 chore: as_declarative() warnings are irrelevant (#41982)
     add c5131bff47e chore(a11y): enable 9 more jsx-a11y oxlint rules as errors (#42006)
     add 62ccdfacc2f fix(mcp): make list-item truncation cap configurable in get_dashboard_info (#41698)
     add 18f1dd394bb test(security): prove Drill By access does not require can_explore (#27900) (#41967)
     add d4a31d1d78a fix: add subdirectory deployment support for brandSpinnerUrl (#37523)
     add 8262aa7d6b4 fix(explore): restore drag-and-drop reordering broken by @dnd-kit migration (#41637)
     add 9818da445ab fix(a11y): add aria-label to cross-filter search icon (#41619)
     add 3e957b63d47 fix(a11y): make CopyToClipboard keyboard-operable for custom copyNode elements (#41958)
     add ce8219672ec fix(a11y): add accessible labels to EmbedCodeContent height/width inputs (#41995)
     add 25ce83cc58c fix(dashboard): apply auto-refresh interval in standalone mode (#41740)
     add 3c648ca2645 fix(swagger): support URL prefix via APPLICATION_ROOT in OpenAPI and Swagger UI (#40908)
     add 2857b29ab97 test(sqla): assert simple metric quotes columns requiring quoting (#30637) (#41961)
     add 836dce9b058 fix(i18n): reset embedded start guard and align menu error handling (#41491)
     add a2a71760ede fix(e2e): repair master Playwright smoke tests (#42013)
     add 993a43396ae fix: restore all-files pre-commit checks (#42014)
     add e420812eb74 test(filters): guard BIGINT filter value precision (#27510) (#41963)
     add 8afad27c848 chore: convert warning to error if parameters not passed as collection (#41977)
     add e165762bb7c refactor: begin transaction to automatically commit (#41979)
     add 42523f8cc4c fix(async-queries): back off polling when async event requests keep failing (#42012)
     add ccfccdf237e chore(deps-dev): bump oxlint from 1.72.0 to 1.73.0 in /superset-frontend (#42031)
     add 115ce12ff7f chore(deps-dev): bump @typescript-eslint/parser from 8.62.1 to 8.63.0 in /superset-frontend (#42030)
     add 35d05cc2787 chore(deps-dev): bump @swc/plugin-emotion from 14.14.1 to 14.15.0 in /superset-frontend (#42029)
     add e86dcf7b82e chore(deps): bump actions/setup-java from 5.4.0 to 5.5.0 (#42028)
     add 41efdb3082f chore(deps-dev): bump webpack-sources from 3.5.0 to 3.5.1 in /superset-frontend (#42027)
     add 68881a60ca2 chore(deps): bump caniuse-lite from 1.0.30001802 to 1.0.30001803 in /docs (#42026)
     add d49365757c0 chore(deps-dev): bump @typescript-eslint/parser from 8.61.0 to 8.63.0 in /docs (#42025)
     add 258f4c035b9 chore(deps-dev): bump typescript-eslint from 8.62.1 to 8.63.0 in /superset-websocket (#42022)
     add cc32d16e0cc chore(deps-dev): bump @typescript-eslint/parser from 8.62.0 to 8.63.0 in /superset-websocket (#42021)
     add d5e75c48135 fix(ci): correct setup-node version comment in tag-release.yml (#42039)
     add 7075e9f253c fix(event-log): match embedded routes without trailing slash in logger middleware (#42005)
     add 24959d1656d fix(ci): correct setup-node version comment in tech-debt.yml (#42037)
     add 4e10a962531 chore(ci): correct actions/setup-node version comment to v6.4.0 (#42038)
     add 0dcf67fa27d chore(deps-dev): bump typescript-eslint from 8.62.1 to 8.63.0 in /docs (#42024)
     add c4bee525eaa fix(ci): correct mismatched version comment on actions/setup-node pin (#42036)
     add 1f41899deb7 chore(deps-dev): bump @typescript-eslint/eslint-plugin from 8.62.1 to 8.63.0 in /superset-frontend (#42023)
     add 76bb5f8e698 fix(dashboard): prevent native filter loss when saving chart customizations (#42032)
     add ef3a9e925ec chore(deps-dev): bump @typescript-eslint/eslint-plugin from 8.62.0 to 8.63.0 in /superset-websocket (#42020)
     add 4b07d43050a fix(sqllab): collapse left sidebar shows compact db selector in top bar (#41898)
     add 256cc71c877 refactor: import from sqlalchemy.orm (#41981)
     add e3a0d0e41ec fix(versioning): isolate action metadata writes (#41943)
     add c04a0295ef6 fix(chart): keep query-context updates bound to the chart's datasource (#40955)
     add 4446967d0fe chore(lint): convert Storybook stories and shared helpers to function components (#39451)
     add bd9ba242662 fix(mcp): add AliasChoices to chart/dashboard/dataset request schemas (#41597)
     add 0a3c263606e fix(migration): strip metricSqlExpressions from ag_grid_table params (#41591)
     add d68e84e7315 fix(databricks): classify insufficient-permissions errors as 4xx (#41945)
     add be768efc0f4 fix(ci): make pre-commit fail closed instead of silently passing on an empty file list (#42044)
     add 13121fcd587 fix(ci): skip unsupported React 19 Dependabot updates (#42047)
     add 9db88203e16 fix(migration): use sqlalchemy.orm.declarative_base to avoid MovedIn20Warning (#42056)
     add ad8f2cf2680 chore(deps): bump github/codeql-action/analyze from 4.36.3 to 4.37.0 (#42069)
     add 6dcd95e14ab chore(deps-dev): bump syntaqlite from 0.6.0 to 0.7.0 (#42067)
     add b4373f60b3e chore(deps-dev): bump fastmcp from 3.4.2 to 3.4.3 (#42065)
     add abafe195bf9 chore(deps): bump click from 8.4.1 to 8.4.2 (#42064)
     add 7953382d100 feat(submenu_export): Add export to png and pdf options for charts (#38535)
     add d80267d00b1 chore(deps): bump github/codeql-action/init from 4.36.3 to 4.37.0 (#42068)
     add aa85455a5cf fix(i18n): Update Japanese translations (#41984)
     add a540f56f5ca fix(reports): raise typed executor-not-found error in alert-query path (#41486)
     add 2af66b2c9b5 fix(async-queries): add Celery task expiry to GAQ async query tasks (#42084)
     add 6c2b7aceb5a fix(mcp): correct decorator order on query_dataset tool (#41925)
     add f010affbc27 fix(reports): paginate Slack recipient picker for large workspaces (#41998)
     add 53c4603c8c1 chore(deps-dev): bump @types/node from 26.1.0 to 26.1.1 in /superset-frontend (#42077)
     add 071c4315803 chore(deps-dev): bump @types/node from 26.1.0 to 26.1.1 in /superset-websocket (#42076)
     add 7bc1895050c chore(deps-dev): update pydoris requirement from <2.0.0,>=1.0.0 to >=1.2.0,<2.0.0 (#42063)
     add e66d58361a7 chore(deps-dev): update clickhouse-connect requirement from <2.0,>=1.1.1 to >=1.4.2,<2.0 (#42062)
     add 5c8e14e9dc2 chore(deps-dev): bump hdbcli from 2.28.21 to 2.29.23 (#42060)
     add 753113d1692 chore(deps-dev): bump trino from 0.337.0 to 0.338.0 (#42059)
     add cec9afb165b fix(mcp): await ctx.info calls in update_dashboard tool (#41920)
     add f38fff2a19f test(mcp): close systematic test-coverage gaps in mcp_service (#41924)
     add 90f9238f8a5 fix(charts): preserve time filter for expression axes (#42052)
     add beb9d536873 fix(plugin-chart-echarts): use echarts 5.6.0 i18n export path for locale import (#42055)
     add e28b259de00 fix(semantic-layers): expose time grains in Explore for SemanticView datasources (#41456)
     add c6da740ce26 fix(app-root): restore legacy redirects for HEAD and the /superset app root (#42015)
     add da518d7a107 fix(a11y): associate Description label with TagModal input (#42034)
     add e564389a01d fix(a11y): associate Name label with input in CssTemplateModal (#42081)
     add 689fc34ac25 fix: replace deprecated appbuilder.app with current_app in test_explore_redirect (#42086)
     add 6fe4655ba2b fix(semantic-layers): separate grain and offset time-axis resolvers (#42093)
     add c540f782a3d fix(ci): remove Python 3.10 from the test matrix to unblock CI (#42058)
     add 1f786f19499 chore(deps): bump websocket-driver from 0.7.4 to 0.7.5 in /superset-frontend (#42094)
     add 1b0c6aaed36 chore(a11y): enable jsx-a11y/click-events-have-key-events as error (#42009)
     add 2bbb7d06386 feat(mcp): histogram and box plot chart type plugins (#41860)
     add 8ce6d429428 feat(mcp): add restore_chart and restore_dashboard tools (#41842)
     add 409605de708 fix(plugin-chart-echarts): key Mixed Timeseries label maps by rendered series names (#41933)
     add d57569c54a0 feat(reports): add XLSX (Excel) attachments for Alerts & Reports (#41424)
     add 635b18103dc fix(reports): null-guard execution against missing target (#39973)
     add 86030485180 fix(dashboard): block dependent filter from fetching until defaultToFirstItem parent selects (#40978)
     add 13d38a9cbdb test(security): assert intended trailing-slash behavior of security API (#29934) (#41965)
     add f697a0c24de test(charts): assert drill-to-detail carries applied filters (#28562) (#41960)
     add aea4585c6d3 fix(embedded-sdk): handle malformed JWT refresh timing (#40490)
     add 2f7afe4b47d feat(mcp): deleted_state trash listing for list_charts and list_dashboards (#41855)
     add de300c70b9f test(app-root): close two blind spots in the subdirectory redirect tests (#42016)
     add e84f8707872 chore(deps-dev): bump @formatjs/intl-durationformat from 0.10.15 to 0.10.16 in /superset-frontend (#42105)
     add 3b7647eb6ec fix(alerts): remove double border on InputNumber fields in report modal (#42090)
     add 059f6944eb7 fix(migration): use non-deprecated sqlalchemy.orm.declarative_base (#42080)
     add 661535e3909 refactor: automatically load with engine/connection (#41980)
     add 2dfd08fdb3e fix(plugin-chart-echarts): clarify Tooltip sort by metric description for stacked charts (#42106)
     add 33bc35d1354 feat(i18n): backfill Italian (it) translations (AI-generated, needs review) (#42101)
     add 5b57eb38d21 feat(i18n): backfill Chinese (Traditional) (zh_TW) translations (AI-generated, needs review) (#42102)
     add 6f154377d77 feat(i18n): backfill Romanian (ro) translations (AI-generated, needs review) (#42100)
     add b459601ceb5 feat(i18n): backfill missing translations across 24 catalogs (AI-generated, needs review) (#42099)
     add 9e38c1dd13d chore(a11y): enable jsx-a11y/no-static-element-interactions as error (#42096)
     add 30b93ab7432 fix(frontend): fix edit/delete permissions for charts, dashboards, and datasets (#18870) (#32981) (#32995)
     add edca579625a fix(alerts): show typed text in email recipients selector (#42091)
     add c45b9002e64 feat(mcp): register /health HTTP endpoint (#41755)
     add 50672304840 chore(lint): display import/no-duplicates lint rule violation as error (#42042)
     add 20e6dfd37df fix(dashboard): seed default active tab path at hydration (#42075)
     add 9f8e1508ca6 fix(plugin-chart-echarts): show forecast tooltip values when they equal zero (#41311)
     add f467d36a24c fix(i18n): accept script subtags (e.g. sr_Latn) in backfill_po language codes (#42103)
     add 157ef61fd83 fix(charts): render time comparison without a time grain (#42054)
     add dbef0c3feea fix(plugin-chart-ag-grid-table): render Show summary totals row on ag-grid 36 (#42115)
     add 7eab41f9048 chore(deps-dev): bump prettier from 3.9.4 to 3.9.5 in /superset-websocket (#42134)
     add ba309fd016f chore(deps-dev): bump prettier from 3.9.4 to 3.9.5 in /superset-frontend (#42133)
     add 778800ba821 chore(deps): bump mapbox-gl from 3.25.0 to 3.26.0 in /superset-frontend (#42132)
     add 9bb0e376b36 chore(deps): bump docusaurus-plugin-openapi-docs from 5.1.0 to 5.1.1 in /docs (#42131)
     add 8d36dca9e83 chore(deps): bump react-diff-viewer-continued from 4.2.2 to 4.3.0 in /superset-frontend (#42130)
     add bef03fb8508 chore(deps-dev): bump prettier from 3.9.4 to 3.9.5 in /docs (#42128)
     add 929ec58276f chore(deps): bump docusaurus-theme-openapi-docs from 5.1.0 to 5.1.1 in /docs (#42129)
     add 60fb1c6f019 docs(mcp): document all 7 generate_chart chart_type values, fix stale config comment (#41599)
     add 9ccd365652a feat(echarts): respect time grain in time-series tooltips (#41350)
     add 69b144ec16a feat(dashboards): Add open graph metadata for dashboards (#33550)
     add fc506c06daa feat: added email delivery of XLSX reports (#40885)
     add 905b20a3f2c fix(ci): retry change_detector GitHub API calls on transient errors (#42138)
     add c0781ba3164 chore(i18n): update Russian translations (#41885)
     add c05ac138fb9 fix(table): prevent pagination reset on cell click (#42136)
     add 9f230bcfc0c fix(cli): add --username option to import-directory command (#40994)
     add f3255c46ac8 feat(mcp): add dashboard owner, role, and certification management tools (#41606)
     add 73aa8ef280d docs(mcp): fix instruction/docstring drift and annotation metadata in mcp_service (#41922)
     add eef3dac72f8 fix(nav): prevent top navbar from flashing to vertical layout on load (#40781)
     add f8cfa459efb fix(presto): fix latest_sub_partition guard bypass + escape partition filter values (#41877)
     add a99c98c6fee feat(mcp): waterfall chart type plugin (#42070)
     add 5b837e844e9 fix(sqla): cast native UUID columns to string for LIKE/ILIKE filters (#41804)
     add c84a154b524 feat(helm): support additive extra init containers (#42114)
     add 5750d82426c fix(pandas_postprocessing): avoid FutureWarning for mean/median in boxplot (#42004)
     add 5bf26f77f82 fix(label): restore spacing between icon and label text (#42141)
     add 6a330c251b3 chore(deps): bump redis from 5.3.1 to 8.0.1 (#41813)
     add 91f814abead feat(pie): add the ability to make half a donut (#35459)
     add 68297886d42 fix(ci): stop concurrency cancellation from bricking required checks on approval-gated PRs (#42148)
     add ce8d4397cdd test(jinja): prove current_user_* macros produce collision-free cache keys (#42122)
     add 25f6c6c80bc fix(pivot-table): add bottom border to last grouped row (#36081)
     add b432f8c9175 fix(docs): use modern driver package for CrateDB (#42125)
     add 0f61d9a3fb8 fix(bigquery): ensure BigQuery client uses project from engine URI (#41975)
     add bd03dec23d3 chore(lint): display import/no-duplicates lint rule violation as error

No new revisions were added by this update.

Summary of changes:
 .github/actions/file-changes-action                |    1 -
 .github/actions/setup-backend/action.yml           |    2 -
 .github/dependabot.yml                             |   10 +-
 .github/workflows/codeql-analysis.yml              |    4 +-
 .github/workflows/embedded-sdk-release.yml         |    2 +-
 .github/workflows/embedded-sdk-test.yml            |    2 +-
 .github/workflows/generate-FOSSA-report.yml        |    2 +-
 .github/workflows/labeler.yml                      |    2 +-
 .github/workflows/license-check.yml                |    2 +-
 .github/workflows/pr-lint.yml                      |   10 +-
 .github/workflows/pre-commit.yml                   |   85 +-
 .github/workflows/release.yml                      |    2 +-
 .../workflows/scheduled-docker-image-refresh.yml   |    2 +-
 .github/workflows/superset-docs-deploy.yml         |    4 +-
 .github/workflows/superset-docs-verify.yml         |    4 +-
 .github/workflows/superset-e2e.yml                 |    4 +-
 .github/workflows/superset-extensions-cli.yml      |    2 +-
 .github/workflows/superset-helm-lint.yml           |    9 +-
 .github/workflows/superset-playwright.yml          |    2 +-
 .../workflows/superset-python-integrationtest.yml  |    2 +-
 .github/workflows/superset-python-unittest.yml     |    8 +-
 .github/workflows/superset-translations.yml        |    2 +-
 .github/workflows/tag-release.yml                  |    4 +-
 .github/workflows/tech-debt.yml                    |    2 +-
 .gitmodules                                        |    3 -
 .pre-commit-config.yaml                            |   15 +-
 .rat-excludes                                      |    1 +
 UPDATING.md                                        |   17 +
 docs/admin_docs/configuration/alerts-reports.mdx   |    4 +-
 docs/admin_docs/configuration/mcp-server.mdx       |    2 +
 docs/package.json                                  |   12 +-
 docs/src/data/databases.json                       |    2 +-
 .../version-6.0.0/configuration/alerts-reports.mdx |    2 +-
 docs/yarn.lock                                     |  188 +-
 helm/superset/Chart.yaml                           |    2 +-
 helm/superset/README.md                            |   64 +-
 helm/superset/UPGRADING.md                         |  161 +
 helm/superset/templates/NOTES.txt                  |    6 +
 helm/superset/templates/_helpers.tpl               |  641 ++-
 helm/superset/templates/deployment-beat.yaml       |   18 +-
 helm/superset/templates/deployment-flower.yaml     |   13 +-
 helm/superset/templates/deployment-worker.yaml     |   18 +-
 helm/superset/templates/deployment-ws.yaml         |    3 +
 helm/superset/templates/deployment.yaml            |   20 +-
 helm/superset/templates/init-job.yaml              |    8 +-
 helm/superset/templates/secret-env.yaml            |   36 +-
 .../superset/templates/secret-superset-config.yaml |    4 +-
 helm/superset/tests/checksum_test.yaml             |  132 +
 helm/superset/tests/config_test.yaml               |   94 +
 .../superset/tests/deprecation_test.yaml           |   23 +-
 helm/superset/tests/init_containers_test.yaml      |  168 +
 helm/superset/tests/initscript_test.yaml           |   63 +
 helm/superset/tests/secret_env_test.yaml           |   71 +
 .../superset/tests/serviceaccount_test.yaml        |   44 +-
 .../superset/tests/values_defaults_test.yaml       |   24 +-
 helm/superset/values.schema.json                   |  140 +
 helm/superset/values.yaml                          |  158 +-
 pyproject.toml                                     |   28 +-
 pytest.ini                                         |   11 +-
 requirements/base.txt                              |   11 +-
 requirements/development.txt                       |   19 +-
 .../superset_core/common => scripts}/__init__.py   |    0
 scripts/benchmark_migration.py                     |    9 +-
 scripts/change_detector.py                         |   39 +-
 scripts/{check-custom-rules.sh => stylelint.sh}    |    9 +-
 scripts/translations/babel_update.sh               |   29 +
 scripts/translations/backfill_po.py                |   24 +-
 .../src/guestTokenRefresh.test.ts                  |   20 +
 superset-embedded-sdk/src/guestTokenRefresh.ts     |   28 +-
 superset-frontend/.storybook/preview.jsx           |    2 +-
 superset-frontend/.storybook/shared/Expandable.tsx |   57 +-
 superset-frontend/.storybook/shared/VerifyCORS.tsx |  113 +-
 superset-frontend/.stylelintignore                 |    9 +
 .../cypress-base/cypress/e2e/dashboard/utils.ts    |   15 +-
 .../cypress-base/cypress/e2e/explore/utils.ts      |    4 +-
 .../cypress-base/cypress/support/directories.ts    |   30 +-
 superset-frontend/jest.config.js                   |    2 +-
 superset-frontend/oxlint.json                      |   42 +-
 superset-frontend/package-lock.json                | 3027 +++++++++++---
 superset-frontend/package.json                     |   47 +-
 .../packages/superset-core/package.json            |    2 +-
 .../superset-core/src/theme/GlobalStyles.tsx       |   22 +-
 .../superset-core/src/theme/Theme.test.tsx         |  121 +-
 .../src/theme/__snapshots__/Theme.test.tsx.snap    |  730 ++++
 .../superset-core/src/theme/utils/index.ts         |   14 +-
 .../superset-ui-chart-controls/package.json        |    2 +-
 .../packages/superset-ui-core/package.json         |    6 +-
 .../components/Matrixify/MatrixifyGridCell.tsx     |    2 +-
 .../Matrixify/MatrixifyGridRenderer.test.tsx       |    3 +-
 .../components/Matrixify/MatrixifyGridRenderer.tsx |    3 +-
 .../chart/stories/ChartDataProvider.stories.tsx    |    3 +-
 .../components/ActionButton/ActionButton.test.tsx  |   14 +-
 .../src/components/ActionButton/index.tsx          |    2 +
 .../src/components/AsyncAceEditor/index.tsx        |    1 -
 .../src/components/Button/Button.test.tsx          |    2 +-
 .../src/components/Collapse/Collapse.test.tsx      |    6 +-
 .../src/components/Collapse/Collapse.tsx           |    4 +-
 .../src/components/CronPicker/CronPicker.test.tsx  |   24 +-
 .../src/components/CronPicker/index.tsx            |    6 +-
 .../DropdownContainer/DropdownContainer.tsx        |    9 +-
 .../src/components/FaveStar/index.tsx              |    1 +
 .../src/components/Form/LabeledErrorBoundInput.tsx |    8 +
 .../superset-ui-core/src/components/Form/types.ts  |    5 +
 .../src/components/Icons/Icons.stories.tsx         |    6 +-
 .../src/components/Label/Label.test.tsx            |   35 +
 .../src/components/Label/index.tsx                 |   37 +-
 .../src/components/Modal/Modal.tsx                 |    6 +-
 .../components/ModalTrigger/ModalTrigger.test.tsx  |   48 +-
 .../src/components/ModalTrigger/index.tsx          |   36 +-
 .../PageHeaderWithActions.test.tsx                 |    4 +-
 .../src/components/PopoverSection/index.tsx        |    9 +-
 .../src/components/RefreshLabel/index.tsx          |    1 +
 .../src/components/Select/AsyncSelect.test.tsx     |   36 +-
 .../src/components/Select/AsyncSelect.tsx          |   22 +-
 .../src/components/Select/Select.test.tsx          |   44 +-
 .../src/components/Select/Select.tsx               |   17 +-
 .../src/components/Select/constants.test.ts        |   48 +-
 .../src/components/Select/constants.ts             |   51 +-
 .../src/components/Select/styles.tsx               |   12 +-
 .../src/components/Select/types.ts                 |   14 +-
 .../TableCollection/TableCollection.test.tsx       |    9 +-
 .../src/components/Tabs/Tabs.test.tsx              |   18 +-
 .../superset-ui-core/src/components/Tabs/Tabs.tsx  |    8 +-
 .../src/components/TimezoneSelector/index.tsx      |    2 +-
 .../src/components/Tooltip/Tooltip.stories.tsx     |    2 +-
 .../src/components/Tooltip/index.tsx               |    3 +-
 .../TooltipParagraph/TooltipParagraph.test.tsx     |   37 +-
 .../src/components/antdDomContract.test.tsx        |  240 ++
 .../number-format/stories/NumberFormat.stories.tsx |  198 +-
 .../src/time-format/stories/TimeFormat.stories.tsx |  175 +-
 .../src/utils/handleKeyboardActivation.test.ts     |   62 +
 .../src/utils/handleKeyboardActivation.ts          |   48 +
 .../packages/superset-ui-core/src/utils/index.ts   |    1 +
 .../test/query/types/PostProcessing.test.ts        |    4 +-
 .../playwright/components/core/Select.ts           |    2 +-
 .../components/modals/NativeFiltersConfigModal.ts  |   86 +
 .../playwright/components/modals/index.ts          |    1 +
 .../generators/docs/docs-screenshots.spec.ts       |    3 +-
 .../playwright/pages/ChartCreationPage.ts          |    9 +-
 .../playwright/pages/DashboardPage.ts              |   52 +-
 superset-frontend/playwright/pages/ExplorePage.ts  |    2 +-
 .../SaveDatasetModal.ts => pages/HomePage.ts}      |   36 +-
 .../tests/dashboard/clear-all-filters.spec.ts      |   22 +-
 .../tests/dashboard/delete-display-control.spec.ts |  233 ++
 .../tests/home/welcome.spec.ts}                    |   27 +-
 .../legacy-plugin-chart-calendar/src/Calendar.ts   |    2 +-
 .../src/CountryMap.ts                              |    2 +-
 .../src/HorizonChart.tsx                           |  101 +-
 .../legacy-plugin-chart-horizon/src/HorizonRow.tsx |  268 +-
 .../test/HorizonChart.test.tsx                     |   51 +
 .../test/HorizonRow.test.tsx                       |  102 +
 .../src/PairedTTest.tsx                            |   77 +-
 .../src/TTestTable.tsx                             |  545 +--
 .../test/TTestTable.test.tsx                       |  365 ++
 .../src/TimePivot/controlPanel.ts                  |    5 +-
 .../test/TimePivot/controlPanel.test.ts            |   57 +
 .../src/AgGridTable/components/CustomHeader.tsx    |   40 +-
 .../src/AgGridTableChart.tsx                       |    1 -
 .../src/renderers/NumericCellRenderer.tsx          |   16 +-
 .../src/styles/index.tsx                           |   15 +-
 .../src/transformProps.ts                          |   50 +-
 .../src/utils/getCellStyle.ts                      |   10 +-
 .../src/utils/useColDefs.ts                        |    4 +-
 .../test/transformProps.test.ts                    |   50 +
 .../test/utils/getCellStyle.test.ts                |  108 +
 .../src/BigNumber/BigNumberViz.tsx                 |    4 -
 .../src/MixedTimeseries/EchartsMixedTimeseries.tsx |   55 +-
 .../src/MixedTimeseries/transformProps.ts          |   79 +-
 .../plugin-chart-echarts/src/Pie/controlPanel.tsx  |   40 +
 .../plugin-chart-echarts/src/Pie/transformProps.ts |  169 +-
 .../plugins/plugin-chart-echarts/src/Pie/types.ts  |   37 +
 .../src/Timeseries/Regular/Bar/controlPanel.tsx    |    9 +-
 .../src/Timeseries/transformProps.ts               |   26 +-
 .../src/components/Echart.test.tsx                 |   53 +-
 .../plugin-chart-echarts/src/components/Echart.tsx |   32 +-
 .../plugins/plugin-chart-echarts/src/controls.tsx  |    2 +-
 .../plugin-chart-echarts/src/utils/forecast.ts     |   15 +-
 .../plugin-chart-echarts/src/utils/formatters.ts   |   20 +-
 .../EchartsMixedTimeseries.test.tsx                |  223 ++
 .../test/MixedTimeseries/transformProps.test.ts    |  285 ++
 .../test/Pie/transformProps.test.ts                |  255 +-
 .../test/Timeseries/transformProps.test.ts         |   79 +-
 .../test/Timeseries/transformers.test.ts           |    6 +-
 .../test/utils/forecast.test.ts                    |   69 +
 .../test/utils/formatters.test.ts                  |   65 +
 .../plugins/plugin-chart-pivot-table/package.json  |    4 +
 .../src/PivotTableChart.tsx                        |   84 +-
 .../src/react-pivottable/Styles.ts                 |    4 +
 .../src/react-pivottable/TableRenderers.tsx        |   26 +-
 .../test/PivotTableChart.test.tsx                  |  370 ++
 .../test/TableRenderer.test.tsx                    |  158 +
 .../test/react-pivottable/tableRenders.test.tsx    |    7 +-
 .../plugin-chart-pivot-table/test/testData.ts      |  232 ++
 .../test/testHelpers.tsx                           |    0
 .../test/tsconfig.json                             |    0
 .../plugin-chart-point-cluster-map/package.json    |    2 +-
 .../plugin-chart-table/src/DataTable/DataTable.tsx |    1 +
 .../plugins/plugin-chart-table/src/Styles.tsx      |    2 +-
 .../plugins/plugin-chart-table/src/TableChart.tsx  |   44 +-
 .../plugin-chart-table/test/TableChart.test.tsx    |   51 +-
 .../src/chart/WordCloud.tsx                        |  273 +-
 .../src/plugin/controls/ColorSchemeControl.tsx     |    5 +-
 .../src/plugin/controls/RotationControl.tsx        |    6 +-
 .../test/WordCloud.test.tsx                        |  161 +
 .../src/DeckGLContainer.test.tsx                   |    1 +
 .../src/layers/Arc/stories/Arc.stories.tsx         |    3 +-
 .../src/layers/Geojson/transformProps.ts           |    6 +-
 .../spec/helpers/jsDomWithFetchAPI.ts              |   58 +-
 .../spec/helpers/mockBootstrapData.ts              |   47 +
 superset-frontend/spec/helpers/shim.tsx            |    2 +-
 .../src/SqlLab/SqlLabGlobalStyles.tsx              |   10 +-
 .../src/SqlLab/actions/sqlLab.test.ts              |   55 +-
 superset-frontend/src/SqlLab/actions/sqlLab.ts     |   24 +-
 .../src/SqlLab/components/App/index.tsx            |    6 +-
 .../SqlLab/components/AppLayout/AppLayout.test.tsx |   41 +
 .../src/SqlLab/components/AppLayout/index.tsx      |    5 +-
 .../src/SqlLab/components/ColumnElement/index.tsx  |    2 +-
 .../src/SqlLab/components/EditorWrapper/index.tsx  |    4 +-
 .../src/SqlLab/components/ResultSet/index.tsx      |    4 +-
 .../ScheduleQueryButton.test.tsx                   |  137 +
 .../components/ScheduleQueryButton/index.tsx       |    9 +-
 .../src/SqlLab/components/SouthPane/index.tsx      |    4 +-
 .../src/SqlLab/components/SqlEditor/index.tsx      |   66 +-
 .../SqlLab/components/SqlEditorLeftBar/index.tsx   |   57 +-
 .../SqlEditorTabHeader/SqlEditorTabHeader.test.tsx |    2 +
 .../SqlLab/components/SqlEditorTabHeader/index.tsx |    2 -
 .../SqlLab/components/SqlEditorTopBar/index.tsx    |    3 +
 .../TabbedSqlEditors/TabbedSqlEditors.test.tsx     |    2 +-
 .../TableExploreTree/TreeNodeRenderer.tsx          |   28 +-
 .../src/SqlLab/reducers/sqlLab.test.ts             |   39 +
 superset-frontend/src/SqlLab/reducers/sqlLab.ts    |    2 +-
 superset-frontend/src/components/Chart/Chart.tsx   |    8 +-
 .../src/components/Chart/ChartRenderer.tsx         |    1 -
 .../src/components/Chart/DrillBy/DrillByModal.tsx  |   19 +-
 .../components/Chart/DrillBy/DrillBySubmenu.tsx    |    4 +-
 .../Chart/DrillDetail/DrillDetailPane.test.tsx     |    4 +-
 .../Chart/DrillDetail/DrillDetailTableControls.tsx |    1 +
 .../CopyToClipboard/CopyToClipboard.test.tsx       |   13 +
 .../src/components/CopyToClipboard/index.tsx       |   10 +-
 .../src/components/DatabaseSelector/index.tsx      |    6 +-
 .../src/components/DatabaseSelector/types.ts       |    1 +
 .../Datasource/FoldersEditor/TreeItem.styles.ts    |    2 +-
 .../DatasourceEditor/DatasourceEditor.tsx          |   17 +-
 .../components/DatasetUsageTab/index.tsx           |    1 -
 .../tests/DatasourceEditor.test.tsx                |    2 +-
 .../ErrorMessage/DatabaseErrorMessage.tsx          |    3 +-
 .../src/components/ErrorMessage/ErrorAlert.tsx     |    9 +-
 .../ErrorMessage/FrontendNetworkErrorMessage.tsx   |    1 -
 .../ErrorMessage/ParameterErrorMessage.tsx         |    3 +-
 .../ErrorMessage/TimeoutErrorMessage.tsx           |    3 +-
 .../src/components/GridTable/index.tsx             |    1 -
 .../src/components/ListView/ListView.test.tsx      |   28 +-
 .../src/components/ListView/ListView.tsx           |   10 +-
 .../src/components/MessageToasts/Toast.tsx         |    2 +-
 .../components/Modal/CollapsibleModalSection.tsx   |    2 -
 .../src/components/Modal/ModalFormField.tsx        |    4 -
 .../src/components/Modal/StandardModal.tsx         |    8 +-
 .../src/components/PanelToolbar/index.tsx          |    3 +-
 .../src/components/ResizableSidebar/index.tsx      |    2 +-
 .../ResizableSidebar/useStoredSidebarWidth.ts      |    2 +-
 .../TableSelector/TableSelector.test.tsx           |    4 +-
 .../src/components/Tag/utils.test.tsx              |    2 +-
 superset-frontend/src/core/sqlLab/models.ts        |    4 +-
 .../dashboard/actions/chartCustomizationActions.ts |    1 +
 .../src/dashboard/actions/hydrate.test.ts          |  276 ++
 superset-frontend/src/dashboard/actions/hydrate.ts |   16 +-
 .../src/dashboard/actions/nativeFilters.ts         |    2 +
 .../components/AddSliceCard/AddSliceCard.test.tsx  |    9 +-
 .../components/AddSliceCard/AddSliceCard.tsx       |    2 +-
 .../components/BuilderComponentPane/index.tsx      |    4 +-
 .../components/CustomizationsBadge/index.tsx       |   25 +-
 .../src/dashboard/components/Dashboard.tsx         |   20 +-
 .../DashboardBuilder/DashboardBuilder.test.tsx     |   52 +
 .../DashboardBuilder/DashboardBuilder.tsx          |    9 +-
 .../DashboardBuilder/DashboardContainer.tsx        |    2 +-
 .../src/dashboard/components/DashboardGrid.tsx     |    8 +-
 .../dashboard/components/FiltersBadge/Styles.tsx   |    1 -
 .../components/Header/HeadlessAutoRefresh.test.tsx |  100 +
 .../components/Header/HeadlessAutoRefresh.tsx      |   91 +
 .../src/dashboard/components/Header/index.tsx      |    2 +-
 .../src/dashboard/components/IconButton.test.tsx   |   75 +
 .../src/dashboard/components/IconButton.tsx        |   78 +-
 .../src/dashboard/components/SaveModal.tsx         |    8 +-
 .../SliceHeaderControls.test.tsx                   |  119 +
 .../components/SliceHeaderControls/index.tsx       |  109 +-
 .../components/URLShortLinkButton/index.tsx        |    1 +
 .../components/filterscope/FilterScopeSelector.tsx |    2 +-
 .../gridComponents/Divider/Divider.test.tsx        |    2 +-
 .../components/gridComponents/Tab/Tab.tsx          |    4 +
 .../components/gridComponents/Tabs/Tabs.test.tsx   |    4 +-
 .../gridComponents/TabsRenderer/TabsRenderer.tsx   |    2 -
 .../src/dashboard/components/menu/HoverMenu.tsx    |    2 +-
 .../nativeFilters/ConfigModal/SharedStyles.tsx     |    2 +-
 .../FilterBar/CrossFilters/CrossFilter.test.tsx    |    2 +-
 .../CrossFilters/CrossFilterTitle.test.tsx         |    9 +
 .../FilterBar/CrossFilters/CrossFilterTitle.tsx    |    1 +
 .../ScopingModal/ChartsScopingListPanel.tsx        |    1 +
 .../FilterBar/FilterConfigurationLink/index.tsx    |    2 +
 .../useFilterConfigModal.tsx                       |    4 +-
 .../FilterControls/FilterControlShared.tsx         |    4 +-
 .../FilterBar/FilterControls/FilterControls.tsx    |    2 +-
 .../FilterBar/FilterControls/FilterValue.test.tsx  |  109 +
 .../FilterBar/FilterControls/FilterValue.tsx       |   31 +-
 .../FilterBar/UrlFilters/Vertical.test.tsx         |    4 +-
 .../nativeFilters/FilterBar/Vertical.tsx           |    5 +-
 .../components/nativeFilters/FilterBar/index.tsx   |   13 +-
 .../ConfigModalSidebar/ConfigModalSidebar.tsx      |    2 +-
 .../FiltersConfigModal/FilterTitleContainer.tsx    |    3 +
 .../FiltersConfigForm/DatasetSelect.test.tsx       |    4 +-
 .../FiltersConfigForm/DependencyList.tsx           |    2 +-
 .../FiltersConfigForm/RemovedFilter.tsx            |    2 +-
 .../FiltersConfigModal/FiltersConfigModal.test.tsx |   10 +-
 .../FiltersConfigModal/ItemTitleContainer.tsx      |    3 +
 .../FiltersConfigModal/NewItemDropdown.tsx         |   84 +-
 .../hooks/useCustomizationOperations.ts            |    2 +-
 .../hooks/useFilterOperations.ts                   |    2 +-
 .../components/nativeFilters/state.test.ts         |   97 +-
 .../dashboard/components/nativeFilters/state.ts    |   60 +-
 .../src/dashboard/reducers/dashboardState.test.ts  |   83 +
 .../src/dashboard/reducers/nativeFilters.test.ts   |   54 +-
 .../src/dashboard/reducers/nativeFilters.ts        |   19 +-
 superset-frontend/src/dashboard/styles.ts          |    4 +-
 superset-frontend/src/dashboard/types.ts           |    3 +
 .../dashboard/util/getDefaultActiveTabs.test.ts    |  112 +
 .../src/dashboard/util/getDefaultActiveTabs.ts     |   54 +
 .../src/dashboard/util/getRelatedCharts.test.ts    |    7 +
 .../src/dashboard/util/getRelatedCharts.ts         |    5 +-
 .../src/dashboard/util/permissionUtils.test.ts     |   27 +
 .../src/dashboard/util/permissionUtils.ts          |   19 +-
 superset-frontend/src/embedded/index.test.tsx      |  155 +-
 superset-frontend/src/embedded/index.tsx           |  121 +-
 .../src/explore/components/ControlHeader.tsx       |    2 +
 .../explore/components/ControlPanelsContainer.tsx  |   18 +-
 .../explore/components/DataTableControl/index.tsx  |    2 +-
 .../components/DataTablesPane/DataTablesPane.tsx   |   18 +-
 .../components/DataTableControls.tsx               |    1 +
 .../components/ResultsPaneOnDashboard.tsx          |    4 +-
 .../DataTablesPane/components/SamplesPane.tsx      |    1 -
 .../DatasourcePanelDragOption/index.tsx            |    2 +-
 .../explore/components/DatasourcePanel/index.tsx   |   10 +-
 .../explore/components/EmbedCodeContent.test.tsx   |    6 +
 .../src/explore/components/EmbedCodeContent.tsx    |   15 +-
 .../src/explore/components/ExploreAlert.tsx        |    2 +-
 .../components/ExploreChartHeader/index.tsx        |    3 +-
 .../ExploreChartHeader/useExploreMetadataBar.tsx   |    3 +-
 .../explore/components/ExploreChartPanel/index.tsx |   11 +-
 .../ExploreContainer/ExploreDndContext.test.tsx    |  189 +-
 .../ExploreContainer/ExploreDndContext.tsx         |   93 +-
 .../components/ExploreViewContainer/index.tsx      |   11 +-
 .../src/explore/components/SaveModal.test.tsx      |   21 +
 .../src/explore/components/SaveModal.tsx           |   22 +-
 .../ColumnConfigControl/ColumnConfigControl.tsx    |    4 +
 .../FormattingPopoverContent.test.tsx              |    4 +-
 .../components/controls/ContourControl/index.tsx   |   14 +-
 .../controls/DatasourceControl/index.tsx           |    1 -
 .../components/DateFunctionTooltip.tsx             |   32 +-
 .../DateFilterControl/tests/CustomFrame.test.tsx   |   20 +-
 .../DndColumnSelectControl/ColumnSelectPopover.tsx |   10 +
 .../DndColumnMetricSelect.test.tsx                 |    5 +-
 .../DndColumnMetricSelect.tsx                      |   12 +-
 .../DndColumnSelectControl/DndColumnSelect.tsx     |    5 +-
 .../DndColumnSelectPopoverTitle.tsx                |    3 +
 .../DndColumnSelectControl/DndFilterSelect.tsx     |   13 +-
 .../DndMetricSelect.test.tsx                       |   14 +-
 .../DndColumnSelectControl/DndMetricSelect.tsx     |   24 +-
 .../controls/DndColumnSelectControl/Option.tsx     |    1 +
 .../DndColumnSelectControl/OptionWrapper.tsx       |    7 +-
 .../DndColumnSelectControl/utils/optionSelector.ts |    8 +-
 .../FilterControl/AdhocFilterControl/index.tsx     |   29 +-
 .../AdhocFilterEditPopover.test.tsx                |    5 +-
 .../FilterControl/AdhocFilterEditPopover/index.tsx |    2 +-
 ...AdhocFilterEditPopoverSimpleTabContent.test.tsx |    2 +-
 .../index.tsx                                      |    2 +-
 .../controls/LayerConfigsControl/LayerTreeItem.tsx |    3 +
 .../MetricControl/AdhocMetricEditPopover/index.tsx |   11 +-
 .../MetricControl/AdhocMetricEditPopoverTitle.tsx  |    8 +-
 .../controls/NumberControl/NumberControl.test.tsx  |    2 +-
 .../components/controls/OptionControls/index.tsx   |    8 +-
 .../components/controls/SelectControl.test.tsx     |   78 +-
 .../components/controls/TextControl/index.tsx      |    7 +-
 .../components/controls/ViewportControl.tsx        |    1 +
 .../controls/VizTypeControl/VizTypeGallery.tsx     |    4 +-
 .../components/controls/VizTypeControl/index.tsx   |   13 +-
 .../useExploreAdditionalActionsMenu/index.tsx      |  131 +-
 .../useExploreAdditionalActionsMenu.test.tsx       |  103 +-
 .../explore/controlUtils/getSectionsToRender.ts    |    6 +-
 .../src/features/alerts/AlertReportModal.test.tsx  |  152 +-
 .../src/features/alerts/AlertReportModal.tsx       |   12 +-
 .../alerts/components/NotificationMethod.test.tsx  |  140 +
 .../alerts/components/NotificationMethod.tsx       |  232 +-
 .../NotificationMethodEmailRecipients.test.tsx     |  102 +
 .../src/features/allEntities/AllEntitiesTable.tsx  |    2 +-
 .../src/features/annotations/AnnotationModal.tsx   |    2 +-
 .../src/features/charts/ChartCard.tsx              |  105 +-
 .../cssTemplates/CssTemplateModal.test.tsx         |    9 +
 .../src/features/cssTemplates/CssTemplateModal.tsx |    5 +-
 .../src/features/dashboards/DashboardCard.tsx      |   87 +-
 .../DatabaseConnectionForm/EncryptedField.test.tsx |  142 +-
 .../DatabaseConnectionForm/EncryptedField.tsx      |   73 +-
 .../databases/DatabaseModal/index.test.tsx         |    2 +-
 .../src/features/databases/DatabaseModal/index.tsx |    4 +-
 .../src/features/databases/DatabaseModal/styles.ts |   33 +-
 .../databases/UploadDataModel/ColumnsPreview.tsx   |    4 +-
 .../features/databases/UploadDataModel/index.tsx   |    4 +-
 .../AddDataset/DatasetPanel/DatasetPanel.tsx       |   59 +-
 .../src/features/home/ChartTable.test.tsx          |    6 +
 superset-frontend/src/features/home/ChartTable.tsx |    6 +-
 .../src/features/home/DashboardTable.test.tsx      |    7 +
 .../src/features/home/DashboardTable.tsx           |    2 +-
 superset-frontend/src/features/home/Menu.test.tsx  |   84 +-
 superset-frontend/src/features/home/Menu.tsx       |   11 +-
 superset-frontend/src/features/home/RightMenu.tsx  |    2 +
 .../src/features/home/SavedQueries.tsx             |    1 -
 .../src/features/queries/QueryPreviewModal.tsx     |    2 +
 .../reports/ReportModal/ReportModal.test.tsx       |    9 +-
 .../src/features/reports/ReportModal/index.tsx     |    4 +
 superset-frontend/src/features/reports/types.ts    |    1 +
 .../src/features/roles/RoleListEditModal.test.tsx  |    2 +-
 .../semanticLayers/MultiEnumControl.test.tsx       |    2 +-
 .../features/semanticLayers/SemanticLayerModal.tsx |    5 -
 .../semanticLayers/jsonFormsAntdRenderers.test.tsx |  125 +
 .../src/features/tags/BulkTagModal.tsx             |    2 +-
 .../src/features/tags/TagModal.test.tsx            |    5 +
 superset-frontend/src/features/tags/TagModal.tsx   |    7 +-
 .../src/features/tasks/TaskPayloadPopover.tsx      |    4 +-
 .../src/features/tasks/TaskStackTracePopover.tsx   |    4 +-
 .../src/features/userInfo/UserInfoModal.tsx        |    2 +-
 superset-frontend/src/features/users/utils.ts      |    2 +-
 .../components/Select/SelectFilterPlugin.test.tsx  |    8 +-
 .../components/Select/SelectFilterPlugin.tsx       |    3 +-
 .../components/TimeGrain/TimeGrainFilterPlugin.tsx |    3 +-
 superset-frontend/src/filters/utils.test.ts        |   22 +
 superset-frontend/src/logger/LogUtils.ts           |    4 +
 .../src/middleware/asyncEvent.test.ts              |  231 ++
 superset-frontend/src/middleware/asyncEvent.ts     |   29 +-
 superset-frontend/src/middleware/logger.test.ts    |   30 +
 .../src/middleware/loggerMiddleware.ts             |   11 +-
 superset-frontend/src/pages/AllEntities/index.tsx  |    4 +-
 .../src/pages/ChartCreation/index.tsx              |   88 +-
 .../pages/ChartList/ChartList.cardview.test.tsx    |    5 +
 .../pages/ChartList/ChartList.listview.test.tsx    |    7 +-
 .../pages/ChartList/ChartList.permissions.test.tsx |   56 +-
 superset-frontend/src/pages/ChartList/index.tsx    |   95 +-
 .../DashboardList/DashboardList.behavior.test.tsx  |    5 +
 .../DashboardList.permissions.test.tsx             |    7 +-
 .../src/pages/DashboardList/DashboardList.test.tsx |    5 +
 .../src/pages/DashboardList/index.tsx              |   85 +-
 superset-frontend/src/pages/DatabaseList/index.tsx |  107 +-
 .../DatasetList/DatasetList.behavior.test.tsx      |    5 +
 .../DatasetList/DatasetList.listview.test.tsx      |   51 +-
 .../pages/DatasetList/DatasetList.testHelpers.tsx  |    5 +
 superset-frontend/src/pages/DatasetList/index.tsx  |  153 +-
 superset-frontend/src/pages/GroupsList/index.tsx   |    2 +-
 superset-frontend/src/pages/Home/index.tsx         |    4 +-
 .../src/pages/RowLevelSecurityList/index.tsx       |    4 +-
 superset-frontend/src/pages/Tags/index.tsx         |    8 +-
 superset-frontend/src/pages/TaskList/index.tsx     |    4 +
 superset-frontend/src/pages/UsersList/index.tsx    |    2 +-
 superset-frontend/src/setup/setupCodeOverrides.ts  |    4 +-
 superset-frontend/src/theme/ThemeController.ts     |    7 +-
 .../src/utils/downloadAsImage.test.ts              |   53 +-
 superset-frontend/src/utils/downloadAsImage.tsx    |   68 +-
 superset-frontend/src/utils/export.test.ts         |    5 +-
 superset-frontend/src/views/CRUD/types.ts          |    4 +-
 superset-frontend/src/views/CRUD/utils.tsx         |   17 +-
 superset-frontend/src/views/menu.test.tsx          |  109 +
 superset-frontend/src/views/menu.tsx               |   18 +-
 .../visualizations/TimeTable/TimeTable.test.tsx    |    4 +-
 .../src/visualizations/TimeTable/TimeTable.tsx     |    2 +-
 ...t-runner-jest.config.js => stylelint.config.js} |   27 +-
 superset-websocket/package-lock.json               |  398 +-
 superset-websocket/package.json                    |   12 +-
 superset/async_events/async_query_manager.py       |   30 +-
 superset/async_events/cache_backend.py             |   61 +-
 superset/charts/client_processing.py               |   44 +-
 superset/cli/importexport.py                       |   34 +-
 superset/cli/test_db.py                            |   14 +-
 superset/commands/chart/exceptions.py              |   13 +
 superset/commands/chart/update.py                  |   54 +
 superset/commands/dataset/duplicate.py             |   63 +-
 superset/commands/report/alert.py                  |   13 +
 superset/commands/report/exceptions.py             |   13 +
 superset/commands/report/execute.py                |  146 +-
 superset/common/query_context_factory.py           |   20 +
 superset/config.py                                 |   12 +
 superset/connectors/sqla/models.py                 |    2 +-
 superset/connectors/sqla/utils.py                  |    2 +-
 superset/db_engine_specs/bigquery.py               |    6 +-
 superset/db_engine_specs/crate.py                  |    2 +-
 superset/db_engine_specs/databricks.py             |   75 +-
 superset/db_engine_specs/doris.py                  |   12 +-
 superset/db_engine_specs/duckdb.py                 |   13 +-
 superset/db_engine_specs/hive.py                   |   36 +-
 superset/db_engine_specs/impala.py                 |   11 +-
 superset/db_engine_specs/postgres.py               |   15 +-
 superset/db_engine_specs/presto.py                 |   19 +-
 superset/db_engine_specs/snowflake.py              |   13 +-
 superset/db_engine_specs/starrocks.py              |   42 +-
 superset/embedded/view.py                          |    3 +
 superset/extensions/metadb.py                      |   34 +-
 superset/initialization/__init__.py                |   21 +
 superset/mcp_service/CLAUDE.md                     |    8 +-
 superset/mcp_service/app.py                        |   69 +-
 superset/mcp_service/chart/chart_utils.py          |   98 +-
 superset/mcp_service/chart/plugins/__init__.py     |    9 +
 superset/mcp_service/chart/plugins/box_plot.py     |  155 +
 superset/mcp_service/chart/plugins/histogram.py    |  197 +
 superset/mcp_service/chart/plugins/waterfall.py    |  186 +
 superset/mcp_service/chart/schemas.py              |  409 +-
 superset/mcp_service/chart/tool/__init__.py        |    4 +
 superset/mcp_service/chart/tool/delete_chart.py    |  186 +
 superset/mcp_service/chart/tool/generate_chart.py  |   69 +-
 superset/mcp_service/chart/tool/get_chart_data.py  |    3 +
 .../mcp_service/chart/tool/get_chart_preview.py    |    5 +-
 .../chart/tool/get_chart_type_schema.py            |   54 +-
 superset/mcp_service/chart/tool/list_charts.py     |    7 +-
 superset/mcp_service/chart/tool/restore_chart.py   |  180 +
 .../mcp_service/chart/tool/update_chart_preview.py |    2 +-
 .../chart/validation/dataset_validator.py          |    7 +-
 superset/mcp_service/constants.py                  |    2 +
 superset/mcp_service/dashboard/schemas.py          |  532 ++-
 superset/mcp_service/dashboard/tool/__init__.py    |   10 +
 .../mcp_service/dashboard/tool/delete_dashboard.py |  235 ++
 .../dashboard/tool/get_dashboard_info.py           |    8 +
 .../mcp_service/dashboard/tool/governance_utils.py |  120 +
 .../mcp_service/dashboard/tool/list_dashboards.py  |    5 +-
 .../tool/manage_dashboard_certification.py         |  155 +
 .../dashboard/tool/manage_dashboard_owners.py      |  383 ++
 .../dashboard/tool/manage_dashboard_roles.py       |  326 ++
 .../dashboard/tool/restore_dashboard.py            |  193 +
 .../mcp_service/dashboard/tool/update_dashboard.py |   21 +-
 superset/mcp_service/dataset/dataset_utils.py      |   50 +
 superset/mcp_service/dataset/schemas.py            |  163 +-
 superset/mcp_service/dataset/tool/__init__.py      |    2 +
 superset/mcp_service/dataset/tool/query_dataset.py |   32 +-
 .../dataset/tool/update_dataset_metric.py          |  294 ++
 superset/mcp_service/mcp_config.py                 |   27 +-
 superset/mcp_service/mcp_core.py                   |   96 +-
 superset/mcp_service/middleware.py                 |   40 +-
 superset/mcp_service/server.py                     |   17 +
 superset/mcp_service/sql_lab/tool/execute_sql.py   |   89 +-
 superset/mcp_service/storage.py                    |   11 +-
 superset/mcp_service/utils/token_utils.py          |   12 +-
 superset/middleware/legacy_prefix_redirect.py      |   46 +-
 superset/migrations/shared/catalogs.py             |    3 +-
 superset/migrations/shared/migrate_viz/base.py     |    3 +-
 superset/migrations/shared/security_converge.py    |    3 +-
 ..._08-54_c3a8f8611885_materializing_permission.py |    2 +-
 ...d8bc074f7aad_add_new_field_is_restricted_to_.py |    2 +-
 ...06-27_08-43_27ae655e4247_make_creator_owners.py |    3 +-
 ...-09-07_23-50_33d996bcc382_update_slice_model.py |    2 +-
 ...2_11-31_eca4694defa7_sqllab_setting_defaults.py |    2 +-
 ...4_12-31_db0c65b146bd_update_slice_model_json.py |    2 +-
 ...7c195a_rewriting_url_from_shortner_with_new_.py |    2 +-
 ...-08_08-19_67a6ac9b727b_update_spatial_params.py |    2 +-
 ...2-17_11-06_21e88bc06c02_annotation_migration.py |    2 +-
 .../2018-02-13_08-07_e866bd2d4976_smaller_grid.py  |    2 +-
 ...-04-03_08-19_130915240929_is_sqllab_viz_flow.py |    2 +-
 ...9_bf706ae5eb46_cal_heatmap_metric_to_metrics.py |    2 +-
 ...018-06-04_11-12_c5756bec8b47_time_grain_sqla.py |    2 +-
 ...6-07_09-52_afb7730f6a9c_remove_empty_filters.py |    2 +-
 ...13_10-20_4451805bbaa1_remove_double_percents.py |    2 +-
 .../2018-06-13_14-54_bddc498dd179_adhoc_filters.py |    2 +-
 ...4_14-31_80a67c5192fa_single_pie_chart_metric.py |    2 +-
 ...1c4c6_migrate_num_period_compare_and_period_.py |    2 +-
 .../2018-07-19_23-41_c617da68de7d_form_nullable.py |    2 +-
 ...07-20_15-31_7f2635b51f5d_update_base_columns.py |    2 +-
 ...07-20_15-57_e9df189e5c7e_update_base_metrics.py |    2 +-
 ..._bebcf3fed1fe_convert_dashboard_v1_positions.py |    3 +-
 ...8-07-26_11-10_c82ee8a39623_add_implicit_tags.py |    2 +-
 .../versions/2018-08-01_11-47_7fcdcde0761c_.py     |    2 +-
 ...08545_migrate_time_range_for_default_filters.py |    2 +-
 ...2018-12-11_22-03_fb13d49b72f9_better_filters.py |    2 +-
 .../2019-03-21_10-22_d94d33dbe938_form_strip.py    |    2 +-
 ...a3f04bc82_add_parent_ids_in_dashboard_layout.py |    2 +-
 .../2019-06-28_13-17_ab8c66efdd01_resample.py      |    2 +-
 ...ng_unique_constraint_on_dashboard_slices_tbl.py |    2 +-
 ...5afa9079866a_serialize_schema_permissions_py.py |    3 +-
 ...e_form_strip_leading_and_trailing_whitespace.py |    2 +-
 .../2019-10-10_13-52_1495eb914ad3_time_range.py    |    2 +-
 ...127d0d1d_reconvert_legacy_filters_into_adhoc.py |    2 +-
 ...-08_01-17_e96dbf2cfef0_datasource_cluster_fk.py |    8 +-
 ..._14-13_3325d4caccc8_dashboard_scoped_filters.py |    3 +-
 ...10-42_f9a30386bd74_cleanup_time_grainularity.py |    2 +-
 ...57699a813e_add_tables_relation_to_row_level_.py |    8 +-
 ...29_09-24_620241d1153f_update_time_grain_sqla.py |    2 +-
 ...978245563a02_migrate_iframe_to_dash_markdown.py |    3 +-
 ...828ac4e_add_rls_filter_type_and_grouping_key.py |    2 +-
 ...654_fix_data_access_permissions_for_virtual_.py |    3 +-
 ...b56500de1855_add_uuid_column_to_import_mixin.py |    3 +-
 ...208f_collapse_alerting_models_into_a_single_.py |    9 +-
 ...6e99fb176a0_add_import_mixing_to_saved_query.py |    2 +-
 ...60bf0649a77_migrate_x_dateunit_in_time_range.py |    2 +-
 ...2fdb_add_granularity_to_charts_where_missing.py |    2 +-
 ...-10_12-32_41ce8799acc3_rename_pie_label_type.py |    2 +-
 ...1412ec1e5a7b_legacy_force_directed_to_echart.py |    2 +-
 ...989bbe479899_rename_filter_configuration_in_.py |    2 +-
 ...ea61c5e7_remove_dataset_health_check_message.py |    2 +-
 ...88938_country_map_use_lowercase_country_name.py |    2 +-
 ...3a3a8ff221_migrate_filter_sets_to_new_format.py |    2 +-
 ...ed7ec95_migrate_native_filters_to_new_schema.py |    2 +-
 ...3605f370a_fix_schemas_allowed_for_csv_upload.py |    2 +-
 ...15da_migrate_pivot_table_v2_heatmaps_to_new_.py |    2 +-
 ...4fbb_add_type_to_native_filter_configuration.py |    2 +-
 ...453f4e2e_migrate_timeseries_limit_metric_to_.py |    2 +-
 ...12_11-15_32646df09c64_update_time_grain_sqla.py |    2 +-
 ...e5f1dacd_rename_to_schemas_allowed_for_file_.py |    2 +-
 ...aa3ff_add_force_screenshot_to_alerts_reports.py |    2 +-
 ...5b9441_rename_big_viz_total_form_data_fields.py |    2 +-
 ...d1d2_move_pivot_table_v2_legacy_order_by_to_.py |    2 +-
 ...d8e252_fix_query_and_saved_query_null_schema.py |    2 +-
 ...b0ca7944_change_adhoc_filter_b_from_none_to_.py |    2 +-
 ...14-38_a9422eeaae74_new_dataset_models_take_2.py |    9 +-
 ...d0249074e4_deprecate_time_range_endpoints_v2.py |    2 +-
 ...07e4fdbaba_rm_time_range_endpoints_from_qc_3.py |    2 +-
 ...-39_cbe71abde154_fix_report_schedule_and_log.py |    2 +-
 ...8_16-07_e786798587de_delete_none_permissions.py |    3 +-
 ..._16-17_f3afaf1f11f0_add_unique_name_desc_rls.py |    3 +-
 ...59_7fb8bca906d2_permalink_rename_filterstate.py |    3 +-
 ...5-48_409c7b420ab0_add_created_by_fk_as_owner.py |    2 +-
 ...665d_fix_table_chart_conditional_formatting_.py |    2 +-
 ...1_4ce1d9b25135_remove_filter_bar_orientation.py |    2 +-
 ...4-46_c0a3ea245b61_remove_show_native_filters.py |    2 +-
 ...ac08bb5b83_invert_horizontal_bar_chart_order.py |    2 +-
 ...7_13-24_b5ea9d343307_bar_chart_stack_options.py |    2 +-
 ...03-27_12-30_7e67aecbf3f1_chart_ds_constraint.py |    2 +-
 ...2a5681ddfd_convert_key_value_entries_to_json.py |    3 +-
 ...-41_4ea966691069_cross_filter_global_scoping.py |    2 +-
 ...delete_obsolete_druid_nosql_slice_parameters.py |    2 +-
 ...6f8b1280_cleanup_erroneous_parent_filter_ids.py |    2 +-
 ...9_17-54_ee179a490af9_deckgl_path_width_units.py |    2 +-
 ...23_0769ef90fddd_fix_schema_perm_for_datasets.py |    2 +-
 ...086c2676_add_normalize_columns_to_sqla_model.py |    2 +-
 ...317970b4400c_added_time_secondary_column_to_.py |    2 +-
 ...ff00fe8_add_percent_calculation_type_funnel_.py |    2 +-
 ...d09c9_migrate_filter_boxes_to_native_filters.py |    3 +-
 ...47_be1b217cd8cd_big_number_kpi_single_metric.py |    2 +-
 ...9123a_update_charts_with_old_time_comparison.py |    2 +-
 ...fdba9f_merge_x_axis_sort_series_with_x_axis_.py |    2 +-
 ...2_convert_metric_currencies_from_str_to_json.py |    2 +-
 ...8d8526_fix_form_data_string_in_query_context.py |    2 +-
 ...rip_metricsqlexpressions_from_ag_grid_params.py |  110 +
 superset/models/core.py                            |    1 -
 superset/models/helpers.py                         |  290 +-
 .../extensions => superset/openapi}/__init__.py    |    4 +
 superset/openapi/manager.py                        |  143 +
 superset/reports/api.py                            |   11 +-
 superset/reports/models.py                         |    6 +
 superset/reports/notifications/base.py             |    1 +
 superset/reports/notifications/email.py            |   55 +-
 superset/reports/notifications/slack.py            |    2 +
 superset/reports/notifications/slackv2.py          |    2 +
 superset/reports/notifications/webhook.py          |   12 +
 superset/reports/schemas.py                        |    3 +
 superset/semantic_layers/mapper.py                 |  108 +-
 superset/semantic_layers/models.py                 |   70 +-
 superset/sql/dialects/firebolt.py                  |    5 +-
 superset/sqllab/sql_json_executer.py               |    8 +-
 superset/subjects/utils.py                         |   35 +
 superset/templates/superset/spa.html               |    6 +
 superset/translations/ar/LC_MESSAGES/messages.po   | 1103 +++--
 superset/translations/ca/LC_MESSAGES/messages.po   |  674 +++-
 superset/translations/cs/LC_MESSAGES/messages.po   |  669 +++-
 superset/translations/de/LC_MESSAGES/messages.po   |  681 +++-
 superset/translations/en/LC_MESSAGES/messages.po   |  472 ++-
 superset/translations/es/LC_MESSAGES/messages.po   |  718 +++-
 superset/translations/fa/LC_MESSAGES/messages.po   |  692 +++-
 superset/translations/fi/LC_MESSAGES/messages.po   |  720 +++-
 superset/translations/fr/LC_MESSAGES/messages.po   |  675 +++-
 superset/translations/it/LC_MESSAGES/messages.po   | 4218 +++++++++++---------
 superset/translations/ja/LC_MESSAGES/messages.po   | 3696 ++++++++---------
 superset/translations/ko/LC_MESSAGES/messages.po   | 1137 ++++--
 superset/translations/lv/LC_MESSAGES/messages.po   |  656 ++-
 superset/translations/messages.pot                 |  451 ++-
 superset/translations/mi/LC_MESSAGES/messages.po   |  679 +++-
 superset/translations/nl/LC_MESSAGES/messages.po   |  674 +++-
 superset/translations/pl/LC_MESSAGES/messages.po   |  686 +++-
 superset/translations/pt/LC_MESSAGES/messages.po   | 1185 ++++--
 .../translations/pt_BR/LC_MESSAGES/messages.po     |  688 +++-
 superset/translations/ro/LC_MESSAGES/messages.po   | 3787 ++++++++++++++----
 superset/translations/ru/LC_MESSAGES/messages.po   | 1806 +++++----
 superset/translations/sk/LC_MESSAGES/messages.po   |  671 +++-
 superset/translations/sl/LC_MESSAGES/messages.po   |  674 +++-
 superset/translations/sr/LC_MESSAGES/messages.po   |  773 +++-
 .../translations/sr_Latn/LC_MESSAGES/messages.po   |  772 +++-
 superset/translations/th/LC_MESSAGES/messages.po   |  717 +++-
 superset/translations/tr/LC_MESSAGES/messages.po   |  682 +++-
 superset/translations/uk/LC_MESSAGES/messages.po   |  669 +++-
 superset/translations/zh/LC_MESSAGES/messages.po   | 1031 +++--
 .../translations/zh_TW/LC_MESSAGES/messages.po     | 2662 +++++++-----
 superset/utils/core.py                             |   50 +-
 superset/utils/csv.py                              |   48 +-
 superset/utils/date_parser.py                      |   77 +-
 superset/utils/mock_data.py                        |   16 +-
 superset/utils/pandas_postprocessing/boxplot.py    |   10 +-
 superset/versioning/changes/listener.py            |  287 +-
 superset/versioning/changes/state.py               |   33 +-
 superset/views/base.py                             |   27 +
 superset/views/core.py                             |    1 +
 .../example_data/data_loading/base_data_loader.py  |    2 +-
 .../data_loading/pandas/pandas_data_loader.py      |    3 +-
 tests/integration_tests/base_tests.py              |    3 +-
 tests/integration_tests/celery_tests.py            |    6 +-
 tests/integration_tests/cli_tests.py               |  118 +-
 tests/integration_tests/conftest.py                |   90 +-
 tests/integration_tests/dao/base_dao_test.py       |    2 +-
 .../databases/commands/upload_test.py              |   55 +-
 tests/integration_tests/datasets/api_tests.py      |   27 +-
 tests/integration_tests/datasets/commands_tests.py |   20 +-
 tests/integration_tests/datasource_tests.py        |   36 +-
 .../db_engine_specs/hive_tests.py                  |   20 +-
 .../db_engine_specs/presto_tests.py                |   30 +-
 tests/integration_tests/fixtures/datasource.py     |    2 +-
 .../integration_tests/fixtures/energy_dashboard.py |    3 +-
 .../fixtures/unicode_dashboard.py                  |    3 +-
 .../fixtures/world_bank_dashboard.py               |    3 +-
 tests/integration_tests/query_context_tests.py     |   11 +-
 tests/integration_tests/reports/commands_tests.py  |  145 +-
 tests/integration_tests/reports/utils.py           |    3 +
 .../security/row_level_security_tests.py           |  107 +
 tests/integration_tests/sqllab_tests.py            |   44 +-
 .../versioning/transaction_correctness_tests.py    |  308 ++
 .../views/test_explore_redirect.py                 |   41 +-
 .../async_events/async_query_manager_tests.py      |   83 +-
 .../unit_tests/async_events/test_cache_backend.py  |  148 +
 tests/unit_tests/charts/test_client_processing.py  |   96 +
 tests/unit_tests/commands/chart/update_test.py     |   91 +-
 .../unit_tests/commands/dataset/test_duplicate.py  |   13 +
 tests/unit_tests/commands/report/alert_test.py     |   40 +-
 tests/unit_tests/commands/report/execute_test.py   |  358 +-
 tests/unit_tests/common/test_query_actions.py      |   88 +
 .../common/test_query_context_factory.py           |  132 +
 .../common/test_query_context_processor.py         |  298 +-
 tests/unit_tests/common/test_time_shifts.py        |  399 +-
 tests/unit_tests/dao/base_dao_test.py              |    2 +-
 tests/unit_tests/db_engine_specs/test_bigquery.py  |   72 +
 .../unit_tests/db_engine_specs/test_databricks.py  |   74 +
 tests/unit_tests/db_engine_specs/test_datastore.py |    2 +-
 tests/unit_tests/db_engine_specs/test_doris.py     |   17 +-
 tests/unit_tests/db_engine_specs/test_presto.py    |   66 +
 tests/unit_tests/db_engine_specs/test_sqlite.py    |    9 +-
 tests/unit_tests/db_engine_specs/test_starrocks.py |    6 +-
 tests/unit_tests/db_engine_specs/test_trino.py     |   14 +-
 tests/unit_tests/explore/utils_test.py             |   74 +
 tests/unit_tests/extensions/test_sqlalchemy.py     |  115 +-
 tests/unit_tests/jinja_context_test.py             |  130 +
 .../mcp_service/chart/test_chart_schemas.py        |   67 +
 .../chart/test_histogram_boxplot_charts.py         |  465 +++
 .../mcp_service/chart/test_waterfall_chart.py      |  316 ++
 .../mcp_service/chart/tool/test_delete_chart.py    |  229 ++
 .../mcp_service/chart/tool/test_generate_chart.py  |    1 +
 .../chart/tool/test_get_chart_type_schema.py       |    9 +-
 .../chart/tool/test_list_charts_deleted_state.py   |  171 +
 .../mcp_service/chart/tool/test_restore_chart.py   |  242 ++
 .../dashboard/test_dashboard_schemas.py            |   73 +
 .../mcp_service/{ => dashboard/tool}/conftest.py   |   34 +-
 .../dashboard/tool/test_dashboard_tools.py         |   29 +
 .../dashboard/tool/test_delete_dashboard.py        |  254 ++
 .../tool/test_list_dashboards_deleted_state.py     |  176 +
 .../tool/test_manage_dashboard_certification.py    |  365 ++
 .../dashboard/tool/test_manage_dashboard_owners.py |  639 +++
 .../dashboard/tool/test_manage_dashboard_roles.py  |  573 +++
 .../dashboard/tool/test_restore_dashboard.py       |  250 ++
 .../dashboard/tool/test_update_dashboard.py        |   62 +-
 .../database/tool/test_database_tools.py           |   74 +-
 .../mcp_service/dataset/test_dataset_schemas.py    |   54 +
 .../mcp_service/dataset/tool/test_query_dataset.py |   92 +-
 .../dataset/tool/test_update_dataset_metric.py     |  541 +++
 .../mcp_service/rls/tool/test_rls_tools.py         |   72 +-
 .../tool/test_get_compatible_dimensions.py         |   89 +
 .../tool/test_get_compatible_metrics.py            |   89 +
 .../semantic_layer/tool/test_get_table.py          |  229 ++
 .../semantic_layer/tool/test_list_metrics.py       |  266 +-
 .../sql_lab/tool/test_open_sql_lab_with_context.py |  119 +-
 .../mcp_service/system/resources}/__init__.py      |    0
 .../system/resources/test_schema_discovery.py      |  133 +
 .../mcp_service/system/tool/test_health_check.py   |  134 +
 .../mcp_service/tag/tool/test_tag_tools.py         |   69 +-
 tests/unit_tests/mcp_service/test_mcp_core.py      |   73 +-
 tests/unit_tests/mcp_service/test_mcp_e2e_smoke.py |  228 ++
 tests/unit_tests/mcp_service/test_mcp_server.py    |   60 +
 tests/unit_tests/mcp_service/test_middleware.py    |   89 +
 .../mcp_service/test_rbac_tool_enforcement.py      |  256 ++
 .../mcp_service/theme/tool/test_get_theme_info.py  |   39 +
 .../mcp_service/theme/tool/test_list_themes.py     |  173 +
 .../mcp_service/user/tool/test_user_tools.py       |   66 +-
 .../mcp_service/utils/test_cache_utils.py          |  271 ++
 .../mcp_service/utils/test_oauth2_utils.py         |   96 +
 .../mcp_service/utils/test_retry_utils.py          |  396 ++
 .../mcp_service/utils/test_token_utils.py          |   72 +
 .../middleware/test_legacy_prefix_redirect.py      |  214 +-
 .../test_add_deleted_at_to_dashboards.py           |   14 +-
 .../migrations/test_add_deleted_at_to_slices.py    |   10 +-
 .../migrations/test_add_deleted_at_to_tables.py    |   10 +-
 ...rip_metricsqlexpressions_from_ag_grid_params.py |  203 +
 tests/unit_tests/models/core_test.py               |    5 +-
 tests/unit_tests/models/helpers_test.py            |  394 +-
 .../unit_tests/models/test_no_filter_time_range.py |   42 +-
 .../unit_tests/openapi}/__init__.py                |    0
 tests/unit_tests/openapi/test_manager.py           |   77 +
 .../pandas_postprocessing/test_boxplot.py          |   24 +
 tests/unit_tests/reports/api_test.py               |   41 +
 tests/unit_tests/reports/model_test.py             |    9 +-
 .../reports/notifications/email_tests.py           |  124 +
 .../reports/notifications/slack_tests.py           |   78 +
 .../reports/notifications/webhook_tests.py         |   31 +
 tests/unit_tests/scripts/change_detector_test.py   |   96 +
 .../scripts/translations/backfill_po_test.py       |   18 +
 tests/unit_tests/security/api_test.py              |   55 +
 tests/unit_tests/semantic_layers/mapper_test.py    |  377 ++
 tests/unit_tests/semantic_layers/models_test.py    |  112 +
 tests/unit_tests/sqllab/test_sql_json_executer.py  |  150 +
 tests/unit_tests/subjects/test_utils.py            |   56 +
 tests/unit_tests/utils/csv_tests.py                |    3 +
 tests/unit_tests/utils/date_parser_tests.py        |  107 +
 tests/unit_tests/utils/test_core.py                |   38 +
 tests/unit_tests/utils/test_date_parsing.py        |   91 +
 tests/unit_tests/versioning/test_listener.py       |  204 +
 tests/unit_tests/views/test_base_theme_helpers.py  |  132 +
 .../views/test_redirect_view_subdirectory.py       |   63 +-
 820 files changed, 60417 insertions(+), 15847 deletions(-)
 delete mode 160000 .github/actions/file-changes-action
 create mode 100644 helm/superset/UPGRADING.md
 create mode 100644 helm/superset/tests/checksum_test.yaml
 create mode 100644 helm/superset/tests/config_test.yaml
 copy MANIFEST.in => helm/superset/tests/deprecation_test.yaml (66%)
 create mode 100644 helm/superset/tests/init_containers_test.yaml
 create mode 100644 helm/superset/tests/initscript_test.yaml
 create mode 100644 helm/superset/tests/secret_env_test.yaml
 copy .dockerignore => helm/superset/tests/serviceaccount_test.yaml (63%)
 copy docker/entrypoints/docker-ci.sh => helm/superset/tests/values_defaults_test.yaml (71%)
 mode change 100755 => 100644
 create mode 100644 helm/superset/values.schema.json
 copy {superset-core/src/superset_core/common => scripts}/__init__.py (100%)
 copy scripts/{check-custom-rules.sh => stylelint.sh} (81%)
 create mode 100644 superset-frontend/.stylelintignore
 create mode 100644 superset-frontend/packages/superset-core/src/theme/__snapshots__/Theme.test.tsx.snap
 create mode 100644 superset-frontend/packages/superset-ui-core/src/components/antdDomContract.test.tsx
 create mode 100644 superset-frontend/packages/superset-ui-core/src/utils/handleKeyboardActivation.test.ts
 create mode 100644 superset-frontend/packages/superset-ui-core/src/utils/handleKeyboardActivation.ts
 create mode 100644 superset-frontend/playwright/components/modals/NativeFiltersConfigModal.ts
 copy superset-frontend/playwright/{components/modals/SaveDatasetModal.ts => pages/HomePage.ts} (57%)
 create mode 100644 superset-frontend/playwright/tests/dashboard/delete-display-control.spec.ts
 copy superset-frontend/{src/SqlLab/hooks/useAppDispatch.ts => playwright/tests/home/welcome.spec.ts} (51%)
 create mode 100644 superset-frontend/plugins/legacy-plugin-chart-horizon/test/HorizonChart.test.tsx
 create mode 100644 superset-frontend/plugins/legacy-plugin-chart-horizon/test/HorizonRow.test.tsx
 create mode 100644 superset-frontend/plugins/legacy-plugin-chart-paired-t-test/test/TTestTable.test.tsx
 create mode 100644 superset-frontend/plugins/legacy-preset-chart-nvd3/test/TimePivot/controlPanel.test.ts
 create mode 100644 superset-frontend/plugins/plugin-chart-ag-grid-table/test/utils/getCellStyle.test.ts
 create mode 100644 superset-frontend/plugins/plugin-chart-echarts/test/MixedTimeseries/EchartsMixedTimeseries.test.tsx
 create mode 100644 superset-frontend/plugins/plugin-chart-pivot-table/test/PivotTableChart.test.tsx
 create mode 100644 superset-frontend/plugins/plugin-chart-pivot-table/test/TableRenderer.test.tsx
 create mode 100644 superset-frontend/plugins/plugin-chart-pivot-table/test/testData.ts
 copy superset-frontend/plugins/{plugin-chart-table => plugin-chart-pivot-table}/test/testHelpers.tsx (100%)
 copy superset-frontend/plugins/{plugin-chart-table => plugin-chart-pivot-table}/test/tsconfig.json (100%)
 create mode 100644 superset-frontend/plugins/plugin-chart-word-cloud/test/WordCloud.test.tsx
 create mode 100644 superset-frontend/spec/helpers/mockBootstrapData.ts
 create mode 100644 superset-frontend/src/SqlLab/components/ScheduleQueryButton/ScheduleQueryButton.test.tsx
 create mode 100644 superset-frontend/src/dashboard/actions/hydrate.test.ts
 create mode 100644 superset-frontend/src/dashboard/components/Header/HeadlessAutoRefresh.test.tsx
 create mode 100644 superset-frontend/src/dashboard/components/Header/HeadlessAutoRefresh.tsx
 create mode 100644 superset-frontend/src/dashboard/components/IconButton.test.tsx
 create mode 100644 superset-frontend/src/dashboard/util/getDefaultActiveTabs.test.ts
 create mode 100644 superset-frontend/src/dashboard/util/getDefaultActiveTabs.ts
 create mode 100644 superset-frontend/src/features/alerts/components/NotificationMethodEmailRecipients.test.tsx
 create mode 100644 superset-frontend/src/features/semanticLayers/jsonFormsAntdRenderers.test.tsx
 create mode 100644 superset-frontend/src/views/menu.test.tsx
 copy superset-frontend/{test-runner-jest.config.js => stylelint.config.js} (65%)
 create mode 100644 superset/mcp_service/chart/plugins/box_plot.py
 create mode 100644 superset/mcp_service/chart/plugins/histogram.py
 create mode 100644 superset/mcp_service/chart/plugins/waterfall.py
 create mode 100644 superset/mcp_service/chart/tool/delete_chart.py
 create mode 100644 superset/mcp_service/chart/tool/restore_chart.py
 create mode 100644 superset/mcp_service/dashboard/tool/delete_dashboard.py
 create mode 100644 superset/mcp_service/dashboard/tool/governance_utils.py
 create mode 100644 superset/mcp_service/dashboard/tool/manage_dashboard_certification.py
 create mode 100644 superset/mcp_service/dashboard/tool/manage_dashboard_owners.py
 create mode 100644 superset/mcp_service/dashboard/tool/manage_dashboard_roles.py
 create mode 100644 superset/mcp_service/dashboard/tool/restore_dashboard.py
 create mode 100644 superset/mcp_service/dataset/dataset_utils.py
 create mode 100644 superset/mcp_service/dataset/tool/update_dataset_metric.py
 create mode 100644 superset/migrations/versions/2026-06-30_00-00_d24e6b0a9c7f_strip_metricsqlexpressions_from_ag_grid_params.py
 copy {superset-core/src/superset_core/extensions => superset/openapi}/__init__.py (88%)
 create mode 100644 superset/openapi/manager.py
 create mode 100644 tests/integration_tests/versioning/transaction_correctness_tests.py
 create mode 100644 tests/unit_tests/async_events/test_cache_backend.py
 create mode 100644 tests/unit_tests/common/test_query_actions.py
 create mode 100644 tests/unit_tests/mcp_service/chart/test_histogram_boxplot_charts.py
 create mode 100644 tests/unit_tests/mcp_service/chart/test_waterfall_chart.py
 create mode 100644 tests/unit_tests/mcp_service/chart/tool/test_delete_chart.py
 create mode 100644 tests/unit_tests/mcp_service/chart/tool/test_list_charts_deleted_state.py
 create mode 100644 tests/unit_tests/mcp_service/chart/tool/test_restore_chart.py
 copy tests/unit_tests/mcp_service/{ => dashboard/tool}/conftest.py (55%)
 create mode 100644 tests/unit_tests/mcp_service/dashboard/tool/test_delete_dashboard.py
 create mode 100644 tests/unit_tests/mcp_service/dashboard/tool/test_list_dashboards_deleted_state.py
 create mode 100644 tests/unit_tests/mcp_service/dashboard/tool/test_manage_dashboard_certification.py
 create mode 100644 tests/unit_tests/mcp_service/dashboard/tool/test_manage_dashboard_owners.py
 create mode 100644 tests/unit_tests/mcp_service/dashboard/tool/test_manage_dashboard_roles.py
 create mode 100644 tests/unit_tests/mcp_service/dashboard/tool/test_restore_dashboard.py
 create mode 100644 tests/unit_tests/mcp_service/dataset/test_dataset_schemas.py
 create mode 100644 tests/unit_tests/mcp_service/dataset/tool/test_update_dataset_metric.py
 copy {superset-core/src/superset_core/common => tests/unit_tests/mcp_service/system/resources}/__init__.py (100%)
 create mode 100644 tests/unit_tests/mcp_service/system/resources/test_schema_discovery.py
 create mode 100644 tests/unit_tests/mcp_service/test_mcp_e2e_smoke.py
 create mode 100644 tests/unit_tests/mcp_service/test_rbac_tool_enforcement.py
 create mode 100644 tests/unit_tests/mcp_service/utils/test_cache_utils.py
 create mode 100644 tests/unit_tests/mcp_service/utils/test_oauth2_utils.py
 create mode 100644 tests/unit_tests/mcp_service/utils/test_retry_utils.py
 create mode 100644 tests/unit_tests/migrations/test_strip_metricsqlexpressions_from_ag_grid_params.py
 copy {superset-core/src/superset_core/common => tests/unit_tests/openapi}/__init__.py (100%)
 create mode 100644 tests/unit_tests/openapi/test_manager.py
 create mode 100644 tests/unit_tests/scripts/change_detector_test.py
 create mode 100644 tests/unit_tests/sqllab/test_sql_json_executer.py
 create mode 100644 tests/unit_tests/versioning/test_listener.py