You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@superset.apache.org by ha...@apache.org on 2026/09/05 15:48:36 UTC

(superset) branch feat/migrate-frontend-to-esm updated (3be843a5bfa -> fd489851fc7)

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

hainenber pushed a change to branch feat/migrate-frontend-to-esm
in repository https://gitbox.apache.org/repos/asf/superset.git


    from 3be843a5bfa Merge branch 'master' into feat/migrate-frontend-to-esm
     add b8b2e5ea8b5 chore(deps): bump baseline-browser-mapping from 2.11.17 to 2.11.18 in /docs (#43704)
     add 5b64150d0ac chore(deps-dev): bump webpack-bundle-analyzer from 5.3.1 to 5.3.2 in /superset-frontend (#43706)
     add 6e185ebce8e chore(deps): bump actions/setup-java from 5.7.0 to 6.0.0 (#43707)
     add 9d1b5ebdb7b chore(deps-dev): bump baseline-browser-mapping from 2.11.17 to 2.11.18 in /superset-frontend (#43708)
     add 040b33c4502 chore(deps): bump yeoman-generator from 8.2.2 to 8.3.0 in /superset-frontend (#43709)
     add b24cb2af8a1 fix(db_engine_specs): support SQLAlchemy 2 DBAPI discovery (#43700)
     add 5bffceb2951 feat(mcp): let get_dashboard_info accept filter_state directly (#43688)
     add 1f1539fe0eb feat: test(presto) close db_engine_spec unit test gaps (#43607)
     add ac3c158c41e fix(tags): catch TemplateError when validating access for tagged SQL Lab queries on delete (#43433)
     add da27ba59a57 fix(pivot-table): apply "Show values as" percent to exports and reports (#43718)
     add ba0142ca644 fix(dashboard): reconcile stale results tab in Chart Data modal (#43648)
     add b04a1534514 fix(dashboard): stretch Chart Data modal results grid to fill available height (#43454)
     add e3d30bb730e chore(deps-dev): bump oxlint from 1.79.0 to 1.80.0 in /superset-frontend (#43753)
     add 9656ecc3aff chore(deps-dev): bump @types/node from 26.2.0 to 26.3.0 in /superset-frontend (#43752)
     add 3b5a4baa055 chore(deps-dev): bump oxfmt from 0.64.0 to 0.65.0 in /superset-frontend (#43751)
     add 842efd5f120 fix(datasets): warn on percent D3 format for count metrics (#43453)
     add 439564041f5 fix(echarts): place weekly time-axis ticks on the data buckets (#43339)
     add 58ef03dabca chore(deps-dev): bump oxfmt from 0.64.0 to 0.65.0 in /superset-websocket (#43739)
     add eec1e4d288b chore(deps-dev): bump eslint from 10.9.0 to 10.9.1 in /superset-websocket (#43740)
     add ed513bbe42a docs: add Veremes to users in the wild (#43754)
     add e683aadd6e0 chore(build): upgrade `webpack-dev-server` v7 and dependent libs (#43766)
     add 32fe4f66128 fix(echarts): make Bar chart value labels fit-aware and readable (#43144)
     add ba50bdff237 fix(echarts): prevent x-axis time labels from overlapping (#43669)
     add c9f625627dc fix(explore): don't drop stashed control values from saved chart params (#43650)
     add 531587a4b26 fix(sql): catch sqlglot ParseError when parsing RLS predicates (#43651)
     add 794dee80c23 docs: point homepage Release Notes link to GitHub releases (#43780)
     add 69333e87db3 chore(deps): bump browserslist from 4.28.4 to 4.28.8 in /docs in the security group across 1 directory (#43773)
     add 8ad5859fdf8 chore(deps-dev): bump browserslist from 4.28.1 to 4.28.8 in /superset-frontend in the security group across 1 directory (#43775)
     add 38331619157 chore(deps): bump browserslist from 4.28.1 to 4.28.8 in /superset-frontend/cypress-base (#43774)
     add 56944319cb1 chore(deps): bump js-yaml from 5.3.0 to 5.4.0 in /docs (#43748)
     add 45b903b19ad chore(deps-dev): bump oxfmt from 0.64.0 to 0.65.0 in /docs (#43745)
     add cf77deb678a fix(sqllab): explain dataset save failures instead of "Fatal error" (#43334)
     add 58f17efa6f5 feat(datasource): headless query API for Explorable datasources (#43527)
     add 9b2bb15ecec fix(themes): apply system default/dark theme changes live without a page refresh (#43778)
     add 0c7a47ef231 chore(deps): bump github/codeql-action/init from 4.37.8 to 4.37.9 (#43790)
     add 7321d4aff6f chore: fix typos in comments and docstrings (#43785)
     add 201a33f68f7 fix(charts): reject non-table datasource_type instead of crashing (#43500)
     add 316f6ad971a chore(lint): scope in-repo eslint plugins under @superset-ui (#43054)
     add b7da5336d35 docs(mcp): document embedded guest-token authentication (#43637)
     add 8c2290fcf45 docs(theming): document resultsGrid* Superset-specific tokens (#43638)
     add 46c8c67a400 fix(semantic_layers): mask write-only config fields, gate flag-off endpoints (#43474)
     add c19879ffff2 chore(translations): updated Slovenian translations (#43735)
     add f5e427083e2 fix(native-filters): keep "Select all" count stable while searching the Value filter (#43460)
     add 3bd437869a6 feat(export): let deployments carry extra fields through asset export/import (#43763)
     add 393b00f38ae chore(deps-dev): bump @typescript-eslint/parser from 8.67.0 to 8.68.0 in /superset-websocket (#43789)
     add 0ea234e9ae1 chore(deps): bump github/codeql-action/analyze from 4.37.8 to 4.37.9 (#43791)
     add e7c42dd8ed8 chore(deps-dev): bump fast-uri from 3.1.5 to 3.1.7 in /superset-embedded-sdk (#43796)
     add b49c1fd7e42 fix(security): handle cached schema/catalog names deserialized as lists (#43800)
     add 64bfbf75a49 feat(chart): list semantic views in the Create Chart datasource picker (#43629)
     add e8540b7c495 feat(dataset): warn about dependent charts and dashboards before purging an archived dataset (#43724)
     add 5b8e50e69db fix(reports): downgrade Slack channel-fetch auth-error logging to WARNING (SC-115301) (#42484)
     add a81c0f67739 fix(gsheets): catch JSONDecodeError in validate_parameters for malformed service_account_info (#43772)
     add 3394097c83a fix(snowflake): refresh rejected OAuth tokens (#43623)
     add 6dd841c35b2 fix(jinja): reuse get_request_json_body in get_dataset_id_from_context (#43556)
     add 52a4cb6314a fix(snowflake): quote case-sensitive lowercase column identifiers in generated SQL (#43312)
     add 07fc3144e5a feat(dataset): expose dataset certification controls (#43633)
     add d82a88f479e fix(dashboard): keep filter config modal within iframe (#43632)
     add d921131c5d9 fix(charts): resolve semantic-view datasource name and link in chart list (#43649)
     add b457280b57a chore(api): regenerate the OpenAPI spec (#43788)
     add 4a18556fdc0 fix(reports): prevent blank dashboard captures (#43784)
     add 18465bad51f perf(dashboard): batch dataset lookups during dashboard export (#43017)
     add bf12a21367c fix(charts): sort chart types by display name (#43634)
     add c185a2c6785 chore(deps-dev): bump @types/node from 26.3.0 to 26.4.0 in /superset-frontend (#43819)
     add 464adba69b8 chore(deps-dev): bump minimizer-webpack-plugin from 5.6.1 to 5.7.0 in /superset-frontend (#43818)
     add 3bd0ad52678 chore(deps): bump react-intersection-observer from 11.0.0 to 11.0.1 in /superset-frontend (#43817)
     add 9d855a4adf9 chore(deps-dev): bump @types/node from 26.2.0 to 26.4.0 in /superset-websocket (#43815)
     add 0398b320f94 chore(deps): bump fast-uri from 3.1.5 to 3.1.7 in /docs in the security group across 1 directory (#43798)
     add 669a0cefb49 chore(deps): bump the security group across 1 directory with 2 updates (#43797)
     add d9887fd9286 chore(deps): bump js-yaml from 5.4.0 to 5.4.1 in /docs (#43816)
     add a95c40aa1e4 chore(deps): bump qs from 6.15.2 to 6.16.0 in /superset-websocket/utils/client-ws-app in the security group across 1 directory (#43824)
     add d2d965e009f fix(navbar): use down-chevron icon consistently on all navbar dropdowns (#43531)
     add 28578160ff5 docs(pivot-table): document DB-computed totals/subtotals behavior (#43636)
     add b558f41461e feat(dashboard): convert @import to inline CSS in the dashboard CSS editor (#43667)
     add 9828281e7fd fix(charts): exclude string helpers from post_processing operation allowlist (#43345)
     add dd1a475df62 chore(deps-dev): bump baseline-browser-mapping from 2.11.18 to 2.11.19 in /superset-frontend (#43750)
     add 232ccf66d64 chore(deps-dev): bump eslint from 10.9.0 to 10.9.1 in /superset-frontend (#43749)
     add c91c9018323 chore(deps): bump baseline-browser-mapping from 2.11.18 to 2.11.19 in /docs (#43747)
     add 5d8ff9181a5 chore(deps-dev): bump the typescript-eslint group across 1 directory with 2 updates (#43744)
     add a6cbd7c3b58 chore(deps-dev): bump typescript-eslint from 8.67.0 to 8.68.0 in /superset-websocket (#43742)
     add 0bca5af7a9b fix(table): hide the Time Grain control in raw records mode (#43802)
     add 3258f5fa3f6 fix(security): catch JSONDecodeError on stored query_context in query_context_modified (#43795)
     add 765a4ecca51 chore(deps): bump caniuse-lite from 1.0.30001809 to 1.0.30001810 in /docs (#43746)
     add cceb52e776f fix(embedded): don't let guest-user check turn error responses into 500s (#43834)
     add 93df5bc3620 fix(semantic-layers): classify SemanticLayer/SemanticView in FAB role sets (#43783)
     add 8d0637efadf fix(semantic-layers): serve filter-value suggestions for semantic views (#43777)
     add 2aacf579323 chore(deps): bump antd from 6.6.1 to 6.6.2 in /superset-frontend (#43858)
     add a6a794864bf chore(deps-dev): bump minimizer-webpack-plugin from 5.7.0 to 5.8.0 in /superset-frontend (#43857)
     add 0e01b5fb4ca chore(deps): bump baseline-browser-mapping from 2.11.19 to 2.11.20 in /docs (#43851)
     add 173d2173aaf chore(deps-dev): bump baseline-browser-mapping from 2.11.19 to 2.11.20 in /superset-frontend (#43856)
     add 0fc410eeccd chore(deps-dev): bump @testing-library/react from 15.0.7 to 16.3.3 in /superset-frontend (#43855)
     add 34286883d33 chore(deps): bump postcss from 8.5.23 to 8.5.26 in /superset-frontend (#43854)
     add 0a5eddb18b0 chore(deps): bump morgan from 1.11.0 to 1.12.0 in /superset-websocket/utils/client-ws-app (#43850)
     add a0685173932 chore(deps-dev): bump webpack from 5.109.2 to 5.110.1 in /superset-frontend (#43853)
     add c84c7c4bdd2 chore(ci): optimize Dependabot processes (#43681)
     add e9412576b20 feat(build/websocket): upgrade to Typescript 7 + migrate ESLint to TS7-compatible `oxlint` and`tsgolint` (#43703)
     add 8f6caf4ff94 feat(build): upgrade to Typescript 7, Babel 8, Webpack CLI 7 and JSDOM 30 for `superset-embedded-sdk` (#43702)
     add f63a0e9d9c7 feat(conditional-formatting): add manual min/max color-range bounds (#43820)
     add 31a3a190373 chore(deps-dev): bump @types/node from 25.9.5 to 26.4.0 in /superset-embedded-sdk (#43881)
     add d27124e5f6b chore(deps-dev): bump webpack-cli from 7.2.2 to 7.2.3 in /superset-embedded-sdk (#43882)
     add 3b1e43be5c5 chore(deps-dev): bump css-loader from 7.1.4 to 7.1.5 in /superset-frontend (#43880)
     add bc6ff77af01 feat(ci): broaden usage of fast-startup `ubuntu-slim` runner (#43477)
     add d9b201db74c fix(explore): open version-history forks in a usable tab, not a blank one (#43830)
     add 935ee5f1a65 chore(deps): bump simplejson from 4.1.1 to 4.1.2 (#43874)
     add 592d378c0d6 chore(deps-dev): bump pandas-gbq from 0.35.1 to 0.35.2 (#43873)
     add b925246befb chore(deps): bump click from 8.4.2 to 8.5.0 (#43872)
     add b1c33e54353 chore(deps-dev): bump hdbcli from 2.29.25 to 2.29.27 (#43869)
     add 297b0455f61 chore(deps): bump nh3 from 0.3.6 to 0.3.7 (#43868)
     add db60f25ee9a chore(deps-dev): bump babel-jest from 30.4.1 to 30.5.0 in /superset-frontend (#43879)
     add e1ce6b601c0 chore(deps-dev): bump jest-environment-jsdom from 30.4.1 to 30.5.0 in /superset-frontend (#43878)
     add 635de27b259 fix(explore): prevent editable title over-truncation (#43811)
     add 99a910b81c5 fix(echarts): render Plain Timeseries legends as HTML, not canvas (#43314)
     add 0636ac4b114 fix(examples): correct chart metadata (#43810)
     add 581ef8b7c18 chore(deps): bump antd from 6.6.1 to 6.6.2 in /docs (#43852)
     add c1822666dac ci: fail when the published OpenAPI spec is stale (#43841)
     add 6956da1de5d fix(sql): close StarRocks SQL parsing and mutation-detection gaps (#43809)
     add c3109899e27 fix(dashboard): is_externally_managed still allows edits (#38584)
     add 0d025daaf7e fix(plugin-chart-table): defer search until IME composition ends (#43756)
     add ee03ee17199 test(treemap): pin border-free labels so tiles render without seams (#43890)
     add 9fb02296d85 test(dashboard): migrate tabs resize E2E to Playwright (#41434)
     add 67a417812d3 fix(reports): look up fetched report schedules by the list API id fields (#43365)
     add db0af5c610e fix(embedded): guard guest payload check against scalar control values (#43577)
     add 67605734320 fix(dashboard): show loading state on + Dashboard during the create navigation (#43683)
     add b4325e2ce34 fix(handlebars): separate CSS style block from template with a blank line (#43722)
     add ff90a60b09d fix(partition): normalize ancestor-path array names to leaf values (#43731)
     add c1ca29fe09d fix(core): render duration values instead of NaN:NaN:NaN (#43839)
     add b8cdebcaba2 chore(deps-dev): bump jest from 30.4.2 to 30.5.0 in /superset-frontend (#43877)
     add ccfaa2302a5 chore(deps): bump slack-sdk from 3.43.0 to 3.44.1 (#43871)
     add a49581dd76f chore(deps): bump msgpack from 1.2.1 to 1.2.2 (#43867)
     add fb12d4ae120 fix(importers): catch JSONDecodeError in load_configs masked_encrypted_extra merge (#43261)
     add c77efa77edf fix(sqla): normalize PostgreSQL date trunc metric units (#42095)
     add 01b8eb50a0d feat(semantic-layers): hide Samples tab and disable drill-to-detail for semantic views (#42534)
     add 724d9045c67 chore(api): regenerate the spec for ReportScheduleRestApi.report_format (#43910)
     add ed4d413d77d ci: remove unused submoduled GHA workflows (#43865)
     add 334700fc331 fix(sqla): parenthesize calculated column expressions in SELECT/GROUP BY/ORDER BY and series-limit queries (#43864)
     add 0820a0ac141 fix(sqllab): correct Run dropdown crash and caret color regression (#43849)
     add b2fd72559a7 feat(gunicorn): statsd support (#32487)
     add a3aba2a16a3 ci: show the spec diff when the staleness check fails (#43912)
     add 8fb5b8f2fbc feat: migrate Global Async Queries onto the Global Task Framework (#43407)
     add 630982e2695 fix(dashboard): resolve chart datasources across types in access checks (#43781)
     add 0ac1a6fade3 fix(versioning): keep the dashboard version-history panel inside the viewport (#43836)
     add 8963613e920 fix(versioning): match version-history search on the change author name (#43835)
     add 3b492233c71 fix(versioning): bound dashboard related history by the chart attach window (#43837)
     add 48500822471 fix(dashboard): don't 500 on inconsistent position_json (#43575)
     add 1e76fb60981 chore(deps-dev): update teradatasql requirement from >=20.0.0.66 to >=20.0.0.67 (#43925)
     add 5c4c8b831f9 chore(deps): bump cryptography from 50.0.0 to 50.0.1 (#43923)
     add 9e9a3d06ad8 chore(deps-dev): bump grpcio from 1.83.0 to 1.83.1 (#43922)
     add 974f36f94f7 chore(deps-dev): bump google-cloud-bigquery from 3.43.0 to 3.45.0 (#43926)
     add 1315f5ff6bc chore(deps): bump pydantic from 2.13.4 to 2.13.5 (#43924)
     add fd489851fc7 Merge branch 'master' into feat/migrate-frontend-to-esm

No new revisions were added by this update.

Summary of changes:
 .github/actions/comment-on-pr                      |     1 -
 .github/actions/latest-tag                         |     1 -
 .github/dependabot.yml                             |    30 +
 .github/workflows/check-openapi-spec-drift.yml     |    99 +
 .github/workflows/codeql-analysis.yml              |     4 +-
 .github/workflows/docker.yml                       |    25 +-
 .github/workflows/generate-FOSSA-report.yml        |     2 +-
 .github/workflows/github-action-validator.yml      |     4 +-
 .github/workflows/hold-label-ci-gate.yml           |     4 +-
 .github/workflows/latest-release-tag.yml           |    42 -
 .github/workflows/license-check.yml                |     2 +-
 .github/workflows/pre-commit.yml                   |     2 +-
 .github/workflows/superset-docs-deploy.yml         |     2 +-
 .github/workflows/superset-e2e.yml                 |     2 +-
 .github/workflows/superset-extensions-cli.yml      |     2 +-
 .github/workflows/superset-frontend.yml            |     4 +-
 .github/workflows/superset-playwright.yml          |     2 +-
 .../workflows/superset-python-integrationtest.yml  |     2 +-
 .github/workflows/superset-python-presto-hive.yml  |     2 +-
 .github/workflows/superset-python-unittest.yml     |     2 +-
 .../workflows/superset-translations-comment.yml    |     2 +-
 .github/workflows/superset-translations.yml        |     2 +-
 .github/workflows/superset-websocket.yml           |     6 +-
 .gitmodules                                        |     6 -
 .pre-commit-config.yaml                            |    11 +-
 Dockerfile                                         |    37 +
 RESOURCES/INTHEWILD.yaml                           |     5 +
 SECURITY.md                                        |    10 +
 UPDATING.md                                        |   188 +-
 docker-compose-non-dev.yml                         |    35 +
 docker/entrypoints/run-server.sh                   |     9 +
 docker/entrypoints/run-websocket.sh                |    44 +
 docker/superset-websocket/config.example.json      |     4 +-
 docs/admin_docs/configuration/cache.mdx            |    55 +-
 .../configuration/configuring-superset.mdx         |    49 +
 docs/admin_docs/configuration/event-logging.mdx    |    27 +-
 docs/admin_docs/configuration/mcp-server.mdx       |    54 +
 docs/admin_docs/configuration/theming.mdx          |    33 +
 docs/admin_docs/security/securing_superset.mdx     |     5 +-
 docs/developer_docs/api.mdx                        |     9 -
 docs/developer_docs/extensions/tasks.md            |   194 +-
 .../version-6.1.0/api.mdx                          |   552 +-
 docs/docs/index.mdx                                |     2 +-
 .../creating-your-first-dashboard.mdx              |     6 +
 docs/docs/using-superset/exploring-data.mdx        |    14 +
 docs/docs/using-superset/recently-archived.mdx     |    19 +
 docs/package.json                                  |    10 +-
 docs/scripts/fix-openapi-spec.py                   |     1 -
 docs/scripts/generate-api-index.mjs                |     1 -
 docs/static/img/logos/veremes.svg                  |   Bin 0 -> 5469 bytes
 docs/static/resources/openapi.json                 | 25088 ++++++-------
 docs/yarn.lock                                     |   392 +-
 helm/superset/Chart.yaml                           |     2 +-
 helm/superset/README.md                            |     2 +-
 helm/superset/values.yaml                          |     5 +-
 pyproject.toml                                     |    27 +-
 requirements/base.in                               |     2 +-
 requirements/base.txt                              |    16 +-
 requirements/development.txt                       |    22 +-
 scripts/check-type.js                              |     6 +-
 scripts/{check-custom-rules.sh => oxfmt.sh}        |    44 +-
 .../src/superset_core/semantic_layers/types.py     |     2 +
 .../src/superset_core/tasks/decorators.py          |     9 +
 superset-core/src/superset_core/tasks/models.py    |    71 +-
 .../src/superset_core/tasks/subscription.py        |   140 +
 superset-core/src/superset_core/tasks/types.py     |    87 +-
 superset-embedded-sdk/package-lock.json            |  4355 ++-
 superset-embedded-sdk/package.json                 |    20 +-
 superset-embedded-sdk/tsconfig.json                |     2 +
 superset-frontend/cypress-base/package-lock.json   |   109 +-
 .../eslint-plugin-i18n-strings/package.json        |     2 +-
 .../eslint-rules/eslint-plugin-icons/package.json  |     2 +-
 .../eslint-plugin-theme-colors/package.json        |     2 +-
 superset-frontend/eslint.config.minimal.js         |     6 +-
 superset-frontend/jest.config.js                   |     6 +-
 superset-frontend/package-lock.json                | 34949 +++++++++++--------
 superset-frontend/package.json                     |    50 +-
 .../packages/generator-superset/package.json       |     4 +-
 .../packages/superset-core/package.json            |     2 +-
 .../packages/superset-core/src/theme/types.ts      |     6 +
 .../superset-ui-chart-controls/package.json        |     2 +-
 .../superset-ui-chart-controls/src/types.ts        |    18 +
 .../src/utils/getColorFormatters.ts                |   204 +-
 .../test/utils/getColorFormatters.test.ts          |   456 +-
 .../packages/superset-ui-core/package.json         |     6 +-
 .../src/chart/components/StatefulChart.test.tsx    |   200 +-
 .../src/chart/components/StatefulChart.tsx         |    78 +-
 .../packages/superset-ui-core/src/chart/index.ts   |     4 +-
 .../src/chart/models/ChartProps.ts                 |    22 +-
 .../components/DeleteModal/DeleteModal.test.tsx    |    58 +
 .../src/components/DeleteModal/index.tsx           |    21 +-
 .../src/components/DeleteModal/types.ts            |     6 +
 .../DropdownButton/DropdownButton.test.tsx         |    14 +
 .../DynamicEditableTitle.regression.test.tsx       |   115 -
 .../DynamicEditableTitle.test.tsx                  |   184 +-
 .../src/components/DynamicEditableTitle/index.tsx  |    23 +-
 .../src/components/Select/AsyncSelect.test.tsx     |    91 +
 .../src/components/Select/AsyncSelect.tsx          |    18 +-
 .../src/components/Select/Select.test.tsx          |   370 +
 .../src/components/Select/Select.tsx               |   150 +-
 .../src/components/Select/types.ts                 |    15 +
 .../TableCollection/TableCollection.test.tsx       |    26 +
 .../src/components/TableCollection/index.tsx       |    68 +-
 .../superset-ui-core/src/number-format/index.ts    |     2 +
 .../src/query/buildQueryContext.ts                 |     4 +
 .../superset-ui-core/src/query/types/Query.ts      |     2 +
 .../src/query/types/QueryFormData.ts               |     2 +
 .../src/time-format/utils/stringifyTimeInput.ts    |    15 +-
 .../test/query/buildQueryContext.test.ts           |    13 +
 .../time-format/utils/stringifyTimeInput.test.ts   |    58 +
 .../playwright/pages/DashboardPage.ts              |    19 +
 .../tests/dashboard/dashboard-tabs.spec.ts         |   222 +
 .../tests/dashboard/dashboard-test-helpers.ts      |    19 +-
 .../plugin-chart-ag-grid-table/package.json        |     2 +-
 .../src/controlPanel.tsx                           |     9 +
 .../src/transformProps.ts                          |     2 +
 .../src/utils/DateWithFormatter.ts                 |     7 +
 .../test/controlPanel.test.ts                      |    73 +
 .../test/transformProps.test.ts                    |    57 +
 .../test/utils/DateWithFormatter.test.ts           |    60 +
 .../src/MixedTimeseries/transformProps.ts          |    95 +-
 .../src/Timeseries/EchartsTimeseries.test.tsx      |    62 +
 .../src/Timeseries/EchartsTimeseries.tsx           |   125 +-
 .../src/Timeseries/TimeseriesLegend.tsx            |   196 +
 .../src/Timeseries/constants.ts                    |     5 +
 .../src/Timeseries/transformProps.ts               |   301 +-
 .../src/Timeseries/transformers.ts                 |   345 +-
 .../plugin-chart-echarts/src/Timeseries/types.ts   |    28 +
 .../plugins/plugin-chart-echarts/src/constants.ts  |    16 +
 .../plugins/plugin-chart-echarts/src/controls.tsx  |    31 +-
 .../plugin-chart-echarts/src/utils/formatters.ts   |   150 +
 .../plugin-chart-echarts/src/utils/series.ts       |   164 +
 .../test/MixedTimeseries/transformProps.test.ts    |   199 +
 .../test/Timeseries/Bar/controlPanel.test.ts       |    86 +-
 .../test/Timeseries/Bar/transformProps.test.ts     |   240 +-
 .../test/Timeseries/EchartsTimeseries.test.tsx     |   223 +-
 .../test/Timeseries/transformProps.test.ts         |   700 +-
 .../test/Timeseries/transformers.test.ts           |   470 +-
 .../test/Treemap/transformProps.test.ts            |    44 +
 .../plugin-chart-echarts/test/utils/series.test.ts |   145 +
 .../plugins/plugin-chart-handlebars/package.json   |     2 +-
 .../plugin-chart-handlebars/src/Handlebars.tsx     |    13 +-
 .../src/components/Handlebars/HandlebarsViewer.tsx |    51 +-
 .../test/Handlebars.test.tsx                       |   194 +
 .../plugins/plugin-chart-partition/package.json    |     2 +-
 .../plugin-chart-partition/src/Partition.ts        |    29 +-
 .../plugins/plugin-chart-pivot-table/package.json  |     4 +-
 .../plugins/plugin-chart-table/package.json        |     2 +-
 .../src/DataTable/components/GlobalFilter.tsx      |    33 +-
 .../plugins/plugin-chart-table/src/TableChart.tsx  |    11 +-
 .../plugin-chart-table/src/controlPanel.tsx        |     9 +
 .../plugin-chart-table/src/transformProps.ts       |     2 +
 .../src/utils/DateWithFormatter.ts                 |     7 +
 .../plugin-chart-table/test/TableChart.test.tsx    |   277 +
 .../plugin-chart-table/test/controlPanel.test.ts   |    73 +
 .../test/utils/DateWithFormatter.test.ts           |    60 +
 superset-frontend/spec/helpers/shim.tsx            |     2 +
 .../RunQueryActionButton.test.tsx                  |    24 +
 .../components/RunQueryActionButton/index.tsx      |     6 +-
 .../SaveDatasetActionButton.test.tsx               |    17 +
 .../SaveDatasetModal/SaveDatasetModal.test.tsx     |    41 +
 .../SqlLab/components/SaveDatasetModal/index.tsx   |    16 +-
 .../SqlLab/components/SaveQuery/SaveQuery.test.tsx |    95 +-
 .../src/SqlLab/components/SaveQuery/index.tsx      |    17 +-
 .../SqlLab/components/SqlEditor/SqlEditor.test.tsx |     1 +
 .../src/SqlLab/components/SqlEditor/index.tsx      |     1 -
 superset-frontend/src/components/Chart/Chart.tsx   |     6 +
 .../src/components/Chart/ChartContainer.tsx        |    13 +-
 .../src/components/Chart/ChartRenderer.test.tsx    |    34 +
 .../src/components/Chart/ChartRenderer.tsx         |    33 +-
 .../src/components/Chart/DrillBy/DrillByModal.tsx  |    17 +-
 .../Chart/DrillDetail/DrillDetailPane.test.tsx     |    15 +-
 .../Chart/DrillDetail/DrillDetailPane.tsx          |     7 +-
 .../src/components/Chart/chartAction.ts            |   188 +-
 .../src/components/Chart/chartActions.test.ts      |   117 +-
 .../DatasourceModal/DatasourceModal.test.tsx       |    94 +
 .../Datasource/DatasourceModal/index.tsx           |     8 +-
 .../DatasourceEditor/DatasourceEditor.tsx          |   173 +-
 .../DatasourceEditor/datasetCertification.ts       |   111 +
 .../DatasourceEditorDatasetCertification.test.tsx  |   109 +
 .../DatasourceEditorMetricFormatWarning.test.tsx   |   210 +
 .../tests/datasetCertification.test.ts             |   169 +
 .../Datasource/components/Fieldset/index.tsx       |    20 +-
 .../ErrorMessage/PreformattedErrorDescription.tsx} |    25 +-
 .../src/components/ListView/ListView.tsx           |     4 +
 superset-frontend/src/components/ListView/types.ts |     2 +
 .../DashboardBuilder/DashboardBuilder.tsx          |    47 +-
 .../dashboard/components/PropertiesModal/index.tsx |    40 +
 .../sections/AsyncModeSection.test.tsx             |    48 +
 .../PropertiesModal/sections/AsyncModeSection.tsx  |    60 +
 .../sections/StylingSection.test.tsx               |   112 +
 .../PropertiesModal/sections/StylingSection.tsx    |    95 +-
 .../components/PropertiesModal/sections/index.ts   |     1 +
 .../ConfigModal/SharedStyles.test.tsx}             |    42 +-
 .../nativeFilters/ConfigModal/SharedStyles.tsx     |    12 +-
 .../FilterBar/FilterControls/FilterValue.test.tsx  |    60 +-
 .../FilterBar/FilterControls/FilterValue.tsx       |    48 +-
 .../FiltersConfigForm/DatasetSelect.tsx            |    32 +-
 .../FiltersConfigForm/FiltersConfigForm.tsx        |    48 +-
 superset-frontend/src/dashboard/types.ts           |     2 +
 .../src/dashboard/util/permissionUtils.test.ts     |     1 +
 .../src/dashboard/util/resolveCssImports.test.ts   |   210 +
 .../src/dashboard/util/resolveCssImports.ts        |   280 +
 .../src/explore/actions/saveModalActions.test.ts   |   127 +-
 .../src/explore/actions/saveModalActions.ts        |    53 +-
 .../components/DataTablesPane/DataTablesPane.tsx   |    26 +-
 .../components/ResultsPaneOnDashboard.tsx          |    26 +-
 .../DataTablesPane/components/SamplesPane.tsx      |     7 +-
 .../DataTablesPane/components/useResultsPane.tsx   |     7 +-
 .../DataTablesPane/test/DataTablesPane.test.tsx    |    18 +-
 .../test/ResultsPaneOnDashboard.test.tsx           |    61 +
 .../DataTablesPane/test/SamplesPane.test.tsx       |     3 +-
 .../test/getStaleResultsTabFallback.test.ts        |     2 +-
 .../DataTablesPane/test/useResultsPane.test.tsx    |    18 +
 .../src/explore/components/DataTablesPane/utils.ts |    54 +
 .../src/explore/components/SaveModal.test.tsx      |   122 +-
 .../src/explore/components/SaveModal.tsx           |    16 +-
 .../ConditionalFormattingControl.tsx               |     3 +
 .../FormattingPopover.tsx                          |     2 +
 .../FormattingPopoverContent.test.tsx              |   773 +-
 .../FormattingPopoverContent.tsx                   |   332 +-
 .../ConditionalFormattingControl/constants.ts      |    17 +-
 .../controls/ConditionalFormattingControl/types.ts |    12 +
 .../controls/DateFilterControl/DateFilterLabel.tsx |     3 +-
 .../tests/DateFilterLabel.test.tsx                 |    43 +-
 .../src/explore/exploreUtils/index.ts              |    18 +-
 .../features/datasets/DatasetSelectLabel/index.tsx |     9 +-
 .../features/datasets/fetchDatasourceList.test.ts  |    75 +
 .../src/features/datasets/fetchDatasourceList.ts   |   113 +
 superset-frontend/src/features/datasets/types.ts   |     3 +
 .../src/features/home/DashboardTable.test.tsx      |     8 +
 .../src/features/home/DashboardTable.tsx           |     7 +
 .../src/features/home/LanguagePicker.test.tsx      |    10 +
 .../src/features/home/LanguagePicker.tsx           |     2 +-
 superset-frontend/src/features/home/Menu.test.tsx  |    14 +
 superset-frontend/src/features/home/Menu.tsx       |    10 +
 .../src/features/home/RightMenu.test.tsx           |    28 +
 superset-frontend/src/features/home/RightMenu.tsx  |    10 +
 .../HeaderReportDropdown/index.test.tsx            |    31 +
 .../reports/ReportModal/ReportModal.test.tsx       |   166 +
 .../src/features/reports/ReportModal/actions.ts    |     2 +
 .../src/features/reports/ReportModal/index.tsx     |    16 +-
 .../features/reports/ReportModal/reducer.test.ts   |    82 +-
 .../src/features/reports/ReportModal/reducer.ts    |    12 +-
 superset-frontend/src/features/reports/types.ts    |     2 +
 .../src/features/tasks/LiveDuration.test.tsx       |   100 +
 .../src/features/tasks/LiveDuration.tsx            |    57 +
 .../tasks/TaskDependenciesPopover.test.tsx         |    83 +
 .../src/features/tasks/TaskDependenciesPopover.tsx |   141 +
 .../src/features/tasks/TaskPayloadPopover.test.tsx |    74 +
 .../src/features/tasks/TaskPayloadPopover.tsx      |    45 +-
 .../src/features/tasks/timeUtils.test.ts           |    12 +-
 superset-frontend/src/features/tasks/timeUtils.ts  |    59 +-
 superset-frontend/src/features/tasks/types.ts      |   104 +-
 .../versionHistory/ChartVersionPreview.test.tsx    |    21 +-
 .../versionHistory/ChartVersionPreview.tsx         |    17 +-
 .../DashboardVersionHistory.test.tsx               |    55 +-
 .../features/versionHistory/normalization.test.ts  |    50 -
 .../src/features/versionHistory/normalization.ts   |    45 +-
 .../components/Select/SelectFilterPlugin.test.tsx  |   101 +
 .../components/Select/SelectFilterPlugin.tsx       |     1 +
 superset-frontend/src/hooks/useTabId.test.ts       |   153 +
 superset-frontend/src/hooks/useTabId.ts            |   166 +-
 .../src/hooks/useThemeMenuItems.test.tsx           |    10 +
 .../src/middleware/asyncEvent.test.ts              |  1316 +-
 superset-frontend/src/middleware/asyncEvent.ts     |   810 +-
 superset-frontend/src/middleware/realtime.test.ts  |   390 +
 superset-frontend/src/middleware/realtime.ts       |   451 +
 .../ArchivedList/ArchivedDatasetPurgeModal.tsx     |   216 +
 .../src/pages/ArchivedList/ArchivedList.test.tsx   |   200 +-
 superset-frontend/src/pages/ArchivedList/index.tsx |   230 +-
 superset-frontend/src/pages/ArchivedList/types.ts  |    38 +
 .../src/pages/ChartCreation/ChartCreation.test.tsx |   334 +-
 .../src/pages/ChartCreation/index.tsx              |   134 +-
 .../pages/ChartList/ChartList.listview.test.tsx    |    76 +-
 superset-frontend/src/pages/ChartList/index.tsx    |    28 +-
 .../DashboardList/DashboardList.behavior.test.tsx  |    30 +
 .../src/pages/DashboardList/index.tsx              |     8 +
 .../src/pages/TaskList/TaskList.test.tsx           |    24 +-
 superset-frontend/src/pages/TaskList/index.tsx     |   217 +-
 .../src/pages/ThemeList/ThemeList.test.tsx         |   227 +
 superset-frontend/src/pages/ThemeList/index.tsx    |    67 +-
 superset-frontend/src/setup/setupFormatters.ts     |     2 +-
 superset-frontend/src/theme/ThemeController.ts     |   121 +-
 superset-frontend/src/theme/ThemeProvider.tsx      |     7 +
 .../src/theme/tests/ThemeController.test.ts        |   332 +
 .../src/theme/tests/ThemeProvider.test.tsx         |    15 +
 superset-frontend/src/types/Dashboard.ts           |     1 +
 superset-frontend/src/types/bootstrapTypes.ts      |     2 +-
 superset-frontend/src/utils/asyncMode.test.ts      |    91 +
 superset-frontend/src/utils/asyncMode.ts           |    69 +
 .../src/utils/navigationUtils.test.ts              |   155 +
 superset-frontend/src/utils/navigationUtils.ts     |    31 +-
 superset-frontend/src/views/CRUD/hooks.test.tsx    |   334 +
 superset-frontend/src/views/CRUD/hooks.ts          |   129 +
 superset-websocket/.oxfmtrc.json                   |     1 -
 superset-websocket/Dockerfile                      |     8 +-
 superset-websocket/README.md                       |   272 +-
 superset-websocket/config.example.json             |     4 +-
 superset-websocket/config.test.json                |     4 +-
 superset-websocket/eslint.config.mjs               |    50 -
 {docs => superset-websocket}/oxlint.json           |    41 +-
 superset-websocket/package-lock.json               |  2561 +-
 superset-websocket/package.json                    |    28 +-
 superset-websocket/spec/config.test.ts             |    30 +
 superset-websocket/spec/index.test.ts              |  1155 +-
 superset-websocket/src/config.ts                   |    76 +-
 superset-websocket/src/index.ts                    |   778 +-
 superset-websocket/utils/README.md                 |     6 +-
 superset-websocket/utils/client-ws-app/app.js      |    18 +-
 superset-websocket/utils/client-ws-app/bin/www     |    20 +-
 .../utils/client-ws-app/package-lock.json          |    76 +-
 .../utils/client-ws-app/package.json               |     3 +-
 .../utils/client-ws-app/public/javascripts/app.js  |     2 +-
 .../utils/client-ws-app/routes/index.js            |    26 +-
 superset-websocket/utils/loadtest.js               |    74 +-
 superset/async_events/api.py                       |   179 -
 superset/async_events/async_query_manager.py       |   468 -
 .../async_events/async_query_manager_factory.py    |    35 -
 superset/charts/api.py                             |   146 +-
 superset/charts/client_processing.py               |   590 +-
 superset/charts/data/api.py                        |   177 +-
 superset/charts/data/query_context_cache_loader.py |    30 -
 superset/charts/schemas.py                         |   141 +-
 superset/cli/update.py                             |    17 +-
 superset/commands/chart/create.py                  |    14 +-
 .../chart/data/create_async_job_command.py         |    43 -
 superset/commands/chart/data/get_data_command.py   |     4 +
 superset/commands/chart/export.py                  |     8 +-
 superset/commands/chart/importers/v1/utils.py      |     8 +-
 superset/commands/chart/update.py                  |    41 +-
 superset/commands/dashboard/export.py              |   106 +-
 superset/commands/dashboard/importers/v1/utils.py  |     8 +-
 superset/commands/dashboard/update.py              |    14 +-
 superset/commands/dataset/create.py                |    46 +-
 .../commands/deletion_retention/force_purge.py     |     3 +
 .../commands/deletion_retention/purge_cascade.py   |    18 +-
 .../commands/deletion_retention/purge_impact.py    |   128 +
 .../commands/deletion_retention/purge_policy.py    |    20 +-
 superset/commands/distributed_lock/acquire.py      |    32 +-
 superset/commands/distributed_lock/base.py         |    17 +-
 superset/commands/distributed_lock/release.py      |    76 +-
 superset/commands/export/models.py                 |    15 +-
 superset/commands/importers/v1/utils.py            |    29 +
 superset/commands/purge.py                         |   115 +-
 superset/commands/semantic_layer/update.py         |    44 +
 superset/commands/tag/delete.py                    |    28 +-
 superset/commands/tag/exceptions.py                |    12 +
 superset/commands/tasks/cancel.py                  |   117 +-
 superset/commands/tasks/exceptions.py              |     7 +
 superset/commands/tasks/internal_update.py         |    43 +-
 superset/commands/tasks/reap.py                    |   187 +
 superset/commands/tasks/submit.py                  |   292 +-
 superset/common/chart_data.py                      |     1 +
 superset/common/query_context.py                   |    35 +-
 superset/common/query_context_factory.py           |     4 +
 superset/common/query_context_processor.py         |   213 +-
 superset/common/query_object.py                    |    12 +-
 superset/common/query_object_factory.py            |    13 +-
 superset/common/query_serialization.py             |   131 +
 superset/common/tabular_query.py                   |   436 +
 superset/common/utils/query_cache_manager.py       |    16 +-
 superset/config.py                                 |   215 +-
 superset/connectors/sqla/models.py                 |    60 +-
 superset/connectors/sqla/utils.py                  |    15 +-
 superset/constants.py                              |    22 +-
 superset/coordination/__init__.py                  |    37 +
 superset/coordination/base.py                      |   567 +
 .../cache_backend.py                               |   267 +-
 .../rank.py => coordination/exceptions.py}         |    28 +-
 superset/coordination/types.py                     |    85 +
 superset/daos/base.py                              |    43 +-
 superset/daos/database.py                          |     3 +-
 superset/daos/datasource.py                        |     6 +-
 superset/daos/key_value.py                         |     9 +-
 superset/daos/semantic_layer.py                    |     6 +-
 superset/daos/tasks.py                             |   521 +-
 superset/dashboards/api.py                         |     4 +
 superset/dashboards/filters.py                     |    50 +-
 superset/dashboards/schemas.py                     |    13 +-
 superset/databases/filters.py                      |     2 +-
 superset/databases/schemas.py                      |     2 +-
 superset/datasets/api.py                           |   157 +-
 superset/datasets/schemas.py                       |    54 +-
 superset/datasource/api.py                         |   360 +-
 superset/datasource/schemas.py                     |   119 +-
 superset/db_engine_specs/__init__.py               |     7 +-
 superset/db_engine_specs/base.py                   |    48 +-
 superset/db_engine_specs/gsheets.py                |    17 +-
 superset/db_engine_specs/postgres.py               |    16 +-
 superset/db_engine_specs/snowflake.py              |    27 +-
 superset/distributed_lock/__init__.py              |     7 +-
 superset/examples/birth_names.py                   |    55 +-
 .../datasets/project_management.yaml               |     2 +-
 .../charts/Quarterly_Sales_By_Product_Line.yaml    |     2 +-
 .../charts/Revenue_by_Deal_Size.yaml               |     2 +-
 .../charts/Messages_per_Channel.yaml               |     2 +-
 .../usa_births_names/charts/Genders_by_State.yaml  |     2 +-
 .../charts/Top_10_Boy_Name_Share.yaml              |     4 +-
 .../charts/Top_10_Girl_Name_Share.yaml             |     4 +-
 .../examples/usa_births_names/charts/Trends.yaml   |     2 +-
 ...op_10_Games_Proportion_of_Sales_in_Markets.yaml |     2 +-
 .../Total_Sales_per_Market_Grouped_by_Genre.yaml   |     2 +-
 superset/examples/world_bank.py                    |    25 +-
 .../examples/world_health/charts/Growth_Rate.yaml  |     2 +-
 .../world_health/charts/World_s_Pop_Growth.yaml    |     2 +-
 superset/explorables/base.py                       |    10 +
 superset/extensions/__init__.py                    |     6 -
 superset/initialization/__init__.py                |    58 +-
 superset/jinja_context.py                          |     4 +-
 superset/mcp_service/dashboard/schemas.py          |     9 +
 .../dashboard/tool/get_dashboard_info.py           |    32 +-
 .../dataset/tool/create_virtual_dataset.py         |     2 +
 superset/mcp_service/dataset/tool/query_dataset.py |    89 +-
 .../mcp_service/semantic_layer/tool/get_table.py   |    91 +-
 superset/mcp_service/utils/query_utils.py          |    43 +-
 ..._7e2c9a4f1b83_create_task_dependencies_table.py |   195 +
 ...31c5d726ab_index_dataset_dependency_lookups.py} |    40 +-
 ...retire_semantic_layer_views_connections_pvms.py |   114 +
 superset/models/core.py                            |     9 +-
 superset/models/dashboard.py                       |   129 +-
 superset/models/helpers.py                         |   238 +-
 superset/models/slice.py                           |   130 +-
 superset/models/sql_lab.py                         |    25 +-
 superset/models/task_dependencies.py               |    69 +
 superset/models/task_subscribers.py                |    38 +-
 superset/models/tasks.py                           |   139 +-
 superset/reports/api.py                            |    15 +-
 superset/security/manager.py                       |   173 +-
 superset/semantic_layers/api.py                    |    61 +-
 superset/semantic_layers/mapper.py                 |    55 +-
 superset/semantic_layers/models.py                 |   173 +-
 superset/sql/dialects/__init__.py                  |     2 +
 superset/sql/dialects/postgres.py                  |    79 +
 superset/sql/dialects/starrocks.py                 |   813 +
 superset/sql/execution/celery_task.py              |    15 +-
 superset/sql/execution/executor.py                 |    90 +-
 superset/sql/metric_normalization.py               |   181 +
 superset/sql/parse.py                              |   126 +-
 superset/sql_lab.py                                |     2 +-
 superset/tasks/api.py                              |   110 +-
 superset/tasks/async_queries.py                    |   499 +-
 superset/tasks/context.py                          |   394 +-
 superset/tasks/decorators.py                       |   326 +-
 superset/tasks/dependencies.py                     |   126 +
 superset/tasks/filters.py                          |    20 +-
 superset/tasks/guest.py                            |    86 +
 superset/tasks/heartbeat.py                        |   167 +
 superset/tasks/locks.py                            |    84 +-
 superset/tasks/manager.py                          |   895 +-
 superset/tasks/query_cancel.py                     |   165 +
 superset/tasks/registry.py                         |    36 +-
 superset/tasks/scheduler.py                        |   297 +-
 superset/tasks/schemas.py                          |   161 +-
 superset/tasks/subscription.py                     |    84 +
 superset/tasks/utils.py                            |   197 +-
 superset/themes/api.py                             |    53 +
 superset/translations/messages.pot                 |    33 +
 superset/translations/sl/LC_MESSAGES/messages.po   |  5110 +--
 superset/utils/cache.py                            |    30 +-
 superset/utils/cache_manager.py                    |     4 +-
 superset/utils/error_sanitization.py               |    22 +-
 superset/utils/excel.py                            |    28 +-
 superset/utils/feature_flag_manager.py             |    64 +-
 superset/utils/oauth2.py                           |   193 +-
 superset/utils/pandas_postprocessing/__init__.py   |    10 +
 superset/utils/pandas_postprocessing/pivot.py      |    17 +-
 superset/utils/screenshot_utils.py                 |   331 +-
 superset/utils/slack.py                            |    28 +-
 superset/versioning/activity/orchestrator.py       |    19 +-
 superset/versioning/activity/queries.py            |    83 +-
 superset/views/base.py                             |    15 +-
 superset/views/datasource/views.py                 |    96 +-
 .../{mcp_service/theme => websocket}/__init__.py   |     9 +-
 superset/websocket/channel.py                      |   234 +
 .../utils/__init__.py => websocket/permissions.py} |    23 +-
 tests/integration_tests/async_events/api_tests.py  |   210 -
 tests/integration_tests/charts/api_tests.py        |   157 +
 tests/integration_tests/charts/commands_tests.py   |    88 +-
 tests/integration_tests/charts/data/api_tests.py   |   131 +-
 tests/integration_tests/dashboards/api_tests.py    |     2 +
 .../datasets/soft_delete_tests.py                  |   161 +-
 tests/integration_tests/datasource/api_tests.py    |   151 +
 tests/integration_tests/datasource_tests.py        |    10 +-
 .../db_engine_specs/base_engine_spec_tests.py      |     7 +-
 .../deletion_retention/force_purge_tests.py        |    33 +
 tests/integration_tests/query_context_tests.py     |    73 +
 tests/integration_tests/reports/api_tests.py       |     1 +
 tests/integration_tests/sqla_models_tests.py       |    59 +-
 tests/integration_tests/superset_test_config.py    |     1 -
 tests/integration_tests/tasks/api_tests.py         |   230 +
 .../integration_tests/tasks/async_queries_tests.py |   155 -
 .../tasks/commands/test_cancel.py                  |   174 +-
 .../integration_tests/tasks/commands/test_reap.py  |   170 +
 .../tasks/commands/test_submit.py                  |    54 +
 .../integration_tests/tasks/test_sync_join_wait.py |     6 +-
 .../themes/test_theme_api_permissions.py           |    55 +
 tests/unit_tests/async_events/__init__.py          |    16 -
 .../async_events/async_query_manager_tests.py      |   535 -
 .../charts/data/test_empty_query_context.py        |     7 +
 tests/unit_tests/charts/test_chart_data_api.py     |   183 +-
 .../charts/test_chart_list_datasource.py           |   144 +
 tests/unit_tests/charts/test_client_processing.py  |   609 +-
 tests/unit_tests/charts/test_schemas.py            |    53 +
 .../test_dynamodb.py => cli/update_test.py}        |    38 +-
 .../chart/create_async_job_command_test.py         |    51 -
 tests/unit_tests/commands/chart/create_test.py     |   154 +
 tests/unit_tests/commands/chart/update_test.py     |   104 +-
 tests/unit_tests/commands/dashboard/export_test.py |   287 +-
 tests/unit_tests/commands/dashboard/update_test.py |    82 +
 tests/unit_tests/commands/dataset/test_create.py   |   167 +-
 .../deletion_retention/test_purge_impact.py        |    99 +
 .../unit_tests/commands/extra_asset_fields_test.py |    96 +
 .../unit_tests/commands/importers/v1/utils_test.py |   102 +
 .../commands/semantic_layer/update_test.py         |   110 +
 .../unit_tests/commands/tasks}/__init__.py         |     0
 .../commands/tasks/test_internal_update.py         |    65 +
 .../unit_tests/common/test_async_min_cache_ttl.py  |    67 +
 .../common/test_query_context_processor.py         |   186 +-
 .../common/test_query_context_processor_timing.py  |     7 +-
 .../unit_tests/common/test_query_object_factory.py |    23 +
 .../unit_tests/common/test_query_serialization.py  |   193 +
 tests/unit_tests/common/test_tabular_query.py      |   426 +
 tests/unit_tests/connectors/sqla/models_test.py    |   155 +-
 tests/unit_tests/connectors/sqla/test_utils.py     |    33 +
 tests/unit_tests/connectors/sqla/utils_test.py     |    48 +-
 .../unit_tests/coordination}/__init__.py           |     0
 .../test_cache_backend.py                          |    89 +-
 tests/unit_tests/coordination/test_service.py      |   458 +
 tests/unit_tests/daos/test_tasks.py                |   424 +
 tests/unit_tests/dashboards/api_test.py            |    79 +
 .../dashboards/semantic_view_access_test.py        |   645 +
 tests/unit_tests/datasets/api_tests.py             |   217 +
 tests/unit_tests/datasource/dao_tests.py           |    43 +
 tests/unit_tests/datasource/test_query_api.py      |   269 +
 tests/unit_tests/db_engine_specs/test_base.py      |    59 +-
 tests/unit_tests/db_engine_specs/test_gsheets.py   |    31 +
 tests/unit_tests/db_engine_specs/test_init.py      |    35 +
 tests/unit_tests/db_engine_specs/test_postgres.py  |    66 +
 tests/unit_tests/db_engine_specs/test_presto.py    |   888 +
 tests/unit_tests/db_engine_specs/test_redshift.py  |    32 +
 tests/unit_tests/db_engine_specs/test_snowflake.py |    39 +
 .../distributed_lock/distributed_lock_tests.py     |   243 +-
 tests/unit_tests/feature_flag_test.py              |    82 +
 .../check_async_query_secret_test.py               |   140 -
 .../initialization/check_encryption_engine_test.py |     2 +-
 .../initialization/check_websocket_secret_test.py  |    68 +
 tests/unit_tests/initialization_test.py            |     1 -
 tests/unit_tests/jinja_context_test.py             |    31 +-
 .../dashboard/test_dashboard_schemas.py            |    11 +
 .../dashboard/tool/test_dashboard_tools.py         |   166 +
 tests/unit_tests/models/core_test.py               |    23 +
 tests/unit_tests/models/dashboard_test.py          |   571 +
 tests/unit_tests/models/helpers_test.py            |   674 +-
 tests/unit_tests/models/slice_test.py              |    84 +-
 tests/unit_tests/queries/query_object_test.py      |    17 +
 tests/unit_tests/reports/api_test.py               |    38 +-
 tests/unit_tests/security/manager_test.py          |   262 +
 .../test_realtime_notification_permissions.py      |    61 +
 tests/unit_tests/semantic_layers/api_test.py       |   251 +-
 tests/unit_tests/semantic_layers/mapper_test.py    |    51 +-
 tests/unit_tests/semantic_layers/models_test.py    |   400 +
 .../semantic_layers/values_endpoint_test.py        |   127 +
 tests/unit_tests/sql/metric_normalization_tests.py |   255 +
 tests/unit_tests/sql/parse_tests.py                |   507 +
 tests/unit_tests/subjects/test_raise_for_access.py |    22 +-
 tests/unit_tests/tags/commands/delete_test.py      |   104 +
 tests/unit_tests/tasks/test_async_queries.py       |   661 +-
 tests/unit_tests/tasks/test_context.py             |    92 +
 tests/unit_tests/tasks/test_decorators.py          |   126 +-
 tests/unit_tests/tasks/test_dependencies.py        |   499 +
 tests/unit_tests/tasks/test_filters.py             |    61 +
 tests/unit_tests/tasks/test_guest.py               |   127 +
 tests/unit_tests/tasks/test_handlers.py            |   161 +-
 tests/unit_tests/tasks/test_heartbeat.py           |   157 +
 tests/unit_tests/tasks/test_locks.py               |   111 +
 tests/unit_tests/tasks/test_manager.py             |   881 +-
 tests/unit_tests/tasks/test_models.py              |    73 +
 tests/unit_tests/tasks/test_query_cancel.py        |   207 +
 tests/unit_tests/tasks/test_reap.py                |   193 +
 tests/unit_tests/tasks/test_scheduler_executor.py  |   185 +
 tests/unit_tests/tasks/test_schemas.py             |    89 +-
 tests/unit_tests/tasks/test_submit.py              |   126 +
 tests/unit_tests/tasks/test_subscription.py        |    68 +
 tests/unit_tests/tasks/test_timeout.py             |   335 +-
 tests/unit_tests/tasks/test_utils.py               |    19 +-
 tests/unit_tests/utils/cache_test.py               |    45 +
 tests/unit_tests/utils/oauth2_tests.py             |   257 +
 tests/unit_tests/utils/slack_test.py               |    56 +
 tests/unit_tests/utils/test_error_sanitization.py  |    17 +
 tests/unit_tests/utils/test_screenshot_utils.py    |   468 +-
 tests/unit_tests/versioning/test_activity.py       |   127 +
 tests/unit_tests/views/datasource/views_test.py    |   157 +-
 tests/unit_tests/views/test_base.py                |    51 +
 tests/unit_tests/views/test_error_handling.py      |    56 +
 .../unit_tests/websocket}/__init__.py              |     0
 tests/unit_tests/websocket/test_channel.py         |   319 +
 597 files changed, 86460 insertions(+), 44926 deletions(-)
 delete mode 160000 .github/actions/comment-on-pr
 delete mode 160000 .github/actions/latest-tag
 create mode 100644 .github/workflows/check-openapi-spec-drift.yml
 delete mode 100644 .github/workflows/latest-release-tag.yml
 create mode 100755 docker/entrypoints/run-websocket.sh
 create mode 100644 docs/static/img/logos/veremes.svg
 copy scripts/{check-custom-rules.sh => oxfmt.sh} (55%)
 create mode 100644 superset-core/src/superset_core/tasks/subscription.py
 delete mode 100644 superset-frontend/packages/superset-ui-core/src/components/DynamicEditableTitle/DynamicEditableTitle.regression.test.tsx
 create mode 100644 superset-frontend/packages/superset-ui-core/test/time-format/utils/stringifyTimeInput.test.ts
 create mode 100644 superset-frontend/playwright/tests/dashboard/dashboard-tabs.spec.ts
 create mode 100644 superset-frontend/plugins/plugin-chart-ag-grid-table/test/utils/DateWithFormatter.test.ts
 create mode 100644 superset-frontend/plugins/plugin-chart-echarts/src/Timeseries/TimeseriesLegend.tsx
 create mode 100644 superset-frontend/plugins/plugin-chart-handlebars/test/Handlebars.test.tsx
 create mode 100644 superset-frontend/plugins/plugin-chart-table/test/utils/DateWithFormatter.test.ts
 create mode 100644 superset-frontend/src/components/Datasource/components/DatasourceEditor/datasetCertification.ts
 create mode 100644 superset-frontend/src/components/Datasource/components/DatasourceEditor/tests/DatasourceEditorDatasetCertification.test.tsx
 create mode 100644 superset-frontend/src/components/Datasource/components/DatasourceEditor/tests/DatasourceEditorMetricFormatWarning.test.tsx
 create mode 100644 superset-frontend/src/components/Datasource/components/DatasourceEditor/tests/datasetCertification.test.ts
 copy superset-frontend/{packages/superset-ui-core/src/components/Badge/index.tsx => src/components/ErrorMessage/PreformattedErrorDescription.tsx} (65%)
 create mode 100644 superset-frontend/src/dashboard/components/PropertiesModal/sections/AsyncModeSection.test.tsx
 create mode 100644 superset-frontend/src/dashboard/components/PropertiesModal/sections/AsyncModeSection.tsx
 copy superset-frontend/src/dashboard/components/{resizable/ResizableContainer.test.tsx => nativeFilters/ConfigModal/SharedStyles.test.tsx} (54%)
 create mode 100644 superset-frontend/src/dashboard/util/resolveCssImports.test.ts
 create mode 100644 superset-frontend/src/dashboard/util/resolveCssImports.ts
 create mode 100644 superset-frontend/src/explore/components/DataTablesPane/utils.ts
 create mode 100644 superset-frontend/src/features/datasets/fetchDatasourceList.test.ts
 create mode 100644 superset-frontend/src/features/datasets/fetchDatasourceList.ts
 create mode 100644 superset-frontend/src/features/tasks/LiveDuration.test.tsx
 create mode 100644 superset-frontend/src/features/tasks/LiveDuration.tsx
 create mode 100644 superset-frontend/src/features/tasks/TaskDependenciesPopover.test.tsx
 create mode 100644 superset-frontend/src/features/tasks/TaskDependenciesPopover.tsx
 create mode 100644 superset-frontend/src/features/tasks/TaskPayloadPopover.test.tsx
 create mode 100644 superset-frontend/src/hooks/useTabId.test.ts
 create mode 100644 superset-frontend/src/middleware/realtime.test.ts
 create mode 100644 superset-frontend/src/middleware/realtime.ts
 create mode 100644 superset-frontend/src/pages/ArchivedList/ArchivedDatasetPurgeModal.tsx
 create mode 100644 superset-frontend/src/utils/asyncMode.test.ts
 create mode 100644 superset-frontend/src/utils/asyncMode.ts
 delete mode 100644 superset-websocket/eslint.config.mjs
 copy {docs => superset-websocket}/oxlint.json (89%)
 delete mode 100644 superset/async_events/api.py
 delete mode 100644 superset/async_events/async_query_manager.py
 delete mode 100644 superset/async_events/async_query_manager_factory.py
 delete mode 100644 superset/charts/data/query_context_cache_loader.py
 delete mode 100644 superset/commands/chart/data/create_async_job_command.py
 create mode 100644 superset/commands/deletion_retention/purge_impact.py
 create mode 100644 superset/commands/tasks/reap.py
 create mode 100644 superset/common/query_serialization.py
 create mode 100644 superset/common/tabular_query.py
 create mode 100644 superset/coordination/__init__.py
 create mode 100644 superset/coordination/base.py
 rename superset/{async_events => coordination}/cache_backend.py (75%)
 copy superset/{utils/pandas_postprocessing/rank.py => coordination/exceptions.py} (58%)
 create mode 100644 superset/coordination/types.py
 create mode 100644 superset/migrations/versions/2026-08-21_12-00_7e2c9a4f1b83_create_task_dependencies_table.py
 copy superset/migrations/versions/{2024-05-02_13-40_3dfd0e78650e_add_query_sql_editor_id_index.py => 2026-08-25_18-00_8f31c5d726ab_index_dataset_dependency_lookups.py} (52%)
 create mode 100644 superset/migrations/versions/2026-09-03_00-00_b3e9c1a75d24_retire_semantic_layer_views_connections_pvms.py
 create mode 100644 superset/models/task_dependencies.py
 create mode 100644 superset/sql/dialects/postgres.py
 create mode 100644 superset/sql/dialects/starrocks.py
 create mode 100644 superset/sql/metric_normalization.py
 create mode 100644 superset/tasks/dependencies.py
 create mode 100644 superset/tasks/guest.py
 create mode 100644 superset/tasks/heartbeat.py
 create mode 100644 superset/tasks/query_cancel.py
 create mode 100644 superset/tasks/subscription.py
 copy superset/{mcp_service/theme => websocket}/__init__.py (74%)
 create mode 100644 superset/websocket/channel.py
 copy superset/{mcp_service/utils/__init__.py => websocket/permissions.py} (59%)
 delete mode 100644 tests/integration_tests/async_events/api_tests.py
 delete mode 100644 tests/integration_tests/tasks/async_queries_tests.py
 create mode 100644 tests/integration_tests/tasks/commands/test_reap.py
 delete mode 100644 tests/unit_tests/async_events/__init__.py
 delete mode 100644 tests/unit_tests/async_events/async_query_manager_tests.py
 create mode 100644 tests/unit_tests/charts/test_chart_list_datasource.py
 copy tests/unit_tests/{db_engine_specs/test_dynamodb.py => cli/update_test.py} (52%)
 delete mode 100644 tests/unit_tests/commands/chart/create_async_job_command_test.py
 create mode 100644 tests/unit_tests/commands/chart/create_test.py
 create mode 100644 tests/unit_tests/commands/dashboard/update_test.py
 create mode 100644 tests/unit_tests/commands/deletion_retention/test_purge_impact.py
 create mode 100644 tests/unit_tests/commands/extra_asset_fields_test.py
 rename {superset/async_events => tests/unit_tests/commands/tasks}/__init__.py (100%)
 create mode 100644 tests/unit_tests/commands/tasks/test_internal_update.py
 create mode 100644 tests/unit_tests/common/test_async_min_cache_ttl.py
 create mode 100644 tests/unit_tests/common/test_query_serialization.py
 create mode 100644 tests/unit_tests/common/test_tabular_query.py
 copy {scripts => tests/unit_tests/coordination}/__init__.py (100%)
 rename tests/unit_tests/{async_events => coordination}/test_cache_backend.py (56%)
 create mode 100644 tests/unit_tests/coordination/test_service.py
 create mode 100644 tests/unit_tests/dashboards/semantic_view_access_test.py
 create mode 100644 tests/unit_tests/datasource/test_query_api.py
 delete mode 100644 tests/unit_tests/initialization/check_async_query_secret_test.py
 create mode 100644 tests/unit_tests/initialization/check_websocket_secret_test.py
 create mode 100644 tests/unit_tests/security/test_realtime_notification_permissions.py
 create mode 100644 tests/unit_tests/semantic_layers/values_endpoint_test.py
 create mode 100644 tests/unit_tests/sql/metric_normalization_tests.py
 create mode 100644 tests/unit_tests/tasks/test_context.py
 create mode 100644 tests/unit_tests/tasks/test_dependencies.py
 create mode 100644 tests/unit_tests/tasks/test_guest.py
 create mode 100644 tests/unit_tests/tasks/test_heartbeat.py
 create mode 100644 tests/unit_tests/tasks/test_locks.py
 create mode 100644 tests/unit_tests/tasks/test_models.py
 create mode 100644 tests/unit_tests/tasks/test_query_cancel.py
 create mode 100644 tests/unit_tests/tasks/test_reap.py
 create mode 100644 tests/unit_tests/tasks/test_scheduler_executor.py
 create mode 100644 tests/unit_tests/tasks/test_submit.py
 create mode 100644 tests/unit_tests/tasks/test_subscription.py
 copy {scripts => tests/unit_tests/websocket}/__init__.py (100%)
 create mode 100644 tests/unit_tests/websocket/test_channel.py