This is an automated email from the ASF dual-hosted git repository.
rusackas pushed a change to branch feat/sqllab-contribution-points-clean
in repository https://gitbox.apache.org/repos/asf/superset.git
discard da575cfae49 fix(sqllab,extensions): show a loading spinner on the
new-tab button until extensions are ready
discard cce7d96f871 fix(sqllab,extensions): address bito review feedback
(round 3)
discard 3ab49dc0d61 fix(sqllab,extensions): address bito review feedback
(round 2)
discard 5ba3a47b2ac fix(sqllab): stop the new-tab dropdown's portaled clicks
from also firing antd's own add-tab handler
discard 71ef3eab0d6 chore(i18n): regenerate messages.pot for new
extension-error/tab-label strings
discard 935b836e9c6 fix(sqllab): address bito review feedback on northPane
rendering and test fixture
discard 460321943db fix(sqllab): satisfy strict TS types for
findQueryEditorByAnyId
discard cbe08812f72 fix(sqllab,extensions): carry northPane view on tab state
and resolve backendId for query events
discard cbc5ee6917c fix(sqllab,extensions): address review feedback on new-tab
dropdown, extension load failures, and Tab.backendId
discard 47a742f17f8 fix(sqllab): only consume PENDING_NORTH_PANE_VIEW_KEY on
the active tab
discard 62f65550c03 fix(sqllab): address review bot feedback on extension
surfaces
discard 235124b1c59 test(sqllab): cover PENDING_NORTH_PANE_VIEW_KEY
consume-and-persist flow
discard f2fa74684ae fix(sqllab): centralize add-tab timing marker and use antd
Flex for northPane wrapper
discard 52327f8b1fe test(sqllab): cover NewTabButton dropdown, direct-add, and
skip paths
discard fd9df356f74 fix(sqllab): intercept new-tab activation on antd's add
button for keyboard parity
discard ec45cbe67cd fix(sqllab): skip new-tab menu items whose command isn't
registered
discard 037e807802d test(sqllab,extensions): bridge store state cast through
unknown for tsc
discard 0b7ffa98952 test(sqllab,extensions): replace any casts with concrete
types
discard 5901d069cf6 test(sqllab): cover Tab backendId mapping from editor
tabViewId
discard c05b36c2db6 fix(sqllab,extensions): populate Tab.backendId and guard
northPane storage
discard c03e7abca84 test(sqllab,extensions): assert toast via store state; fix
northPane key type
discard 1660fa89b61 test(sqllab): cover northPane view rendering in SqlEditor
discard c5ad2ff7cd2 fix(sqllab,extensions): address review feedback on
northPane keys, tab a11y, extension load errors
discard fc5085bac18 feat(sqllab,extensions): contribution surfaces for
tab/pane extensions
add 4cdd680f399 fix: increase dataset edit modal size (#38215) (#39257)
add 4911dbe00b0 fix(doris): offer the connection form by matching the
installed driver (#44736)
add 3109cfaf6d6 chore(deps): bump @googleapis/sheets from 18.0.0 to 18.0.1
in /superset-frontend (#44862)
add 4f9c22db6dc chore(deps): bump github/codeql-action/analyze from 4.38.1
to 4.38.2 (#44861)
add 6418473be14 chore(deps): bump github/codeql-action/upload-sarif from
4.38.1 to 4.38.2 (#44859)
add 8b643519ca0 chore: add sadpandajoe as a codeowner for .asf.yaml
(#44855)
add b98e19f6eb2 chore: drop cypress-matrix-required from required status
checks (#44854)
add 74d885233de chore(deps): bump github/codeql-action/init from 4.38.1 to
4.38.2 (#44860)
add 8ab7a85a3d7 chore(e2e): remove Cypress infrastructure (#44829)
add ee39954adb6 fix(oauth2): refresh a token rejected when a connection
opens (#44765)
add e5ec22ab3e9 feat(table): add multi-level column header groups (#43938)
add a12d1b8e127 fix(mcp): enforce tool deadlines without blocking the
server (#44581)
add 0a0a1974c50 test(playwright): select existing dashboards without
creating duplicates (#44856)
add 33292f249da feat(mcp): support tab-scoped dashboard layouts (#44797)
add 4ae8fe71225 fix: size 'Drill to detail' table header correctly (#44807)
add 2c72d4d4fee fix(mcp): use DEFAULT_PAGE_SIZE constant in list_charts
test (#44786)
add 446853004a4 fix(mcp): keep a bubble chart's colors and row limit
across updates (#44618)
add 217e4c0223f fix(frontend): use html2canvas for chart image export on
Safari (#44529)
add c82f97b69d6 chore(deps): bump deck.gl and luma.gl from 9.2.5 to 9.4.0
in /superset-frontend (#42608)
add abdf2e6c702 fix(home): redirect users without an ID before rendering
(#44456)
add 3f6d4cd6896 chore(deps-dev): update google-cloud-storage requirement
from >=1.37 to >=3.14.1 (#44693)
add 6a832cb2102 fix(mcp): enforce dashboard filter scope on dataset, SQL
and chart tool calls (#44800)
add e7702020344 fix(postprocessing): preserve NULL index values through
pivot() (#43547) (#43693)
add f7badeb095b fix(mcp): execute_sql request limit caps, never raises, an
explicit SQL LIMIT (#44604)
add db56168a861 ci: require babel-extract to pass before merging master
(#44543)
add 342a8f1e4e0 fix(mcp): report a chart's live dataset id and name
(#44681)
add 21b937b59d7 fix(retention): skip models without purge policies before
scanning (#44874)
add 6d97cde59a6 fix(semantic-layers): export/import semantic-view charts
by typed reference (#44396)
add b94f88ffbb4 fix(semantic-layer): require explicit member identity
reselection (#44370)
add 9c7c96fe057 fix(logging): register LogRestApi only once (#44732)
add edc91b86e5c chore(deps-dev): bump baseline-browser-mapping from
2.11.25 to 2.11.26 in /superset-frontend (#44890)
add 338e640df93 chore(deps): bump dompurify from 3.4.15 to 3.4.16 in
/superset-frontend (#44889)
add 4a199486599 chore(deps): bump dom-to-image-more from 3.10.2 to 3.11.0
in /superset-frontend (#44888)
add 6559b483f28 chore(deps): bump maplibre-gl from 6.8.0 to 6.11.2 in
/superset-frontend (#44887)
add dfccc2e1e9c chore(deps-dev): bump minimizer-webpack-plugin from 5.11.0
to 5.12.0 in /superset-frontend (#44886)
add c43770e12da chore(deps-dev): bump webpack-sources from 3.5.1 to 3.5.3
in /superset-frontend (#44885)
add 95faf3a6a04 chore(deps-dev): bump oxlint-tsgolint from 7.0.2002 to
7.0.2003 in /docs (#44883)
add 27c9213cca2 chore(deps-dev): bump oxlint-tsgolint from 7.0.2002 to
7.0.2003 in /superset-websocket (#44882)
add 25956d6c448 chore(superset-ui-chart-controls): forward-compat fixes
for TypeScript 6.0 (#44877)
add ba3500e0e9a feat(export/import): add annotation layer export/import
support for charts and dashboards (#43232)
add 1b0a37cf223 fix(users): stop update_me setting self-referential
changed_by_fk (#44866)
add 7bb29649416 chore(deps): bump dawidd6/action-download-artifact from 24
to 25 (#44884)
add 005edd74234 chore(build): de-vendor `helm/chart-testing-action` GHA
(#44722)
add 10d06859b83 fix(ci): floor pyfakefs at 5.7.4 to fix Python 3.13
pytest-cov crash (#44853)
add 0fdfd6660e0 docs(databases): add ClickHouse Managed Postgres (#44870)
add e0483898728 test(explore): cover time range frames, comparison labels,
and metric popover state (#44847)
add c1bb129c218 fix(change-detector): classify changed files by language,
not directory (#44895)
add e606cadff7c chore(mcp): fix malformed tool and prompt docstrings
(#44572)
add ef64bacbaa0 feat(chart): cross-filter by x-axis label on charts with
dimensions (#44869)
add b0ac9ef61f6 test(explore): cover color scheme selection, BigNumber
subheader/trendline, and WorldMap bubbles (#44846)
add 8d25777b995 test(plugin-chart-table): cover server-side sort, query
mode controls, and sort ordering (#44845)
add 8849542bda1 test(explore): cover viz switch and control dependency
logic (#44842)
add 03b61cc2d89 test(explore): add fetchTopNValues unit tests (#44841)
add e32493c9d93 test(explore): add saveModalReducer unit tests (#44839)
add f6155b9e9ea fix(dashboard): show the configured refresh warning
alongside the limit error (#44836)
add 240a4267f85 test(explore): add datasourcesReducer unit tests (#44840)
add bc3698b5d64 test(explore): port remaining deleted Cypress explore
specs to RTL (#44838)
add 2872d16ee65 test(frontend): await the userEvent calls that needed
restructuring (#44799)
add 7fea33761b8 fix(chart): wrap raw pandas TypeError/DataError from
post-processing as QueryObjectValidationError (#44463)
add 3f7d01aaafc fix(reports): catch TypeError when validating non-string
extra.dashboard.anchor (#44404)
add ece8b8bd7b2 fix(import): avoid UnboundLocalError when load_yaml fails
during load_configs (SC-121288) (#44390)
add 47ba8fc8014 fix(api): return 401 not 500 for auth errors in
CurrentUserRestApi (SC-120417) (#44213)
add ef2c05c0900 fix(security): guard is_guest_user against
NoAuthorizationError on unauthenticated error paths (#43826)
add f9d67e1a118 fix: downgrade deprecated query_object field warnings to
info (#43520)
add 396030d87e0 docs: remove stale Selenium references after
Playwright-only switch (#44243)
add 3fa06db85b6 fix(mcp): include feature_availability in
instance://metadata resource (#44891)
add 52d8b405c99 fix(echarts): recognize Date and ISO-string temporal
x-axis values in getXAxisDomain (#44818)
add 15bde2a3016 fix(native-filters): keep cascade dependency gate in sync
with live filter type (#44366)
add 11bdbc91f37 feat(ci): add Chromatic visual regression testing for
Storybook (#44103)
add 8d026b4a568 fix(mcp): skip dashboard live updates when websockets are
disabled or realtime access is missing (#44796)
add 7260916b905 test(dashboard): cover "View as table" end-to-end for a
view-as-table-only role (#44881)
add 646de3a46b5 test(clickhouse): cover GROUP BY ALL against a real
instance (#40482) (#44879)
add ba453d3cb43 fix(sec): sanitize HTML text before shown as impact item's
label (#43825)
add 2220f53d9db fix(chart): accept quarter and day in end-of time ranges
(#43204)
add 62ab4cae23d fix(sql-lab): avoid duplicate generated result column
names (#44189)
add 743a27f7ed3 fix(chart): sort Heatmap Y-axis by default when unset
(#44588)
add 87bb752814a fix(select): remove Space wrapper from optionRender to fix
option label truncation (#44357)
add d6689283942 fix(sql-lab): use function valueGetter for GridTable row
numbers (#41574)
add 10356c30edb fix(mcp): stop partial-update tools from advertising null
defaults (#44573)
add 6966c1f6ccb fix(cartodiagram): share Pie colors across locations in
Explore (#44794)
add 81466987cbb fix(mcp): use create_proxy in simple_proxy for fastmcp 4
compatibility (#44787)
add ea79c63e878 fix(post-processing): stop treating gaps as zero for
cumprod, cummin and cummax (#44828)
add f1ae8909d85 fix(import): remove duplicate config redefinition in
load_configs (#44932)
add afa98f3391a perf(deletion-retention): one window pass for repeat
predicate (#44349)
add 3a9becd5cba chore(deps): bump markdown from 3.10.3 to 3.11 (#44941)
add a65fe06c513 chore(deps-dev): update google-cloud-storage requirement
from >=3.14.1 to >=3.15.0 (#44940)
add 3960407334b chore(deps): bump cachetools from 7.1.8 to 7.2.0 (#44939)
add dbd3e28aa3e chore(deps-dev): update databricks-sql-connector
requirement from <4.6.0,>=4.5.0 to >=4.6.0,<4.7.0 (#44937)
add 8ba26679671 chore(deps): bump holidays from 0.104 to 0.105 (#44936)
add 291d098917b chore(deps): bump sqlglot from 30.18.0 to 30.19.0 (#44935)
add 98be2d17dad chore(deps-dev): bump clickhouse-connect from 1.8.0 to
1.9.0 (#44934)
add 549508b340b fix(mcp): preserve calling constraints in compact tool
discovery (#44656)
add f2ff458acde feat: Add GUI for label_colors in Dashboard Properties
Modal (#39434)
add 3fccf299469 test(opensearch): cover pagination and Content-Type
regression against a real instance (#44924)
add acdd390b354 fix(frontend): finish migrating off direct antd imports,
enforce it in custom rules (#44927)
add e72d63b20d8 test(mysql): cover require_mysql_tls fail-closed and
verified-TLS paths (#44910)
add e3bdb3894c0 test(oracle): cover cancel-query against a real running
statement (#44908)
add 5d158e7e795 test(cratedb): cover epoch-ms timestamp decoding against a
real instance (#44904)
add cdafffeacf5 fix(deps): restore dompurify 3.4.16 in frontend lockfile
(#44960)
add ccae7784982 fix(mypy): ignore false-positive union-attr on
Slice.uuid.in_() (#44944)
add 68f19947a80 docs(mcp): document semantic-layer MCP tools (#44130)
add b5b8a9f3bd0 fix(dataset-editor): preserve edits across sort and sync
external SQL changes (#44858)
add 7a2913e2dbe fix(sqlite): write midnight as a bare date for DATE
columns in time filters (#44805)
add 46b9ba9587e chore(deps): bump dawidd6/action-download-artifact from 25
to 26 (#44977)
add 3ac856ceb1a chore(deps): bump chromaui/action from 18.7.3 to 18.10.1
(#44973)
add 7a62b3a6535 chore(deps-dev): bump postcss-styled-syntax from 0.7.2 to
0.7.3 in /superset-frontend (#44980)
add bc69daa2328 chore(deps-dev): bump @types/node from 26.6.2 to 26.6.3 in
/superset-frontend (#44979)
add fee8e1b9e52 chore(deps-dev): bump webpack-sources from 3.5.3 to 3.6.0
in /superset-frontend (#44978)
add 343dcb09353 chore(deps): bump chalk from 6.0.0 to 6.0.1 in
/superset-frontend (#44976)
add d62fc92273b chore(deps-dev): bump vitest from 5.0.1 to 5.0.2 in
/superset-embedded-sdk (#44974)
add c00f6a7aabc chore(deps-dev): bump @types/node from 26.6.2 to 26.6.3 in
/superset-embedded-sdk (#44972)
add 303a68b8e2c chore(deps-dev): bump @types/node from 26.6.2 to 26.6.3 in
/superset-websocket (#44971)
add 83ea1d9e6f5 chore(deps-dev): bump vitest from 5.0.1 to 5.0.2 in
/superset-websocket (#44970)
add 31d2d06bba3 chore(deps): bump ws from 8.21.3 to 8.22.0 in
/superset-websocket (#44969)
add 7fecceb6901 chore: remove unused INCLUDE_FIREFOX build arg and dead
screenshot config (#44245)
add 09015bb4bff fix(explore): preserve pending column configuration edits
(#44931)
add 48ac1bf8c69 fix(mcp): return actionable authorized column suggestions
(#44603)
add 0616ba68afe chore(deps-dev): bump the swc group in /superset-frontend
with 2 updates (#44975)
add 13861568aaa chore(build): remove unused `polyline` Python dep (#44961)
add 895bc203601 fix: full CSV download in AgGrid (#41696)
add 3e50c2c1287 feat(mcp): support filter_range and filter_timegrain
filters (#44893)
add 0c6373cd9f0 fix(models): silence pandas silent-downcasting
FutureWarning in normalize_df (#44897)
add 2fdf756cf1a fix(mcp): avoid duplicate SQL execution results (#44949)
add ce39d221aac fix(charts): return 404 when chart export hits an
inaccessible dataset (#44900)
add 13493a3e47f fix(mcp): allow bounding dashboard dataset columns (#44951)
add 05a3d4b880f feat(mcp): return the Big Number headline from chart and
dashboard data (#44948)
add 8ff884059fd fix(logging): stop logging tracebacks for client-side HTTP
errors (#44666)
add 31e3c9a1944 fix(ag-grid-table): refresh totals when summary
aggregation changes (#44612)
add 71ee07e2e2b feat(ci): conditionally run CodeQL analysis workflows only
when there are detected JS/Python file changes (#44699)
add c30ae9fd12d fix(embedded): refuse guest row-level security on semantic
views (#44987)
add 9a345ad0112 chore(deps-dev): bump oxlint from 1.85.0 to 1.86.0 in
/superset-websocket (#45005)
add 7b463ddee08 feat(ag-grid-table): expand JSON values in table cells
(#44907)
add e0ff1074879 chore(i18n): update pt/pt_BR translations and rebuild
translation index (#43022)
add 6aebcd2452d fix(dashboards): close CSS validation gaps in dashboard
import and edits (#43666)
add 7b3ce2cf368 fix(themes): overwrite-import guard, missing index, dedupe
extra_editors (follow-up to #42404) (#44362)
add bc1abf498d4 feat(bignumber): add an alignment control (#44554)
add 518bfbc5115 fix(reports): propagate force flag to dashboard-tab
permalink report URLs (#44775)
add 4578ab31ade refactor(list-view): eliminate any usage in ListView.tsx
and TableCollection (#44208)
add 7b3e3ad6f7f fix(dashboard,explore): wire addWarningToast into download
callers (#44154)
add f9e9ece86f5 chore(deps): bump the rjsf group in /superset-frontend
with 3 updates (#45004)
add 9e18d415d92 chore(deps-dev): bump @swc/core from 1.16.2 to 1.16.12 in
/superset-frontend in the swc group (#45012)
add 9d348facce9 chore(deps): bump @swc/core from 1.16.2 to 1.16.12 in
/docs (#45008)
add 457007b2f82 chore(deps-dev): bump source-map-js from 1.2.1 to 1.2.2 in
/superset-websocket in the security group across 1 directory (#45028)
add a5ffac58f44 feat: add global async query playwright tests (#43004)
add 854d3d59e4d fix(table): omit dormant grains from semantic aggregate
requests (#44455)
add 000297a6f07 fix(semantic-layers): offer valid table ordering choices
(#44806)
add d6c871a57fb fix(semantic-layers): remove child view permissions when a
layer is deleted (#44905)
add 3413a50af05 chore(deps): bump proxy-addr from 2.0.7 to 2.0.8 in
/superset-websocket/utils/client-ws-app in the security group across 1
directory (#45027)
add 3cfc7458670 chore(deps): bump dawidd6/action-download-artifact from 26
to 27 (#45011)
add 7330ca4c373 chore(deps): bump source-map-js from 1.2.1 to 1.2.2 in
/superset-embedded-sdk in the security group across 1 directory (#45024)
add fcee985241b fix(pivot-table): respect per-metric formatters in result
aggregation (#44815)
add 1473d481345 fix(query-context): match an adhoc granularity_sqla by its
expression (#44773)
add 17f4c215b37 feat(mcp): allow default values on filter_select native
filters (#44985)
add 5a2f4c8e80c feat(mcp): add structured dashboard text component
management (#44560)
add 55e39fc5f76 fix(explore): avoid mutating ZoomConfigControl configs
(#44957)
add 794b243c543 test(frontend): await remaining userEvent calls and lint
for un-awaited ones (#44947)
add 715dc017df1 fix(explore): open SQL Lab in a new tab on Ctrl+click in
View query modal (#44933)
add ac3fc943dd3 chore(deps): bump the security group across 1 directory
with 9 updates (#45026)
add f88b2ef2595 chore(deps): bump the security group across 1 directory
with 6 updates (#45025)
add fc1eeb066af chore(deps-dev): bump wait-on from 9.1.0 to 9.4.0 in
/superset-frontend (#45015)
add fc754d0e814 chore(deps-dev): bump oxlint from 1.85.0 to 1.86.0 in
/superset-frontend (#45014)
add ee7b7fdc908 chore(deps-dev): bump oxlint from 1.85.0 to 1.86.0 in
/docs (#45009)
add 27d5c3655de chore(deps-dev): bump the typescript-eslint group in
/superset-frontend with 2 updates (#45007)
add f3da949f61c chore(deps-dev): bump oxfmt from 0.70.0 to 0.71.0 in
/superset-websocket (#45006)
add a0f0cb8ae3d feat(mcp): support filter-bar dividers in
manage_native_filters (#45021)
add ec1688facd7 fix(mcp): state that dataset tools are SQL-only and point
to semantic tools (#44994)
add 388a10efdb1 fix(dashboards): return 404 when dashboard export hits an
inaccessible chart or dataset (#44929)
add d526ee4bd1f feat(semantic): add optional metadata refresh SDK contract
(#44834)
add 90b0a1a9160 fix(semantic): map layer views as a collection (#44902)
add 6f6be95995e feat(retention): let a host install purge policies for its
own soft-delete roots (#44892)
add fca6bdad57b fix(semantic): reject SQL clauses on semantic views
(#44899)
add 888795b90f9 fix(security): bind contextual access checks to the
datasource type and id (#45002)
add ae297e910e7 fix(permalink): handle concurrent creation of identical
dashboard permalinks (#45059)
add 86a6d1dcf34 chore(deps-dev): bump @types/ws from 8.18.1 to 8.18.2 in
/superset-websocket (#45045)
add 9b7797f7b21 chore(deps): bump the storybook group in /docs with 2
updates (#45046)
add 735365e2d18 chore(deps-dev): bump the storybook group in
/superset-frontend with 5 updates (#45047)
add 11a22e5ceba fix(post-processing): stop duplicating columns in
_append_columns (#45018)
add 001cb574e39 feat(plugin-chart-echarts): add a value axis label control
(#43660)
add c4bc0b1e0cc fix(layout): restore growable app shell so injected
content above #app doesn't clip it (#45056)
add 1cf9569807c feat(pivot-table): collapse row groups by default (#45030)
add 0cb498d08f2 fix(versioning): refuse a chart restore whose datasource
no longer exists (#44925)
add c1908747b16 fix(semantic): hide and ignore series limits that have no
series columns (#44909)
add 908d688171d fix(async): show the real error for a failed async chart
query (#45054)
add dbd546908a8 feat(semantic-layer): show provider queries from chart
results (#44206)
add 100f51240bd perf(security): batch dashboard fallback datasource
resolution (#44993)
add d27b7344087 fix(mcp): refuse changes to externally managed dashboards
in all dashboard tools (#45062)
add a8a828202f7 fix(versioning): preserve history across savepoint
rollback (#45033)
add 9c4ad2497df fix(cache): evict rejected cached GET requests (#45055)
add bdbddb76dc7 fix(semantic): return a client error for unsupported time
grains (#45053)
add 0754a86b3e4 chore(deps-dev): bump vitest from 5.0.2 to 5.0.3 in
/superset-websocket (#45072)
add f4c16eb3a4f docs: add DouroECI logo and contributor to In the Wild
(#45096)
add 34b3d65cc20 fix(charts): clear perms of charts whose datasource no
longer exists (#44926)
add 72ee1fd60df fix(date_parser): use pyparsing snake_case API to silence
PyparsingDeprecationWarning (#45094)
add b3d8fdb6061 fix(mcp): don't page MCP_ERROR_HOOK for user-class errors
in the last-resort catch (SC-125493) (#45093)
add 1ebfea28efc feat: SIP-209 Improved Alerts & Reports (#44992)
add b2bafd64fa2 chore(ci): configure more grouped dep upgrades across npm
subprojects (#44696)
add b327d57165c fix(explore): skip Ctrl/Cmd+Enter query while controls
have errors or chart is loading (#44963)
add c45391c1689 fix(explore): show 0 zoom, latitude and longitude in the
map view extent tag (#44962)
add 6d090bec82e fix(explore): honor a controlled ControlPopover open prop
(#44959)
add b22144a76d4 fix(native-filters): show a clear error instead of
"Network error" when filter values fail to load (#44585)
add e10e268e992 fix(explore): dispatch datasource metadata fetch (#44958)
add 489a02e3ea3 fix(semantic-layer): fail incomplete or unverified
semantic query results (#44832)
add e9862fb4ab2 fix(dashboard): refresh semantic metadata across edits
(#45052)
add 2ec20003ed5 chore: Update CODEOWNERS to include @sadpandajoe (#45120)
add e5c5e918359 feat(mcp): add typed Sunburst chart support (#43771)
add 4ca736d81c5 fix(semantic-layer): require write access for
configuration schema enrichment (#45107)
add 6efc896e5b9 test(dashboard): wait for async submenu and debounced
validation in flaky tests (#45106)
add 3bc9e9e479f fix(datasets): accept certification fields on dataset
column and metric PUT (#45091)
add cd34cc1019f chore(deps): bump chromaui/action from 18.10.1 to 18.10.2
(#45134)
add 1b35374fecb fix(semantic-layer): honor provider preferred time
dimension (#44997)
add ffc81d92a2c feat(dashboard): add column allowlist to Group By native
filter (#43736)
add 3fc078abe6b fix(soft-delete): preserve a shared datasource permission
on purge (#45034)
add a4a0899e92c perf(versioning): defer capture policy until versioned
work (#44928)
add 99899bd392f fix(date-parser): reject malformed time ranges instead of
scanning everything (#45098)
add 13c5ff8c87f chore(deps-dev): bump wait-on from 9.4.0 to 9.5.1 in
/superset-frontend (#45048)
add 61df1692584 chore(deps): bump mapbox-gl from 3.31.0 to 3.32.0 in
/superset-frontend (#45049)
add 035ae052525 chore(deps-dev): bump vitest from 5.0.2 to 5.0.3 in
/superset-embedded-sdk (#45074)
add 9635e7f1f91 chore(deps): bump the swc group across 2 directories with
1 update (#45118)
add 9e7a05e6ed1 chore(deps-dev): bump @types/node in
/superset-embedded-sdk (#45121)
add cda7a1e8189 chore(deps): bump swagger-ui-react from 5.33.0 to 5.33.1
in /docs (#45122)
add cfb0ed61eb8 chore(deps): bump yargs from 18.1.0 to 18.2.0 in
/superset-frontend (#45129)
add a8fc576cfe3 chore(deps-dev): bump oxfmt in /docs (#45119)
add cb8ff2885a6 fix(permalink): use a shared lock when re-reading a
concurrently created permalink (#45102)
add ab2c69f29cd fix(column-config): allow commas in D3 number formats
(#45145)
add e538ebfa2c9 feat(mcp): opt-in compact native tools/list and trimmed
tool guidance (#45084)
add 64b02eebed4 fix(mcp): add sort_by option to XYChartConfig (#42627)
(#44464)
add 1267bd1acee test(semantic-layer): pin layer list scoping to accessible
layers (#45101)
add 8aeb2850914 fix(mcp): keep isError through call_tool and test native
tool surface parity (#45081)
add d3c47f6212e chore(deps): bump slack-sdk from 3.44.1 to 3.45.0 (#45116)
add 0edbccc71a8 chore(deps-dev): bump trino from 0.339.0 to 0.340.0
(#45117)
add 5e6156a820c chore(deps-dev): bump gevent from 26.8.0 to 26.9.0 (#45115)
add 461cf9e49af chore(deps): bump sqlalchemy-continuum from 1.7.0 to 1.8.0
(#45114)
add 97ce269b962 chore(deps): bump cryptography from 50.0.1 to 50.0.2
(#45112)
add 2918a7b94d1 feat(i18n): extract translator context comments from
source (#44397)
add 82223373a3a chore(deps-dev): update teradatasql requirement from
>=20.0.0.68 to >=20.0.0.69 (#45162)
add d48b8486851 chore(deps): bump msgpack from 1.2.2 to 1.2.3 (#45161)
add 7e6aa124e1a chore(deps): bump pyjwt from 2.14.0 to 2.15.1 (#45159)
add 8318398da46 chore(deps): bump the security group across 1 directory
with 4 updates (#45143)
add 5faa58e7d2b chore(deps-dev): bump pymssql from 2.4.1 to 2.4.2 (#45156)
add b9e8188ad60 chore(deps): bump simplejson from 4.1.2 to 4.2.0 (#45158)
add d7717743b1f test(utils): add unit test for scalar_to_sequence (#45144)
add f9f2eb283d3 test(sql): pin Druid JSON_VALUE RETURNING parsing (#45131)
add a55b236a5be fix(semantic-layer): fetch view metadata once per query
(#45104)
add 76b62d34fba fix(semantic-layer): preserve nullable integer precision
in chart data (#45126)
add 38ad1150ecf feat(retention): cap soft-delete purge and version-history
prune per run (#45029)
add 04db66b0f66 feat(semantic-layer): invalidate metadata caches on
configuration save (#45100)
add fd2740bec1e fix(charts): avoid loading semantic provider metadata
before denying chart data access (#45060)
add e229ea4a543 fix(mcp): resolve saved semantic-view chart sources by
type (#45067)
add af7978ae74d docs(mcp): document dashboard owner/role/certification
governance tools (#43900)
add bae6d10cebc chore(deps): bump react-resize-detector from 7.1.2 to
12.3.0 in /superset-frontend (#45124)
add db7557a7a58 feat(mcp): add typed geographic chart generation (#44148)
add 0e50b64263f fix(bigquery): filter __NULL__ and __UNPARTITIONED__ from
max partition query (#44156)
add aef1f70cdfd chore(deps): bump pyparsing from 3.3.2 to 3.3.3 (#45157)
add 0ad650c507e chore(deps): bump mako from 1.4.1 to 1.4.3 (#45188)
add 4dc7ba70ef3 chore(deps-dev): bump jsdom from 30.1.1 to 30.1.2 in
/superset-embedded-sdk (#45194)
add 1c116342642 chore(deps-dev): bump jsdom from 30.1.1 to 30.1.2 in
/superset-frontend (#45201)
add 713c41e0ba5 chore(deps-dev): bump stylelint from 17.15.0 to 17.16.0 in
/superset-frontend (#45200)
add 0c201b4dd2c chore(deps-dev): bump minimizer-webpack-plugin from 5.12.0
to 5.13.0 in /superset-frontend (#45196)
add ea235f25b9e chore(deps-dev): bump google-cloud-bigquery from 3.45.2 to
3.46.1 (#45190)
add 3579cbc6c68 chore(deps-dev): bump @storybook/test-runner from 0.24.5
to 0.26.0 in /superset-frontend in the storybook group (#45073)
add 5e9e6beb4ac chore(deps): bump flask-compress from 1.24 to 1.25 (#45193)
add e2dd50ab340 chore(deps-dev): bump grpcio from 1.83.1 to 1.84.0 (#45192)
add 6d39864102a chore(deps): bump @googleapis/sheets from 18.0.1 to 18.1.0
in /superset-frontend (#45195)
add bc98688d5ff docs: Improve README clarity and consistency (#38957)
add 2c8665f9cbc fix(histogram): normalize before accumulating a cumulative
histogram (#44652)
add 726c1ef67c9 fix(impala): cancel pending SQL Lab operations through the
live cursor (#44737)
add 134f923a226 feat(sqllab,extensions): contribution surfaces for
tab/pane extensions
add b7fd5e61e09 fix(sqllab,extensions): address review feedback on
northPane keys, tab a11y, extension load errors
add d0f76254a50 test(sqllab): cover northPane view rendering in SqlEditor
add 22f9e9c8408 test(sqllab,extensions): assert toast via store state; fix
northPane key type
add b5ad345cace fix(sqllab,extensions): populate Tab.backendId and guard
northPane storage
add e6a374fb7d6 test(sqllab): cover Tab backendId mapping from editor
tabViewId
add bc8bd6277a2 test(sqllab,extensions): replace any casts with concrete
types
add 1f523c2cb72 test(sqllab,extensions): bridge store state cast through
unknown for tsc
add d527c9b275d fix(sqllab): skip new-tab menu items whose command isn't
registered
add 07c873a2dea fix(sqllab): intercept new-tab activation on antd's add
button for keyboard parity
add 1d6a64bbaab test(sqllab): cover NewTabButton dropdown, direct-add, and
skip paths
add 5c7ba29e552 fix(sqllab): centralize add-tab timing marker and use antd
Flex for northPane wrapper
add d75354f3936 test(sqllab): cover PENDING_NORTH_PANE_VIEW_KEY
consume-and-persist flow
add 51f6b618499 fix(sqllab): address review bot feedback on extension
surfaces
add 37f2a1af6d6 fix(sqllab): only consume PENDING_NORTH_PANE_VIEW_KEY on
the active tab
add 57f731040fe fix(sqllab,extensions): address review feedback on new-tab
dropdown, extension load failures, and Tab.backendId
add 1cbcb5483c0 fix(sqllab,extensions): carry northPane view on tab state
and resolve backendId for query events
add 5bb7bf2ddd3 fix(sqllab): satisfy strict TS types for
findQueryEditorByAnyId
add 399a27250f0 fix(sqllab): address bito review feedback on northPane
rendering and test fixture
add 795e7886af7 chore(i18n): regenerate messages.pot for new
extension-error/tab-label strings
add 0ab8dd435e1 fix(sqllab): stop the new-tab dropdown's portaled clicks
from also firing antd's own add-tab handler
add 4e4a5675e80 fix(sqllab,extensions): address bito review feedback
(round 2)
add d36d79bc17b fix(sqllab,extensions): address bito review feedback
(round 3)
add 266b7a8dcc4 fix(sqllab,extensions): show a loading spinner on the
new-tab button until extensions are ready
add 4b739fcc7a3 fix(sqllab,extensions): address review feedback on new-tab
control and ready tracking
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 (da575cfae49)
\
N -- N -- N refs/heads/feat/sqllab-contribution-points-clean
(4b739fcc7a3)
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:
.asf.yaml | 2 +-
.cursor/rules/dev-standard.mdc | 4 +-
.dockerignore | 1 -
.envrc.example | 1 -
.github/CODEOWNERS | 10 +-
.github/actions/change-detector/action.yml | 5 +
.github/actions/chart-testing-action | 1 -
.github/dependabot.yml | 93 +-
.github/labeler.yml | 2 -
.github/workflows/bashlib.sh | 277 +-
.github/workflows/caches.js | 6 -
.github/workflows/chromatic.yml | 134 +
.github/workflows/codeql-analysis.yml | 15 +-
.github/workflows/docker.yml | 2 +-
.github/workflows/superset-docs-deploy.yml | 4 +-
.github/workflows/superset-docs-verify.yml | 2 +-
.github/workflows/superset-e2e.yml | 262 +-
.github/workflows/superset-helm-lint-test.yml | 19 +-
.github/workflows/superset-translations.yml | 2 +
.github/workflows/testcontainers.yml | 1 +
.gitmodules | 3 -
.pre-commit-config.yaml | 3 +-
AGENTS.md | 10 +-
Dockerfile | 8 +-
Makefile | 8 -
README.md | 9 +-
RESOURCES/INTHEWILD.yaml | 3 +-
UPDATING.md | 304 +
docker-compose-light.yml | 1 -
docker-compose.yml | 3 -
docker/.env | 3 -
docker/.env-local.example | 1 -
docker/docker-bootstrap.sh | 7 -
docker/docker-init.sh | 31 +-
docker/pythonpath_dev/superset_config.py | 13 -
docs/admin_docs/configuration/alerts-reports.mdx | 180 +-
.../configuration/async-queries-celery.mdx | 7 +
docs/admin_docs/configuration/cache.mdx | 37 +-
.../configuration/dashboard-performance.mdx | 4 +-
.../importing-exporting-datasources.mdx | 32 +
docs/admin_docs/configuration/mcp-server.mdx | 792 +-
docs/admin_docs/installation/docker-builds.mdx | 1 -
docs/developer_docs/api.mdx | 5 +
.../contributing/development-setup.md | 11 +-
docs/developer_docs/contributing/howtos.md | 124 +-
.../extensions/contribution-types.md | 19 +
docs/developer_docs/extensions/mcp.md | 81 +
.../guidelines/frontend-style-guidelines.md | 2 +-
docs/developer_docs/semantic-layer-cache-clear.md | 106 +
.../developer_docs/semantic-result-completeness.md | 70 +
docs/developer_docs/testing/backend-testing.md | 3 +-
docs/developer_docs/testing/e2e-testing.md | 28 +-
docs/developer_docs/testing/overview.md | 2 +-
docs/developer_docs/testing/testing-guidelines.md | 31 +-
docs/docs/quickstart.mdx | 3 +
.../creating-your-first-dashboard.mdx | 70 +
docs/docs/using-superset/embedding.mdx | 3 +-
docs/docs/using-superset/exploring-data.mdx | 26 +
.../using-superset/exporting-dashboard-data.mdx | 4 +-
docs/docs/using-superset/recently-archived.mdx | 180 +
.../using-superset/semantic-member-selections.mdx | 66 +
.../docs/using-superset/using-ai-with-superset.mdx | 122 +
docs/docs/using-superset/version-history.mdx | 33 +-
docs/package.json | 16 +-
docs/src/data/databases.json | 20 +
docs/static/feature-flags.json | 8 +-
docs/static/img/logos/douroeci.png | Bin 0 -> 22657 bytes
docs/static/resources/openapi.json | 378 +-
docs/yarn.lock | 808 +-
pyproject.toml | 73 +-
requirements/base.in | 4 +-
requirements/base.txt | 28 +-
requirements/development.txt | 44 +-
scripts/change_detector.py | 67 +
scripts/cypress_run.py | 167 -
scripts/docker-compose-up.sh | 4 -
scripts/translations/babel_update.sh | 7 +
scripts/translations/backfill_po.py | 79 +-
scripts/translations/check_pot_drift.py | 81 +-
superset-core/src/superset_core/queries/types.py | 3 +
.../src/superset_core/semantic_layers/errors.py | 42 +
.../src/superset_core/semantic_layers/layer.py | 18 +-
.../src/superset_core/semantic_layers/types.py | 1 +
.../src/superset_core/semantic_layers/view.py | 50 +-
superset-core/tests/semantic_layers/test_errors.py | 66 +
.../tests/semantic_layers/test_view.py | 15 +-
superset-embedded-sdk/package-lock.json | 379 +-
superset-embedded-sdk/package.json | 6 +-
superset-frontend/.gitignore | 2 -
superset-frontend/babel.config.js | 2 +-
superset-frontend/cypress-base/.gitignore | 4 -
superset-frontend/cypress-base/cypress.config.ts | 84 -
.../cypress-base/cypress/fixtures/charts.json | 38 -
.../cypress-base/cypress/fixtures/dashboards.json | 46 -
.../cypress-base/cypress/support/e2e.ts | 455 -
.../cypress-base/cypress/support/index.d.ts | 92 -
.../cypress-base/cypress/utils/index.ts | 121 -
.../cypress-base/cypress/utils/parsePostForm.ts | 60 -
.../cypress-base/cypress/utils/vizPlugins.ts | 104 -
superset-frontend/cypress-base/package-lock.json | 15006 -------------------
superset-frontend/cypress-base/package.json | 57 -
superset-frontend/cypress-base/tsconfig.json | 16 -
superset-frontend/cypress_build.sh | 46 -
superset-frontend/eslint.config.minimal.js | 1 -
superset-frontend/jest.config.js | 12 +-
superset-frontend/oxlint.json | 1 -
superset-frontend/package-lock.json | 2371 +--
superset-frontend/package.json | 117 +-
.../packages/generator-superset/package.json | 4 +-
.../superset-core/src/theme/GlobalStyles.test.tsx | 67 +
.../superset-core/src/theme/GlobalStyles.tsx | 9 +-
.../src/sections/sections.tsx | 7 +
.../src/shared-controls/sharedControls.tsx | 21 +
.../superset-ui-chart-controls/src/types.ts | 2 +
.../src/utils/D3Formatting.ts | 1 +
.../src/utils/getColorFormatters.ts | 84 +-
.../src/utils/headerGroups.test.ts | 1065 ++
.../src/utils/headerGroups.ts | 903 ++
.../superset-ui-chart-controls/src/utils/index.ts | 1 +
.../packages/superset-ui-core/package.json | 6 +-
.../src/chart/models/ChartProps.ts | 10 +
.../components/MetadataBar/MetadataBar.test.tsx | 40 +-
.../src/components/MetadataBar/MetadataBar.tsx | 6 +-
.../src/components/Select/AsyncSelect.test.tsx | 8 +
.../src/components/Select/AsyncSelect.tsx | 3 +-
.../src/components/Select/Select.test.tsx | 9 +
.../src/components/Select/Select.tsx | 3 +-
.../src/components/Table/VirtualTable.test.tsx | 81 +
.../src/components/Table/VirtualTable.tsx | 24 +-
.../TableCollection/TableCollection.stories.tsx | 22 +-
.../TableCollection/TableCollection.test.tsx | 63 +
.../src/components/TableCollection/index.tsx | 7 +-
.../src/components/TableCollection/utils.tsx | 93 +-
.../superset-ui-core/src/components/Tag/index.tsx | 1 +
.../src/query/buildQueryContext.ts | 15 +-
.../superset-ui-core/src/query/extractExtras.ts | 22 +
.../packages/superset-ui-core/src/query/index.ts | 2 +
.../src/query/semanticSelection.ts | 42 +
.../superset-ui-core/src/query/types/Dashboard.ts | 1 +
.../superset-ui-core/src/query/types/Query.ts | 1 +
.../src/query/types/QueryFormData.ts | 12 +-
.../superset-ui-core/src/utils/featureFlags.ts | 1 +
.../test/chart/models/ChartProps.test.ts | 22 +-
.../test/query/buildQueryContext.test.ts | 41 +
.../test/query/extractExtras.test.ts | 62 +
.../superset-ui-core/types/react-table-config.d.ts | 149 -
.../superset-ui-core}/types/react-table.d.ts | 54 +-
superset-frontend/playwright.config.ts | 37 +
.../playwright/components/core/Select.ts | 36 +-
.../playwright/components/modals/SaveChartModal.ts | 33 +-
.../tests/dashboard/dashboard-test-helpers.ts | 464 +-
.../global-async-query-resilience.spec.ts | 600 +
.../tests/dashboard/global-async-query.spec.ts | 462 +
.../explore/cross-referenced-dashboards.spec.ts | 29 +-
.../playwright/tests/explore/explore-save.spec.ts | 8 +-
.../tests/mobile/mobile-dashboard.spec.ts | 65 +-
.../tests/sqllab/global-async-query-sqllab.spec.ts | 78 +
superset-frontend/playwright/utils/constants.ts | 18 +
.../src/AgGridTable/components/CustomHeader.tsx | 3 +-
.../src/AgGridTable/index.tsx | 120 +-
.../src/AgGridTableChart.tsx | 44 +-
.../plugin-chart-ag-grid-table/src/consts.ts | 8 +
.../src/controlPanel.tsx | 47 +-
.../src/renderers/JsonCellRenderer.tsx | 600 +
.../src/renderers/TextCellRenderer.tsx | 59 +-
.../src/renderers/jsonCellRowHeight.ts | 61 +
.../src/renderers/parseJsonCellValue.ts | 234 +
.../src/styles/index.tsx | 35 +
.../src/transformProps.ts | 28 +-
.../plugin-chart-ag-grid-table/src/types.ts | 8 +
.../src/utils/externalAPIs.ts | 2 +
.../src/utils/formatValue.ts | 3 +-
.../src/utils/getCellStyle.ts | 8 +-
.../src/utils/isJsonCellActionTarget.ts | 56 +
.../src/utils/mainComparison.ts} | 40 +-
.../src/utils/useColDefs.ts | 27 +-
.../test/AgGridTableChart.test.tsx | 328 +-
.../test/JsonCellRenderer.test.tsx | 674 +
.../test/cellSelectionWiring.test.tsx | 88 +
.../test/controlPanel.test.ts | 115 +-
.../test/controlPanel.test.tsx | 32 +-
.../test/transformProps.test.ts | 223 +-
.../test/utils/getCellStyle.test.ts | 15 +
.../test/utils/mainComparison.test.ts | 43 +
.../test/utils/useColDefs.test.ts | 40 +
.../src/util/transformPropsUtil.ts | 8 +
.../test/util/pieColors.test.ts | 203 +
.../plugin-chart-country-map/src/CountryMap.ts | 30 +-
.../plugin-chart-country-map/src/controlPanel.ts | 23 +
.../src/countries/uk.geojson | Bin 477503 -> 477503
bytes
.../src/normalizeRegions.ts | 129 +
.../plugin-chart-country-map/src/regions.ts | 383 +
.../plugin-chart-country-map/src/transformProps.ts | 53 +-
.../test/CountryMap.test.tsx | 109 +
.../test/controlPanel.test.ts} | 30 +-
.../test/geographicRendering.test.tsx | 296 +
.../test/normalizeRegions.test.ts | 251 +
.../test/transformProps.test.ts | 125 +
.../BigNumber/BigNumberTotal/controlPanel.test.ts | 10 +
.../src/BigNumber/BigNumberTotal/controlPanel.ts | 2 +
.../BigNumberTotal/transformProps.test.ts | 2 +
.../src/BigNumber/BigNumberTotal/transformProps.ts | 2 +
.../src/BigNumber/BigNumberViz.test.tsx | 209 +-
.../src/BigNumber/BigNumberViz.tsx | 23 +-
.../BigNumberWithTrendline/controlPanel.tsx | 2 +
.../BigNumberWithTrendline/transformProps.test.ts | 74 +
.../BigNumberWithTrendline/transformProps.ts | 2 +
.../src/BigNumber/sharedControls.ts | 19 +
.../plugin-chart-echarts/src/BigNumber/types.ts | 4 +
.../src/Heatmap/controlPanel.tsx | 12 +-
.../src/Heatmap/transformProps.ts | 17 +-
.../plugin-chart-echarts/src/Heatmap/types.ts | 6 +
.../src/MixedTimeseries/controlPanel.tsx | 2 +
.../src/MixedTimeseries/transformProps.ts | 3 +
.../src/MixedTimeseries/types.ts | 2 +
.../plugin-chart-echarts/src/Pie/transformProps.ts | 4 +-
.../src/Timeseries/Area/controlPanel.tsx | 2 +
.../src/Timeseries/EchartsTimeseries.test.tsx | 117 +-
.../src/Timeseries/EchartsTimeseries.tsx | 29 +-
.../src/Timeseries/Regular/Bar/controlPanel.tsx | 2 +
.../src/Timeseries/Regular/Line/controlPanel.tsx | 2 +
.../Timeseries/Regular/Scatter/controlPanel.tsx | 2 +
.../Timeseries/Regular/SmoothLine/controlPanel.tsx | 2 +
.../src/Timeseries/Step/controlPanel.tsx | 2 +
.../src/Timeseries/constants.ts | 1 +
.../src/Timeseries/transformProps.ts | 14 +-
.../src/Timeseries/transformers.ts | 6 +-
.../plugin-chart-echarts/src/Timeseries/types.ts | 1 +
.../plugins/plugin-chart-echarts/src/constants.ts | 4 +
.../plugins/plugin-chart-echarts/src/controls.tsx | 11 +
.../plugin-chart-echarts/src/utils/formatters.ts | 40 +-
.../plugin-chart-echarts/src/utils/series.ts | 28 +-
.../test/BoxPlot/buildQuery.test.ts | 20 +
.../test/Heatmap/transformProps.test.ts | 67 +-
.../test/MixedTimeseries/transformProps.test.ts | 15 +
.../test/Rose/buildQuery.test.ts | 12 +
.../test/Timeseries/EchartsTimeseries.test.tsx | 13 +-
.../test/Timeseries/transformProps.test.ts | 91 +
.../test/Timeseries/transformers.test.ts | 17 +
.../test/utils/formatters.test.ts | 118 +
.../plugin-chart-echarts/test/utils/series.test.ts | 96 +-
.../plugins/plugin-chart-handlebars/package.json | 2 +-
.../plugin-chart-horizon/test/buildQuery.test.ts | 11 +
.../plugin-chart-partition/test/buildQuery.test.ts | 13 +
.../src/PivotTableChart.tsx | 3 +
.../src/plugin/controlPanel.tsx | 28 +-
.../src/plugin/transformProps.ts | 2 +
.../src/react-pivottable/TableRenderers.tsx | 109 +-
.../src/react-pivottable/utilities.ts | 46 +-
.../plugins/plugin-chart-pivot-table/src/types.ts | 5 +
.../test/plugin/buildQuery.test.ts | 49 +
.../test/react-pivottable/tableRenders.test.tsx | 446 +
.../test/react-pivottable/utilities.test.ts | 217 +-
.../plugin-chart-point-cluster-map/package.json | 4 +-
.../src/MapLibre.tsx | 62 +-
.../test/MapLibre.test.tsx | 31 +
.../plugin-chart-table/src/DataTable/DataTable.tsx | 11 +-
.../plugins/plugin-chart-table/src/Styles.tsx | 5 +
.../plugins/plugin-chart-table/src/TableChart.tsx | 210 +-
.../plugins/plugin-chart-table/src/buildQuery.ts | 85 +-
.../plugin-chart-table/src/controlPanel.tsx | 96 +-
.../plugin-chart-table/src/transformProps.ts | 41 +-
.../plugins/plugin-chart-table/src/types.ts | 5 +
.../plugin-chart-table/src/utils/headerGroups.ts} | 15 +-
.../test/DataTable/DataTable.test.tsx | 64 +-
.../plugin-chart-table/test/TableChart.test.tsx | 414 +
.../plugin-chart-table/test/buildQuery.test.ts | 354 +
.../plugin-chart-table/test/controlPanel.test.ts | 243 +-
.../plugin-chart-table/test/controlPanel.test.tsx | 88 +-
.../plugin-chart-table/test/headerGroups.test.ts | 301 +
.../plugins/plugin-chart-world-map/src/WorldMap.ts | 13 +-
.../plugin-chart-world-map/src/controlPanel.ts | 2 +
.../plugin-chart-world-map/src/countries.ts | 36 +-
.../plugin-chart-world-map/src/transformData.ts | 49 +-
.../plugin-chart-world-map/src/transformProps.ts | 20 +-
.../plugin-chart-world-map/src/worldGeometry.ts | 198 +
.../plugin-chart-world-map/test/WorldMap.test.ts | 92 +
.../test/controlPanel.test.ts} | 30 +-
.../test/transformData.test.ts | 169 +
.../test/transformProps.test.ts | 52 +
.../plugins/preset-chart-deckgl/package.json | 29 +-
.../src/DeckGLContainer.test.tsx | 95 +-
.../preset-chart-deckgl/src/DeckGLContainer.tsx | 17 +-
.../src/components/DeckGLOverlayMapLibre.test.tsx | 80 +
.../src/components/DeckGLOverlayMapLibre.tsx | 8 +-
.../src/layers/Contour/Contour.tsx | 2 +-
.../src/layers/Scatter/buildQuery.test.ts | 24 +
.../src/layers/Scatter/buildQuery.ts | 7 +-
.../src/layers/Scatter/controlPanel.test.ts} | 30 +-
.../src/layers/Scatter/controlPanel.ts | 2 +
.../src/layers/Scatter/transformProps.test.ts | 324 +-
.../src/layers/Scatter/transformProps.ts | 102 +-
.../preset-chart-deckgl/src/layers/spatialUtils.ts | 7 +-
.../src/layers/utils/metricUtils.ts | 17 +
superset-frontend/scripts/check-custom-rules.js | 207 +-
.../spec/helpers/geographicControlPanel.ts | 75 +
.../spec/helpers/sourceTreeScanner.ts | 1 -
.../SqlEditorTabHeader/SqlEditorTabHeader.test.tsx | 28 +-
.../TabbedSqlEditors/TabbedSqlEditors.test.tsx | 20 +
.../SqlLab/components/TabbedSqlEditors/index.tsx | 7 +-
.../DynamicGroupBy/DynamicGroupByPlugin.test.tsx | 56 +
.../DynamicGroupBy/DynamicGroupByPlugin.tsx | 52 +-
.../DynamicGroupBy/columnAllowlist.test.ts | 67 +
.../components/DynamicGroupBy/columnAllowlist.ts | 105 +
.../components/DynamicGroupBy/types.ts | 5 +
.../ChartContextMenu/ChartContextMenu.test.tsx | 2 +-
.../src/components/Chart/ChartRenderer.test.tsx | 52 +-
.../src/components/Chart/ChartRenderer.tsx | 23 +-
.../components/Chart/DrillBy/DrillBySubmenu.tsx | 2 +-
.../components/Chart/MenuItemWithTruncation.tsx | 5 +-
.../Datasource/ChangeDatasourceModal/index.tsx | 2 +-
.../Datasource/DatasourceModal/index.tsx | 19 +-
.../CollectionTable/CollectionTable.test.tsx | 236 +-
.../components/CollectionTable/index.tsx | 75 +-
.../DatasourceEditor/DatasourceEditor.tsx | 115 +-
.../src/components/GridTable/index.tsx | 10 +-
.../src/components/ListView/CardCollection.tsx | 22 +-
.../src/components/ListView/ListView.test.tsx | 2 -
.../src/components/ListView/ListView.tsx | 27 +-
superset-frontend/src/components/ListView/utils.ts | 8 +-
.../RowCountLabel/RowCountLabel.test.tsx | 16 +-
superset-frontend/src/components/Tag/index.tsx | 8 +-
.../src/dashboard/actions/dashboardInfo.ts | 98 +-
.../src/dashboard/actions/dashboardState.test.ts | 146 +
.../src/dashboard/actions/dashboardState.ts | 63 +-
.../src/dashboard/actions/datasources.test.ts | 114 +
.../src/dashboard/actions/datasources.ts | 41 +-
.../DashboardBuilder/DashboardContainer.tsx | 7 +-
.../dashboard/components/Header/Header.test.tsx | 4 +-
.../dashboard/components/PropertiesModal/index.tsx | 2 +
.../PropertiesModal/sections/AdvancedSection.tsx | 60 +-
.../sections/LabelColorMapping.test.tsx | 111 +
.../PropertiesModal/sections/LabelColorMapping.tsx | 494 +
.../sections/StylingSection.test.tsx | 141 +-
.../PropertiesModal/sections/StylingSection.tsx | 11 +
.../components/RefreshIntervalModal.test.tsx | 37 +
.../dashboard/components/RefreshIntervalModal.tsx | 2 +-
.../src/dashboard/components/SliceHeader/index.tsx | 2 +
.../SliceHeaderControls.test.tsx | 71 +
.../ViewAsTableRendering.test.tsx | 309 +
.../components/SliceHeaderControls/index.tsx | 9 +-
.../components/SliceHeaderControls/types.ts | 1 +
.../components/gridComponents/Chart/Chart.test.tsx | 312 +-
.../components/gridComponents/Chart/Chart.tsx | 95 +-
.../DownloadMenuItems/DownloadMenuItems.test.tsx | 46 +
.../components/menu/DownloadMenuItems/index.tsx | 21 +-
.../FilterBar/FilterControls/FilterValue.test.tsx | 134 +-
.../FilterBar/FilterControls/FilterValue.tsx | 93 +-
.../FilterControls/GroupByFilterCard.test.tsx | 183 +-
.../FilterBar/FilterControls/GroupByFilterCard.tsx | 41 +-
.../FiltersConfigForm/ColumnSelect.test.tsx | 39 +
.../FiltersConfigForm/ColumnSelect.tsx | 99 +-
.../FiltersConfigForm/FiltersConfigForm.tsx | 358 +-
.../GroupByColumnAllowlist.test.tsx | 429 +
.../FiltersConfigModal/FiltersConfigModal.test.tsx | 147 +-
.../hooks/useFilterOperations.test.ts | 62 +
.../hooks/useFilterOperations.ts | 10 +-
.../transformers/buildTarget.test.ts | 44 +-
.../FiltersConfigModal/transformers/buildTarget.ts | 37 +-
.../transformers/customizationTransformer.test.ts | 109 +
.../transformers/customizationTransformer.ts | 67 +-
.../transformers/filterTransformer.ts | 10 +-
.../nativeFilters/FiltersConfigModal/types.ts | 6 +
.../useDisplayControlDatasource.test.ts | 22 +-
.../nativeFilters/useDisplayControlDatasource.ts | 25 +-
.../components/nativeFilters/utils.test.ts | 27 +
.../dashboard/components/nativeFilters/utils.ts | 13 +
.../dashboard/containers/DashboardPage.test.tsx | 153 +-
.../src/dashboard/containers/DashboardPage.tsx | 79 +-
.../contexts/DashboardDatasetsContext.ts} | 14 +-
.../src/dashboard/reducers/dashboardInfo.test.ts | 327 +
.../src/dashboard/reducers/dashboardInfo.ts | 160 +
superset-frontend/src/dashboard/types.ts | 13 +
.../util/charts/getFormDataWithExtraFilters.ts | 163 +-
.../util/getFormDataWithExtraFilters.test.ts | 412 +-
superset-frontend/src/dataMask/reducer.test.ts | 58 +
superset-frontend/src/dataMask/reducer.ts | 18 +
.../src/explore/actions/exploreActions.ts | 10 +
.../src/explore/components/Control.test.tsx | 36 +-
.../src/explore/components/Control.tsx | 3 +-
.../components/ControlPanelsContainer.test.tsx | 477 +-
.../explore/components/ControlPanelsContainer.tsx | 112 +-
.../ExploreViewContainer.test.tsx | 153 +
.../components/ExploreViewContainer/index.tsx | 32 +-
.../controls/AnnotationLayerControl/index.test.tsx | 84 +-
.../components/controls/ColorPickerControl.tsx | 2 +-
.../ColorSchemeControl/ColorSchemeControl.test.tsx | 76 +
.../ColumnConfigConstants.test.tsx | 25 +-
.../ColumnConfigControl.test.tsx | 86 +
.../ColumnConfigControl/ColumnConfigControl.tsx | 24 +-
.../ControlForm/ControlForm.debounce.test.tsx | 124 +
.../ColumnConfigControl/ControlForm/index.tsx | 50 +-
.../controls/ColumnConfigControl/constants.tsx | 5 +-
.../controls/ComparisonRangeLabel.test.tsx | 252 +
.../ControlPopover/ControlPopover.test.tsx | 66 +
.../controls/ControlPopover/ControlPopover.tsx | 39 +-
.../DateFilterControl/tests/CommonFrame.test.tsx | 72 +
.../tests/DateFilterLabel.test.tsx | 193 +
.../DateFilterControl/tests/DateLabel.test.tsx | 73 +
.../ColumnSelectPopover.test.tsx | 38 +-
.../DndColumnSelect.test.tsx | 20 +-
.../DndMetricSelect.test.tsx | 90 +
.../AdhocFilterControl/AdhocFilterControl.test.tsx | 102 +-
.../AdhocFilterEditPopover.test.tsx | 55 +-
...AdhocFilterEditPopoverSimpleTabContent.test.tsx | 21 +-
.../index.tsx | 27 +-
.../HeaderGroupsControl/HeaderGroupEditor.tsx | 567 +
.../HeaderGroupsControl.test.tsx | 906 ++
.../HeaderGroupsControl/HeaderGroupsControl.tsx | 289 +
.../controls/HeaderGroupsControl/index.ts} | 14 +-
.../types.ts | 45 +-
.../controls/HeaderGroupsControl/utils.test.ts | 388 +
.../controls/HeaderGroupsControl/utils.ts | 215 +
.../controls/MapViewControl/ExtentTag.test.tsx | 68 +
.../controls/MapViewControl/ExtentTag.tsx | 13 +-
.../components/controls/MapViewControl/types.ts | 6 +-
.../MatrixifyControl/utils/fetchTopNValues.test.ts | 165 +
.../controls/MatrixifyDimensionControl.test.tsx | 139 +-
.../controls/MatrixifyDimensionControl.tsx | 26 +-
.../AdhocMetricEditPopover.test.tsx | 4 +-
.../AdhocMetricPopoverTrigger.test.tsx | 278 +
.../components/controls/SelectControl.test.tsx | 55 +
.../controls/SemanticRequestView.test.tsx | 111 +
.../components/controls/SemanticRequestView.tsx | 71 +
.../components/controls/TextAreaControl.test.tsx | 103 +
.../components/controls/TextAreaControl.tsx | 169 +-
.../components/controls/ViewQueryModal.test.tsx | 300 +-
.../explore/components/controls/ViewQueryModal.tsx | 98 +-
.../controls/ViewQueryModalFooter.test.tsx | 95 +
.../components/controls/ViewQueryModalFooter.tsx | 7 +-
.../ZoomConfigControl/ZoomConfigControl.test.tsx | 115 +
.../ZoomConfigControl/ZoomConfigControl.tsx | 36 +-
.../src/explore/components/controls/index.ts | 2 +
.../useExploreAdditionalActionsMenu/index.tsx | 40 +-
.../useExploreAdditionalActionsMenu.test.tsx | 71 +-
.../src/explore/controlPanels/sections.tsx | 7 +
.../controlUtils/getSectionsToRender.test.ts | 179 +
.../src/explore/exploreUtils/exploreUtils.test.tsx | 32 +
.../explore/reducers/datasourcesReducer.test.ts | 171 +
.../src/explore/reducers/exploreReducer.test.ts | 339 +-
.../src/explore/reducers/exploreReducer.ts | 54 +-
.../src/explore/reducers/saveModalReducer.test.ts | 184 +
.../src/extensions/ExtensionsLoader.ts | 5 +-
.../src/features/alerts/AlertReportModal.test.tsx | 428 +
.../src/features/alerts/AlertReportModal.tsx | 1012 +-
.../alerts/ReportConfigurationModal.test.tsx | 409 +
.../features/alerts/ReportConfigurationModal.tsx | 488 +
.../alerts/hooks/useReportConfiguration.ts | 64 +
superset-frontend/src/features/alerts/types.ts | 34 +-
.../DatabaseConnectionForm/CommonParameters.tsx | 2 +
.../datasets/AddDataset/Footer/Footer.test.tsx | 5 +-
.../reports/ReportModal/ReportModal.test.tsx | 279 +-
.../src/features/reports/ReportModal/index.tsx | 83 +-
superset-frontend/src/features/reports/types.ts | 2 +
.../semanticLayers/SemanticLayerModal.test.tsx | 130 +-
.../features/semanticLayers/SemanticLayerModal.tsx | 75 +-
.../src/hooks/apiResources/dashboards.test.ts | 14 +
.../src/hooks/apiResources/dashboards.ts | 28 +-
.../src/hooks/apiResources/datasets.cache.test.ts | 48 +
.../src/hooks/apiResources/datasets.test.ts | 36 +-
.../src/hooks/apiResources/datasets.ts | 6 +-
.../src/middleware/asyncEvent.test.ts | 370 +-
superset-frontend/src/middleware/asyncEvent.ts | 90 +-
.../src/middleware/asyncQueryError.ts | 118 +
.../src/pages/ActionLog/ActionLog.test.tsx | 90 +
superset-frontend/src/pages/ActionLog/index.tsx | 3 +
.../pages/AlertReportList/AlertReportList.test.tsx | 43 +
.../src/pages/AlertReportList/index.tsx | 22 +
.../ArchivedList/ArchivedDatasetPurgeModal.tsx | 3 +-
superset-frontend/src/pages/DatabaseList/index.tsx | 2 +
superset-frontend/src/pages/Home/Home.test.tsx | 47 +-
superset-frontend/src/pages/Home/index.tsx | 20 +-
superset-frontend/src/types/react-table.d.ts | 16 +
superset-frontend/src/utils/cacheWrapper.test.ts | 54 +
superset-frontend/src/utils/cacheWrapper.ts | 6 +
.../src/utils/cachedSupersetGet.test.ts | 20 +
.../src/utils/downloadAsImage.test.ts | 572 +-
superset-frontend/src/utils/downloadAsImage.tsx | 149 +-
superset-frontend/src/utils/downloadAsPdf.test.ts | 128 +
superset-frontend/src/utils/downloadAsPdf.ts | 30 +-
superset-frontend/src/utils/downloadUtils.test.ts | 76 +-
superset-frontend/src/utils/downloadUtils.ts | 35 +-
.../utils/getChartRequiredFieldsMissingMessage.ts | 1 +
.../src/utils/semanticViewStructure.test.ts | 19 +-
.../src/utils/semanticViewStructure.ts | 31 +-
superset-frontend/src/utils/urlUtils.ts | 17 +
superset-frontend/src/views/App.test.tsx | 12 +-
superset-frontend/src/views/App.tsx | 11 +-
.../TimeTable/components/LeftCell/LeftCell.tsx | 18 +-
.../TimeTable/config/buildQuery.test.ts | 14 +
superset-frontend/webpack.config.js | 1 -
superset-websocket/package-lock.json | 630 +-
superset-websocket/package.json | 14 +-
.../utils/client-ws-app/package-lock.json | 17 +-
superset/annotation_layers/schemas.py | 21 +
superset/charts/api.py | 21 +-
superset/charts/data/api.py | 7 +-
superset/charts/data/form_data.py | 2 +-
superset/charts/filters.py | 10 +-
superset/charts/schemas.py | 21 +-
superset/commands/annotation_layer/exceptions.py | 5 +
superset/commands/annotation_layer/export.py | 109 +
.../annotation_layer/importers}/__init__.py | 0
.../annotation_layer/importers/dispatcher.py | 74 +
.../annotation_layer/importers/v1/__init__.py | 54 +
.../annotation_layer/importers/v1/utils.py | 73 +
superset/commands/chart/export.py | 251 +-
superset/commands/chart/importers/v1/__init__.py | 104 +-
superset/commands/chart/importers/v1/utils.py | 381 +-
superset/commands/chart/restore_version.py | 17 +
superset/commands/dashboard/export.py | 8 +-
superset/commands/dashboard/export_example.py | 31 +
.../commands/dashboard/importers/v1/__init__.py | 89 +-
superset/commands/dashboard/permalink/create.py | 43 +-
superset/commands/dashboard/update.py | 19 +
.../commands/deletion_retention/force_purge.py | 7 +-
.../commands/deletion_retention/prune_audit.py | 76 +-
.../commands/deletion_retention/purge_cascade.py | 5 +-
.../commands/deletion_retention/purge_policy.py | 1191 +-
superset/commands/distributed_lock/release.py | 3 +-
superset/commands/export/assets.py | 10 +-
superset/commands/importers/v1/__init__.py | 10 +-
superset/commands/importers/v1/assets.py | 74 +-
superset/commands/importers/v1/examples.py | 19 +
superset/commands/importers/v1/utils.py | 7 +-
superset/commands/report/alert.py | 52 +-
superset/commands/report/base.py | 175 +-
superset/commands/report/create.py | 46 +
superset/commands/report/exceptions.py | 155 +-
superset/commands/report/execute.py | 213 +-
superset/commands/report/update.py | 324 +-
superset/commands/report/update_config.py | 145 +
superset/commands/security/reset.py | 22 +-
superset/commands/semantic_layer/update.py | 58 +-
superset/commands/theme/import_themes.py | 57 +-
superset/commands/version_restore.py | 5 +
superset/common/form_data_query_context.py | 1599 +-
superset/common/query_context_factory.py | 60 +-
superset/common/query_context_processor.py | 77 +-
superset/common/query_object.py | 64 +-
superset/common/tabular_query.py | 15 +-
superset/common/utils/dataframe_utils.py | 8 +-
superset/config.py | 50 +-
superset/core/mcp/core_mcp_injection.py | 24 +-
superset/daos/datasource.py | 21 +-
superset/daos/key_value.py | 14 +-
superset/daos/report.py | 212 +-
superset/dashboards/api.py | 32 +-
superset/dashboards/excel_export/workbook.py | 11 +-
superset/dashboards/schemas.py | 17 +-
superset/datasets/schemas.py | 39 +-
superset/datasource/api.py | 141 +-
superset/datasource/schemas.py | 9 +
superset/db_engine_specs/base.py | 6 +
superset/db_engine_specs/bigquery.py | 55 +-
superset/db_engine_specs/d1.py | 20 -
superset/db_engine_specs/doris.py | 29 +-
superset/db_engine_specs/gsheets.py | 23 +-
superset/db_engine_specs/impala.py | 118 +-
superset/db_engine_specs/postgres.py | 34 +
superset/db_engine_specs/shillelagh.py | 20 +-
superset/db_engine_specs/sqlite.py | 16 +-
superset/db_engine_specs/trino.py | 18 +
superset/exceptions.py | 26 +
superset/initialization/__init__.py | 5 +-
superset/key_value/types.py | 37 +-
superset/mcp_service/CLAUDE.md | 2 +-
superset/mcp_service/app.py | 19 +-
superset/mcp_service/auth.py | 118 +-
superset/mcp_service/caching.py | 37 +-
superset/mcp_service/chart/big_number_headline.py | 388 +
superset/mcp_service/chart/chart_helpers.py | 587 +-
superset/mcp_service/chart/chart_utils.py | 1372 +-
superset/mcp_service/chart/compile.py | 157 +-
superset/mcp_service/chart/plugin.py | 221 +-
superset/mcp_service/chart/plugins/__init__.py | 15 +
superset/mcp_service/chart/plugins/big_number.py | 23 +-
superset/mcp_service/chart/plugins/bubble.py | 6 +-
superset/mcp_service/chart/plugins/gantt.py | 32 +
superset/mcp_service/chart/plugins/gauge.py | 40 +-
superset/mcp_service/chart/plugins/geographic.py | 834 ++
superset/mcp_service/chart/plugins/histogram.py | 11 +-
.../mcp_service/chart/plugins/mixed_timeseries.py | 84 +-
superset/mcp_service/chart/plugins/pivot_table.py | 4 +
superset/mcp_service/chart/plugins/sunburst.py | 288 +
superset/mcp_service/chart/plugins/table.py | 25 +
superset/mcp_service/chart/plugins/treemap.py | 3 +-
superset/mcp_service/chart/plugins/waterfall.py | 6 +-
superset/mcp_service/chart/plugins/xy.py | 185 +-
superset/mcp_service/chart/preview_utils.py | 395 +-
.../chart/prompts/create_chart_guided.py | 4 +-
superset/mcp_service/chart/query_result.py | 1756 ++-
superset/mcp_service/chart/registry.py | 18 +
.../mcp_service/chart/resources/chart_configs.py | 75 +-
superset/mcp_service/chart/response_preflight.py | 204 +
superset/mcp_service/chart/schemas.py | 1819 ++-
superset/mcp_service/chart/sunburst.py | 436 +
superset/mcp_service/chart/tool/generate_chart.py | 243 +-
superset/mcp_service/chart/tool/get_chart_data.py | 713 +-
superset/mcp_service/chart/tool/get_chart_info.py | 46 +-
.../mcp_service/chart/tool/get_chart_preview.py | 160 +-
superset/mcp_service/chart/tool/get_chart_sql.py | 200 +-
.../chart/tool/get_chart_type_schema.py | 59 +-
superset/mcp_service/chart/tool/list_charts.py | 130 +-
superset/mcp_service/chart/tool/update_chart.py | 596 +-
.../mcp_service/chart/tool/update_chart_preview.py | 407 +-
.../chart/validation/dataset_validator.py | 671 +-
.../validation/runtime/chart_type_suggester.py | 13 +-
superset/mcp_service/common/pagination_schemas.py | 3 +-
superset/mcp_service/common/schema_discovery.py | 2 +-
.../mcp_service/common/time_range_validation.py | 81 +-
superset/mcp_service/composite_token_verifier.py | 26 +-
superset/mcp_service/dashboard/constants.py | 4 +
superset/mcp_service/dashboard/layout_placement.py | 309 +
.../mcp_service/dashboard/layout_validation.py | 11 +-
superset/mcp_service/dashboard/schemas.py | 878 +-
superset/mcp_service/dashboard/tool/__init__.py | 2 +
.../tool/add_chart_to_existing_dashboard.py | 234 +-
.../dashboard/tool/apply_dashboard_filters.py | 280 +-
.../mcp_service/dashboard/tool/delete_dashboard.py | 66 +-
.../dashboard/tool/generate_dashboard.py | 18 +-
.../dashboard/tool/get_dashboard_data.py | 9 +
.../dashboard/tool/get_dashboard_datasets.py | 13 +-
.../dashboard/tool/get_dashboard_info.py | 21 +-
.../dashboard/tool/get_dashboard_layout.py | 161 +-
.../mcp_service/dashboard/tool/governance_utils.py | 15 +-
.../mcp_service/dashboard/tool/list_dashboards.py | 18 +-
.../tool/manage_dashboard_certification.py | 10 +-
.../dashboard/tool/manage_dashboard_markdown.py | 512 +
.../dashboard/tool/manage_dashboard_owners.py | 12 +-
.../dashboard/tool/manage_dashboard_roles.py | 32 +-
.../dashboard/tool/manage_native_filters.py | 535 +-
.../dashboard/tool/remove_chart_from_dashboard.py | 73 +-
.../dashboard/tool/restore_dashboard.py | 47 +-
.../mcp_service/dashboard/tool/update_dashboard.py | 10 +
superset/mcp_service/dashboard_scope.py | 1366 ++
superset/mcp_service/dashboard_scope_sql.py | 516 +
superset/mcp_service/dataset/dataset_utils.py | 5 +
superset/mcp_service/dataset/schemas.py | 73 +-
.../mcp_service/dataset/tool/create_dataset.py | 11 +-
.../dataset/tool/create_virtual_dataset.py | 16 +-
.../mcp_service/dataset/tool/get_dataset_info.py | 7 +-
superset/mcp_service/dataset/tool/list_datasets.py | 27 +-
superset/mcp_service/dataset/tool/query_dataset.py | 165 +-
.../mcp_service/dataset/tool/update_dataset.py | 16 +-
.../explore/tool/generate_explore_link.py | 9 +-
superset/mcp_service/mcp_config.py | 55 +-
superset/mcp_service/middleware.py | 279 +-
superset/mcp_service/privacy.py | 1 +
superset/mcp_service/semantic_layer/schemas.py | 17 +-
.../semantic_layer/tool/get_compatible_metrics.py | 3 +
.../mcp_service/semantic_layer/tool/get_table.py | 179 +-
.../semantic_layer/tool/list_metrics.py | 3 +
superset/mcp_service/server.py | 200 +-
superset/mcp_service/simple_proxy.py | 6 +-
superset/mcp_service/sql_lab/schemas.py | 46 +-
superset/mcp_service/sql_lab/tool/execute_sql.py | 15 +-
superset/mcp_service/system/prompts/quickstart.py | 4 +-
.../system/resources/instance_metadata.py | 37 +-
superset/mcp_service/system/system_utils.py | 33 +-
.../mcp_service/system/tool/get_instance_info.py | 38 +-
superset/mcp_service/system/tool/get_schema.py | 7 +-
superset/mcp_service/system/tool/health_check.py | 5 +-
superset/mcp_service/utils/cache_utils.py | 32 +-
superset/mcp_service/utils/error_builder.py | 115 +-
superset/mcp_service/utils/response_size_utils.py | 216 +-
superset/mcp_service/utils/response_utils.py | 294 +-
superset/mcp_service/utils/schema_utils.py | 27 +-
superset/mcp_service/utils/serialization.py | 51 +-
superset/mcp_service/worker.py | 897 ++
.../migrations/shared/migrate_viz/processors.py | 6 +-
superset/migrations/shared/utils.py | 2 +-
..._add_uuid_to_annotation_layer_and_annotation.py | 144 +
...0fab727cd0a_add_theme_editors_theme_id_index.py | 64 +
...00_e4a7c2b9d1f3_add_run_as_and_report_config.py | 178 +
...79af013f48_add_semantic_layer_cache_version.py} | 32 +-
superset/models/annotations.py | 19 +-
superset/models/core.py | 220 +-
superset/models/helpers.py | 48 +-
superset/models/slice.py | 73 +-
superset/reports/api.py | 181 +-
superset/reports/models.py | 45 +
superset/reports/notifications/email.py | 14 +-
superset/reports/schemas.py | 225 +-
superset/reports/types.py | 20 +-
superset/reports/utils.py | 183 +
superset/result_set.py | 10 +
superset/security/manager.py | 362 +-
superset/semantic_layers/api.py | 64 +-
.../bundle_schemas.py} | 28 +-
superset/semantic_layers/completeness.py | 44 +
superset/semantic_layers/import_export.py | 240 +
superset/semantic_layers/mapper.py | 175 +-
superset/semantic_layers/models.py | 260 +-
superset/sql/execution/cancellation.py | 170 +
superset/sql/execution/celery_task.py | 1 +
superset/sql/execution/executor.py | 134 +-
superset/sql/parse.py | 101 +-
superset/superset_typing.py | 11 +
superset/tasks/api.py | 23 +-
superset/tasks/async_queries.py | 17 +-
superset/tasks/deletion_retention.py | 477 +-
superset/tasks/query_cancel.py | 9 +-
.../constants.py => tasks/retention_cap.py} | 28 +-
superset/tasks/schemas.py | 3 +
superset/tasks/version_history_retention.py | 282 +-
superset/themes/api.py | 20 +-
superset/translations/ar/LC_MESSAGES/messages.po | 519 +-
superset/translations/ca/LC_MESSAGES/messages.po | 515 +-
superset/translations/cs/LC_MESSAGES/messages.po | 516 +-
superset/translations/de/LC_MESSAGES/messages.po | 514 +-
superset/translations/en/LC_MESSAGES/messages.po | 514 +-
superset/translations/es/LC_MESSAGES/messages.po | 515 +-
superset/translations/fa/LC_MESSAGES/messages.po | 515 +-
superset/translations/fi/LC_MESSAGES/messages.po | 517 +-
superset/translations/fr/LC_MESSAGES/messages.po | 514 +-
superset/translations/it/LC_MESSAGES/messages.po | 516 +-
superset/translations/ja/LC_MESSAGES/messages.po | 513 +-
superset/translations/ko/LC_MESSAGES/messages.po | 516 +-
superset/translations/lv/LC_MESSAGES/messages.po | 515 +-
superset/translations/messages.pot | 502 +-
superset/translations/mi/LC_MESSAGES/messages.po | 515 +-
superset/translations/nl/LC_MESSAGES/messages.po | 515 +-
superset/translations/pl/LC_MESSAGES/messages.po | 515 +-
superset/translations/pt/LC_MESSAGES/messages.po | 8133 +++++-----
.../translations/pt_BR/LC_MESSAGES/messages.po | 4351 +++---
superset/translations/ro/LC_MESSAGES/messages.po | 515 +-
superset/translations/ru/LC_MESSAGES/messages.po | 515 +-
superset/translations/sk/LC_MESSAGES/messages.po | 516 +-
superset/translations/sl/LC_MESSAGES/messages.po | 516 +-
superset/translations/sr/LC_MESSAGES/messages.po | 516 +-
.../translations/sr_Latn/LC_MESSAGES/messages.po | 516 +-
superset/translations/ta/LC_MESSAGES/messages.po | 514 +-
superset/translations/th/LC_MESSAGES/messages.po | 516 +-
superset/translations/tr/LC_MESSAGES/messages.po | 513 +-
superset/translations/uk/LC_MESSAGES/messages.po | 516 +-
superset/translations/zh/LC_MESSAGES/messages.po | 514 +-
.../translations/zh_TW/LC_MESSAGES/messages.po | 514 +-
superset/utils/core.py | 48 +-
superset/utils/date_parser.py | 61 +-
superset/utils/dict_import_export.py | 7 +
superset/utils/geographic.py | 105 +
superset/utils/geographic_regions.py | 385 +
superset/utils/geographic_world.py | 205 +
superset/utils/oauth2.py | 136 +-
.../utils/pandas_postprocessing/contribution.py | 24 +-
superset/utils/pandas_postprocessing/cum.py | 7 +-
superset/utils/pandas_postprocessing/histogram.py | 8 +-
superset/utils/pandas_postprocessing/pivot.py | 51 +-
superset/utils/pandas_postprocessing/utils.py | 25 +-
superset/utils/rls.py | 4 +-
superset/versioning/api_helpers.py | 14 +-
superset/versioning/baseline/listener.py | 6 +-
superset/versioning/changes/listener.py | 21 +-
superset/versioning/metrics.py | 6 +-
superset/versioning/restore.py | 146 +-
superset/versioning/savepoints.py | 149 +
superset/versioning/unit_of_work.py | 113 +-
superset/views/api.py | 4 +-
superset/views/base.py | 1 +
superset/views/dashboard/mixin.py | 1 +
superset/views/error_handling.py | 12 +-
superset/views/users/api.py | 22 +-
tests/common/assert_utils.py | 2 +-
.../annotation_layers/commands_tests.py | 750 +
tests/integration_tests/charts/commands_tests.py | 1515 ++
.../charts/semantic_metadata_authz_tests.py | 640 +
tests/integration_tests/commands_test.py | 58 +
.../integration_tests/dashboards/commands_tests.py | 585 +
.../deletion_retention/force_purge_tests.py | 11 +-
.../deletion_retention/prune_audit_tests.py | 88 +
.../deletion_retention/purge_tests.py | 210 +-
tests/integration_tests/fixtures/importexport.py | 104 +
tests/integration_tests/reports/alert_tests.py | 40 +-
tests/integration_tests/reports/api_tests.py | 342 +-
.../commands/execute_dashboard_report_tests.py | 11 +-
tests/integration_tests/reports/config_tests.py | 104 +
.../integration_tests/superset_test_config_gaq.py | 59 +
tests/integration_tests/tasks/api_tests.py | 128 +-
.../versioning/retention_prune_tests.py | 65 +
.../db_engine_specs/test_clickhouse.py | 43 +
tests/testcontainers/db_engine_specs/test_crate.py | 44 +
tests/testcontainers/db_engine_specs/test_mysql.py | 166 +-
.../db_engine_specs/test_opensearch.py | 155 +
.../testcontainers/db_engine_specs/test_oracle.py | 107 +
.../charts/commands/importers/v1/import_test.py | 32 +-
.../charts/commands/importers/v1/utils_test.py | 28 +-
.../charts/data/test_time_range_validation.py | 48 +
.../charts/semantic_view_chart_filter_test.py | 14 +-
tests/unit_tests/charts/test_export_api.py | 44 +
.../commands/chart/semantic_export_test.py | 127 +
.../dashboard/export_example_semantic_test.py | 175 +
.../commands/dashboard/permalink_create_test.py | 131 +
tests/unit_tests/commands/dashboard/update_test.py | 87 +
.../deletion_retention/test_prune_audit.py | 33 +-
.../deletion_retention/test_purge_chart_detach.py | 301 +
.../deletion_retention/test_purge_policy.py | 1632 +-
tests/unit_tests/commands/export_test.py | 51 +
.../commands/importers/v1/assets_test.py | 4 +-
.../unit_tests/commands/importers/v1/utils_test.py | 34 +
tests/unit_tests/commands/report/alert_test.py | 21 +-
tests/unit_tests/commands/report/create_test.py | 37 +
tests/unit_tests/commands/report/execute_test.py | 179 +-
tests/unit_tests/commands/report/executor_test.py | 621 +
tests/unit_tests/commands/report/run_as_test.py | 1340 ++
.../commands/report/update_config_test.py | 223 +
tests/unit_tests/commands/report/update_test.py | 45 +
tests/unit_tests/commands/security/reset_test.py | 62 +
.../commands/theme/test_import_themes.py | 89 +
.../common/test_form_data_query_context.py | 296 +-
.../common/test_query_context_factory.py | 40 +
.../common/test_query_context_processor.py | 165 +
tests/unit_tests/conftest.py | 13 +-
tests/unit_tests/connectors/sqla/utils_test.py | 34 +
tests/unit_tests/dao/key_value_test.py | 42 +
tests/unit_tests/dashboards/schema_tests.py | 37 +-
.../dashboards/semantic_view_access_test.py | 186 +
.../dashboards/test_excel_export_sync_budget.py | 47 +
tests/unit_tests/dashboards/test_export_api.py | 55 +
tests/unit_tests/datasets/dao/dao_tests.py | 65 +
tests/unit_tests/datasets/schema_tests.py | 52 +
tests/unit_tests/db_engine_specs/test_bigquery.py | 173 +-
tests/unit_tests/db_engine_specs/test_d1.py | 48 +-
tests/unit_tests/db_engine_specs/test_doris.py | 160 +-
.../db_engine_specs/test_impala_pending.py | 303 +
.../unit_tests/db_engine_specs/test_shillelagh.py | 13 +
tests/unit_tests/db_engine_specs/test_sqlite.py | 83 +
tests/unit_tests/db_engine_specs/test_trino.py | 17 +
.../distributed_lock/distributed_lock_tests.py | 6 +-
tests/unit_tests/extensions/test_sqlalchemy.py | 89 +
tests/unit_tests/initialization/init_views_test.py | 113 +
.../mcp_service/catalog/tool/test_get_catalog.py | 13 +
.../mcp_service/chart/query_result_fixtures.py | 165 +
...test_axis_offset_and_spatial_query_contracts.py | 474 +
.../mcp_service/chart/test_big_number_headline.py | 665 +
.../mcp_service/chart/test_bubble_chart.py | 10 +-
.../mcp_service/chart/test_chart_examples.py | 3 +-
.../mcp_service/chart/test_chart_helpers.py | 776 +-
.../chart/test_chart_plugin_contract.py | 318 +-
.../mcp_service/chart/test_chart_schemas.py | 244 +
.../mcp_service/chart/test_chart_utils.py | 950 ++
tests/unit_tests/mcp_service/chart/test_compile.py | 550 +-
.../mcp_service/chart/test_gantt_chart.py | 56 +-
.../mcp_service/chart/test_gauge_chart.py | 3 +-
.../mcp_service/chart/test_geographic_chart.py | 2199 +++
.../chart/test_histogram_boxplot_charts.py | 8 +-
.../chart/test_live_chart_datasource.py | 709 +
..._metric_aggregation_and_comparison_contracts.py | 379 +
...ative_form_data_and_dataset_rebind_contracts.py | 1326 ++
.../mcp_service/chart/test_new_chart_types.py | 4 +-
.../mcp_service/chart/test_preview_utils.py | 337 +-
.../mcp_service/chart/test_query_result.py | 2027 ++-
.../unit_tests/mcp_service/chart/test_registry.py | 33 +-
.../mcp_service/chart/test_response_preflight.py | 486 +
.../test_review_query_and_preview_regressions.py | 438 +
.../mcp_service/chart/test_sunburst_chart.py | 5579 +++++++
.../mcp_service/chart/test_treemap_completeness.py | 88 +-
.../chart/tool/test_column_suggestions.py | 617 +
.../mcp_service/chart/tool/test_generate_chart.py | 95 +
.../mcp_service/chart/tool/test_get_chart_data.py | 2809 +++-
.../chart/tool/test_get_chart_preview.py | 417 +-
.../mcp_service/chart/tool/test_get_chart_sql.py | 332 +-
.../mcp_service/chart/tool/test_list_charts.py | 4 +-
.../chart/tool/test_saved_chart_datasource.py | 422 +
.../mcp_service/chart/tool/test_update_chart.py | 893 +-
.../chart/tool/test_update_chart_preview.py | 339 +-
.../validation/test_column_name_normalization.py | 26 +
.../chart/validation/test_dataset_validator.py | 421 +-
.../common/test_time_range_validation.py | 82 +-
.../dashboard/test_dashboard_schemas.py | 138 +
.../mcp_service/dashboard/test_layout_placement.py | 101 +
.../dashboard/tool/test_apply_dashboard_filters.py | 1202 +-
.../dashboard/tool/test_dashboard_generation.py | 79 +-
.../dashboard/tool/test_delete_dashboard.py | 1 +
.../dashboard/tool/test_get_dashboard_data.py | 44 +
.../dashboard/tool/test_get_dashboard_datasets.py | 233 +-
.../dashboard/tool/test_get_dashboard_layout.py | 744 +-
.../tool/test_manage_dashboard_markdown.py | 1279 ++
.../dashboard/tool/test_manage_dashboard_owners.py | 1 +
.../dashboard/tool/test_manage_dashboard_roles.py | 2 +
.../dashboard/tool/test_manage_native_filters.py | 2025 ++-
.../tool/test_managed_dashboard_refusal.py | 353 +
.../dashboard/tool/test_restore_dashboard.py | 1 +
.../dataset/tool/test_dataset_metric_mutations.py | 13 +
.../mcp_service/dataset/tool/test_query_dataset.py | 966 +-
.../dataset/tool/test_sql_dataset_guidance.py | 181 +
.../dataset/tool/test_update_dataset_metric.py | 13 +
.../explore/tool/test_generate_explore_link.py | 476 +-
.../mcp_service/native_tool_inventory.json | 1289 ++
.../tool/test_get_compatible_metrics.py | 14 +-
.../semantic_layer/tool/test_get_table.py | 1096 +-
.../semantic_layer/tool/test_list_metrics.py | 10 +-
.../mcp_service/sql_lab/tool/test_execute_sql.py | 49 +-
.../sql_lab/tool/test_execute_sql_response.py | 127 +
.../system/resources/test_instance_metadata.py | 144 +
.../system/tool/test_get_current_user.py | 6 +-
.../mcp_service/test_auth_user_resolution.py | 48 +-
.../mcp_service/test_chart_tool_inventory.py | 2 +-
.../mcp_service/test_composite_token_verifier.py | 105 +-
.../unit_tests/mcp_service/test_dashboard_scope.py | 1511 ++
.../mcp_service/test_dashboard_scope_sql.py | 674 +
.../unit_tests/mcp_service/test_mcp_docstrings.py | 128 +
tests/unit_tests/mcp_service/test_mcp_server.py | 69 +
.../mcp_service/test_mcp_tool_registration.py | 109 +
tests/unit_tests/mcp_service/test_middleware.py | 215 +-
.../mcp_service/test_middleware_logging.py | 138 +-
.../mcp_service/test_native_tool_surface.py | 1144 ++
.../test_tool_description_constraints.py | 700 +
.../unit_tests/mcp_service/test_tool_inventory.py | 47 +-
.../mcp_service/test_tool_search_transform.py | 90 +-
tests/unit_tests/mcp_service/test_worker.py | 878 ++
.../mcp_service/test_worker_metadata_pool.py | 1000 ++
.../mcp_service/utils/test_cache_utils.py | 32 +-
.../mcp_service/utils/test_response_size_utils.py | 85 +
.../mcp_service/utils/test_response_utils.py | 246 +
.../mcp_service/utils/test_serialization.py | 68 +
.../test_add_run_as_and_report_config.py | 274 +
.../test_add_theme_editors_theme_id_index.py | 90 +
.../unit_tests/migrations/viz/table_v1_v2_test.py | 42 +
tests/unit_tests/models/core_test.py | 414 +
tests/unit_tests/models/helpers_test.py | 81 +
tests/unit_tests/models/slice_test.py | 66 +
.../unit_tests/models/test_certification_mixin.py | 76 +
tests/unit_tests/pandas_postprocessing/test_cum.py | 74 +
.../pandas_postprocessing/test_geography.py | 41 +
.../pandas_postprocessing/test_histogram.py | 32 +-
.../unit_tests/pandas_postprocessing/test_pivot.py | 339 +
.../unit_tests/pandas_postprocessing/test_utils.py | 88 +
tests/unit_tests/queries/query_object_test.py | 22 +-
tests/unit_tests/reports/api_test.py | 33 +
tests/unit_tests/reports/config_api_test.py | 135 +
tests/unit_tests/reports/config_dao_test.py | 359 +
.../reports/notifications/email_tests.py | 9 +-
tests/unit_tests/reports/schemas_test.py | 86 +
tests/unit_tests/reports/utils_test.py | 222 +
tests/unit_tests/result_set_test.py | 42 +-
tests/unit_tests/scripts/change_detector_test.py | 88 +
.../scripts/translations/backfill_po_test.py | 226 +-
.../scripts/translations/check_pot_drift_test.py | 215 +-
tests/unit_tests/security/manager_test.py | 520 +-
.../unit_tests/security/semantic_guest_rls_test.py | 401 +
.../security/test_guest_token_dataset_allowlist.py | 6 +-
.../test_superset_user_api_subject_sync.py | 23 +
.../security/typed_datasource_access_test.py | 381 +
tests/unit_tests/semantic_layers/api_test.py | 87 +-
.../semantic_layers/grain_validation_test.py | 127 +
.../semantic_layers/import_export_test.py | 921 ++
.../semantic_layers/integer_precision_test.py | 366 +
.../semantic_layers/layer_list_scope_test.py | 215 +
tests/unit_tests/semantic_layers/mapper_test.py | 313 +-
.../semantic_layers/metadata_contract_test.py | 174 +
tests/unit_tests/semantic_layers/models_test.py | 640 +-
.../semantic_layers/result_completeness_test.py | 86 +
.../semantic_layers/selection_identity_test.py | 293 +
.../semantic_layers/simple_cache_clear_test.py | 650 +
.../semantic_layers/values_endpoint_test.py | 278 +-
tests/unit_tests/sql/execution/conftest.py | 3 +
.../unit_tests/sql/execution/test_cancellation.py | 165 +
tests/unit_tests/sql/execution/test_celery_task.py | 2 +
tests/unit_tests/sql/execution/test_executor.py | 850 +-
tests/unit_tests/sql/parse_tests.py | 124 +
tests/unit_tests/subjects/test_raise_for_access.py | 12 +-
tests/unit_tests/subjects/test_security.py | 21 +
tests/unit_tests/tasks/test_async_queries.py | 37 +-
tests/unit_tests/tasks/test_deletion_retention.py | 1070 +-
.../tasks/test_version_history_retention.py | 659 +-
tests/unit_tests/test_mcp_simple_proxy.py | 45 +
tests/unit_tests/utils/core_override_user_test.py | 71 +
tests/unit_tests/utils/date_parser_tests.py | 111 +
.../unit_tests/utils/geographic_world_test.py | 35 +-
tests/unit_tests/utils/oauth2_tests.py | 190 +
tests/unit_tests/versioning/test_listener.py | 34 +-
tests/unit_tests/versioning/test_restore.py | 54 +
.../versioning/test_restore_datasource_race.py | 185 +
.../versioning/test_restore_missing_datasource.py | 299 +
.../unit_tests/versioning/test_runtime_capture.py | 380 +
tests/unit_tests/views/test_current_user_api.py | 23 +
.../views/test_current_user_auth_errors.py | 122 +
tests/unit_tests/views/test_error_handling.py | 203 +-
979 files changed, 154681 insertions(+), 33048 deletions(-)
delete mode 160000 .github/actions/chart-testing-action
create mode 100644 .github/workflows/chromatic.yml
create mode 100644 docs/developer_docs/semantic-layer-cache-clear.md
create mode 100644 docs/developer_docs/semantic-result-completeness.md
create mode 100644 docs/docs/using-superset/semantic-member-selections.mdx
create mode 100644 docs/static/img/logos/douroeci.png
delete mode 100644 scripts/cypress_run.py
create mode 100644 superset-core/src/superset_core/semantic_layers/errors.py
create mode 100644 superset-core/tests/semantic_layers/test_errors.py
rename docker/docker-entrypoint-initdb.d/cypress-init.sh =>
superset-core/tests/semantic_layers/test_view.py (65%)
mode change 100755 => 100644
delete mode 100644 superset-frontend/cypress-base/.gitignore
delete mode 100644 superset-frontend/cypress-base/cypress.config.ts
delete mode 100644 superset-frontend/cypress-base/cypress/fixtures/charts.json
delete mode 100644
superset-frontend/cypress-base/cypress/fixtures/dashboards.json
delete mode 100644 superset-frontend/cypress-base/cypress/support/e2e.ts
delete mode 100644 superset-frontend/cypress-base/cypress/support/index.d.ts
delete mode 100644 superset-frontend/cypress-base/cypress/utils/index.ts
delete mode 100644
superset-frontend/cypress-base/cypress/utils/parsePostForm.ts
delete mode 100644 superset-frontend/cypress-base/cypress/utils/vizPlugins.ts
delete mode 100644 superset-frontend/cypress-base/package-lock.json
delete mode 100644 superset-frontend/cypress-base/package.json
delete mode 100644 superset-frontend/cypress-base/tsconfig.json
delete mode 100755 superset-frontend/cypress_build.sh
create mode 100644
superset-frontend/packages/superset-core/src/theme/GlobalStyles.test.tsx
create mode 100644
superset-frontend/packages/superset-ui-chart-controls/src/utils/headerGroups.test.ts
create mode 100644
superset-frontend/packages/superset-ui-chart-controls/src/utils/headerGroups.ts
create mode 100644
superset-frontend/packages/superset-ui-core/src/query/semanticSelection.ts
delete mode 100644
superset-frontend/packages/superset-ui-core/types/react-table-config.d.ts
copy superset-frontend/{src =>
packages/superset-ui-core}/types/react-table.d.ts (52%)
create mode 100644
superset-frontend/playwright/tests/dashboard/global-async-query-resilience.spec.ts
create mode 100644
superset-frontend/playwright/tests/dashboard/global-async-query.spec.ts
create mode 100644
superset-frontend/playwright/tests/sqllab/global-async-query-sqllab.spec.ts
create mode 100644
superset-frontend/plugins/plugin-chart-ag-grid-table/src/renderers/JsonCellRenderer.tsx
create mode 100644
superset-frontend/plugins/plugin-chart-ag-grid-table/src/renderers/jsonCellRowHeight.ts
create mode 100644
superset-frontend/plugins/plugin-chart-ag-grid-table/src/renderers/parseJsonCellValue.ts
create mode 100644
superset-frontend/plugins/plugin-chart-ag-grid-table/src/utils/isJsonCellActionTarget.ts
rename superset-frontend/{cypress-base/.eslintrc =>
plugins/plugin-chart-ag-grid-table/src/utils/mainComparison.ts} (53%)
create mode 100644
superset-frontend/plugins/plugin-chart-ag-grid-table/test/JsonCellRenderer.test.tsx
create mode 100644
superset-frontend/plugins/plugin-chart-ag-grid-table/test/utils/mainComparison.test.ts
create mode 100644
superset-frontend/plugins/plugin-chart-cartodiagram/test/util/pieColors.test.ts
create mode 100644
superset-frontend/plugins/plugin-chart-country-map/src/normalizeRegions.ts
create mode 100644
superset-frontend/plugins/plugin-chart-country-map/src/regions.ts
copy superset-frontend/{src/utils/getChartRequiredFieldsMissingMessage.ts =>
plugins/plugin-chart-country-map/test/controlPanel.test.ts} (52%)
create mode 100644
superset-frontend/plugins/plugin-chart-country-map/test/geographicRendering.test.tsx
create mode 100644
superset-frontend/plugins/plugin-chart-country-map/test/normalizeRegions.test.ts
copy superset-frontend/{packages/superset-ui-core/src/components/Tag/index.tsx
=> plugins/plugin-chart-table/src/utils/headerGroups.ts} (69%)
create mode 100644
superset-frontend/plugins/plugin-chart-table/test/headerGroups.test.ts
create mode 100644
superset-frontend/plugins/plugin-chart-world-map/src/worldGeometry.ts
copy superset-frontend/{src/utils/getChartRequiredFieldsMissingMessage.ts =>
plugins/plugin-chart-world-map/test/controlPanel.test.ts} (52%)
create mode 100644
superset-frontend/plugins/preset-chart-deckgl/src/components/DeckGLOverlayMapLibre.test.tsx
copy superset-frontend/{src/utils/getChartRequiredFieldsMissingMessage.ts =>
plugins/preset-chart-deckgl/src/layers/Scatter/controlPanel.test.ts} (52%)
create mode 100644 superset-frontend/spec/helpers/geographicControlPanel.ts
create mode 100644
superset-frontend/src/chartCustomizations/components/DynamicGroupBy/columnAllowlist.test.ts
create mode 100644
superset-frontend/src/chartCustomizations/components/DynamicGroupBy/columnAllowlist.ts
create mode 100644 superset-frontend/src/dashboard/actions/datasources.test.ts
create mode 100644
superset-frontend/src/dashboard/components/PropertiesModal/sections/LabelColorMapping.test.tsx
create mode 100644
superset-frontend/src/dashboard/components/PropertiesModal/sections/LabelColorMapping.tsx
create mode 100644
superset-frontend/src/dashboard/components/SliceHeaderControls/ViewAsTableRendering.test.tsx
create mode 100644
superset-frontend/src/dashboard/components/nativeFilters/FiltersConfigModal/FiltersConfigForm/GroupByColumnAllowlist.test.tsx
copy superset-frontend/{cypress-base/cypress/utils/urls.ts =>
src/dashboard/contexts/DashboardDatasetsContext.ts} (71%)
create mode 100644
superset-frontend/src/explore/components/controls/ColumnConfigControl/ColumnConfigControl.test.tsx
create mode 100644
superset-frontend/src/explore/components/controls/ColumnConfigControl/ControlForm/ControlForm.debounce.test.tsx
create mode 100644
superset-frontend/src/explore/components/controls/ComparisonRangeLabel.test.tsx
create mode 100644
superset-frontend/src/explore/components/controls/DateFilterControl/tests/CommonFrame.test.tsx
create mode 100644
superset-frontend/src/explore/components/controls/DateFilterControl/tests/DateLabel.test.tsx
create mode 100644
superset-frontend/src/explore/components/controls/HeaderGroupsControl/HeaderGroupEditor.tsx
create mode 100644
superset-frontend/src/explore/components/controls/HeaderGroupsControl/HeaderGroupsControl.test.tsx
create mode 100644
superset-frontend/src/explore/components/controls/HeaderGroupsControl/HeaderGroupsControl.tsx
rename superset-frontend/{cypress-base/cypress/utils/urls.ts =>
src/explore/components/controls/HeaderGroupsControl/index.ts} (75%)
copy superset-frontend/src/explore/components/controls/{MapViewControl =>
HeaderGroupsControl}/types.ts (53%)
create mode 100644
superset-frontend/src/explore/components/controls/HeaderGroupsControl/utils.test.ts
create mode 100644
superset-frontend/src/explore/components/controls/HeaderGroupsControl/utils.ts
create mode 100644
superset-frontend/src/explore/components/controls/MapViewControl/ExtentTag.test.tsx
create mode 100644
superset-frontend/src/explore/components/controls/MatrixifyControl/utils/fetchTopNValues.test.ts
create mode 100644
superset-frontend/src/explore/components/controls/MetricControl/AdhocMetricPopoverTrigger.test.tsx
create mode 100644
superset-frontend/src/explore/components/controls/SemanticRequestView.test.tsx
create mode 100644
superset-frontend/src/explore/components/controls/SemanticRequestView.tsx
create mode 100644
superset-frontend/src/explore/components/controls/ViewQueryModalFooter.test.tsx
create mode 100644
superset-frontend/src/explore/components/controls/ZoomConfigControl/ZoomConfigControl.test.tsx
create mode 100644
superset-frontend/src/explore/controlUtils/getSectionsToRender.test.ts
create mode 100644
superset-frontend/src/explore/reducers/datasourcesReducer.test.ts
create mode 100644
superset-frontend/src/explore/reducers/saveModalReducer.test.ts
create mode 100644
superset-frontend/src/features/alerts/ReportConfigurationModal.test.tsx
create mode 100644
superset-frontend/src/features/alerts/ReportConfigurationModal.tsx
create mode 100644
superset-frontend/src/features/alerts/hooks/useReportConfiguration.ts
create mode 100644
superset-frontend/src/hooks/apiResources/datasets.cache.test.ts
create mode 100644 superset-frontend/src/middleware/asyncQueryError.ts
create mode 100644 superset-frontend/src/pages/ActionLog/ActionLog.test.tsx
create mode 100644 superset-frontend/src/utils/downloadAsPdf.test.ts
create mode 100644 superset/commands/annotation_layer/export.py
copy {scripts => superset/commands/annotation_layer/importers}/__init__.py
(100%)
create mode 100644 superset/commands/annotation_layer/importers/dispatcher.py
create mode 100644 superset/commands/annotation_layer/importers/v1/__init__.py
create mode 100644 superset/commands/annotation_layer/importers/v1/utils.py
create mode 100644 superset/commands/report/update_config.py
create mode 100644 superset/mcp_service/chart/big_number_headline.py
create mode 100644 superset/mcp_service/chart/plugins/geographic.py
create mode 100644 superset/mcp_service/chart/plugins/sunburst.py
create mode 100644 superset/mcp_service/chart/response_preflight.py
create mode 100644 superset/mcp_service/chart/sunburst.py
create mode 100644 superset/mcp_service/dashboard/layout_placement.py
create mode 100644
superset/mcp_service/dashboard/tool/manage_dashboard_markdown.py
create mode 100644 superset/mcp_service/dashboard_scope.py
create mode 100644 superset/mcp_service/dashboard_scope_sql.py
create mode 100644 superset/mcp_service/worker.py
create mode 100644
superset/migrations/versions/2026-08-17_18-38_884a2115ebd3_add_uuid_to_annotation_layer_and_annotation.py
create mode 100644
superset/migrations/versions/2026-09-16_00-01_00fab727cd0a_add_theme_editors_theme_id_index.py
create mode 100644
superset/migrations/versions/2026-10-05_12-00_e4a7c2b9d1f3_add_run_as_and_report_config.py
copy superset/{mcp_service/dashboard/constants.py =>
migrations/versions/2026-10-08_00-00_c179af013f48_add_semantic_layer_cache_version.py}
(55%)
create mode 100644 superset/reports/utils.py
copy superset/{mcp_service/dashboard/constants.py =>
semantic_layers/bundle_schemas.py} (54%)
create mode 100644 superset/semantic_layers/completeness.py
create mode 100644 superset/semantic_layers/import_export.py
create mode 100644 superset/sql/execution/cancellation.py
copy superset/{mcp_service/dashboard/constants.py => tasks/retention_cap.py}
(57%)
create mode 100644 superset/utils/geographic.py
create mode 100644 superset/utils/geographic_regions.py
create mode 100644 superset/utils/geographic_world.py
create mode 100644 superset/versioning/savepoints.py
create mode 100644 tests/integration_tests/annotation_layers/commands_tests.py
create mode 100644
tests/integration_tests/charts/semantic_metadata_authz_tests.py
create mode 100644 tests/integration_tests/reports/config_tests.py
create mode 100644 tests/integration_tests/superset_test_config_gaq.py
create mode 100644 tests/testcontainers/db_engine_specs/test_opensearch.py
create mode 100644 tests/unit_tests/charts/data/test_time_range_validation.py
create mode 100644 tests/unit_tests/charts/test_export_api.py
create mode 100644 tests/unit_tests/commands/chart/semantic_export_test.py
create mode 100644
tests/unit_tests/commands/dashboard/export_example_semantic_test.py
create mode 100644 tests/unit_tests/commands/dashboard/permalink_create_test.py
create mode 100644
tests/unit_tests/commands/deletion_retention/test_purge_chart_detach.py
create mode 100644 tests/unit_tests/commands/report/executor_test.py
create mode 100644 tests/unit_tests/commands/report/run_as_test.py
create mode 100644 tests/unit_tests/commands/report/update_config_test.py
create mode 100644 tests/unit_tests/commands/security/reset_test.py
create mode 100644 tests/unit_tests/dashboards/test_export_api.py
create mode 100644 tests/unit_tests/db_engine_specs/test_impala_pending.py
create mode 100644 tests/unit_tests/initialization/init_views_test.py
create mode 100644 tests/unit_tests/mcp_service/chart/query_result_fixtures.py
create mode 100644
tests/unit_tests/mcp_service/chart/test_axis_offset_and_spatial_query_contracts.py
create mode 100644
tests/unit_tests/mcp_service/chart/test_big_number_headline.py
create mode 100644 tests/unit_tests/mcp_service/chart/test_geographic_chart.py
create mode 100644
tests/unit_tests/mcp_service/chart/test_live_chart_datasource.py
create mode 100644
tests/unit_tests/mcp_service/chart/test_metric_aggregation_and_comparison_contracts.py
create mode 100644
tests/unit_tests/mcp_service/chart/test_native_form_data_and_dataset_rebind_contracts.py
create mode 100644
tests/unit_tests/mcp_service/chart/test_response_preflight.py
create mode 100644
tests/unit_tests/mcp_service/chart/test_review_query_and_preview_regressions.py
create mode 100644 tests/unit_tests/mcp_service/chart/test_sunburst_chart.py
create mode 100644
tests/unit_tests/mcp_service/chart/tool/test_column_suggestions.py
create mode 100644
tests/unit_tests/mcp_service/chart/tool/test_saved_chart_datasource.py
create mode 100644
tests/unit_tests/mcp_service/dashboard/test_layout_placement.py
create mode 100644
tests/unit_tests/mcp_service/dashboard/tool/test_manage_dashboard_markdown.py
create mode 100644
tests/unit_tests/mcp_service/dashboard/tool/test_managed_dashboard_refusal.py
create mode 100644
tests/unit_tests/mcp_service/dataset/tool/test_sql_dataset_guidance.py
create mode 100644 tests/unit_tests/mcp_service/native_tool_inventory.json
create mode 100644
tests/unit_tests/mcp_service/sql_lab/tool/test_execute_sql_response.py
create mode 100644
tests/unit_tests/mcp_service/system/resources/test_instance_metadata.py
create mode 100644 tests/unit_tests/mcp_service/test_dashboard_scope.py
create mode 100644 tests/unit_tests/mcp_service/test_dashboard_scope_sql.py
create mode 100644 tests/unit_tests/mcp_service/test_mcp_docstrings.py
create mode 100644 tests/unit_tests/mcp_service/test_native_tool_surface.py
create mode 100644
tests/unit_tests/mcp_service/test_tool_description_constraints.py
create mode 100644 tests/unit_tests/mcp_service/test_worker.py
create mode 100644 tests/unit_tests/mcp_service/test_worker_metadata_pool.py
create mode 100644
tests/unit_tests/migrations/test_add_run_as_and_report_config.py
create mode 100644
tests/unit_tests/migrations/test_add_theme_editors_theme_id_index.py
create mode 100644 tests/unit_tests/models/test_certification_mixin.py
create mode 100644 tests/unit_tests/reports/config_api_test.py
create mode 100644 tests/unit_tests/reports/config_dao_test.py
create mode 100644 tests/unit_tests/reports/utils_test.py
create mode 100644 tests/unit_tests/security/semantic_guest_rls_test.py
create mode 100644 tests/unit_tests/security/typed_datasource_access_test.py
create mode 100644 tests/unit_tests/semantic_layers/grain_validation_test.py
create mode 100644 tests/unit_tests/semantic_layers/import_export_test.py
create mode 100644 tests/unit_tests/semantic_layers/integer_precision_test.py
create mode 100644 tests/unit_tests/semantic_layers/layer_list_scope_test.py
create mode 100644 tests/unit_tests/semantic_layers/metadata_contract_test.py
create mode 100644 tests/unit_tests/semantic_layers/result_completeness_test.py
create mode 100644 tests/unit_tests/semantic_layers/selection_identity_test.py
create mode 100644 tests/unit_tests/semantic_layers/simple_cache_clear_test.py
create mode 100644 tests/unit_tests/sql/execution/test_cancellation.py
create mode 100644 tests/unit_tests/test_mcp_simple_proxy.py
create mode 100644 tests/unit_tests/utils/core_override_user_test.py
copy superset/mcp_service/dashboard/constants.py =>
tests/unit_tests/utils/geographic_world_test.py (53%)
create mode 100644 tests/unit_tests/versioning/test_restore_datasource_race.py
create mode 100644
tests/unit_tests/versioning/test_restore_missing_datasource.py
create mode 100644 tests/unit_tests/views/test_current_user_auth_errors.py