This is an automated email from the ASF dual-hosted git repository.
rusackas pushed a change to branch fix/download-warning-toasts-wire-dispatch
in repository https://gitbox.apache.org/repos/asf/superset.git
omit 3aa8002cd8b test(utils): fix invalid resolves.not.toThrow() assertion
in downloadAsPdf test
omit 11619bb786d test(utils): reset domToPdf module mock between
downloadAsPdf tests
omit 5507c45cad9 fix(dashboard,explore): thread addWarningToast into
forceLoadAllCharts timeout path
omit 89ec1591b82 test(dashboard): assert real addWarningToast callback in
SliceHeaderControls tests
omit d62d007eb0a fix(dashboard): surface warning toast when PDF generation
fails
omit 3fa8c4f515f fix(dashboard): update SliceHeaderControls tests for new
addWarningToast arg
omit a744b187568 fix(dashboard,explore): wire addWarningToast into
downloadAsImage/downloadAsPdf callers
add 8da299f58c0 docs(explore): document the Line chart Percent change
control (#44129)
add dd60cc27ff4 fix(dashboard): include native filter names in
filter_state GET response (#44043)
add 9976e08333c chore(build): remove `ts-jest` usage for TS7 preparation
(#44210)
add 5dd63ef95b2 chore(deps): bump antd from 6.6.2 to 6.6.3 in
/superset-frontend (#44300)
add 0f021023f3d fix(mcp): advertise typed tool outputs (#43828)
add 0049f814072 feat(mcp): add typed Gantt chart support (#43737)
add 23bc3de0ca3 fix(ci): match migration conflicts on filename, not
contents_url (#44318)
add d7516f10388 chore(deps): bump github/codeql-action/analyze from 4.37.9
to 4.38.0 (#44333)
add 24a79c4bd38 chore(deps): bump github/codeql-action/upload-sarif from
4.37.9 to 4.38.0 (#44332)
add 1432d7f0c0a chore(deps): bump actions/setup-java from 6.0.0 to 6.0.1
(#44330)
add 2659660d90a chore(deps): bump
apache/infrastructure-actions/allowlist-check from 1.0.1 to 1.0.2 (#44328)
add 7fbcc0825ca chore(deps): bump zizmorcore/zizmor-action from 0.6.3 to
0.6.4 (#44327)
add 2c135a5cdce test(semantic-layers): fix mypy call_args error on values
endpoint test (#44187)
add 2db9d6d51c8 fix(theme): do not suppress a dashboard theme when the
forwarded config equals the workspace default (#44173)
add 8233b5e5ae0 chore(deps-dev): update teradatasql requirement from
>=20.0.0.67 to >=20.0.0.68 (#44331)
add 55ee97bb36b chore(deps): bump holidays from 0.103 to 0.104 (#44325)
add 96d57a97349 chore(deps-dev): bump oxlint from 1.81.0 to 1.82.0 in
/superset-frontend (#44301)
add 79ab1467b52 chore(deps-dev): bump the typescript-eslint group across 1
directory with 2 updates (#44293)
add 9df22ffad35 chore(deps): bump yeoman-generator from 8.3.1 to 8.4.0 in
/superset-frontend (#44299)
add 134263e8d46 chore(deps-dev): bump ydb-sqlalchemy from 0.1.22 to 0.1.24
(#44329)
add 0db1b47de79 test(dashboard): migrate native filter URL key E2E to
Playwright (#41435)
add a01f5076195 chore(deps-dev): bump @types/node from 26.4.1 to 26.5.0 in
/superset-frontend (#44298)
add bd76e097a2d ci: pin codeql-action init to the same version as analyze
(#44354)
add 637e19f0ca3 fix(embedded): report content height independent of iframe
height (#44313)
add dca54da2421 feat(themes): add per-theme editors (Subject model)
(#42404)
add 22cef7ef007 fix(chart-data): keep non-numeric columns out of
contribution post-processing (#43203)
add 91c1135c054 fix(histogram): compare groupby membership using column
labels (#43219)
add 40f5ab8d0c6 fix(mcp): downgrade synthetic tool ToolError log level to
WARNING (SC-120340) (#44171)
add 2884e4815bd fix(datasets): catch MultipleResultsFound in
get_or_create's schema-scoped lookup (#43725)
add c417e3b6ccf chore(deps-dev): bump yeoman-test from 11.8.1 to 11.8.2 in
/superset-frontend (#44302)
add 7b6dd7597c4 chore(deps-dev): bump oxfmt from 0.66.0 to 0.67.0 in
/superset-frontend (#44297)
add f47f1ced19b feat(semantic layers): derive Explore picker modes from
declared semantic view features (#42540)
add 175c2f1f1cb fix(api): align sort and prophet option schemas with their
operations (#43206)
add baccb68d3b4 fix(chart): include Decimal metrics in contribution totals
(#43222)
add 461fdaa5b95 feat(native-filters): drive cascade dependencies from
chart metadata (#43223)
add 181e9ad3e2b fix(themes): render brand spinner SVG via <img> data URI
(#43504)
add f5c710d1625 refactor(explore): move optional icons outside label
element (#43584)
add 187e7d4d804 fix(security): handle self-referential catalog qualifiers
(#43974)
add 7ee33df6473 fix(rls): match the RLS predicate lookup on
case-normalized table identifiers (#43993)
add ea8aac12739 fix(mcp): bound chart_ids length in the generate-dashboard
request (#44071)
add 3d17fba3624 fix(db): honor connect_args returned by
adjust_engine_params (#44078)
add 82df1ffa61a fix(jinja): escape current_username/current_user_email
like sibling macros (#44081)
add fe7391e85ee fix(sqla): run column metadata probe statement exactly
once (#44242)
add 4c77b0b924a fix(migrations): merge theme editors and purge audit heads
(#44364)
add 2ef8e0c1dee fix(dashboard): require published for the read-gate's
datasource fallback (#44093)
add a68503b84af chore(deps): bump zod from 4.5.4 to 4.6.1 in
/superset-frontend (#44383)
add 5576b73646a chore(deps-dev): bump @types/node from 26.5.0 to 26.5.1 in
/superset-websocket (#44374)
add bb5d138c50e chore(deps): bump
apache/infrastructure-actions/allowlist-check from 1.0.2 to 1.0.3 (#44376)
add 68433b08b5b chore(deps): bump astral-sh/setup-uv from 10.0.1 to 10.1.0
(#44377)
add dedfe23a805 chore(deps-dev): bump @types/node from 26.5.0 to 26.5.1 in
/superset-embedded-sdk (#44375)
add 91c917e199c feat(ci): flag chart metadata changes via labeler (#33180)
add 35768da1fdb fix(dashboard): keep Save enabled when the properties
modal name is set (#44356)
add 66e64cc7d89 fix(time-format): stop reading short digit-only strings as
epoch offsets (#44352)
add c28a8942b7e chore(deps): bump the rjsf group in /superset-frontend
with 3 updates (#44378)
add ca0f5cfa8e6 chore(deps-dev): bump @types/node from 26.5.0 to 26.5.1 in
/superset-frontend (#44379)
add 8f4a70cfdf4 chore(deps-dev): bump minimizer-webpack-plugin from 5.10.0
to 5.10.1 in /superset-frontend (#44380)
add 2ad0053642e chore(deps-dev): bump react-refresh from 0.18.0 to 0.19.0
in /superset-frontend (#44381)
add e8e10fb85c0 fix(charts): don't auto-migrate table charts to
ag-grid-table on import unless enabled (#44151)
add c426186a2e6 fix(versioning): scope stream_results to the activity
SELECTs instead of mutating the session connection (#44261)
add fc71d0f9e81 fix(dataset): lock the If-Match validator's transaction-id
read (#44091)
add 77dbaafc2af chore(versioning): write-path latency metric for the
capture finalizer (#44009)
add 4c3a890d8b6 chore(deps): bump flask-appbuilder from 5.2.2 to 5.2.3
(#44400)
add 00c2f22fae2 fix(dashboard): make system default/dark themes assignable
to a dashboard (#44361)
add 678bfae8859 fix(charts): align week-grain time comparison offsets to
whole weeks (#43936)
add 6b80fa7ec29 fix(mypy): narrow chart.uuid before
RestoreChartVersionCommand in restore tests (#44394)
add 3abc3588fab fix(sqla): guard unprotected Jinja template rendering in
ExploreMixin (#44172)
add da1cac85f4d fix(versioning): refuse a version restore whose child
history was pruned (sc-120012) (#44251)
add 30e5745cd74 fix(mcp): return a structured Unsupported marker for
semantic-view get_chart_sql (#44267)
add 795cdf2bf15 fix(mcp): include semantic views in get_dashboard_datasets
(#44269)
add 22ae4405d4e fix(explore): anchor the add column/metric/filter popovers
to their trigger (#44274)
add f1dc56607e2 fix(i18n): make module-level error constants lazy gettext
(#44180)
add 944e92dd578 feat(soft-delete): translate unique collisions with
soft-deleted rows into restore guidance (#44184)
add 20d7a3e9aea fix(table): preserve semantic temporal column references
(#44369)
add 560828d620a fix(dashboard): resolve display-control and drill
datasources by type, not id alone (#42539)
add fc80a14850e feat(mcp): apply native dashboard filters from an MCP
client (#44096)
add 394bca55c79 fix(mcp): preserve dashboard filter values for restricted
users (#44107)
add bd786e2bea2 feat(versioning): render the starting version as the
oldest history row for charts and dashboards (#44258)
add a7dab4a5519 fix(presto): require PyHive 0.7 for SQLAlchemy 2 (#44285)
add b5ad3964165 fix(query): resolve sub-day "Last <unit>" time_range
shorthand (#44254)
add b8f5b209285 test(frontend): await userEvent calls missed by the
user-event v14 migration (#44335)
add 9bb5a95976a chore(deps-dev): bump the babel group in
/superset-embedded-sdk with 3 updates (#44417)
add 4f1a34446df chore(deps): bump zod from 4.6.1 to 4.6.2 in
/superset-frontend (#44419)
add 282bcb0edd8 chore(deps-dev): bump baseline-browser-mapping from
2.11.21 to 2.11.22 in /superset-frontend (#44421)
add 79af673bca5 chore(deps-dev): bump webpack-bundle-analyzer from 5.3.2
to 5.3.3 in /superset-frontend (#44422)
add 16090803bbc chore(deps): bump @googleapis/sheets from 14.0.0 to 17.0.0
in /superset-frontend (#44420)
add 0599cc2516b fix(mcp): accept a time grain in get_table on semantic
views (#44270)
add b7f1bdd571c fix(mcp): keep the default list_metrics page under the
response-token cap (#44266)
add 4bb51d76694 test(mcp): pin distinct cache keys for semantic-view
get_table across time ranges (#44263)
add e4bbd3973a2 fix(charts): type-aware datasource access parity for the
chart list (#43848)
add 8947d3b3763 fix(semantic-layers): mask nested and union secrets in
layer configuration (#43827)
add 627f32ca625 fix(versioning): mount the dashboard version-history panel
inside the content area, below the header (#44255)
add ae5d8d89a38 fix(datasets): return 400, not 500, for a body-less purge
POST; point the database-delete refusal at the purge flow (#44264)
add 9d4db452551 fix(charts): allow saving charts on semantic views
(create/update rejected non-table datasource types) (#44416)
add 43f85576d99 fix(semantic-layer): mapper honors the SemanticView ABC
contract (#43886)
add 062bf948e59 fix(semantic-layer): preserve independent source
permissions (#43887)
add 2e1cf8a72c4 fix(versioning): map the restore registry guard's
LookupError to 422 instead of 500 (#44253)
add 5ecb19cf92a fix(mcp): pre-validate metric/dimension compatibility in
semantic-view get_table (#44265)
add 128c0c159ab fix(mcp): rebuild full parent chains in dashboard layouts
(#44405)
add 43fee876722 test(versioning): mock the restore locking re-read in the
#44253 LookupError tests (fixes red master) (#44445)
add f170d2670e5 chore(deps): bump baseline-browser-mapping from 2.11.21 to
2.11.22 in /docs (#44418)
add 253eef33d5d fix(databricks): prefer python-connector spec over legacy
Hive spec for unrecognized drivers (#44449)
add db556ec66eb chore(deps): bump pyjwt from 2.13.0 to 2.14.0 (#44442)
add 4511c138193 chore(deps-dev): bump psycopg2-binary from 2.9.12 to
2.9.13 (#44444)
add 6300622dd4a fix(mcp): catch ValueError for reversed date range in
query_dataset (#44462)
add c9fd9bf94f4 fix(bigquery): avoid ESCAPE clause in column-value
typeahead search (SC-121408) (#44429)
add 27935c2c648 chore(deps-dev): bump @testing-library/dom from 10.4.1 to
10.4.2 in /superset-frontend (#44488)
add 3f924aa1aab chore(deps): bump antd from 6.6.3 to 6.6.4 in
/superset-frontend (#44487)
add 76496b2df61 chore(deps): bump zod from 4.6.2 to 4.6.5 in
/superset-frontend (#44485)
add 41aa1221be0 chore(deps-dev): bump @formatjs/intl-durationformat from
0.10.18 to 0.11.1 in /superset-frontend (#44484)
add 9bb07f2292a chore(deps-dev): bump baseline-browser-mapping from
2.11.22 to 2.11.23 in /superset-frontend (#44483)
add 07b28abe82a chore(deps-dev): bump webpack from 5.110.3 to 5.111.0 in
/superset-frontend (#44482)
add 38fac53e55c chore(deps): bump antd from 6.6.3 to 6.6.4 in /docs
(#44481)
add d0739416d50 chore(deps-dev): bump webpack from 5.110.3 to 5.111.0 in
/docs (#44480)
add a82a001fe0a chore(deps): bump js-yaml from 5.4.1 to 5.4.2 in /docs
(#44479)
add caa82d5b102 chore(deps): bump codecov/codecov-action from 7.0.0 to
7.1.0 (#44477)
add 085e535b8e7 chore(deps-dev): bump webpack from 5.110.3 to 5.111.0 in
/superset-embedded-sdk (#44476)
add 1f1e09c971e chore(deps): bump hot-shots from 17.1.0 to 17.1.1 in
/superset-websocket (#44475)
add b0f7c581db2 chore(deps): bump yeoman-generator from 8.4.0 to 9.1.0 in
/superset-frontend (#44489)
add 7486b7187bf chore(deps): bump morgan from 1.12.0 to 1.12.1 in
/superset-websocket/utils/client-ws-app (#44474)
add fc016454fb0 chore(deps): bump baseline-browser-mapping from 2.11.22 to
2.11.23 in /docs (#44478)
add c11dc027969 fix(sql): classify ATTACH/DETACH and MySQL
REPLACE/RENAME/SET PASSWORD as mutating (#44072)
add 00b1a353018 fix(shillelagh): disable ATTACH DATABASE on APSW
connections (#43991)
add 8ec8beecffd fix(reports): enable alert retries with execution
safeguards (#44336)
add 2ea9ef6cef7 feat(mcp): search dataset descriptions and add an optional
per-role dataset scope (#44146)
add 8b9b055ef0f fix(mcp): never block a committed update_chart write as
ToolError (#44386)
add 371ad7cac5a refactor(soft-delete): hoist triplicated restore/purge
route bodies onto SoftDeleteApiMixin (#44259)
add 5a7d269580f fix(charts): guard set_related_perm against unknown
datasource_type (#43885)
add 774d83b4d63 fix(sql-lab): remove the ecpg-based PostgreSQL SQL
validator (#43020)
add 322eaeaf991 fix(ci): align Docker image publishing policy (#44250)
add 782b7ae924c fix(security): skip session checks for health probes
(#43786)
add fe2ed7bb8e7 fix(dashboard): make screenshot completion truthful
(#44144)
add cf39d22f382 fix(mcp): honor extra_form_data time_grain_sqla on Generic
Chart Axes charts (#44435)
add e4eb0591bdb fix(sql lab): keep the real Flask session on synchronous
runs (#44428)
add 75447bc068f fix(pandas_postprocessing): pass string aggregator names
to GroupBy.agg to silence FutureWarning (#43259)
add aaa9390a24a fix(semantic-layer): wrap raw pandas TypeError/DataError
from post-processing as QueryObjectValidationError (#44502)
add d0edf759c90 test(dashboard): migrate native filter
cross-filter/dependency E2E to Playwright (#41458)
add 2f4eb735187 fix(explore): keep edits to a dashboard-inherited filter
when saving (#43947)
add c355f0a21df fix(plugin-chart-table): re-measure sticky layout when the
table gains a box (#44430)
add ed9bb9169d8 fix(dashboard): stop wide table charts bleeding over
neighbours in dashboard image export (#44414)
add f7784b64f46 fix(ci): give the db2 testcontainer boot real wait
headroom (#44399)
add 7e6b25a90b3 fix(row-level-security): allow roles as RLS rule subjects
(#43948)
add 4a7b8b6279c fix(ui): preserve HTTP status in error messages (#44271)
add 6cc5c0e00ba feat(db_engine_specs): add metadata block to
OdpsEngineSpec (#43239)
add 48dfbcc6527 fix(explore): keep an externally updated TextControl value
visible (#43220)
add afd8dac7c85 fix(sqllab): migrate tabs after database deletion (#43278)
add b8cc2a769d4 fix(echarts): only reserve left grid padding when a Y-axis
title exists (#43299)
add 53484ac21c9 feat(charts): Clean up "shadow state" in conditional
formatting dialog (#43692)
add ba677f0c5ba feat(mcp): read Explore permalinks in get_chart_info
(#44338)
add cbd5bf85fe7 fix(dataset): render semantic datasource type as a badge
(#44398)
add 3756b7ae2c8 fix(i18n): guard messages.pot against source drift and
regenerate it (#44467)
add 3fd761d1740 fix(ui): preserve default modal resize handles when config
is partial (#43806)
add 5a2a90b38ab feat(mcp): bubble chart type plugin (#43572)
add 889f9f1751e fix(reports): validate final capture artifacts before
delivery (#44465)
add 298d776ec56 fix(dashboard): include semantic views in the dashboard
datasets payload so semantic charts render their errors (#44413)
add 92482f07f30 fix(echarts): emit no cross-filter for clicks that are not
categories (#43192)
add cf10e894a19 fix(mcp): preserve omitted chart colors and row limits
(#44188)
add 0050b187d78 perf(deletion-retention): scope purge-audit repeat checks
with legacy database fallback (#44262)
add 649a665b482 fix(security): allow schema_access holders to explore SQL
Lab queries from other authors (#43994)
add d45bbdcdf2e fix(sql): use AST for disallowed function checks (#43641)
add 5745162faf7 docs: point remaining Release Notes links at GitHub
releases (#43803)
add 600db8e5816 fix(matrixify): apply dimension filters to all
query-specific adhoc filter collections (#43861)
add 903a1e1ff3e docs(singlestore): require singlestoredb[sqlalchemy] and
update logo (#44170)
add c666a6400c4 fix(database): allow metadata edits on an unreachable
database (#44000)
add fd5efcbf5ba fix(superset-ui-core): add year to smart_date_verbose
tooltip tiers (#44212)
add 1b8800c84d1 fix(sqllab): restore SQL code folding (#44236)
add 0382c19ad3b fix: show the server's error message in the publish toggle
and user info toasts (#44238)
add f47fcad3d6e fix(reports): replace stale Selenium references in
screenshot messages (#44244)
add 3e39ba13e34 fix(country-map): correct Karelia boundary (#44273)
add 3cbee94525d docs: fix internal link guidance examples (#44275)
add 468936a7e04 fix(sql): preserve literal percents in where_in (#44284)
add b78585c9715 fix(databricks): select the SQLAlchemy 2 dialect (#44286)
add 8039aa983d7 test(explore): await the Customize tab click in
ControlPanelsContainer test (#44315)
add 57108b416bf test(explore): await userEvent calls in
useExploreAdditionalActionsMenu test (#44323)
add 7eb9532c0ba fix(chart-controls): keep axis sort available for columns
with unknown type (#44344)
add 770bcfb2e95 fix(extensions-cli): fail build and bundle when the
frontend build fails (#44407)
add 86fb8db31d8 chore(version-history): use typed app dispatch (#44438)
add 156549ffed3 fix(temporary-cache): forward tab_id on DELETE so
contextual cache mappings are cleared (#44451)
add 22d37f3ed0a chore(deps): bump fast-uri from 3.1.5 to 3.1.8 in
/superset-frontend/cypress-base (#44510)
add 4df9c0ad362 chore(deps): bump qs from 6.15.2 to 6.16.0 in
/superset-frontend/cypress-base (#44511)
add 1428f138d20 chore(deps-dev): bump oxlint from 1.82.0 to 1.83.0 in
/docs (#44518)
add 1c803d923f3 chore(deps-dev): bump oxfmt from 0.67.0 to 0.68.0 in
/superset-websocket (#44516)
add fc1c7798e9e chore(deps-dev): bump oxfmt from 0.67.0 to 0.68.0 in /docs
(#44517)
add a54e7353a2b chore(deps-dev): bump oxlint from 1.82.0 to 1.83.0 in
/superset-websocket (#44515)
add d43785a2c22 chore(deps): bump docker/setup-buildx-action from 4.3.0 to
4.4.1 (#44519)
add 4c229cb66a7 fix(dashboard): import getClientErrorObject; regenerate
stale messages.pot (#44513)
add 4afaf60a4fe feat(build): use latest patch version for Python base
image (#44458)
add c691d768d2f chore(deps-dev): bump oxfmt from 0.67.0 to 0.68.0 in
/superset-frontend (#44521)
add 21db4a5eeef chore(deps): bump @types/d3-selection from 3.0.11 to
3.0.12 in /superset-frontend (#44524)
add 47fd4f4cbfc fix(matrixify): lazy-load grid cells with dashboard
virtualization (#43053)
add 250a4797bf1 fix(plugin-chart-ag-grid-table): send export column
filters as structured filters (#44308)
add c6d0890f2e0 fix(api): restore three schema fields disabled by a stray
trailing comma (#43225)
add 61a5d0e3348 fix(csrf): recover from an expired CSRF token without a
page reload (#43655)
add d21aa9b4f46 chore(deps): bump yeoman-generator from 9.1.0 to 9.2.0 in
/superset-frontend (#44522)
add 2b5a929523d fix(chart-controls): type post-processing columns as a
string-to-string mapping (#43589)
add a3afedeaab4 fix(core): normalize bare date-only strings to UTC in
normalizeTimestamp (#43807)
add 107a61c4caf feat(databend): add a sqlglot dialect based on Postgres
(#43964)
add c163112f4e2 chore(deps): bump @googleapis/sheets from 17.0.0 to 18.0.0
in /superset-frontend (#44523)
add 5c1f617740c fix(echarts): apply the bar label legibility floor to
manual label positions (#44469)
add c4943a0ab34 feat(native-filters): add configurable display format for
time filters (#44237)
add cef83b3f8df fix(import): catch KeyError for missing uuid/ssh_tunnel in
load_configs (#43305)
add df6e0d08b35 fix(sqla): wrap TypeError from virtual dataset Jinja
rendering as a validation error (#44312)
add 1788486228c fix(datasets): soften render-time UndefinedError in
get_virtual_table_metadata (#44316)
add ee4b8ddff6e fix(ci): align superset-cache tag consumers with the
Dockerfile PY_VER (#44534)
add 43f0f8876ad chore(ci): make the DB migration conflict bot comment less
emoji-heavy and more actionable (#44506)
add 0fe0662b271 fix(i18n): regenerate messages.pot to match source (#44509)
add 9f48d0eac9e fix(tests): await userEvent.click in CsrfErrorMessage
compact-mode test (#44540)
add 7024401aef2 fix(mcp): drop tiktoken, size-guard responses by exact
byte length (#44508)
add 9413294b2bd docs(pivot-table): document the "Show values as"
percentage display option (#44127)
add 48795f9a2d4 docs(explore): document show_download param for standalone
chart embeds (#43906)
add 7dd70eaf2d6 fix: tighten object-level and destination checks across
four unrelated endpoints (#44036)
add add97e5d190 fix(embedded): tighten guest-token scoping for
annotations, result types, and channels (#43391)
add ca7cdfcd0ff fix(pinot): require the SQLAlchemy 2 driver extra (#44287)
add 0f229fda75f fix(security): exempt health blueprint from forced
password changes (#44504)
add 269b9f99fef fix(views): return 401 for NoAuthorizationError in
handle_api_exception (SC-121647) (#44533)
add 50bbcedf13b docs(mcp): document restore_chart and restore_dashboard
tools (#44207)
add ea1ffcf0adb fix: fixed inverseSelection (#40970)
add 350dd0d60ec fix(security): delete deprecated permissions left over
after upgrades (#44142)
add 7a9fe06762b fix(mcp): stop data tool responses crashing on binary and
NaT values (#44495)
add 9612437a9c8 fix(extensions): preserve chat state across display modes
(#44490)
add 61fffbe0c08 chore(deps-dev): bump oxlint from 1.82.0 to 1.83.0 in
/superset-frontend (#44525)
add c14ac29f477 fix(mcp): complete Treemap round-trip and previews (#44152)
add 3b4e5f5d0c6 chore(deps): bump markdown-to-jsx from 9.10.2 to 9.10.3 in
/superset-frontend (#44570)
add 7fe03a536b6 chore(deps-dev): bump @types/node from 26.5.1 to 26.6.1 in
/superset-frontend (#44569)
add 6403e16fe56 chore(deps-dev): bump vitest from 5.0.0 to 5.0.1 in
/superset-embedded-sdk (#44568)
add d1f395914f1 chore(deps-dev): bump @types/node from 26.5.1 to 26.6.1 in
/superset-embedded-sdk (#44567)
add 6c9138a6b7c chore(deps-dev): bump baseline-browser-mapping from
2.11.23 to 2.11.24 in /superset-frontend (#44566)
add 4b180bddad7 chore(deps): bump baseline-browser-mapping from 2.11.23 to
2.11.24 in /docs (#44565)
add 4290d94d6c9 chore(deps-dev): bump vitest from 5.0.0 to 5.0.1 in
/superset-websocket (#44564)
add 3e80a53e14f chore(deps-dev): bump @types/node from 26.5.1 to 26.6.1 in
/superset-websocket (#44563)
add f8f293d2666 chore(deps): bump benchmark-action/github-action-benchmark
from 1.22.1 to 1.22.2 (#44520)
add 689ab4a77af fix(translations): regenerate messages.pot after the
connection-move reword (#44574)
add 02dbfd2ab5b fix(dashboard): don't register an active tab for childless
TABS components (#44345)
add 838376dbc28 fix(mongodb): treat the Mongo database as the SQL Lab
schema so Data Preview returns rows (#44141)
add 6323b37f50a fix(dashboard): prevent and repair self-nested layout
components (#44303)
add 892c2888052 fix(dashboard,explore): wire addWarningToast into
downloadAsImage/downloadAsPdf callers
add 57e68b6129d fix(dashboard): update SliceHeaderControls tests for new
addWarningToast arg
add ab64efed481 fix(dashboard): surface warning toast when PDF generation
fails
add 1295057ad02 test(dashboard): assert real addWarningToast callback in
SliceHeaderControls tests
add 5310561931e fix(dashboard,explore): thread addWarningToast into
forceLoadAllCharts timeout path
add 813d0b9e18d test(utils): reset domToPdf module mock between
downloadAsPdf tests
add ce6c7c81185 test(utils): fix invalid resolves.not.toThrow() assertion
in downloadAsPdf test
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 (3aa8002cd8b)
\
N -- N -- N refs/heads/fix/download-warning-toasts-wire-dispatch
(ce6c7c81185)
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:
.devcontainer/Dockerfile | 2 +-
.devcontainer/devcontainer-base.json | 2 +-
.github/actions/setup-backend/action.yml | 6 +-
.github/actions/setup-docker/action.yml | 3 +
.github/dependabot.yml | 3 +-
.github/labeler.yml | 12 +
.github/workflows/asf-allowlist-check.yml | 2 +-
.github/workflows/bashlib.sh | 2 -
.github/workflows/bump-python-package.yml | 2 +-
.github/workflows/check-db-migration-confict.yml | 27 +-
.github/workflows/codeql-analysis.yml | 4 +-
.github/workflows/docker.yml | 303 +-
.github/workflows/frontend-bundle-size-nightly.yml | 2 +-
.github/workflows/generate-FOSSA-report.yml | 2 +-
.github/workflows/github-action-validator.yml | 2 +-
.github/workflows/license-check.yml | 2 +-
.github/workflows/mirror-service-images.yml | 2 +-
.../workflows/scheduled-docker-image-refresh.yml | 195 -
.github/workflows/superset-docs-deploy.yml | 2 +-
.github/workflows/superset-extensions-cli.yml | 2 +-
.github/workflows/superset-frontend.yml | 4 +-
.../workflows/superset-python-integrationtest.yml | 6 +-
.github/workflows/superset-python-presto-hive.yml | 4 +-
.github/workflows/superset-python-unittest.yml | 5 +-
.github/workflows/superset-translations.yml | 11 +
.github/workflows/tag-release.yml | 22 +-
Dockerfile | 3 +-
README.md | 2 +-
UPDATING.md | 252 +-
docker-compose.yml | 2 +-
docs/DOCS_CLAUDE.md | 17 +-
docs/admin_docs/configuration/alerts-reports.mdx | 64 +-
.../configuration/configuring-superset.mdx | 11 +
docs/admin_docs/configuration/mcp-server.mdx | 311 +-
docs/admin_docs/installation/docker-builds.mdx | 66 +-
docs/admin_docs/installation/docker-compose.mdx | 2 +-
docs/admin_docs/security/security.mdx | 30 +-
.../extensions/contribution-types.md | 43 +
.../extensions/extension-points/chat.md | 4 +
docs/docs/faq.mdx | 13 +
docs/docs/using-superset/embedding.mdx | 21 +
docs/docs/using-superset/exploring-data.mdx | 27 +
docs/docs/using-superset/sql-templating.mdx | 4 +-
.../docs/using-superset/using-ai-with-superset.mdx | 45 +
docs/docs/using-superset/version-history.mdx | 6 +
docs/package.json | 12 +-
docs/scripts/generate-database-docs.mjs | 7 +-
docs/src/data/databases.json | 15 +-
docs/static/img/databases/singlestore.png | Bin 15978 -> 9806 bytes
docs/static/resources/openapi.json | 223 +-
.../version-6.0.0/intro.md | 2 +-
.../version-6.1.0/index.mdx | 2 +-
.../version-6.1.0/intro.md | 2 +-
docs/yarn.lock | 553 +-
pyproject.toml | 27 +-
requirements/base.txt | 8 +-
requirements/development.txt | 19 +-
scripts/change_detector.py | 1 -
scripts/docker-build-extra-flags.sh | 49 +-
scripts/docker-build-plan.sh | 50 +
scripts/docker-publish-guard.sh | 53 +
scripts/translations/check_pot_drift.py | 157 +
.../src/superset_core/semantic_layers/view.py | 6 +-
superset-embedded-sdk/package-lock.json | 503 +-
superset-embedded-sdk/package.json | 12 +-
superset-extensions-cli/README.md | 5 +
.../src/superset_extensions_cli/cli.py | 3 +
superset-extensions-cli/tests/test_cli_build.py | 131 +-
superset-frontend/cypress-base/package-lock.json | 51 +-
superset-frontend/jest.config.js | 1 -
superset-frontend/package-lock.json | 1030 +-
superset-frontend/package.json | 35 +-
.../packages/generator-superset/package.json | 4 +-
.../packages/superset-core/package.json | 2 +-
.../superset-ui-chart-controls/src/types.ts | 5 +
.../src/utils/isSortable.ts | 10 +
.../components/RadioButtonControl.test.tsx | 6 +-
.../test/utils/isSortable.test.ts | 9 +
.../packages/superset-ui-core/package.json | 2 +-
.../Matrixify/MatrixifyGridCell.test.tsx | 273 +-
.../components/Matrixify/MatrixifyGridCell.tsx | 127 +-
.../Matrixify/MatrixifyGridGenerator.test.ts | 90 +
.../components/Matrixify/MatrixifyGridGenerator.ts | 37 +-
.../components/Matrixify/virtualizationEvents.ts | 82 +
.../src/chart/models/ChartMetadata.ts | 9 +
.../AsyncAceEditor/AsyncAceEditor.test.tsx | 33 +
.../src/components/AsyncAceEditor/index.tsx | 4 +-
.../superset-ui-core/src/components/Form/Form.tsx | 1 +
.../Label/reusable/DatasetTypeLabel.test.tsx | 48 +-
.../components/Label/reusable/DatasetTypeLabel.tsx | 11 +-
.../src/components/Modal/Modal.test.tsx | 93 +-
.../src/components/Modal/Modal.tsx | 33 +-
.../src/connection/SupersetClientClass.ts | 83 +-
.../superset-ui-core/src/connection/constants.ts | 3 +
.../superset-ui-core/src/query/api/v1/types.ts | 3 +
.../src/query/getClientErrorObject.ts | 33 +-
.../superset-ui-core/src/query/types/Datasource.ts | 7 +
.../src/query/types/PostProcessing.ts | 6 +-
.../superset-ui-core/src/query/types/Query.ts | 1 +
.../src/time-comparison/fetchTimeRange.ts | 29 +-
.../src/time-format/formatters/smartDateVerbose.ts | 10 +-
.../src/time-format/utils/normalizeTimestamp.ts | 13 +
.../src/time-format/utils/stringifyTimeInput.ts | 21 +-
.../superset-ui-core/src/ui-overrides/types.ts | 1 +
.../test/chart/models/ChartMetadata.test.ts | 20 +
.../connection/SupersetClientCsrfRecovery.test.ts | 191 +
.../test/query/getClientErrorObject.test.ts | 46 +-
.../test/query/types/PostProcessing.test.ts | 6 +-
.../test/time-comparison/fetchTimeRange.test.ts | 60 +
.../formatters/smartDateVerbose.test.ts | 57 +-
.../time-format/utils/normalizeTimestamp.test.ts | 5 +
.../time-format/utils/stringifyTimeInput.test.ts | 28 +
.../superset-ui-core/types/ace-builds.d.ts | 1 +
.../playwright/components/core/Select.ts | 14 +
.../components/dashboard/DashboardFilterBar.ts | 30 +-
.../playwright/helpers/api/dashboard.ts | 23 +
.../playwright/helpers/embeddedAppServer.ts | 133 +
.../playwright/pages/DashboardPage.ts | 39 +
.../dashboard-native-filter-url-key.spec.ts | 140 +
.../tests/dashboard/dashboard-test-helpers.ts | 42 +-
.../tests/dashboard/native-filters.spec.ts | 438 +
.../dashboard/version-history-placement.spec.ts | 198 +
.../tests/embedded/embedded-dashboard.spec.ts | 132 +-
.../tests/embedded/embedded-iframe-sizing.spec.ts | 433 +
.../tests/embedded/pivot-collapse-state.spec.ts | 96 +-
.../recently-archived/recently-archived.spec.ts | 5 +
.../plugin-chart-ag-grid-table/src/buildQuery.ts | 125 +-
.../plugin-chart-ag-grid-table/src/index.ts | 1 -
.../src/stateConversion.ts | 302 +-
.../src/utils/agGridFilterConverter.ts | 73 +-
.../test/buildQuery.test.ts | 206 +-
.../test/stateConversion.test.ts | 77 +-
.../test/utils/agGridFilterConverter.test.ts | 55 +-
.../test/utils/filterStateManager.test.ts | 2 +-
.../scripts/Country Map GeoJSON Generator.ipynb | Bin 226846 -> 227629
bytes
.../src/countries/russia.geojson | Bin 747442 -> 678517
bytes
.../test/russia.geojson.test.ts | 87 +
.../plugins/plugin-chart-echarts/package.json | 2 +-
.../src/Gantt/transformProps.ts | 7 +-
.../src/Histogram/transformProps.ts | 2 +-
.../src/Timeseries/transformers.ts | 44 +-
.../src/utils/eventHandlers.ts | 26 +-
.../test/Histogram/transformProps.test.ts | 112 +
.../test/MixedTimeseries/buildQuery.test.ts | 33 +
.../test/MixedTimeseries/transformProps.test.ts | 4 +-
.../test/Timeseries/Bar/transformProps.test.ts | 6 +-
.../test/Timeseries/transformers.test.ts | 160 +-
.../test/utils/eventHandlers.test.ts | 56 +
.../plugins/plugin-chart-pivot-table/package.json | 2 +-
.../src/react-pivottable/TableRenderers.tsx | 15 +-
.../test/react-pivottable/tableRenders.test.tsx | 21 +
.../src/DataTable/hooks/useSticky.tsx | 30 +-
.../plugins/plugin-chart-table/src/buildQuery.ts | 6 +
.../test/DataTable/hooks/useSticky.test.tsx | 88 +-
.../plugin-chart-table/test/buildQuery.test.ts | 109 +-
.../test/ColorSchemeControl.test.tsx | 4 +-
superset-frontend/spec/helpers/testing-library.tsx | 1 +
.../src/SqlLab/actions/sqlLab.test.ts | 118 +
superset-frontend/src/SqlLab/actions/sqlLab.ts | 108 +-
.../QueryLimitSelect/QueryLimitSelect.test.tsx | 8 +-
.../SaveDatasetActionButton.test.tsx | 2 +-
.../ShareSqlLabQuery/ShareSqlLabQuery.test.tsx | 6 +-
.../SqlLab/components/SouthPane/SouthPane.test.tsx | 2 +-
.../SqlEditorLeftBar/SqlEditorLeftBar.test.tsx | 2 +-
.../SqlEditorTabHeader/SqlEditorTabHeader.test.tsx | 2 +-
.../DynamicGroupBy/DynamicGroupByPlugin.test.tsx | 2 +-
.../src/components/Chart/Chart.test.tsx | 55 +
superset-frontend/src/components/Chart/Chart.tsx | 5 +-
.../ChartContextMenu/ChartContextMenu.test.tsx | 100 +-
.../Chart/DrillBy/useResultsTableView.test.ts | 2 +-
.../Chart/DrillDetail/DrillDetailPane.test.tsx | 31 +
.../useDrillDetailMenuItems.test.tsx | 12 +-
.../CopyToClipboard/CopyToClipboard.test.tsx | 10 +-
.../DatabaseSelector/DatabaseSelector.test.tsx | 4 +-
.../tests/DatasourceEditorCurrency.test.tsx | 4 +-
.../ErrorMessage/CsrfErrorMessage.test.tsx | 79 +
.../ErrorMessage/CsrfErrorMessage.tsx} | 48 +-
.../src/components/ErrorMessage/index.tsx | 1 +
.../src/components/MessageToasts/Toast.test.tsx | 34 +-
.../src/components/MessageToasts/Toast.tsx | 16 +-
.../src/components/MessageToasts/actions.ts | 2 +
.../src/components/MessageToasts/types.ts | 3 +
.../RowCountLabel/RowCountLabel.test.tsx | 4 +-
superset-frontend/src/components/Tag/utils.tsx | 16 +-
superset-frontend/src/core/chat/ChatHost.tsx | 20 +-
.../src/dashboard/actions/dashboardState.test.ts | 71 +-
.../src/dashboard/actions/dashboardState.ts | 21 +-
.../src/dashboard/actions/hydrate.test.ts | 85 +-
superset-frontend/src/dashboard/actions/hydrate.ts | 28 +-
.../components/AddSliceCard/AddSliceCard.test.tsx | 2 +-
.../DashboardBuilder/DashboardBuilder.test.tsx | 240 +-
.../DashboardBuilder/DashboardBuilder.tsx | 187 +-
.../src/dashboard/components/DashboardGrid.tsx | 3 +-
.../PropertiesModal.lateFieldMount.test.tsx | 94 +
.../PropertiesModal/PropertiesModal.test.tsx | 26 +
.../dashboard/components/PropertiesModal/index.tsx | 16 +-
.../URLShortLinkButton/URLShortLinkButton.test.tsx | 8 +-
.../ChartHolder/ChartHolder.test.tsx | 4 +-
.../gridComponents/Markdown/Markdown.test.tsx | 20 +-
.../components/gridComponents/Tabs/Tabs.test.tsx | 95 +
.../components/gridComponents/Tabs/Tabs.tsx | 22 +-
.../gridComponents/TabsRenderer/TabsRenderer.tsx | 2 +-
.../FilterControls/FilterControlShared.test.tsx | 2 +-
.../FilterControls/FilterDivider.test.tsx | 2 +-
.../FilterControls/GroupByFilterCard.test.tsx | 330 +-
.../FilterBar/FilterControls/GroupByFilterCard.tsx | 192 +-
.../nativeFilters/FilterBar/Vertical.tsx | 76 +-
.../components/nativeFilters/FilterBar/index.tsx | 16 +-
.../nativeFilters/FilterBar/utils.test.ts | 38 +
.../components/nativeFilters/FilterBar/utils.ts | 15 +
.../FiltersConfigForm/ColumnSelect.test.tsx | 4 +-
.../FiltersConfigForm/ColumnSelect.tsx | 38 +-
.../FiltersConfigForm/DatasetSelect.tsx | 16 +-
.../FiltersConfigForm/FiltersConfigForm.tsx | 99 +-
.../FiltersConfigForm/getControlItemsMap.test.tsx | 14 +
.../FiltersConfigForm/getControlItemsMap.tsx | 3 +-
.../FiltersConfigForm/utils.test.ts | 78 +
.../FiltersConfigModal/FiltersConfigForm/utils.ts | 52 +-
.../FiltersConfigModal/FiltersConfigModal.tsx | 4 +-
.../FiltersConfigModal/NativeFiltersModal.test.tsx | 9 +
.../FiltersConfigModal/hooks/index.ts | 5 +-
.../hooks/useFilterOperations.test.ts | 91 +
.../hooks/useFilterOperations.ts | 36 +-
.../useDisplayControlDatasource.test.ts | 192 +
.../nativeFilters/useDisplayControlDatasource.ts | 181 +
.../components/nativeFilters/utils.test.ts | 13 +
.../src/dashboard/containers/DashboardPage.tsx | 2 +
.../dashboard/hooks/useDownloadScreenshot.test.ts | 118 +-
.../src/dashboard/hooks/useDownloadScreenshot.ts | 67 +-
.../src/dashboard/reducers/dashboardLayout.test.ts | 62 +
.../src/dashboard/reducers/dashboardLayout.ts | 26 +
.../src/dashboard/reducers/dashboardState.test.ts | 23 +
.../src/dashboard/useDashboardFilterSync.test.tsx | 272 +
.../src/dashboard/useDashboardFilterSync.ts | 118 +
.../dashboard/util/embeddedLayout.ts} | 24 +-
.../src/dashboard/util/getDropPosition.test.ts | 83 +
.../src/dashboard/util/getDropPosition.ts | 13 +
.../util/removeUnreachableComponents.test.ts | 283 +
.../dashboard/util/removeUnreachableComponents.ts | 225 +
.../util/updateComponentParentsList.test.ts | 17 +
.../dashboard/util/updateComponentParentsList.ts | 7 +-
superset-frontend/src/dataMask/reducer.test.ts | 98 +
superset-frontend/src/dataMask/reducer.ts | 15 +
superset-frontend/src/embedded/api.test.ts | 84 +
superset-frontend/src/embedded/api.tsx | 65 +-
.../src/explore/actions/exploreActions.test.ts | 219 +-
.../src/explore/actions/exploreActions.ts | 44 +-
.../src/explore/components/ControlHeader.test.tsx | 18 +
.../src/explore/components/ControlHeader.tsx | 37 +-
.../components/ControlPanelsContainer.test.tsx | 2 +-
.../CopyToClipboardButton.test.tsx | 4 +-
.../DataTablesPane/test/DataTableControls.test.tsx | 6 +-
.../DataTablesPane/test/DataTablesPane.test.tsx | 18 +-
.../DataTablesPane/test/useResultsPane.test.tsx | 4 +-
.../DatasourcePanelDragOption.test.tsx | 65 +-
.../DatasourcePanel/DatasourcePanelItem.test.tsx | 16 +-
.../components/DatasourcePanel/compatibility.ts | 18 +-
.../ExploreChartHeader/ExploreChartHeader.test.tsx | 8 +
.../ExploreViewContainer.test.tsx | 8 +-
.../AnnotationLayer.subdirectory.test.tsx | 2 +-
.../ColorBreakpointPopoverTrigger.tsx | 7 +-
.../ColorSchemeControl/ColorSchemeControl.test.tsx | 24 +-
.../FormattingPopoverContent.test.tsx | 129 +-
.../FormattingPopoverContent.tsx | 176 +-
.../ContourControl/ContourPopoverTrigger.tsx | 7 +-
.../ControlPopover/PopoverTriggerAnchors.test.tsx | 53 +
.../controls/DateFilterControl/DateFilterLabel.tsx | 116 +-
.../tests/DateFilterLabel.test.tsx | 114 +
.../components/controls/DateFilterControl/types.ts | 1 +
.../ColumnSelectPopover.test.tsx | 690 +-
.../DndColumnSelectControl/ColumnSelectPopover.tsx | 323 +-
.../ColumnSelectPopoverTrigger.tsx | 28 +-
.../DndColumnMetricSelect.test.tsx | 177 +-
.../DndColumnMetricSelect.tsx | 16 +-
.../DndColumnSelect.test.tsx | 181 +
.../DndColumnSelectControl/DndColumnSelect.tsx | 20 +-
.../DndFilterSelect.test.tsx | 80 +
.../utils/pickerCapabilities.test.ts | 101 +
.../utils/pickerCapabilities.ts | 82 +
...AdhocFilterEditPopoverSimpleTabContent.test.tsx | 93 +
.../index.tsx | 6 +
.../AdhocFilterPopoverTrigger/index.tsx | 10 +-
.../AdhocMetricEditPopover.test.tsx | 58 +
.../MetricControl/AdhocMetricEditPopover/index.tsx | 7 +-
.../MetricControl/AdhocMetricPopoverTrigger.tsx | 10 +-
.../MetricControl/MetricDefinitionOption.test.tsx | 2 +-
.../controls/TextControl/TextControl.test.tsx | 15 +
.../components/controls/TextControl/index.tsx | 16 +-
.../useExploreAdditionalActionsMenu/index.tsx | 10 +-
.../useExploreAdditionalActionsMenu.test.tsx | 24 +-
.../src/explore/reducers/exploreReducer.test.ts | 47 +-
.../src/explore/reducers/exploreReducer.ts | 14 +-
.../src/explore/selectors/compatibility.test.ts | 67 +
.../src/explore/selectors/compatibility.ts | 55 +
superset-frontend/src/explore/types.ts | 41 +-
.../src/features/alerts/AlertReportModal.test.tsx | 57 +-
.../src/features/alerts/AlertReportModal.tsx | 6 +-
.../alerts/components/AlertStatusIcon.test.tsx | 6 +-
.../datasets/AddDataset/Footer/Footer.test.tsx | 10 +-
.../src/features/home/ChartTable.test.tsx | 6 +-
.../src/features/home/LanguagePicker.test.tsx | 2 +-
superset-frontend/src/features/home/Menu.test.tsx | 18 +-
.../src/features/home/RightMenu.test.tsx | 12 +-
.../src/features/themes/ThemeModal.test.tsx | 177 +
.../src/features/themes/ThemeModal.tsx | 179 +-
superset-frontend/src/features/themes/types.ts | 3 +
.../src/features/userInfo/UserInfoModal.test.tsx | 102 +
.../src/features/userInfo/UserInfoModal.tsx | 11 +-
.../versionHistory/ChartVersionPreview.tsx | 5 +-
.../versionHistory/DashboardVersionHistory.tsx | 5 +-
.../versionHistory/ExploreVersionHistory.tsx | 5 +-
.../src/features/versionHistory/PreviewBanner.tsx | 5 +-
.../versionHistory/RelatedUpdateRow.test.tsx | 12 +-
.../features/versionHistory/SaveGroupItem.test.tsx | 91 +-
.../src/features/versionHistory/SaveGroupItem.tsx | 26 +
.../src/features/versionHistory/display.test.ts | 27 +
.../src/features/versionHistory/display.ts | 18 +
.../src/features/versionHistory/grouping.test.ts | 36 +
.../src/features/versionHistory/grouping.ts | 7 +
.../src/features/versionHistory/types.ts | 14 +
.../versionHistory/useDashboardVersionPreview.ts | 5 +-
.../versionHistory/useVersionActions.test.tsx | 6 +-
.../features/versionHistory/useVersionActions.tsx | 5 +-
.../src/filters/components/Range/index.ts | 1 +
.../components/Select/SelectFilterPlugin.tsx | 22 +-
.../src/filters/components/Select/index.ts | 1 +
.../components/Time/TimeFilterPlugin.test.tsx | 95 +
.../filters/components/Time/TimeFilterPlugin.tsx | 1 +
.../src/filters/components/Time/controlPanel.ts | 17 +
.../src/filters/components/Time/index.ts | 1 +
.../src/filters/components/Time/types.ts | 1 +
.../src/filters/components/TimeColumn/index.ts | 1 +
.../src/filters/components/TimeGrain/index.ts | 1 +
superset-frontend/src/filters/utils.ts | 9 +-
.../src/hooks/apiResources/datasets.test.ts | 84 +
.../src/hooks/apiResources/datasets.ts | 66 +-
.../DatabaseList.semanticLayerDelete.test.tsx | 139 +-
superset-frontend/src/pages/DatabaseList/index.tsx | 166 +-
.../DatasetList.connectionPermissions.test.tsx | 70 +
.../src/pages/DatasetList/DatasetList.test.tsx | 52 +
.../pages/DatasetList/DatasetList.testHelpers.tsx | 1 +
superset-frontend/src/pages/DatasetList/index.tsx | 18 +-
superset-frontend/src/pages/Home/Home.test.tsx | 2 +-
.../src/pages/ThemeList/ThemeList.test.tsx | 212 +
superset-frontend/src/pages/ThemeList/index.tsx | 48 +-
superset-frontend/src/setup/setupErrorMessages.ts | 5 +
superset-frontend/src/theme/ThemeController.ts | 21 +-
.../src/theme/tests/ThemeController.test.ts | 105 +-
superset-frontend/src/utils/common.ts | 3 +
.../src/utils/downloadAsImage.test.ts | 79 +-
superset-frontend/src/utils/downloadAsImage.tsx | 40 +-
.../src/utils/semanticViewStructure.test.ts | 85 +
.../src/utils/semanticViewStructure.ts | 129 +
superset-frontend/src/views/App.test.tsx | 125 +
superset-frontend/src/views/App.tsx | 28 +-
superset-websocket/package-lock.json | 532 +-
superset-websocket/package.json | 10 +-
.../utils/client-ws-app/package-lock.json | 14 +-
.../utils/client-ws-app/package.json | 2 +-
superset/charts/api.py | 54 +-
superset/charts/data/dashboard_filter_context.py | 6 +-
superset/charts/filters.py | 61 +-
superset/charts/schemas.py | 97 +-
superset/commands/chart/create.py | 18 +-
superset/commands/chart/importers/v1/utils.py | 12 +-
superset/commands/chart/update.py | 49 +-
superset/commands/chart/utils.py | 12 +
superset/commands/dashboard/create.py | 16 +
superset/commands/dashboard/exceptions.py | 26 +-
superset/commands/dashboard/filter_state/get.py | 49 +-
superset/commands/dashboard/update.py | 20 +-
superset/commands/database/exceptions.py | 19 +-
superset/commands/database/update.py | 80 +-
superset/commands/database/utils.py | 47 +
superset/commands/dataset/update.py | 8 +
.../commands/deletion_retention/prune_audit.py | 479 +-
superset/commands/importers/v1/utils.py | 19 +
superset/commands/report/execute.py | 478 +-
superset/commands/report/execution_claim.py | 199 +
superset/commands/report/update.py | 6 -
superset/commands/semantic_layer/create.py | 3 +-
superset/commands/semantic_layer/update.py | 108 +-
superset/commands/semantic_layer/utils.py | 56 +
superset/commands/soft_delete_collisions.py | 165 +
superset/commands/theme/create.py | 62 +
superset/commands/theme/delete.py | 8 +
superset/commands/theme/exceptions.py | 27 +-
superset/commands/theme/import_themes.py | 34 +-
superset/commands/theme/update.py | 25 +
superset/commands/version_restore.py | 17 +-
superset/common/query_context_processor.py | 22 +-
superset/common/utils/time_grain_utils.py | 41 +
superset/config.py | 45 +-
superset/connectors/sqla/models.py | 71 +-
superset/connectors/sqla/utils.py | 11 +-
superset/constants.py | 4 +
superset/core/mcp/core_mcp_injection.py | 111 +-
superset/daos/dashboard.py | 5 +
superset/daos/version.py | 4 +
superset/dashboards/api.py | 399 +-
superset/dashboards/filter_state/api.py | 32 +-
superset/dashboards/filters.py | 46 +-
superset/dashboards/layout.py | 269 +
superset/dashboards/schemas.py | 13 +
superset/datasets/api.py | 184 +-
superset/datasource/api.py | 4 +-
superset/db_engine_specs/README.md | 6 +-
superset/db_engine_specs/base.py | 112 +-
superset/db_engine_specs/databricks.py | 404 +-
superset/db_engine_specs/gsheets.py | 2 +
superset/db_engine_specs/lib.py | 22 +-
superset/db_engine_specs/mongodb.py | 63 +-
superset/db_engine_specs/mssql.py | 122 +
superset/db_engine_specs/odps.py | 34 +-
superset/db_engine_specs/pinot.py | 4 +
superset/db_engine_specs/presto.py | 4 +
superset/db_engine_specs/shillelagh.py | 39 +
superset/db_engine_specs/singlestore.py | 4 +-
superset/db_engine_specs/snowflake.py | 1 +
superset/embedded/view.py | 8 +-
superset/errors.py | 1 +
superset/exceptions.py | 21 +-
superset/explore/form_data/api.py | 7 +-
superset/explore/utils.py | 15 +
superset/extensions/metastore_cache.py | 77 +-
superset/jinja_context.py | 23 +-
superset/mcp_service/CLAUDE.md | 23 +-
superset/mcp_service/PRODUCTION.md | 2 +-
superset/mcp_service/README.md | 6 +-
superset/mcp_service/SECURITY.md | 2 +-
superset/mcp_service/__main__.py | 25 +-
superset/mcp_service/app.py | 27 +-
superset/mcp_service/auth.py | 15 +-
superset/mcp_service/chart/chart_helpers.py | 238 +-
superset/mcp_service/chart/chart_utils.py | 491 +-
superset/mcp_service/chart/compile.py | 21 +-
superset/mcp_service/chart/plugins/__init__.py | 6 +
superset/mcp_service/chart/plugins/big_number.py | 2 +-
superset/mcp_service/chart/plugins/box_plot.py | 2 +-
superset/mcp_service/chart/plugins/bubble.py | 149 +
superset/mcp_service/chart/plugins/gantt.py | 237 +
superset/mcp_service/chart/plugins/handlebars.py | 2 +-
superset/mcp_service/chart/plugins/histogram.py | 2 +-
.../mcp_service/chart/plugins/interactive_pivot.py | 2 +-
.../mcp_service/chart/plugins/mixed_timeseries.py | 2 +-
superset/mcp_service/chart/plugins/pie.py | 2 +-
superset/mcp_service/chart/plugins/pivot_table.py | 2 +-
superset/mcp_service/chart/plugins/table.py | 2 +-
superset/mcp_service/chart/plugins/treemap.py | 12 +-
superset/mcp_service/chart/plugins/waterfall.py | 2 +-
superset/mcp_service/chart/plugins/xy.py | 2 +-
superset/mcp_service/chart/preview_utils.py | 339 +-
superset/mcp_service/chart/query_result.py | 121 +-
.../mcp_service/chart/resources/chart_configs.py | 24 +
superset/mcp_service/chart/schemas.py | 1360 +-
superset/mcp_service/chart/tool/generate_chart.py | 16 +-
superset/mcp_service/chart/tool/get_chart_data.py | 44 +-
superset/mcp_service/chart/tool/get_chart_info.py | 327 +-
.../mcp_service/chart/tool/get_chart_preview.py | 93 +-
superset/mcp_service/chart/tool/get_chart_sql.py | 51 +-
.../chart/tool/get_chart_type_schema.py | 71 +-
superset/mcp_service/chart/tool/update_chart.py | 65 +-
.../mcp_service/chart/tool/update_chart_preview.py | 102 +-
superset/mcp_service/chart/treemap_preview.py | 297 +
.../chart/validation/dataset_validator.py | 27 +-
superset/mcp_service/chart/validation/pipeline.py | 34 +-
superset/mcp_service/common/schema_discovery.py | 7 +-
.../mcp_service/common/time_range_validation.py | 32 +-
superset/mcp_service/constants.py | 2 +-
.../mcp_service/dashboard/layout_validation.py | 54 +
superset/mcp_service/dashboard/permalink.py | 96 +-
superset/mcp_service/dashboard/schemas.py | 436 +-
superset/mcp_service/dashboard/tool/__init__.py | 2 +
.../tool/add_chart_to_existing_dashboard.py | 33 +-
.../dashboard/tool/apply_dashboard_filters.py | 485 +
.../dashboard/tool/duplicate_dashboard.py | 6 +
.../dashboard/tool/generate_dashboard.py | 22 +-
.../dashboard/tool/get_dashboard_datasets.py | 21 +-
.../dashboard/tool/get_dashboard_info.py | 28 +-
.../dashboard/tool/manage_native_filters.py | 4 +-
.../dashboard/tool/remove_chart_from_dashboard.py | 13 +-
.../mcp_service/dashboard/tool/update_dashboard.py | 14 +-
superset/mcp_service/dataset/schemas.py | 40 +-
.../mcp_service/dataset/tool/get_dataset_info.py | 21 +-
superset/mcp_service/dataset/tool/list_datasets.py | 55 +-
superset/mcp_service/dataset/tool/query_dataset.py | 11 +
.../dataset/tool/update_dataset_metric.py | 5 +
superset/mcp_service/dataset_scope.py | 261 +
superset/mcp_service/explore/schemas.py | 5 +-
.../explore/tool/generate_explore_link.py | 3 +-
superset/mcp_service/flask_singleton.py | 11 +
superset/mcp_service/mcp_config.py | 40 +-
superset/mcp_service/middleware.py | 630 +-
superset/mcp_service/semantic_layer/schemas.py | 83 +-
.../mcp_service/semantic_layer/tool/get_table.py | 179 +-
.../semantic_layer/tool/list_metrics.py | 9 +-
superset/mcp_service/server.py | 45 +-
superset/mcp_service/sql_lab/schemas.py | 18 +-
superset/mcp_service/sql_lab/tool/execute_sql.py | 19 -
superset/mcp_service/theme/tool/create_theme.py | 39 +-
.../{token_utils.py => response_size_utils.py} | 593 +-
superset/mcp_service/utils/response_utils.py | 17 +-
superset/mcp_service/utils/serialization.py | 225 +
superset/migrations/shared/migrate_viz/base.py | 7 +
.../migrations/shared/migrate_viz/processors.py | 6 +
superset/migrations/shared/security_converge.py | 34 +
...4_00-00_f7e8d9c0b1a2_add_theme_editors_table.py | 142 +
...339627c_merge_add_theme_editors_table_with_.py} | 36 +-
...655c0a6_merge_task_dependencies_with_theme_.py} | 36 +-
...4fb8bfc1_delete_deprecated_permissions_33272.py | 153 +
...a4572f8a_rename_deprecated_permissions_33272.py | 193 +
..._93d1b4a76c02_add_report_execution_ownership.py | 55 +
...e6_merge_deprecated_permissions_with_master.py} | 36 +-
...1_merge_theme_editors_and_purge_audit_heads.py} | 25 +-
...merge_deprecated_permissions_with_master_v2.py} | 36 +-
...merge_deprecated_permissions_with_master_v3.py} | 36 +-
superset/models/core.py | 8 +
superset/models/dashboard.py | 90 +-
superset/models/helpers.py | 240 +-
superset/models/slice.py | 24 +-
superset/models/sql_lab.py | 11 +-
superset/{sql/dialects => realtime}/__init__.py | 22 +-
superset/realtime/publish.py | 68 +
superset/reports/models.py | 2 +
superset/reports/notifications/base.py | 1 +
superset/reports/notifications/email.py | 16 +-
superset/reports/notifications/slack_mixin.py | 6 +-
superset/reports/notifications/webhook.py | 9 +-
superset/reports/schemas.py | 7 -
superset/security/api.py | 13 +-
superset/security/manager.py | 573 +-
superset/security/password_change.py | 11 +-
superset/security/session_invalidation.py | 16 +-
superset/semantic_layers/api.py | 81 +-
superset/semantic_layers/mapper.py | 31 +-
superset/semantic_layers/masking.py | 481 +
superset/semantic_layers/models.py | 26 +-
superset/sql/dialects/__init__.py | 2 +
superset/sql/dialects/databend.py | 604 +
superset/sql/execution/executor.py | 4 +-
superset/sql/parse.py | 117 +-
superset/sql_lab.py | 11 +-
superset/sql_validators/__init__.py | 3 +-
superset/sql_validators/postgres.py | 59 -
superset/sqllab/query_render.py | 9 +-
superset/subjects/models.py | 19 +
superset/superset_typing.py | 6 +
superset/tasks/async_queries.py | 3 +-
superset/tasks/manager.py | 19 +-
superset/tasks/scheduler.py | 13 +
superset/tasks/thumbnails.py | 66 +-
superset/templates/superset/spa.html | 13 +-
superset/temporary_cache/api.py | 3 +-
superset/themes/api.py | 87 +-
superset/themes/schemas.py | 14 +
superset/translations/ar/LC_MESSAGES/messages.po | 2204 +-
superset/translations/ca/LC_MESSAGES/messages.po | 2114 +-
superset/translations/cs/LC_MESSAGES/messages.po | 2129 +-
superset/translations/de/LC_MESSAGES/messages.po | 2111 +-
superset/translations/en/LC_MESSAGES/messages.po | 2042 +-
superset/translations/es/LC_MESSAGES/messages.po | 2119 +-
superset/translations/fa/LC_MESSAGES/messages.po | 2109 +-
superset/translations/fi/LC_MESSAGES/messages.po | 2388 +-
superset/translations/fr/LC_MESSAGES/messages.po | 2907 +-
superset/translations/it/LC_MESSAGES/messages.po | 50773 ++++++++++---------
superset/translations/ja/LC_MESSAGES/messages.po | 2066 +-
superset/translations/ko/LC_MESSAGES/messages.po | 2391 +-
superset/translations/lv/LC_MESSAGES/messages.po | 2120 +-
superset/translations/messages.pot | 2034 +-
superset/translations/mi/LC_MESSAGES/messages.po | 2114 +-
superset/translations/nl/LC_MESSAGES/messages.po | 2132 +-
superset/translations/pl/LC_MESSAGES/messages.po | 2145 +-
superset/translations/pt/LC_MESSAGES/messages.po | 2286 +-
.../translations/pt_BR/LC_MESSAGES/messages.po | 2122 +-
superset/translations/ro/LC_MESSAGES/messages.po | 2136 +-
superset/translations/ru/LC_MESSAGES/messages.po | 2110 +-
superset/translations/sk/LC_MESSAGES/messages.po | 2129 +-
superset/translations/sl/LC_MESSAGES/messages.po | 3250 +-
superset/translations/sr/LC_MESSAGES/messages.po | 2223 +-
.../translations/sr_Latn/LC_MESSAGES/messages.po | 2225 +-
superset/translations/ta/LC_MESSAGES/messages.po | 5342 +-
superset/translations/th/LC_MESSAGES/messages.po | 2366 +-
superset/translations/tr/LC_MESSAGES/messages.po | 2087 +-
superset/translations/uk/LC_MESSAGES/messages.po | 2148 +-
superset/translations/zh/LC_MESSAGES/messages.po | 2246 +-
.../translations/zh_TW/LC_MESSAGES/messages.po | 2111 +-
superset/utils/core.py | 4 +-
superset/utils/date_parser.py | 42 +-
superset/utils/error_sanitization.py | 1 +
superset/utils/filters.py | 98 +-
superset/utils/network.py | 115 +
.../utils/pandas_postprocessing/contribution.py | 48 +-
superset/utils/pandas_postprocessing/utils.py | 15 +-
superset/utils/report_execution.py | 108 +
superset/utils/rls.py | 156 +-
superset/utils/screenshot_utils.py | 383 +-
superset/utils/screenshots.py | 418 +-
superset/utils/webdriver.py | 323 +-
superset/versioning/activity/creation.py | 173 +
superset/versioning/activity/orchestrator.py | 32 +
superset/versioning/activity/queries.py | 22 +-
superset/versioning/api_helpers.py | 40 +-
superset/versioning/baseline/__init__.py | 2 +
superset/versioning/baseline/insertion.py | 10 +
superset/versioning/baseline/shadow.py | 5 +
superset/versioning/changes/__init__.py | 4 +
superset/versioning/changes/listener.py | 233 +-
superset/versioning/changes/shadow_queries.py | 11 +-
.../__init__.py => versioning/creation_kinds.py} | 32 +-
superset/versioning/db_errors.py | 75 +
superset/versioning/metrics.py | 37 +-
superset/versioning/queries.py | 194 +-
superset/versioning/restore.py | 223 +-
superset/versioning/schemas.py | 19 +
superset/views/base.py | 21 +-
superset/views/base_api.py | 83 +-
superset/views/core.py | 16 +-
superset/views/error_handling.py | 18 +-
superset/views/filters.py | 74 +-
superset/views/utils.py | 12 +
.../charts/semantic_save_tests.py | 140 +
.../charts/version_restore_tests.py | 3 +
tests/integration_tests/dashboards/api_tests.py | 1572 +-
.../dashboards/filter_state/api_tests.py | 75 +
.../dashboards/test_theme_integration.py | 6 +
tests/integration_tests/databases/api_tests.py | 100 +-
tests/integration_tests/datasets/api_tests.py | 108 +
.../deletion_retention/prune_audit_tests.py | 227 +-
tests/integration_tests/embedded/test_view.py | 23 +
.../extensions/metastore_cache_test.py | 80 +
.../commands/execute_dashboard_report_tests.py | 9 +-
tests/integration_tests/reports/commands_tests.py | 107 +-
.../reports/execution_claim_tests.py | 32 +
tests/integration_tests/security/api_tests.py | 28 +
.../security/row_level_security_tests.py | 33 +
tests/integration_tests/sql_validator_tests.py | 36 -
tests/integration_tests/sqllab_tests.py | 13 +-
tests/integration_tests/themes/api_tests.py | 7 +
.../integration_tests/themes/test_theme_editors.py | 291 +
.../versioning/activity_write_after_read_tests.py | 131 +
.../versioning/conditional_token_lock_tests.py | 363 +
.../versioning/creation_row_tests.py | 307 +
.../versioning/restore_fails_closed_tests.py | 621 +
tests/testcontainers/db_engine_specs/test_db2.py | 16 +-
.../charts/commands/importers/v1/utils_test.py | 69 +
.../charts/semantic_view_chart_filter_test.py | 481 +
tests/unit_tests/charts/test_chart_data_api.py | 62 +-
tests/unit_tests/charts/test_schemas.py | 170 +-
tests/unit_tests/commands/chart/create_test.py | 54 +-
tests/unit_tests/commands/chart/update_test.py | 117 +-
.../commands/dashboard/slug_collision_test.py | 246 +
tests/unit_tests/commands/dashboard/update_test.py | 46 +
tests/unit_tests/commands/databases/update_test.py | 209 +-
tests/unit_tests/commands/databases/utils_test.py | 58 +
.../commands/databases/validate_sql_test.py | 49 +-
tests/unit_tests/commands/dataset/update_test.py | 45 +
.../deletion_retention/test_prune_audit.py | 728 +-
.../unit_tests/commands/importers/v1/utils_test.py | 96 +-
tests/unit_tests/commands/report/execute_test.py | 1100 +-
.../commands/report/execution_claim_test.py | 412 +
.../report/execution_ownership_migration_test.py | 87 +
tests/unit_tests/commands/report/update_test.py | 10 +-
.../commands/semantic_layer/create_test.py | 17 +-
.../commands/semantic_layer/update_test.py | 160 +-
.../commands/test_base_restore_version_command.py | 84 +
.../common/test_query_context_processor.py | 117 +
tests/unit_tests/common/test_tabular_query.py | 74 +
tests/unit_tests/common/test_time_shifts.py | 318 +-
tests/unit_tests/connectors/sqla/models_test.py | 231 +
tests/unit_tests/connectors/sqla/utils_test.py | 83 +-
tests/unit_tests/dao/dashboard_test.py | 139 +
tests/unit_tests/dashboards/datasets_test.py | 353 +
.../unit_tests/dashboards/filter_state_api_test.py | 56 +
tests/unit_tests/dashboards/layout_test.py | 325 +
.../dashboards/semantic_view_access_test.py | 264 +-
tests/unit_tests/databases/api_test.py | 77 +
tests/unit_tests/databases/commands/delete_test.py | 21 +-
tests/unit_tests/datasets/api_tests.py | 216 +-
tests/unit_tests/db_engine_specs/test_base.py | 261 +-
.../unit_tests/db_engine_specs/test_databricks.py | 97 +-
.../db_engine_specs/test_databricks_multi_cloud.py | 4 +
tests/unit_tests/db_engine_specs/test_gsheets.py | 31 +-
tests/unit_tests/db_engine_specs/test_lib.py | 84 +
tests/unit_tests/db_engine_specs/test_mongodb.py | 205 +-
tests/unit_tests/db_engine_specs/test_mssql.py | 438 +
tests/unit_tests/db_engine_specs/test_odps.py | 19 +
tests/unit_tests/db_engine_specs/test_pinot.py | 41 +-
tests/unit_tests/db_engine_specs/test_presto.py | 14 +-
.../unit_tests/db_engine_specs/test_shillelagh.py | 100 +
tests/unit_tests/db_engine_specs/test_snowflake.py | 7 +-
tests/unit_tests/db_engine_specs/test_trino.py | 7 +-
tests/unit_tests/explore/form_data_api_test.py | 80 +
tests/unit_tests/explore/utils_test.py | 65 +
tests/unit_tests/jinja_context_test.py | 161 +
.../mcp_service/chart/test_bubble_chart.py | 471 +
.../mcp_service/chart/test_chart_examples.py | 59 +
.../mcp_service/chart/test_chart_helpers.py | 285 +
.../mcp_service/chart/test_chart_utils.py | 73 +
tests/unit_tests/mcp_service/chart/test_compile.py | 85 +
.../mcp_service/chart/test_gantt_chart.py | 2812 +
.../mcp_service/chart/test_preview_utils.py | 145 +-
.../mcp_service/chart/test_query_result.py | 71 +
.../chart/test_time_grain_generic_axes.py | 365 +
.../mcp_service/chart/test_treemap_completeness.py | 1373 +
.../mcp_service/chart/tool/test_generate_chart.py | 41 +-
.../mcp_service/chart/tool/test_get_chart_data.py | 266 +-
.../mcp_service/chart/tool/test_get_chart_info.py | 29 +-
.../chart/tool/test_get_chart_info_permalink.py | 454 +
.../chart/tool/test_get_chart_preview.py | 117 +
.../mcp_service/chart/tool/test_get_chart_sql.py | 165 +
.../chart/tool/test_get_chart_type_schema.py | 26 +
.../mcp_service/chart/tool/test_update_chart.py | 56 +
.../chart/tool/test_update_chart_preview.py | 84 +-
.../validation/test_column_name_normalization.py | 60 +
.../common/test_time_range_validation.py | 41 +-
.../dashboard/test_dashboard_schemas.py | 236 +
.../dashboard/test_layout_validation.py | 174 +
.../mcp_service/dashboard/test_permalink.py | 123 +-
.../tool/test_add_chart_to_existing_dashboard.py | 98 +
.../dashboard/tool/test_apply_dashboard_filters.py | 1174 +
.../dashboard/tool/test_dashboard_generation.py | 241 +-
.../dashboard/tool/test_dashboard_tools.py | 306 +-
.../dashboard/tool/test_duplicate_dashboard.py | 55 +
.../dashboard/tool/test_get_dashboard_datasets.py | 331 +-
.../tool/test_remove_chart_from_dashboard.py | 44 +
.../dashboard/tool/test_update_dashboard.py | 78 +-
.../database/tool/test_database_tools.py | 2 +-
.../mcp_service/dataset/tool/test_dataset_tools.py | 282 +-
.../mcp_service/dataset/tool/test_query_dataset.py | 99 +
.../dataset/tool/test_update_dataset_metric.py | 39 +
.../explore/tool/test_generate_explore_link.py | 49 +
.../mcp_service/query/tool/test_query_tools.py | 2 +-
.../saved_query/tool/test_saved_query_tools.py | 2 +-
.../semantic_layer/tool/test_get_table.py | 817 +-
.../semantic_layer/tool/test_list_metrics.py | 235 +-
.../mcp_service/sql_lab/tool/test_execute_sql.py | 104 +-
tests/unit_tests/mcp_service/test_dataset_scope.py | 504 +
.../unit_tests/mcp_service/test_main_entrypoint.py | 7 +-
tests/unit_tests/mcp_service/test_mcp_config.py | 16 +
tests/unit_tests/mcp_service/test_mcp_e2e_smoke.py | 123 +-
tests/unit_tests/mcp_service/test_mcp_server.py | 106 +-
.../mcp_service/test_mcp_tool_registration.py | 327 +-
tests/unit_tests/mcp_service/test_middleware.py | 893 +-
.../mcp_service/test_middleware_logging.py | 16 +-
.../mcp_service/test_rbac_tool_enforcement.py | 8 +-
.../mcp_service/test_response_serialization.py | 321 +
.../mcp_service/test_tool_search_transform.py | 40 +
.../mcp_service/theme/tool/test_create_theme.py | 89 +-
..._token_utils.py => test_response_size_utils.py} | 568 +-
.../mcp_service/utils/test_response_utils.py | 24 +
.../mcp_service/utils/test_serialization.py | 294 +
.../migrations/shared/security_converge_test.py | 218 +
.../migrations/test_add_theme_editors.py | 166 +
.../test_deprecated_permissions_33272.py | 420 +
.../migrations/test_single_migration_head.py | 19 +-
tests/unit_tests/models/core_test.py | 23 +
tests/unit_tests/models/helpers_test.py | 49 +-
tests/unit_tests/models/slice_test.py | 80 +-
tests/unit_tests/models/sql_lab_test.py | 62 +-
.../pandas_postprocessing/test_aggregate.py | 21 +
.../pandas_postprocessing/test_contribution.py | 106 +
.../reports/notifications/email_tests.py | 38 +-
.../reports/notifications/slack_tests.py | 18 +
.../reports/notifications/webhook_tests.py | 71 +-
tests/unit_tests/reports/schemas_test.py | 28 +
.../scheduled_docker_image_refresh_test.py | 65 -
tests/unit_tests/scripts/docker_cache_ref_test.py | 90 +
.../scripts/translations/check_pot_drift_test.py | 156 +
tests/unit_tests/security/manager_test.py | 1203 +-
.../security/test_guest_token_empty_filter.py | 115 +
tests/unit_tests/security/test_password_change.py | 68 +-
.../security/test_permission_instructions_link.py | 2 +
.../security/test_session_invalidation.py | 18 +
tests/unit_tests/semantic_layers/api_test.py | 352 +-
.../semantic_layers/connections_access_test.py | 402 +
.../fixtures/snowflake_configuration.json | 172 +
tests/unit_tests/semantic_layers/mapper_test.py | 213 +-
tests/unit_tests/semantic_layers/masking_test.py | 870 +
tests/unit_tests/semantic_layers/models_test.py | 168 +
.../semantic_layers/provider_masking_test.py | 107 +
.../semantic_layers/values_endpoint_test.py | 4 +-
.../unit_tests/soft_delete}/__init__.py | 0
.../soft_delete/test_restore_purge_hoist.py | 268 +
.../sql/dialects/databend_function_catalogue.txt | 741 +
tests/unit_tests/sql/dialects/databend_tests.py | 1553 +
tests/unit_tests/sql/execution/test_executor.py | 58 +
tests/unit_tests/sql/parse_tests.py | 67 +
tests/unit_tests/sql_lab_test.py | 177 +
tests/unit_tests/subjects/test_filters.py | 25 +
tests/unit_tests/subjects/test_raise_for_access.py | 82 +
.../subjects/test_report_executor_remediation.py | 148 +
tests/unit_tests/tasks/test_async_queries.py | 43 +
.../tasks/test_scheduler_soft_timeout.py | 17 +
tests/unit_tests/tasks/test_thumbnails.py | 75 +
tests/unit_tests/test_realtime_publish.py | 124 +
tests/unit_tests/themes/api_test.py | 6 +
tests/unit_tests/themes/commands_test.py | 22 +-
tests/unit_tests/utils/date_parser_tests.py | 107 +
tests/unit_tests/utils/filters_test.py | 43 +-
tests/unit_tests/utils/screenshot_test.py | 279 +
tests/unit_tests/utils/test_network.py | 81 +-
tests/unit_tests/utils/test_report_execution.py | 64 +
.../unit_tests/utils/test_screenshot_cache_fix.py | 79 +
tests/unit_tests/utils/test_screenshot_utils.py | 455 +-
tests/unit_tests/utils/webdriver_test.py | 450 +-
tests/unit_tests/versioning/test_activity.py | 208 +-
tests/unit_tests/versioning/test_db_errors.py | 205 +-
tests/unit_tests/versioning/test_listener.py | 565 +-
tests/unit_tests/versioning/test_restore.py | 245 +-
.../unit_tests/versioning/test_retention_races.py | 4 +
.../versioning/test_version_info_locking.py | 108 +
tests/unit_tests/views/test_base_theme_helpers.py | 62 +
tests/unit_tests/views/test_error_handling.py | 136 +-
tests/unit_tests/views/test_i18n_constants.py | 640 +
tests/unit_tests/views/test_utils.py | 69 +-
815 files changed, 152673 insertions(+), 47318 deletions(-)
delete mode 100644 .github/workflows/scheduled-docker-image-refresh.yml
create mode 100644 scripts/docker-build-plan.sh
create mode 100644 scripts/docker-publish-guard.sh
create mode 100644 scripts/translations/check_pot_drift.py
create mode 100644
superset-frontend/packages/superset-ui-core/src/chart/components/Matrixify/virtualizationEvents.ts
create mode 100644
superset-frontend/packages/superset-ui-core/test/connection/SupersetClientCsrfRecovery.test.ts
create mode 100644 superset-frontend/playwright/helpers/embeddedAppServer.ts
create mode 100644
superset-frontend/playwright/tests/dashboard/dashboard-native-filter-url-key.spec.ts
create mode 100644
superset-frontend/playwright/tests/dashboard/native-filters.spec.ts
create mode 100644
superset-frontend/playwright/tests/dashboard/version-history-placement.spec.ts
create mode 100644
superset-frontend/playwright/tests/embedded/embedded-iframe-sizing.spec.ts
create mode 100644
superset-frontend/plugins/plugin-chart-country-map/test/russia.geojson.test.ts
create mode 100644
superset-frontend/plugins/plugin-chart-echarts/test/Histogram/transformProps.test.ts
create mode 100644
superset-frontend/src/components/ErrorMessage/CsrfErrorMessage.test.tsx
copy superset-frontend/src/{filters/components/Time/index.ts =>
components/ErrorMessage/CsrfErrorMessage.tsx} (50%)
create mode 100644
superset-frontend/src/dashboard/components/PropertiesModal/PropertiesModal.lateFieldMount.test.tsx
create mode 100644
superset-frontend/src/dashboard/components/nativeFilters/FiltersConfigModal/hooks/useFilterOperations.test.ts
create mode 100644
superset-frontend/src/dashboard/components/nativeFilters/useDisplayControlDatasource.test.ts
create mode 100644
superset-frontend/src/dashboard/components/nativeFilters/useDisplayControlDatasource.ts
create mode 100644
superset-frontend/src/dashboard/useDashboardFilterSync.test.tsx
create mode 100644 superset-frontend/src/dashboard/useDashboardFilterSync.ts
copy superset-frontend/{packages/superset-ui-core/src/components/Form/Form.tsx
=> src/dashboard/util/embeddedLayout.ts} (60%)
create mode 100644
superset-frontend/src/dashboard/util/removeUnreachableComponents.test.ts
create mode 100644
superset-frontend/src/dashboard/util/removeUnreachableComponents.ts
create mode 100644
superset-frontend/src/explore/components/controls/ControlPopover/PopoverTriggerAnchors.test.tsx
create mode 100644
superset-frontend/src/explore/components/controls/DndColumnSelectControl/utils/pickerCapabilities.test.ts
create mode 100644
superset-frontend/src/explore/components/controls/DndColumnSelectControl/utils/pickerCapabilities.ts
create mode 100644
superset-frontend/src/explore/selectors/compatibility.test.ts
create mode 100644 superset-frontend/src/explore/selectors/compatibility.ts
create mode 100644
superset-frontend/src/features/userInfo/UserInfoModal.test.tsx
create mode 100644
superset-frontend/src/filters/components/Time/TimeFilterPlugin.test.tsx
create mode 100644
superset-frontend/src/pages/DatasetList/DatasetList.connectionPermissions.test.tsx
create mode 100644 superset-frontend/src/utils/semanticViewStructure.test.ts
create mode 100644 superset-frontend/src/utils/semanticViewStructure.ts
create mode 100644 superset-frontend/src/views/App.test.tsx
create mode 100644 superset/commands/report/execution_claim.py
create mode 100644 superset/commands/semantic_layer/utils.py
create mode 100644 superset/commands/soft_delete_collisions.py
create mode 100644 superset/commands/theme/create.py
create mode 100644 superset/common/utils/time_grain_utils.py
create mode 100644 superset/dashboards/layout.py
create mode 100644 superset/mcp_service/chart/plugins/bubble.py
create mode 100644 superset/mcp_service/chart/plugins/gantt.py
create mode 100644 superset/mcp_service/chart/treemap_preview.py
create mode 100644
superset/mcp_service/dashboard/tool/apply_dashboard_filters.py
create mode 100644 superset/mcp_service/dataset_scope.py
rename superset/mcp_service/utils/{token_utils.py => response_size_utils.py}
(60%)
create mode 100644 superset/mcp_service/utils/serialization.py
create mode 100644
superset/migrations/versions/2026-07-24_00-00_f7e8d9c0b1a2_add_theme_editors_table.py
copy superset/{sql/dialects/__init__.py =>
migrations/versions/2026-09-04_19-03_aa5fa339627c_merge_add_theme_editors_table_with_.py}
(67%)
copy superset/{sql/dialects/__init__.py =>
migrations/versions/2026-09-09_00-00_0884f655c0a6_merge_task_dependencies_with_theme_.py}
(67%)
create mode 100644
superset/migrations/versions/2026-09-10_00-00_1f5f4fb8bfc1_delete_deprecated_permissions_33272.py
create mode 100644
superset/migrations/versions/2026-09-10_00-01_3ce9a4572f8a_rename_deprecated_permissions_33272.py
create mode 100644
superset/migrations/versions/2026-09-16_00-00_93d1b4a76c02_add_report_execution_ownership.py
copy superset/{sql/dialects/__init__.py =>
migrations/versions/2026-09-16_00-01_2ce579e91ae6_merge_deprecated_permissions_with_master.py}
(67%)
copy superset/{sql_validators/__init__.py =>
migrations/versions/2026-09-16_22-55_60f94cd6cd11_merge_theme_editors_and_purge_audit_heads.py}
(63%)
copy superset/{sql/dialects/__init__.py =>
migrations/versions/2026-09-17_00-00_53a7abc31422_merge_deprecated_permissions_with_master_v2.py}
(67%)
copy superset/{sql/dialects/__init__.py =>
migrations/versions/2026-09-23_00-00_95d8a99c822e_merge_deprecated_permissions_with_master_v3.py}
(67%)
copy superset/{sql/dialects => realtime}/__init__.py (66%)
create mode 100644 superset/realtime/publish.py
create mode 100644 superset/semantic_layers/masking.py
create mode 100644 superset/sql/dialects/databend.py
delete mode 100644 superset/sql_validators/postgres.py
create mode 100644 superset/versioning/activity/creation.py
copy superset/{sql/dialects/__init__.py => versioning/creation_kinds.py} (64%)
create mode 100644 tests/integration_tests/charts/semantic_save_tests.py
create mode 100644 tests/integration_tests/reports/execution_claim_tests.py
create mode 100644 tests/integration_tests/themes/test_theme_editors.py
create mode 100644
tests/integration_tests/versioning/activity_write_after_read_tests.py
create mode 100644
tests/integration_tests/versioning/conditional_token_lock_tests.py
create mode 100644 tests/integration_tests/versioning/creation_row_tests.py
create mode 100644
tests/integration_tests/versioning/restore_fails_closed_tests.py
create mode 100644 tests/unit_tests/charts/semantic_view_chart_filter_test.py
create mode 100644 tests/unit_tests/commands/dashboard/slug_collision_test.py
create mode 100644 tests/unit_tests/commands/report/execution_claim_test.py
create mode 100644
tests/unit_tests/commands/report/execution_ownership_migration_test.py
create mode 100644 tests/unit_tests/dashboards/datasets_test.py
create mode 100644 tests/unit_tests/dashboards/layout_test.py
create mode 100644 tests/unit_tests/db_engine_specs/test_lib.py
create mode 100644 tests/unit_tests/db_engine_specs/test_shillelagh.py
create mode 100644 tests/unit_tests/explore/form_data_api_test.py
create mode 100644 tests/unit_tests/mcp_service/chart/test_bubble_chart.py
create mode 100644 tests/unit_tests/mcp_service/chart/test_chart_examples.py
create mode 100644 tests/unit_tests/mcp_service/chart/test_gantt_chart.py
create mode 100644 tests/unit_tests/mcp_service/chart/test_query_result.py
create mode 100644
tests/unit_tests/mcp_service/chart/test_time_grain_generic_axes.py
create mode 100644
tests/unit_tests/mcp_service/chart/test_treemap_completeness.py
create mode 100644
tests/unit_tests/mcp_service/chart/tool/test_get_chart_info_permalink.py
create mode 100644
tests/unit_tests/mcp_service/dashboard/tool/test_apply_dashboard_filters.py
create mode 100644 tests/unit_tests/mcp_service/test_dataset_scope.py
create mode 100644 tests/unit_tests/mcp_service/test_response_serialization.py
rename tests/unit_tests/mcp_service/utils/{test_token_utils.py =>
test_response_size_utils.py} (60%)
create mode 100644 tests/unit_tests/mcp_service/utils/test_serialization.py
create mode 100644 tests/unit_tests/migrations/shared/security_converge_test.py
create mode 100644 tests/unit_tests/migrations/test_add_theme_editors.py
create mode 100644
tests/unit_tests/migrations/test_deprecated_permissions_33272.py
copy superset/sql_validators/__init__.py =>
tests/unit_tests/migrations/test_single_migration_head.py (64%)
delete mode 100644 tests/unit_tests/scheduled_docker_image_refresh_test.py
create mode 100644 tests/unit_tests/scripts/docker_cache_ref_test.py
create mode 100644
tests/unit_tests/scripts/translations/check_pot_drift_test.py
create mode 100644 tests/unit_tests/security/test_guest_token_empty_filter.py
create mode 100644 tests/unit_tests/semantic_layers/connections_access_test.py
create mode 100644
tests/unit_tests/semantic_layers/fixtures/snowflake_configuration.json
create mode 100644 tests/unit_tests/semantic_layers/masking_test.py
create mode 100644 tests/unit_tests/semantic_layers/provider_masking_test.py
copy {scripts => tests/unit_tests/soft_delete}/__init__.py (100%)
create mode 100644 tests/unit_tests/soft_delete/test_restore_purge_hoist.py
create mode 100644
tests/unit_tests/sql/dialects/databend_function_catalogue.txt
create mode 100644 tests/unit_tests/sql/dialects/databend_tests.py
create mode 100644
tests/unit_tests/subjects/test_report_executor_remediation.py
create mode 100644 tests/unit_tests/test_realtime_publish.py
create mode 100644 tests/unit_tests/versioning/test_version_info_locking.py
create mode 100644 tests/unit_tests/views/test_i18n_constants.py