This is an automated email from the ASF dual-hosted git repository.
hainenber pushed a change to branch
feat/better-recognizability-for-explore-chart-panel-split
in repository https://gitbox.apache.org/repos/asf/superset.git
from a113651cd84 chore: resolve lint issues
add c0b713746b1 fix(mcp): make authlib.jose deprecation filter survive
authlib's own simplefilter (#45219)
add 963031c209f fix(graph): distinguish null categories from literal
labels (#44790)
add 1c4aba2453d docs(databases): refresh ClickHouse guide and support
dark-theme logos (#44901)
add 718572cf29a chore(deps-dev): bump sqlalchemy-hana from 3.0.3 to 5.0.0
(#45189)
add d6c7ac23183 fix(mypy): silence superset-core mirror-case
union-attr/assignment errors (#45138)
add f7a1c8f33bd docs: fix broken anchor links in intro, README and tasks
guide (#45206)
add 8796ba16ae7 fix(clickhouse): bump Altinity.Cloud's documented
clickhouse-connect floor (#45249)
add 6ded7caa0a9 fix(mcp): refuse an update that would drop a SQL trendline
column (#45236)
add b840a4cef38 feat(plugin-chart-echarts): add cross-filtering to the
Bubble chart (#45223)
add 48eb96aa843 fix(releasing): various release tooling improvements
(#45253)
add f19a71be433 fix(semantic-layer): narrow ValidatedQueryObject.metrics
to list[str] (#45185)
add 3cbdff6b6b7 fix(mcp): reject unknown semantic compatibility selections
(#45153)
add 1fced034d37 fix(semantic-layer): return 4xx for provider validation
errors in chart data (#45110)
add 114d32b12d1 feat(semantic-layer): gate Table pagination on row offset
support (#44452)
add 55cb2eb0df5 fix(mcp): only flag get_catalog pages truncated when
entries are held back (#45148)
add f5404f7eae3 fix(semantic-layer): preserve NULL selections in chart
filters (#45133)
add 8175e0ecc7b fix(semantic-views): hide stale dependent options while
they refresh (#44995)
add d970d634f71 fix(mcp): reject apply_dashboard_filters select values
missing from the data (#45242)
add bf0a9cc3271 fix(semantic-layer): require data access for semantic view
edits (#45154)
add 81d4137b98b fix(semantic-layer): block deletion of sources with
dependent assets (#45071)
add 7f1bfaba4b2 fix(reports): apply the server-pagination row limit to
embedded chart data (#45099)
add f8e8cfe6e43 chore(openapi): regenerate the published spec for the
semantic delete 409s (#45262)
add ffee0a843f1 feat(db_engine_specs): enable MEDIAN/STDDEV_SAMP/VAR_SAMP
for Databricks and Snowflake (#44627)
add 0ce9b6ca46c chore(deps): bump urllib3 to 2.8.0 and werkzeug to 3.1.9
(#45255)
add 5cf0b8c6046 test(semantic views): finish selected refreshes before
test teardown (#45282)
add bbc61ac3a78 chore(deps-dev): bump the swc group across 1 directory
with 2 updates (#45290)
add b411454508c chore(deps): bump the babel group across 2 directories
with 5 updates (#45289)
add 37c33788f69 fix(dashboard): bind native filter datasources by type so
semantic views load (#45069)
add fa0999745fb fix(explore): raise a validation error instead of
asserting when an IN filter has no value (SC-124271) (#44986)
add b9709c39576 chore(deps): bump js-yaml from 5.4.2 to 5.4.3 in /docs
(#45291)
add 367b6f5cbf5 chore(deps): bump maplibre-gl from 6.12.0 to 6.13.0 in
/superset-frontend (#45295)
add c969ac425d6 chore(deps): bump actions/download-artifact from 8.0.1 to
8.0.2 (#45284)
add 54d2421ded3 test(bigquery): verify string-literal escaping against a
real GoogleSQL engine (#44546)
add 9e4adb98717 fix(alerts): handle report filter loading states and
errors (#45142)
add 96e22f4eaba fix(contour): preserve undefined unused fields (#44967)
add 9659a13ae8e docs(config): document AFTER_ASSET_CREATE hook (#44126)
add 564b85aa395 build: group Dependabot PRs for GHA refs from `actions`
org (#45296)
add 8db419ce1ab feat(build): migrate custom lint rule to Oxlint (#44201)
add 6a7cfd5ba12 chore(deps): bump actions/setup-node from 7.0.0 to 7.1.0
(#45285)
add 9bd8cd9f33f chore(deps): bump actions/upload-artifact from 7.0.1 to
7.0.2 (#45286)
add 1aeb8642447 chore(deps-dev): bump baseline-browser-mapping from
2.11.26 to 2.11.27 in /superset-frontend (#45299)
add 0dc57e9a9de fix(semantic-views): stop debounced refreshes after the
modal unmounts (#45281)
add e6b1d766183 feat(auth): add self-service forgot-password recovery for
AUTH_DB (sip-201) (#45277)
add 4c546edbd8f perf(security): resolve user_view_menu_names via role
semi-join (#45303)
add f7ad2aba62f chore(deps): bump the codeql group across 1 directory with
3 updates (#45326)
add f808b982a59 fix(charts): reject query_context missing
datasource/queries on save (#44549)
add 72bfc4134f2 fix(semantic-layer): classify provider errors in value
suggestions (#45147)
add fed77adfee5 fix(mcp): preserve embedded guest identity during
permalink lookup (#45346)
add e0e728ef764 chore(deps): bump geolib from 3.3.14 to 4.0.0 in
/superset-frontend (#45328)
add 6132c019432 fix(extensions-cli): fix scaffold template dep mismatches
vs. host (#45244)
add d548e8dce9c fix(filters): use manual semantic-view range bounds
(#44999)
add 4b9856bfefd fix(rls): apply Public role RLS rules to anonymous users
(#45333)
add 3841bc9e0ec chore(deps): bump immer from 11.1.18 to 11.1.21 in
/superset-frontend (#45330)
add 81e558a6a80 chore(deps-dev): bump sqlalchemy-bigquery from 1.17.2 to
1.17.3 (#45319)
add d176d68451b chore(deps-dev): bump elasticsearch-dbapi from 0.2.13 to
0.3.0 (#45318)
add 13bd0cd9326 fix(sql): keep stop and finish outcomes consistent when
they race (#45283)
add f33b030d710 fix(explore): correct HOLIDAY tooltip wording (#45276)
add d9bc4ea8580 fix(plugin-chart-pivot-table): sticky-position row labels
and corner header cells (#43917)
add 2020fea4acb feat(storybook/build): generate Playwright-runnable tests
from Storybook stories (#44964)
add e835d670d2e chore(deps-dev): bump prophet from 1.4.0 to 1.5.0 (#45324)
add 1aaabd8e435 fix(websocket): support Sentinel and full TLS options for
Redis/Valkey (#45355)
add 3d82e3dfbcb chore(deps): bump cachetools from 7.2.0 to 7.2.1 (#45323)
add 5c5061b1c8e chore(deps-dev): bump clickhouse-connect from 1.9.0 to
1.10.0 (#45321)
add a23199762c5 fix(mypy): make UUIDMixin.uuid's nullable type resolve
deterministically (#44817)
add e734cd00d43 chore(deps): bump react-syntax-highlighter from 16.1.1 to
16.1.2 in /superset-frontend (#45370)
add f2b71475ce2 chore(deps): bump @googleapis/sheets from 18.1.0 to 18.1.1
in /superset-frontend (#45369)
add 3dfb42a2937 chore(deps): bump astral-sh/setup-uv from 10.2.0 to 10.3.0
(#45368)
add 576cc9e0952 chore(deps): bump helm/chart-testing-action from 2.8.0 to
2.9.0 (#45367)
add 50d34f8aaa2 chore(deps-dev): bump syntaqlite from 0.9.0 to 0.12.1
(#45320)
add ad63b3eb7ab fix(impala): stop SQL Lab queries through the live cursor
only (#45232)
add 86e186b5f60 fix(tests): stop the unit suite from retaining one
Superset app per module (#45364)
add 19bb09461dc fix(examples): rewrite chart datasource references on
import (#45378)
add 9c7ca9ba107 fix(docs): improve Kapa AI widget dark mode compatibility
(#39102)
add 61d27b4aebe fix(sql): handle trailing comments after empty statements
(#45274)
add 58b1de82815 fix(datasets): don't call physical datasets "virtual" in
sync columns toast (#45376)
add 853f207c668 fix(dashboard): apply temporal x-axis cross-filters to
target charts (#45310)
add c650cbd3c61 fix(import): return 422 instead of 500 for corrupt ZIP
uploads (#45380)
add a9a7a35c4b4 fix(dashboard): show an access error for charts the viewer
cannot read (#45398)
add 44eac5b37b2 fix(soft-delete): align dashboard card dialogs and archive
permission hints (#45302)
add 21fad62645a fix(semantic-layer): resolve grain variants
deterministically (#44454)
add a13af92ff34 fix(semantic-layer): return 400 for mapper validation
refusals (#45292)
add a5d29a9d27d test(e2e): add a stub semantic-layer provider for
Playwright (#45103)
add 84be38cfc90 chore(deps): update pygithub requirement from >=2.1.1 to
>=2.10.0 (#45413)
add 31ee5719f77 fix(semantic layers): reject unknown compatibility
selections (#45359)
add e336cd04c3c fix(mcp): keep refusal and rejection categories in
get_chart_data (#45360)
add 5e1962e9a1d test(mcp): correct Dublin fold timestamp expectations
(#45358)
add ae71281c519 fix(dashboard): resolve to a fixed point when un-clipping
scrollable chart content (#44102)
add 4569608fc44 fix(pivot-table): keep MIN/MAX of non-numeric columns off
the additive fast-path (#45408)
add dfd13baab0e fix(versioning): don't record dataset column and metric
extra rewrites as edits (#45349)
add 4f49d24151d test(i18n): run the babel_update.sh msgcat tests on CI
(#45247)
add e837c37bc29 fix(semantic-layer): raise typed rejections from the E2E
stub provider (#45401)
add 4ccd337b932 chore(deps-dev): bump oracledb from 4.0.2 to 26.0.0
(#44443)
add 297449d68e7 fix(semantic layers): return 400 for ambiguous variants in
compatibility name check (#45426)
add 663d691c311 fix(embedded): apply the chart-data guest redaction to
samples and the legacy query endpoint (#45273)
add acdd2d27667 chore(deps-dev): bump oxlint-tsgolint in /docs (#45450)
add b8a4a5e20ad chore(deps): bump the swc group across 2 directories with
1 update (#45449)
add c812be8019f chore(deps): bump EnricoMi/publish-unit-test-result-action
from 2.24.0 to 2.25.0 (#45448)
add 22654af3337 chore(deps): bump express from 5.2.1 to 5.3.0 in
/superset-websocket/utils/client-ws-app (#45447)
add 118acbcde35 chore(deps): bump pydantic from 2.13.5 to 2.14.0 (#45417)
add 56ff8920385 fix(security): don't let dataset editorship substitute for
data access (#45266)
add 99ecfe5801c chore(deps): bump sqlalchemy-utils from 0.42.1 to 0.43.0
(#45416)
add f0cfaff7881 fix(sql): decode async SQLExecutor results from the
results backend (#45348)
add 8e6e91e4dc0 feat(semantic-layers): add the provider execution context
contract (#45251)
add 53f14e7b7b1 fix(semantic-layer): refuse a chart's own filter on a
column the semantic view lacks (#45294)
add 98d5fa50b4c fix(semantic-layer): validate views before creation
(#45287)
add d36febc96ec fix(versioning): don't record save-path defaults as user
changes (#45352)
add 5a1831000a9 fix: add dblink and pg_* state-mutating functions to SQL
denylist (#45089)
add 88e92663b8f fix(semantic-layers): restore mocking compatibility after
implementation became a plain property (#45501)
add 152e1e9de9a fix(dataset): convert timezone-aware values with the
dataset timezone (#45344)
add 25e94d00d37 fix(pivot-table): stop the grand-total corner from
silently picking one metric (#44657)
add d285a1abae8 fix(dashboards): prevent horizontal filter bar from
vanishing on cross-filter (#45050) (#45051)
add 15f55686ea9 fix(dashboard): respect DASHBOARD_AUTO_REFRESH_INTERVALS
configuration in refresh dropdown (#45039)
add 1e18d01d76d feat(mcp): add caller-scoped PNG chart previews (#44558)
add 9c287d989a8 feat(build): migrate to Typescript 6 (#44726)
add 7b23ddea9f6 chore(build): migrate from external `copy-webpack-plugin`
to Webpack-native `output.copy` (#44965)
add 0a17a75f9a8 chore(deps): bump the storybook group across 2 directories
with 4 updates (#45513)
add d5bccecf581 chore(deps): bump chromaui/action from 18.11.0 to 18.12.1
(#45512)
add 77b0fd62ea7 docs: add Plum to In the Wild (#45518)
add 3cf94c87aef chore(deps-dev): bump @types/node from 26.6.4 to 26.6.5 in
/superset-embedded-sdk (#45514)
add 1df897b3bba fix(pivot-table): blank mixed-metric totals in exports and
reports (#45311)
add 38353434467 fix(cache): honor disabled datasource suggestion caches
(#45288)
add ad30c898f86 fix(dashboard): copy a layout that omits the source's
current charts (#45472)
add 3988a771f37 fix(dataset): warn immediately when normalize_columns is
toggled on (#44617)
add 3c42a68d439 test(mcp): refresh native tool inventory for PNG chart
previews (#45511)
add 1811fe5167f fix(dashboard): stop Edit Properties hanging on dashboards
with many charts (#45354)
add 65cfc1ed18c fix(deck.gl): set maplibre-gl 6's worker URL so vector
basemaps load (#45396)
add 973ac9b8efb fix(export): honor CSV_EXPORT encoding in streaming CSV
exports (#45351)
add a708a08cdb0 feat(semantic-layers): declare provider obligations and
add a registration test fixture (#45393)
add 488a3c53b45 fix(soft-delete): show Recently Archived in the menu to
everyone who can open it (#45523)
add 82a7ec91d6e feat(semantic-layers): apply a default chronological order
for time-series queries (#45389)
add fe79ab48e93 fix(tags): make owner-tag creation safe under concurrent
creates (#45498)
add e315ed365e8 test(reports): cover scheduled reports on semantic-view
charts (#45526)
add 036d1dafe2c fix(semantic-layers): report async chart query validation
errors as failures (#45525)
add d73c9b93398 fix(alerts): don't flag "Every minute" schedule as invalid
in cron picker (#45468)
add 63c6d273616 chore(plugin-chart-ag-grid-table): remove unused
useTableTheme hook (#45469)
add aa3df7caf77 fix(explore): hide empty Actual range for comparison
header (#44996)
add f0b43df751a fix(dashboard): remap native filter scopes when
duplicating charts on save as (#45038)
add b1fe28b5791 fix(ci): narrow nullable filters in metric_filter_test and
resync oxfmt formatting (#45239)
add 875dcbb1bb0 feat(action-log): open JSON payloads in a tree modal
(#45337)
add c01e784fc64 fix(ci): restore the full-repo mypy check on two
semantic-layer and sqla test files (#45315)
add 293f159deaf fix(sqllab): keep the results grid header opaque when rows
scroll under it (#45480)
add 25186586572 fix(chart): keep the chart on screen during a dashboard
auto-refresh (#45234)
add fcff5931594 fix(sqllab): ignore a Run/Stop click whose gesture started
on the other action (#45336)
add 87dc979e986 fix(table-chart): show the record count in the search box
(#45497)
add ec40973ae81 fix(semantic-layer): reject SQL extras in direct mapper
calls (#45534)
add ddbf152ac92 fix(dashboard): keep archived charts' membership when
restoring a version (#45482)
add 208438b18b6 test(tasks): cover the embedded-guest error text on task
show and list (#45533)
add 2d0203e3699 fix(plugin-chart-echarts): merge a series object in
ECharts Options into every series (#45421)
add 77ded19ba5c fix(sqllab): commit the recomputed row limit before async
dispatch (#45178)
add a1fd5b1f81e fix(sqllab): resolve query datasources when opening SQL
Lab (#45374)
add c06005afb1e fix(dashboard): load the saved description into dashboard
info (#45298)
add 2978799419e fix(models): keep NULL rows in !=, NOT LIKE and NOT ILIKE
filters (#45317)
add 33687492472 test(explore): cover chart header actions, chart pills,
and view container wiring (#44848)
add 304f5a38b58 test(playwright): add Featured Charts render smoke and
Explore image download (#44844)
add 6842e2f76b3 test(explore): cover cartodiagram and primitive explore
controls (#44850)
add c807ee7f909 fix(native-filters): keep pending removal timers when
another filter is removed (#44837)
add 7ff5709882f fix(candlestick): give OHLC labels their own translatable
strings (#45458)
add 0f376ba9f97 fix(semantic-layers): show per-view errors when adding
semantic views (#45524)
add 190873e9832 fix(version-history): preview banner, history panel
layout, scope labels and current-version marking (#45471)
add 6dc0641c91a fix(reports): keep the first column header in XLSX exports
of semantic-view tables (#45527)
add 4e7e2b7390d fix(tests): narrow Optional StatementResult.data in async
result tests (#45517)
add 836c0f3f95d fix(table): reset default margins on the pagination list
(#45365)
add 8d3ade7e0a8 test(trino): close db_engine_spec test gaps (#45361)
add 3d902d9eb3a chore(deps): bump the security group across 2 directories
with 2 updates (#45542)
add 527021d5819 chore(deps): bump react-virtualized-auto-sizer from 1.0.26
to 2.0.3 in /superset-frontend (#45197)
add c11f993af37 fix(auth): close forced-password-change redirect loop and
sweep stale legacy password perms from all roles (#44857)
add 7d0e1c939ee fix(frontend): retry a failed lazy import before surfacing
ChunkLoadError (#43215)
add abc1b50f65d fix(mcp): clean up nits from PNG chart preview review
(#45509)
add b6ef0bf48d8 chore(tags): stop auto-generating
type:/editor:/favorited_by: tags (#43471)
add cb04282f501 chore(deps): bump swagger-ui-react from 5.33.1 to 5.33.2
in /docs (#45567)
add f1d8161777c chore(deps): bump chromaui/action from 18.12.1 to 18.12.2
(#45564)
add f9aec7515b4 chore(deps): bump actions/setup-java from 6.0.1 to 6.1.0
in the gh-actions group (#45563)
add 75be8f981a6 feat(improvements): let deployments withhold assets from
list queries and commands (#45451)
add f9a0d8af493 chore(deps-dev): bump oxlint from 1.87.0 to 1.88.0 in
/docs (#45566)
add fa8a035fcf6 fix(mcp): stop rejecting titles that contain "data:" in
prose (#45485)
add e8824351f19 fix(mcp): isolate dashboard copies and clarify chart
evidence (#45504)
add cdc9430597c fix(db_engine_specs): patch oceanbase_py's dialect for
SQLAlchemy 2.0 (#45507)
add 00688c7871b chore(deps-dev): update pinotdb requirement from
<10.0.0,>=8.0.0 to >=9.2.2,<10.0.0 (#45414)
add 73737afbfbb chore(deps): bump pyarrow from 25.0.1 to 26.0.0 (#45412)
add 067d536e216 chore(deps-dev): bump fastmcp from 3.4.7 to 4.1.0 (#45415)
add b7bfbd365e6 chore(deps-dev): bump oxfmt in /docs (#45565)
add 2b1046959d2 chore: bump pillow, certifi and geopy pins, tidy two small
code nits (#45578)
add 54aaf3ad7d7 fix(mcp): surface missing query_context warning in
get_chart_data result (#45250)
add fdb22260e25 fix(number-format): make the adaptive formatters follow
D3_FORMAT (#45241)
add c3279f01921 ci: skip jobs that cannot complete on forks and private
mirrors (#45035)
add 385844237e6 fix(explore): preserve zero thresholds in contour controls
(#44966)
add 3de22376c5c fix(dashboards): update last modified timestamp when
adding chart to dashboard (#44305) (#44358)
add 77ebc0e55f3 fix(chart): keep dataset_uuid in exports when the dataset
is deleted (#44347)
add 452dea81f23 chore(deps-dev): bump @playwright/test from 1.62.1 to
1.64.0 in /superset-frontend (#45371)
add bc83e3e6fdb fix(mcp): propose a matching value when a dashboard filter
value is rejected (#45547)
add b129d6a4c12 fix(semantic-layer): narrow Filter|OrFilter unions in test
helpers for mypy (#45268)
add ff214bdfb14 fix(sqllab): clip multi-line result values to their row
(#45487)
add 62d22e0697c fix(semantic-layer): type the E2E stub filters for the
full filter union (#45419)
add 5eaad449f5c fix(import): return 422 instead of 500 for unsafe ZIP
import bundles (#45440)
add 676af61b1c9 fix(jinja): keep filters with 0 or false values in
get_filters and fi… (#45437)
add 47358be13c1 fix(import): return 422 instead of 500 for non-UTF-8
members in import bundles (#45424)
add b4f8ca407a3 chore(deps-dev): bump vite from 8.3.1 to 8.3.5 in
/superset-websocket in the security group across 1 directory (#45590)
add 7ff7f9048bf fix(semantic-layer): handle absent fetch-values predicate
(#45539)
add 9ce458594fe fix(connection): encode next in the unauthorized login
redirect (#45477)
add 2304d1b80f2 fix(datasets): re-check statement count after query
mutation (#45453)
add 4bfd874c4cb fix(postprocessing): handle Decimal comparisons with zero
baselines (#45467)
add 4e5d0ef8f13 fix(models): keep NULL rows in NOT IN filters without a
NULL value (#45305)
add a0ebed9ff1a docs(auth): add Keycloak PKCE, logout and group-mapping
example (#38092)
add b3471a1369c fix(a11y): WCAG 1.4.1 — add non-color visual cues to
status indicators (#39233)
add 3297c39d94c docs(installation): describe the default image instead of
lean in Docker Compose responsibilities (#45582)
add 47300cf4c2f fix(mcp): pass time_grain as a string and keep annotation
DB error classification (#45484)
add 030f36a00c3 docs(extensions): move Semantic Layers into its own
extension point page (#45630)
add 578d43fef9b fix(listview): prevent table column layout shift on
content change (#37299)
add 97a536f37d9 feat(echarts): allow configuring minInterval on bar and
line chart axes (#43515)
add dfd84bf3d9e fix(mcp): only serve the browser hello page on the MCP
endpoint (#45391)
add 7fceb05c1ce docs(docker): drop redundant packages from custom image
example, bump version numbers (#44240)
add aabddf5b3f5 fix(semantic-layers): cap and time-bound bulk semantic
view creation (#45532)
add 2c275ed0a5b fix(echarts): restore series color markers in sanitized
tooltips (#45505)
add 98fac9104fb fix(datasets): validate metric d3format (#45633)
add bf18152476a chore: stop forcing .ipynb as a binary attribute (#45602)
add 87d1abb21e6 chore(frontend): let JEST_MAX_WORKERS cap the Jest worker
pool locally (#45594)
add 5cfcee95b4e fix(import): return 400 instead of 500 on malformed JSON
in import form fields (#45579)
add 44be9b819dd fix(bigquery): return empty extra metadata instead of 500
when table is not found (#45634)
add 0689df740e2 fix(sql-lab): return 400 instead of 500 when stop_query is
missing client_id (#45521)
add 3b7001836c7 fix(charts): keep large nullable-integer dimensions exact
(#45308)
add 43006c1d054 fix(explore): omit constant Custom SQL dimensions from
GROUP BY (#45271)
add be40309811d fix: filter Sunburst temporal segments by bucket and
invert Hours offset in grained filters (#45598)
add d595becba71 test(explore): cover column config, conditional
formatting, and contour controls (#44843)
add b1c1d41b55f ci(docker): give the CI node image the workspace manifests
so jobs stop reinstalling (#45606)
add 8cd2ab1c2ca chore(deps): bump the security group across 2 directories
with 1 update (#45645)
add 2f6d51e7ae3 chore(deps-dev): bump vitest from 5.0.3 to 5.0.4 in
/superset-websocket (#45629)
add b4e592836a9 chore(deps-dev): bump jsdom from 30.1.2 to 30.1.3 in
/superset-frontend (#45628)
add 30df96241ff chore(deps): bump antd from 6.6.5 to 6.6.6 in
/superset-frontend (#45627)
add f5eaf7c4f7c chore(deps): bump postcss from 8.5.28 to 8.5.30 in
/superset-frontend (#45626)
add c505b8b4916 chore(deps-dev): bump vitest from 5.0.3 to 5.0.4 in
/superset-embedded-sdk (#45625)
add dffb06978cd chore(deps-dev): bump jsdom from 30.1.2 to 30.1.3 in
/superset-embedded-sdk (#45624)
add 6752eef54c3 chore(deps): bump antd from 6.6.5 to 6.6.6 in /docs
(#45623)
add 9b3f66df370 chore(deps): bump zizmorcore/zizmor-action from 0.6.4 to
0.7.1 (#45621)
add 09edc1a2c6e chore(deps): bump the codeql group with 3 updates (#45620)
add 0454c5e940c chore(frontend): upgrade to TypeScript 7 (#45603)
add 3f4f772efef ci(storybook): use every core for story tests and install
deps for Chromium only (#45600)
add 3823c6dc2c5 chore(i18n): sync translation catalogs with messages.pot
(#45583)
add 424c34c695d fix(security): stop dataset editorship from authorizing
new SQL (#45342)
add 3f77b342cb8 fix(explore): persist aliased column config by real key
(#44955)
add 89840862d6f chore(deps-dev): bump vitest from 5.0.4 to 5.0.5 in
/superset-websocket (#45669)
add eeb2fc2ff36 chore(deps-dev): bump vitest from 5.0.4 to 5.0.5 in
/superset-embedded-sdk (#45666)
add 5877cb58db8 chore(deps): bump swagger-ui-react from 5.33.2 to 5.33.3
in /docs (#45665)
add ff50234bf25 chore(deps): bump js-yaml from 5.4.3 to 5.5.0 in /docs
(#45664)
add d0897f77c93 chore(deps): bump chromaui/action from 18.12.2 to 18.13.0
(#45662)
add d0116153376 feat(dashboard): expose authorized chart display labels
(#45552)
add c016883970d fix(dataset): preserve pending metric and column edits
(#45506)
add 23f10960f5a feat(plugin-chart-echarts): let users hide legend
All/Invert buttons (#45172)
add 6114b81c928 feat(ci): label PRs/issues from UTSC 2026 students (#45656)
add 30584517b5b fix(mypy): type-check dataset export in full-tree mypy
(#45616)
add 026ca216cb2 fix(sqllab): implement query cancellation for ClickHouse
(Stop button) (#45070)
add 55801123a82 docs(security): drop deprecated SESSION_USE_SIGNER and
dedupe the server-side session example (#45635)
add 472c3e4afd8 fix(tests): make deep nested sidecar fallback test
interpreter-independent (#45657)
add db8ab20f90c ci(e2e): cache a pg_dump of the loaded examples for the
Playwright jobs (#45601)
add 99b472bef74 fix(dashboard): saving a dashboard that contains an
archived chart no longer fails (#45543)
add eee2c16c8c7 fix(mcp): check chart access before adding dashboard
charts (#45535)
add 8b9767ff263 fix(versioning): retryable error when a dashboard restore
races a chart purge (#45551)
add e165c386fbf fix(mcp): recognise guest tokens on FastMCP 4 (#45639)
add a268040ccbc chore(deps): bump the security group across 2 directories
with 3 updates (#45679)
add 3c9f08d1b39 chore(deps-dev): bump webpack from 5.111.1 to 5.112.0 in
/docs (#45663)
add ac928a6c261 chore(deps): bump the security group across 3 directories
with 3 updates (#45684)
add 146ffce5c9e chore(deps-dev): update playwright requirement from
<2,>=1.63.0 to >=1.64.0,<2 (#45692)
add f1f875cbe3a chore(deps-dev): update google-cloud-storage requirement
from >=3.15.0 to >=3.17.1 (#45691)
add dba52fa8e47 chore(deps-dev): update teradatasql requirement from
>=20.0.0.69 to >=20.0.0.72 (#45689)
add e351ea64e2f chore(deps): bump sshtunnel from 0.4.0 to 0.5.1 (#45688)
add 86c62cb8332 chore(deps-dev): bump google-cloud-bigquery from 3.46.1 to
3.46.2 (#45685)
add 70d1b4a6a53 chore(deps): bump body-parser from 2.3.0 to 2.4.0 in
/superset-websocket/utils/client-ws-app in the security group across 1
directory (#45683)
add dd9bc4704d8 chore(deps): bump nanoid from 6.0.1 to 6.0.2 in
/superset-frontend (#45667)
add 5e593135b5e chore(deps-dev): update pyathena requirement from
<4,>=3.36.0 to >=4.1.0,<5 (#45690)
add 1721cbe698a chore(deps): bump holidays from 0.105 to 0.107 (#45686)
add fb79c3c16d8 fix(mcp): report length and empty-title reasons for MCP
title fields (#45575)
add f829175e946 fix(sunburst): keep the saved time grain in Explore
(#45571)
add b966813c096 chore(deps): bump sqlalchemy-continuum from 1.8.0 to 2.0.0
(#45687)
add bea6db6d05f chore: replace remaining deprecated datetime.utcnow with
naive_utcnow (#45697)
add 7d27e467f19 chore(dependabot): restrict Dependabot to only open PR for
SQLAlchemy v2.0.x patch version (#45693)
add 6d986408f61 chore(deps-dev): bump lerna from 10.0.1 to 10.1.1 in
/superset-frontend (#45715)
add ae9fc20c659 chore(deps): bump sqlalchemy from 2.0.52 to 2.0.55 (#45703)
add a028e65ba3a chore(deps-dev): bump clickhouse-connect from 1.10.1 to
1.11.0 (#45708)
add 3f85ceb15b4 chore(deps-dev): bump duckdb from 1.5.5 to 1.5.6 (#45705)
add 716d5c6953b Merge branch 'master' into
feat/better-recognizability-for-explore-chart-panel-split
No new revisions were added by this update.
Summary of changes:
.gitattributes | 1 -
.github/dependabot.yml | 10 +-
.github/utsc2026-students.yml | 63 +
.github/workflows/bashlib.sh | 60 +-
.github/workflows/bump-python-package.yml | 2 +-
.github/workflows/chromatic.yml | 4 +-
.github/workflows/codeql-analysis.yml | 23 +-
.github/workflows/docker.yml | 27 +-
.github/workflows/embedded-sdk-release.yml | 2 +-
.github/workflows/embedded-sdk-test.yml | 2 +-
.github/workflows/frontend-bundle-size-nightly.yml | 5 +-
.github/workflows/generate-FOSSA-report.yml | 2 +-
.github/workflows/github-action-validator.yml | 18 +-
.github/workflows/license-check.yml | 2 +-
.github/workflows/pre-commit.yml | 16 +-
.github/workflows/python-nightly-canary.yml | 9 +
.github/workflows/release.yml | 2 +-
.../scripts/check-code-scanning-available.sh | 64 +
.../scripts/check-code-scanning-available.test.sh | 118 +
.github/workflows/showtime-cleanup.yml | 3 +
.github/workflows/superset-docs-deploy.yml | 4 +-
.github/workflows/superset-docs-verify.yml | 9 +-
.github/workflows/superset-e2e.yml | 66 +-
.github/workflows/superset-extensions-cli.yml | 2 +-
.github/workflows/superset-frontend.yml | 30 +-
.github/workflows/superset-helm-lint-test.yml | 2 +-
.../workflows/superset-python-integrationtest.yml | 2 +-
.../workflows/superset-python-unittest-report.yml | 6 +-
.github/workflows/superset-python-unittest.yml | 17 +-
.../workflows/superset-translations-comment.yml | 2 +-
.github/workflows/superset-translations.yml | 13 +-
.github/workflows/superset-websocket.yml | 2 +-
.github/workflows/tag-release.yml | 4 +-
.github/workflows/tech-debt.yml | 2 +-
.github/workflows/testcontainers.yml | 10 +-
.github/workflows/utsc2026-labeler.yml | 57 +
.gitignore | 2 +
.pre-commit-config.yaml | 39 +-
AGENTS.md | 1 +
Dockerfile | 28 +-
README.md | 4 +-
RELEASING/Dockerfile.from_local_tarball | 13 +-
RELEASING/Dockerfile.from_svn_tarball | 13 +-
RELEASING/README.md | 23 +-
RELEASING/changelog.py | 220 +-
RELEASING/requirements.txt | 2 +
RESOURCES/INTHEWILD.yaml | 5 +
UPDATING.md | 385 +-
docker-compose-light.yml | 1 -
docker-compose.yml | 1 -
docs/admin_docs/configuration/alerts-reports.mdx | 10 +
docs/admin_docs/configuration/cache.mdx | 18 +-
.../configuration/configuring-superset.mdx | 81 +
.../importing-exporting-datasources.mdx | 22 +
docs/admin_docs/configuration/mcp-server.mdx | 183 +-
docs/admin_docs/installation/docker-builds.mdx | 43 +-
.../installation/installation-methods.mdx | 4 +-
docs/admin_docs/security/oauth.mdx | 318 +
docs/admin_docs/security/securing_superset.mdx | 3 -
docs/admin_docs/security/security.mdx | 76 +-
.../version-6.1.0/security/securing_superset.mdx | 3 -
.../version-6.1.0/security/security.mdx | 13 +-
.../contributing/development-setup.md | 9 +-
docs/developer_docs/contributing/howtos.md | 3 +
.../extensions/contribution-types.md | 231 +-
docs/developer_docs/extensions/development.md | 37 +
.../extensions/extension-points/semantic-layers.md | 520 +
docs/developer_docs/extensions/tasks.md | 2 +-
docs/developer_docs/semantic-layer-cache-clear.md | 17 +-
docs/developer_docs/semantic-query-errors.md | 101 +
docs/developer_docs/sidebars.js | 1 +
docs/docs/index.mdx | 4 +-
.../creating-your-first-dashboard.mdx | 43 +-
docs/docs/using-superset/embedding.mdx | 36 +
docs/docs/using-superset/exploring-data.mdx | 106 +
docs/docs/using-superset/recently-archived.mdx | 4 +
.../using-superset/semantic-layer-connections.mdx | 33 +
.../using-superset/semantic-member-selections.mdx | 31 +
.../docs/using-superset/using-ai-with-superset.mdx | 25 +-
docs/docs/using-superset/version-history.mdx | 11 +-
docs/docusaurus.config.ts | 53 +-
docs/package.json | 20 +-
docs/scripts/generate-database-docs.mjs | 84 +
docs/sidebarTutorials.js | 1 +
docs/sip/pivot-table-aggregation-parity.md | 112 +
docs/src/components/databases/DatabaseLogo.tsx | 62 +
docs/src/components/databases/DatabaseLogoWall.tsx | 9 +-
docs/src/components/databases/DatabasePage.tsx | 59 +-
docs/src/components/databases/types.ts | 8 +
docs/src/data/databases.json | 90 +-
docs/src/pages/index.tsx | 11 +-
docs/static/img/databases/clickhouse-dark.svg | Bin 0 -> 4480 bytes
docs/static/img/databases/clickhouse-mark-dark.svg | Bin 0 -> 960 bytes
docs/static/img/databases/clickhouse-mark.svg | Bin 0 -> 963 bytes
docs/static/img/databases/clickhouse.svg | Bin 0 -> 4483 bytes
docs/static/img/logos/plum.svg | Bin 0 -> 4215 bytes
docs/static/resources/openapi.json | 343 +-
.../version-6.0.0/security/security.mdx | 2 -
docs/yarn.lock | 1562 +-
pyproject.toml | 65 +-
requirements/base.in | 8 +-
requirements/base.txt | 32 +-
requirements/development.in | 9 +-
requirements/development.txt | 86 +-
scripts/change_detector.py | 1 +
scripts/eslint.sh | 30 -
superset-core/pyproject.toml | 5 +-
.../src/superset_core/semantic_layers/context.py | 62 +
.../src/superset_core/semantic_layers/errors.py | 36 +-
.../src/superset_core/semantic_layers/layer.py | 45 +-
.../src/superset_core/semantic_layers/testing.py | 61 +
.../src/superset_core/semantic_layers/types.py | 82 +-
.../src/superset_core/semantic_layers/view.py | 43 +-
.../tests/semantic_layers/example_provider.py | 167 +
.../semantic_layers/test_execution_context.py | 71 +
.../tests/semantic_layers/test_registration.py | 153 +
superset-core/tests/semantic_layers/test_view.py | 75 +-
superset-embedded-sdk/package-lock.json | 452 +-
superset-embedded-sdk/package.json | 14 +-
.../src/superset_extensions_cli/cli.py | 7 +-
.../templates/frontend/package.json.j2 | 9 +-
superset-extensions-cli/tests/test_cli_build.py | 4 +-
superset-frontend/.storybook/main.mjs | 15 +-
...runner.ts => playwright.storybook-ci.config.ts} | 36 +-
superset-frontend/.storybook/setup-stories.test.ts | 156 +
superset-frontend/.storybook/setup-stories.ts | 179 +
.../external.d.ts => .storybook/stories.spec.ts} | 14 +-
.../i18n-strings/index.js} | 116 +-
.../i18n-strings}/no-eager-t-in-config.test.ts | 13 +-
.../i18n-strings}/no-template-vars.test.ts | 12 +-
.../i18n-strings}/package.json | 9 +-
.../index.ts => custom-lint-rules/icons/index.js} | 61 +-
.../icons}/no-fontawesome.test.ts | 13 +-
.../icons}/package.json | 9 +-
.../theme-colors/colors.js} | 7 +-
.../theme-colors/index.js} | 111 +-
.../theme-colors/no-literal-colors.test.ts | 81 +
.../theme-colors}/package.json | 12 +-
superset-frontend/eslint.config.minimal.js | 130 -
superset-frontend/jest.config.js | 7 +-
superset-frontend/oxlint.custom-lint-rules.mts | 121 +
superset-frontend/oxlint.json | 20 +-
superset-frontend/package-lock.json | 38581 ++++++++-----------
superset-frontend/package.json | 99 +-
.../packages/superset-core/package.json | 2 +-
.../packages/superset-core/tsconfig.json | 18 +-
.../src/operators/utils/extractExtraMetrics.ts | 4 +-
.../components/RadioButtonControl.tsx | 9 +-
.../src/utils/getTemporalColumns.ts | 4 +-
.../src/utils/headerGroups.test.ts | 182 +-
.../src/utils/headerGroups.ts | 68 +-
.../superset-ui-chart-controls/src/utils/index.ts | 1 +
.../src/utils/isServerPaginationUnsupported.ts | 70 +
.../src/utils/metricColumnFilter.ts | 4 +-
.../superset-ui-chart-controls/tsconfig.json | 18 +-
.../packages/superset-ui-core/package.json | 8 +-
.../src/components/CronPicker/CronPicker.test.tsx | 28 +-
.../src/components/CronPicker/index.tsx | 6 +-
.../DropdownContainer/DropdownContainer.test.tsx | 28 +
.../src/components/DropdownContainer/types.ts | 4 +-
.../src/components/Loading/Loading.stories.tsx | 5 +-
.../src/components/Modal/Modal.tsx | 17 +-
.../src/components/SafeMarkdown/SafeMarkdown.tsx | 2 +-
.../src/components/TableCollection/utils.tsx | 3 +-
.../src/components/Typography/index.tsx | 3 +-
.../src/connection/SupersetClientClass.ts | 4 +-
.../src/number-format/NumberFormatterRegistry.ts | 28 +-
.../factories/createSmartNumberFormatter.ts | 56 +-
.../superset-ui-core/src/query/convertFilter.ts | 10 +-
.../superset-ui-core/src/query/types/Datasource.ts | 1 +
.../packages/superset-ui-core/src/utils/tooltip.ts | 31 +
.../test/chart/models/ChartProps.test.ts | 15 +
.../test/connection/SupersetClientClass.test.ts | 5 +-
.../number-format/NumberFormatterRegistry.test.ts | 18 +
.../factories/createSmartNumberFormatter.test.ts | 14 +
.../test/query/convertFilter.test.ts | 20 +-
.../superset-ui-core/test/utils/tooltip.test.ts | 34 +
.../packages/superset-ui-core/tsconfig.json | 18 +-
.../packages/superset-ui-switchboard/tsconfig.json | 18 +-
.../components/modals/EditDatasetModal.ts | 7 +-
.../playwright/helpers/api/assertions.ts | 16 +-
.../playwright/helpers/api/dashboard.ts | 28 +
.../playwright/helpers/api/semanticLayer.test.ts | 65 +
.../playwright/helpers/api/semanticLayer.ts | 136 +
.../playwright/helpers/fixtures/testAssets.ts | 25 +-
superset-frontend/playwright/pages/ExplorePage.ts | 23 +-
.../playwright/tests/chart/chart-list.spec.ts | 4 +-
.../tests/dashboard/dashboard-list.spec.ts | 4 +-
.../tests/dashboard/dashboard-test-helpers.ts | 20 +-
.../tests/dashboard/featured-charts-render.spec.ts | 234 +
.../dashboard/version-history-placement.spec.ts | 39 +-
.../playwright/tests/dataset/dataset-list.spec.ts | 4 +-
.../tests/explore/explore-download-image.spec.ts | 65 +
.../semantic-view/semantic-view-dashboard.spec.ts | 204 +
.../tests/version-history/activity-log.spec.ts | 14 +-
.../src/controlPanel.tsx | 55 +-
.../src/transformProps.ts | 9 +-
.../src/utils/isEqualColumns.ts | 8 +
.../src/utils/useTableTheme.ts | 42 -
.../test/buildQuery.test.ts | 23 +
.../test/controlPanel.test.tsx | 398 +
.../test/transformProps.test.ts | 159 +
.../plugin-chart-ag-grid-table/tsconfig.json | 18 +-
.../plugins/plugin-chart-calendar/tsconfig.json | 18 +-
.../src/components/OlChartMap.tsx | 18 +-
.../test/components/OlChartMap.test.tsx | 108 +
.../plugin-chart-cartodiagram/tsconfig.json | 18 +-
.../plugin-chart-cartodiagram/types/external.d.ts | 2 +
.../plugins/plugin-chart-chord/tsconfig.json | 18 +-
.../plugins/plugin-chart-country-map/tsconfig.json | 18 +-
.../plugins/plugin-chart-echarts/package.json | 2 +-
.../BigNumberPeriodOverPeriod/transformProps.ts | 6 +-
.../src/BigNumber/BigNumberTotal/transformProps.ts | 6 +-
.../BigNumberWithTrendline/transformProps.ts | 6 +-
.../plugin-chart-echarts/src/BigNumber/utils.ts | 10 +-
.../src/Bubble/EchartsBubble.tsx | 137 +-
.../plugin-chart-echarts/src/Bubble/constants.ts | 3 +-
.../plugin-chart-echarts/src/Bubble/crossFilter.ts | 226 +
.../plugin-chart-echarts/src/Bubble/index.ts | 8 +-
.../src/Bubble/transformProps.ts | 42 +-
.../plugin-chart-echarts/src/Bubble/types.ts | 9 +-
.../src/Bullet/transformProps.ts | 15 +-
.../src/Butterfly/transformProps.ts | 3 +
.../src/Candlestick/constants.ts | 12 +-
.../src/Candlestick/controlPanel.tsx | 8 +-
.../src/Candlestick/transformProps.ts | 3 +
.../src/Funnel/controlPanel.tsx | 13 +-
.../src/Funnel/transformProps.ts | 3 +
.../src/Gantt/transformProps.ts | 3 +
.../src/Graph/transformProps.ts | 54 +-
.../src/Histogram/controlPanel.tsx | 7 +-
.../src/Histogram/transformProps.ts | 10 +-
.../plugin-chart-echarts/src/Histogram/types.ts | 1 +
.../src/MixedTimeseries/transformProps.ts | 3 +
.../plugin-chart-echarts/src/Pie/transformProps.ts | 3 +
.../src/Radar/controlPanel.tsx | 10 +-
.../src/Radar/transformProps.ts | 3 +
.../plugin-chart-echarts/src/Rose/EchartsRose.tsx | 6 +-
.../src/Rose/transformProps.ts | 10 +-
.../src/Sunburst/EchartsSunburst.tsx | 99 +-
.../src/Sunburst/buildQuery.ts | 77 +-
.../src/Sunburst/controlPanel.tsx | 34 +
.../plugin-chart-echarts/src/Sunburst/timeGrain.ts | 50 +
.../src/Sunburst/transformProps.ts | 33 +-
.../plugin-chart-echarts/src/Sunburst/types.ts | 4 +
.../plugin-chart-echarts/src/Sunburst/utils.ts | 169 +
.../src/Timeseries/EchartsTimeseries.test.tsx | 1 +
.../src/Timeseries/EchartsTimeseries.tsx | 4 +
.../src/Timeseries/Regular/Bar/controlPanel.tsx | 28 +
.../src/Timeseries/Regular/Line/controlPanel.tsx | 19 +
.../src/Timeseries/constants.ts | 1 +
.../src/Timeseries/transformProps.ts | 86 +-
.../plugin-chart-echarts/src/Timeseries/types.ts | 2 +
.../plugins/plugin-chart-echarts/src/constants.ts | 1 +
.../plugins/plugin-chart-echarts/src/controls.tsx | 55 +-
.../plugins/plugin-chart-echarts/src/types.ts | 3 +-
.../plugin-chart-echarts/src/utils/forecast.ts | 20 +-
.../src/utils/mergeCustomEChartOptions.test.ts | 67 +
.../src/utils/mergeCustomEChartOptions.ts | 17 +
.../plugin-chart-echarts/src/utils/series.ts | 5 +-
.../src/utils/xAxisDrillByFilter.ts | 37 +-
.../test/BigNumber/chartDisplayLabels.test.ts | 196 +
.../test/Bubble/EchartsBubble.test.tsx | 335 +
.../test/Bubble/crossFilter.test.ts | 129 +
.../test/Bubble/transformProps.test.ts | 134 +
.../test/Bullet/transformProps.test.ts | 66 +-
.../test/Candlestick/controlPanel.test.ts | 10 +
.../test/Candlestick/transformProps.test.ts | 17 +
.../test/Gantt/transformProps.test.ts | 7 +-
.../test/Graph/categoryIdentity.test.ts | 398 +
.../test/Graph/transformProps.test.ts | 38 +
.../test/Histogram/buildQuery.test.ts | 1 +
.../test/Histogram/transformProps.test.ts | 12 +
.../test/MixedTimeseries/transformProps.test.ts | 9 +-
.../test/Rose/EchartsRose.test.tsx | 39 +
.../test/Rose/buildQuery.test.ts | 12 +-
.../test/Rose/transformProps.test.ts | 50 +-
.../test/Sunburst/EchartsSunburst.test.tsx | 746 +
.../test/Sunburst/buildQuery.test.ts | 180 +
.../test/Sunburst/controlPanel.test.ts | 115 +
.../test/Sunburst/timeGrain.test.ts | 73 +
.../test/Sunburst/transformProps.test.ts | 194 +-
.../test/Sunburst/utils.test.ts | 52 +
.../test/Timeseries/Bar/controlPanel.test.ts | 28 +
.../test/Timeseries/EchartsTimeseries.test.tsx | 46 +
.../test/Timeseries/Line/controlPanel.test.ts | 42 +
.../test/Timeseries/helpers.ts | 1 +
.../test/Timeseries/transformProps.test.ts | 209 +-
.../test/utils/forecast.test.ts | 63 +-
.../plugin-chart-echarts/test/utils/series.test.ts | 32 +-
.../plugins/plugin-chart-echarts/tsconfig.json | 18 +-
.../plugins/plugin-chart-handlebars/tsconfig.json | 18 +-
.../plugins/plugin-chart-horizon/tsconfig.json | 18 +-
.../plugin-chart-paired-t-test/tsconfig.json | 18 +-
.../tsconfig.json | 18 +-
.../plugins/plugin-chart-partition/tsconfig.json | 18 +-
.../src/PivotTableChart.tsx | 2 +
.../src/plugin/buildQuery.ts | 35 +-
.../src/plugin/controlPanel.tsx | 54 +-
.../src/plugin/resultAggregation.ts | 121 +
.../src/plugin/transformProps.ts | 37 +-
.../src/plugin/utilities.ts | 42 +-
.../src/react-pivottable/Styles.ts | 98 +-
.../src/react-pivottable/TableRenderers.tsx | 106 +-
.../src/react-pivottable/utilities.ts | 739 +-
.../plugins/plugin-chart-pivot-table/src/types.ts | 1 +
.../test/PivotTableChart.test.tsx | 22 +
.../test/plugin/buildQuery.test.ts | 21 +
.../test/plugin/transformProps.test.ts | 82 +-
.../test/plugin/utilities.test.ts | 49 +-
.../test/react-pivottable/Styles.test.tsx | 328 +
.../test/react-pivottable/tableRenders.test.tsx | 90 +-
.../test/react-pivottable/utilities.test.ts | 890 +-
.../plugin-chart-pivot-table/test/testData.ts | 68 +
.../plugins/plugin-chart-pivot-table/tsconfig.json | 18 +-
.../plugin-chart-point-cluster-map/package.json | 2 +-
.../src/MapLibre.tsx | 35 +-
.../test/MapLibre.test.tsx | 69 +-
.../plugin-chart-point-cluster-map/tsconfig.json | 16 +-
.../types/external.d.ts | 2 +
.../plugins/plugin-chart-table/src/Styles.tsx | 4 +
.../plugins/plugin-chart-table/src/TableChart.tsx | 7 +-
.../plugin-chart-table/src/controlPanel.tsx | 55 +-
.../plugin-chart-table/src/transformProps.ts | 9 +-
.../plugin-chart-table/src/utils/isEqualColumns.ts | 8 +
.../plugin-chart-table/test/TableChart.test.tsx | 241 +-
.../plugin-chart-table/test/buildQuery.test.ts | 53 +
.../plugin-chart-table/test/controlPanel.test.tsx | 580 +-
.../test/transformProps.test.tsx | 58 +
.../plugins/plugin-chart-table/tsconfig.json | 18 +-
.../plugins/plugin-chart-word-cloud/tsconfig.json | 18 +-
.../plugins/plugin-chart-world-map/tsconfig.json | 18 +-
.../plugins/preset-chart-deckgl/package.json | 2 +-
.../src/CategoricalDeckGLContainer.test.tsx | 213 +-
.../src/CategoricalDeckGLContainer.tsx | 73 +-
.../src/DeckGLContainer.test.tsx | 28 +
.../preset-chart-deckgl/src/DeckGLContainer.tsx | 11 +
.../preset-chart-deckgl/src/Multi/Multi.tsx | 25 +-
.../preset-chart-deckgl/src/Multi/MultiV1.test.tsx | 66 +-
.../plugins/preset-chart-deckgl/src/Multi/index.ts | 2 +-
.../src/Multi/transformProps.test.ts | 43 +
.../src/Multi/transformProps.ts} | 21 +-
.../preset-chart-deckgl/src/factory.test.tsx | 117 +
.../plugins/preset-chart-deckgl/src/factory.tsx | 25 +
.../preset-chart-deckgl/src/layers/Arc/Arc.test.ts | 6 +
.../src/layers/Contour/Contour.test.ts | 56 +
.../src/layers/Contour/Contour.tsx | 2 +-
.../src/layers/Polygon/Polygon.test.tsx | 100 +
.../src/layers/Polygon/Polygon.tsx | 22 +
.../plugins/preset-chart-deckgl/tsconfig.json | 16 +-
.../preset-chart-deckgl/types/external.d.ts | 2 +
.../types/{external.d.ts => global.d.ts} | 13 +-
superset-frontend/scripts/check-custom-rules.js | 6 +-
.../scripts/internal/oxlint-metrics-uploader.js | 174 +-
.../fixtures/mockSemanticDashboardDatasources.ts | 177 +
superset-frontend/spec/helpers/runStopButton.ts | 55 +
.../spec/scripts/oxlint-metrics-uploader.test.ts | 327 +-
.../src/SqlLab/actions/sqlLab.test.ts | 308 +
superset-frontend/src/SqlLab/actions/sqlLab.ts | 68 +-
.../SqlLab/components/ResultSet/ResultSet.test.tsx | 13 +-
.../src/SqlLab/components/ResultSet/index.tsx | 10 +-
.../RunQueryActionButton.test.tsx | 545 +-
.../components/RunQueryActionButton/index.tsx | 37 +-
.../SqlLab/components/SqlEditor/SqlEditor.test.tsx | 17 +-
.../src/SqlLab/components/SqlEditor/index.tsx | 10 +-
.../TableExploreTree/TableExploreTree.test.tsx | 13 +-
.../SqlLab/components/TableExploreTree/index.tsx | 10 +-
.../components/TablePreview/TablePreview.test.tsx | 13 +-
.../src/SqlLab/components/TablePreview/index.tsx | 8 +-
.../src/components/Chart/Chart.test.tsx | 38 +
superset-frontend/src/components/Chart/Chart.tsx | 8 +
.../components/Chart/ChartErrorMessage.test.tsx | 2 +-
.../src/components/Chart/ChartErrorMessage.tsx | 3 +-
.../Chart/ChartRenderer.refresh.test.tsx | 302 +
.../src/components/Chart/ChartRenderer.test.tsx | 19 +
.../src/components/Chart/ChartRenderer.tsx | 90 +-
.../Chart/DrillBy/DrillByTemporalFilters.test.tsx | 257 +
.../Chart/DrillDetail/DrillDetailPane.test.tsx | 48 +-
.../Chart/DrillDetail/DrillDetailPane.tsx | 3 +-
.../components/Chart/DrillDetail/utils.test.ts} | 50 +-
.../src/components/Chart/DrillDetail/utils.ts | 1 +
.../src/components/Chart/chartAction.ts | 34 +
.../src/components/Chart/chartActions.test.ts | 62 +
.../DatasourceModal.pendingEdits.test.tsx | 196 +
.../FoldersEditor/FoldersEditor.test.tsx | 17 +-
.../components/Datasource/FoldersEditor/index.tsx | 12 +-
.../CollectionTable.debounce.test.tsx | 287 +
.../components/CollectionTable/index.tsx | 231 +-
.../DatasourceEditor/DatasourceEditor.tsx | 45 +-
...atasourceEditorNormalizeColumnsWarning.test.tsx | 146 +
.../src/components/Datasource/types.ts | 10 -
.../src/components/Datasource/utils/index.ts | 12 +-
.../src/components/Datasource/utils/utils.test.tsx | 28 +-
.../components/ErrorMessage/ErrorAlert.test.tsx | 41 +
.../src/components/GridTable/GridTable.test.tsx | 46 +-
.../src/components/GridTable/index.tsx | 19 +-
.../src/components/JsonModal/JsonModal.test.tsx | 18 +
.../src/components/JsonModal/utils.ts | 10 +-
.../src/dashboard/actions/hydrate.test.ts | 43 +
superset-frontend/src/dashboard/actions/hydrate.ts | 32 +-
.../components/AnchorLink/AnchorLink.test.tsx | 2 +-
.../DashboardBuilder/DashboardBuilder.test.tsx | 137 +-
.../DashboardBuilder/DashboardBuilder.tsx | 155 +-
.../DashboardBuilder/DashboardWrapper.tsx | 2 +-
.../src/dashboard/components/Header/index.tsx | 4 +-
.../PropertiesModal.manyCharts.test.tsx | 107 +
.../dashboard/components/PropertiesModal/index.tsx | 9 +-
.../PropertiesModal/sections/AccessSection.tsx | 2 +-
.../RefreshFrequencySelect.test.tsx | 99 +-
.../RefreshFrequency/RefreshFrequencySelect.tsx | 43 +-
.../src/dashboard/components/SliceAdder.test.tsx | 2 +-
.../src/dashboard/components/SliceAdder.tsx | 8 +-
.../components/gridComponents/Chart/Chart.test.tsx | 55 +
.../components/gridComponents/Chart/Chart.tsx | 7 +-
.../components/gridComponents/Header/Header.tsx | 2 +-
.../DownloadMenuItems/DownloadMenuItems.test.tsx | 4 +-
.../FilterControls.overflow.test.tsx | 269 +
.../FilterBar/FilterControls/FilterControls.tsx | 4 +-
.../FilterBar/FilterControls/FilterValue.test.tsx | 73 +
.../FilterBar/FilterControls/FilterValue.tsx | 28 +-
.../nativeFilters/FilterBar/utils.test.ts | 35 +
.../components/nativeFilters/FilterBar/utils.ts | 5 +-
.../ColumnSelect.requestLifetime.test.tsx | 155 +
.../FiltersConfigForm/ColumnSelect.tsx | 38 +-
.../FiltersConfigForm/FiltersConfigForm.tsx | 338 +-
.../FiltersConfigForm/getControlItemsMap.test.tsx | 19 +-
.../FiltersConfigForm/getControlItemsMap.tsx | 3 +-
.../FiltersConfigForm/utils.test.ts | 120 +-
.../FiltersConfigModal/FiltersConfigForm/utils.ts | 48 +-
.../FiltersConfigModal.semanticDefault.test.tsx | 1173 +
.../FiltersConfigModal/FiltersConfigModal.test.tsx | 72 +-
.../hooks/useFilterOperations.test.ts | 145 +-
.../hooks/useItemStateManager.ts | 28 +-
.../nativeFilters/FiltersConfigModal/types.ts | 4 +
.../src/dashboard/containers/DashboardPage.tsx | 5 +-
superset-frontend/src/dashboard/types.ts | 3 +-
.../util/charts/getFormDataWithExtraFilters.ts | 7 +-
.../util/getFormDataWithExtraFilters.test.ts | 49 +
.../dashboard/util/withChartDisplayLabels.test.ts | 153 +
.../src/dashboard/util/withChartDisplayLabels.ts | 61 +
superset-frontend/src/embedded/index.tsx | 5 +-
.../src/explore/actions/saveModalActions.test.ts | 212 +
.../src/explore/actions/saveModalActions.ts | 14 +
.../components/ChartPills.behavior.test.tsx | 158 +
.../src/explore/components/Control.test.tsx | 53 +-
.../src/explore/components/ControlHeader.test.tsx | 92 +-
.../src/explore/components/ControlHeader.tsx | 37 +-
.../DatasourcePanel.real-autosizer.test.tsx | 7 +-
.../DatasourcePanel/DatasourcePanel.test.tsx | 13 +-
.../explore/components/DatasourcePanel/index.tsx | 10 +-
.../ExploreChartHeader/ExploreChartHeader.test.tsx | 289 +
.../ExploreChartPanel/ExploreChartPanel.test.tsx | 28 +-
.../explore/components/ExploreChartPanel/index.tsx | 6 +
.../ExploreViewContainer.test.tsx | 276 +-
.../components/ExploreViewContainer/index.tsx | 6 +-
.../components/LegacyAggregationAlert.test.tsx | 302 +
.../explore/components/LegacyAggregationAlert.tsx | 115 +
.../RunQueryButton/RunQueryButton.test.tsx | 361 +-
.../explore/components/RunQueryButton/index.tsx | 6 +-
.../components/controls/CheckboxControl.test.tsx | 146 +-
.../components/controls/CheckboxControl.tsx | 73 +-
.../CollectionControl/CollectionControl.test.tsx | 14 +-
.../ColorSchemeControl/ColorSchemeLabel.test.tsx | 14 +
.../ColorSchemeControl/ColorSchemeLabel.tsx | 3 +
.../ColumnConfigControl.popover.test.tsx | 293 +
.../ColumnConfigControl.test.tsx | 75 +
.../ColumnConfigControl/ColumnConfigControl.tsx | 20 +-
.../ControlForm/ControlForm.test.tsx | 158 +
.../controls/ColumnConfigControl/types.ts | 1 +
.../controls/ComparisonRangeLabel.test.tsx | 38 +-
.../components/controls/ComparisonRangeLabel.tsx | 90 +-
.../ConditionalFormattingControl.test.tsx | 331 +-
.../ConditionalFormattingControl.tsx | 12 +-
.../ContourControl/ContourControl.test.tsx | 128 +
.../controls/ContourControl/ContourOption.test.tsx | 111 +
.../controls/ContourControl/ContourOption.tsx | 8 +-
.../ContourPopoverControl-unused-fields.test.tsx | 60 +
.../ContourControl/ContourPopoverControl.test.tsx | 277 +
.../ContourControl/ContourPopoverControl.tsx | 21 +-
.../ContourControl/ContourPopoverTrigger.test.tsx | 133 +
.../controls/ContourControl/index.test.tsx | 212 +
.../controls/CustomListItem/index.test.tsx | 48 +
.../DatasourceControl/DatasourceControl.test.tsx | 2 +-
.../components/DateFunctionTooltip.tsx | 2 +-
.../FilterControl/AdhocFilter/AdhocFilter.test.ts | 44 +
.../controls/FilterControl/AdhocFilter/index.ts | 31 +-
...AdhocFilterEditPopoverSimpleTabContent.test.tsx | 69 +-
.../index.tsx | 38 +-
.../controls/FixedOrMetricControl/index.tsx | 2 +-
.../components/controls/JSEditorControl.test.tsx | 9 +-
.../components/controls/JSEditorControl.tsx | 10 +-
.../LayerConfigsControl.test.tsx | 271 +
.../MapViewControl/MapViewControl.test.tsx | 134 +
.../MapViewControl/MapViewPopoverContent.test.tsx | 78 +
.../components/controls/SliderControl.test.tsx | 71 +
.../components/controls/SwitchControl.test.tsx | 57 +
.../controls/TimeRangeControl/index.test.tsx | 55 +
.../controls/VerticalRadioControl.test.tsx | 83 +
.../controls/ViewQueryModalFooter.test.tsx | 142 +-
.../controls/VizTypeControl/VizTypeGallery.tsx | 24 +-
.../ZoomConfigControl/ZoomConfigControl.test.tsx | 195 +-
.../ZoomConfigControl/ZoomConfigsChart.test.tsx | 178 +
superset-frontend/src/explore/constants.ts | 10 +
.../explore/controlUtils/sunburstTimeGrain.test.ts | 216 +
.../exploreUtils/legacyAggregationTag.test.ts | 137 +
.../explore/exploreUtils/legacyAggregationTag.ts | 93 +
superset-frontend/src/explore/types.ts | 2 +
.../src/features/alerts/AlertReportModal.test.tsx | 1128 +
.../src/features/alerts/AlertReportModal.tsx | 338 +-
.../alerts/components/AlertStatusIcon.test.tsx | 14 +
.../features/alerts/components/AlertStatusIcon.tsx | 1 +
.../src/features/charts/ChartCard.test.tsx | 32 +
.../src/features/charts/ChartCard.tsx | 10 +-
.../src/features/dashboards/DashboardCard.test.tsx | 47 +-
.../src/features/dashboards/DashboardCard.tsx | 14 +-
.../src/features/home/DashboardTable.test.tsx | 58 +-
.../src/features/home/DashboardTable.tsx | 31 +-
.../src/features/home/RightMenu.test.tsx | 76 +
superset-frontend/src/features/home/RightMenu.tsx | 16 +
.../semanticLayers/MultiEnumControl.test.tsx | 36 +
.../semanticLayers/jsonFormsAntdRenderers.test.tsx | 17 +-
.../features/semanticLayers/jsonFormsHelpers.tsx | 16 +-
.../semanticViews/AddSemanticViewModal.test.tsx | 1204 +-
.../semanticViews/AddSemanticViewModal.tsx | 411 +-
.../src/features/semanticViews/creationResult.ts | 90 +
superset-frontend/src/features/tags/tags.ts | 2 +-
.../src/features/versionHistory/ActionRow.tsx | 5 +-
.../versionHistory/CurrentVersionSection.tsx | 12 +-
.../DashboardVersionHistory.test.tsx | 4 +-
.../versionHistory/RelatedUpdateRow.test.tsx | 27 +
.../features/versionHistory/RelatedUpdateRow.tsx | 5 +-
.../features/versionHistory/SaveGroupItem.test.tsx | 88 +-
.../src/features/versionHistory/SaveGroupItem.tsx | 66 +-
.../versionHistory/VersionHistoryPanel.test.tsx | 139 +-
.../versionHistory/VersionHistoryPanel.tsx | 54 +-
.../src/features/versionHistory/display.test.ts | 75 +
.../src/features/versionHistory/display.ts | 61 +-
.../versionHistory/useVersionActivity.test.ts | 4 +-
.../filters/components/Range/RangeChart.test.tsx | 115 +
.../components/Range/RangeFilterPlugin.test.tsx | 475 +-
.../filters/components/Range/RangeFilterPlugin.tsx | 195 +-
.../filters/components/Range/buildQuery.test.ts | 50 +
.../src/filters/components/Range/buildQuery.ts | 4 +
.../src/filters/components/Range/index.ts | 2 +
.../filters/components/Range/isSemanticRange.ts} | 21 +-
.../src/filters/components/Range/transformProps.ts | 2 +-
.../src/hooks/apiResources/dashboards.test.ts | 48 +
.../src/hooks/apiResources/dashboards.ts | 1 +
superset-frontend/src/hooks/useRunStopButton.ts | 181 +
.../src/pages/ActionLog/ActionLog.test.tsx | 76 +
superset-frontend/src/pages/ActionLog/index.tsx | 67 +-
.../pages/ChartList/ChartList.permissions.test.tsx | 27 +-
superset-frontend/src/pages/ChartList/index.tsx | 19 +-
.../DashboardList/DashboardList.cardview.test.tsx | 77 +-
.../DashboardList.permissions.test.tsx | 34 +-
.../src/pages/DashboardList/index.tsx | 34 +-
.../DatabaseList.semanticLayerDelete.test.tsx | 51 +-
.../DatasetList/DatasetList.behavior.test.tsx | 101 +
.../DatasetList/DatasetList.permissions.test.tsx | 30 +
superset-frontend/src/pages/DatasetList/index.tsx | 66 +-
.../pages/ForgotPassword/ForgotPassword.test.tsx | 157 +
.../src/pages/ForgotPassword/index.tsx | 168 +
superset-frontend/src/pages/Login/Login.test.tsx | 39 +
superset-frontend/src/pages/Login/index.tsx | 39 +-
.../test-runner.ts => src/pages/Login/styles.ts} | 40 +-
.../src/pages/ResetPassword/ResetPassword.test.tsx | 301 +
.../src/pages/ResetPassword/index.tsx | 285 +
superset-frontend/src/types/Dashboard.ts | 1 +
superset-frontend/src/types/bootstrapTypes.ts | 1 +
superset-frontend/src/utils/lazyWithRetry.test.tsx | 140 +
superset-frontend/src/utils/lazyWithRetry.ts | 135 +
.../src/utils/semanticViewStructure.test.ts | 50 +
.../src/utils/semanticViewStructure.ts | 2 +-
.../utils.ts => utils/simpleFilterToAdhoc.test.ts} | 45 +-
superset-frontend/src/utils/simpleFilterToAdhoc.ts | 1 +
superset-frontend/src/views/routePaths.ts | 2 +
superset-frontend/src/views/routes.test.tsx | 10 +
superset-frontend/src/views/routes.tsx | 100 +-
superset-frontend/tsconfig.json | 20 +-
superset-frontend/webpack.config.js | 79 +-
superset-websocket/README.md | 25 +
superset-websocket/config.example.json | 10 +-
superset-websocket/package-lock.json | 634 +-
superset-websocket/package.json | 10 +-
superset-websocket/spec/config.test.ts | 42 +
superset-websocket/spec/index.test.ts | 161 +-
superset-websocket/src/config.ts | 75 +
superset-websocket/src/index.ts | 93 +-
.../utils/client-ws-app/package-lock.json | 184 +-
.../utils/client-ws-app/package.json | 2 +-
superset/app.py | 36 +-
superset/charts/api.py | 32 +-
superset/charts/client_processing.py | 302 +-
superset/charts/data/api.py | 59 +-
superset/charts/data/dashboard_filter_context.py | 22 +
superset/charts/filters.py | 8 +
superset/charts/schemas.py | 4 +-
superset/cli/update.py | 17 -
superset/commands/chart/create.py | 4 +
superset/commands/chart/data/get_data_command.py | 37 +-
superset/commands/chart/exceptions.py | 4 +
superset/commands/chart/export.py | 34 +-
superset/commands/chart/update.py | 19 +
superset/commands/chart/utils.py | 39 +
superset/commands/dashboard/export.py | 51 +-
superset/commands/dashboard/restore_version.py | 42 +
superset/commands/dataset/create.py | 73 +-
superset/commands/dataset/duplicate.py | 48 +-
superset/commands/dataset/exceptions.py | 50 +-
superset/commands/dataset/importers/v1/utils.py | 194 +-
superset/commands/dataset/update.py | 127 +-
superset/commands/explore/get.py | 14 +-
superset/commands/export/assets.py | 75 +-
superset/commands/export/models.py | 18 +-
superset/commands/importers/v1/examples.py | 8 +-
superset/commands/importers/v1/utils.py | 73 +-
superset/commands/report/base.py | 73 +
superset/commands/report/execute.py | 76 +-
superset/commands/report/execution_claim.py | 9 +-
superset/commands/security/exceptions.py | 15 +
superset/commands/security/password_recovery.py | 315 +
superset/commands/security/reset.py | 3 +-
superset/commands/semantic_layer/create.py | 55 +-
superset/commands/semantic_layer/delete.py | 243 +
superset/commands/semantic_layer/exceptions.py | 28 +-
superset/commands/semantic_layer/update.py | 4 +
superset/commands/semantic_layer/utils.py | 2 +-
superset/commands/sql_lab/execute.py | 12 +
superset/commands/streaming_export/base.py | 34 +-
superset/common/db_query_status.py | 6 +
superset/common/form_data_query_context.py | 86 +-
superset/common/query_context_factory.py | 35 +-
superset/common/query_context_processor.py | 37 +-
superset/common/query_object_factory.py | 31 +-
superset/common/tabular_query.py | 8 +-
superset/common/tags.py | 496 -
superset/common/utils/dataframe_utils.py | 64 +
superset/common/utils/time_range_utils.py | 32 +-
superset/config.py | 86 +
superset/connectors/sqla/models.py | 242 +-
superset/connectors/sqla/utils.py | 55 +-
superset/constants.py | 1 +
superset/daos/dashboard.py | 240 +-
superset/daos/datasource.py | 5 +-
superset/daos/key_value.py | 29 +-
superset/daos/query.py | 26 +-
superset/dashboards/api.py | 74 +-
superset/dashboards/filters.py | 7 +
superset/dashboards/schemas.py | 16 +
superset/databases/api.py | 39 +-
superset/datasets/api.py | 33 +-
superset/datasets/schemas.py | 17 +-
superset/datasource/api.py | 298 +-
superset/db_engine_specs/README.md | 3 +
superset/db_engine_specs/base.py | 5 +
superset/db_engine_specs/bigquery.py | 15 +-
superset/db_engine_specs/clickhouse.py | 303 +-
superset/db_engine_specs/databricks.py | 19 +
superset/db_engine_specs/impala.py | 48 +-
superset/db_engine_specs/lib.py | 11 +
superset/db_engine_specs/oceanbase.py | 86 +
superset/db_engine_specs/postgres.py | 3 +-
superset/db_engine_specs/snowflake.py | 18 +-
superset/db_engine_specs/trino.py | 35 +-
superset/errors.py | 1 +
superset/exceptions.py | 27 +
superset/explore/utils.py | 6 +-
superset/extensions/metadb.py | 3 +-
superset/importexport/api.py | 45 +-
superset/initialization/__init__.py | 29 +-
superset/jinja_context.py | 21 +-
superset/key_value/types.py | 7 +
superset/mcp_service/README.md | 41 +
superset/mcp_service/__init__.py | 10 +
superset/mcp_service/app.py | 4 +-
superset/mcp_service/auth.py | 85 +-
superset/mcp_service/catalog/schemas.py | 12 +-
superset/mcp_service/catalog/tool/get_catalog.py | 46 +-
superset/mcp_service/chart/chart_helpers.py | 30 +
superset/mcp_service/chart/chart_utils.py | 30 +-
superset/mcp_service/chart/compile.py | 176 +-
superset/mcp_service/chart/plugins/big_number.py | 15 +-
.../chart/prompts/create_chart_guided.py | 4 +-
.../mcp_service/chart/resources/chart_configs.py | 14 +-
superset/mcp_service/chart/schemas.py | 271 +-
superset/mcp_service/chart/sunburst.py | 23 +-
superset/mcp_service/chart/tool/generate_chart.py | 12 +-
superset/mcp_service/chart/tool/get_chart_data.py | 183 +-
.../mcp_service/chart/tool/get_chart_preview.py | 145 +-
superset/mcp_service/chart/tool/update_chart.py | 2 +-
superset/mcp_service/chart/validation/pipeline.py | 9 +-
superset/mcp_service/composite_token_verifier.py | 51 +-
superset/mcp_service/constants.py | 1 +
superset/mcp_service/dashboard/layout_placement.py | 21 +-
superset/mcp_service/dashboard/permalink.py | 6 +-
superset/mcp_service/dashboard/schemas.py | 258 +-
.../tool/add_chart_to_existing_dashboard.py | 16 +-
.../dashboard/tool/apply_dashboard_filters.py | 412 +-
.../dashboard/tool/duplicate_dashboard.py | 14 +-
.../dashboard/tool/generate_dashboard.py | 27 +-
.../dashboard/tool/get_dashboard_data.py | 96 +-
superset/mcp_service/dashboard_scope.py | 12 +-
superset/mcp_service/dashboard_scope_sql.py | 25 +-
superset/mcp_service/database/schemas.py | 8 +-
superset/mcp_service/dataset/schemas.py | 97 +-
.../dataset/tool/update_dataset_metric.py | 2 +-
superset/mcp_service/guest_token_verifier.py | 6 +-
superset/mcp_service/jwt_verifier.py | 28 +-
superset/mcp_service/mcp_config.py | 13 +-
superset/mcp_service/middleware.py | 54 +
superset/mcp_service/report/schemas.py | 4 +
.../tool/get_compatible_dimensions.py | 32 +-
.../semantic_layer/tool/get_compatible_metrics.py | 32 +-
superset/mcp_service/server.py | 11 +-
superset/mcp_service/sql_lab/schemas.py | 25 +-
superset/mcp_service/tag/tool/get_tag_info.py | 6 +-
superset/mcp_service/tag/tool/list_tags.py | 6 +-
superset/mcp_service/theme/schemas.py | 18 +-
superset/mcp_service/utils/query_utils.py | 18 +-
superset/mcp_service/utils/response_size_utils.py | 4 +
superset/mcp_service/utils/sanitization.py | 190 +-
superset/mcp_service/utils/schema_utils.py | 28 +
superset/mcp_service/utils/validation.py | 89 +-
...141b8ada7731_tag_pivot_tables_with_restored_.py | 334 +
...ep_legacy_password_view_perms_from_all_roles.py | 120 +
superset/models/core.py | 11 +-
superset/models/dashboard.py | 238 +-
superset/models/helpers.py | 392 +-
superset/models/slice.py | 23 +-
superset/models/sql_lab.py | 3 +-
superset/queries/api.py | 18 +-
superset/queries/saved_queries/api.py | 33 +-
superset/queries/schemas.py | 2 +-
superset/reports/api.py | 15 +-
superset/reports/filters.py | 37 +
superset/reports/notifications/slack_mixin.py | 4 +-
superset/result_set.py | 5 +
superset/security/api.py | 214 +-
superset/security/manager.py | 173 +-
superset/security/password_change.py | 110 +-
superset/security/password_recovery.py | 316 +
superset/semantic_layers/api.py | 180 +-
superset/semantic_layers/cache_host.py | 19 +-
superset/semantic_layers/cache_identity.py | 26 +-
superset/semantic_layers/cache_policy.py | 55 +-
superset/semantic_layers/cache_repository.py | 17 +-
superset/semantic_layers/cache_transform.py | 17 +-
superset/semantic_layers/cache_types.py | 3 +-
superset/semantic_layers/dimension_resolution.py | 117 +
superset/semantic_layers/exceptions.py | 127 +
superset/semantic_layers/execution.py | 286 +
superset/semantic_layers/mapper.py | 542 +-
superset/semantic_layers/models.py | 244 +-
superset/semantic_layers/ordering.py | 59 +
superset/sql/execution/celery_task.py | 541 +-
superset/sql/execution/executor.py | 252 +-
superset/sql/execution/serialization.py | 130 +
superset/sql/execution/utils.py | 260 +
superset/sql/parse.py | 81 +-
superset/sql_lab.py | 366 +-
superset/sqllab/api.py | 4 +-
superset/subjects/utils.py | 19 +-
superset/superset_typing.py | 4 +-
superset/tags/core.py | 98 +-
superset/tags/models.py | 311 +-
superset/tasks/async_queries.py | 34 +-
superset/tasks/schemas.py | 9 +
superset/themes/api.py | 7 +-
superset/translations/ar/LC_MESSAGES/messages.po | 521 +-
superset/translations/ca/LC_MESSAGES/messages.po | 495 +-
superset/translations/cs/LC_MESSAGES/messages.po | 503 +-
superset/translations/de/LC_MESSAGES/messages.po | 495 +-
superset/translations/en/LC_MESSAGES/messages.po | 473 +-
superset/translations/es/LC_MESSAGES/messages.po | 495 +-
superset/translations/fa/LC_MESSAGES/messages.po | 489 +-
superset/translations/fi/LC_MESSAGES/messages.po | 517 +-
superset/translations/fr/LC_MESSAGES/messages.po | 497 +-
superset/translations/it/LC_MESSAGES/messages.po | 520 +-
superset/translations/ja/LC_MESSAGES/messages.po | 491 +-
superset/translations/ko/LC_MESSAGES/messages.po | 509 +-
superset/translations/lv/LC_MESSAGES/messages.po | 503 +-
superset/translations/messages.pot | 339 +-
superset/translations/mi/LC_MESSAGES/messages.po | 495 +-
superset/translations/nl/LC_MESSAGES/messages.po | 489 +-
superset/translations/pl/LC_MESSAGES/messages.po | 497 +-
superset/translations/pt/LC_MESSAGES/messages.po | 520 +-
.../translations/pt_BR/LC_MESSAGES/messages.po | 489 +-
superset/translations/ro/LC_MESSAGES/messages.po | 506 +-
superset/translations/ru/LC_MESSAGES/messages.po | 504 +-
superset/translations/sk/LC_MESSAGES/messages.po | 503 +-
superset/translations/sl/LC_MESSAGES/messages.po | 511 +-
superset/translations/sr/LC_MESSAGES/messages.po | 527 +-
.../translations/sr_Latn/LC_MESSAGES/messages.po | 527 +-
superset/translations/ta/LC_MESSAGES/messages.po | 495 +-
superset/translations/th/LC_MESSAGES/messages.po | 509 +-
superset/translations/tr/LC_MESSAGES/messages.po | 490 +-
superset/translations/uk/LC_MESSAGES/messages.po | 511 +-
superset/translations/zh/LC_MESSAGES/messages.po | 481 +-
.../translations/zh_TW/LC_MESSAGES/messages.po | 481 +-
superset/utils/core.py | 19 +-
superset/utils/csv.py | 14 +-
superset/utils/date_parser.py | 7 +-
superset/utils/error_sanitization.py | 38 +
superset/utils/excel.py | 36 +-
superset/utils/filters.py | 111 +-
superset/utils/number_format.py | 94 +
superset/utils/pandas_postprocessing/compare.py | 14 +-
superset/utils/schema.py | 60 +
superset/utils/screenshot_utils.py | 34 +-
superset/utils/webdriver.py | 4 +-
superset/versioning/api_helpers.py | 8 +
superset/versioning/changes/shadow_queries.py | 9 +-
superset/versioning/db_errors.py | 68 +-
superset/versioning/diff.py | 124 +-
superset/versioning/restore.py | 125 +-
superset/views/api.py | 5 +
superset/views/archived_assets.py | 18 +-
superset/views/auth.py | 22 +-
superset/views/base.py | 6 +
superset/views/base_api.py | 24 +
superset/views/datasource/schemas.py | 1 +
superset/views/datasource/utils.py | 7 +-
superset/views/datasource/views.py | 80 +-
.../src/superset_e2e_semantic_stub/__init__.py | 294 +
.../semantic_stub/dist/manifest.json | 10 +
tests/integration_tests/charts/api_tests.py | 8 +-
tests/integration_tests/dashboards/api_tests.py | 836 +-
.../dashboards/version_restore_tests.py | 526 +
tests/integration_tests/datasets/api_tests.py | 45 +
tests/integration_tests/datasource/api_tests.py | 237 +-
tests/integration_tests/fixtures/public_role.py | 47 +-
tests/integration_tests/queries/api_tests.py | 59 +-
tests/integration_tests/reports/commands_tests.py | 61 +-
.../security/public_role_tests.py | 93 +
.../security/row_level_security_tests.py | 69 +
tests/integration_tests/security_tests.py | 121 +-
tests/integration_tests/sqllab_tests.py | 29 +-
.../superset_test_config_semantic.py | 26 +-
tests/integration_tests/tagging_tests.py | 294 -
tests/integration_tests/tags/dao_tests.py | 94 +-
tests/integration_tests/tags/race_tests.py | 94 +
tests/integration_tests/tasks/api_tests.py | 78 +-
.../mypy_fixtures/__init__.py | 11 +-
tests/mypy_fixtures/uuid_mixin_nullable.py | 44 +
.../db_engine_specs/_bigquery_container.py | 79 +
.../db_engine_specs/test_bigquery.py | 183 +
.../db_engine_specs/test_clickhouse.py | 118 +
tests/testcontainers/db_engine_specs/test_mysql.py | 113 +
.../db_engine_specs/test_oceanbase.py | 94 +-
.../db_engine_specs/test_postgres.py | 690 +
.../charts/commands/data/test_get_data_command.py | 63 +-
.../charts/commands/importers/v1/import_test.py | 46 +
.../charts/data/streaming_filename_test.py | 18 +-
tests/unit_tests/charts/test_client_processing.py | 863 +-
.../charts/test_exact_integer_chart_data.py | 824 +
tests/unit_tests/charts/test_filters.py | 110 +
tests/unit_tests/charts/test_schemas.py | 51 +-
tests/unit_tests/commands/chart/create_test.py | 252 +-
tests/unit_tests/commands/chart/export_test.py | 576 +
tests/unit_tests/commands/chart/update_test.py | 266 +-
tests/unit_tests/commands/dashboard/export_test.py | 8 +-
tests/unit_tests/commands/dataset/test_create.py | 279 +-
.../unit_tests/commands/dataset/test_duplicate.py | 136 +-
tests/unit_tests/commands/dataset/update_test.py | 475 +-
.../deletion_retention/test_purge_chart_detach.py | 2 +-
.../explore/test_get_query_authorship_bypass.py | 100 +-
.../commands/importers/v1/examples_test.py | 51 +
.../unit_tests/commands/importers/v1/utils_test.py | 233 +
tests/unit_tests/commands/report/base_test.py | 239 +
.../unit_tests/commands/report/conftest.py | 8 +-
tests/unit_tests/commands/report/execute_test.py | 195 +-
.../commands/report/semantic_view_report_test.py | 232 +
.../commands/semantic_layer/create_test.py | 193 +-
.../commands/semantic_layer/delete_test.py | 634 +-
.../commands/semantic_layer/update_test.py | 12 +-
.../semantic_layer/view_data_access_test.py | 148 +
tests/unit_tests/commands/sql_lab/test_estimate.py | 27 +
tests/unit_tests/commands/sql_lab/test_execute.py | 92 +
.../commands/streaming_export}/__init__.py | 0
.../commands/streaming_export/base_test.py | 51 +
tests/unit_tests/common/test_dataframe_utils.py | 53 +
.../common/test_form_data_query_context.py | 101 +
.../unit_tests/common/test_query_cache_manager.py | 38 +
.../common/test_query_context_factory.py | 35 +
.../common/test_query_context_processor.py | 228 +-
tests/unit_tests/common/test_time_range_utils.py | 27 +
tests/unit_tests/conftest.py | 53 +-
tests/unit_tests/connectors/sqla/utils_test.py | 50 +
tests/unit_tests/dao/dashboard_test.py | 689 +-
tests/unit_tests/dao/queries_test.py | 30 +-
tests/unit_tests/dao/query_stop_isolation_test.py | 126 +
.../dao/test_copy_dashboard_legacy_ids.py | 81 +-
tests/unit_tests/dao/test_query_stop_race.py | 168 +-
tests/unit_tests/daos/test_query_dao.py | 619 +
tests/unit_tests/dashboards/datasets_test.py | 1467 +-
.../dashboards/semantic_view_access_test.py | 141 +-
tests/unit_tests/databases/api_test.py | 91 +-
.../datasets/commands/importers/v1/import_test.py | 608 +-
tests/unit_tests/datasets/schema_tests.py | 80 +
tests/unit_tests/datasource/test_compatible_api.py | 98 +
tests/unit_tests/datasource/test_query_api.py | 24 +
tests/unit_tests/db_engine_specs/test_bigquery.py | 70 +
.../unit_tests/db_engine_specs/test_clickhouse.py | 344 +-
.../unit_tests/db_engine_specs/test_databricks.py | 47 +
.../test_extended_aggregations_unverified.py | 8 +-
.../db_engine_specs/test_impala_pending.py | 132 +-
tests/unit_tests/db_engine_specs/test_lib.py | 31 +-
tests/unit_tests/db_engine_specs/test_oceanbase.py | 228 +
tests/unit_tests/db_engine_specs/test_snowflake.py | 25 +
tests/unit_tests/db_engine_specs/test_trino.py | 1104 +-
tests/unit_tests/exceptions_test.py | 46 +
tests/unit_tests/explore/utils_test.py | 39 +
tests/unit_tests/importexport/api_test.py | 141 +-
tests/unit_tests/initialization_test.py | 9 +-
tests/unit_tests/jinja_context_test.py | 74 +
.../mcp_service/catalog/tool/test_get_catalog.py | 238 +-
.../mcp_service/chart/test_bullet_chart.py | 18 +-
.../mcp_service/chart/test_bullet_tool_paths.py | 24 +-
.../mcp_service/chart/test_chart_examples.py | 48 +
.../mcp_service/chart/test_chart_helpers.py | 67 +
.../mcp_service/chart/test_chart_schemas.py | 21 +
tests/unit_tests/mcp_service/chart/test_compile.py | 464 +
.../chart/test_native_chart_regressions.py | 24 +
.../mcp_service/chart/test_new_chart_types.py | 26 +-
.../test_review_query_and_preview_regressions.py | 7 +-
.../mcp_service/chart/test_sunburst_chart.py | 146 +
.../chart/test_time_grain_generic_axes.py | 171 +
.../mcp_service/chart/tool/test_generate_chart.py | 73 +-
.../mcp_service/chart/tool/test_get_chart_data.py | 693 +-
.../chart/tool/test_get_chart_preview.py | 453 +
.../mcp_service/chart/tool/test_update_chart.py | 235 +-
.../chart/tool/test_update_chart_preview.py | 59 +
.../validation/test_column_name_normalization.py | 32 +
.../common/test_list_scope_validation.py | 105 +
.../dashboard/test_dashboard_schemas.py | 39 +
.../mcp_service/dashboard/test_permalink.py | 40 +-
.../tool/test_add_chart_to_existing_dashboard.py | 85 +-
.../dashboard/tool/test_apply_dashboard_filters.py | 1362 +-
.../tool/test_chart_access_query_count.py | 174 +
.../dashboard/tool/test_dashboard_generation.py | 172 +-
.../dashboard/tool/test_duplicate_dashboard.py | 86 +-
.../dashboard/tool/test_get_dashboard_data.py | 507 +
.../dashboard/tool/test_list_dashboards.py | 85 +
.../tool/test_managed_dashboard_refusal.py | 3 +
.../dashboard/tool/test_update_dashboard.py | 34 +
.../mcp_service/dataset/tool/test_query_dataset.py | 44 +-
.../mcp_service/native_tool_inventory.json | 174 +-
.../test_compatibility_selection_validation.py | 144 +
.../tool/test_get_compatible_dimensions.py | 7 +
.../tool/test_get_compatible_metrics.py | 7 +
.../semantic_layer/tool/test_get_table.py | 27 +-
.../semantic_layer/tool/test_list_metrics.py | 25 +-
tests/unit_tests/mcp_service/test_auth_api_key.py | 10 +-
.../mcp_service/test_browser_hello_middleware.py | 126 +
.../mcp_service/test_dashboard_scope_sql.py | 75 +
.../mcp_service/test_guest_token_auth.py | 7 +
tests/unit_tests/mcp_service/test_mcp_config.py | 9 +
tests/unit_tests/mcp_service/test_mcp_server.py | 28 +
.../mcp_service/test_mcp_tool_registration.py | 23 +
tests/unit_tests/mcp_service/test_middleware.py | 5 +-
.../mcp_service/test_multi_auth_client_id.py | 678 +
.../mcp_service/test_native_tool_surface.py | 10 +-
.../test_sanitization_warning_inputs.py | 1675 +-
.../unit_tests/mcp_service/test_tool_inventory.py | 21 +-
.../mcp_service/test_validation_contract.py | 42 +-
.../mcp_service/utils/test_sanitization.py | 355 +
.../test_sweep_legacy_password_view_perms.py | 190 +
...t_tag_pivot_tables_with_restored_aggregation.py | 461 +
.../models/groupby_literal_column_test.py | 288 +
tests/unit_tests/models/helpers_test.py | 925 +-
.../models/normalize_df_large_integer_test.py | 307 +
tests/unit_tests/models/slice_test.py | 87 +
tests/unit_tests/models/template_params_test.py | 68 +
.../models/test_hours_offset_bound_truncation.py | 480 +-
tests/unit_tests/models/test_multivalue_filter.py | 138 +
.../models/test_sunburst_drill_hours_offset.py | 632 +
.../pandas_postprocessing/test_compare.py | 109 +
tests/unit_tests/reports/filters_test.py | 53 +
.../reports/notifications/slack_tests.py | 20 +-
tests/unit_tests/scripts/change_detector_test.py | 13 +
.../scripts/translations/babel_update_test.py | 105 +-
tests/unit_tests/security/manager_test.py | 308 +-
.../security/test_dashboard_chart_labels.py | 207 +
tests/unit_tests/security/test_password_change.py | 63 +
.../unit_tests/security/test_password_recovery.py | 1073 +
.../security/test_password_recovery_rate_limit.py | 71 +
tests/unit_tests/security/test_sunburst_guest.py | 92 +
tests/unit_tests/semantic_layers/api_test.py | 463 +-
.../unit_tests/semantic_layers/cache_host_test.py | 12 +-
.../semantic_layers/cache_identity_test.py | 17 +-
.../semantic_layers/cache_integration_test.py | 4 +-
.../semantic_layers/cache_or_filters_test.py | 220 +
.../semantic_layers/cache_policy_test.py | 3 +-
.../semantic_layers/cache_repository_test.py | 16 +-
.../semantic_layers/cache_transform_test.py | 8 +-
tests/unit_tests/semantic_layers/conftest.py | 171 +
.../semantic_layers/default_order_test.py | 376 +
.../semantic_layers/dimension_resolution_test.py | 161 +
.../semantic_layers/e2e_stub_extension_test.py | 246 +
.../semantic_layers/execution_context_test.py | 1141 +
.../semantic_layers/grain_validation_test.py | 6 +-
.../semantic_layers/import_export_test.py | 6 +-
.../semantic_layers/integer_precision_test.py | 14 +-
tests/unit_tests/semantic_layers/mapper_test.py | 1308 +-
.../semantic_layers/metadata_contract_test.py | 92 +-
.../semantic_layers/metric_filter_test.py | 209 +-
tests/unit_tests/semantic_layers/models_test.py | 479 +-
.../semantic_layers/null_filters_test.py | 339 +
.../semantic_layers/query_errors_test.py | 846 +
.../semantic_layers/simple_cache_clear_test.py | 117 +-
.../semantic_layers/values_endpoint_test.py | 292 +
tests/unit_tests/sql/execution/conftest.py | 6 +-
.../unit_tests/sql/execution/test_async_results.py | 1507 +
tests/unit_tests/sql/execution/test_celery_task.py | 2398 +-
tests/unit_tests/sql/execution/test_executor.py | 42 +-
tests/unit_tests/sql/execution/test_utils.py | 207 +
tests/unit_tests/sql/parse_tests.py | 154 +
tests/unit_tests/sql_lab_test.py | 1752 +
tests/unit_tests/sqllab/api_test.py | 24 +-
tests/unit_tests/subjects/test_raise_for_access.py | 4 +
tests/unit_tests/tags/models_test.py | 6 +-
tests/unit_tests/tags/race_test.py | 84 +
tests/unit_tests/tasks/test_async_queries.py | 139 +-
tests/unit_tests/tasks/test_schemas.py | 62 +
tests/unit_tests/test_app_reinitialization.py | 114 +
tests/unit_tests/test_sqllab_error_stacktrace.py | 17 +-
tests/unit_tests/themes/api_test.py | 33 +
tests/unit_tests/utils/csv_tests.py | 14 +
tests/unit_tests/utils/excel_tests.py | 51 +
tests/unit_tests/utils/filters_test.py | 260 +-
tests/unit_tests/utils/number_format_test.py | 31 +
tests/unit_tests/utils/test_core.py | 20 +
tests/unit_tests/utils/test_error_sanitization.py | 94 +
tests/unit_tests/utils/test_schema.py | 138 +
tests/unit_tests/utils/test_screenshot_utils.py | 134 +
.../versioning/test_dataset_child_extra.py | 148 +
tests/unit_tests/versioning/test_db_errors.py | 65 +-
.../versioning/test_diff_save_defaults.py | 264 +
tests/unit_tests/versioning/test_restore.py | 167 +-
tests/unit_tests/versioning/test_shadow_queries.py | 79 +
tests/unit_tests/views/datasource/test_utils.py | 38 +
tests/unit_tests/views/datasource/views_test.py | 440 +-
tests/unit_tests/views/test_archived_assets.py | 86 +
tests/unit_tests/views/test_base.py | 72 +
.../unit_tests/views/test_parse_json_form_field.py | 54 +
1045 files changed, 126409 insertions(+), 32434 deletions(-)
create mode 100644 .github/utsc2026-students.yml
create mode 100755 .github/workflows/scripts/check-code-scanning-available.sh
create mode 100755
.github/workflows/scripts/check-code-scanning-available.test.sh
create mode 100644 .github/workflows/utsc2026-labeler.yml
create mode 100644 docs/admin_docs/security/oauth.mdx
create mode 100644
docs/developer_docs/extensions/extension-points/semantic-layers.md
create mode 100644 docs/developer_docs/semantic-query-errors.md
create mode 100644 docs/sip/pivot-table-aggregation-parity.md
create mode 100644 docs/src/components/databases/DatabaseLogo.tsx
create mode 100644 docs/static/img/databases/clickhouse-dark.svg
create mode 100644 docs/static/img/databases/clickhouse-mark-dark.svg
create mode 100644 docs/static/img/databases/clickhouse-mark.svg
create mode 100644 docs/static/img/databases/clickhouse.svg
create mode 100644 docs/static/img/logos/plum.svg
delete mode 100755 scripts/eslint.sh
create mode 100644 superset-core/src/superset_core/semantic_layers/context.py
create mode 100644 superset-core/src/superset_core/semantic_layers/testing.py
create mode 100644 superset-core/tests/semantic_layers/example_provider.py
create mode 100644
superset-core/tests/semantic_layers/test_execution_context.py
create mode 100644 superset-core/tests/semantic_layers/test_registration.py
copy superset-frontend/.storybook/{test-runner.ts =>
playwright.storybook-ci.config.ts} (54%)
create mode 100644 superset-frontend/.storybook/setup-stories.test.ts
create mode 100644 superset-frontend/.storybook/setup-stories.ts
copy superset-frontend/{plugins/preset-chart-deckgl/types/external.d.ts =>
.storybook/stories.spec.ts} (77%)
rename superset-frontend/{eslint-rules/eslint-plugin-i18n-strings/index.ts =>
custom-lint-rules/i18n-strings/index.js} (69%)
rename superset-frontend/{eslint-rules/eslint-plugin-i18n-strings =>
custom-lint-rules/i18n-strings}/no-eager-t-in-config.test.ts (92%)
rename superset-frontend/{eslint-rules/eslint-plugin-i18n-strings =>
custom-lint-rules/i18n-strings}/no-template-vars.test.ts (88%)
rename superset-frontend/{eslint-rules/eslint-plugin-i18n-strings =>
custom-lint-rules/i18n-strings}/package.json (64%)
rename superset-frontend/{eslint-rules/eslint-plugin-icons/index.ts =>
custom-lint-rules/icons/index.js} (66%)
rename superset-frontend/{eslint-rules/eslint-plugin-icons =>
custom-lint-rules/icons}/no-fontawesome.test.ts (88%)
rename superset-frontend/{eslint-rules/eslint-plugin-icons =>
custom-lint-rules/icons}/package.json (66%)
rename superset-frontend/{eslint-rules/eslint-plugin-theme-colors/colors.ts =>
custom-lint-rules/theme-colors/colors.js} (97%)
rename superset-frontend/{eslint-rules/eslint-plugin-theme-colors/index.ts =>
custom-lint-rules/theme-colors/index.js} (67%)
create mode 100644
superset-frontend/custom-lint-rules/theme-colors/no-literal-colors.test.ts
rename superset-frontend/{eslint-rules/eslint-plugin-theme-colors =>
custom-lint-rules/theme-colors}/package.json (54%)
delete mode 100644 superset-frontend/eslint.config.minimal.js
create mode 100644 superset-frontend/oxlint.custom-lint-rules.mts
create mode 100644
superset-frontend/packages/superset-ui-chart-controls/src/utils/isServerPaginationUnsupported.ts
create mode 100644
superset-frontend/playwright/helpers/api/semanticLayer.test.ts
create mode 100644 superset-frontend/playwright/helpers/api/semanticLayer.ts
create mode 100644
superset-frontend/playwright/tests/dashboard/featured-charts-render.spec.ts
create mode 100644
superset-frontend/playwright/tests/explore/explore-download-image.spec.ts
create mode 100644
superset-frontend/playwright/tests/semantic-view/semantic-view-dashboard.spec.ts
delete mode 100644
superset-frontend/plugins/plugin-chart-ag-grid-table/src/utils/useTableTheme.ts
create mode 100644
superset-frontend/plugins/plugin-chart-cartodiagram/test/components/OlChartMap.test.tsx
create mode 100644
superset-frontend/plugins/plugin-chart-echarts/src/Bubble/crossFilter.ts
create mode 100644
superset-frontend/plugins/plugin-chart-echarts/src/Sunburst/timeGrain.ts
create mode 100644
superset-frontend/plugins/plugin-chart-echarts/src/Sunburst/utils.ts
create mode 100644
superset-frontend/plugins/plugin-chart-echarts/test/BigNumber/chartDisplayLabels.test.ts
create mode 100644
superset-frontend/plugins/plugin-chart-echarts/test/Bubble/EchartsBubble.test.tsx
create mode 100644
superset-frontend/plugins/plugin-chart-echarts/test/Bubble/crossFilter.test.ts
create mode 100644
superset-frontend/plugins/plugin-chart-echarts/test/Graph/categoryIdentity.test.ts
create mode 100644
superset-frontend/plugins/plugin-chart-echarts/test/Sunburst/EchartsSunburst.test.tsx
create mode 100644
superset-frontend/plugins/plugin-chart-echarts/test/Sunburst/buildQuery.test.ts
create mode 100644
superset-frontend/plugins/plugin-chart-echarts/test/Sunburst/controlPanel.test.ts
create mode 100644
superset-frontend/plugins/plugin-chart-echarts/test/Sunburst/timeGrain.test.ts
create mode 100644
superset-frontend/plugins/plugin-chart-echarts/test/Sunburst/utils.test.ts
create mode 100644
superset-frontend/plugins/plugin-chart-pivot-table/src/plugin/resultAggregation.ts
create mode 100644
superset-frontend/plugins/plugin-chart-pivot-table/test/react-pivottable/Styles.test.tsx
create mode 100644
superset-frontend/plugins/plugin-chart-table/test/transformProps.test.tsx
create mode 100644
superset-frontend/plugins/preset-chart-deckgl/src/Multi/transformProps.test.ts
copy
superset-frontend/plugins/{plugin-chart-echarts/src/Sunburst/buildQuery.ts =>
preset-chart-deckgl/src/Multi/transformProps.ts} (62%)
create mode 100644
superset-frontend/plugins/preset-chart-deckgl/src/factory.test.tsx
create mode 100644
superset-frontend/plugins/preset-chart-deckgl/src/layers/Contour/Contour.test.ts
copy superset-frontend/plugins/preset-chart-deckgl/types/{external.d.ts =>
global.d.ts} (74%)
create mode 100644
superset-frontend/spec/fixtures/mockSemanticDashboardDatasources.ts
create mode 100644 superset-frontend/spec/helpers/runStopButton.ts
create mode 100644
superset-frontend/src/components/Chart/ChartRenderer.refresh.test.tsx
create mode 100644
superset-frontend/src/components/Chart/DrillBy/DrillByTemporalFilters.test.tsx
copy superset-frontend/{plugins/plugin-chart-echarts/src/Histogram/types.ts =>
src/components/Chart/DrillDetail/utils.test.ts} (51%)
create mode 100644
superset-frontend/src/components/Datasource/DatasourceModal/DatasourceModal.pendingEdits.test.tsx
create mode 100644
superset-frontend/src/components/Datasource/components/CollectionTable/CollectionTable.debounce.test.tsx
create mode 100644
superset-frontend/src/components/Datasource/components/DatasourceEditor/tests/DatasourceEditorNormalizeColumnsWarning.test.tsx
create mode 100644
superset-frontend/src/dashboard/components/PropertiesModal/PropertiesModal.manyCharts.test.tsx
create mode 100644
superset-frontend/src/dashboard/components/nativeFilters/FiltersConfigModal/FiltersConfigForm/ColumnSelect.requestLifetime.test.tsx
create mode 100644
superset-frontend/src/dashboard/components/nativeFilters/FiltersConfigModal/FiltersConfigModal.semanticDefault.test.tsx
create mode 100644
superset-frontend/src/dashboard/util/withChartDisplayLabels.test.ts
create mode 100644
superset-frontend/src/dashboard/util/withChartDisplayLabels.ts
create mode 100644
superset-frontend/src/explore/components/ChartPills.behavior.test.tsx
create mode 100644
superset-frontend/src/explore/components/LegacyAggregationAlert.test.tsx
create mode 100644
superset-frontend/src/explore/components/LegacyAggregationAlert.tsx
create mode 100644
superset-frontend/src/explore/components/controls/ColumnConfigControl/ColumnConfigControl.popover.test.tsx
create mode 100644
superset-frontend/src/explore/components/controls/ColumnConfigControl/ControlForm/ControlForm.test.tsx
create mode 100644
superset-frontend/src/explore/components/controls/ContourControl/ContourControl.test.tsx
create mode 100644
superset-frontend/src/explore/components/controls/ContourControl/ContourOption.test.tsx
create mode 100644
superset-frontend/src/explore/components/controls/ContourControl/ContourPopoverControl-unused-fields.test.tsx
create mode 100644
superset-frontend/src/explore/components/controls/ContourControl/ContourPopoverControl.test.tsx
create mode 100644
superset-frontend/src/explore/components/controls/ContourControl/ContourPopoverTrigger.test.tsx
create mode 100644
superset-frontend/src/explore/components/controls/ContourControl/index.test.tsx
create mode 100644
superset-frontend/src/explore/components/controls/CustomListItem/index.test.tsx
create mode 100644
superset-frontend/src/explore/components/controls/LayerConfigsControl/LayerConfigsControl.test.tsx
create mode 100644
superset-frontend/src/explore/components/controls/MapViewControl/MapViewControl.test.tsx
create mode 100644
superset-frontend/src/explore/components/controls/MapViewControl/MapViewPopoverContent.test.tsx
create mode 100644
superset-frontend/src/explore/components/controls/SliderControl.test.tsx
create mode 100644
superset-frontend/src/explore/components/controls/SwitchControl.test.tsx
create mode 100644
superset-frontend/src/explore/components/controls/TimeRangeControl/index.test.tsx
create mode 100644
superset-frontend/src/explore/components/controls/VerticalRadioControl.test.tsx
create mode 100644
superset-frontend/src/explore/components/controls/ZoomConfigControl/ZoomConfigsChart.test.tsx
create mode 100644
superset-frontend/src/explore/controlUtils/sunburstTimeGrain.test.ts
create mode 100644
superset-frontend/src/explore/exploreUtils/legacyAggregationTag.test.ts
create mode 100644
superset-frontend/src/explore/exploreUtils/legacyAggregationTag.ts
create mode 100644
superset-frontend/src/features/semanticViews/creationResult.ts
create mode 100644
superset-frontend/src/filters/components/Range/RangeChart.test.tsx
create mode 100644
superset-frontend/src/filters/components/Range/buildQuery.test.ts
copy
superset-frontend/{plugins/plugin-chart-echarts/src/Sunburst/buildQuery.ts =>
src/filters/components/Range/isSemanticRange.ts} (64%)
create mode 100644 superset-frontend/src/hooks/useRunStopButton.ts
create mode 100644
superset-frontend/src/pages/ForgotPassword/ForgotPassword.test.tsx
create mode 100644 superset-frontend/src/pages/ForgotPassword/index.tsx
rename superset-frontend/{.storybook/test-runner.ts =>
src/pages/Login/styles.ts} (54%)
create mode 100644
superset-frontend/src/pages/ResetPassword/ResetPassword.test.tsx
create mode 100644 superset-frontend/src/pages/ResetPassword/index.tsx
create mode 100644 superset-frontend/src/utils/lazyWithRetry.test.tsx
create mode 100644 superset-frontend/src/utils/lazyWithRetry.ts
copy superset-frontend/src/{components/Chart/DrillDetail/utils.ts =>
utils/simpleFilterToAdhoc.test.ts} (51%)
create mode 100644 superset/commands/security/password_recovery.py
delete mode 100644 superset/common/tags.py
create mode 100644
superset/migrations/versions/2026-09-25_00-00_141b8ada7731_tag_pivot_tables_with_restored_.py
create mode 100644
superset/migrations/versions/2026-09-30_00-00_d623a0cb6bb0_sweep_legacy_password_view_perms_from_all_roles.py
create mode 100644 superset/security/password_recovery.py
create mode 100644 superset/semantic_layers/dimension_resolution.py
create mode 100644 superset/semantic_layers/exceptions.py
create mode 100644 superset/semantic_layers/execution.py
create mode 100644 superset/semantic_layers/ordering.py
create mode 100644 superset/sql/execution/serialization.py
create mode 100644 superset/sql/execution/utils.py
create mode 100644
tests/e2e_extensions/semantic_stub/dist/backend/src/superset_e2e_semantic_stub/__init__.py
create mode 100644 tests/e2e_extensions/semantic_stub/dist/manifest.json
create mode 100644 tests/integration_tests/security/public_role_tests.py
copy superset/mcp_service/utils/query_utils.py =>
tests/integration_tests/superset_test_config_semantic.py (50%)
delete mode 100644 tests/integration_tests/tagging_tests.py
create mode 100644 tests/integration_tests/tags/race_tests.py
copy RELEASING/requirements.txt => tests/mypy_fixtures/__init__.py (73%)
create mode 100644 tests/mypy_fixtures/uuid_mixin_nullable.py
create mode 100644 tests/testcontainers/db_engine_specs/_bigquery_container.py
create mode 100644 tests/testcontainers/db_engine_specs/test_bigquery.py
create mode 100644 tests/unit_tests/charts/test_exact_integer_chart_data.py
create mode 100644 tests/unit_tests/commands/chart/export_test.py
copy RELEASING/requirements.txt =>
tests/unit_tests/commands/report/conftest.py (82%)
create mode 100644
tests/unit_tests/commands/report/semantic_view_report_test.py
create mode 100644
tests/unit_tests/commands/semantic_layer/view_data_access_test.py
copy {scripts => tests/unit_tests/commands/streaming_export}/__init__.py (100%)
create mode 100644 tests/unit_tests/commands/streaming_export/base_test.py
create mode 100644 tests/unit_tests/dao/query_stop_isolation_test.py
create mode 100644 tests/unit_tests/daos/test_query_dao.py
create mode 100644 tests/unit_tests/datasource/test_compatible_api.py
create mode 100644 tests/unit_tests/exceptions_test.py
create mode 100644
tests/unit_tests/mcp_service/common/test_list_scope_validation.py
create mode 100644
tests/unit_tests/mcp_service/dashboard/tool/test_chart_access_query_count.py
create mode 100644
tests/unit_tests/mcp_service/dashboard/tool/test_list_dashboards.py
create mode 100644
tests/unit_tests/mcp_service/semantic_layer/tool/test_compatibility_selection_validation.py
create mode 100644
tests/unit_tests/mcp_service/test_browser_hello_middleware.py
create mode 100644 tests/unit_tests/mcp_service/test_multi_auth_client_id.py
create mode 100644
tests/unit_tests/migrations/test_sweep_legacy_password_view_perms.py
create mode 100644
tests/unit_tests/migrations/test_tag_pivot_tables_with_restored_aggregation.py
create mode 100644 tests/unit_tests/models/groupby_literal_column_test.py
create mode 100644 tests/unit_tests/models/normalize_df_large_integer_test.py
create mode 100644 tests/unit_tests/models/template_params_test.py
create mode 100644 tests/unit_tests/models/test_sunburst_drill_hours_offset.py
create mode 100644 tests/unit_tests/security/test_dashboard_chart_labels.py
create mode 100644 tests/unit_tests/security/test_password_recovery.py
create mode 100644
tests/unit_tests/security/test_password_recovery_rate_limit.py
create mode 100644 tests/unit_tests/security/test_sunburst_guest.py
create mode 100644 tests/unit_tests/semantic_layers/cache_or_filters_test.py
create mode 100644 tests/unit_tests/semantic_layers/default_order_test.py
create mode 100644
tests/unit_tests/semantic_layers/dimension_resolution_test.py
create mode 100644 tests/unit_tests/semantic_layers/e2e_stub_extension_test.py
create mode 100644 tests/unit_tests/semantic_layers/execution_context_test.py
create mode 100644 tests/unit_tests/semantic_layers/null_filters_test.py
create mode 100644 tests/unit_tests/semantic_layers/query_errors_test.py
create mode 100644 tests/unit_tests/sql/execution/test_async_results.py
create mode 100644 tests/unit_tests/sql/execution/test_utils.py
create mode 100644 tests/unit_tests/tags/race_test.py
create mode 100644 tests/unit_tests/test_app_reinitialization.py
create mode 100644 tests/unit_tests/utils/test_schema.py
create mode 100644 tests/unit_tests/versioning/test_dataset_child_extra.py
create mode 100644 tests/unit_tests/versioning/test_diff_save_defaults.py
create mode 100644 tests/unit_tests/views/test_archived_assets.py
create mode 100644 tests/unit_tests/views/test_parse_json_form_field.py