This is an automated email from the ASF dual-hosted git repository.
amaannawab923 pushed a change to branch feat/embedded-chart
in repository https://gitbox.apache.org/repos/asf/superset.git
discard a658e8be090 fix(embedded): chain the migration onto the current master
head
discard 6a23050f04a fix(embedded): register the embedded chart response schema
discard ab0a0b60bfb fix(embedded): resolve the guest user before the chart
lookup
discard 1f772b30596 fix(embedded): document the embedded PUT and expect the
new chart permission
discard ccc63158903 fix(embedded): declare embedded_charts in the chart purge
policy
discard cc9b1d8c28d fix(embedded): type the chart's datasource as Datasource
discard 5bc5f5f19c3 chore(embedded): apply lint and formatting fixes
discard 66b884f1996 fix(embedded): pad the embedded chart and size it to its
container
discard 63d6c3b1514 test(embedded): cover the fabricated hydrate payload
discard 34f38ead763 fix(embedded): don't serve the mobile experience inside an
iframe
discard 35ebc7d3228 fix(embedded): restore fullscreen and image exports for
embedded charts
discard 73f03c1b3e6 fix(embedded): don't 500 on a malformed Referer
discard 39fd3ddd04f fix(embedded): say 'chart' in the embed modal when
embedding a chart
discard fa28a975832 feat(embedded): complete the standalone chart render path
discard 7909ddb7755 feat(embedded): allow guest tokens scoped to a chart
discard 5f439b18f38 fix(embedded): correct import paths for the 6.x module
layout
discard 4c80658354b feat(embedded): expose Embed chart from the chart menu
discard 8609fab3c6b feat(embedded): render an embedded chart via fabricated
dashboard state
discard a4be5ffa0cd feat(embedded): resolve a uuid as either an embedded
dashboard or chart
discard 3620c4cde5f feat(embedded): add EmbeddedChartDAO, schemas and chart
embedded endpoints
discard d9f3ed34ddc feat(embedded): add EmbeddedChart model and migration
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 1358543827f fix(sqllab): preserve ClickHouse LIMIT BY when applying
the row limit (#43578)
add fe1b368bcd8 feat: add dashed line support for derived series
(timeseries comparison) on MixedTimeseries chart (#34794)
add 18d277c096d ci(playwright): make embedded and app-root E2E coverage
required (#43919)
add f3896ccf209 fix(explore): say when filter-value suggestions could not
be loaded (#43779)
add c03f3441bd5 feat(mcp): gauge chart type plugin (#43568)
add 87f138cc80a docs(mcp): add theme management tools to AI/MCP tools
reference (#43899)
add df3abe474c4 docs(theming): document new component sizing tokens and
HIDE_NAVBAR_LOGO (#43639)
add 7d09490bb82 fix(security): grant SQL Lab query authors an explore
access bypass (#39296) (#42590)
add 0db9ca74012 chore(deps): bump @ant-design/icons from 6.3.2 to 6.3.3 in
/docs (#43951)
add 7c9c32651c7 chore(deps): bump react-error-boundary from 6.1.3 to 6.1.4
in /superset-frontend (#43959)
add 07052752b68 chore(deps-dev): bump tsx from 4.23.12 to 4.23.13 in
/superset-frontend (#43958)
add b8fb5a268c9 chore(deps): bump zod from 4.4.3 to 4.5.4 in
/superset-frontend (#43957)
add e5e6d748195 chore(deps-dev): bump webpack from 5.110.1 to 5.110.2 in
/superset-frontend (#43956)
add a5377541c92 chore(deps): bump zizmorcore/zizmor-action from 0.6.2 to
0.6.3 (#43954)
add 06913244de4 chore(deps-dev): bump webpack from 5.110.1 to 5.110.2 in
/docs (#43952)
add 4eff13b81e9 chore(deps-dev): bump webpack from 5.110.0 to 5.110.2 in
/superset-embedded-sdk (#43953)
add 92bd2ba0572 chore(deps): bump @ant-design/icons from 6.3.2 to 6.3.3 in
/superset-frontend (#43955)
add 53070fa4c04 fix(dashboard): resolve metric Label in Chart Data (View
as table) results grid (#43719)
add 4440887dc2b fix(security): use self-repository syntax for
setup-backend action ref (#43968)
add 233f6379ae5 fix(ci): use self-repository syntax for supersetbot setup
in tag-release (#43965)
add d22069a7af3 fix(security): use GitHub self-repository syntax for local
action refs (#43969)
add 574d121cd86 fix(security): use self-repository uses syntax in
supersetbot workflow (#43962)
add 8d6044a1475 fix(sqllab): wrap cost-estimate JSON parse to prevent raw
JSONDecodeError leak (#43888)
add 1fb6b989413 fix: downgrade md5 namespace-fallback deprecation log to
info (#43884)
add 1b3758d2a4d ci: add ASF GitHub Actions allowlist check (#43844)
add bd3ab309073 chore(deps): bump @ant-design/icons from 6.3.3 to 6.3.4 in
/superset-frontend (#43982)
add 89786160f97 chore(deps): bump @ant-design/icons from 6.3.3 to 6.3.4 in
/docs (#43981)
add cdb6c8e0c90 chore(deps-dev): bump the typescript-eslint group in
/superset-frontend with 2 updates (#43980)
add c4e145b071f fix(sql_lab): raise 400 not 500 on malformed Jinja during
CSV export access check (#43866)
add 7d0cf1acfc8 docs(scarf-404): replace dead links by the Scarf homepage
(#43973)
add 7382ee0bfec fix(dashboard): prevent header metadata bar from
overlapping action buttons at narrow widths (#43845)
add ad319bd8a3c fix(docs): unbreak Netlify docs preview build (#44001)
add 056fd218d44 fix: handle missing table element in downloadAsPivotExcel
(#39386)
add 08694d64cb8 fix(plugin-chart-table): declare DataTable hooks before
the early return (#43150)
add 204ccc7ce7f fix(datasets): apply Schema filter on the combined
datasource list (#43829)
add 33c6df77c99 fix(database): don't reattach stored connection details
when the effective destination changes (#44003)
add c45fc6a31a2 feat(embedded): diagnose guest-token header size budgets
(#43944)
add 6504cad6bb3 feat(embedded): add EmbeddedChart model and migration
add 10651a4dfeb feat(embedded): add EmbeddedChartDAO, schemas and chart
embedded endpoints
add 4dd680e11e5 feat(embedded): resolve a uuid as either an embedded
dashboard or chart
add f90ec7492db feat(embedded): render an embedded chart via fabricated
dashboard state
add 0a1fa937c25 feat(embedded): expose Embed chart from the chart menu
add 80f3e2d9ac7 fix(embedded): correct import paths for the 6.x module
layout
add 9af43f52ddb feat(embedded): allow guest tokens scoped to a chart
add 8bb6d592173 feat(embedded): complete the standalone chart render path
add 20567da1c63 fix(embedded): say 'chart' in the embed modal when
embedding a chart
add 5188a08b9cd fix(embedded): don't 500 on a malformed Referer
add 7f6b24cb079 fix(embedded): restore fullscreen and image exports for
embedded charts
add e1445b56c1c fix(embedded): don't serve the mobile experience inside an
iframe
add 2e2b473497d test(embedded): cover the fabricated hydrate payload
add d4f4ce04415 fix(embedded): pad the embedded chart and size it to its
container
add 99131225229 chore(embedded): apply lint and formatting fixes
add 74ad670ae29 fix(embedded): type the chart's datasource as Datasource
add d13a5c7be49 fix(embedded): declare embedded_charts in the chart purge
policy
add 946ec1ae131 fix(embedded): document the embedded PUT and expect the
new chart permission
add d6e63c2539c fix(embedded): resolve the guest user before the chart
lookup
add 96725309dd2 fix(embedded): register the embedded chart response schema
add 4858138ce8f fix(embedded): chain the migration onto the current master
head
add 4ab3070b7a1 fix(embedded): dump the chart id on embedded chart
responses
add 71c108ecd8b fix(embedded): load an embedded chart under the chart
permission
add e1287c0e3a2 fix(embedded): honour guest token revocation for charts
add 8e9fa1b3a00 perf(embedded): load the chart stack lazily
add d884080ceb3 fix(embedded): rename the chart description for the chart
stack
add 91942e3389e fix(dashboard): refetch the embedded config when the
resource type changes
add 137764b67fe fix(embedded): chain the migration onto the current master
head
This update added new revisions after undoing existing revisions.
That is to say, some revisions that were in the old version of the
branch are not in the new version. This situation occurs
when a user --force pushes a change and generates a repository
containing something like this:
* -- * -- B -- O -- O -- O (a658e8be090)
\
N -- N -- N refs/heads/feat/embedded-chart (137764b67fe)
You should already have received notification emails for all of the O
revisions, and so the following emails describe only the N revisions
from the common base, B.
Any revisions marked "omit" are not gone; other references still
refer to them. Any revisions marked "discard" are gone forever.
No new revisions were added by this update.
Summary of changes:
.github/actions/change-detector/label-draft-pr.yml | 23 -
.github/actions/comment-on-pr | 1 -
.github/actions/latest-tag | 1 -
.github/actions/setup-docker/action.yml | 6 +-
.github/dependabot.yml | 30 +
.github/workflows/asf-allowlist-check.yml | 46 +
.github/workflows/check-openapi-spec-drift.yml | 99 +
.github/workflows/docker.yml | 25 +-
.github/workflows/github-action-validator.yml | 6 +-
.github/workflows/hold-label-ci-gate.yml | 4 +-
.github/workflows/latest-release-tag.yml | 42 -
.github/workflows/pre-commit.yml | 2 +-
.github/workflows/superset-e2e.yml | 33 +-
.github/workflows/superset-extensions-cli.yml | 2 +-
.github/workflows/superset-frontend.yml | 4 +-
.github/workflows/superset-playwright.yml | 32 +-
.../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 | 14 +-
.github/workflows/superset-websocket.yml | 6 +-
.github/workflows/supersetbot.yml | 2 +-
.github/workflows/tag-release.yml | 2 +-
.gitmodules | 6 -
.pre-commit-config.yaml | 13 +-
Dockerfile | 37 +
SECURITY.md | 10 +
UPDATING.md | 163 +
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 +-
docs/admin_docs/configuration/event-logging.mdx | 27 +-
docs/admin_docs/configuration/theming.mdx | 124 +
docs/admin_docs/installation/docker-compose.mdx | 2 +-
docs/admin_docs/installation/kubernetes.mdx | 2 +-
docs/admin_docs/security/securing_superset.mdx | 5 +-
.../version-6.1.0/installation/docker-compose.mdx | 2 +-
.../version-6.1.0/installation/kubernetes.mdx | 2 +-
docs/developer_docs/api.mdx | 9 -
docs/developer_docs/extensions/tasks.md | 194 +-
.../creating-your-first-dashboard.mdx | 6 +
docs/docs/using-superset/embedding.mdx | 69 +
docs/docs/using-superset/exploring-data.mdx | 14 +
.../docs/using-superset/using-ai-with-superset.mdx | 8 +
docs/netlify.toml | 7 +-
docs/package.json | 12 +-
docs/scripts/fix-openapi-spec.py | 1 -
docs/scripts/generate-api-index.mjs | 1 -
docs/static/resources/openapi.json | 412 +-
.../version-6.0.0/installation/docker-compose.mdx | 2 +-
.../version-6.0.0/installation/kubernetes.mdx | 2 +-
docs/yarn.lock | 205 +-
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-custom-rules.sh => oxfmt.sh} | 44 +-
.../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 | 4349 ++-
superset-embedded-sdk/package.json | 20 +-
superset-embedded-sdk/tsconfig.json | 2 +
superset-frontend/jest.config.js | 6 +-
superset-frontend/package-lock.json | 34409 +++++++++++--------
superset-frontend/package.json | 33 +-
.../packages/generator-superset/package.json | 2 +-
.../packages/superset-core/package.json | 2 +-
.../superset-ui-chart-controls/package.json | 4 +-
.../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 | 8 +-
.../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 +-
.../src/components/DeleteModal/index.tsx | 3 +
.../DropdownButton/DropdownButton.test.tsx | 14 +
.../DynamicEditableTitle.regression.test.tsx | 115 -
.../DynamicEditableTitle.test.tsx | 184 +-
.../src/components/DynamicEditableTitle/index.tsx | 23 +-
.../PageHeaderWithActions.stories.tsx | 102 +
.../PageHeaderWithActions.test.tsx | 19 +-
.../src/components/PageHeaderWithActions/index.tsx | 6 +-
.../TableCollection/TableCollection.test.tsx | 26 +
.../src/components/TableCollection/index.tsx | 68 +-
.../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 +
.../plugins/plugin-chart-echarts/package.json | 2 +-
.../src/MixedTimeseries/transformProps.ts | 52 +-
.../src/Timeseries/EchartsTimeseries.test.tsx | 60 +
.../src/Timeseries/EchartsTimeseries.tsx | 125 +-
.../src/Timeseries/TimeseriesLegend.tsx | 196 +
.../src/Timeseries/transformProps.ts | 178 +-
.../src/Timeseries/transformers.ts | 73 +
.../plugin-chart-echarts/src/Timeseries/types.ts | 19 +
.../test/MixedTimeseries/transformProps.test.ts | 161 +
.../test/Timeseries/Bar/transformProps.test.ts | 138 +-
.../test/Timeseries/EchartsTimeseries.test.tsx | 223 +-
.../test/Timeseries/transformProps.test.ts | 370 +-
.../test/Treemap/transformProps.test.ts | 44 +
.../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 +-
.../plugin-chart-table/src/DataTable/DataTable.tsx | 154 +-
.../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 +
.../test/DataTable/DataTable.test.tsx | 129 +
.../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 +-
superset-frontend/src/components/Chart/Chart.tsx | 6 +
.../src/components/Chart/ChartContainer.tsx | 13 +-
.../ChartContextMenu/ChartContextMenu.test.tsx | 70 +-
.../Chart/ChartContextMenu/ChartContextMenu.tsx | 11 +-
.../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 +-
.../ErrorMessage/PreformattedErrorDescription.tsx} | 25 +-
.../src/components/ListView/ListView.tsx | 4 +
superset-frontend/src/components/ListView/types.ts | 2 +
.../DashboardBuilder/DashboardBuilder.tsx | 47 +-
.../EmbeddedModal/EmbeddedModal.test.tsx | 29 +
.../dashboard/components/EmbeddedModal/index.tsx | 5 +-
.../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 +
.../SliceHeaderControls.test.tsx | 114 +
.../components/SliceHeaderControls/index.tsx | 15 +-
.../FilterBar/FilterControls/FilterValue.test.tsx | 60 +-
.../FilterBar/FilterControls/FilterValue.tsx | 48 +-
.../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 +
.../embedded/embeddedChart/hydrateEmbedded.test.ts | 11 +
.../src/embedded/embeddedChart/hydrateEmbedded.ts | 6 +-
.../src/embedded/embeddedChart/useExploreData.ts | 23 +-
.../src/embedded/guestTokenDiagnostics.test.ts | 101 +
.../src/embedded/guestTokenDiagnostics.ts | 71 +
superset-frontend/src/embedded/index.test.tsx | 191 +-
superset-frontend/src/embedded/index.tsx | 55 +-
.../DataTablesPane/components/SamplesPane.tsx | 7 +-
.../DataTablesPane/components/useResultsPane.tsx | 7 +-
.../DataTablesPane/test/DataTablesPane.test.tsx | 18 +-
.../DataTablesPane/test/SamplesPane.test.tsx | 3 +-
.../DataTablesPane/test/useResultsPane.test.tsx | 18 +
.../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 +
...AdhocFilterEditPopoverSimpleTabContent.test.tsx | 200 +-
.../index.tsx | 81 +-
.../src/explore/exploreUtils/index.ts | 18 +-
.../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 +-
.../src/hooks/apiResources/datasets.test.ts | 115 +-
.../src/hooks/apiResources/datasets.ts | 52 +-
superset-frontend/src/hooks/usePermissions.ts | 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 +
.../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 +-
superset-frontend/src/types/Dashboard.ts | 1 +
superset-frontend/src/types/bootstrapTypes.ts | 5 +-
superset-frontend/src/utils/asyncMode.test.ts | 91 +
superset-frontend/src/utils/asyncMode.ts | 69 +
.../src/utils/downloadAsPivotExcel.test.ts | 19 +
.../src/utils/downloadAsPivotExcel.ts | 7 +
.../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 | 2614 +-
superset-websocket/package.json | 26 +-
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 | 238 +-
superset/charts/data/api.py | 177 +-
superset/charts/data/query_context_cache_loader.py | 30 -
superset/charts/filters.py | 45 +-
superset/charts/schemas.py | 142 +-
superset/cli/update.py | 17 +-
superset/commands/chart/create.py | 2 +-
.../chart/data/create_async_job_command.py | 43 -
superset/commands/chart/data/get_data_command.py | 4 +
superset/commands/chart/update.py | 7 +-
superset/commands/dashboard/export.py | 98 +-
superset/commands/dashboard/update.py | 14 +-
superset/commands/database/exceptions.py | 29 +
superset/commands/database/importers/v1/utils.py | 60 +-
superset/commands/database/test_connection.py | 41 +-
superset/commands/database/update.py | 87 +
superset/commands/database/utils.py | 96 +
superset/commands/database/validate.py | 47 +-
superset/commands/datasource/list.py | 112 +-
superset/commands/distributed_lock/acquire.py | 32 +-
superset/commands/distributed_lock/base.py | 17 +-
superset/commands/distributed_lock/release.py | 76 +-
superset/commands/explore/get.py | 50 +-
superset/commands/importers/v1/utils.py | 14 +
superset/commands/sql_lab/estimate.py | 14 +-
superset/commands/sql_lab/export.py | 10 +
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/query_context.py | 35 +-
superset/common/query_context_factory.py | 4 +
superset/common/query_context_processor.py | 199 +-
superset/common/query_object.py | 12 +-
superset/common/query_object_factory.py | 13 +-
superset/common/query_serialization.py | 131 +
superset/common/utils/query_cache_manager.py | 16 +-
superset/config.py | 203 +-
superset/connectors/sqla/models.py | 30 +-
superset/constants.py | 2 +-
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 | 20 +-
superset/daos/datasource.py | 4 +
superset/daos/key_value.py | 9 +-
superset/daos/semantic_layer.py | 6 +-
superset/daos/tasks.py | 521 +-
superset/dashboards/api.py | 1 +
superset/dashboards/filters.py | 50 +-
superset/dashboards/schemas.py | 4 +
superset/datasets/api.py | 2 +
superset/datasets/schemas.py | 50 +-
superset/db_engine_specs/base.py | 13 +
superset/db_engine_specs/postgres.py | 16 +-
superset/db_engine_specs/snowflake.py | 10 +
superset/distributed_lock/__init__.py | 7 +-
superset/embedded/view.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/explore/utils.py | 7 +-
superset/extensions/__init__.py | 6 -
superset/initialization/__init__.py | 58 +-
superset/key_value/utils.py | 6 +-
superset/mcp_service/chart/chart_helpers.py | 7 +
superset/mcp_service/chart/chart_utils.py | 35 +
superset/mcp_service/chart/plugins/__init__.py | 3 +
.../mcp_service/chart/plugins/{pie.py => gauge.py} | 82 +-
superset/mcp_service/chart/schemas.py | 81 +-
superset/mcp_service/chart/tool/generate_chart.py | 11 +-
.../chart/tool/get_chart_type_schema.py | 10 +-
..._7e2c9a4f1b83_create_task_dependencies_table.py | 195 +
...10-00_a1c7e4b62f18_add_embedded_charts_table.py | 4 +-
...retire_semantic_layer_views_connections_pvms.py | 114 +
superset/models/core.py | 7 +
superset/models/dashboard.py | 128 +-
superset/models/helpers.py | 225 +-
superset/models/slice.py | 54 +
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 | 1 +
superset/security/api.py | 24 +-
superset/security/guest_token.py | 19 +
superset/security/manager.py | 265 +-
superset/semantic_layers/api.py | 7 +
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/metric_normalization.py | 181 +
superset/sql/parse.py | 159 +-
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/utils/cache.py | 30 +-
superset/utils/cache_manager.py | 4 +-
superset/utils/error_sanitization.py | 22 +-
superset/utils/feature_flag_manager.py | 64 +-
superset/utils/pandas_postprocessing/__init__.py | 10 +
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 | 114 +
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 +
tests/integration_tests/datasets/api_tests.py | 60 +-
tests/integration_tests/datasource/api_tests.py | 62 +
tests/integration_tests/datasource_tests.py | 10 +-
.../db_engine_specs/base_engine_spec_tests.py | 7 +-
tests/integration_tests/embedded/test_view.py | 17 +-
.../explore/form_data/commands_tests.py | 186 +-
tests/integration_tests/query_context_tests.py | 73 +
tests/integration_tests/reports/api_tests.py | 1 +
tests/integration_tests/sql_lab/commands_tests.py | 16 +
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 +-
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 +-
tests/unit_tests/charts/test_filters.py | 141 +
tests/unit_tests/charts/test_schemas.py | 115 +
.../test_dynamodb.py => cli/update_test.py} | 38 +-
.../chart/create_async_job_command_test.py | 51 -
tests/unit_tests/commands/dashboard/export_test.py | 287 +-
tests/unit_tests/commands/dashboard/update_test.py | 82 +
.../commands/databases/test_connection_test.py | 60 +
tests/unit_tests/commands/databases/update_test.py | 297 +
.../unit_tests/commands/databases/validate_test.py | 205 +
tests/unit_tests/commands/datasource/list_test.py | 224 +
.../explore/test_get_query_authorship_bypass.py | 93 +
.../unit_tests/commands/importers/v1/utils_test.py | 102 +
tests/unit_tests/commands/sql_lab/test_estimate.py | 42 +
.../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/connectors/sqla/models_test.py | 41 +
.../unit_tests/coordination}/__init__.py | 0
.../test_cache_backend.py | 89 +-
tests/unit_tests/coordination/test_service.py | 458 +
tests/unit_tests/dao/datasource_test.py | 31 +
tests/unit_tests/daos/test_tasks.py | 424 +
tests/unit_tests/dashboards/api_test.py | 79 +
.../dashboards/semantic_view_access_test.py | 645 +
.../databases/commands/importers/v1/import_test.py | 43 +
tests/unit_tests/datasets/schema_tests.py | 95 +
tests/unit_tests/db_engine_specs/test_base.py | 7 +
tests/unit_tests/db_engine_specs/test_postgres.py | 66 +
tests/unit_tests/db_engine_specs/test_redshift.py | 32 +
.../distributed_lock/distributed_lock_tests.py | 243 +-
tests/unit_tests/explore/utils_test.py | 117 +
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 | 6 +-
tests/unit_tests/key_value/utils_test.py | 12 +-
.../mcp_service/chart/test_gauge_chart.py | 231 +
tests/unit_tests/models/dashboard_test.py | 571 +
tests/unit_tests/models/helpers_test.py | 597 +-
tests/unit_tests/queries/query_object_test.py | 17 +
.../unit_tests/security/guest_token_audit_test.py | 87 +
tests/unit_tests/security/manager_test.py | 156 +
.../security/test_guest_token_revocation.py | 153 +-
.../test_realtime_notification_permissions.py | 61 +
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 | 721 +
tests/unit_tests/subjects/test_raise_for_access.py | 22 +-
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/test_error_sanitization.py | 17 +
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 +
521 files changed, 62431 insertions(+), 26996 deletions(-)
delete mode 100644 .github/actions/change-detector/label-draft-pr.yml
delete mode 160000 .github/actions/comment-on-pr
delete mode 160000 .github/actions/latest-tag
create mode 100644 .github/workflows/asf-allowlist-check.yml
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
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/src/components/PageHeaderWithActions/PageHeaderWithActions.stories.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/DataTable/DataTable.test.tsx
create mode 100644
superset-frontend/plugins/plugin-chart-table/test/utils/DateWithFormatter.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
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/embedded/guestTokenDiagnostics.test.ts
create mode 100644 superset-frontend/src/embedded/guestTokenDiagnostics.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/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/tasks/reap.py
create mode 100644 superset/common/query_serialization.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
copy superset/mcp_service/chart/plugins/{pie.py => gauge.py} (60%)
create mode 100644
superset/migrations/versions/2026-08-21_12-00_7e2c9a4f1b83_create_task_dependencies_table.py
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
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/dashboard/update_test.py
create mode 100644
tests/unit_tests/commands/explore/test_get_query_authorship_bypass.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
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
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/mcp_service/chart/test_gauge_chart.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