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