This is an automated email from the ASF dual-hosted git repository.
hainenber pushed a change to branch
feat/conditionally-run-codeql-analysis-per-detected-language
in repository https://gitbox.apache.org/repos/asf/superset.git
from 8bd65656f45 feat: restore CodeQL analysis harness to ensure quality
for both langs
add 3e36b242a61 fix(datafusion): render temporal SQL that DataFusion
accepts (#44700)
add 8c3b985c22c fix(db2): set current_schema to the catalog name of the
selected schema (#44706)
add ba62c867258 chore(deps): bump brace-expansion from 5.0.9 to 5.0.12 in
/superset-frontend/cypress-base (#44813)
add 3f8a23622c7 perf(security): memoise the user subject lookup within a
request (#44017)
add 3f408238baa refactor(mcp): one plugin lifecycle contract and compact
chart config schemas (#44746)
add 5668faf18e6 fix(doris): quarter grain, SSL toggle, parameters URI,
error mapping and column types (#44718)
add 929c44097f8 chore(deps): bump the security group across 1 directory
with 2 updates (#44824)
add e93f8ce638c test(semantic-views): wait for views refetches to settle
before selecting a view (#44792)
add 21d46d52dfd chore(build): remove unused dependencies in `docs` and
`superset-frontend` (#44697)
add af794f8c93a chore(deps): bump the security group across 1 directory
with 2 updates (#44831)
add 8a7be3b327b fix: avoid provider calls when rendering datasource access
denials (#44432)
add 3b06cadca4c fix(csv-import): add primary key when MySQL requires one
(#44411)
add 88efac09c67 fix(mcp): align histogram and waterfall query contracts
(#44744)
add 65a6012843b ci(python): run the Python-next canary nightly, bump to
3.13 (#44767)
add e90b9fb751e chore(deps): bump dompurify from 3.4.15 to 3.4.16 in
/superset-frontend in the security group across 1 directory (#44830)
add 51378f529d8 fix(matrixify): fan metrics-axis selection into
multi-query fields (#44629)
add 883e43ee2da fix(sqllab): ignore non-object template_params in
format_sql instead of 500 (#44826)
add bbf0fa5f42f fix(core): stop discarding API errors that quote an HTML
tag (#42489)
add d80fcfc02a2 fix(i18n): make babel_update.sh .pot normalization
actually run (#44395)
add f02f53df234 fix(sql): reject client-side file-transfer statements in
query execution (#44496)
add fd524f4b217 fix(sqllab): preserve exact decimals in results and
exports (#44739)
add d2101c8dba2 fix(exasol): classify common server errors (#44721)
add dc0e306a24c fix(elasticsearch): classify byte, short, half_float,
scaled_float and unsigned_long columns (#44713)
add 8baa9c1f2e3 fix(db2): accept sqlglot's parse_mod in the DB2 term
parser (#44708)
add 5cf8213354c fix(databricks): keep the user's OAuth2 token and extra
connect_args; re-auth on HTTP 401 (#44705)
add 855bb4e21c8 fix(gsheets): align service-account validation and
serialize upload dates (#44695)
add bbf00956d46 fix(mcp): prioritize exact tool names in BM25 search
(#44682)
add 90fc4735835 test(embedded-sdk): cross-document test rig for the
navigation fix (#44608)
add e91ce19a606 fix(auth): drain flash messages on the login page (#44605)
add 924343e3ee6 fix(gantt): prevent y-axis category labels from being
clipped (#44321)
add d2fb52ac83e fix(auth): remove the legacy FAB password reset views and
move password resets into the SPA (#44626)
add 4cdd680f399 fix: increase dataset edit modal size (#38215) (#39257)
add 4911dbe00b0 fix(doris): offer the connection form by matching the
installed driver (#44736)
add 3109cfaf6d6 chore(deps): bump @googleapis/sheets from 18.0.0 to 18.0.1
in /superset-frontend (#44862)
add 4f9c22db6dc chore(deps): bump github/codeql-action/analyze from 4.38.1
to 4.38.2 (#44861)
add 6418473be14 chore(deps): bump github/codeql-action/upload-sarif from
4.38.1 to 4.38.2 (#44859)
add 8b643519ca0 chore: add sadpandajoe as a codeowner for .asf.yaml
(#44855)
add b98e19f6eb2 chore: drop cypress-matrix-required from required status
checks (#44854)
add 74d885233de chore(deps): bump github/codeql-action/init from 4.38.1 to
4.38.2 (#44860)
add 8ab7a85a3d7 chore(e2e): remove Cypress infrastructure (#44829)
add ee39954adb6 fix(oauth2): refresh a token rejected when a connection
opens (#44765)
add e5ec22ab3e9 feat(table): add multi-level column header groups (#43938)
add a12d1b8e127 fix(mcp): enforce tool deadlines without blocking the
server (#44581)
add 0a0a1974c50 test(playwright): select existing dashboards without
creating duplicates (#44856)
add 33292f249da feat(mcp): support tab-scoped dashboard layouts (#44797)
add 4ae8fe71225 fix: size 'Drill to detail' table header correctly (#44807)
add 2c72d4d4fee fix(mcp): use DEFAULT_PAGE_SIZE constant in list_charts
test (#44786)
add 446853004a4 fix(mcp): keep a bubble chart's colors and row limit
across updates (#44618)
add 217e4c0223f fix(frontend): use html2canvas for chart image export on
Safari (#44529)
add c82f97b69d6 chore(deps): bump deck.gl and luma.gl from 9.2.5 to 9.4.0
in /superset-frontend (#42608)
add abdf2e6c702 fix(home): redirect users without an ID before rendering
(#44456)
add 3f6d4cd6896 chore(deps-dev): update google-cloud-storage requirement
from >=1.37 to >=3.14.1 (#44693)
add 6a832cb2102 fix(mcp): enforce dashboard filter scope on dataset, SQL
and chart tool calls (#44800)
add e7702020344 fix(postprocessing): preserve NULL index values through
pivot() (#43547) (#43693)
add f7badeb095b fix(mcp): execute_sql request limit caps, never raises, an
explicit SQL LIMIT (#44604)
add db56168a861 ci: require babel-extract to pass before merging master
(#44543)
add 342a8f1e4e0 fix(mcp): report a chart's live dataset id and name
(#44681)
add 21b937b59d7 fix(retention): skip models without purge policies before
scanning (#44874)
add 6d97cde59a6 fix(semantic-layers): export/import semantic-view charts
by typed reference (#44396)
add b94f88ffbb4 fix(semantic-layer): require explicit member identity
reselection (#44370)
add 9c7c96fe057 fix(logging): register LogRestApi only once (#44732)
add edc91b86e5c chore(deps-dev): bump baseline-browser-mapping from
2.11.25 to 2.11.26 in /superset-frontend (#44890)
add 338e640df93 chore(deps): bump dompurify from 3.4.15 to 3.4.16 in
/superset-frontend (#44889)
add 4a199486599 chore(deps): bump dom-to-image-more from 3.10.2 to 3.11.0
in /superset-frontend (#44888)
add 6559b483f28 chore(deps): bump maplibre-gl from 6.8.0 to 6.11.2 in
/superset-frontend (#44887)
add dfccc2e1e9c chore(deps-dev): bump minimizer-webpack-plugin from 5.11.0
to 5.12.0 in /superset-frontend (#44886)
add c43770e12da chore(deps-dev): bump webpack-sources from 3.5.1 to 3.5.3
in /superset-frontend (#44885)
add 95faf3a6a04 chore(deps-dev): bump oxlint-tsgolint from 7.0.2002 to
7.0.2003 in /docs (#44883)
add 27c9213cca2 chore(deps-dev): bump oxlint-tsgolint from 7.0.2002 to
7.0.2003 in /superset-websocket (#44882)
add 25956d6c448 chore(superset-ui-chart-controls): forward-compat fixes
for TypeScript 6.0 (#44877)
add ba3500e0e9a feat(export/import): add annotation layer export/import
support for charts and dashboards (#43232)
add 1b0a37cf223 fix(users): stop update_me setting self-referential
changed_by_fk (#44866)
add 7bb29649416 chore(deps): bump dawidd6/action-download-artifact from 24
to 25 (#44884)
add 005edd74234 chore(build): de-vendor `helm/chart-testing-action` GHA
(#44722)
add 10d06859b83 fix(ci): floor pyfakefs at 5.7.4 to fix Python 3.13
pytest-cov crash (#44853)
add 0fdfd6660e0 docs(databases): add ClickHouse Managed Postgres (#44870)
add e0483898728 test(explore): cover time range frames, comparison labels,
and metric popover state (#44847)
add c1bb129c218 fix(change-detector): classify changed files by language,
not directory (#44895)
add e606cadff7c chore(mcp): fix malformed tool and prompt docstrings
(#44572)
add ef64bacbaa0 feat(chart): cross-filter by x-axis label on charts with
dimensions (#44869)
add b0ac9ef61f6 test(explore): cover color scheme selection, BigNumber
subheader/trendline, and WorldMap bubbles (#44846)
add 8d25777b995 test(plugin-chart-table): cover server-side sort, query
mode controls, and sort ordering (#44845)
add 8849542bda1 test(explore): cover viz switch and control dependency
logic (#44842)
add 03b61cc2d89 test(explore): add fetchTopNValues unit tests (#44841)
add e32493c9d93 test(explore): add saveModalReducer unit tests (#44839)
add f6155b9e9ea fix(dashboard): show the configured refresh warning
alongside the limit error (#44836)
add 240a4267f85 test(explore): add datasourcesReducer unit tests (#44840)
add bc3698b5d64 test(explore): port remaining deleted Cypress explore
specs to RTL (#44838)
add 2872d16ee65 test(frontend): await the userEvent calls that needed
restructuring (#44799)
add 7fea33761b8 fix(chart): wrap raw pandas TypeError/DataError from
post-processing as QueryObjectValidationError (#44463)
add 3f7d01aaafc fix(reports): catch TypeError when validating non-string
extra.dashboard.anchor (#44404)
add ece8b8bd7b2 fix(import): avoid UnboundLocalError when load_yaml fails
during load_configs (SC-121288) (#44390)
add 47ba8fc8014 fix(api): return 401 not 500 for auth errors in
CurrentUserRestApi (SC-120417) (#44213)
add ef2c05c0900 fix(security): guard is_guest_user against
NoAuthorizationError on unauthenticated error paths (#43826)
add f9d67e1a118 fix: downgrade deprecated query_object field warnings to
info (#43520)
add 396030d87e0 docs: remove stale Selenium references after
Playwright-only switch (#44243)
add 3fa06db85b6 fix(mcp): include feature_availability in
instance://metadata resource (#44891)
add 52d8b405c99 fix(echarts): recognize Date and ISO-string temporal
x-axis values in getXAxisDomain (#44818)
add 15bde2a3016 fix(native-filters): keep cascade dependency gate in sync
with live filter type (#44366)
add 11bdbc91f37 feat(ci): add Chromatic visual regression testing for
Storybook (#44103)
add 8d026b4a568 fix(mcp): skip dashboard live updates when websockets are
disabled or realtime access is missing (#44796)
add 7260916b905 test(dashboard): cover "View as table" end-to-end for a
view-as-table-only role (#44881)
add 646de3a46b5 test(clickhouse): cover GROUP BY ALL against a real
instance (#40482) (#44879)
add ba453d3cb43 fix(sec): sanitize HTML text before shown as impact item's
label (#43825)
add 2220f53d9db fix(chart): accept quarter and day in end-of time ranges
(#43204)
add 62ab4cae23d fix(sql-lab): avoid duplicate generated result column
names (#44189)
add 743a27f7ed3 fix(chart): sort Heatmap Y-axis by default when unset
(#44588)
add 87bb752814a fix(select): remove Space wrapper from optionRender to fix
option label truncation (#44357)
add d6689283942 fix(sql-lab): use function valueGetter for GridTable row
numbers (#41574)
add 10356c30edb fix(mcp): stop partial-update tools from advertising null
defaults (#44573)
add 6966c1f6ccb fix(cartodiagram): share Pie colors across locations in
Explore (#44794)
add 81466987cbb fix(mcp): use create_proxy in simple_proxy for fastmcp 4
compatibility (#44787)
add ea79c63e878 fix(post-processing): stop treating gaps as zero for
cumprod, cummin and cummax (#44828)
add f1ae8909d85 fix(import): remove duplicate config redefinition in
load_configs (#44932)
add afa98f3391a perf(deletion-retention): one window pass for repeat
predicate (#44349)
add 3a9becd5cba chore(deps): bump markdown from 3.10.3 to 3.11 (#44941)
add a65fe06c513 chore(deps-dev): update google-cloud-storage requirement
from >=3.14.1 to >=3.15.0 (#44940)
add 3960407334b chore(deps): bump cachetools from 7.1.8 to 7.2.0 (#44939)
add dbd3e28aa3e chore(deps-dev): update databricks-sql-connector
requirement from <4.6.0,>=4.5.0 to >=4.6.0,<4.7.0 (#44937)
add 8ba26679671 chore(deps): bump holidays from 0.104 to 0.105 (#44936)
add 291d098917b chore(deps): bump sqlglot from 30.18.0 to 30.19.0 (#44935)
add 98be2d17dad chore(deps-dev): bump clickhouse-connect from 1.8.0 to
1.9.0 (#44934)
add 549508b340b fix(mcp): preserve calling constraints in compact tool
discovery (#44656)
add f7d16223c62 Merge branch 'master' into
feat/conditionally-run-codeql-analysis-per-detected-language
add 770b157ffc9 feat(codeql): use change_detector's `languages` output as
matrix for later CodeQL workflow runs
No new revisions were added by this update.
Summary of changes:
.asf.yaml | 2 +-
.cursor/rules/dev-standard.mdc | 4 +-
.dockerignore | 1 -
.envrc.example | 1 -
.github/CODEOWNERS | 2 +-
.github/actions/change-detector/action.yml | 5 +
.github/actions/chart-testing-action | 1 -
.github/actions/setup-backend/action.yml | 5 +-
.github/labeler.yml | 2 -
.github/workflows/bashlib.sh | 130 +-
.github/workflows/caches.js | 6 -
.github/workflows/chromatic.yml | 134 +
.github/workflows/codeql-analysis.yml | 27 +-
.github/workflows/docker.yml | 2 +-
.github/workflows/python-nightly-canary.yml | 94 +
.github/workflows/superset-docs-deploy.yml | 4 +-
.github/workflows/superset-docs-verify.yml | 2 +-
.github/workflows/superset-e2e.yml | 203 +-
.github/workflows/superset-helm-lint-test.yml | 19 +-
.github/workflows/superset-python-unittest.yml | 7 +-
.github/workflows/superset-translations.yml | 2 +
.gitmodules | 3 -
.pre-commit-config.yaml | 3 +-
AGENTS.md | 10 +-
Makefile | 8 -
RESOURCES/STANDARD_ROLES.md | 6 -
UPDATING.md | 203 +-
docker-compose.yml | 2 -
docker/.env | 2 -
docker/.env-local.example | 1 -
docker/docker-bootstrap.sh | 7 -
docker/docker-entrypoint-initdb.d/cypress-init.sh | 28 -
docker/docker-init.sh | 31 +-
docker/pythonpath_dev/superset_config.py | 13 -
docs/admin_docs/configuration/alerts-reports.mdx | 57 +-
docs/admin_docs/configuration/cache.mdx | 37 +-
.../configuration/configuring-superset.mdx | 2 +-
.../configuration/dashboard-performance.mdx | 4 +-
docs/admin_docs/configuration/google-sheets.mdx | 49 +
.../importing-exporting-datasources.mdx | 32 +
docs/admin_docs/configuration/mcp-server.mdx | 285 +-
docs/developer_docs/api.mdx | 5 +
.../contributing/development-setup.md | 12 +-
docs/developer_docs/contributing/howtos.md | 41 +-
.../guidelines/frontend-style-guidelines.md | 2 +-
docs/developer_docs/testing/backend-testing.md | 3 +-
docs/developer_docs/testing/e2e-testing.md | 28 +-
docs/developer_docs/testing/overview.md | 2 +-
docs/developer_docs/testing/testing-guidelines.md | 31 +-
docs/docs/quickstart.mdx | 3 +
.../creating-your-first-dashboard.mdx | 20 +
docs/docs/using-superset/number-formatting.mdx | 16 +
docs/docs/using-superset/recently-archived.mdx | 10 +
.../using-superset/semantic-member-selections.mdx | 62 +
docs/docusaurus.config.ts | 1 -
docs/package.json | 12 +-
docs/src/data/databases.json | 20 +
docs/static/resources/openapi.json | 27 +-
.../databases/supported/apache-doris.mdx | 8 +
.../version-6.1.0/databases/supported/mysql.mdx | 18 +
docs/yarn.lock | 95 +-
pyproject.toml | 26 +-
requirements/base.txt | 8 +-
requirements/development.in | 11 +
requirements/development.txt | 19 +-
scripts/change_detector.py | 60 +
scripts/cypress_run.py | 167 -
scripts/docker-compose-up.sh | 4 -
scripts/translations/babel_update.sh | 15 +-
superset-core/src/superset_core/queries/types.py | 3 +
.../src/superset_core/semantic_layers/types.py | 1 +
.../src/superset_core/semantic_layers/view.py | 14 +
superset-embedded-sdk/testrig/README.md | 89 +
superset-embedded-sdk/testrig/drive.mjs | 655 +
superset-embedded-sdk/testrig/embedded.html | 127 +
superset-embedded-sdk/testrig/host.html | 239 +
superset-embedded-sdk/testrig/server.mjs | 199 +
superset-frontend/.gitignore | 2 -
superset-frontend/babel.config.js | 2 +-
superset-frontend/cypress-base/.eslintrc | 41 -
superset-frontend/cypress-base/.gitignore | 4 -
superset-frontend/cypress-base/cypress.config.ts | 84 -
.../cypress-base/cypress/fixtures/charts.json | 38 -
.../cypress-base/cypress/fixtures/dashboards.json | 46 -
.../cypress-base/cypress/support/e2e.ts | 455 -
.../cypress-base/cypress/support/index.d.ts | 92 -
.../cypress-base/cypress/utils/index.ts | 121 -
.../cypress-base/cypress/utils/parsePostForm.ts | 60 -
.../cypress-base/cypress/utils/urls.ts | 24 -
.../cypress-base/cypress/utils/vizPlugins.ts | 104 -
superset-frontend/cypress-base/package-lock.json | 15006 -------------------
superset-frontend/cypress-base/package.json | 57 -
superset-frontend/cypress-base/tsconfig.json | 16 -
superset-frontend/cypress_build.sh | 46 -
superset-frontend/eslint.config.minimal.js | 1 -
superset-frontend/jest.config.js | 12 +-
superset-frontend/oxlint.json | 1 -
superset-frontend/package-lock.json | 1169 +-
superset-frontend/package.json | 75 +-
.../packages/superset-core/package.json | 2 -
.../src/sections/sections.tsx | 7 +
.../superset-ui-chart-controls/src/types.ts | 2 +
.../src/utils/getColorFormatters.ts | 84 +-
.../src/utils/headerGroups.test.ts | 1065 ++
.../src/utils/headerGroups.ts | 903 ++
.../superset-ui-chart-controls/src/utils/index.ts | 1 +
.../packages/superset-ui-core/package.json | 4 +-
.../Matrixify/MatrixifyGridGenerator.test.ts | 63 +
.../components/Matrixify/MatrixifyGridGenerator.ts | 34 +-
.../src/chart/models/ChartProps.ts | 10 +
.../src/components/Select/AsyncSelect.test.tsx | 8 +
.../src/components/Select/AsyncSelect.tsx | 3 +-
.../src/components/Select/Select.test.tsx | 9 +
.../src/components/Select/Select.tsx | 3 +-
.../src/components/Table/VirtualTable.test.tsx | 83 +
.../src/components/Table/VirtualTable.tsx | 20 +-
.../superset-ui-core/src/query/extractExtras.ts | 22 +
.../src/query/getClientErrorObject.ts | 29 +-
.../packages/superset-ui-core/src/query/index.ts | 2 +
.../src/query/semanticSelection.ts} | 35 +-
.../superset-ui-core/src/query/types/Dashboard.ts | 1 +
.../superset-ui-core/src/query/types/Query.ts | 1 +
.../src/query/types/QueryFormData.ts | 12 +-
.../test/chart/models/ChartProps.test.ts | 22 +-
.../test/query/extractExtras.test.ts | 62 +
.../test/query/getClientErrorObject.test.ts | 66 +
.../playwright/components/core/Select.ts | 8 +-
.../playwright/components/modals/SaveChartModal.ts | 33 +-
.../explore/cross-referenced-dashboards.spec.ts | 29 +-
.../playwright/tests/explore/explore-save.spec.ts | 8 +-
.../tests/mobile/mobile-dashboard.spec.ts | 65 +-
.../src/AgGridTable/components/CustomHeader.tsx | 3 +-
.../src/AgGridTable/index.tsx | 118 +-
.../src/AgGridTableChart.tsx | 7 +-
.../src/controlPanel.tsx | 33 +-
.../src/styles/index.tsx | 28 +
.../src/transformProps.ts | 24 +-
.../plugin-chart-ag-grid-table/src/types.ts | 3 +
.../src/utils/formatValue.ts | 3 +-
.../src/utils/getCellStyle.ts | 8 +-
.../src/utils/mainComparison.ts} | 33 +-
.../src/utils/useColDefs.ts | 23 +-
.../test/AgGridTableChart.test.tsx | 175 +
.../test/controlPanel.test.ts | 107 +-
.../test/controlPanel.test.tsx | 32 +-
.../test/transformProps.test.ts | 198 +-
.../test/utils/getCellStyle.test.ts | 15 +
.../test/utils/mainComparison.test.ts | 43 +
.../test/utils/useColDefs.test.ts | 40 +
.../src/util/transformPropsUtil.ts | 8 +
.../test/util/pieColors.test.ts | 203 +
.../src/BigNumber/BigNumberViz.test.tsx | 57 +
.../BigNumberWithTrendline/transformProps.test.ts | 72 +
.../plugin-chart-echarts/src/Gantt/constants.ts | 3 +
.../src/Gantt/transformProps.ts | 35 +-
.../src/Heatmap/controlPanel.tsx | 12 +-
.../src/Heatmap/transformProps.ts | 17 +-
.../plugin-chart-echarts/src/Heatmap/types.ts | 6 +
.../plugin-chart-echarts/src/Pie/transformProps.ts | 4 +-
.../src/Timeseries/EchartsTimeseries.test.tsx | 116 +-
.../src/Timeseries/EchartsTimeseries.tsx | 29 +-
.../src/Timeseries/transformProps.ts | 7 +-
.../src/Timeseries/transformers.ts | 6 +-
.../plugins/plugin-chart-echarts/src/constants.ts | 4 +
.../plugin-chart-echarts/src/utils/formatters.ts | 40 +-
.../plugin-chart-echarts/src/utils/series.ts | 93 +-
.../test/Gantt/transformProps.test.ts | 213 +-
.../test/Heatmap/transformProps.test.ts | 67 +-
.../test/Timeseries/EchartsTimeseries.test.tsx | 13 +-
.../test/Timeseries/transformProps.test.ts | 31 +
.../test/Timeseries/transformers.test.ts | 17 +
.../test/utils/formatters.test.ts | 118 +
.../plugin-chart-echarts/test/utils/series.test.ts | 166 +-
.../plugin-chart-point-cluster-map/package.json | 2 +-
.../src/MapLibre.tsx | 62 +-
.../test/MapLibre.test.tsx | 31 +
.../plugin-chart-table/src/DataTable/DataTable.tsx | 11 +-
.../plugins/plugin-chart-table/src/Styles.tsx | 5 +
.../plugins/plugin-chart-table/src/TableChart.tsx | 210 +-
.../plugin-chart-table/src/controlPanel.tsx | 38 +-
.../plugin-chart-table/src/transformProps.ts | 41 +-
.../plugins/plugin-chart-table/src/types.ts | 5 +
.../plugin-chart-table/src/utils/headerGroups.ts} | 20 +-
.../test/DataTable/DataTable.test.tsx | 64 +-
.../plugin-chart-table/test/TableChart.test.tsx | 414 +
.../plugin-chart-table/test/buildQuery.test.ts | 42 +
.../plugin-chart-table/test/controlPanel.test.ts | 199 +-
.../plugin-chart-table/test/controlPanel.test.tsx | 32 +-
.../plugin-chart-table/test/headerGroups.test.ts | 301 +
.../plugin-chart-world-map/test/WorldMap.test.ts | 14 +
.../plugins/preset-chart-deckgl/package.json | 27 +-
.../src/DeckGLContainer.test.tsx | 95 +-
.../preset-chart-deckgl/src/DeckGLContainer.tsx | 17 +-
.../src/components/DeckGLOverlayMapLibre.test.tsx | 80 +
.../src/components/DeckGLOverlayMapLibre.tsx | 8 +-
.../src/layers/Contour/Contour.tsx | 2 +-
superset-frontend/scripts/check-custom-rules.js | 4 -
.../spec/helpers/sourceTreeScanner.ts | 1 -
.../SqlEditorTabHeader/SqlEditorTabHeader.test.tsx | 28 +-
.../src/components/Chart/ChartRenderer.test.tsx | 52 +-
.../src/components/Chart/ChartRenderer.tsx | 23 +-
.../Datasource/DatasourceModal/index.tsx | 19 +-
.../DatasourceEditor/DatasourceEditor.tsx | 115 +-
.../FilterableTable/exactDecimals.test.tsx | 92 +
.../src/components/FilterableTable/index.tsx | 41 +-
.../components/FilterableTable/sortResults.test.ts | 238 +
.../src/components/FilterableTable/sortResults.ts | 180 +
.../src/components/GridTable/index.tsx | 10 +-
.../RowCountLabel/RowCountLabel.test.tsx | 16 +-
.../DashboardBuilder/DashboardContainer.tsx | 7 +-
.../components/RefreshIntervalModal.test.tsx | 37 +
.../dashboard/components/RefreshIntervalModal.tsx | 2 +-
.../ViewAsTableRendering.test.tsx | 309 +
.../FilterBar/FilterControls/FilterValue.test.tsx | 42 +-
.../FilterBar/FilterControls/FilterValue.tsx | 70 +-
.../FiltersConfigForm/FiltersConfigForm.tsx | 161 +-
.../FiltersConfigModal/FiltersConfigModal.test.tsx | 145 +-
.../hooks/useFilterOperations.test.ts | 62 +
.../hooks/useFilterOperations.ts | 10 +-
.../transformers/buildTarget.test.ts | 44 +-
.../FiltersConfigModal/transformers/buildTarget.ts | 37 +-
.../transformers/customizationTransformer.ts | 10 +-
.../transformers/filterTransformer.ts | 10 +-
.../nativeFilters/FiltersConfigModal/types.ts | 2 +
.../components/nativeFilters/utils.test.ts | 27 +
.../dashboard/components/nativeFilters/utils.ts | 13 +
.../util/charts/getFormDataWithExtraFilters.ts | 163 +-
.../util/getFormDataWithExtraFilters.test.ts | 412 +-
superset-frontend/src/dataMask/reducer.test.ts | 58 +
superset-frontend/src/dataMask/reducer.ts | 18 +
.../src/explore/actions/exploreActions.ts | 10 +
.../src/explore/components/Control.test.tsx | 36 +-
.../src/explore/components/Control.tsx | 3 +-
.../components/ControlPanelsContainer.test.tsx | 477 +-
.../explore/components/ControlPanelsContainer.tsx | 112 +-
.../controls/AnnotationLayerControl/index.test.tsx | 84 +-
.../ColorSchemeControl/ColorSchemeControl.test.tsx | 76 +
.../ColumnConfigControl.test.tsx | 86 +
.../ColumnConfigControl/ColumnConfigControl.tsx | 24 +-
.../controls/ColumnConfigControl/constants.tsx | 3 +-
.../controls/ComparisonRangeLabel.test.tsx | 252 +
.../DateFilterControl/tests/CommonFrame.test.tsx | 72 +
.../tests/DateFilterLabel.test.tsx | 193 +
.../DateFilterControl/tests/DateLabel.test.tsx | 73 +
.../DndMetricSelect.test.tsx | 90 +
.../AdhocFilterControl/AdhocFilterControl.test.tsx | 102 +-
.../AdhocFilterEditPopover.test.tsx | 55 +-
...AdhocFilterEditPopoverSimpleTabContent.test.tsx | 17 +
.../index.tsx | 27 +-
.../HeaderGroupsControl/HeaderGroupEditor.tsx | 567 +
.../HeaderGroupsControl.test.tsx | 906 ++
.../HeaderGroupsControl/HeaderGroupsControl.tsx | 289 +
.../controls/HeaderGroupsControl/index.ts} | 12 +-
.../controls/HeaderGroupsControl/types.ts} | 42 +-
.../controls/HeaderGroupsControl/utils.test.ts | 388 +
.../controls/HeaderGroupsControl/utils.ts | 215 +
.../MatrixifyControl/utils/fetchTopNValues.test.ts | 165 +
.../controls/MatrixifyDimensionControl.test.tsx | 139 +-
.../controls/MatrixifyDimensionControl.tsx | 26 +-
.../AdhocMetricPopoverTrigger.test.tsx | 278 +
.../components/controls/SelectControl.test.tsx | 55 +
.../src/explore/components/controls/index.ts | 2 +
.../src/explore/controlPanels/sections.tsx | 7 +
.../controlUtils/getSectionsToRender.test.ts | 179 +
.../explore/reducers/datasourcesReducer.test.ts | 171 +
.../src/explore/reducers/exploreReducer.test.ts | 269 +-
.../src/explore/reducers/exploreReducer.ts | 29 +-
.../src/explore/reducers/saveModalReducer.test.ts | 184 +
.../datasets/AddDataset/Footer/Footer.test.tsx | 5 +-
.../semanticViews/AddSemanticViewModal.test.tsx | 22 +
.../src/features/userInfo/UserInfoModal.test.tsx | 62 +-
.../src/features/userInfo/UserInfoModal.tsx | 26 +-
.../src/features/users/UserListModal.test.tsx | 178 +
.../src/features/users/UserListModal.tsx | 108 +-
superset-frontend/src/features/users/utils.ts | 8 +-
.../ArchivedList/ArchivedDatasetPurgeModal.tsx | 3 +-
superset-frontend/src/pages/Home/Home.test.tsx | 47 +-
superset-frontend/src/pages/Home/index.tsx | 20 +-
superset-frontend/src/pages/Login/Login.test.tsx | 135 +-
superset-frontend/src/pages/Login/index.tsx | 41 +-
superset-frontend/src/types/bootstrapTypes.ts | 1 +
.../src/utils/downloadAsImage.test.ts | 276 +
superset-frontend/src/utils/downloadAsImage.tsx | 113 +-
.../src/utils/semanticViewStructure.test.ts | 13 +
.../src/utils/semanticViewStructure.ts | 15 +-
superset-frontend/src/utils/urlUtils.ts | 17 +
.../TimeTable/components/LeftCell/LeftCell.tsx | 18 +-
superset-frontend/webpack.config.js | 1 -
superset-websocket/package-lock.json | 56 +-
superset-websocket/package.json | 2 +-
superset/annotation_layers/schemas.py | 21 +
superset/charts/api.py | 3 +
superset/charts/schemas.py | 21 +-
superset/commands/annotation_layer/exceptions.py | 5 +
superset/commands/annotation_layer/export.py | 109 +
.../annotation_layer/importers}/__init__.py | 0
.../importers/dispatcher.py | 20 +-
.../annotation_layer/importers/v1/__init__.py | 54 +
.../annotation_layer/importers/v1/utils.py | 73 +
superset/commands/chart/export.py | 251 +-
superset/commands/chart/importers/v1/__init__.py | 99 +-
superset/commands/chart/importers/v1/utils.py | 381 +-
superset/commands/dashboard/export.py | 8 +-
superset/commands/dashboard/export_example.py | 31 +
.../commands/dashboard/importers/v1/__init__.py | 89 +-
.../commands/deletion_retention/prune_audit.py | 76 +-
superset/commands/export/assets.py | 10 +-
superset/commands/importers/v1/__init__.py | 10 +-
superset/commands/importers/v1/assets.py | 74 +-
superset/commands/importers/v1/examples.py | 19 +
superset/commands/importers/v1/utils.py | 7 +-
superset/commands/report/alert.py | 12 +-
superset/commands/report/base.py | 10 +-
superset/commands/sql_lab/estimate.py | 10 +-
superset/commands/sql_lab/export.py | 14 +
superset/commands/streaming_export/base.py | 11 +-
superset/common/query_context_processor.py | 15 +-
superset/common/query_object.py | 49 +-
superset/common/tabular_query.py | 8 +-
superset/config.py | 5 +-
superset/core/mcp/core_mcp_injection.py | 24 +-
superset/dashboards/api.py | 13 +-
superset/dataframe.py | 38 +-
superset/datasource/api.py | 52 +-
superset/datasource/schemas.py | 9 +
superset/db_engine_specs/base.py | 6 +
superset/db_engine_specs/bigquery.py | 35 +-
superset/db_engine_specs/databricks.py | 91 +-
superset/db_engine_specs/datafusion.py | 34 +-
superset/db_engine_specs/db2.py | 12 +-
superset/db_engine_specs/doris.py | 132 +-
superset/db_engine_specs/elasticsearch.py | 25 +
superset/db_engine_specs/exasol.py | 76 +
superset/db_engine_specs/gsheets.py | 81 +-
superset/db_engine_specs/mysql.py | 257 +-
superset/db_engine_specs/postgres.py | 34 +
superset/db_engine_specs/trino.py | 18 +
superset/exceptions.py | 18 +
superset/initialization/__init__.py | 3 +-
superset/mcp_service/app.py | 2 +
superset/mcp_service/auth.py | 105 +-
superset/mcp_service/caching.py | 37 +-
superset/mcp_service/chart/chart_helpers.py | 163 +-
superset/mcp_service/chart/chart_utils.py | 128 +-
superset/mcp_service/chart/compile.py | 19 +-
superset/mcp_service/chart/plugin.py | 222 +-
superset/mcp_service/chart/plugins/big_number.py | 55 +-
superset/mcp_service/chart/plugins/bubble.py | 29 +-
superset/mcp_service/chart/plugins/gantt.py | 79 +-
superset/mcp_service/chart/plugins/gauge.py | 63 +-
superset/mcp_service/chart/plugins/handlebars.py | 4 +
superset/mcp_service/chart/plugins/histogram.py | 98 +-
.../mcp_service/chart/plugins/mixed_timeseries.py | 43 +
superset/mcp_service/chart/plugins/table.py | 1 +
superset/mcp_service/chart/plugins/treemap.py | 141 +-
superset/mcp_service/chart/plugins/waterfall.py | 35 +
superset/mcp_service/chart/preview_utils.py | 197 +-
.../chart/prompts/create_chart_guided.py | 4 +-
superset/mcp_service/chart/query_result.py | 19 +-
superset/mcp_service/chart/registry.py | 49 +-
superset/mcp_service/chart/schemas.py | 180 +-
superset/mcp_service/chart/tool/generate_chart.py | 18 +-
superset/mcp_service/chart/tool/get_chart_data.py | 29 +-
superset/mcp_service/chart/tool/get_chart_info.py | 34 +-
.../mcp_service/chart/tool/get_chart_preview.py | 128 +-
superset/mcp_service/chart/tool/get_chart_sql.py | 5 +-
.../chart/tool/get_chart_type_schema.py | 4 +-
superset/mcp_service/chart/tool/list_charts.py | 130 +-
superset/mcp_service/chart/tool/update_chart.py | 81 +-
.../mcp_service/chart/tool/update_chart_preview.py | 66 +-
.../chart/validation/dataset_validator.py | 4 +-
superset/mcp_service/common/schema_discovery.py | 2 +-
superset/mcp_service/composite_token_verifier.py | 26 +-
superset/mcp_service/dashboard/schemas.py | 198 +-
.../dashboard/tool/apply_dashboard_filters.py | 8 +
.../dashboard/tool/generate_dashboard.py | 18 +-
.../dashboard/tool/get_dashboard_info.py | 21 +-
.../dashboard/tool/get_dashboard_layout.py | 161 +-
.../mcp_service/dashboard/tool/list_dashboards.py | 18 +-
superset/mcp_service/dashboard_scope.py | 1365 ++
superset/mcp_service/dashboard_scope_sql.py | 516 +
superset/mcp_service/dataset/schemas.py | 45 +-
.../dataset/tool/create_virtual_dataset.py | 16 +-
superset/mcp_service/dataset/tool/list_datasets.py | 18 +-
superset/mcp_service/mcp_config.py | 30 +-
superset/mcp_service/middleware.py | 180 +-
superset/mcp_service/privacy.py | 1 +
superset/mcp_service/semantic_layer/schemas.py | 9 +
.../semantic_layer/tool/get_compatible_metrics.py | 3 +
.../mcp_service/semantic_layer/tool/get_table.py | 51 +-
.../semantic_layer/tool/list_metrics.py | 3 +
superset/mcp_service/server.py | 176 +-
superset/mcp_service/simple_proxy.py | 6 +-
superset/mcp_service/sql_lab/schemas.py | 10 +-
superset/mcp_service/sql_lab/tool/execute_sql.py | 1 +
superset/mcp_service/system/prompts/quickstart.py | 4 +-
.../system/resources/instance_metadata.py | 37 +-
superset/mcp_service/system/system_utils.py | 33 +-
.../mcp_service/system/tool/get_instance_info.py | 38 +-
superset/mcp_service/system/tool/get_schema.py | 7 +-
superset/mcp_service/system/tool/health_check.py | 5 +-
superset/mcp_service/utils/response_size_utils.py | 176 +
superset/mcp_service/utils/schema_utils.py | 27 +-
superset/mcp_service/worker.py | 897 ++
.../migrations/shared/migrate_viz/processors.py | 6 +-
superset/migrations/shared/utils.py | 2 +-
..._add_uuid_to_annotation_layer_and_annotation.py | 144 +
superset/models/annotations.py | 19 +-
superset/models/core.py | 220 +-
superset/models/helpers.py | 2 +
superset/result_set.py | 16 +
superset/security/manager.py | 174 +-
superset/security/password_change.py | 63 +-
superset/semantic_layers/api.py | 3 +
.../semantic_layers/bundle_schemas.py | 24 +-
superset/semantic_layers/import_export.py | 240 +
superset/semantic_layers/mapper.py | 6 +
superset/semantic_layers/models.py | 3 +
superset/sql/dialects/db2.py | 81 +-
superset/sql/execution/cancellation.py | 170 +
superset/sql/execution/celery_task.py | 3 +-
superset/sql/execution/executor.py | 147 +-
superset/sql/parse.py | 434 +-
superset/sql_lab.py | 7 +-
superset/sqllab/api.py | 7 +
superset/subjects/utils.py | 40 +-
superset/superset_typing.py | 11 +
superset/tasks/deletion_retention.py | 55 +-
superset/tasks/query_cancel.py | 9 +-
superset/translations/ar/LC_MESSAGES/messages.po | 214 +-
superset/translations/ca/LC_MESSAGES/messages.po | 239 +-
superset/translations/cs/LC_MESSAGES/messages.po | 227 +-
superset/translations/de/LC_MESSAGES/messages.po | 231 +-
superset/translations/en/LC_MESSAGES/messages.po | 200 +-
superset/translations/es/LC_MESSAGES/messages.po | 220 +-
superset/translations/fa/LC_MESSAGES/messages.po | 212 +-
superset/translations/fi/LC_MESSAGES/messages.po | 224 +-
superset/translations/fr/LC_MESSAGES/messages.po | 223 +-
superset/translations/it/LC_MESSAGES/messages.po | 248 +-
superset/translations/ja/LC_MESSAGES/messages.po | 206 +-
superset/translations/ko/LC_MESSAGES/messages.po | 213 +-
superset/translations/lv/LC_MESSAGES/messages.po | 223 +-
superset/translations/messages.pot | 2687 +---
superset/translations/mi/LC_MESSAGES/messages.po | 221 +-
superset/translations/nl/LC_MESSAGES/messages.po | 226 +-
superset/translations/pl/LC_MESSAGES/messages.po | 233 +-
superset/translations/pt/LC_MESSAGES/messages.po | 232 +-
.../translations/pt_BR/LC_MESSAGES/messages.po | 232 +-
superset/translations/ro/LC_MESSAGES/messages.po | 221 +-
superset/translations/ru/LC_MESSAGES/messages.po | 213 +-
superset/translations/sk/LC_MESSAGES/messages.po | 216 +-
superset/translations/sl/LC_MESSAGES/messages.po | 225 +-
superset/translations/sr/LC_MESSAGES/messages.po | 231 +-
.../translations/sr_Latn/LC_MESSAGES/messages.po | 234 +-
superset/translations/ta/LC_MESSAGES/messages.po | 236 +-
superset/translations/th/LC_MESSAGES/messages.po | 215 +-
superset/translations/tr/LC_MESSAGES/messages.po | 213 +-
superset/translations/uk/LC_MESSAGES/messages.po | 235 +-
superset/translations/zh/LC_MESSAGES/messages.po | 203 +-
.../translations/zh_TW/LC_MESSAGES/messages.po | 203 +-
superset/utils/core.py | 36 +
superset/utils/csv.py | 10 +
superset/utils/date_parser.py | 25 +-
superset/utils/dict_import_export.py | 7 +
superset/utils/oauth2.py | 136 +-
superset/utils/pandas_postprocessing/cum.py | 7 +-
superset/utils/pandas_postprocessing/pivot.py | 51 +-
superset/utils/rls.py | 4 +-
superset/views/auth.py | 11 +-
superset/views/users/api.py | 29 +-
superset/views/users/schemas.py | 39 +-
superset/views/utils.py | 2 +-
.../annotation_layers/commands_tests.py | 750 +
tests/integration_tests/charts/commands_tests.py | 1515 ++
.../charts/semantic_save_tests.py | 82 +-
tests/integration_tests/commands_test.py | 58 +
tests/integration_tests/core_tests.py | 30 +-
.../integration_tests/dashboards/commands_tests.py | 585 +
.../deletion_retention/prune_audit_tests.py | 88 +
tests/integration_tests/fixtures/importexport.py | 104 +
.../db_engine_specs/test_clickhouse.py | 43 +
.../charts/commands/importers/v1/import_test.py | 32 +-
.../charts/commands/importers/v1/utils_test.py | 28 +-
.../commands/chart/semantic_export_test.py | 127 +
.../dashboard/export_example_semantic_test.py | 175 +
.../deletion_retention/test_prune_audit.py | 33 +-
tests/unit_tests/commands/export_test.py | 51 +
.../commands/importers/v1/assets_test.py | 4 +-
.../unit_tests/commands/importers/v1/utils_test.py | 34 +
tests/unit_tests/commands/report/alert_test.py | 37 +
tests/unit_tests/commands/report/create_test.py | 36 +
tests/unit_tests/commands/sql_lab/export_test.py | 113 +
.../sql_lab/streaming_export_command_test.py | 74 +
tests/unit_tests/commands/sql_lab/test_estimate.py | 30 +
.../common/test_query_context_processor.py | 45 +
tests/unit_tests/conftest.py | 13 +-
tests/unit_tests/connectors/sqla/utils_test.py | 34 +
tests/unit_tests/dataframe_test.py | 83 +-
tests/unit_tests/db_engine_specs/test_bigquery.py | 87 +-
.../unit_tests/db_engine_specs/test_databricks.py | 202 +-
.../unit_tests/db_engine_specs/test_datafusion.py | 32 +-
tests/unit_tests/db_engine_specs/test_db2.py | 52 +-
tests/unit_tests/db_engine_specs/test_doris.py | 381 +-
.../db_engine_specs/test_elasticsearch.py | 41 +
tests/unit_tests/db_engine_specs/test_exasol.py | 191 +
tests/unit_tests/db_engine_specs/test_gsheets.py | 259 +-
tests/unit_tests/db_engine_specs/test_mariadb.py | 83 +
tests/unit_tests/db_engine_specs/test_mysql.py | 440 +-
tests/unit_tests/db_engine_specs/test_trino.py | 17 +
tests/unit_tests/initialization/init_views_test.py | 113 +
.../mcp_service/catalog/tool/test_get_catalog.py | 13 +
.../mcp_service/chart/test_chart_examples.py | 3 +-
.../mcp_service/chart/test_chart_helpers.py | 113 +
.../chart/test_chart_plugin_contract.py | 762 +
.../mcp_service/chart/test_chart_utils.py | 55 +
.../mcp_service/chart/test_gantt_chart.py | 21 +-
.../mcp_service/chart/test_gauge_chart.py | 3 +-
.../chart/test_histogram_boxplot_charts.py | 62 +
.../chart/test_live_chart_datasource.py | 709 +
.../mcp_service/chart/test_preview_utils.py | 66 +
.../unit_tests/mcp_service/chart/test_registry.py | 56 +-
.../mcp_service/chart/test_registry_filters.py | 9 +
.../mcp_service/chart/test_treemap_completeness.py | 76 +-
.../mcp_service/chart/tool/test_get_chart_data.py | 38 +
.../chart/tool/test_get_chart_preview.py | 37 +
.../chart/tool/test_get_chart_type_schema.py | 10 +
.../mcp_service/chart/tool/test_list_charts.py | 4 +-
.../mcp_service/chart/tool/test_update_chart.py | 43 +-
.../chart/tool/test_update_chart_preview.py | 21 +-
.../dashboard/test_dashboard_schemas.py | 18 +
.../dashboard/tool/test_apply_dashboard_filters.py | 54 +-
.../dashboard/tool/test_get_dashboard_datasets.py | 13 +-
.../dashboard/tool/test_get_dashboard_layout.py | 744 +-
.../dataset/tool/test_dataset_metric_mutations.py | 13 +
.../mcp_service/dataset/tool/test_query_dataset.py | 12 +-
.../dataset/tool/test_update_dataset_metric.py | 13 +
.../tool/test_get_compatible_metrics.py | 14 +-
.../semantic_layer/tool/test_get_table.py | 39 +
.../semantic_layer/tool/test_list_metrics.py | 10 +-
.../mcp_service/sql_lab/tool/test_execute_sql.py | 22 +-
.../system/resources/test_instance_metadata.py | 144 +
.../system/tool/test_get_current_user.py | 6 +-
.../mcp_service/test_auth_user_resolution.py | 48 +-
.../mcp_service/test_chart_tool_inventory.py | 236 +-
.../mcp_service/test_composite_token_verifier.py | 105 +-
.../unit_tests/mcp_service/test_dashboard_scope.py | 1502 ++
.../mcp_service/test_dashboard_scope_sql.py | 674 +
.../unit_tests/mcp_service/test_mcp_docstrings.py | 128 +
.../mcp_service/test_mcp_tool_registration.py | 106 +
tests/unit_tests/mcp_service/test_middleware.py | 21 +
.../test_tool_description_constraints.py | 655 +
.../unit_tests/mcp_service/test_tool_inventory.py | 84 +-
.../mcp_service/test_tool_search_transform.py | 494 +-
tests/unit_tests/mcp_service/test_worker.py | 878 ++
.../mcp_service/test_worker_metadata_pool.py | 1000 ++
.../unit_tests/migrations/viz/table_v1_v2_test.py | 42 +
tests/unit_tests/models/core_test.py | 414 +
tests/unit_tests/models/helpers_test.py | 51 +
tests/unit_tests/pandas_postprocessing/test_cum.py | 35 +
.../unit_tests/pandas_postprocessing/test_pivot.py | 339 +
tests/unit_tests/result_set_test.py | 113 +-
tests/unit_tests/scripts/change_detector_test.py | 77 +
.../scripts/translations/babel_update_test.py | 355 +
tests/unit_tests/security/manager_test.py | 238 +
tests/unit_tests/security/test_password_change.py | 106 +-
.../security/test_permission_instructions_link.py | 4 +-
.../test_superset_user_api_subject_sync.py | 23 +
tests/unit_tests/semantic_layers/api_test.py | 10 +-
.../semantic_layers/import_export_test.py | 921 ++
tests/unit_tests/semantic_layers/mapper_test.py | 5 +
tests/unit_tests/semantic_layers/models_test.py | 2 +
.../semantic_layers/selection_identity_test.py | 293 +
.../semantic_layers/values_endpoint_test.py | 21 +-
tests/unit_tests/sql/dialects/db2_tests.py | 20 +
tests/unit_tests/sql/execution/conftest.py | 3 +
.../unit_tests/sql/execution/test_cancellation.py | 165 +
tests/unit_tests/sql/execution/test_celery_task.py | 4 +-
tests/unit_tests/sql/execution/test_executor.py | 901 +-
tests/unit_tests/sql/parse_tests.py | 314 +
tests/unit_tests/sql_lab_test.py | 41 +-
tests/unit_tests/sqllab/api_test.py | 45 +
tests/unit_tests/subjects/test_utils.py | 80 +
tests/unit_tests/tasks/test_deletion_retention.py | 171 +-
tests/unit_tests/test_mcp_simple_proxy.py | 45 +
tests/unit_tests/utils/date_parser_tests.py | 64 +
tests/unit_tests/utils/oauth2_tests.py | 190 +
tests/unit_tests/views/test_auth_login.py | 77 +
tests/unit_tests/views/test_current_user_api.py | 126 +-
.../views/test_current_user_auth_errors.py | 122 +
589 files changed, 55354 insertions(+), 22560 deletions(-)
delete mode 160000 .github/actions/chart-testing-action
create mode 100644 .github/workflows/chromatic.yml
create mode 100644 .github/workflows/python-nightly-canary.yml
delete mode 100755 docker/docker-entrypoint-initdb.d/cypress-init.sh
create mode 100644 docs/admin_docs/configuration/google-sheets.mdx
create mode 100644 docs/docs/using-superset/semantic-member-selections.mdx
delete mode 100644 scripts/cypress_run.py
create mode 100644 superset-embedded-sdk/testrig/README.md
create mode 100644 superset-embedded-sdk/testrig/drive.mjs
create mode 100644 superset-embedded-sdk/testrig/embedded.html
create mode 100644 superset-embedded-sdk/testrig/host.html
create mode 100644 superset-embedded-sdk/testrig/server.mjs
delete mode 100644 superset-frontend/cypress-base/.eslintrc
delete mode 100644 superset-frontend/cypress-base/.gitignore
delete mode 100644 superset-frontend/cypress-base/cypress.config.ts
delete mode 100644 superset-frontend/cypress-base/cypress/fixtures/charts.json
delete mode 100644
superset-frontend/cypress-base/cypress/fixtures/dashboards.json
delete mode 100644 superset-frontend/cypress-base/cypress/support/e2e.ts
delete mode 100644 superset-frontend/cypress-base/cypress/support/index.d.ts
delete mode 100644 superset-frontend/cypress-base/cypress/utils/index.ts
delete mode 100644
superset-frontend/cypress-base/cypress/utils/parsePostForm.ts
delete mode 100644 superset-frontend/cypress-base/cypress/utils/urls.ts
delete mode 100644 superset-frontend/cypress-base/cypress/utils/vizPlugins.ts
delete mode 100644 superset-frontend/cypress-base/package-lock.json
delete mode 100644 superset-frontend/cypress-base/package.json
delete mode 100644 superset-frontend/cypress-base/tsconfig.json
delete mode 100755 superset-frontend/cypress_build.sh
create mode 100644
superset-frontend/packages/superset-ui-chart-controls/src/utils/headerGroups.test.ts
create mode 100644
superset-frontend/packages/superset-ui-chart-controls/src/utils/headerGroups.ts
copy superset-frontend/{src/views/ScrollToTop.tsx =>
packages/superset-ui-core/src/query/semanticSelection.ts} (50%)
copy
superset-frontend/{packages/superset-ui-core/src/validator/legacyValidateInteger.ts
=> plugins/plugin-chart-ag-grid-table/src/utils/mainComparison.ts} (56%)
create mode 100644
superset-frontend/plugins/plugin-chart-ag-grid-table/test/utils/mainComparison.test.ts
create mode 100644
superset-frontend/plugins/plugin-chart-cartodiagram/test/util/pieColors.test.ts
copy
superset-frontend/{packages/superset-ui-core/src/components/Input/index.tsx =>
plugins/plugin-chart-table/src/utils/headerGroups.ts} (71%)
create mode 100644
superset-frontend/plugins/plugin-chart-table/test/headerGroups.test.ts
create mode 100644
superset-frontend/plugins/preset-chart-deckgl/src/components/DeckGLOverlayMapLibre.test.tsx
create mode 100644
superset-frontend/src/components/FilterableTable/exactDecimals.test.tsx
create mode 100644
superset-frontend/src/components/FilterableTable/sortResults.test.ts
create mode 100644
superset-frontend/src/components/FilterableTable/sortResults.ts
create mode 100644
superset-frontend/src/dashboard/components/SliceHeaderControls/ViewAsTableRendering.test.tsx
create mode 100644
superset-frontend/src/explore/components/controls/ColumnConfigControl/ColumnConfigControl.test.tsx
create mode 100644
superset-frontend/src/explore/components/controls/ComparisonRangeLabel.test.tsx
create mode 100644
superset-frontend/src/explore/components/controls/DateFilterControl/tests/CommonFrame.test.tsx
create mode 100644
superset-frontend/src/explore/components/controls/DateFilterControl/tests/DateLabel.test.tsx
create mode 100644
superset-frontend/src/explore/components/controls/HeaderGroupsControl/HeaderGroupEditor.tsx
create mode 100644
superset-frontend/src/explore/components/controls/HeaderGroupsControl/HeaderGroupsControl.test.tsx
create mode 100644
superset-frontend/src/explore/components/controls/HeaderGroupsControl/HeaderGroupsControl.tsx
copy
superset-frontend/{packages/superset-ui-core/src/components/Input/index.tsx =>
src/explore/components/controls/HeaderGroupsControl/index.ts} (82%)
copy
superset-frontend/{plugins/preset-chart-deckgl/src/layers/Arc/buildQuery.test.ts
=> src/explore/components/controls/HeaderGroupsControl/types.ts} (57%)
create mode 100644
superset-frontend/src/explore/components/controls/HeaderGroupsControl/utils.test.ts
create mode 100644
superset-frontend/src/explore/components/controls/HeaderGroupsControl/utils.ts
create mode 100644
superset-frontend/src/explore/components/controls/MatrixifyControl/utils/fetchTopNValues.test.ts
create mode 100644
superset-frontend/src/explore/components/controls/MetricControl/AdhocMetricPopoverTrigger.test.tsx
create mode 100644
superset-frontend/src/explore/controlUtils/getSectionsToRender.test.ts
create mode 100644
superset-frontend/src/explore/reducers/datasourcesReducer.test.ts
create mode 100644
superset-frontend/src/explore/reducers/saveModalReducer.test.ts
create mode 100644 superset-frontend/src/features/users/UserListModal.test.tsx
create mode 100644 superset/commands/annotation_layer/export.py
copy {scripts => superset/commands/annotation_layer/importers}/__init__.py
(100%)
copy superset/commands/{chart => annotation_layer}/importers/dispatcher.py
(82%)
create mode 100644 superset/commands/annotation_layer/importers/v1/__init__.py
create mode 100644 superset/commands/annotation_layer/importers/v1/utils.py
create mode 100644 superset/mcp_service/dashboard_scope.py
create mode 100644 superset/mcp_service/dashboard_scope_sql.py
create mode 100644 superset/mcp_service/worker.py
create mode 100644
superset/migrations/versions/2026-08-17_18-38_884a2115ebd3_add_uuid_to_annotation_layer_and_annotation.py
copy tests/unit_tests/utils/db.py =>
superset/semantic_layers/bundle_schemas.py (56%)
create mode 100644 superset/semantic_layers/import_export.py
create mode 100644 superset/sql/execution/cancellation.py
create mode 100644 tests/integration_tests/annotation_layers/commands_tests.py
create mode 100644 tests/unit_tests/commands/chart/semantic_export_test.py
create mode 100644
tests/unit_tests/commands/dashboard/export_example_semantic_test.py
create mode 100644 tests/unit_tests/commands/sql_lab/export_test.py
create mode 100644 tests/unit_tests/db_engine_specs/test_exasol.py
create mode 100644 tests/unit_tests/initialization/init_views_test.py
create mode 100644
tests/unit_tests/mcp_service/chart/test_chart_plugin_contract.py
create mode 100644
tests/unit_tests/mcp_service/chart/test_live_chart_datasource.py
create mode 100644
tests/unit_tests/mcp_service/system/resources/test_instance_metadata.py
create mode 100644 tests/unit_tests/mcp_service/test_dashboard_scope.py
create mode 100644 tests/unit_tests/mcp_service/test_dashboard_scope_sql.py
create mode 100644 tests/unit_tests/mcp_service/test_mcp_docstrings.py
create mode 100644
tests/unit_tests/mcp_service/test_tool_description_constraints.py
create mode 100644 tests/unit_tests/mcp_service/test_worker.py
create mode 100644 tests/unit_tests/mcp_service/test_worker_metadata_pool.py
create mode 100644 tests/unit_tests/scripts/translations/babel_update_test.py
create mode 100644 tests/unit_tests/semantic_layers/import_export_test.py
create mode 100644 tests/unit_tests/semantic_layers/selection_identity_test.py
create mode 100644 tests/unit_tests/sql/execution/test_cancellation.py
create mode 100644 tests/unit_tests/test_mcp_simple_proxy.py
create mode 100644 tests/unit_tests/views/test_auth_login.py
create mode 100644 tests/unit_tests/views/test_current_user_auth_errors.py