You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@superset.apache.org by ru...@apache.org on 2026/09/21 17:07:33 UTC

(superset) branch dependabot/pip/fastmcp-4.0.3 updated (0488c82138e -> c0533baf6c3)

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

rusackas pushed a change to branch dependabot/pip/fastmcp-4.0.3
in repository https://gitbox.apache.org/repos/asf/superset.git


    from 0488c82138e don't bump lower limits
     add eeafd65b746 chore(deps-dev): bump the swc group across 1 directory with 3 updates (#44223)
     add 42c50468644 feat(deletion-retention): scheduled pruning policy for the purge audit log (#43490)
     add 43a00319956 fix(versioning): edit-gate the version-history and activity endpoints (#44021)
     add ad90bf543f1 test(tags): make humanized-timestamp assertions deterministic (#44260)
     add 6aaa3ed9861 fix(sqla): move process_template inside try block in get_fetch_values_predicate (#44246)
     add 4db78bab99f fix(reports): catch JSONDecodeError in report extra validation (dashboard position_json/json_metadata) (#44204)
     add 0f70666cc13 fix(sql-validate): downgrade log level for undefined Jinja function errors (SC-120409) (#44202)
     add d3906aabf36 fix(mcp): refuse certification changes on externally managed dashboards (#44094)
     add f8abb280d95 fix(versioning): resolve change-record dashboard membership via attachment windows (#44089)
     add 4ece071eb77 fix(versioning): carry affected chart names in the rollup impact payload (#43838)
     add e797f3def68 fix(views): error-response bodies must carry their message (#44090)
     add c83c95faf63 chore(cli): direct tests for the deletion-retention click entry points; non-zero exit on blocked/not-found force-purge (#44252)
     add 7f0ca472e4c fix(versioning): row-lock the live entity during version restore (#44015)
     add 9526ce8082d fix(archive): hide recovery actions from read-only users (#44179)
     add 6b696cb8185 fix(versioning): version-history panel design fidelity (#44181)
     add b4604c320eb refactor(core): let DeleteModal callers supply the confirm button label and style (#44257)
     add 447544ea27e fix(reports): fail closed after capture rejection (#44191)
     add b6de64fce74 fix(migrations): add functional index on ab_user(lower(username)) for case-insensitive login (#43939)
     add ae240a8e6f0 fix(security): use self-repository syntax in frontend workflow (#44118)
     add 7f04959614c chore(deps): bump antd from 6.6.2 to 6.6.3 in /docs (#44295)
     add 3a4aede10da chore(deps-dev): bump oxlint from 1.81.0 to 1.82.0 in /docs (#44296)
     add a42a7df1021 chore(deps-dev): bump @types/node from 26.4.1 to 26.5.0 in /superset-websocket (#44292)
     add b9f75c9ed55 chore(deps-dev): bump oxfmt from 0.66.0 to 0.67.0 in /superset-websocket (#44291)
     add 2b5dce12467 chore(deps-dev): bump @types/node from 26.4.1 to 26.5.0 in /superset-embedded-sdk (#44289)
     add 109402b8d21 fix: handle formatter errors gracefully in table cell rendering (#36189) (#39658)
     add dbccb3bcc7c fix(table): preserve configured server page size when row count is smaller (#42243) (#42248)
     add f3e1470f1a4 chore(deps-dev): bump oxlint from 1.81.0 to 1.82.0 in /superset-websocket (#44290)
     add a184395eca7 chore(deps-dev): bump oxfmt from 0.66.0 to 0.67.0 in /docs (#44294)
     add ef4281d2fcb feat(mcp): add get_dashboard_data for bounded, filter-aware dashboard data (#44113)
     add 4c27cbd007e fix(migrations): merge purge audit and username index heads (#44288)
     add 68c8c7059e3 refactor(versioning): rename charts_attached_to_dashboard to chart_attachment_windows_for_dashboard (#44185)
     add 6cfb3319744 fix(api): enforce is_managed_externally on chart/dashboard/dataset update (#44025)
     add 4f5cf799a28 fix(db): apply the configured default isolation level (set_db_default_isolation was a no-op) (#44247)
     add b1380cf43d2 fix(versioning): withhold related-record change detail from non-editors (#44319)
     add 8f76ff45cd4 refactor(frontend): consolidate stray antd wrappers into superset-ui-core (#44177)
     add 8da299f58c0 docs(explore): document the Line chart Percent change control (#44129)
     add dd60cc27ff4 fix(dashboard): include native filter names in filter_state GET response (#44043)
     add 9976e08333c chore(build): remove `ts-jest` usage for TS7 preparation (#44210)
     add 5dd63ef95b2 chore(deps): bump antd from 6.6.2 to 6.6.3 in /superset-frontend (#44300)
     add 0f021023f3d fix(mcp): advertise typed tool outputs (#43828)
     add 0049f814072 feat(mcp): add typed Gantt chart support (#43737)
     add 23bc3de0ca3 fix(ci): match migration conflicts on filename, not contents_url (#44318)
     add d7516f10388 chore(deps): bump github/codeql-action/analyze from 4.37.9 to 4.38.0 (#44333)
     add 24a79c4bd38 chore(deps): bump github/codeql-action/upload-sarif from 4.37.9 to 4.38.0 (#44332)
     add 1432d7f0c0a chore(deps): bump actions/setup-java from 6.0.0 to 6.0.1 (#44330)
     add 2659660d90a chore(deps): bump apache/infrastructure-actions/allowlist-check from 1.0.1 to 1.0.2 (#44328)
     add 7fbcc0825ca chore(deps): bump zizmorcore/zizmor-action from 0.6.3 to 0.6.4 (#44327)
     add 2c135a5cdce test(semantic-layers): fix mypy call_args error on values endpoint test (#44187)
     add 2db9d6d51c8 fix(theme): do not suppress a dashboard theme when the forwarded config equals the workspace default (#44173)
     add 8233b5e5ae0 chore(deps-dev): update teradatasql requirement from >=20.0.0.67 to >=20.0.0.68 (#44331)
     add 55ee97bb36b chore(deps): bump holidays from 0.103 to 0.104 (#44325)
     add 96d57a97349 chore(deps-dev): bump oxlint from 1.81.0 to 1.82.0 in /superset-frontend (#44301)
     add 79ab1467b52 chore(deps-dev): bump the typescript-eslint group across 1 directory with 2 updates (#44293)
     add 9df22ffad35 chore(deps): bump yeoman-generator from 8.3.1 to 8.4.0 in /superset-frontend (#44299)
     add 134263e8d46 chore(deps-dev): bump ydb-sqlalchemy from 0.1.22 to 0.1.24 (#44329)
     add 0db1b47de79 test(dashboard): migrate native filter URL key E2E to Playwright (#41435)
     add a01f5076195 chore(deps-dev): bump @types/node from 26.4.1 to 26.5.0 in /superset-frontend (#44298)
     add bd76e097a2d ci: pin codeql-action init to the same version as analyze (#44354)
     add 637e19f0ca3 fix(embedded): report content height independent of iframe height (#44313)
     add dca54da2421 feat(themes): add per-theme editors (Subject model) (#42404)
     add 22cef7ef007 fix(chart-data): keep non-numeric columns out of contribution post-processing (#43203)
     add 91c1135c054 fix(histogram): compare groupby membership using column labels (#43219)
     add 40f5ab8d0c6 fix(mcp): downgrade synthetic tool ToolError log level to WARNING (SC-120340) (#44171)
     add 2884e4815bd fix(datasets): catch MultipleResultsFound in get_or_create's schema-scoped lookup (#43725)
     add c417e3b6ccf chore(deps-dev): bump yeoman-test from 11.8.1 to 11.8.2 in /superset-frontend (#44302)
     add 7b6dd7597c4 chore(deps-dev): bump oxfmt from 0.66.0 to 0.67.0 in /superset-frontend (#44297)
     add f47f1ced19b feat(semantic layers): derive Explore picker modes from declared semantic view features (#42540)
     add 175c2f1f1cb fix(api): align sort and prophet option schemas with their operations (#43206)
     add baccb68d3b4 fix(chart): include Decimal metrics in contribution totals (#43222)
     add 461fdaa5b95 feat(native-filters): drive cascade dependencies from chart metadata (#43223)
     add 181e9ad3e2b fix(themes): render brand spinner SVG via <img> data URI (#43504)
     add f5c710d1625 refactor(explore): move optional icons outside label element (#43584)
     add 187e7d4d804 fix(security): handle self-referential catalog qualifiers (#43974)
     add 7ee33df6473 fix(rls): match the RLS predicate lookup on case-normalized table identifiers (#43993)
     add ea8aac12739 fix(mcp): bound chart_ids length in the generate-dashboard request (#44071)
     add 3d17fba3624 fix(db): honor connect_args returned by adjust_engine_params (#44078)
     add 82df1ffa61a fix(jinja): escape current_username/current_user_email like sibling macros (#44081)
     add fe7391e85ee fix(sqla): run column metadata probe statement exactly once (#44242)
     add 4c77b0b924a fix(migrations): merge theme editors and purge audit heads (#44364)
     add 2ef8e0c1dee fix(dashboard): require published for the read-gate's datasource fallback (#44093)
     add a68503b84af chore(deps): bump zod from 4.5.4 to 4.6.1 in /superset-frontend (#44383)
     add 5576b73646a chore(deps-dev): bump @types/node from 26.5.0 to 26.5.1 in /superset-websocket (#44374)
     add bb5d138c50e chore(deps): bump apache/infrastructure-actions/allowlist-check from 1.0.2 to 1.0.3 (#44376)
     add 68433b08b5b chore(deps): bump astral-sh/setup-uv from 10.0.1 to 10.1.0 (#44377)
     add dedfe23a805 chore(deps-dev): bump @types/node from 26.5.0 to 26.5.1 in /superset-embedded-sdk (#44375)
     add 91c917e199c feat(ci): flag chart metadata changes via labeler (#33180)
     add 35768da1fdb fix(dashboard): keep Save enabled when the properties modal name is set (#44356)
     add 66e64cc7d89 fix(time-format): stop reading short digit-only strings as epoch offsets (#44352)
     add c28a8942b7e chore(deps): bump the rjsf group in /superset-frontend with 3 updates (#44378)
     add ca0f5cfa8e6 chore(deps-dev): bump @types/node from 26.5.0 to 26.5.1 in /superset-frontend (#44379)
     add 8f4a70cfdf4 chore(deps-dev): bump minimizer-webpack-plugin from 5.10.0 to 5.10.1 in /superset-frontend (#44380)
     add 2ad0053642e chore(deps-dev): bump react-refresh from 0.18.0 to 0.19.0 in /superset-frontend (#44381)
     add e8e10fb85c0 fix(charts): don't auto-migrate table charts to ag-grid-table on import unless enabled (#44151)
     add c426186a2e6 fix(versioning): scope stream_results to the activity SELECTs instead of mutating the session connection (#44261)
     add fc71d0f9e81 fix(dataset): lock the If-Match validator's transaction-id read (#44091)
     add 77dbaafc2af chore(versioning): write-path latency metric for the capture finalizer (#44009)
     add 4c3a890d8b6 chore(deps): bump flask-appbuilder from 5.2.2 to 5.2.3 (#44400)
     add 00c2f22fae2 fix(dashboard): make system default/dark themes assignable to a dashboard (#44361)
     add 678bfae8859 fix(charts): align week-grain time comparison offsets to whole weeks (#43936)
     add 6b80fa7ec29 fix(mypy): narrow chart.uuid before RestoreChartVersionCommand in restore tests (#44394)
     add 3abc3588fab fix(sqla): guard unprotected Jinja template rendering in ExploreMixin (#44172)
     add da1cac85f4d fix(versioning): refuse a version restore whose child history was pruned (sc-120012) (#44251)
     add 30e5745cd74 fix(mcp): return a structured Unsupported marker for semantic-view get_chart_sql (#44267)
     add 795cdf2bf15 fix(mcp): include semantic views in get_dashboard_datasets (#44269)
     add 22ae4405d4e fix(explore): anchor the add column/metric/filter popovers to their trigger (#44274)
     add f1dc56607e2 fix(i18n): make module-level error constants lazy gettext (#44180)
     add 944e92dd578 feat(soft-delete): translate unique collisions with soft-deleted rows into restore guidance (#44184)
     add 20d7a3e9aea fix(table): preserve semantic temporal column references (#44369)
     add 560828d620a fix(dashboard): resolve display-control and drill datasources by type, not id alone (#42539)
     add fc80a14850e feat(mcp): apply native dashboard filters from an MCP client (#44096)
     add 394bca55c79 fix(mcp): preserve dashboard filter values for restricted users (#44107)
     add bd786e2bea2 feat(versioning): render the starting version as the oldest history row for charts and dashboards (#44258)
     add a7dab4a5519 fix(presto): require PyHive 0.7 for SQLAlchemy 2 (#44285)
     add b5ad3964165 fix(query): resolve sub-day "Last <unit>" time_range shorthand (#44254)
     add b8f5b209285 test(frontend): await userEvent calls missed by the user-event v14 migration (#44335)
     add 9bb5a95976a chore(deps-dev): bump the babel group in /superset-embedded-sdk with 3 updates (#44417)
     add 4f1a34446df chore(deps): bump zod from 4.6.1 to 4.6.2 in /superset-frontend (#44419)
     add 282bcb0edd8 chore(deps-dev): bump baseline-browser-mapping from 2.11.21 to 2.11.22 in /superset-frontend (#44421)
     add 79af673bca5 chore(deps-dev): bump webpack-bundle-analyzer from 5.3.2 to 5.3.3 in /superset-frontend (#44422)
     add 16090803bbc chore(deps): bump @googleapis/sheets from 14.0.0 to 17.0.0 in /superset-frontend (#44420)
     add 0599cc2516b fix(mcp): accept a time grain in get_table on semantic views (#44270)
     add b7f1bdd571c fix(mcp): keep the default list_metrics page under the response-token cap (#44266)
     add 4bb51d76694 test(mcp): pin distinct cache keys for semantic-view get_table across time ranges (#44263)
     add e4bbd3973a2 fix(charts): type-aware datasource access parity for the chart list (#43848)
     add 8947d3b3763 fix(semantic-layers): mask nested and union secrets in layer configuration (#43827)
     add 627f32ca625 fix(versioning): mount the dashboard version-history panel inside the content area, below the header (#44255)
     add ae5d8d89a38 fix(datasets): return 400, not 500, for a body-less purge POST; point the database-delete refusal at the purge flow (#44264)
     add 9d4db452551 fix(charts): allow saving charts on semantic views (create/update rejected non-table datasource types) (#44416)
     add 43f85576d99 fix(semantic-layer): mapper honors the SemanticView ABC contract (#43886)
     add 062bf948e59 fix(semantic-layer): preserve independent source permissions (#43887)
     add 2e1cf8a72c4 fix(versioning): map the restore registry guard's LookupError to 422 instead of 500 (#44253)
     add 5ecb19cf92a fix(mcp): pre-validate metric/dimension compatibility in semantic-view get_table (#44265)
     add 128c0c159ab fix(mcp): rebuild full parent chains in dashboard layouts (#44405)
     add 43fee876722 test(versioning): mock the restore locking re-read in the #44253 LookupError tests (fixes red master) (#44445)
     add f170d2670e5 chore(deps): bump baseline-browser-mapping from 2.11.21 to 2.11.22 in /docs (#44418)
     add 253eef33d5d fix(databricks): prefer python-connector spec over legacy Hive spec for unrecognized drivers (#44449)
     add db556ec66eb chore(deps): bump pyjwt from 2.13.0 to 2.14.0 (#44442)
     add 4511c138193 chore(deps-dev): bump psycopg2-binary from 2.9.12 to 2.9.13 (#44444)
     add 6300622dd4a fix(mcp): catch ValueError for reversed date range in query_dataset (#44462)
     add c9fd9bf94f4 fix(bigquery): avoid ESCAPE clause in column-value typeahead search (SC-121408) (#44429)
     add 27935c2c648 chore(deps-dev): bump @testing-library/dom from 10.4.1 to 10.4.2 in /superset-frontend (#44488)
     add 3f924aa1aab chore(deps): bump antd from 6.6.3 to 6.6.4 in /superset-frontend (#44487)
     add 76496b2df61 chore(deps): bump zod from 4.6.2 to 4.6.5 in /superset-frontend (#44485)
     add 41aa1221be0 chore(deps-dev): bump @formatjs/intl-durationformat from 0.10.18 to 0.11.1 in /superset-frontend (#44484)
     add 9bb07f2292a chore(deps-dev): bump baseline-browser-mapping from 2.11.22 to 2.11.23 in /superset-frontend (#44483)
     add 07b28abe82a chore(deps-dev): bump webpack from 5.110.3 to 5.111.0 in /superset-frontend (#44482)
     add 38fac53e55c chore(deps): bump antd from 6.6.3 to 6.6.4 in /docs (#44481)
     add d0739416d50 chore(deps-dev): bump webpack from 5.110.3 to 5.111.0 in /docs (#44480)
     add a82a001fe0a chore(deps): bump js-yaml from 5.4.1 to 5.4.2 in /docs (#44479)
     add caa82d5b102 chore(deps): bump codecov/codecov-action from 7.0.0 to 7.1.0 (#44477)
     add 085e535b8e7 chore(deps-dev): bump webpack from 5.110.3 to 5.111.0 in /superset-embedded-sdk (#44476)
     add 1f1e09c971e chore(deps): bump hot-shots from 17.1.0 to 17.1.1 in /superset-websocket (#44475)
     add b0f7c581db2 chore(deps): bump yeoman-generator from 8.4.0 to 9.1.0 in /superset-frontend (#44489)
     add 7486b7187bf chore(deps): bump morgan from 1.12.0 to 1.12.1 in /superset-websocket/utils/client-ws-app (#44474)
     add fc016454fb0 chore(deps): bump baseline-browser-mapping from 2.11.22 to 2.11.23 in /docs (#44478)
     add c11dc027969 fix(sql): classify ATTACH/DETACH and MySQL REPLACE/RENAME/SET PASSWORD as mutating (#44072)
     add 00b1a353018 fix(shillelagh): disable ATTACH DATABASE on APSW connections (#43991)
     add 8ec8beecffd fix(reports): enable alert retries with execution safeguards (#44336)
     add 2ea9ef6cef7 feat(mcp): search dataset descriptions and add an optional per-role dataset scope (#44146)
     add 8b9b055ef0f fix(mcp): never block a committed update_chart write as ToolError (#44386)
     add 371ad7cac5a refactor(soft-delete): hoist triplicated restore/purge route bodies onto SoftDeleteApiMixin (#44259)
     add 5a7d269580f fix(charts): guard set_related_perm against unknown datasource_type (#43885)
     add fbce8904be6 Merge remote-tracking branch 'origin/master' into dependabot/pip/fastmcp-4.0.3
     add c0533baf6c3 fix(mcp): follow fastmcp 4.x import paths and mcp 2.x task schema

No new revisions were added by this update.

Summary of changes:
 .github/actions/setup-backend/action.yml           |    6 +-
 .github/actions/setup-docker/action.yml            |    3 +
 .github/dependabot.yml                             |    3 +-
 .github/labeler.yml                                |   12 +
 .github/workflows/asf-allowlist-check.yml          |    2 +-
 .github/workflows/bump-python-package.yml          |    2 +-
 .github/workflows/check-db-migration-confict.yml   |    6 +-
 .github/workflows/codeql-analysis.yml              |    4 +-
 .github/workflows/docker.yml                       |    2 +-
 .github/workflows/generate-FOSSA-report.yml        |    2 +-
 .github/workflows/github-action-validator.yml      |    2 +-
 .github/workflows/license-check.yml                |    2 +-
 .github/workflows/superset-docs-deploy.yml         |    2 +-
 .github/workflows/superset-extensions-cli.yml      |    2 +-
 .github/workflows/superset-frontend.yml            |    2 +-
 .../workflows/superset-python-integrationtest.yml  |    6 +-
 .github/workflows/superset-python-presto-hive.yml  |    4 +-
 .github/workflows/superset-python-unittest.yml     |    5 +-
 AGENTS.md                                          |    7 +
 UPDATING.md                                        |  236 +-
 docs/admin_docs/configuration/alerts-reports.mdx   |   42 +-
 docs/admin_docs/configuration/mcp-server.mdx       |  216 +-
 .../extensions/contribution-types.md               |   43 +
 docs/docs/using-superset/exploring-data.mdx        |   11 +
 docs/docs/using-superset/recently-archived.mdx     |   10 +-
 .../docs/using-superset/using-ai-with-superset.mdx |   44 +
 docs/docs/using-superset/version-history.mdx       |    6 +
 docs/package.json                                  |   12 +-
 docs/src/data/databases.json                       |    1 +
 docs/static/resources/openapi.json                 |  167 +-
 docs/yarn.lock                                     |  589 ++--
 pyproject.toml                                     |   25 +-
 requirements/base.txt                              |    6 +-
 requirements/development.txt                       |   10 +-
 .../src/superset_core/semantic_layers/view.py      |    6 +-
 superset-embedded-sdk/package-lock.json            |  315 +--
 superset-embedded-sdk/package.json                 |   10 +-
 superset-frontend/jest.config.js                   |    1 -
 superset-frontend/package-lock.json                | 1134 ++++----
 superset-frontend/package.json                     |   37 +-
 .../packages/generator-superset/package.json       |    4 +-
 .../packages/superset-core/package.json            |    2 +-
 .../superset-ui-chart-controls/src/types.ts        |    5 +
 .../components/RadioButtonControl.test.tsx         |    6 +-
 .../packages/superset-ui-core/package.json         |    2 +-
 .../src/chart/models/ChartMetadata.ts              |    9 +
 .../ConfirmStatusChange.test.tsx                   |   18 +
 .../src/components/ConfirmStatusChange/index.tsx   |    4 +
 .../src/components/ConfirmStatusChange/types.ts    |    5 +
 .../components/DeleteModal/DeleteModal.test.tsx    |   65 +
 .../src/components/DeleteModal/index.tsx           |   10 +-
 .../src/components/DeleteModal/types.ts            |   21 +-
 .../src/components/Descriptions/index.tsx          |    0
 .../src/components/Splitter/index.tsx              |    0
 .../src/components/TimePicker/index.tsx            |    0
 .../superset-ui-core/src/components/index.ts       |    3 +
 .../superset-ui-core/src/query/types/Datasource.ts |    7 +
 .../src/time-format/utils/stringifyTimeInput.ts    |   21 +-
 .../test/chart/models/ChartMetadata.test.ts        |   20 +
 .../time-format/utils/stringifyTimeInput.test.ts   |   28 +
 .../playwright/helpers/api/dashboard.ts            |   23 +
 .../playwright/helpers/embeddedAppServer.ts        |  133 +
 .../playwright/pages/DashboardPage.ts              |   39 +
 .../dashboard-native-filter-url-key.spec.ts        |  140 +
 .../tests/dashboard/dashboard-test-helpers.ts      |   18 +-
 .../dashboard/version-history-placement.spec.ts    |  198 ++
 .../tests/embedded/embedded-dashboard.spec.ts      |  132 +-
 .../tests/embedded/embedded-iframe-sizing.spec.ts  |  433 +++
 .../tests/embedded/pivot-collapse-state.spec.ts    |   96 +-
 .../components/TimeComparisonVisibility.tsx        |    3 +-
 .../plugins/plugin-chart-echarts/package.json      |    2 +-
 .../src/Histogram/transformProps.ts                |    2 +-
 .../test/Histogram/transformProps.test.ts          |  112 +
 .../plugins/plugin-chart-pivot-table/package.json  |    2 +-
 .../src/react-pivottable/TableRenderers.tsx        |   15 +-
 .../test/react-pivottable/tableRenders.test.tsx    |   21 +
 .../plugin-chart-table/src/DataTable/DataTable.tsx |   30 +-
 .../plugins/plugin-chart-table/src/TableChart.tsx  |   27 +-
 .../plugins/plugin-chart-table/src/buildQuery.ts   |    6 +
 .../plugin-chart-table/src/utils/formatValue.ts    |   14 +-
 .../plugin-chart-table/test/TableChart.test.tsx    |   44 +
 .../plugin-chart-table/test/buildQuery.test.ts     |  109 +-
 .../test/utils/formatValue.test.ts                 |   44 +
 .../test/ColorSchemeControl.test.tsx               |    4 +-
 .../SqlLab/components/AppLayout/AppLayout.test.tsx |    2 +-
 .../src/SqlLab/components/AppLayout/index.tsx      |    3 +-
 .../QueryLimitSelect/QueryLimitSelect.test.tsx     |    8 +-
 .../SaveDatasetActionButton.test.tsx               |    2 +-
 .../ShareSqlLabQuery/ShareSqlLabQuery.test.tsx     |    6 +-
 .../SqlLab/components/SouthPane/SouthPane.test.tsx |    2 +-
 .../src/SqlLab/components/SqlEditor/index.tsx      |    2 +-
 .../SqlEditorLeftBar/SqlEditorLeftBar.test.tsx     |    2 +-
 .../SqlEditorTabHeader/SqlEditorTabHeader.test.tsx |    2 +-
 .../DynamicGroupBy/DynamicGroupByPlugin.test.tsx   |    2 +-
 .../ChartContextMenu/ChartContextMenu.test.tsx     |  100 +-
 .../Chart/DrillBy/useResultsTableView.test.ts      |    2 +-
 .../Chart/DrillDetail/DrillDetailPane.test.tsx     |   31 +
 .../useDrillDetailMenuItems.test.tsx               |   12 +-
 .../CopyToClipboard/CopyToClipboard.test.tsx       |   10 +-
 .../DatabaseSelector/DatabaseSelector.test.tsx     |    4 +-
 .../tests/DatasourceEditorCurrency.test.tsx        |    4 +-
 .../src/components/MessageToasts/Toast.test.tsx    |   34 +-
 .../src/components/MessageToasts/Toast.tsx         |   16 +-
 .../src/components/MessageToasts/actions.ts        |    2 +
 .../src/components/MessageToasts/types.ts          |    3 +
 .../RowCountLabel/RowCountLabel.test.tsx           |    4 +-
 .../components/AddSliceCard/AddSliceCard.test.tsx  |    2 +-
 .../DashboardBuilder/DashboardBuilder.test.tsx     |  240 +-
 .../DashboardBuilder/DashboardBuilder.tsx          |  187 +-
 .../src/dashboard/components/DashboardGrid.tsx     |    3 +-
 .../PropertiesModal.lateFieldMount.test.tsx        |   94 +
 .../PropertiesModal/PropertiesModal.test.tsx       |   26 +
 .../dashboard/components/PropertiesModal/index.tsx |   16 +-
 .../URLShortLinkButton/URLShortLinkButton.test.tsx |    8 +-
 .../ChartHolder/ChartHolder.test.tsx               |    4 +-
 .../gridComponents/Markdown/Markdown.test.tsx      |   20 +-
 .../FilterControls/FilterControlShared.test.tsx    |    2 +-
 .../FilterControls/FilterDivider.test.tsx          |    2 +-
 .../FilterControls/GroupByFilterCard.test.tsx      |  330 ++-
 .../FilterBar/FilterControls/GroupByFilterCard.tsx |  192 +-
 .../nativeFilters/FilterBar/Vertical.tsx           |   76 +-
 .../components/nativeFilters/FilterBar/index.tsx   |   16 +-
 .../nativeFilters/FilterBar/utils.test.ts          |   38 +
 .../components/nativeFilters/FilterBar/utils.ts    |   15 +
 .../FiltersConfigForm/ColumnSelect.test.tsx        |    4 +-
 .../FiltersConfigForm/ColumnSelect.tsx             |   27 +-
 .../FiltersConfigForm/FiltersConfigForm.tsx        |   38 +-
 .../FiltersConfigForm/utils.test.ts                |   78 +
 .../FiltersConfigModal/FiltersConfigForm/utils.ts  |   52 +-
 .../FiltersConfigModal/FiltersConfigModal.tsx      |    4 +-
 .../FiltersConfigModal/NativeFiltersModal.test.tsx |    9 +
 .../FiltersConfigModal/hooks/index.ts              |    5 +-
 .../hooks/useFilterOperations.test.ts              |   91 +
 .../hooks/useFilterOperations.ts                   |   36 +-
 .../useDisplayControlDatasource.test.ts            |  192 ++
 .../nativeFilters/useDisplayControlDatasource.ts   |  181 ++
 .../src/dashboard/containers/DashboardPage.tsx     |    2 +
 .../src/dashboard/useDashboardFilterSync.test.tsx  |  272 ++
 .../src/dashboard/useDashboardFilterSync.ts        |  118 +
 .../util/embeddedLayout.ts}                        |   21 +-
 superset-frontend/src/dataMask/reducer.test.ts     |   98 +
 superset-frontend/src/dataMask/reducer.ts          |   15 +
 superset-frontend/src/embedded/api.test.ts         |   84 +
 superset-frontend/src/embedded/api.tsx             |   65 +-
 .../src/explore/actions/exploreActions.test.ts     |  219 +-
 .../src/explore/actions/exploreActions.ts          |   44 +-
 .../src/explore/components/ControlHeader.test.tsx  |   18 +
 .../src/explore/components/ControlHeader.tsx       |   37 +-
 .../CopyToClipboardButton.test.tsx                 |    4 +-
 .../DataTablesPane/test/DataTableControls.test.tsx |    6 +-
 .../DataTablesPane/test/DataTablesPane.test.tsx    |   18 +-
 .../DataTablesPane/test/useResultsPane.test.tsx    |    4 +-
 .../DatasourcePanelDragOption.test.tsx             |   65 +-
 .../DatasourcePanel/DatasourcePanelItem.test.tsx   |   16 +-
 .../components/DatasourcePanel/compatibility.ts    |   18 +-
 .../ExploreViewContainer.test.tsx                  |    8 +-
 .../AnnotationLayer.subdirectory.test.tsx          |    2 +-
 .../ColorBreakpointPopoverTrigger.tsx              |    7 +-
 .../ColorSchemeControl/ColorSchemeControl.test.tsx |   24 +-
 .../ContourControl/ContourPopoverTrigger.tsx       |    7 +-
 .../ControlPopover/PopoverTriggerAnchors.test.tsx  |   53 +
 .../ColumnSelectPopover.test.tsx                   |  690 ++++-
 .../DndColumnSelectControl/ColumnSelectPopover.tsx |  323 ++-
 .../ColumnSelectPopoverTrigger.tsx                 |   28 +-
 .../DndColumnMetricSelect.test.tsx                 |  177 +-
 .../DndColumnMetricSelect.tsx                      |   16 +-
 .../DndColumnSelect.test.tsx                       |  181 ++
 .../DndColumnSelectControl/DndColumnSelect.tsx     |   20 +-
 .../DndFilterSelect.test.tsx                       |   80 +
 .../utils/pickerCapabilities.test.ts               |  101 +
 .../utils/pickerCapabilities.ts                    |   82 +
 ...AdhocFilterEditPopoverSimpleTabContent.test.tsx |   52 +
 .../AdhocFilterPopoverTrigger/index.tsx            |   10 +-
 .../AdhocMetricEditPopover.test.tsx                |   58 +
 .../MetricControl/AdhocMetricEditPopover/index.tsx |    7 +-
 .../MetricControl/AdhocMetricPopoverTrigger.tsx    |   10 +-
 .../MetricControl/MetricDefinitionOption.test.tsx  |    2 +-
 .../components/controls/TimeRangeControl/index.tsx |    2 +-
 .../src/explore/reducers/exploreReducer.test.ts    |   47 +-
 .../src/explore/reducers/exploreReducer.ts         |   14 +-
 .../src/explore/selectors/compatibility.test.ts    |   67 +
 .../src/explore/selectors/compatibility.ts         |   55 +
 superset-frontend/src/explore/types.ts             |   41 +-
 .../src/features/alerts/AlertReportModal.test.tsx  |   57 +-
 .../src/features/alerts/AlertReportModal.tsx       |    6 +-
 .../alerts/components/AlertStatusIcon.test.tsx     |    6 +-
 .../datasets/AddDataset/Footer/Footer.test.tsx     |   10 +-
 .../src/features/home/ChartTable.test.tsx          |    6 +-
 .../src/features/home/LanguagePicker.test.tsx      |    2 +-
 superset-frontend/src/features/home/Menu.test.tsx  |   18 +-
 .../src/features/home/RightMenu.test.tsx           |   12 +-
 .../src/features/themes/ThemeModal.test.tsx        |  177 ++
 .../src/features/themes/ThemeModal.tsx             |  179 +-
 superset-frontend/src/features/themes/types.ts     |    3 +
 .../src/features/versionHistory/ActionRow.tsx      |   18 +-
 .../features/versionHistory/PreviewBanner.test.tsx |   17 +
 .../src/features/versionHistory/PreviewBanner.tsx  |   28 +-
 .../versionHistory/RelatedUpdateRow.test.tsx       |  150 ++
 .../features/versionHistory/RelatedUpdateRow.tsx   |  103 +-
 .../features/versionHistory/SaveGroupItem.test.tsx |  220 ++
 .../src/features/versionHistory/SaveGroupItem.tsx  |   82 +-
 .../versionHistory/VersionHistoryPanel.test.tsx    |   29 +
 .../versionHistory/VersionHistoryPanel.tsx         |   15 +-
 .../src/features/versionHistory/display.test.ts    |   27 +
 .../src/features/versionHistory/display.ts         |   18 +
 .../src/features/versionHistory/grouping.test.ts   |   36 +
 .../src/features/versionHistory/grouping.ts        |    7 +
 .../src/features/versionHistory/types.ts           |   25 +-
 .../src/filters/components/Range/index.ts          |    1 +
 .../src/filters/components/Select/index.ts         |    1 +
 .../src/filters/components/Time/index.ts           |    1 +
 .../src/filters/components/TimeColumn/index.ts     |    1 +
 .../src/filters/components/TimeGrain/index.ts      |    1 +
 superset-frontend/src/filters/utils.ts             |    9 +-
 .../src/hooks/apiResources/datasets.test.ts        |   84 +
 .../src/hooks/apiResources/datasets.ts             |   66 +-
 .../src/pages/ArchivedList/ArchivedList.test.tsx   |  146 +-
 superset-frontend/src/pages/ArchivedList/index.tsx |   22 +-
 .../DatabaseList.semanticLayerDelete.test.tsx      |  139 +-
 superset-frontend/src/pages/DatabaseList/index.tsx |  166 +-
 .../DatasetList.connectionPermissions.test.tsx     |   70 +
 .../pages/DatasetList/DatasetList.testHelpers.tsx  |    1 +
 superset-frontend/src/pages/DatasetList/index.tsx  |    6 +-
 superset-frontend/src/pages/Home/Home.test.tsx     |    2 +-
 .../src/pages/ThemeList/ThemeList.test.tsx         |  212 ++
 superset-frontend/src/pages/ThemeList/index.tsx    |   48 +-
 superset-frontend/src/pages/UserInfo/index.tsx     |    3 +-
 superset-frontend/src/theme/ThemeController.ts     |   21 +-
 .../src/theme/tests/ThemeController.test.ts        |  105 +-
 superset-frontend/src/utils/common.ts              |    3 +
 .../src/utils/semanticViewStructure.test.ts        |   85 +
 .../src/utils/semanticViewStructure.ts             |  129 +
 superset-frontend/src/views/App.tsx                |    3 +-
 superset-websocket/package-lock.json               |  352 +--
 superset-websocket/package.json                    |    8 +-
 .../utils/client-ws-app/package-lock.json          |   14 +-
 .../utils/client-ws-app/package.json               |    2 +-
 superset/charts/api.py                             |   54 +-
 superset/charts/filters.py                         |   61 +-
 superset/charts/schemas.py                         |   39 +-
 superset/cli/deletion_retention.py                 |    6 +-
 superset/commands/chart/create.py                  |   18 +-
 superset/commands/chart/importers/v1/utils.py      |   12 +-
 superset/commands/chart/update.py                  |   60 +-
 superset/commands/chart/utils.py                   |   12 +
 superset/commands/dashboard/create.py              |   16 +
 superset/commands/dashboard/exceptions.py          |   26 +-
 superset/commands/dashboard/filter_state/get.py    |   49 +-
 superset/commands/dashboard/update.py              |   81 +-
 superset/commands/database/exceptions.py           |   10 +-
 superset/commands/database/validate_sql.py         |   24 +-
 superset/commands/dataset/refresh.py               |    6 +
 superset/commands/dataset/update.py                |   12 +-
 superset/commands/deletion_retention/audit.py      |   55 +-
 .../commands/deletion_retention/prune_audit.py     |  923 +++++++
 superset/commands/report/base.py                   |   31 +-
 superset/commands/report/execute.py                |  448 +++-
 superset/commands/report/execution_claim.py        |  199 ++
 superset/commands/report/update.py                 |    6 -
 superset/commands/semantic_layer/create.py         |    3 +-
 superset/commands/semantic_layer/update.py         |   63 +-
 superset/commands/semantic_layer/utils.py          |   56 +
 superset/commands/soft_delete_collisions.py        |  165 ++
 .../commands/{annotation_layer => theme}/create.py |   40 +-
 superset/commands/theme/delete.py                  |    8 +
 superset/commands/theme/exceptions.py              |   27 +-
 superset/commands/theme/import_themes.py           |   34 +-
 superset/commands/theme/update.py                  |   25 +
 superset/commands/utils.py                         |   20 +
 superset/commands/version_restore.py               |   77 +-
 superset/common/query_context_processor.py         |   22 +-
 superset/config.py                                 |   47 +
 superset/connectors/sqla/models.py                 |   79 +-
 superset/connectors/sqla/utils.py                  |    1 -
 superset/constants.py                              |    4 +
 superset/core/mcp/core_mcp_injection.py            |  111 +-
 superset/daos/version.py                           |    4 +
 superset/dashboards/api.py                         |   59 +-
 superset/dashboards/filter_state/api.py            |   28 +-
 superset/dashboards/filters.py                     |   46 +-
 superset/dashboards/schemas.py                     |    8 +-
 superset/datasets/api.py                           |  184 +-
 superset/datasets/schemas.py                       |    4 +-
 superset/datasource/api.py                         |    4 +-
 superset/db_engine_specs/base.py                   |   30 +
 superset/db_engine_specs/databricks.py             |  400 +--
 superset/db_engine_specs/gsheets.py                |    1 +
 superset/db_engine_specs/mssql.py                  |  122 +
 superset/db_engine_specs/presto.py                 |    4 +
 superset/db_engine_specs/shillelagh.py             |   39 +
 superset/exceptions.py                             |   21 +-
 superset/explore/utils.py                          |   15 +
 superset/initialization/__init__.py                |   80 +-
 superset/jinja_context.py                          |   18 +-
 superset/mcp_service/CLAUDE.md                     |   23 +-
 superset/mcp_service/PRODUCTION.md                 |    2 +-
 superset/mcp_service/__main__.py                   |   21 +-
 superset/mcp_service/app.py                        |   21 +-
 superset/mcp_service/auth.py                       |   15 +-
 superset/mcp_service/chart/chart_helpers.py        |  174 +-
 superset/mcp_service/chart/chart_utils.py          |  306 ++-
 superset/mcp_service/chart/plugins/__init__.py     |    3 +
 superset/mcp_service/chart/plugins/gantt.py        |  237 ++
 superset/mcp_service/chart/preview_utils.py        |  265 ++
 superset/mcp_service/chart/query_result.py         |    8 +-
 .../mcp_service/chart/resources/chart_configs.py   |   24 +
 superset/mcp_service/chart/schemas.py              |  826 +++++-
 superset/mcp_service/chart/tool/generate_chart.py  |   11 +-
 superset/mcp_service/chart/tool/get_chart_data.py  |   15 +-
 superset/mcp_service/chart/tool/get_chart_info.py  |   22 +-
 .../mcp_service/chart/tool/get_chart_preview.py    |   50 +-
 superset/mcp_service/chart/tool/get_chart_sql.py   |   51 +-
 .../chart/tool/get_chart_type_schema.py            |   33 +-
 superset/mcp_service/chart/tool/update_chart.py    |   37 +-
 .../mcp_service/chart/tool/update_chart_preview.py |   51 +-
 .../chart/validation/dataset_validator.py          |   27 +-
 superset/mcp_service/chart/validation/pipeline.py  |   34 +-
 superset/mcp_service/common/schema_discovery.py    |    7 +-
 .../mcp_service/common/time_range_validation.py    |   32 +-
 .../mcp_service/dashboard/layout_validation.py     |   54 +
 superset/mcp_service/dashboard/permalink.py        |   96 +-
 superset/mcp_service/dashboard/schemas.py          |  579 +++-
 superset/mcp_service/dashboard/tool/__init__.py    |    4 +
 .../tool/add_chart_to_existing_dashboard.py        |   33 +-
 .../dashboard/tool/apply_dashboard_filters.py      |  485 ++++
 .../dashboard/tool/duplicate_dashboard.py          |    6 +
 .../dashboard/tool/generate_dashboard.py           |   21 +-
 .../dashboard/tool/get_dashboard_data.py           |  279 ++
 .../dashboard/tool/get_dashboard_datasets.py       |   21 +-
 .../dashboard/tool/get_dashboard_info.py           |   28 +-
 .../tool/manage_dashboard_certification.py         |   25 +
 .../dashboard/tool/manage_native_filters.py        |    4 +-
 .../dashboard/tool/remove_chart_from_dashboard.py  |   13 +-
 .../mcp_service/dashboard/tool/update_dashboard.py |   14 +-
 superset/mcp_service/dataset/schemas.py            |   27 +
 .../mcp_service/dataset/tool/get_dataset_info.py   |   21 +-
 superset/mcp_service/dataset/tool/list_datasets.py |   55 +-
 superset/mcp_service/dataset/tool/query_dataset.py |   11 +
 .../dataset/tool/update_dataset_metric.py          |    5 +
 superset/mcp_service/dataset_scope.py              |  261 ++
 superset/mcp_service/flask_singleton.py            |   11 +
 superset/mcp_service/mcp_config.py                 |   18 +-
 superset/mcp_service/middleware.py                 |  506 +++-
 superset/mcp_service/semantic_layer/schemas.py     |   66 +-
 .../mcp_service/semantic_layer/tool/get_table.py   |  179 +-
 .../semantic_layer/tool/list_metrics.py            |    9 +-
 superset/mcp_service/server.py                     |   49 +-
 superset/mcp_service/theme/tool/create_theme.py    |   39 +-
 superset/mcp_service/utils/response_utils.py       |    9 +-
 superset/mcp_service/utils/token_utils.py          |  292 +-
 superset/migrations/shared/migrate_viz/base.py     |    7 +
 .../migrations/shared/migrate_viz/processors.py    |    6 +
 ...4_00-00_f7e8d9c0b1a2_add_theme_editors_table.py |  142 +
 ...5-50_a6c21e5b4d93_index_purge_audit_pruning.py} |   33 +-
 ..._c7f53d184ea2_coordinate_purge_audit_pruning.py |   60 +
 ...339627c_merge_add_theme_editors_table_with_.py} |   12 +-
 ...00_88a01c781622_index_ab_user_lower_username.py |  145 +
 ...655c0a6_merge_task_dependencies_with_theme_.py} |   12 +-
 ..._merge_purge_audit_and_username_index_heads.py} |   23 +-
 ..._93d1b4a76c02_add_report_execution_ownership.py |   55 +
 ...1_merge_theme_editors_and_purge_audit_heads.py} |   23 +-
 superset/models/core.py                            |    8 +
 superset/models/dashboard.py                       |   30 +-
 superset/models/helpers.py                         |  227 +-
 superset/models/purge_audit_log.py                 |   34 +-
 superset/models/slice.py                           |   24 +-
 .../mcp => superset/realtime}/__init__.py          |    1 +
 superset/realtime/publish.py                       |   68 +
 superset/reports/models.py                         |    2 +
 superset/reports/notifications/base.py             |    1 +
 superset/reports/notifications/email.py            |   16 +-
 superset/reports/notifications/slack_mixin.py      |    6 +-
 superset/reports/notifications/webhook.py          |    9 +-
 superset/reports/schemas.py                        |    7 -
 superset/security/manager.py                       |  170 +-
 superset/semantic_layers/api.py                    |   81 +-
 superset/semantic_layers/mapper.py                 |   31 +-
 superset/semantic_layers/masking.py                |  481 ++++
 superset/semantic_layers/models.py                 |   23 +-
 superset/sql/parse.py                              |   73 +
 superset/sqllab/query_render.py                    |    9 +-
 superset/subjects/models.py                        |   19 +
 superset/superset_typing.py                        |    6 +
 superset/tasks/async_queries.py                    |    3 +-
 superset/tasks/deletion_retention.py               |   73 +-
 superset/tasks/manager.py                          |   19 +-
 superset/tasks/scheduler.py                        |   13 +
 superset/templates/superset/spa.html               |   13 +-
 superset/themes/api.py                             |   87 +-
 superset/themes/schemas.py                         |   14 +
 superset/translations/messages.pot                 |   32 +-
 superset/utils/core.py                             |    4 +-
 superset/utils/date_parser.py                      |   42 +-
 superset/utils/filters.py                          |   98 +-
 .../utils/pandas_postprocessing/contribution.py    |   48 +-
 superset/utils/report_execution.py                 |   38 +
 superset/utils/rls.py                              |  156 +-
 superset/utils/schema.py                           |   26 +-
 superset/utils/screenshot_utils.py                 |   75 +-
 superset/utils/webdriver.py                        |    1 +
 superset/versioning/activity/creation.py           |  173 ++
 superset/versioning/activity/impact.py             |  162 +-
 superset/versioning/activity/orchestrator.py       |   34 +-
 superset/versioning/activity/queries.py            |   24 +-
 superset/versioning/activity/render.py             |   54 +-
 superset/versioning/activity/scope.py              |    4 +-
 superset/versioning/activity/visibility.py         |   84 +-
 superset/versioning/api_helpers.py                 |  131 +-
 superset/versioning/baseline/__init__.py           |    2 +
 superset/versioning/baseline/insertion.py          |   10 +
 superset/versioning/baseline/shadow.py             |    5 +
 superset/versioning/changes/__init__.py            |    4 +
 superset/versioning/changes/listener.py            |  233 +-
 superset/versioning/changes/shadow_queries.py      |  155 +-
 .../__init__.py => versioning/creation_kinds.py}   |   21 +-
 superset/versioning/db_errors.py                   |   75 +
 superset/versioning/membership.py                  |   30 +-
 superset/versioning/metrics.py                     |   37 +-
 superset/versioning/queries.py                     |  194 +-
 superset/versioning/restore.py                     |  233 +-
 superset/versioning/schemas.py                     |   66 +-
 superset/views/base.py                             |   21 +-
 superset/views/base_api.py                         |   83 +-
 superset/views/core.py                             |   40 +-
 superset/views/error_handling.py                   |   12 +-
 superset/views/filters.py                          |   74 +-
 tests/integration_tests/charts/api_tests.py        |   28 +
 .../charts/semantic_save_tests.py                  |  140 +
 .../charts/version_restore_tests.py                |  174 ++
 tests/integration_tests/core_tests.py              |   50 +
 tests/integration_tests/dashboards/api_tests.py    |  141 +
 .../dashboards/filter_state/api_tests.py           |   75 +
 .../dashboards/test_theme_integration.py           |    6 +
 tests/integration_tests/datasets/api_tests.py      |  108 +
 .../integration_tests/deletion_retention/_base.py  |   21 +
 .../deletion_retention/audit_tests.py              |   52 +-
 .../deletion_retention/prune_audit_tests.py        |  907 +++++++
 tests/integration_tests/reports/commands_tests.py  |  111 +-
 .../reports/execution_claim_tests.py               |   32 +
 .../security/row_level_security_tests.py           |   33 +
 tests/integration_tests/sqllab_tests.py            |   13 +-
 tests/integration_tests/tags/api_tests.py          |   12 +-
 tests/integration_tests/themes/api_tests.py        |    7 +
 .../integration_tests/themes/test_theme_editors.py |  291 ++
 .../versioning/activity_view_tests.py              |  118 +-
 .../versioning/activity_write_after_read_tests.py  |  131 +
 .../versioning/conditional_token_lock_tests.py     |  363 +++
 .../versioning/creation_row_tests.py               |  307 +++
 .../versioning/restore_fails_closed_tests.py       |  621 +++++
 .../versioning/versions_api_tests.py               |  203 +-
 .../charts/commands/importers/v1/utils_test.py     |   69 +
 .../charts/semantic_view_chart_filter_test.py      |  481 ++++
 tests/unit_tests/charts/test_schemas.py            |   78 +
 tests/unit_tests/cli/deletion_retention_test.py    |  389 +++
 tests/unit_tests/commands/chart/create_test.py     |   54 +-
 tests/unit_tests/commands/chart/update_test.py     |  164 +-
 .../commands/dashboard/slug_collision_test.py      |  246 ++
 .../commands/databases/validate_sql_test.py        |   50 +
 tests/unit_tests/commands/dataset/refresh_test.py  |   10 +-
 tests/unit_tests/commands/dataset/update_test.py   |   69 +-
 .../deletion_retention/test_prune_audit.py         |  431 +++
 tests/unit_tests/commands/report/create_test.py    |   49 +
 tests/unit_tests/commands/report/execute_test.py   |  940 ++++++-
 .../commands/report/execution_claim_test.py        |  412 +++
 .../report/execution_ownership_migration_test.py   |   87 +
 tests/unit_tests/commands/report/update_test.py    |   10 +-
 .../commands/semantic_layer/create_test.py         |   17 +-
 .../commands/semantic_layer/update_test.py         |   64 +-
 .../commands/test_base_restore_version_command.py  |   84 +
 .../commands/test_restore_version_concurrency.py   |  167 ++
 .../commands/test_update_managed_externally.py     |  403 +++
 .../common/test_query_context_processor.py         |  117 +
 tests/unit_tests/common/test_tabular_query.py      |   74 +
 tests/unit_tests/common/test_time_shifts.py        |  318 ++-
 tests/unit_tests/connectors/sqla/models_test.py    |  234 ++
 tests/unit_tests/connectors/sqla/utils_test.py     |   56 +-
 .../dashboards/semantic_view_access_test.py        |  264 +-
 tests/unit_tests/databases/commands/delete_test.py |   21 +-
 tests/unit_tests/datasets/api_tests.py             |  216 +-
 tests/unit_tests/db_engine_specs/test_base.py      |   18 +
 .../unit_tests/db_engine_specs/test_databricks.py  |   31 +
 tests/unit_tests/db_engine_specs/test_gsheets.py   |    4 +
 tests/unit_tests/db_engine_specs/test_mssql.py     |  438 +++
 tests/unit_tests/db_engine_specs/test_presto.py    |   14 +-
 .../unit_tests/db_engine_specs/test_shillelagh.py  |  100 +
 tests/unit_tests/explore/utils_test.py             |   65 +
 tests/unit_tests/initialization_test.py            |  222 +-
 tests/unit_tests/jinja_context_test.py             |   41 +
 .../mcp_service/chart/test_chart_examples.py       |   59 +
 .../mcp_service/chart/test_chart_helpers.py        |  285 ++
 tests/unit_tests/mcp_service/chart/test_compile.py |   85 +
 .../mcp_service/chart/test_gantt_chart.py          | 2812 ++++++++++++++++++++
 .../mcp_service/chart/test_preview_utils.py        |  145 +-
 .../mcp_service/chart/test_query_result.py         |   71 +
 .../mcp_service/chart/tool/test_get_chart_info.py  |   29 +-
 .../mcp_service/chart/tool/test_get_chart_sql.py   |  165 ++
 .../mcp_service/chart/tool/test_update_chart.py    |   56 +
 .../chart/tool/test_update_chart_preview.py        |   84 +-
 .../common/test_time_range_validation.py           |   41 +-
 .../dashboard/test_dashboard_schemas.py            |  236 ++
 .../dashboard/test_layout_validation.py            |  174 ++
 .../mcp_service/dashboard/test_permalink.py        |  123 +-
 .../tool/test_add_chart_to_existing_dashboard.py   |   98 +
 .../dashboard/tool/test_apply_dashboard_filters.py | 1174 ++++++++
 .../dashboard/tool/test_dashboard_generation.py    |  178 +-
 .../dashboard/tool/test_dashboard_tools.py         |  306 ++-
 .../dashboard/tool/test_duplicate_dashboard.py     |   55 +
 .../dashboard/tool/test_get_dashboard_data.py      |  480 ++++
 .../dashboard/tool/test_get_dashboard_datasets.py  |  331 ++-
 .../tool/test_manage_dashboard_certification.py    |   79 +
 .../tool/test_remove_chart_from_dashboard.py       |   44 +
 .../dashboard/tool/test_update_dashboard.py        |   78 +-
 .../database/tool/test_database_tools.py           |    2 +-
 .../mcp_service/dataset/tool/test_dataset_tools.py |  282 +-
 .../mcp_service/dataset/tool/test_query_dataset.py |   99 +
 .../dataset/tool/test_update_dataset_metric.py     |   39 +
 .../mcp_service/query/tool/test_query_tools.py     |    2 +-
 .../saved_query/tool/test_saved_query_tools.py     |    2 +-
 .../semantic_layer/tool/test_get_table.py          |  817 +++++-
 .../semantic_layer/tool/test_list_metrics.py       |  235 +-
 .../system/resources/test_schema_discovery.py      |    2 +-
 tests/unit_tests/mcp_service/test_dataset_scope.py |  504 ++++
 .../unit_tests/mcp_service/test_main_entrypoint.py |    7 +-
 tests/unit_tests/mcp_service/test_mcp_config.py    |   16 +
 tests/unit_tests/mcp_service/test_mcp_e2e_smoke.py |  123 +-
 tests/unit_tests/mcp_service/test_mcp_server.py    |  106 +-
 .../mcp_service/test_mcp_tool_registration.py      |  327 ++-
 tests/unit_tests/mcp_service/test_middleware.py    |  756 +++++-
 .../mcp_service/test_middleware_logging.py         |   18 +-
 .../mcp_service/test_rbac_tool_enforcement.py      |    8 +-
 .../mcp_service/test_tool_search_transform.py      |   40 +
 .../mcp_service/theme/tool/test_create_theme.py    |   89 +-
 .../mcp_service/utils/test_response_utils.py       |   24 +
 .../mcp_service/utils/test_token_utils.py          |  311 ++-
 .../migrations/test_add_theme_editors.py           |  166 ++
 .../migrations/test_purge_audit_coordination.py    |   78 +
 .../migrations/test_single_migration_head.py       |   18 +-
 tests/unit_tests/models/core_test.py               |   23 +
 tests/unit_tests/models/helpers_test.py            |   49 +-
 tests/unit_tests/models/slice_test.py              |   80 +-
 .../pandas_postprocessing/test_contribution.py     |  106 +
 .../reports/notifications/email_tests.py           |   38 +-
 .../reports/notifications/slack_tests.py           |   18 +
 .../reports/notifications/webhook_tests.py         |   71 +-
 tests/unit_tests/reports/schemas_test.py           |   28 +
 tests/unit_tests/security/manager_test.py          |  633 +++++
 .../security/test_guest_token_empty_filter.py      |  115 +
 tests/unit_tests/semantic_layers/api_test.py       |  352 ++-
 .../semantic_layers/connections_access_test.py     |  402 +++
 .../fixtures/snowflake_configuration.json          |  172 ++
 tests/unit_tests/semantic_layers/mapper_test.py    |  213 +-
 tests/unit_tests/semantic_layers/masking_test.py   |  870 ++++++
 tests/unit_tests/semantic_layers/models_test.py    |  123 +
 .../semantic_layers/provider_masking_test.py       |  107 +
 .../semantic_layers/values_endpoint_test.py        |    4 +-
 .../unit_tests/soft_delete}/__init__.py            |    0
 .../soft_delete/test_restore_purge_hoist.py        |  268 ++
 tests/unit_tests/sql/parse_tests.py                |   67 +
 tests/unit_tests/sql_lab_test.py                   |  105 +
 .../subjects/test_report_executor_remediation.py   |  148 ++
 tests/unit_tests/tasks/test_async_queries.py       |   43 +
 .../tasks/test_scheduler_soft_timeout.py           |   17 +
 tests/unit_tests/test_realtime_publish.py          |  124 +
 tests/unit_tests/themes/api_test.py                |    6 +
 tests/unit_tests/themes/commands_test.py           |   22 +-
 tests/unit_tests/utils/date_parser_tests.py        |  107 +
 tests/unit_tests/utils/filters_test.py             |   43 +-
 tests/unit_tests/utils/test_report_execution.py    |   19 +
 tests/unit_tests/utils/test_screenshot_utils.py    |   76 +-
 tests/unit_tests/utils/webdriver_test.py           |    4 +-
 tests/unit_tests/versioning/test_activity.py       |  600 ++++-
 tests/unit_tests/versioning/test_db_errors.py      |  205 +-
 tests/unit_tests/versioning/test_endpoint_gate.py  |  216 ++
 tests/unit_tests/versioning/test_listener.py       |  565 +++-
 tests/unit_tests/versioning/test_restore.py        |  247 +-
 .../unit_tests/versioning/test_retention_races.py  |    4 +
 tests/unit_tests/versioning/test_shadow_queries.py |  250 ++
 .../versioning/test_version_info_locking.py        |  108 +
 tests/unit_tests/views/test_base_theme_helpers.py  |   62 +
 tests/unit_tests/views/test_error_bodies.py        |  212 ++
 tests/unit_tests/views/test_i18n_constants.py      |  640 +++++
 581 files changed, 51946 insertions(+), 4738 deletions(-)
 rename superset-frontend/{ => packages/superset-ui-core}/src/components/Descriptions/index.tsx (100%)
 rename superset-frontend/{ => packages/superset-ui-core}/src/components/Splitter/index.tsx (100%)
 rename superset-frontend/{ => packages/superset-ui-core}/src/components/TimePicker/index.tsx (100%)
 create mode 100644 superset-frontend/playwright/helpers/embeddedAppServer.ts
 create mode 100644 superset-frontend/playwright/tests/dashboard/dashboard-native-filter-url-key.spec.ts
 create mode 100644 superset-frontend/playwright/tests/dashboard/version-history-placement.spec.ts
 create mode 100644 superset-frontend/playwright/tests/embedded/embedded-iframe-sizing.spec.ts
 create mode 100644 superset-frontend/plugins/plugin-chart-echarts/test/Histogram/transformProps.test.ts
 create mode 100644 superset-frontend/src/dashboard/components/PropertiesModal/PropertiesModal.lateFieldMount.test.tsx
 create mode 100644 superset-frontend/src/dashboard/components/nativeFilters/FiltersConfigModal/hooks/useFilterOperations.test.ts
 create mode 100644 superset-frontend/src/dashboard/components/nativeFilters/useDisplayControlDatasource.test.ts
 create mode 100644 superset-frontend/src/dashboard/components/nativeFilters/useDisplayControlDatasource.ts
 create mode 100644 superset-frontend/src/dashboard/useDashboardFilterSync.test.tsx
 create mode 100644 superset-frontend/src/dashboard/useDashboardFilterSync.ts
 copy superset-frontend/src/{visualizations/TimeTable/utils/rowProcessing/rowProcessing.ts => dashboard/util/embeddedLayout.ts} (61%)
 create mode 100644 superset-frontend/src/explore/components/controls/ControlPopover/PopoverTriggerAnchors.test.tsx
 create mode 100644 superset-frontend/src/explore/components/controls/DndColumnSelectControl/utils/pickerCapabilities.test.ts
 create mode 100644 superset-frontend/src/explore/components/controls/DndColumnSelectControl/utils/pickerCapabilities.ts
 create mode 100644 superset-frontend/src/explore/selectors/compatibility.test.ts
 create mode 100644 superset-frontend/src/explore/selectors/compatibility.ts
 create mode 100644 superset-frontend/src/features/versionHistory/RelatedUpdateRow.test.tsx
 create mode 100644 superset-frontend/src/features/versionHistory/SaveGroupItem.test.tsx
 create mode 100644 superset-frontend/src/pages/DatasetList/DatasetList.connectionPermissions.test.tsx
 create mode 100644 superset-frontend/src/utils/semanticViewStructure.test.ts
 create mode 100644 superset-frontend/src/utils/semanticViewStructure.ts
 create mode 100644 superset/commands/deletion_retention/prune_audit.py
 create mode 100644 superset/commands/report/execution_claim.py
 create mode 100644 superset/commands/semantic_layer/utils.py
 create mode 100644 superset/commands/soft_delete_collisions.py
 copy superset/commands/{annotation_layer => theme}/create.py (53%)
 create mode 100644 superset/mcp_service/chart/plugins/gantt.py
 create mode 100644 superset/mcp_service/dashboard/tool/apply_dashboard_filters.py
 create mode 100644 superset/mcp_service/dashboard/tool/get_dashboard_data.py
 create mode 100644 superset/mcp_service/dataset_scope.py
 create mode 100644 superset/migrations/versions/2026-07-24_00-00_f7e8d9c0b1a2_add_theme_editors_table.py
 copy superset/migrations/versions/{2024-05-02_13-40_3dfd0e78650e_add_query_sql_editor_id_index.py => 2026-08-24_15-50_a6c21e5b4d93_index_purge_audit_pruning.py} (61%)
 create mode 100644 superset/migrations/versions/2026-08-24_16-20_c7f53d184ea2_coordinate_purge_audit_pruning.py
 copy superset/migrations/versions/{2016-09-19_17-22_b347b202819b_.py => 2026-09-04_19-03_aa5fa339627c_merge_add_theme_editors_table_with_.py} (76%)
 create mode 100644 superset/migrations/versions/2026-09-05_00-00_88a01c781622_index_ab_user_lower_username.py
 copy superset/migrations/versions/{2016-09-19_17-22_b347b202819b_.py => 2026-09-09_00-00_0884f655c0a6_merge_task_dependencies_with_theme_.py} (79%)
 copy superset/migrations/versions/{2015-11-21_11-18_289ce07647b_add_encrypted_password_field.py => 2026-09-15_06-50_e2f3a1b9c640_merge_purge_audit_and_username_index_heads.py} (66%)
 create mode 100644 superset/migrations/versions/2026-09-16_00-00_93d1b4a76c02_add_report_execution_ownership.py
 copy superset/migrations/versions/{2015-11-21_11-18_289ce07647b_add_encrypted_password_field.py => 2026-09-16_22-55_60f94cd6cd11_merge_theme_editors_and_purge_audit_heads.py} (67%)
 copy {superset-core/src/superset_core/mcp => superset/realtime}/__init__.py (94%)
 create mode 100644 superset/realtime/publish.py
 create mode 100644 superset/semantic_layers/masking.py
 create mode 100644 superset/versioning/activity/creation.py
 copy superset/{extensions/storage/__init__.py => versioning/creation_kinds.py} (64%)
 create mode 100644 tests/integration_tests/charts/semantic_save_tests.py
 create mode 100644 tests/integration_tests/deletion_retention/prune_audit_tests.py
 create mode 100644 tests/integration_tests/reports/execution_claim_tests.py
 create mode 100644 tests/integration_tests/themes/test_theme_editors.py
 create mode 100644 tests/integration_tests/versioning/activity_write_after_read_tests.py
 create mode 100644 tests/integration_tests/versioning/conditional_token_lock_tests.py
 create mode 100644 tests/integration_tests/versioning/creation_row_tests.py
 create mode 100644 tests/integration_tests/versioning/restore_fails_closed_tests.py
 create mode 100644 tests/unit_tests/charts/semantic_view_chart_filter_test.py
 create mode 100644 tests/unit_tests/cli/deletion_retention_test.py
 create mode 100644 tests/unit_tests/commands/dashboard/slug_collision_test.py
 create mode 100644 tests/unit_tests/commands/deletion_retention/test_prune_audit.py
 create mode 100644 tests/unit_tests/commands/report/execution_claim_test.py
 create mode 100644 tests/unit_tests/commands/report/execution_ownership_migration_test.py
 create mode 100644 tests/unit_tests/commands/test_restore_version_concurrency.py
 create mode 100644 tests/unit_tests/commands/test_update_managed_externally.py
 create mode 100644 tests/unit_tests/db_engine_specs/test_shillelagh.py
 create mode 100644 tests/unit_tests/mcp_service/chart/test_chart_examples.py
 create mode 100644 tests/unit_tests/mcp_service/chart/test_gantt_chart.py
 create mode 100644 tests/unit_tests/mcp_service/chart/test_query_result.py
 create mode 100644 tests/unit_tests/mcp_service/dashboard/tool/test_apply_dashboard_filters.py
 create mode 100644 tests/unit_tests/mcp_service/dashboard/tool/test_get_dashboard_data.py
 create mode 100644 tests/unit_tests/mcp_service/test_dataset_scope.py
 create mode 100644 tests/unit_tests/migrations/test_add_theme_editors.py
 create mode 100644 tests/unit_tests/migrations/test_purge_audit_coordination.py
 copy superset/commands/dataset/columns/exceptions.py => tests/unit_tests/migrations/test_single_migration_head.py (65%)
 create mode 100644 tests/unit_tests/security/test_guest_token_empty_filter.py
 create mode 100644 tests/unit_tests/semantic_layers/connections_access_test.py
 create mode 100644 tests/unit_tests/semantic_layers/fixtures/snowflake_configuration.json
 create mode 100644 tests/unit_tests/semantic_layers/masking_test.py
 create mode 100644 tests/unit_tests/semantic_layers/provider_masking_test.py
 copy {scripts => tests/unit_tests/soft_delete}/__init__.py (100%)
 create mode 100644 tests/unit_tests/soft_delete/test_restore_purge_hoist.py
 create mode 100644 tests/unit_tests/subjects/test_report_executor_remediation.py
 create mode 100644 tests/unit_tests/test_realtime_publish.py
 create mode 100644 tests/unit_tests/versioning/test_endpoint_gate.py
 create mode 100644 tests/unit_tests/versioning/test_shadow_queries.py
 create mode 100644 tests/unit_tests/versioning/test_version_info_locking.py
 create mode 100644 tests/unit_tests/views/test_error_bodies.py
 create mode 100644 tests/unit_tests/views/test_i18n_constants.py