You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@superset.apache.org by ru...@apache.org on 2026/09/19 22:10:52 UTC
(superset) branch fix/guest-token-embedded-scoping updated (f23dc32a763 -> 1d786fa6ac7)
This is an automated email from the ASF dual-hosted git repository.
rusackas pushed a change to branch fix/guest-token-embedded-scoping
in repository https://gitbox.apache.org/repos/asf/superset.git
omit f23dc32a763 fix(security): scope annotation-layer tampering check to current chart params
omit 39b86938223 refactor(security): share the row-expanding result-type check between chartless guards
omit c89e5edefc3 refactor(security): table-drive the guest payload comparators in query_context_modified
omit 05dc360b287 fix(security): reject Drill By row-expanding result types on chartless requests
omit 32e3b5aba65 fix(security): reject row-expanding result types on native-filter requests
omit bac3e50a11f fix(embedded): compare each query's result type against its own stored query, not the flattened set
omit b066cdb894b fix(embedded): stop rendering dashboard title/description before guest auth
omit e08790c9517 fix(guest-tokens): reject result types that expand a chart to raw rows
omit f452ecc4989 fix(guest-tokens): reject annotation layers not on the stored chart
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 57eafd75e0c docs(handlebars): correct helper names that are not registered (#44020)
add 067a356b6f0 fix(chart): include echart_options in Matrixify render-trigger allowlist (#43946)
add 3ccab2ea7aa fix(time-format): share DateWithFormatter and stop reading four-digit years as epoch offsets (#43909)
add a114b4cc468 fix(import): skip redundant has_table check when dataset import has no data URI (#43808)
add 85ea6e900a4 docs(mcp): document MCP_STATELESS_HTTP and its multi-pod tradeoff (#43902)
add 60553b4326a docs(ag-grid): document Show summary support for Raw Records mode (#43905)
add 7029c468c4d fix(reports): bound CSV transport retries and sanitize failures (#43977)
add bc35151350c docs(handlebars): correct helper names in the 6.1.0 versioned docs (#44024)
add 04ab089962f chore(deps): bump @swc/html from 1.15.43 to 1.16.2 in /docs in the security group across 1 directory (#44023)
add 5986fe92c2f fix(rls): roll back db.session after RLS failure in get_from_clause (#43883)
add e6d088d6b1b fix(mcp): surface rejected filter columns in get_chart_sql (#43680)
add 10866337c5c docs(helm): document Gateway API HTTPRoute support (#43635)
add 1339bdc6ce1 ci: bump ASF allowlist-check to v1.0.1 for self-repository syntax support (#44014)
add 7b65d222050 chore(tags): TAGGING_SYSTEM to True by default (#39888)
add 83d5d1ccdad fix(security): use GitHub self-repository syntax for local action ref (#43961)
add 02ea5775c10 fix(ci): use self-repository syntax for local supersetbot action ref (#43963)
add 9d89dbddc7b fix(security): use self-repository syntax for change-detector action ref (#43971)
add 0e6170aaa3b fix(security): use self-repository syntax for setup-backend ref in unit-test workflow (#43970)
add 380675662d8 fix(ci): use self-repository syntax for local actions in presto-hive workflow (#43975)
add 3564baabf6e fix(security): suppress zizmor self-repository false positive for setup-backend step (#44018)
add 335a2a78ea8 fix(dashboard): expand clipped scrollable content before screenshot/PDF export (#43979)
add fa31e9c1c32 fix(security): suppress zizmor self-repository false positive for cached-dependencies (#43972)
add 362d3509cb0 fix(security): suppress zizmor self-repository false positive for cached-dependencies in presto-hive workflow (#43984)
add 3828dcb9225 fix(security): suppress zizmor self-repository false positive for cached-dependencies in presto-hive workflow (#43976)
add 91f4d01ca2c fix(chart-creation): stop antd v6 Steps from doubling the icon-content gap (#43730)
add c510946df55 fix: BigQuery pivot-table Custom SQL row label with a space drops from GROUPING SETS (#43720)
add 9de50b85e5a chore(deps): bump the security group across 1 directory with 3 updates (#44029)
add d0f139c2104 feat(deps): bump `flask-caching` from 2.4.1 to 2.5.0 + bump `flask` from v2 to v3 (#43875)
add 2875c76d55a chore(deps): bump react-ace from 14.0.1 to 15.0.0 in /superset-frontend (#42833)
add acb29937aed chore(deps): bump the security group across 1 directory with 3 updates (#44030)
add 986b648f1ca fix(versioning): resolve dashboard M2M membership by attach/detach windows, not end_transaction_id (#44010)
add daf41bdf046 fix(security): suppress zizmor self-repository false positive for sqlite install-deps step (#44002)
add 9669e414711 chore(build): remove legacy re-export shim used for development (#42190)
add c9965c7bf41 feat(folders): drag and drop visible elements (columns/metrics) of folders in explore view (#42483)
add 5d771e9f467 fix(dataset): apply the import overwrite permission check to identity-matched datasets (#43058)
add 50c1504cac4 fix(db_engine_specs): cast VARCHAR before Postgres DATE_TRUNC (#43167)
add c503f92642a fix(charts): restrict Prophet time grain schema validation to supported Prophet grains (#43585)
add 613871ed363 fix(native-filters): stabilize DefaultValue's filterState object identity (#43859)
add 4f26627a6a9 fix(native-filters): stop Date Range calendar popup from clipping in overflow dropdown (#43978)
add fc110d8428f fix(versioning): enforce is_managed_externally on version restore (#44013)
add c76e4d98f2c fix(api): advertise only the time grains Prophet can resolve (#43710)
add 1ab6077e060 fix(filters): clamp filter bar row while remeasuring after items change (#43966)
add 9079f002ee1 fix(dashboard): scope tab-diff report lookup to the edited dashboard (#43989)
add de08dc207c0 chore(deps-dev): bump @types/node from 26.4.0 to 26.4.1 in /superset-frontend (#44062)
add 010c7a12edb chore(deps): bump query-string from 9.5.0 to 9.5.1 in /superset-frontend (#44061)
add 176a50d2544 chore(deps-dev): bump webpack from 5.110.2 to 5.110.3 in /superset-frontend (#44060)
add cb2188aec3e chore(deps-dev): bump babel-jest from 30.5.0 to 30.5.1 in /superset-frontend (#44059)
add 638f87de5f7 chore(deps-dev): bump jest from 30.5.0 to 30.5.1 in /superset-frontend (#44058)
add 677e9189f12 chore(deps-dev): bump oxfmt from 0.65.0 to 0.66.0 in /superset-frontend (#44056)
add e170822a28d chore(deps-dev): bump oxfmt from 0.65.0 to 0.66.0 in /docs (#44054)
add ea287c1ab0f chore(deps-dev): bump webpack from 5.110.2 to 5.110.3 in /docs (#44053)
add 5e99f14ac90 chore(deps-dev): bump oxlint from 1.80.0 to 1.81.0 in /superset-websocket (#44051)
add 0a412b07cb0 chore(deps-dev): bump webpack from 5.110.2 to 5.110.3 in /superset-embedded-sdk (#44050)
add d38f20e5ad2 chore(deps): bump query-string from 9.5.0 to 9.5.1 in /superset-frontend (#44061)
add e43f44e91ed chore(deps-dev): bump @types/node from 26.4.0 to 26.4.1 in /superset-embedded-sdk (#44048)
add df95ab23ec2 chore(deps-dev): bump @types/node from 26.4.0 to 26.4.1 in /superset-websocket (#44046)
add 49b9347974e fix(charts): preserve dataset conversion when saving SQL Lab charts (#43988)
add 7b83ed83746 fix(mcp): align execute_sql table-access checks with the SQL Lab path (#43998)
add 954dbc9ff61 fix(dataset): validate SQL table access on virtual dataset import (#43999)
add 57a92170bd5 fix(chart): apply the query-context datasource check on create and update (#43997)
add 4d8dfdd1520 fix(sqllab): restrict TabStateView updates to owned columns and queries (#43992)
add 97329bb1cf1 fix(reports): detect perceptually blank screenshots (#44034)
add 08e686b5353 fix(mcp): complete Gauge chart support follow-up (#43943)
add 07a8f8b9845 chore(deps-dev): bump oxlint from 1.80.0 to 1.81.0 in /docs (#44052)
add 7f06e4eb605 feat(table): add opt-in migration from Table V1 to Table V2 (#42088)
add d1ad6aeda63 chore(docker): speed up image builds and the compose dev loop (#43916)
add 80ebfad0941 fix(security): suppress zizmor self-repository false positive for npm install step (#44076)
add c442180328f fix(security): use self-repository syntax for chart-testing action ref (#44083)
add 68528e33086 chore(deps-dev): bump jest-environment-jsdom from 30.5.0 to 30.5.1 in /superset-frontend (#44055)
add 4686d133796 fix(security): use self-repository syntax for change-detector in Playwright workflow (#44086)
add 0fe58044cba fix(security): use self-repository syntax for setup-backend in Playwright workflow (#44085)
add f73ccee7829 fix(couchbase): remove debug prints that emit the connection URI to stdout (#44070)
add 072a29ddb55 fix(security): suppress zizmor self-repository false positive for playwright build step (#44073)
add ce700f389c7 fix(security): suppress zizmor self-repository false positive for postgres setup step (#44084)
add 4aca0d7da41 fix(security): suppress zizmor self-repository false positive for playwright install step (#44074)
add 09522cc4b89 fix(security): suppress zizmor self-repository false positive for playwright test-data step (#44075)
add 196fe87c54b fix(security): use self-repository syntax for setup-backend in mysql job (#44066)
add b1c6401e82c fix(security): suppress zizmor self-repository false positive for mysql setup step (#44067)
add 9267d8b6669 fix(security): suppress zizmor self-repository false positive for playwright experimental step (#44064)
add 4dcc800b58c fix(security): use self-repository syntax for change-detector in integration tests (#44065)
add a78591be60e chore(deps-dev): bump oxfmt from 0.65.0 to 0.66.0 in /superset-websocket (#44049)
add 078915f4ced docs(contributing): update legacy rst reference (#44087)
add f66843ef0c7 fix(plugin-chart-table): stop narrowing sticky header/footer width (#43937)
add 0534d569d03 fix(sqllab): mark early-cancelled query stopped, not stuck running (#43889)
add 70346a51b69 perf(examples): dedupe dataset imports, right-size chunksize, add timing to load_examples (#43907)
add 29dd683f801 fix(database): set default catalog on dataset created from file uploads (#43586)
add b1185d8c05c fix(sql): preserve optimizer hints when formatting semicolon-terminated statements with trailing comments (#43565)
add e0103fa8896 fix(plugin-chart-echarts): honor per-metric formats in Timeseries tooltips (#43113)
add 67d170e6119 fix(reports): don't send both chart and dashboard on create (#43137)
add 3e13b89427e feat(ci): add testcontainers-based db_engine_specs tests (7 dialects) (#43502)
add 0484f9c2091 fix(database): sync schema_access permissions on import (#43950)
add f8caa2bc2b4 fix(dashboard): stop duplicate cross-filter chips in FilterBar (#43949)
add f69023a9c6c fix(dashboard): freeze nested tabs to the top when scrolling down (#43940)
add 9a02c4b611b chore: deprecate helm chart (#44097)
add 74eb298eb68 fix(mcp): preserve chart form data on update (#43679)
add b75f6292862 chore(deps-dev): bump oxlint from 1.80.0 to 1.81.0 in /superset-frontend (#44057)
add a9424afb4e9 chore(deps-dev): remove unused `globals` from /superset-websocket (#44047)
add e4440b614c5 fix(database): reject non-dict extra field in extra_validator (#44092)
add 62fa7a371b8 fix(charts/data): return 400 instead of 500 on reversed date range (SC-118279) (#43517)
add 3f780c503ec fix(ci): add per-PR concurrency to the Showtime trigger workflow (#44120)
add bc057813ae7 feat(ci): restore container image vulnerability scanning with Grype (#44035)
add 4e4cdf421c4 fix(security): suppress zizmor self-repository false positive for hive setup-postgres step (#44037)
add 71e6c5f3cdc fix(security): suppress zizmor self-repository false positive for postgres setup step (#44038)
add 37c6037452c fix(security): use self-repository syntax for setup-backend in postgres job (#44040)
add 638ad7980c1 fix(security): suppress zizmor self-repository false positive for celery worker step (#43986)
add 09ae6fa3c3f fix(security): suppress zizmor self-repository false positive for sqlite celery worker step (#43996)
add 2030adb5ce7 fix(security): suppress zizmor self-repository false positive for mysql celery worker step (#44041)
add 4edf7b10052 fix(deps): cap mcp to <2.0 to match fastmcp 3.x's own constraint (#44039)
add c915e63aa4f fix(security): suppress zizmor self-repository false positive for playwright mobile step (#44045)
add 731a97dbe66 fix(security): suppress zizmor self-repository false positive for postgres celery worker step (#44026)
add af2563f9c3a docs(i18n): document versioned language pack script delivery (#43904)
add bdae45fee3f docs(mcp): document delete_chart and delete_dashboard tools (#43898)
add b02c7afa00a feat(resample): Add "Fill the entire time range" option to Resample controls (#42587) (#42609)
add 1b469831273 fix(sql): detect disallowed functions via AST (#42072)
add b9407b67b3f fix(ci): skip Showtime jobs for unrelated PR events (#44123)
add 1820a162dbe fix(maplibre): wire up maplibre-gl 6's worker for plugin-chart-point-cluster-map (#44042)
add 181ca7d0eb9 fix(country-map): Madagascar's boundaries should have unique ISO (#42471)
add 64205357d25 fix(rison-filters): only catch ParserException when parsing filters (#43076)
add e22ce197866 fix(i18n): improve Simplified Chinese translations (#43813)
add b6ead0d4292 fix(semantic-layers): apply datasource access checks on layer endpoints (#41430)
add fbd75f00865 fix(dashboard): apply the import overwrite permission check to slug-matched dashboards (#42582)
add e5c2a3e4f68 fix(datasets): warn about affected charts and dashboards on bulk delete (#43967)
add 46d40e18b04 fix(mcp): expose resolved query time boundaries (#44105)
add b20ad093910 feat: add conditional formating to CountryMap plugin (#42941)
add 7df4bf3f776 fix(country-map): Malawi map - add missing Karonga district, de-duplicate Chitipa (#42842)
add f490bf5a784 fix(funnel): prevent horizontal legends from overlapping the chart by default (#43112)
add 3f644427851 fix(docker): install the frontend from the lockfile in docker-frontend.sh (#43168)
add 12e747437d1 fix(reports): recheck readiness at capture time (#44114)
add 78e1762255b fix(mcp): honor forwarded active dashboard filters in get_chart_preview and get_chart_info (#44022)
add 39944ffd470 fix(mcp): make unknown dataset dimension errors actionable (#44106)
add 13b7bcd6c1e fix(sqllab): wrap raw DBAPI errors in query cost estimation (#43934)
add 412ab43712b fix(cache): key on resolved bounds when a query has no time_range (#43914)
add 1b03ad89fb7 feat(mcp): treemap chart type plugin (#43569)
add 70961a68b9c chore(ci): use self-repository syntax for local action references (#44131)
add 89565dbb49d fix(explore): surface a toast when pivot Excel export can't find the table (#44031)
add eb8efaa8f5c chore(deps-dev): bump yeoman-test from 11.6.0 to 11.7.0 in /superset-frontend (#44137)
add d3d09b9ae7a chore(deps): bump react-map-gl from 8.1.2 to 8.1.3 in /superset-frontend (#44136)
add be608f7359e chore(deps-dev): bump the storybook group in /superset-frontend with 6 updates (#44135)
add b415d78ac78 chore(deps): bump the storybook group in /docs with 2 updates (#44134)
add 06e3a325ae8 chore(deps): bump pymongosql to 0.7.4 (#44166)
add 0aa445ed0fb chore(deps-dev): bump baseline-browser-mapping from 2.11.20 to 2.11.21 in /superset-frontend (#44164)
add 789b9055210 chore(deps): bump mapbox-gl from 3.29.0 to 3.30.0 in /superset-frontend (#44163)
add b3aa8ef796b chore(deps-dev): bump minimizer-webpack-plugin from 5.8.0 to 5.9.0 in /superset-frontend (#44162)
add f1d1a826cad chore(deps): bump supercluster from 9.0.0 to 9.1.0 in /superset-frontend (#44161)
add 36361d9d046 chore(deps): bump postcss from 8.5.26 to 8.5.28 in /superset-frontend (#44160)
add 774a51124ed chore(deps): bump baseline-browser-mapping from 2.11.20 to 2.11.21 in /docs (#44159)
add 0a4d3ee3aca chore(deps-dev): bump vitest from 4.1.11 to 5.0.0 in /superset-websocket (#44157)
add 83530957a8d chore(deps-dev): bump vitest from 4.0.18 to 5.0.0 in /superset-embedded-sdk (#44158)
add 1f9782ee585 docs(versioning): describe the one-time settings-migration history entry (#43776)
add b366958da31 docs(security): edit-gate version-history and change metadata (#44033)
add 3d01094d231 feat(docker): batteries-included default image, minimal image to -lean (#44100)
add 3e7bdec53bb ci(python-unit): run the unit suite in parallel with pytest-xdist (#44178)
add e41f019fb2d chore(deps-dev): bump pymssql from 2.3.13 to 2.4.0 (#44199)
add 5f07d383346 chore(deps-dev): bump clickhouse-connect from 1.7.2 to 1.8.0 (#44198)
add ba606e043c4 chore(deps): bump flask-caching from 2.5.0 to 2.5.1 (#44196)
add d0bfc671fef chore(deps-dev): update pyathena requirement from <4,>=3.35.4 to >=3.36.0,<4 (#44195)
add 37229ae474d chore(deps-dev): update databricks-sql-connector requirement from <4.5.0,>=4.4.0 to >=4.5.0,<4.6.0 (#44194)
add 16fc35667e4 chore(deps): bump cachetools from 7.1.7 to 7.1.8 (#44193)
add 8e69572025c fix(gantt): prevent y-axis labels from being cut off (#39137)
add 7aba2d3392b fix(postgres): detect search_path changes via set_config, not only SET (#43060)
add f51ae6a506d fix(dataset): derive virtual dataset schema from SQL Lab query (#43313)
add 598d5f723b0 chore(deps-dev): update snowflake-sqlalchemy requirement from <2,>=1.11.0 to >=1.11.1,<2 (#44197)
add d3bf3c9c250 chore(deps-dev): bump @testing-library/user-event from 12.8.3 to 14.6.5 in /superset-frontend (#43512)
add f4706c6a0c5 chore(deps): bump sqlglot from 30.17.0 to 30.18.0 (#44192)
add 0b801d0008a chore(deps): remove unused underscore dependency (#44175)
add f443a73b157 feat(ag-grid-table): add zebra striping control (#44112)
add 8e66145cfed feat(build): migrate JS files in `superset-frontend` to ESM (#43686)
add d9b0cb04538 fix(database): reject non-dict encrypted_extra at schema validation layer (#44145)
add 0c43a6da94c chore(deps): bump @swc/core from 1.16.1 to 1.16.2 in /docs (#44222)
add 090fc6bba8a chore(deps): bump swagger-ui-react from 5.32.14 to 5.32.15 in /docs (#44221)
add ae15827b069 chore(deps): bump react-error-boundary from 6.1.4 to 6.1.5 in /superset-frontend (#44229)
add e6255fad4c6 chore(deps-dev): bump jest-html-reporter from 4.4.0 to 4.4.2 in /superset-frontend (#44228)
add 3d4f38b3643 chore(deps): bump yeoman-generator from 8.3.0 to 8.3.1 in /superset-frontend (#44227)
add 61bbca823dc chore(deps): bump react-window from 2.3.0 to 2.3.1 in /superset-frontend (#44225)
add b075c5ecfec chore(deps-dev): bump stylelint from 17.14.1 to 17.15.0 in /superset-frontend (#44230)
add 31856550bcd chore(deps-dev): bump eslint from 10.9.1 to 10.10.0 in /superset-frontend (#44226)
add f107494efec chore(deps-dev): bump yeoman-test from 11.7.0 to 11.8.1 in /superset-frontend (#44224)
add a33e0d4cd35 chore(deps-dev): bump minimizer-webpack-plugin from 5.9.0 to 5.10.0 in /superset-frontend (#44233)
add 749c8aa078b fix: strip extraneous details from datasource access-denied errors (#43458)
add 47e0abd9608 chore(deps-dev): bump @testing-library/user-event from 14.6.5 to 14.6.7 in /superset-frontend (#44234)
add 24fe87e5db1 chore(deps): bump dompurify from 3.4.14 to 3.4.15 in /superset-frontend (#44232)
add 2eccf3bfcba fix(mcp): snapshot chart fields in get_chart_data before session expiry (#44004)
add d028acd5676 fix(docker): stop CI startup when initialization fails (#44125)
add 818857d3d98 fix(dataset): refresh the entity under the conditional-write row lock (#44027)
add 96ef982d24e fix(versioning): close the two retention-interaction races (#44012)
add 1b08bebf009 fix(security): use self-repository syntax for setup-backend in testcontainers workflow (#44116)
add 0802fa38884 fix(security): use self-repository syntax for setup-backend in helm workflow (#44117)
add 20a09bffa78 fix(security): use self-repository syntax in extensions-cli workflow (#44119)
add 23bd14eede5 refactor(list-view): eliminate any usage in ListView/utils.ts (#44186)
add f205b16f9fa docs(extensions): point the quick-start closing example at real references (#44098)
add d4d3e970988 docs: add Savantly to users in the wild (#44108)
add f35de69de8d fix(reports): remove machine-auth priming navigation that can clobber the session cookie (#44109)
add d7f658dbdec fix(frontend): dispatch warning toasts in downloadAsPdf/downloadAsImage (#44168)
add eeafd65b746 chore(deps-dev): bump the swc group across 1 directory with 3 updates (#44223)
add 42c50468644 feat(deletion-retention): scheduled pruning policy for the purge audit log (#43490)
add 43a00319956 fix(versioning): edit-gate the version-history and activity endpoints (#44021)
add ad90bf543f1 test(tags): make humanized-timestamp assertions deterministic (#44260)
add 6aaa3ed9861 fix(sqla): move process_template inside try block in get_fetch_values_predicate (#44246)
add 4db78bab99f fix(reports): catch JSONDecodeError in report extra validation (dashboard position_json/json_metadata) (#44204)
add 0f70666cc13 fix(sql-validate): downgrade log level for undefined Jinja function errors (SC-120409) (#44202)
add d3906aabf36 fix(mcp): refuse certification changes on externally managed dashboards (#44094)
add f8abb280d95 fix(versioning): resolve change-record dashboard membership via attachment windows (#44089)
add 4ece071eb77 fix(versioning): carry affected chart names in the rollup impact payload (#43838)
add e797f3def68 fix(views): error-response bodies must carry their message (#44090)
add c83c95faf63 chore(cli): direct tests for the deletion-retention click entry points; non-zero exit on blocked/not-found force-purge (#44252)
add 7f0ca472e4c fix(versioning): row-lock the live entity during version restore (#44015)
add 9526ce8082d fix(archive): hide recovery actions from read-only users (#44179)
add 6b696cb8185 fix(versioning): version-history panel design fidelity (#44181)
add b4604c320eb refactor(core): let DeleteModal callers supply the confirm button label and style (#44257)
add 447544ea27e fix(reports): fail closed after capture rejection (#44191)
add b6de64fce74 fix(migrations): add functional index on ab_user(lower(username)) for case-insensitive login (#43939)
add ae240a8e6f0 fix(security): use self-repository syntax in frontend workflow (#44118)
add 7f04959614c chore(deps): bump antd from 6.6.2 to 6.6.3 in /docs (#44295)
add 3a4aede10da chore(deps-dev): bump oxlint from 1.81.0 to 1.82.0 in /docs (#44296)
add a42a7df1021 chore(deps-dev): bump @types/node from 26.4.1 to 26.5.0 in /superset-websocket (#44292)
add b9f75c9ed55 chore(deps-dev): bump oxfmt from 0.66.0 to 0.67.0 in /superset-websocket (#44291)
add 2b5dce12467 chore(deps-dev): bump @types/node from 26.4.1 to 26.5.0 in /superset-embedded-sdk (#44289)
add 109402b8d21 fix: handle formatter errors gracefully in table cell rendering (#36189) (#39658)
add dbccb3bcc7c fix(table): preserve configured server page size when row count is smaller (#42243) (#42248)
add f3e1470f1a4 chore(deps-dev): bump oxlint from 1.81.0 to 1.82.0 in /superset-websocket (#44290)
add a184395eca7 chore(deps-dev): bump oxfmt from 0.66.0 to 0.67.0 in /docs (#44294)
add ef4281d2fcb feat(mcp): add get_dashboard_data for bounded, filter-aware dashboard data (#44113)
add 4c27cbd007e fix(migrations): merge purge audit and username index heads (#44288)
add 68c8c7059e3 refactor(versioning): rename charts_attached_to_dashboard to chart_attachment_windows_for_dashboard (#44185)
add 6cfb3319744 fix(api): enforce is_managed_externally on chart/dashboard/dataset update (#44025)
add 4f5cf799a28 fix(db): apply the configured default isolation level (set_db_default_isolation was a no-op) (#44247)
add b1380cf43d2 fix(versioning): withhold related-record change detail from non-editors (#44319)
add 8f76ff45cd4 refactor(frontend): consolidate stray antd wrappers into superset-ui-core (#44177)
add 8da299f58c0 docs(explore): document the Line chart Percent change control (#44129)
add dd60cc27ff4 fix(dashboard): include native filter names in filter_state GET response (#44043)
add 9976e08333c chore(build): remove `ts-jest` usage for TS7 preparation (#44210)
add 5dd63ef95b2 chore(deps): bump antd from 6.6.2 to 6.6.3 in /superset-frontend (#44300)
add 0f021023f3d fix(mcp): advertise typed tool outputs (#43828)
add 0049f814072 feat(mcp): add typed Gantt chart support (#43737)
add 23bc3de0ca3 fix(ci): match migration conflicts on filename, not contents_url (#44318)
add d7516f10388 chore(deps): bump github/codeql-action/analyze from 4.37.9 to 4.38.0 (#44333)
add 24a79c4bd38 chore(deps): bump github/codeql-action/upload-sarif from 4.37.9 to 4.38.0 (#44332)
add 1432d7f0c0a chore(deps): bump actions/setup-java from 6.0.0 to 6.0.1 (#44330)
add 2659660d90a chore(deps): bump apache/infrastructure-actions/allowlist-check from 1.0.1 to 1.0.2 (#44328)
add 7fbcc0825ca chore(deps): bump zizmorcore/zizmor-action from 0.6.3 to 0.6.4 (#44327)
add 2c135a5cdce test(semantic-layers): fix mypy call_args error on values endpoint test (#44187)
add 2db9d6d51c8 fix(theme): do not suppress a dashboard theme when the forwarded config equals the workspace default (#44173)
add 8233b5e5ae0 chore(deps-dev): update teradatasql requirement from >=20.0.0.67 to >=20.0.0.68 (#44331)
add 55ee97bb36b chore(deps): bump holidays from 0.103 to 0.104 (#44325)
add 96d57a97349 chore(deps-dev): bump oxlint from 1.81.0 to 1.82.0 in /superset-frontend (#44301)
add 79ab1467b52 chore(deps-dev): bump the typescript-eslint group across 1 directory with 2 updates (#44293)
add 9df22ffad35 chore(deps): bump yeoman-generator from 8.3.1 to 8.4.0 in /superset-frontend (#44299)
add 134263e8d46 chore(deps-dev): bump ydb-sqlalchemy from 0.1.22 to 0.1.24 (#44329)
add 0db1b47de79 test(dashboard): migrate native filter URL key E2E to Playwright (#41435)
add a01f5076195 chore(deps-dev): bump @types/node from 26.4.1 to 26.5.0 in /superset-frontend (#44298)
add bd76e097a2d ci: pin codeql-action init to the same version as analyze (#44354)
add 637e19f0ca3 fix(embedded): report content height independent of iframe height (#44313)
add dca54da2421 feat(themes): add per-theme editors (Subject model) (#42404)
add 22cef7ef007 fix(chart-data): keep non-numeric columns out of contribution post-processing (#43203)
add 91c1135c054 fix(histogram): compare groupby membership using column labels (#43219)
add 40f5ab8d0c6 fix(mcp): downgrade synthetic tool ToolError log level to WARNING (SC-120340) (#44171)
add 2884e4815bd fix(datasets): catch MultipleResultsFound in get_or_create's schema-scoped lookup (#43725)
add c417e3b6ccf chore(deps-dev): bump yeoman-test from 11.8.1 to 11.8.2 in /superset-frontend (#44302)
add 7b6dd7597c4 chore(deps-dev): bump oxfmt from 0.66.0 to 0.67.0 in /superset-frontend (#44297)
add f47f1ced19b feat(semantic layers): derive Explore picker modes from declared semantic view features (#42540)
add 175c2f1f1cb fix(api): align sort and prophet option schemas with their operations (#43206)
add baccb68d3b4 fix(chart): include Decimal metrics in contribution totals (#43222)
add 461fdaa5b95 feat(native-filters): drive cascade dependencies from chart metadata (#43223)
add 181e9ad3e2b fix(themes): render brand spinner SVG via <img> data URI (#43504)
add f5c710d1625 refactor(explore): move optional icons outside label element (#43584)
add 187e7d4d804 fix(security): handle self-referential catalog qualifiers (#43974)
add 7ee33df6473 fix(rls): match the RLS predicate lookup on case-normalized table identifiers (#43993)
add ea8aac12739 fix(mcp): bound chart_ids length in the generate-dashboard request (#44071)
add 3d17fba3624 fix(db): honor connect_args returned by adjust_engine_params (#44078)
add 82df1ffa61a fix(jinja): escape current_username/current_user_email like sibling macros (#44081)
add fe7391e85ee fix(sqla): run column metadata probe statement exactly once (#44242)
add 4c77b0b924a fix(migrations): merge theme editors and purge audit heads (#44364)
add 2ef8e0c1dee fix(dashboard): require published for the read-gate's datasource fallback (#44093)
add a68503b84af chore(deps): bump zod from 4.5.4 to 4.6.1 in /superset-frontend (#44383)
add 5576b73646a chore(deps-dev): bump @types/node from 26.5.0 to 26.5.1 in /superset-websocket (#44374)
add bb5d138c50e chore(deps): bump apache/infrastructure-actions/allowlist-check from 1.0.2 to 1.0.3 (#44376)
add 68433b08b5b chore(deps): bump astral-sh/setup-uv from 10.0.1 to 10.1.0 (#44377)
add dedfe23a805 chore(deps-dev): bump @types/node from 26.5.0 to 26.5.1 in /superset-embedded-sdk (#44375)
add 91c917e199c feat(ci): flag chart metadata changes via labeler (#33180)
add 35768da1fdb fix(dashboard): keep Save enabled when the properties modal name is set (#44356)
add 66e64cc7d89 fix(time-format): stop reading short digit-only strings as epoch offsets (#44352)
add c28a8942b7e chore(deps): bump the rjsf group in /superset-frontend with 3 updates (#44378)
add ca0f5cfa8e6 chore(deps-dev): bump @types/node from 26.5.0 to 26.5.1 in /superset-frontend (#44379)
add 8f4a70cfdf4 chore(deps-dev): bump minimizer-webpack-plugin from 5.10.0 to 5.10.1 in /superset-frontend (#44380)
add 2ad0053642e chore(deps-dev): bump react-refresh from 0.18.0 to 0.19.0 in /superset-frontend (#44381)
add e8e10fb85c0 fix(charts): don't auto-migrate table charts to ag-grid-table on import unless enabled (#44151)
add c426186a2e6 fix(versioning): scope stream_results to the activity SELECTs instead of mutating the session connection (#44261)
add fc71d0f9e81 fix(dataset): lock the If-Match validator's transaction-id read (#44091)
add 77dbaafc2af chore(versioning): write-path latency metric for the capture finalizer (#44009)
add 4c3a890d8b6 chore(deps): bump flask-appbuilder from 5.2.2 to 5.2.3 (#44400)
add 00c2f22fae2 fix(dashboard): make system default/dark themes assignable to a dashboard (#44361)
add 678bfae8859 fix(charts): align week-grain time comparison offsets to whole weeks (#43936)
add 6b80fa7ec29 fix(mypy): narrow chart.uuid before RestoreChartVersionCommand in restore tests (#44394)
add 3abc3588fab fix(sqla): guard unprotected Jinja template rendering in ExploreMixin (#44172)
add da1cac85f4d fix(versioning): refuse a version restore whose child history was pruned (sc-120012) (#44251)
add 30e5745cd74 fix(mcp): return a structured Unsupported marker for semantic-view get_chart_sql (#44267)
add 795cdf2bf15 fix(mcp): include semantic views in get_dashboard_datasets (#44269)
add 22ae4405d4e fix(explore): anchor the add column/metric/filter popovers to their trigger (#44274)
add f1dc56607e2 fix(i18n): make module-level error constants lazy gettext (#44180)
add 944e92dd578 feat(soft-delete): translate unique collisions with soft-deleted rows into restore guidance (#44184)
add 20d7a3e9aea fix(table): preserve semantic temporal column references (#44369)
add 560828d620a fix(dashboard): resolve display-control and drill datasources by type, not id alone (#42539)
add fc80a14850e feat(mcp): apply native dashboard filters from an MCP client (#44096)
add 394bca55c79 fix(mcp): preserve dashboard filter values for restricted users (#44107)
add bd786e2bea2 feat(versioning): render the starting version as the oldest history row for charts and dashboards (#44258)
add a7dab4a5519 fix(presto): require PyHive 0.7 for SQLAlchemy 2 (#44285)
add b5ad3964165 fix(query): resolve sub-day "Last <unit>" time_range shorthand (#44254)
add b8f5b209285 test(frontend): await userEvent calls missed by the user-event v14 migration (#44335)
add 9bb5a95976a chore(deps-dev): bump the babel group in /superset-embedded-sdk with 3 updates (#44417)
add 4f1a34446df chore(deps): bump zod from 4.6.1 to 4.6.2 in /superset-frontend (#44419)
add 282bcb0edd8 chore(deps-dev): bump baseline-browser-mapping from 2.11.21 to 2.11.22 in /superset-frontend (#44421)
add 79af673bca5 chore(deps-dev): bump webpack-bundle-analyzer from 5.3.2 to 5.3.3 in /superset-frontend (#44422)
add 16090803bbc chore(deps): bump @googleapis/sheets from 14.0.0 to 17.0.0 in /superset-frontend (#44420)
add 0599cc2516b fix(mcp): accept a time grain in get_table on semantic views (#44270)
add b7f1bdd571c fix(mcp): keep the default list_metrics page under the response-token cap (#44266)
add 4bb51d76694 test(mcp): pin distinct cache keys for semantic-view get_table across time ranges (#44263)
add e4bbd3973a2 fix(charts): type-aware datasource access parity for the chart list (#43848)
add 8947d3b3763 fix(semantic-layers): mask nested and union secrets in layer configuration (#43827)
add 627f32ca625 fix(versioning): mount the dashboard version-history panel inside the content area, below the header (#44255)
add ae5d8d89a38 fix(datasets): return 400, not 500, for a body-less purge POST; point the database-delete refusal at the purge flow (#44264)
add 9d4db452551 fix(charts): allow saving charts on semantic views (create/update rejected non-table datasource types) (#44416)
add 43f85576d99 fix(semantic-layer): mapper honors the SemanticView ABC contract (#43886)
add 062bf948e59 fix(semantic-layer): preserve independent source permissions (#43887)
add 2e1cf8a72c4 fix(versioning): map the restore registry guard's LookupError to 422 instead of 500 (#44253)
add 5ecb19cf92a fix(mcp): pre-validate metric/dimension compatibility in semantic-view get_table (#44265)
add 128c0c159ab fix(mcp): rebuild full parent chains in dashboard layouts (#44405)
add 43fee876722 test(versioning): mock the restore locking re-read in the #44253 LookupError tests (fixes red master) (#44445)
add dbeca4c1b07 fix(guest-tokens): reject annotation layers not on the stored chart
add 6f5071f8757 fix(guest-tokens): reject result types that expand a chart to raw rows
add 56335dc5116 fix(embedded): stop rendering dashboard title/description before guest auth
add 7cd98681f3d fix(embedded): compare each query's result type against its own stored query, not the flattened set
add 33bc0db6a64 fix(security): reject row-expanding result types on native-filter requests
add 26590e992f8 fix(security): reject Drill By row-expanding result types on chartless requests
add 6c55fe571c9 refactor(security): table-drive the guest payload comparators in query_context_modified
add 186230e5b39 refactor(security): share the row-expanding result-type check between chartless guards
add 1d786fa6ac7 fix(security): scope annotation-layer tampering check to current chart params
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 (f23dc32a763)
\
N -- N -- N refs/heads/fix/guest-token-embedded-scoping (1d786fa6ac7)
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/setup-backend/action.yml | 6 +-
.github/actions/setup-docker/action.yml | 9 +-
.github/dependabot.yml | 3 +-
.github/labeler.yml | 12 +
.github/workflows/asf-allowlist-check.yml | 46 +
.github/workflows/bump-python-package.yml | 4 +-
.github/workflows/check-db-migration-confict.yml | 6 +-
.github/workflows/check-openapi-spec-drift.yml | 2 +-
.github/workflows/check-python-deps.yml | 4 +-
.github/workflows/codeql-analysis.yml | 6 +-
.github/workflows/dependency-review.yml | 2 +-
.github/workflows/docker.yml | 68 +-
.../workflows/enforce-single-migration-head.yml | 2 +-
.github/workflows/generate-FOSSA-report.yml | 2 +-
.github/workflows/github-action-validator.yml | 2 +-
.github/workflows/issue-creation.yml | 2 +-
.github/workflows/license-check.yml | 2 +-
.github/workflows/pr-lint.yml | 8 +-
.github/workflows/pre-commit.yml | 2 +-
.../workflows/scheduled-docker-image-refresh.yml | 14 +-
.github/workflows/showtime-trigger.yml | 26 +-
.github/workflows/superset-app-cli.yml | 12 +-
.github/workflows/superset-docs-deploy.yml | 13 +-
.github/workflows/superset-e2e.yml | 155 +-
.github/workflows/superset-extensions-cli.yml | 4 +-
.github/workflows/superset-frontend.yml | 2 +-
.github/workflows/superset-helm-lint-test.yml | 10 +-
.github/workflows/superset-playwright.yml | 89 +-
.../workflows/superset-python-integrationtest.yml | 56 +-
.github/workflows/superset-python-presto-hive.yml | 38 +-
.github/workflows/superset-python-unittest.yml | 20 +-
.github/workflows/superset-translations.yml | 14 +-
.github/workflows/supersetbot.yml | 2 +-
.github/workflows/tag-release.yml | 8 +-
.github/workflows/testcontainers.yml | 184 +
.pre-commit-config.yaml | 2 +-
AGENTS.md | 7 +
Dockerfile | 118 +-
RESOURCES/INTHEWILD.yaml | 5 +
SECURITY.md | 4 +
UPDATING.md | 282 +-
docker-compose-image-tag.yml | 2 +-
docker-compose-light.yml | 3 +-
docker-compose-non-dev.yml | 5 +-
docker-compose.yml | 24 +-
docker/.env | 6 +
docker/docker-frontend.sh | 6 +-
docker/docker-init.sh | 36 +-
docker/entrypoints/docker-ci.sh | 6 +-
docs/admin_docs/configuration/alerts-reports.mdx | 66 +-
.../configuration/configuring-superset.mdx | 40 +
.../admin_docs/configuration/country-map-tools.mdx | 2 +-
docs/admin_docs/configuration/mcp-server.mdx | 196 +-
docs/admin_docs/configuration/theming.mdx | 124 +
docs/admin_docs/installation/docker-builds.mdx | 65 +-
docs/admin_docs/installation/docker-compose.mdx | 8 +-
.../installation/installation-methods.mdx | 4 +-
docs/admin_docs/installation/kubernetes.mdx | 460 +--
.../version-6.1.0/installation/docker-compose.mdx | 2 +-
.../version-6.1.0/installation/kubernetes.mdx | 2 +-
.../contributing/development-setup.md | 7 +-
docs/developer_docs/contributing/overview.md | 2 +-
.../extensions/contribution-types.md | 43 +
docs/developer_docs/extensions/quick-start.md | 2 +-
docs/docs/faq.mdx | 2 +-
docs/docs/index.mdx | 2 +-
.../creating-your-first-dashboard.mdx | 9 +
docs/docs/using-superset/embedding.mdx | 48 +
docs/docs/using-superset/exploring-data.mdx | 17 +
docs/docs/using-superset/handlebars-chart.mdx | 76 +-
docs/docs/using-superset/recently-archived.mdx | 10 +-
.../docs/using-superset/using-ai-with-superset.mdx | 88 +-
docs/docs/using-superset/version-history.mdx | 17 +
docs/netlify.toml | 7 +-
docs/package.json | 20 +-
docs/src/data/databases.json | 3 +-
docs/static/feature-flags.json | 12 +-
docs/static/img/logos/savantly.png | Bin 0 -> 5787 bytes
docs/static/llms.txt | 2 +-
docs/static/resources/openapi.json | 264 +-
.../version-6.0.0/installation/docker-compose.mdx | 2 +-
.../version-6.0.0/installation/kubernetes.mdx | 2 +-
.../using-superset/handlebars-chart.mdx | 76 +-
docs/yarn.lock | 989 +++--
helm/superset/Chart.yaml | 7 +-
helm/superset/README.md | 11 +-
helm/superset/README.md.gotmpl | 7 +
pyproject.toml | 72 +-
pytest.ini | 8 +-
requirements/base.in | 2 +-
requirements/base.txt | 23 +-
requirements/development.in | 29 +-
requirements/development.txt | 191 +-
scripts/change_detector.py | 1 +
.../src/superset_core/semantic_layers/view.py | 6 +-
superset-embedded-sdk/package-lock.json | 656 ++-
superset-embedded-sdk/package.json | 12 +-
superset-frontend/.storybook/main.mjs | 18 +-
superset-frontend/babel.config.js | 4 +-
superset-frontend/changelog.config.js | 2 +-
.../eslint-plugin-i18n-strings/index.ts | 4 +-
.../no-eager-t-in-config.test.ts | 8 +-
.../no-template-vars.test.ts | 6 +-
.../eslint-plugin-i18n-strings/package.json | 1 +
.../eslint-rules/eslint-plugin-icons/index.ts | 6 +-
.../eslint-plugin-icons/no-fontawesome.test.ts | 8 +-
.../eslint-rules/eslint-plugin-icons/package.json | 1 +
.../eslint-plugin-theme-colors/index.ts | 2 +-
.../eslint-plugin-theme-colors/package.json | 1 +
superset-frontend/eslint.config.minimal.js | 12 +-
superset-frontend/jest.config.js | 3 +-
superset-frontend/package-lock.json | 2672 ++++++------
superset-frontend/package.json | 73 +-
.../plugin-chart/templates/babel.config.erb | 1 +
.../templates/test/__mocks__/mockExportString.js | 1 +
.../packages/generator-superset/package.json | 6 +-
.../superset-core/src/translation/index.ts | 4 -
.../superset-core/src/translation/types/index.ts | 4 +-
.../superset-core/src/translation/types/jed.ts | 2 -
.../superset-ui-chart-controls/package.json | 2 +-
.../src/operators/resampleOperator.ts | 3 +
.../src/sections/advancedAnalytics.tsx | 24 +
.../superset-ui-chart-controls/src/types.ts | 7 +-
.../test/operators/resampleOperator.test.ts | 43 +
.../components/RadioButtonControl.test.tsx | 6 +-
.../superset-ui-core/__mocks__/mockExportObject.js | 3 +-
.../superset-ui-core/__mocks__/mockExportString.js | 3 +-
.../packages/superset-ui-core/package.json | 10 +-
.../src/chart/components/StatefulChart.test.tsx | 98 +
.../src/chart/components/StatefulChart.tsx | 30 +
.../packages/superset-ui-core/src/chart/index.ts | 4 -
.../src/chart/models/ChartMetadata.ts | 9 +
.../superset-ui-core/src/chart/types/Base.ts | 13 +-
.../src/chart/types/QueryResponse.ts | 2 -
.../src/chart/types/TransformFunction.ts | 2 -
.../components/ActionButton/ActionButton.test.tsx | 10 +-
.../AsyncAceEditor/AsyncAceEditor.test.tsx | 55 +
.../src/components/Checkbox/Checkbox.test.tsx | 5 +-
.../components/ConfirmModal/ConfirmModal.test.tsx | 8 +-
.../ConfirmStatusChange.test.tsx | 41 +
.../src/components/ConfirmStatusChange/index.tsx | 6 +
.../src/components/ConfirmStatusChange/types.ts | 11 +
.../components/DeleteModal/DeleteModal.test.tsx | 80 +-
.../src/components/DeleteModal/index.tsx | 10 +-
.../src/components/DeleteModal/types.ts | 21 +-
.../src/components/Descriptions/index.tsx | 0
.../DropdownContainer/DropdownContainer.test.tsx | 71 +
.../DropdownContainer/DropdownContainer.tsx | 13 +-
.../PageHeaderWithActions.stories.tsx | 102 +
.../PageHeaderWithActions.test.tsx | 19 +-
.../src/components/PageHeaderWithActions/index.tsx | 6 +-
.../src/components/Select/AsyncSelect.test.tsx | 79 +-
.../src/components/Select/Select.test.tsx | 67 +-
.../src/components/Splitter/index.tsx | 0
.../cell-renderers/ActionCell/ActionCell.test.tsx | 6 +-
.../src/components/TableCollection/index.tsx | 5 +-
.../src/components/ThemedAgGridReact/index.tsx | 1 +
.../src/components/TimePicker/index.tsx | 0
.../TimezoneSelector.DaylightSavingTime.test.tsx | 7 +-
.../TimezoneSelector/TimezoneSelector.test.tsx | 17 +-
.../UnsavedChangesModal.test.tsx | 14 +-
.../superset-ui-core/src/components/index.ts | 3 +
.../superset-ui-core/src/connection/index.ts | 1 -
.../superset-ui-core/src/connection/types.ts | 2 -
.../superset-ui-core/src/dimension/index.ts | 1 -
.../superset-ui-core/src/dimension/types.ts | 2 -
.../superset-ui-core/src/query/api/legacy/index.ts | 1 -
.../superset-ui-core/src/query/api/legacy/types.ts | 2 -
.../src/query/types/AdvancedAnalytics.ts | 2 -
.../superset-ui-core/src/query/types/Column.ts | 2 -
.../superset-ui-core/src/query/types/Dashboard.ts | 2 -
.../superset-ui-core/src/query/types/Datasource.ts | 9 +-
.../superset-ui-core/src/query/types/Metric.ts | 2 -
.../src/query/types/PostProcessing.ts | 7 +
.../superset-ui-core/src/query/types/Query.ts | 2 -
.../src/query/types/QueryFormData.ts | 2 -
.../src/query/types/QueryResponse.ts | 2 -
.../superset-ui-core/src/query/types/Time.ts | 2 -
.../superset-ui-core/src/query/types/index.ts | 12 -
.../src/time-format}/DateWithFormatter.ts | 22 +-
.../superset-ui-core/src/time-format/index.ts | 4 +
.../src/time-format/utils/stringifyTimeInput.ts | 28 +-
.../packages/superset-ui-core/src/types/AgGrid.ts | 1 +
.../test/chart/models/ChartMetadata.test.ts | 20 +
.../test/time-format}/DateWithFormatter.test.ts | 23 +-
.../time-format/utils/stringifyTimeInput.test.ts | 51 +
.../generators/docs/docs-screenshots.spec.ts | 3 +
.../generators/docs/mobile-screenshots.spec.ts | 3 +
.../playwright/generators/playwright.config.ts | 3 +
.../playwright/helpers/api/dashboard.ts | 23 +
.../playwright/helpers/embeddedAppServer.ts | 133 +
.../playwright/pages/DashboardPage.ts | 39 +
.../dashboard-native-filter-url-key.spec.ts | 140 +
.../tests/dashboard/dashboard-test-helpers.ts | 18 +-
.../dashboard/version-history-placement.spec.ts | 198 +
.../tests/embedded/embedded-dashboard.spec.ts | 129 +-
.../tests/embedded/embedded-iframe-sizing.spec.ts | 433 ++
.../tests/embedded/pivot-collapse-state.spec.ts | 93 +-
.../components/TimeComparisonVisibility.tsx | 3 +-
.../src/AgGridTable/index.tsx | 522 ++-
.../src/AgGridTableChart.tsx | 356 +-
.../plugin-chart-ag-grid-table/src/buildQuery.ts | 65 +-
.../src/controlPanel.tsx | 163 +-
.../plugin-chart-ag-grid-table/src/index.ts | 3 +-
.../src/stateConversion.ts | 18 +
.../src/styles/index.tsx | 2 +
.../src/transformProps.ts | 124 +-
.../plugin-chart-ag-grid-table/src/types.ts | 12 +-
.../src/utils/externalAPIs.ts | 12 +
.../src/utils/formatValue.ts | 38 +-
.../src/utils/getCellStyle.ts | 96 +-
.../src/utils/getScrollBarSize.ts} | 47 +-
.../src/utils/getTimeRangeFromGranularity.ts | 80 +
.../src/utils/isEqualColumns.ts | 71 +-
.../src/utils/useColDefs.ts | 69 +-
.../test/AgGridTableChart.test.tsx | 142 +-
.../test/buildQuery.test.ts | 82 +
.../test/controlPanel.test.ts | 54 +
.../test/controlPanel.test.tsx | 32 +
.../test/drillToDetail.test.tsx | 290 ++
.../test/formatValue.test.ts | 172 +
.../test/memoization.test.ts | 13 +-
.../test/stateConversion.test.ts | 46 +-
.../test/transformProps.test.ts | 141 +
.../test/utils/formatDurationValue.test.ts} | 23 +-
.../test/utils/getCellStyle.test.ts | 67 +
.../test/utils/useColDefs.test.ts | 135 +
.../scripts/Country Map GeoJSON Generator.ipynb | Bin 11010873 -> 226846 bytes
.../plugin-chart-country-map/src/CountryMap.ts | 16 +-
.../plugin-chart-country-map/src/controlPanel.ts | 43 +
.../src/countries/afghanistan.geojson | Bin 116233 -> 116055 bytes
.../src/countries/algeria.geojson | Bin 72436 -> 72143 bytes
.../src/countries/angola.geojson | Bin 91061 -> 90836 bytes
.../src/countries/antarctica.geojson | Bin 249319 -> 245701 bytes
.../src/countries/argentina.geojson | Bin 92396 -> 91982 bytes
.../src/countries/central_african_republic.geojson | Bin 76367 -> 76280 bytes
.../src/countries/chad.geojson | Bin 59200 -> 59068 bytes
.../src/countries/chile.geojson | Bin 155583 -> 152109 bytes
.../src/countries/colombia.geojson | Bin 172825 -> 172427 bytes
.../src/countries/cook_islands.geojson | Bin 4932 -> 4793 bytes
.../democratic_republic_of_the_congo.geojson | Bin 60598 -> 60421 bytes
.../src/countries/ecuador.geojson | Bin 72252 -> 71984 bytes
.../src/countries/egypt.geojson | Bin 63171 -> 62737 bytes
.../src/countries/ethiopia.geojson | Bin 74208 -> 74123 bytes
.../src/countries/fiji.geojson | Bin 16252 -> 14845 bytes
.../src/countries/finland.geojson | Bin 131137 -> 130221 bytes
.../src/countries/france.geojson | Bin 293310 -> 292411 bytes
.../src/countries/france_overseas.geojson | Bin 319676 -> 318427 bytes
.../src/countries/france_regions.geojson | Bin 125649 -> 125270 bytes
.../src/countries/french_polynesia.geojson | Bin 23524 -> 21933 bytes
.../src/countries/greenland.geojson | Bin 183222 -> 180051 bytes
.../src/countries/italy.geojson | Bin 239052 -> 238139 bytes
.../src/countries/italy_regions.geojson | Bin 107344 -> 106568 bytes
.../src/countries/japan.geojson | Bin 125219 -> 123030 bytes
.../src/countries/kazakhstan.geojson | Bin 97047 -> 96827 bytes
.../src/countries/kenya.geojson | Bin 160739 -> 155742 bytes
.../src/countries/libya.geojson | Bin 44004 -> 43958 bytes
.../src/countries/madagascar.geojson | Bin 301722 -> 437184 bytes
.../src/countries/malawi.geojson | Bin 153706 -> 153706 bytes
.../src/countries/malaysia.geojson | Bin 61681 -> 61384 bytes
.../src/countries/mexico.geojson | Bin 155798 -> 153935 bytes
.../src/countries/mongolia.geojson | Bin 66140 -> 66008 bytes
.../src/countries/mozambique.geojson | Bin 70273 -> 70096 bytes
.../src/countries/myanmar.geojson | Bin 122123 -> 121555 bytes
.../src/countries/namibia.geojson | Bin 51744 -> 51566 bytes
.../src/countries/new_zealand.geojson | Bin 51553 -> 50769 bytes
.../src/countries/niger.geojson | Bin 24447 -> 24404 bytes
.../src/countries/nigeria.geojson | Bin 132145 -> 131937 bytes
.../src/countries/norway.geojson | Bin 193186 -> 190978 bytes
.../src/countries/pakistan.geojson | Bin 71260 -> 71132 bytes
.../src/countries/papua_new_guinea.geojson | Bin 93153 -> 92488 bytes
.../src/countries/peru.geojson | Bin 121913 -> 121731 bytes
.../src/countries/philippines.geojson | Bin 201029 -> 199021 bytes
.../src/countries/philippines_regions.geojson | Bin 137441 -> 135628 bytes
.../src/countries/portugal.geojson | Bin 54433 -> 54121 bytes
.../src/countries/saudi_arabia.geojson | Bin 49793 -> 49541 bytes
.../src/countries/somalia.geojson | Bin 17724 -> 17637 bytes
.../src/countries/spain.geojson | Bin 197369 -> 196796 bytes
.../src/countries/sudan.geojson | Bin 50604 -> 50472 bytes
.../src/countries/sweden.geojson | Bin 122167 -> 121208 bytes
.../src/countries/tanzania.geojson | Bin 108762 -> 108542 bytes
.../src/countries/thailand.geojson | Bin 206445 -> 205568 bytes
.../src/countries/turkey.geojson | Bin 204184 -> 203614 bytes
.../src/countries/turkey_regions.geojson | Bin 107486 -> 107269 bytes
.../src/countries/turkmenistan.geojson | Bin 34959 -> 34870 bytes
.../src/countries/uk.geojson | Bin 478985 -> 477503 bytes
.../src/countries/ukraine.geojson | Bin 173452 -> 173064 bytes
.../united_states_minor_outlying_islands.geojson | Bin 3957 -> 3552 bytes
.../src/countries/usa.geojson | Bin 540974 -> 514889 bytes
.../src/countries/uzbekistan.geojson | Bin 50378 -> 50250 bytes
.../src/countries/venezuela.geojson | Bin 119692 -> 118980 bytes
.../src/countries/vietnam.geojson | Bin 138908 -> 138005 bytes
.../plugin-chart-country-map/src/transformProps.ts | 5 +
.../test/CountryMap.test.tsx | 168 +
.../test/transformProps.test.ts | 27 +
.../plugins/plugin-chart-echarts/package.json | 2 +-
.../BigNumberWithTrendline/controlPanel.tsx | 21 +
.../src/Funnel/transformProps.ts | 15 +-
.../src/Gantt/transformProps.ts | 29 +-
.../src/Histogram/transformProps.ts | 2 +-
.../src/MixedTimeseries/transformProps.ts | 52 +-
.../src/Timeseries/transformProps.ts | 79 +-
.../test/Funnel/transformProps.test.ts | 35 +
.../test/Histogram/transformProps.test.ts | 112 +
.../test/MixedTimeseries/transformProps.test.ts | 161 +
.../test/Timeseries/transformProps.test.ts | 579 +++
.../plugins/plugin-chart-handlebars/package.json | 2 +-
.../plugins/plugin-chart-pivot-table/package.json | 2 +-
.../src/react-pivottable/TableRenderers.tsx | 33 +-
.../test/react-pivottable/tableRenders.test.tsx | 60 +
.../plugin-chart-point-cluster-map/package.json | 10 +-
.../src/MapLibre.tsx | 15 +-
.../src/mapLibreDefaults.ts} | 7 +-
.../src/transformProps.ts | 2 +-
.../test/MapLibre.test.tsx | 33 +
.../types/global.d.ts} | 9 +-
.../plugin-chart-table/src/DataTable/DataTable.tsx | 184 +-
.../src/DataTable/hooks/useSticky.tsx | 35 +-
.../plugins/plugin-chart-table/src/TableChart.tsx | 29 +-
.../plugins/plugin-chart-table/src/buildQuery.ts | 6 +
.../plugins/plugin-chart-table/src/index.ts | 2 -
.../plugin-chart-table/src/transformProps.ts | 2 +-
.../plugins/plugin-chart-table/src/types.ts | 2 -
.../src/utils/DateWithFormatter.ts | 62 -
.../plugin-chart-table/src/utils/formatValue.ts | 16 +-
.../test/DataTable/DataTable.test.tsx | 129 +
.../test/DataTable/hooks/useSticky.test.tsx | 205 +
.../test/DataTable/utils/getScrollBarSize.test.ts | 6 +-
.../plugin-chart-table/test/TableChart.test.tsx | 46 +-
.../plugin-chart-table/test/buildQuery.test.ts | 109 +-
.../test/utils/formatDurationValue.test.ts} | 23 +-
.../test/utils/formatValue.test.ts | 44 +
.../test/ColorSchemeControl.test.tsx | 4 +-
.../plugins/preset-chart-deckgl/package.json | 4 +-
superset-frontend/scripts/build.js | 11 +-
superset-frontend/scripts/bundle-size-summary.js | 58 +-
superset-frontend/scripts/check-custom-rules.js | 19 +-
.../scripts/check-storybook-coverage.js | 9 +-
superset-frontend/scripts/commitlint.js | 2 +-
superset-frontend/scripts/copyAssets.js | 4 +-
.../scripts/{ => internal}/bundle-size-summary.js | 8 +-
.../{ => internal}/oxlint-metrics-uploader.js | 14 +-
.../scripts/oxlint-metrics-uploader.js | 267 +-
.../spec/__mocks__/mockExportObject.js | 3 +-
.../spec/__mocks__/mockExportString.js | 3 +-
superset-frontend/spec/helpers/setup.ts | 7 +
...summary.test.js => bundle-size-summary.test.ts} | 8 +-
...der.test.js => oxlint-metrics-uploader.test.ts} | 2 +-
.../SqlLab/components/AppLayout/AppLayout.test.tsx | 2 +-
.../src/SqlLab/components/AppLayout/index.tsx | 3 +-
.../QueryLimitSelect/QueryLimitSelect.test.tsx | 8 +-
.../SaveDatasetActionButton.test.tsx | 2 +-
.../SaveDatasetModal/SaveDatasetModal.test.tsx | 26 +-
.../SqlLab/components/SaveQuery/SaveQuery.test.tsx | 48 +-
.../ShareSqlLabQuery/ShareSqlLabQuery.test.tsx | 6 +-
.../SqlLab/components/SouthPane/SouthPane.test.tsx | 2 +-
.../src/SqlLab/components/SqlEditor/index.tsx | 2 +-
.../SqlEditorLeftBar/SqlEditorLeftBar.test.tsx | 2 +-
.../SqlEditorTabHeader/SqlEditorTabHeader.test.tsx | 2 +-
.../DynamicGroupBy/DynamicGroupByPlugin.test.tsx | 2 +-
.../AlteredSliceTag/AlteredSliceTag.test.tsx | 8 +-
.../ChartContextMenu/ChartContextMenu.test.tsx | 198 +-
.../Chart/ChartContextMenu/ChartContextMenu.tsx | 45 +-
.../Chart/ChartContextMenu/useContextMenu.test.tsx | 25 +-
.../components/Chart/DrillBy/DrillByModal.test.tsx | 28 +-
.../Chart/DrillBy/DrillBySubmenu.test.tsx | 20 +-
.../Chart/DrillBy/useResultsTableView.test.ts | 2 +-
.../Chart/DrillDetail/DrillDetailModal.test.tsx | 6 +-
.../Chart/DrillDetail/DrillDetailPane.test.tsx | 31 +
.../DrillDetail/DrillDetailTableControls.test.tsx | 8 +-
.../useDrillDetailMenuItems.test.tsx | 12 +-
.../CopyToClipboard/CopyToClipboard.test.tsx | 10 +-
.../DatabaseSelector/DatabaseSelector.test.tsx | 4 +-
.../tests/DatasourceEditor.test.tsx | 8 +-
.../tests/DatasourceEditorCurrency.test.tsx | 4 +-
.../ErrorMessage/DatabaseErrorMessage.test.tsx | 16 +-
.../DatasourceSecurityAccessErrorMessage.test.tsx | 64 +-
.../DatasourceSecurityAccessErrorMessage.tsx | 37 +-
.../ErrorMessageWithStackTrace.test.tsx | 8 +-
.../FrontendNetworkErrorMessage.test.tsx | 4 +-
.../ErrorMessage/ParameterErrorMessage.test.tsx | 12 +-
.../ErrorMessage/TimeoutErrorMessage.test.tsx | 16 +-
.../FilterableTable/FilterableTable.test.tsx | 40 +-
.../src/components/GridTable/HeaderMenu.test.tsx | 61 +-
.../src/components/ListView/CardCollection.tsx | 16 +-
.../src/components/ListView/ListView.tsx | 4 +-
superset-frontend/src/components/ListView/utils.ts | 69 +-
.../src/components/MessageToasts/Toast.test.tsx | 34 +-
.../src/components/MessageToasts/Toast.tsx | 16 +-
.../src/components/MessageToasts/actions.ts | 2 +
.../src/components/MessageToasts/types.ts | 3 +
.../RowCountLabel/RowCountLabel.test.tsx | 4 +-
.../components/AddSliceCard/AddSliceCard.test.tsx | 2 +-
.../DashboardBuilder/DashboardBuilder.test.tsx | 338 +-
.../DashboardBuilder/DashboardBuilder.tsx | 206 +-
.../src/dashboard/components/DashboardGrid.tsx | 3 +-
.../DetailsPanel/DetailsPanel.test.tsx | 12 +-
.../FilterIndicator/FilterIndicator.test.tsx | 10 +-
.../dashboard/components/Header/Header.test.tsx | 95 +-
.../PropertiesModal.lateFieldMount.test.tsx | 94 +
.../PropertiesModal/PropertiesModal.test.tsx | 42 +-
.../dashboard/components/PropertiesModal/index.tsx | 16 +-
.../PublishedStatus/PublishedStatus.test.tsx | 10 +-
.../components/SliceHeader/SliceHeader.test.tsx | 56 +-
.../SliceHeaderControls.subdirectory.test.tsx | 15 +-
.../SliceHeaderControls.test.tsx | 334 +-
.../components/SliceHeaderControls/index.tsx | 15 +-
.../URLShortLinkButton/URLShortLinkButton.test.tsx | 8 +-
.../components/filterscope/FilterScope.test.tsx | 34 +-
.../filterscope/FilterScopeSelector.test.tsx | 12 +-
.../components/gridComponents/Chart/Chart.tsx | 15 +-
.../ChartHolder/ChartHolder.test.tsx | 4 +-
.../gridComponents/Divider/Divider.test.tsx | 4 +-
.../gridComponents/Markdown/Markdown.test.tsx | 20 +-
.../components/gridComponents/Tab/Tab.test.tsx | 16 +-
.../components/gridComponents/Tabs/Tabs.test.tsx | 18 +-
.../TabsRenderer/StickyTabsOffsetContext.ts} | 25 +-
.../TabsRenderer/TabsRenderer.test.tsx | 171 +-
.../gridComponents/TabsRenderer/TabsRenderer.tsx | 179 +-
.../gridComponents/TabsRenderer/index.ts | 1 +
.../DownloadMenuItems/DownloadMenuItems.test.tsx | 37 +-
.../dashboard/components/menu/HoverMenu.test.tsx | 6 +-
.../menu/ShareMenuItems/ShareMenuItems.test.tsx | 28 +-
.../FilterBar/ActionButtons/ActionButtons.test.tsx | 11 +-
.../FilterBar/CrossFilters/CrossFilterTag.test.tsx | 4 +-
.../ScopingModal/ChartsScopingListPanel.test.tsx | 10 +-
.../ScopingModal/ScopingModal.test.tsx | 24 +-
.../nativeFilters/FilterBar/FilterBar.test.tsx | 50 +-
.../FilterBarSettings/FilterBarSettings.test.tsx | 42 +-
.../FilterConfigurationLink.test.tsx | 4 +-
.../FilterControls/FilterControlShared.test.tsx | 2 +-
.../FilterControls.overflow.test.tsx | 179 +-
.../FilterBar/FilterControls/FilterControls.tsx | 79 +-
.../FilterControls/FilterDivider.test.tsx | 2 +-
.../FilterControls/GroupByFilterCard.test.tsx | 330 +-
.../FilterBar/FilterControls/GroupByFilterCard.tsx | 192 +-
.../FilterBar/FiltersDropdownContent/index.tsx | 21 +-
.../nativeFilters/FilterBar/Header/Header.test.tsx | 4 +-
.../nativeFilters/FilterBar/Vertical.tsx | 76 +-
.../components/nativeFilters/FilterBar/index.tsx | 16 +-
.../nativeFilters/FilterBar/utils.test.ts | 38 +
.../components/nativeFilters/FilterBar/utils.ts | 15 +
.../nativeFilters/FilterCard/FilterCard.test.tsx | 6 +-
.../FiltersConfigModal/FilterConfigPane.test.tsx | 8 +-
.../FiltersConfigForm/CollapsibleControl.test.tsx | 5 +-
.../FiltersConfigForm/ColumnSelect.test.tsx | 4 +-
.../FiltersConfigForm/ColumnSelect.tsx | 27 +-
.../FiltersConfigForm/DatasetSelect.test.tsx | 30 +-
.../FiltersConfigForm/DefaultValue.test.tsx | 118 +
.../FiltersConfigForm/DefaultValue.tsx | 25 +-
.../FiltersConfigForm/FiltersConfigForm.tsx | 38 +-
.../FiltersConfigForm/getControlItemsMap.test.tsx | 8 +-
.../FiltersConfigForm/utils.test.ts | 78 +
.../FiltersConfigModal/FiltersConfigForm/utils.ts | 52 +-
.../FiltersConfigModal/FiltersConfigModal.test.tsx | 10 +-
.../FiltersConfigModal/FiltersConfigModal.tsx | 4 +-
.../FiltersConfigModal/NativeFiltersModal.test.tsx | 9 +
.../FiltersConfigModal/hooks/index.ts | 5 +-
.../hooks/useFilterOperations.test.ts | 91 +
.../hooks/useFilterOperations.ts | 36 +-
.../useDisplayControlDatasource.test.ts | 192 +
.../nativeFilters/useDisplayControlDatasource.ts | 181 +
.../src/dashboard/containers/DashboardPage.tsx | 2 +
.../src/dashboard/useDashboardFilterSync.test.tsx | 272 ++
.../src/dashboard/useDashboardFilterSync.ts | 118 +
.../util/activeAllDashboardFilters.test.ts | 60 +
.../dashboard/util/activeAllDashboardFilters.ts | 13 +-
.../src/dashboard/util/chartStateConverter.ts | 12 +-
.../dashboard/util/embeddedLayout.ts} | 21 +-
superset-frontend/src/dataMask/reducer.test.ts | 98 +
superset-frontend/src/dataMask/reducer.ts | 15 +
superset-frontend/src/embedded/api.test.ts | 84 +
superset-frontend/src/embedded/api.tsx | 65 +-
.../src/embedded/guestTokenDiagnostics.test.ts | 101 +
.../src/embedded/guestTokenDiagnostics.ts | 71 +
superset-frontend/src/embedded/index.test.tsx | 191 +-
superset-frontend/src/embedded/index.tsx | 46 +-
.../src/explore/actions/exploreActions.test.ts | 219 +-
.../src/explore/actions/exploreActions.ts | 44 +-
.../src/explore/components/ControlHeader.test.tsx | 18 +
.../src/explore/components/ControlHeader.tsx | 37 +-
.../CopyToClipboardButton.test.tsx | 4 +-
.../DataTableControl/FilterInput.test.tsx | 2 +-
.../DataTablesPane/test/DataTableControls.test.tsx | 6 +-
.../DataTablesPane/test/DataTablesPane.test.tsx | 18 +-
.../DataTablesPane/test/useResultsPane.test.tsx | 4 +-
.../DatasourcePanel/DatasourcePanel.test.tsx | 16 +-
.../DatasourcePanelDragOption.test.tsx | 74 +
.../DatasourcePanelDragOption/index.tsx | 33 +-
.../DatasourcePanel/DatasourcePanelItem.test.tsx | 94 +-
.../DatasourcePanel/DatasourcePanelItem.tsx | 128 +-
.../DatasourcePanel/compatibility.test.ts | 57 +
.../components/DatasourcePanel/compatibility.ts | 70 +
.../components/DatasourcePanel/folderDrag.test.ts | 88 +
.../components/DatasourcePanel/folderDrag.ts | 68 +
.../src/explore/components/DndItemType.ts | 3 +
.../ExploreChartHeader/ExploreChartHeader.test.tsx | 178 +-
.../ExploreChartPanel/ExploreChartPanel.test.tsx | 4 +-
.../StandaloneDownloadControl.test.tsx | 14 +-
.../ExploreContainer/ExploreDndContext.test.tsx | 138 +
.../ExploreContainer/ExploreDndContext.tsx | 129 +-
.../ExploreViewContainer.test.tsx | 8 +-
.../components/ExploreViewContainer/index.tsx | 6 +-
.../ExportToCSVDropdown.test.tsx | 16 +-
.../RunQueryButton/RunQueryButton.test.tsx | 20 +-
.../src/explore/components/SaveModal.test.tsx | 14 +-
.../src/explore/components/SaveModal.tsx | 18 +-
.../AnnotationLayer.subdirectory.test.tsx | 2 +-
.../AnnotationLayer.test.tsx | 58 +-
.../components/controls/BoundsControl.test.tsx | 10 +-
.../components/controls/CheckboxControl.test.tsx | 4 +-
.../CollectionControl/CollectionControl.test.tsx | 6 +-
.../ColorBreakpointOption.test.tsx | 4 +-
.../ColorBreakpointPopoverControl.test.tsx | 48 +-
.../ColorBreakpointPopoverTrigger.test.tsx | 30 +-
.../ColorBreakpointPopoverTrigger.tsx | 7 +-
.../ColorBreakpointsControl.test.tsx | 22 +-
.../ColorSchemeControl/ColorSchemeControl.test.tsx | 24 +-
.../controls/ColumnConfigControl/index.tsx | 1 -
.../controls/ColumnConfigControl/types.ts | 2 -
.../ConditionalFormattingControl.tsx | 3 +
.../FormattingPopover.tsx | 2 +
.../FormattingPopoverContent.test.tsx | 80 +-
.../FormattingPopoverContent.tsx | 41 +-
.../controls/ConditionalFormattingControl/types.ts | 10 +
.../ContourControl/ContourPopoverTrigger.tsx | 7 +-
.../ControlPopover/ControlPopover.test.tsx | 20 +-
.../ControlPopover/PopoverTriggerAnchors.test.tsx | 53 +
.../controls/DateFilterControl/DateFilterLabel.tsx | 6 +-
.../DateFilterControl/components/CustomFrame.tsx | 18 +-
.../DateFilterControl/tests/AdvancedFrame.test.tsx | 8 +-
.../DateFilterControl/tests/CustomFrame.test.tsx | 62 +-
.../tests/DateFilterLabel.test.tsx | 45 +-
.../ColumnSelectPopover.test.tsx | 690 +++-
.../DndColumnSelectControl/ColumnSelectPopover.tsx | 323 +-
.../ColumnSelectPopoverTrigger.test.tsx | 4 +-
.../ColumnSelectPopoverTrigger.tsx | 28 +-
.../DndColumnMetricSelect.test.tsx | 281 +-
.../DndColumnMetricSelect.tsx | 50 +-
.../DndColumnSelect.test.tsx | 334 +-
.../DndColumnSelectControl/DndColumnSelect.tsx | 50 +-
.../DndFilterSelect.test.tsx | 80 +
.../DndMetricSelect.test.tsx | 199 +-
.../DndColumnSelectControl/DndMetricSelect.tsx | 108 +-
.../DndColumnSelectControl/DndSelectLabel.test.tsx | 118 +-
.../DndColumnSelectControl/DndSelectLabel.tsx | 53 +-
.../DndColumnSelectControl/Option.test.tsx | 2 +-
.../createAdhocMetricFromColumn.test.ts | 49 +
.../DndColumnSelectControl/dndTestUtils.ts | 18 +
.../utils/pickerCapabilities.test.ts | 101 +
.../utils/pickerCapabilities.ts | 82 +
...AdhocFilterEditPopoverSimpleTabContent.test.tsx | 294 +-
.../index.tsx | 81 +-
.../AdhocFilterEditPopoverSqlTabContent.test.tsx | 4 +-
.../AdhocFilterOption/AdhocFilterOption.test.tsx | 2 +-
.../AdhocFilterPopoverTrigger.test.tsx | 4 +-
.../AdhocFilterPopoverTrigger/index.tsx | 10 +-
.../FixedOrMetricControl.test.tsx | 14 +-
.../AdhocMetricEditPopover.test.tsx | 96 +-
.../MetricControl/AdhocMetricEditPopover/index.tsx | 7 +-
.../AdhocMetricEditPopoverTitle.test.tsx | 7 +-
.../MetricControl/AdhocMetricOption.test.tsx | 29 +-
.../MetricControl/AdhocMetricPopoverTrigger.tsx | 10 +-
.../MetricControl/MetricDefinitionOption.test.tsx | 2 +-
.../controls/MetricControl/MetricsControl.test.tsx | 18 +-
.../controls/NumberControl/NumberControl.test.tsx | 16 +-
.../SelectAsyncControl/SelectAsyncControl.test.tsx | 4 +-
.../components/controls/SelectControl.test.tsx | 29 +-
.../components/controls/TimeRangeControl/index.tsx | 2 +-
.../TimeSeriesColumnControl.test.tsx | 137 +-
.../components/controls/ViewportControl.test.tsx | 8 +-
.../VizTypeControl/VizTypeControl.test.tsx | 76 +-
.../controls/VizTypeControl/VizTypeGallery.tsx | 2 +-
.../useExploreAdditionalActionsMenu/index.tsx | 51 +-
.../useExploreAdditionalActionsMenu.test.tsx | 33 +
.../controlUtils/standardizedFormData.test.ts | 1 +
.../explore/controlUtils/standardizedFormData.ts | 1 +
.../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 | 191 +-
.../alerts/components/AlertStatusIcon.test.tsx | 6 +-
.../alerts/components/NotificationMethod.test.tsx | 8 +-
.../databases/DatabaseModal/ModalHeader.tsx | 2 +-
.../DatabaseModal/SSHTunnelSwitch.test.tsx | 6 +-
.../databases/DatabaseModal/index.test.tsx | 136 +-
.../src/features/databases/DatabaseModal/index.tsx | 2 +-
.../datasets/AddDataset/Footer/Footer.test.tsx | 10 +-
.../AddDataset/LeftPanel/LeftPanel.test.tsx | 28 +-
.../src/features/home/ActivityTable.test.tsx | 2 +-
.../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/home/SubMenu.test.tsx | 4 +-
.../HeaderReportDropdown/index.test.tsx | 14 +-
.../reports/ReportModal/ReportModal.test.tsx | 29 +-
.../src/features/reports/ReportModal/index.tsx | 4 +
.../features/rls/RowLevelSecurityModal.test.tsx | 30 +-
.../subjects/SubjectPicker/SubjectPicker.test.tsx | 2 +-
.../src/features/themes/ThemeModal.test.tsx | 198 +-
.../src/features/themes/ThemeModal.tsx | 179 +-
superset-frontend/src/features/themes/types.ts | 3 +
.../src/features/versionHistory/ActionRow.tsx | 18 +-
.../features/versionHistory/PreviewBanner.test.tsx | 17 +
.../src/features/versionHistory/PreviewBanner.tsx | 28 +-
.../versionHistory/RelatedUpdateRow.test.tsx | 150 +
.../features/versionHistory/RelatedUpdateRow.tsx | 103 +-
.../features/versionHistory/SaveGroupItem.test.tsx | 220 +
.../src/features/versionHistory/SaveGroupItem.tsx | 82 +-
.../versionHistory/VersionHistoryPanel.test.tsx | 29 +
.../versionHistory/VersionHistoryPanel.tsx | 15 +-
.../src/features/versionHistory/display.test.ts | 27 +
.../src/features/versionHistory/display.ts | 18 +
.../src/features/versionHistory/grouping.test.ts | 36 +
.../src/features/versionHistory/grouping.ts | 7 +
.../src/features/versionHistory/types.ts | 25 +-
.../components/Range/RangeFilterPlugin.test.tsx | 10 +-
.../src/filters/components/Range/index.ts | 1 +
.../components/Select/SelectFilterPlugin.test.tsx | 102 +-
.../src/filters/components/Select/index.ts | 1 +
.../src/filters/components/Time/index.ts | 1 +
.../src/filters/components/TimeColumn/index.ts | 1 +
.../src/filters/components/TimeGrain/index.ts | 1 +
superset-frontend/src/filters/utils.ts | 9 +-
.../src/hooks/apiResources/datasets.test.ts | 254 +-
.../src/hooks/apiResources/datasets.ts | 136 +-
superset-frontend/src/hooks/usePermissions.ts | 1 +
.../src/pages/ArchivedList/ArchivedList.test.tsx | 172 +-
superset-frontend/src/pages/ArchivedList/index.tsx | 22 +-
superset-frontend/src/pages/Chart/Chart.test.tsx | 189 +-
superset-frontend/src/pages/Chart/index.tsx | 44 +-
.../src/pages/ChartCreation/ChartCreation.test.tsx | 82 +-
.../src/pages/ChartCreation/index.tsx | 7 +
.../DatabaseList.semanticLayerDelete.test.tsx | 139 +-
superset-frontend/src/pages/DatabaseList/index.tsx | 166 +-
.../DatasetList.connectionPermissions.test.tsx | 70 +
.../DatasetList/DatasetList.integration.test.tsx | 197 +
.../DatasetList/DatasetList.listview.test.tsx | 6 +
.../pages/DatasetList/DatasetList.testHelpers.tsx | 15 +-
superset-frontend/src/pages/DatasetList/index.tsx | 344 +-
superset-frontend/src/pages/Home/Home.test.tsx | 2 +-
.../RowLevelSecurityList.test.tsx | 2 +-
.../src/pages/ThemeList/ThemeList.test.tsx | 212 +
superset-frontend/src/pages/ThemeList/index.tsx | 48 +-
superset-frontend/src/pages/UserInfo/index.tsx | 3 +-
superset-frontend/src/theme/ThemeController.ts | 21 +-
.../src/theme/tests/ThemeController.test.ts | 105 +-
superset-frontend/src/types/Chart.ts | 8 +
superset-frontend/src/types/bootstrapTypes.ts | 5 +-
superset-frontend/src/types/react-table.d.ts | 71 +
.../index.tsx => types/yaml.d.ts} | 12 +-
superset-frontend/src/utils/common.ts | 3 +
.../src/utils/downloadAsImage.test.ts | 35 +-
superset-frontend/src/utils/downloadAsImage.tsx | 15 +-
superset-frontend/src/utils/downloadAsPdf.ts | 9 +-
.../src/utils/downloadAsPivotExcel.test.ts | 38 +
.../src/utils/downloadAsPivotExcel.ts | 16 +
superset-frontend/src/utils/downloadUtils.ts | 14 +
.../src/utils/semanticViewStructure.test.ts | 85 +
.../src/utils/semanticViewStructure.ts | 129 +
superset-frontend/src/utils/textUtils.ts | 42 +-
superset-frontend/src/views/App.tsx | 3 +-
superset-frontend/src/views/CRUD/hooks.ts | 4 +-
superset-frontend/stylelint.config.js | 3 +-
.../tools/webpack.proxy-config.test.js | 14 +-
superset-frontend/webpack.config.js | 91 +-
superset-frontend/webpack.proxy-config.js | 16 +-
superset-websocket/package-lock.json | 824 ++--
superset-websocket/package.json | 9 +-
superset/app.py | 13 +-
superset/charts/api.py | 2 +
superset/charts/data/api.py | 2 +
superset/charts/filters.py | 61 +-
superset/charts/schemas.py | 65 +-
superset/cli/deletion_retention.py | 6 +-
superset/cli/examples.py | 19 +-
superset/cli/viz_migrations.py | 3 +
superset/commands/chart/create.py | 24 +-
superset/commands/chart/importers/v1/__init__.py | 6 +-
superset/commands/chart/importers/v1/utils.py | 12 +-
superset/commands/chart/update.py | 99 +-
superset/commands/chart/utils.py | 83 +
superset/commands/dashboard/create.py | 16 +
superset/commands/dashboard/exceptions.py | 26 +-
superset/commands/dashboard/filter_state/get.py | 49 +-
.../commands/dashboard/importers/v1/__init__.py | 6 +-
superset/commands/dashboard/importers/v1/utils.py | 22 +-
superset/commands/dashboard/update.py | 157 +-
superset/commands/database/exceptions.py | 39 +-
superset/commands/database/importers/v1/utils.py | 91 +-
superset/commands/database/test_connection.py | 41 +-
superset/commands/database/update.py | 87 +
superset/commands/database/uploaders/base.py | 24 +-
superset/commands/database/utils.py | 123 +-
superset/commands/database/validate.py | 47 +-
superset/commands/database/validate_sql.py | 24 +-
superset/commands/dataset/create.py | 84 +-
superset/commands/dataset/importers/v1/utils.py | 128 +-
superset/commands/dataset/refresh.py | 6 +
superset/commands/dataset/update.py | 12 +-
superset/commands/datasource/list.py | 112 +-
superset/commands/deletion_retention/audit.py | 55 +-
.../commands/deletion_retention/prune_audit.py | 923 +++++
superset/commands/explore/get.py | 50 +-
superset/commands/importers/v1/assets.py | 6 +-
superset/commands/importers/v1/examples.py | 8 +
superset/commands/importers/v1/utils.py | 54 +
superset/commands/report/base.py | 31 +-
superset/commands/report/chart_data.py | 194 +
superset/commands/report/execute.py | 124 +-
superset/commands/semantic_layer/create.py | 8 +-
superset/commands/semantic_layer/delete.py | 5 +
superset/commands/semantic_layer/update.py | 68 +-
superset/commands/semantic_layer/utils.py | 56 +
superset/commands/soft_delete_collisions.py | 165 +
superset/commands/sql_lab/estimate.py | 24 +-
superset/commands/sql_lab/export.py | 10 +
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/utils.py | 20 +
superset/commands/version_restore.py | 95 +-
superset/common/query_actions.py | 78 +-
superset/common/query_context_processor.py | 22 +-
superset/common/query_object.py | 55 +-
superset/config.py | 63 +-
superset/connectors/sqla/models.py | 79 +-
superset/connectors/sqla/utils.py | 1 -
superset/constants.py | 11 +
superset/core/mcp/core_mcp_injection.py | 106 +-
superset/daos/database.py | 17 +-
superset/daos/dataset.py | 15 +-
superset/daos/datasource.py | 4 +
superset/daos/query.py | 7 +
superset/daos/report.py | 12 +-
superset/daos/version.py | 4 +
superset/dashboards/filter_state/api.py | 28 +-
superset/dashboards/filters.py | 46 +-
superset/dashboards/schemas.py | 8 +-
superset/databases/schemas.py | 19 +-
superset/datasets/api.py | 227 +-
superset/datasets/schemas.py | 69 +-
superset/datasource/api.py | 4 +-
superset/db_engine_specs/__init__.py | 15 +
superset/db_engine_specs/base.py | 21 +
superset/db_engine_specs/clickhouse.py | 11 +-
superset/db_engine_specs/cockroachdb.py | 5 +-
superset/db_engine_specs/couchbase.py | 2 -
superset/db_engine_specs/mssql.py | 122 +
superset/db_engine_specs/postgres.py | 17 +-
superset/db_engine_specs/presto.py | 4 +
superset/embedded/view.py | 7 +-
.../data/cleaned_sales_data.parquet | Bin 91814 -> 0 bytes
.../datasets/cleaned_sales_data.yaml | 348 --
superset/examples/generic_loader.py | 13 +-
.../misc_charts/data/wb_health_population.parquet | Bin 15010872 -> 0 bytes
.../misc_charts/datasets/wb_health_population.yaml | 4319 --------------------
superset/exceptions.py | 21 +-
superset/explore/api.py | 3 +
superset/explore/utils.py | 22 +-
superset/extensions/metastore_cache.py | 3 +-
superset/initialization/__init__.py | 80 +-
superset/jinja_context.py | 18 +-
superset/key_value/utils.py | 6 +-
superset/mcp_service/CLAUDE.md | 23 +-
superset/mcp_service/PRODUCTION.md | 2 +-
superset/mcp_service/__main__.py | 21 +-
superset/mcp_service/app.py | 16 +-
superset/mcp_service/chart/chart_helpers.py | 243 +-
superset/mcp_service/chart/chart_utils.py | 623 ++-
superset/mcp_service/chart/compile.py | 105 +-
superset/mcp_service/chart/plugins/__init__.py | 9 +
superset/mcp_service/chart/plugins/gantt.py | 237 ++
superset/mcp_service/chart/plugins/gauge.py | 195 +
superset/mcp_service/chart/plugins/treemap.py | 144 +
superset/mcp_service/chart/preview_utils.py | 802 +++-
superset/mcp_service/chart/query_result.py | 231 ++
.../mcp_service/chart/resources/chart_configs.py | 48 +
superset/mcp_service/chart/schemas.py | 1246 +++++-
superset/mcp_service/chart/tool/generate_chart.py | 21 +-
superset/mcp_service/chart/tool/get_chart_data.py | 320 +-
superset/mcp_service/chart/tool/get_chart_info.py | 56 +-
.../mcp_service/chart/tool/get_chart_preview.py | 151 +-
superset/mcp_service/chart/tool/get_chart_sql.py | 70 +-
.../chart/tool/get_chart_type_schema.py | 55 +-
superset/mcp_service/chart/tool/update_chart.py | 288 +-
.../mcp_service/chart/tool/update_chart_preview.py | 143 +-
.../chart/validation/dataset_validator.py | 225 +-
superset/mcp_service/chart/validation/pipeline.py | 34 +-
.../chart/validation/schema_validator.py | 11 +
.../mcp_service/common/time_range_validation.py | 32 +-
.../mcp_service/dashboard/layout_validation.py | 54 +
superset/mcp_service/dashboard/permalink.py | 96 +-
superset/mcp_service/dashboard/schemas.py | 579 ++-
superset/mcp_service/dashboard/tool/__init__.py | 4 +
.../tool/add_chart_to_existing_dashboard.py | 33 +-
.../dashboard/tool/apply_dashboard_filters.py | 485 +++
.../dashboard/tool/duplicate_dashboard.py | 6 +
.../dashboard/tool/generate_dashboard.py | 21 +-
.../dashboard/tool/get_dashboard_data.py | 279 ++
.../dashboard/tool/get_dashboard_datasets.py | 21 +-
.../dashboard/tool/get_dashboard_info.py | 28 +-
.../tool/manage_dashboard_certification.py | 25 +
.../dashboard/tool/manage_native_filters.py | 4 +-
.../dashboard/tool/remove_chart_from_dashboard.py | 13 +-
.../mcp_service/dashboard/tool/update_dashboard.py | 14 +-
superset/mcp_service/dataset/schemas.py | 21 +
.../mcp_service/dataset/tool/get_dataset_info.py | 21 +-
superset/mcp_service/dataset/tool/query_dataset.py | 41 +
.../dataset/tool/update_dataset_metric.py | 5 +
.../explore/tool/generate_explore_link.py | 2 +-
superset/mcp_service/mcp_config.py | 12 +-
superset/mcp_service/middleware.py | 71 +-
superset/mcp_service/semantic_layer/schemas.py | 88 +-
.../mcp_service/semantic_layer/tool/get_table.py | 187 +-
.../semantic_layer/tool/list_metrics.py | 9 +-
superset/mcp_service/server.py | 45 +-
superset/mcp_service/sql_lab/tool/execute_sql.py | 101 +-
superset/mcp_service/theme/tool/create_theme.py | 39 +-
superset/mcp_service/utils/response_utils.py | 9 +-
superset/migrations/shared/migrate_viz/base.py | 127 +-
.../migrations/shared/migrate_viz/processors.py | 329 ++
.../shared/migrate_viz/query_functions.py | 11 +-
...4_00-00_f7e8d9c0b1a2_add_theme_editors_table.py | 142 +
...15-50_a6c21e5b4d93_index_purge_audit_pruning.py | 38 +-
..._c7f53d184ea2_coordinate_purge_audit_pruning.py | 60 +
...a339627c_merge_add_theme_editors_table_with_.py | 23 +-
...00_88a01c781622_index_ab_user_lower_username.py | 145 +
...f655c0a6_merge_task_dependencies_with_theme_.py | 23 +-
...0_merge_purge_audit_and_username_index_heads.py | 25 +-
...11_merge_theme_editors_and_purge_audit_heads.py | 25 +-
superset/models/core.py | 7 +
superset/models/dashboard.py | 30 +-
superset/models/helpers.py | 240 +-
superset/models/purge_audit_log.py | 34 +-
.../realtime/__init__.py | 5 +-
superset/realtime/publish.py | 68 +
superset/security/api.py | 24 +-
superset/security/guest_token.py | 19 +
superset/security/manager.py | 284 +-
superset/semantic_layers/api.py | 82 +-
superset/semantic_layers/mapper.py | 31 +-
superset/semantic_layers/masking.py | 481 +++
superset/semantic_layers/models.py | 23 +-
superset/sql/dialects/starrocks.py | 11 +-
superset/sql/execution/executor.py | 14 +-
superset/sql/parse.py | 590 ++-
superset/sql_lab.py | 182 +-
superset/sqllab/query_render.py | 9 +-
superset/subjects/models.py | 19 +
superset/superset_typing.py | 6 +
superset/tags/models.py | 31 +
superset/tasks/async_queries.py | 3 +-
superset/tasks/deletion_retention.py | 73 +-
superset/tasks/manager.py | 19 +-
superset/tasks/scheduler.py | 16 +-
superset/tasks/utils.py | 20 +-
superset/tasks/version_history_retention.py | 14 +-
superset/templates/superset/spa.html | 13 +-
superset/themes/api.py | 87 +-
superset/themes/schemas.py | 14 +
superset/translations/messages.pot | 32 +-
superset/translations/zh/LC_MESSAGES/messages.po | 240 +-
superset/utils/cache.py | 2 +-
superset/utils/cache_manager.py | 4 -
superset/utils/core.py | 4 +-
superset/utils/csv.py | 9 +-
superset/utils/date_parser.py | 42 +-
superset/utils/dates.py | 22 +-
superset/utils/filters.py | 98 +-
superset/utils/machine_auth.py | 11 +-
.../utils/pandas_postprocessing/contribution.py | 48 +-
superset/utils/pandas_postprocessing/resample.py | 215 +-
superset/utils/report_execution.py | 23 +
superset/utils/rison_filters.py | 6 +-
superset/utils/rls.py | 156 +-
superset/utils/schema.py | 26 +-
superset/utils/screenshot_utils.py | 491 ++-
superset/utils/webdriver.py | 279 +-
superset/versioning/activity/creation.py | 173 +
superset/versioning/activity/impact.py | 256 +-
superset/versioning/activity/orchestrator.py | 34 +-
superset/versioning/activity/queries.py | 117 +-
superset/versioning/activity/render.py | 54 +-
superset/versioning/activity/scope.py | 4 +-
superset/versioning/activity/visibility.py | 84 +-
superset/versioning/activity/windows.py | 66 +
superset/versioning/api_helpers.py | 181 +-
superset/versioning/baseline/__init__.py | 2 +
superset/versioning/baseline/insertion.py | 39 +-
superset/versioning/baseline/shadow.py | 5 +
superset/versioning/changes/__init__.py | 4 +
superset/versioning/changes/listener.py | 233 +-
superset/versioning/changes/shadow_queries.py | 155 +-
.../versioning/creation_kinds.py | 17 +-
superset/versioning/db_errors.py | 75 +
superset/versioning/membership.py | 102 +
superset/versioning/metrics.py | 37 +-
superset/versioning/queries.py | 217 +-
superset/versioning/restore.py | 268 +-
superset/versioning/schemas.py | 66 +-
superset/views/base.py | 21 +-
superset/views/base_api.py | 83 +-
superset/views/core.py | 40 +-
superset/views/error_handling.py | 12 +-
superset/views/sql_lab/views.py | 65 +-
tests/integration_tests/base_tests.py | 19 +
tests/integration_tests/charts/api_tests.py | 36 +-
tests/integration_tests/charts/commands_tests.py | 14 +-
tests/integration_tests/charts/data/api_tests.py | 9 +
.../charts/semantic_save_tests.py | 140 +
.../charts/version_restore_tests.py | 216 +
tests/integration_tests/core_tests.py | 50 +
tests/integration_tests/dashboard_tests.py | 3 +-
tests/integration_tests/dashboards/api_tests.py | 141 +
.../integration_tests/dashboards/commands_tests.py | 3 +
.../dashboards/filter_state/api_tests.py | 75 +
.../dashboards/security/security_dataset_tests.py | 5 +-
.../dashboards/test_theme_integration.py | 6 +
.../dashboards/version_restore_tests.py | 70 +
tests/integration_tests/databases/api_tests.py | 11 +-
tests/integration_tests/datasets/api_tests.py | 302 +-
tests/integration_tests/datasource/api_tests.py | 66 +-
.../integration_tests/deletion_retention/_base.py | 21 +
.../deletion_retention/audit_tests.py | 52 +-
.../deletion_retention/prune_audit_tests.py | 907 ++++
tests/integration_tests/embedded/test_view.py | 17 +-
.../explore/form_data/commands_tests.py | 186 +-
tests/integration_tests/fixtures/tags.py | 21 +-
tests/integration_tests/reports/commands_tests.py | 116 +-
.../security/row_level_security_tests.py | 33 +
tests/integration_tests/sql_lab/commands_tests.py | 16 +
tests/integration_tests/sqllab_tests.py | 13 +-
tests/integration_tests/tags/api_tests.py | 20 +-
tests/integration_tests/themes/api_tests.py | 7 +
.../integration_tests/themes/test_theme_editors.py | 291 ++
.../integration_tests/utils/machine_auth_tests.py | 10 +-
.../versioning/activity_view_tests.py | 118 +-
.../versioning/activity_write_after_read_tests.py | 131 +
.../versioning/conditional_token_lock_tests.py | 363 ++
.../versioning/conditional_write_lock_tests.py | 225 +
.../versioning/creation_row_tests.py | 307 ++
.../versioning/restore_fails_closed_tests.py | 621 +++
.../versioning/versions_api_tests.py | 203 +-
{scripts => tests/testcontainers}/__init__.py | 0
.../testcontainers/db_engine_specs}/__init__.py | 0
tests/testcontainers/db_engine_specs/_driver.py | 47 +
.../testcontainers/db_engine_specs/_pagination.py | 68 +
.../db_engine_specs/test_clickhouse.py | 130 +
.../db_engine_specs/test_cockroachdb.py | 97 +
tests/testcontainers/db_engine_specs/test_crate.py | 103 +
.../db_engine_specs/test_databend.py | 114 +
tests/testcontainers/db_engine_specs/test_db2.py | 95 +
.../db_engine_specs/test_elasticsearch.py | 107 +
.../db_engine_specs/test_firebird.py | 146 +
.../testcontainers/db_engine_specs/test_mariadb.py | 117 +
.../testcontainers/db_engine_specs/test_monetdb.py | 127 +
.../testcontainers/db_engine_specs/test_mongodb.py | 141 +
tests/testcontainers/db_engine_specs/test_mssql.py | 93 +
tests/testcontainers/db_engine_specs/test_mysql.py | 117 +
.../db_engine_specs/test_oceanbase.py | 221 +
.../testcontainers/db_engine_specs/test_oracle.py | 95 +
.../db_engine_specs/test_postgres.py | 99 +
.../db_engine_specs/test_risingwave.py | 127 +
.../db_engine_specs/test_starrocks.py | 156 +
.../db_engine_specs/test_timescaledb.py | 98 +
tests/testcontainers/db_engine_specs/test_trino.py | 104 +
tests/testcontainers/db_engine_specs/test_ydb.py | 148 +
.../db_engine_specs/test_yugabytedb.py | 119 +
.../charts/commands/data/test_get_data_command.py | 15 +-
.../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 | 20 +
tests/unit_tests/charts/test_schemas.py | 163 +-
tests/unit_tests/cli/deletion_retention_test.py | 389 ++
tests/unit_tests/commands/chart/create_test.py | 141 +-
tests/unit_tests/commands/chart/update_test.py | 119 +-
.../commands/dashboard/slug_collision_test.py | 246 ++
tests/unit_tests/commands/dashboard/update_test.py | 132 +-
.../databases/importers/v1/command_test.py | 52 +
.../commands/databases/test_connection_test.py | 60 +
tests/unit_tests/commands/databases/update_test.py | 297 ++
.../commands/databases/upload_command_test.py | 61 +
.../commands/databases/validate_sql_test.py | 50 +
.../unit_tests/commands/databases/validate_test.py | 205 +
tests/unit_tests/commands/dataset/refresh_test.py | 10 +-
tests/unit_tests/commands/dataset/test_create.py | 180 +
tests/unit_tests/commands/dataset/update_test.py | 69 +-
tests/unit_tests/commands/datasource/list_test.py | 224 +
.../deletion_retention/test_prune_audit.py | 431 ++
.../explore/test_get_query_authorship_bypass.py | 93 +
.../commands/importers/v1/assets_test.py | 3 +
.../commands/importers/v1/examples_test.py | 65 +
.../importers/v1/test_find_existing_for_import.py | 134 +-
tests/unit_tests/commands/report/base_test.py | 20 +-
.../unit_tests/commands/report/chart_data_test.py | 298 ++
tests/unit_tests/commands/report/create_test.py | 49 +
tests/unit_tests/commands/report/execute_test.py | 337 +-
.../commands/semantic_layer/create_test.py | 41 +-
.../commands/semantic_layer/delete_test.py | 14 +
.../commands/semantic_layer/update_test.py | 78 +-
tests/unit_tests/commands/sql_lab/test_estimate.py | 134 +-
.../commands/test_base_restore_version_command.py | 183 +
.../commands/test_restore_version_concurrency.py | 167 +
.../commands/test_update_managed_externally.py | 403 ++
tests/unit_tests/common/test_query_actions.py | 97 +
.../common/test_query_context_processor.py | 142 +-
tests/unit_tests/common/test_tabular_query.py | 74 +
tests/unit_tests/common/test_time_shifts.py | 318 +-
tests/unit_tests/conftest.py | 32 +
tests/unit_tests/connectors/sqla/models_test.py | 282 ++
tests/unit_tests/connectors/sqla/utils_test.py | 56 +-
tests/unit_tests/dao/datasource_test.py | 31 +
tests/unit_tests/dao/queries_test.py | 15 +
tests/unit_tests/dao/test_query_stop_race.py | 1217 ++++++
.../commands/importers/v1/import_test.py | 54 +
.../dashboards/semantic_view_access_test.py | 264 +-
tests/unit_tests/databases/commands/delete_test.py | 21 +-
.../databases/commands/importers/v1/import_test.py | 205 +
tests/unit_tests/databases/commands/utils_test.py | 128 +-
tests/unit_tests/databases/schema_tests.py | 40 +
tests/unit_tests/datasets/api_tests.py | 216 +-
.../datasets/commands/importers/v1/import_test.py | 425 ++
tests/unit_tests/datasets/schema_tests.py | 115 +
tests/unit_tests/db_engine_specs/test_base.py | 18 +
tests/unit_tests/db_engine_specs/test_init.py | 50 +
tests/unit_tests/db_engine_specs/test_mssql.py | 438 ++
tests/unit_tests/db_engine_specs/test_postgres.py | 34 +
tests/unit_tests/db_engine_specs/test_presto.py | 14 +-
tests/unit_tests/docker_ci_entrypoint_test.py | 142 +
tests/unit_tests/explore/api_test.py | 44 +
tests/unit_tests/explore/utils_test.py | 182 +
tests/unit_tests/initialization_test.py | 231 +-
tests/unit_tests/jinja_context_test.py | 41 +
tests/unit_tests/key_value/utils_test.py | 12 +-
.../mcp_service/chart/test_chart_examples.py | 59 +
.../mcp_service/chart/test_chart_helpers.py | 285 ++
tests/unit_tests/mcp_service/chart/test_compile.py | 194 +
.../mcp_service/chart/test_gantt_chart.py | 2812 +++++++++++++
.../mcp_service/chart/test_gauge_chart.py | 1181 ++++++
.../mcp_service/chart/test_gauge_render.py | 106 +
.../mcp_service/chart/test_preview_utils.py | 214 +-
.../mcp_service/chart/test_query_result.py | 71 +
.../mcp_service/chart/test_treemap_chart.py | 176 +
.../mcp_service/chart/tool/test_generate_chart.py | 86 +
.../mcp_service/chart/tool/test_get_chart_data.py | 649 ++-
.../mcp_service/chart/tool/test_get_chart_info.py | 190 +-
.../chart/tool/test_get_chart_preview.py | 283 ++
.../mcp_service/chart/tool/test_get_chart_sql.py | 267 ++
.../chart/tool/test_get_chart_type_schema.py | 29 +
.../mcp_service/chart/tool/test_update_chart.py | 560 ++-
.../chart/tool/test_update_chart_preview.py | 219 +-
.../common/test_time_range_validation.py | 41 +-
tests/unit_tests/mcp_service/conftest.py | 27 +
.../dashboard/test_dashboard_schemas.py | 236 ++
.../dashboard/test_layout_validation.py | 174 +
.../mcp_service/dashboard/test_permalink.py | 123 +-
.../tool/test_add_chart_to_existing_dashboard.py | 98 +
.../dashboard/tool/test_apply_dashboard_filters.py | 1174 ++++++
.../dashboard/tool/test_dashboard_generation.py | 178 +-
.../dashboard/tool/test_dashboard_tools.py | 306 +-
.../dashboard/tool/test_duplicate_dashboard.py | 55 +
.../dashboard/tool/test_get_dashboard_data.py | 480 +++
.../dashboard/tool/test_get_dashboard_datasets.py | 331 +-
.../tool/test_manage_dashboard_certification.py | 79 +
.../tool/test_remove_chart_from_dashboard.py | 44 +
.../dashboard/tool/test_update_dashboard.py | 78 +-
.../database/tool/test_database_tools.py | 2 +-
.../mcp_service/dataset/tool/test_dataset_tools.py | 26 +-
.../mcp_service/dataset/tool/test_query_dataset.py | 340 ++
.../dataset/tool/test_update_dataset_metric.py | 39 +
.../explore/tool/test_generate_explore_link.py | 123 +-
.../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 | 876 +++-
.../semantic_layer/tool/test_list_metrics.py | 235 +-
.../mcp_service/sql_lab/tool/test_execute_sql.py | 186 +-
.../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 | 245 +-
tests/unit_tests/mcp_service/test_middleware.py | 122 +-
.../mcp_service/test_middleware_logging.py | 16 +-
.../mcp_service/test_rbac_tool_enforcement.py | 8 +-
.../mcp_service/test_tool_search_transform.py | 40 +
.../mcp_service/theme/tool/test_create_theme.py | 89 +-
.../mcp_service/utils/test_response_utils.py | 24 +
.../migrations/test_add_theme_editors.py | 166 +
.../migrations/test_purge_audit_coordination.py | 78 +
.../migrations/test_single_migration_head.py | 17 +-
.../unit_tests/migrations/viz/table_v1_v2_test.py | 431 ++
tests/unit_tests/models/core_test.py | 23 +
tests/unit_tests/models/helpers_test.py | 74 +
.../models/test_virtual_dataset_format.py | 25 +
.../pandas_postprocessing/test_contribution.py | 106 +
.../pandas_postprocessing/test_resample.py | 282 ++
tests/unit_tests/queries/query_object_test.py | 147 +
tests/unit_tests/scripts/change_detector_test.py | 12 +
.../unit_tests/security/guest_token_audit_test.py | 87 +
tests/unit_tests/security/manager_test.py | 633 +++
.../security/test_guest_token_empty_filter.py | 115 +
.../security/test_permission_instructions_link.py | 79 +-
tests/unit_tests/semantic_layers/api_test.py | 376 +-
.../semantic_layers/connections_access_test.py | 402 ++
.../fixtures/snowflake_configuration.json | 172 +
tests/unit_tests/semantic_layers/mapper_test.py | 213 +-
tests/unit_tests/semantic_layers/masking_test.py | 870 ++++
tests/unit_tests/semantic_layers/models_test.py | 123 +
.../semantic_layers/provider_masking_test.py | 107 +
.../semantic_layers/values_endpoint_test.py | 4 +-
tests/unit_tests/sql/execution/test_executor.py | 41 +
tests/unit_tests/sql/parse_tests.py | 541 ++-
tests/unit_tests/sql_lab_test.py | 110 +
.../subjects/test_report_executor_remediation.py | 148 +
tests/unit_tests/tags/commands/create_test.py | 19 +-
tests/unit_tests/tags/commands/update_test.py | 10 +-
tests/unit_tests/tasks/test_async_queries.py | 43 +
.../tasks/test_scheduler_soft_timeout.py | 44 +-
.../test_clock_reading_driver_preload.py | 57 +
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/csv_tests.py | 27 +-
tests/unit_tests/utils/date_parser_tests.py | 107 +
tests/unit_tests/utils/filters_test.py | 43 +-
tests/unit_tests/utils/test_cache_manager.py | 6 +-
tests/unit_tests/utils/test_report_execution.py | 19 +
tests/unit_tests/utils/test_rison_filters.py | 25 +
tests/unit_tests/utils/test_screenshot_utils.py | 518 ++-
tests/unit_tests/utils/webdriver_test.py | 456 ++-
tests/unit_tests/versioning/test_activity.py | 693 +++-
tests/unit_tests/versioning/test_db_errors.py | 205 +-
tests/unit_tests/versioning/test_endpoint_gate.py | 216 +
tests/unit_tests/versioning/test_listener.py | 565 ++-
tests/unit_tests/versioning/test_lock_entity.py | 97 +
tests/unit_tests/versioning/test_restore.py | 247 +-
.../unit_tests/versioning/test_retention_races.py | 357 ++
tests/unit_tests/versioning/test_shadow_queries.py | 250 ++
.../versioning/test_version_info_locking.py | 108 +
tests/unit_tests/views/test_base_theme_helpers.py | 62 +
tests/unit_tests/views/test_error_bodies.py | 212 +
tests/unit_tests/views/test_i18n_constants.py | 640 +++
.../views/test_sql_lab_tab_state_views.py | 203 +-
1150 files changed, 84129 insertions(+), 15782 deletions(-)
delete mode 100644 .github/actions/change-detector/label-draft-pr.yml
create mode 100644 .github/workflows/asf-allowlist-check.yml
create mode 100644 .github/workflows/testcontainers.yml
create mode 100644 docs/static/img/logos/savantly.png
copy superset-frontend/{ => packages/superset-ui-core}/src/components/Descriptions/index.tsx (100%)
create mode 100644 superset-frontend/packages/superset-ui-core/src/components/PageHeaderWithActions/PageHeaderWithActions.stories.tsx
rename superset-frontend/{ => packages/superset-ui-core}/src/components/Splitter/index.tsx (100%)
rename superset-frontend/{ => packages/superset-ui-core}/src/components/TimePicker/index.tsx (100%)
rename superset-frontend/{plugins/plugin-chart-ag-grid-table/src/utils => packages/superset-ui-core/src/time-format}/DateWithFormatter.ts (69%)
copy superset-frontend/{plugins/plugin-chart-ag-grid-table/test/utils => packages/superset-ui-core/test/time-format}/DateWithFormatter.test.ts (65%)
create mode 100644 superset-frontend/playwright/helpers/embeddedAppServer.ts
create mode 100644 superset-frontend/playwright/tests/dashboard/dashboard-native-filter-url-key.spec.ts
create mode 100644 superset-frontend/playwright/tests/dashboard/version-history-placement.spec.ts
create mode 100644 superset-frontend/playwright/tests/embedded/embedded-iframe-sizing.spec.ts
copy superset-frontend/{src/filters/components/Time/index.ts => plugins/plugin-chart-ag-grid-table/src/utils/getScrollBarSize.ts} (51%)
create mode 100644 superset-frontend/plugins/plugin-chart-ag-grid-table/src/utils/getTimeRangeFromGranularity.ts
create mode 100644 superset-frontend/plugins/plugin-chart-ag-grid-table/test/drillToDetail.test.tsx
create mode 100644 superset-frontend/plugins/plugin-chart-ag-grid-table/test/formatValue.test.ts
rename superset-frontend/plugins/{plugin-chart-table/test/utils/DateWithFormatter.test.ts => plugin-chart-ag-grid-table/test/utils/formatDurationValue.test.ts} (63%)
create mode 100644 superset-frontend/plugins/plugin-chart-echarts/test/Histogram/transformProps.test.ts
rename superset-frontend/{src/components/Descriptions/index.tsx => plugins/plugin-chart-point-cluster-map/src/mapLibreDefaults.ts} (73%)
copy superset-frontend/{packages/superset-ui-core/src/query/api/legacy/index.ts => plugins/plugin-chart-point-cluster-map/types/global.d.ts} (75%)
delete mode 100644 superset-frontend/plugins/plugin-chart-table/src/utils/DateWithFormatter.ts
create mode 100644 superset-frontend/plugins/plugin-chart-table/test/DataTable/DataTable.test.tsx
create mode 100644 superset-frontend/plugins/plugin-chart-table/test/DataTable/hooks/useSticky.test.tsx
rename superset-frontend/plugins/{plugin-chart-ag-grid-table/test/utils/DateWithFormatter.test.ts => plugin-chart-table/test/utils/formatDurationValue.test.ts} (63%)
copy superset-frontend/scripts/{ => internal}/bundle-size-summary.js (95%)
copy superset-frontend/scripts/{ => internal}/oxlint-metrics-uploader.js (95%)
rename superset-frontend/spec/scripts/{bundle-size-summary.test.js => bundle-size-summary.test.ts} (96%)
rename superset-frontend/spec/scripts/{oxlint-metrics-uploader.test.js => oxlint-metrics-uploader.test.ts} (96%)
create mode 100644 superset-frontend/src/dashboard/components/PropertiesModal/PropertiesModal.lateFieldMount.test.tsx
copy superset-frontend/{test-runner-jest.config.js => src/dashboard/components/gridComponents/TabsRenderer/StickyTabsOffsetContext.ts} (50%)
create mode 100644 superset-frontend/src/dashboard/components/nativeFilters/FiltersConfigModal/FiltersConfigForm/DefaultValue.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
rename superset-frontend/{test-runner-jest.config.js => src/dashboard/util/embeddedLayout.ts} (61%)
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/explore/components/DatasourcePanel/compatibility.test.ts
create mode 100644 superset-frontend/src/explore/components/DatasourcePanel/compatibility.ts
create mode 100644 superset-frontend/src/explore/components/DatasourcePanel/folderDrag.test.ts
create mode 100644 superset-frontend/src/explore/components/DatasourcePanel/folderDrag.ts
create mode 100644 superset-frontend/src/explore/components/controls/ControlPopover/PopoverTriggerAnchors.test.tsx
create mode 100644 superset-frontend/src/explore/components/controls/DndColumnSelectControl/createAdhocMetricFromColumn.test.ts
create mode 100644 superset-frontend/src/explore/components/controls/DndColumnSelectControl/utils/pickerCapabilities.test.ts
create mode 100644 superset-frontend/src/explore/components/controls/DndColumnSelectControl/utils/pickerCapabilities.ts
create mode 100644 superset-frontend/src/explore/selectors/compatibility.test.ts
create mode 100644 superset-frontend/src/explore/selectors/compatibility.ts
create mode 100644 superset-frontend/src/features/versionHistory/RelatedUpdateRow.test.tsx
create mode 100644 superset-frontend/src/features/versionHistory/SaveGroupItem.test.tsx
create mode 100644 superset-frontend/src/pages/DatasetList/DatasetList.connectionPermissions.test.tsx
create mode 100644 superset-frontend/src/types/react-table.d.ts
copy superset-frontend/src/{explore/components/controls/ColumnConfigControl/index.tsx => types/yaml.d.ts} (81%)
create mode 100644 superset-frontend/src/utils/semanticViewStructure.test.ts
create mode 100644 superset-frontend/src/utils/semanticViewStructure.ts
create mode 100644 superset/commands/chart/utils.py
create mode 100644 superset/commands/deletion_retention/prune_audit.py
create mode 100644 superset/commands/report/chart_data.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
delete mode 100644 superset/examples/featured_charts/data/cleaned_sales_data.parquet
delete mode 100644 superset/examples/featured_charts/datasets/cleaned_sales_data.yaml
delete mode 100644 superset/examples/misc_charts/data/wb_health_population.parquet
delete mode 100644 superset/examples/misc_charts/datasets/wb_health_population.yaml
create mode 100644 superset/mcp_service/chart/plugins/gantt.py
create mode 100644 superset/mcp_service/chart/plugins/gauge.py
create mode 100644 superset/mcp_service/chart/plugins/treemap.py
create mode 100644 superset/mcp_service/chart/query_result.py
create mode 100644 superset/mcp_service/dashboard/tool/apply_dashboard_filters.py
create mode 100644 superset/mcp_service/dashboard/tool/get_dashboard_data.py
create mode 100644 superset/migrations/versions/2026-07-24_00-00_f7e8d9c0b1a2_add_theme_editors_table.py
copy tests/unit_tests/mcp_service/conftest.py => superset/migrations/versions/2026-08-24_15-50_a6c21e5b4d93_index_purge_audit_pruning.py (52%)
create mode 100644 superset/migrations/versions/2026-08-24_16-20_c7f53d184ea2_coordinate_purge_audit_pruning.py
copy requirements/development.in => superset/migrations/versions/2026-09-04_19-03_aa5fa339627c_merge_add_theme_editors_table_with_.py (68%)
create mode 100644 superset/migrations/versions/2026-09-05_00-00_88a01c781622_index_ab_user_lower_username.py
copy requirements/development.in => superset/migrations/versions/2026-09-09_00-00_0884f655c0a6_merge_task_dependencies_with_theme_.py (69%)
copy tests/unit_tests/explore/api_test.py => superset/migrations/versions/2026-09-15_06-50_e2f3a1b9c640_merge_purge_audit_and_username_index_heads.py (62%)
copy tests/unit_tests/explore/api_test.py => superset/migrations/versions/2026-09-16_22-55_60f94cd6cd11_merge_theme_editors_and_purge_audit_heads.py (63%)
copy requirements/development.in => superset/realtime/__init__.py (82%)
create mode 100644 superset/realtime/publish.py
create mode 100644 superset/semantic_layers/masking.py
create mode 100644 superset/versioning/activity/creation.py
copy requirements/development.in => superset/versioning/creation_kinds.py (64%)
create mode 100644 superset/versioning/membership.py
create mode 100644 tests/integration_tests/charts/semantic_save_tests.py
create mode 100644 tests/integration_tests/deletion_retention/prune_audit_tests.py
create mode 100644 tests/integration_tests/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/conditional_write_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
copy {scripts => tests/testcontainers}/__init__.py (100%)
copy {scripts => tests/testcontainers/db_engine_specs}/__init__.py (100%)
create mode 100644 tests/testcontainers/db_engine_specs/_driver.py
create mode 100644 tests/testcontainers/db_engine_specs/_pagination.py
create mode 100644 tests/testcontainers/db_engine_specs/test_clickhouse.py
create mode 100644 tests/testcontainers/db_engine_specs/test_cockroachdb.py
create mode 100644 tests/testcontainers/db_engine_specs/test_crate.py
create mode 100644 tests/testcontainers/db_engine_specs/test_databend.py
create mode 100644 tests/testcontainers/db_engine_specs/test_db2.py
create mode 100644 tests/testcontainers/db_engine_specs/test_elasticsearch.py
create mode 100644 tests/testcontainers/db_engine_specs/test_firebird.py
create mode 100644 tests/testcontainers/db_engine_specs/test_mariadb.py
create mode 100644 tests/testcontainers/db_engine_specs/test_monetdb.py
create mode 100644 tests/testcontainers/db_engine_specs/test_mongodb.py
create mode 100644 tests/testcontainers/db_engine_specs/test_mssql.py
create mode 100644 tests/testcontainers/db_engine_specs/test_mysql.py
create mode 100644 tests/testcontainers/db_engine_specs/test_oceanbase.py
create mode 100644 tests/testcontainers/db_engine_specs/test_oracle.py
create mode 100644 tests/testcontainers/db_engine_specs/test_postgres.py
create mode 100644 tests/testcontainers/db_engine_specs/test_risingwave.py
create mode 100644 tests/testcontainers/db_engine_specs/test_starrocks.py
create mode 100644 tests/testcontainers/db_engine_specs/test_timescaledb.py
create mode 100644 tests/testcontainers/db_engine_specs/test_trino.py
create mode 100644 tests/testcontainers/db_engine_specs/test_ydb.py
create mode 100644 tests/testcontainers/db_engine_specs/test_yugabytedb.py
create mode 100644 tests/unit_tests/charts/semantic_view_chart_filter_test.py
create mode 100644 tests/unit_tests/cli/deletion_retention_test.py
create mode 100644 tests/unit_tests/commands/dashboard/slug_collision_test.py
create mode 100644 tests/unit_tests/commands/deletion_retention/test_prune_audit.py
create mode 100644 tests/unit_tests/commands/explore/test_get_query_authorship_bypass.py
create mode 100644 tests/unit_tests/commands/report/chart_data_test.py
create mode 100644 tests/unit_tests/commands/test_base_restore_version_command.py
create mode 100644 tests/unit_tests/commands/test_restore_version_concurrency.py
create mode 100644 tests/unit_tests/commands/test_update_managed_externally.py
create mode 100644 tests/unit_tests/dao/test_query_stop_race.py
create mode 100644 tests/unit_tests/docker_ci_entrypoint_test.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_gauge_chart.py
create mode 100644 tests/unit_tests/mcp_service/chart/test_gauge_render.py
create mode 100644 tests/unit_tests/mcp_service/chart/test_query_result.py
create mode 100644 tests/unit_tests/mcp_service/chart/test_treemap_chart.py
create mode 100644 tests/unit_tests/mcp_service/dashboard/tool/test_apply_dashboard_filters.py
create mode 100644 tests/unit_tests/mcp_service/dashboard/tool/test_get_dashboard_data.py
create mode 100644 tests/unit_tests/migrations/test_add_theme_editors.py
create mode 100644 tests/unit_tests/migrations/test_purge_audit_coordination.py
copy requirements/development.in => tests/unit_tests/migrations/test_single_migration_head.py (64%)
create mode 100644 tests/unit_tests/migrations/viz/table_v1_v2_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
create mode 100644 tests/unit_tests/subjects/test_report_executor_remediation.py
create mode 100644 tests/unit_tests/test_clock_reading_driver_preload.py
create mode 100644 tests/unit_tests/test_realtime_publish.py
create mode 100644 tests/unit_tests/versioning/test_endpoint_gate.py
create mode 100644 tests/unit_tests/versioning/test_lock_entity.py
create mode 100644 tests/unit_tests/versioning/test_retention_races.py
create mode 100644 tests/unit_tests/versioning/test_shadow_queries.py
create mode 100644 tests/unit_tests/versioning/test_version_info_locking.py
create mode 100644 tests/unit_tests/views/test_error_bodies.py
create mode 100644 tests/unit_tests/views/test_i18n_constants.py