Compare commits

...

2388 Commits

Author SHA1 Message Date
dependabot[bot]
f3da949f61 chore(deps-dev): bump oxfmt from 0.70.0 to 0.71.0 in /superset-websocket (#45006)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-10-06 18:48:45 -07:00
dependabot[bot]
27d5c3655d chore(deps-dev): bump the typescript-eslint group in /superset-frontend with 2 updates (#45007)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-10-06 18:48:39 -07:00
dependabot[bot]
ee7b7fdc90 chore(deps-dev): bump oxlint from 1.85.0 to 1.86.0 in /docs (#45009)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-10-06 18:48:34 -07:00
dependabot[bot]
fc754d0e81 chore(deps-dev): bump oxlint from 1.85.0 to 1.86.0 in /superset-frontend (#45014)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-10-06 18:48:20 -07:00
dependabot[bot]
fc1eeb066a chore(deps-dev): bump wait-on from 9.1.0 to 9.4.0 in /superset-frontend (#45015)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-10-06 18:48:14 -07:00
dependabot[bot]
f88b2ef259 chore(deps): bump the security group across 1 directory with 6 updates (#45025)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-10-06 18:48:08 -07:00
dependabot[bot]
ac3fc943dd chore(deps): bump the security group across 1 directory with 9 updates (#45026)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-10-06 18:48:02 -07:00
Divyansh Yadav
715dc017df fix(explore): open SQL Lab in a new tab on Ctrl+click in View query modal (#44933) 2026-10-06 16:53:19 -07:00
Sepuri Sai Krishna
794b243c54 test(frontend): await remaining userEvent calls and lint for un-awaited ones (#44947) 2026-10-06 16:52:37 -07:00
Amogh Atreya
55e39fc5f7 fix(explore): avoid mutating ZoomConfigControl configs (#44957)
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-10-06 16:47:16 -07:00
Amin Ghadersohi
5a2f4c8e80 feat(mcp): add structured dashboard text component management (#44560) 2026-10-06 16:48:40 -04:00
Amin Ghadersohi
17f4c215b3 feat(mcp): allow default values on filter_select native filters (#44985) 2026-10-06 16:48:25 -04:00
Trakshan Mishra
1473d48134 fix(query-context): match an adhoc granularity_sqla by its expression (#44773) 2026-10-06 13:37:29 -07:00
Abhinav
fcee985241 fix(pivot-table): respect per-metric formatters in result aggregation (#44815)
Co-authored-by: Evan Rusackas <evan@preset.io>
2026-10-06 13:22:21 -07:00
dependabot[bot]
7330ca4c37 chore(deps): bump source-map-js from 1.2.1 to 1.2.2 in /superset-embedded-sdk in the security group across 1 directory (#45024)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-10-06 13:19:53 -07:00
dependabot[bot]
3cfc745867 chore(deps): bump dawidd6/action-download-artifact from 26 to 27 (#45011)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-10-06 13:19:34 -07:00
dependabot[bot]
3413a50af0 chore(deps): bump proxy-addr from 2.0.7 to 2.0.8 in /superset-websocket/utils/client-ws-app in the security group across 1 directory (#45027)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-10-06 13:19:13 -07:00
Mike Bridge
d6c871a57f fix(semantic-layers): remove child view permissions when a layer is deleted (#44905)
Co-authored-by: Mike Bridge <michael.bridge@ext.preset.io>
Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-10-06 16:15:37 -04:00
Mike Bridge
000297a6f0 fix(semantic-layers): offer valid table ordering choices (#44806)
Co-authored-by: Mike Bridge <michael.bridge@ext.preset.io>
2026-10-06 16:15:26 -04:00
Mike Bridge
854d3d59e4 fix(table): omit dormant grains from semantic aggregate requests (#44455) 2026-10-06 16:15:13 -04:00
drivaspreset
a5ffac58f4 feat: add global async query playwright tests (#43004)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
2026-10-06 12:03:54 -07:00
dependabot[bot]
457007b2f8 chore(deps-dev): bump source-map-js from 1.2.1 to 1.2.2 in /superset-websocket in the security group across 1 directory (#45028)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-10-06 11:08:46 -07:00
dependabot[bot]
9d348facce chore(deps): bump @swc/core from 1.16.2 to 1.16.12 in /docs (#45008)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-10-06 11:03:56 -07:00
dependabot[bot]
9e18d415d9 chore(deps-dev): bump @swc/core from 1.16.2 to 1.16.12 in /superset-frontend in the swc group (#45012)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-10-06 11:01:19 -07:00
dependabot[bot]
f9e9ece86f chore(deps): bump the rjsf group in /superset-frontend with 3 updates (#45004)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Joe Li <joe@preset.io>
2026-10-06 10:51:14 -07:00
Evan Rusackas
7b3e3ad6f7 fix(dashboard,explore): wire addWarningToast into download callers (#44154)
Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
2026-10-06 10:50:25 -07:00
Evan Rusackas
4578ab31ad refactor(list-view): eliminate any usage in ListView.tsx and TableCollection (#44208)
Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
2026-10-06 10:49:59 -07:00
Evan Rusackas
518bfbc511 fix(reports): propagate force flag to dashboard-tab permalink report URLs (#44775)
Co-authored-by: Ferjani Nasraoui <ferjani.nasraoui@europace.de>
Co-authored-by: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-06 10:49:39 -07:00
Evan Rusackas
bc1abf498d feat(bignumber): add an alignment control (#44554)
Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
2026-10-06 10:49:18 -07:00
Evan Rusackas
7b3ce2cf36 fix(themes): overwrite-import guard, missing index, dedupe extra_editors (follow-up to #42404) (#44362)
Co-authored-by: Claude Code <noreply@anthropic.com>
2026-10-06 10:49:07 -07:00
Evan Rusackas
6aebcd2452 fix(dashboards): close CSS validation gaps in dashboard import and edits (#43666)
Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
2026-10-06 10:47:17 -07:00
Israel Demetrios Diacov
e0ff107487 chore(i18n): update pt/pt_BR translations and rebuild translation index (#43022)
Co-authored-by: Evan Rusackas <evan@rusackas.com>
Co-authored-by: Israel Demetrios Diacov <israelddiacov@users.noreply.github.com>
Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
2026-10-06 10:46:30 -07:00
SBIN2010
7b463ddee0 feat(ag-grid-table): expand JSON values in table cells (#44907)
Co-authored-by: Enzo Martellucci <52219496+EnxDev@users.noreply.github.com>
2026-10-06 10:14:03 -07:00
dependabot[bot]
9a345ad011 chore(deps-dev): bump oxlint from 1.85.0 to 1.86.0 in /superset-websocket (#45005)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-10-06 10:10:57 -07:00
Mike Bridge
c30ae9fd12 fix(embedded): refuse guest row-level security on semantic views (#44987)
Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Co-authored-by: Mike Bridge <michael.bridge@ext.preset.io>
2026-10-06 10:07:46 -07:00
Đỗ Trọng Hải
71ee07e2e2 feat(ci): conditionally run CodeQL analysis workflows only when there are detected JS/Python file changes (#44699) 2026-10-06 23:36:01 +07:00
Rafael Benitez
31e3c9a194 fix(ag-grid-table): refresh totals when summary aggregation changes (#44612) 2026-10-06 11:30:19 -03:00
Amin Ghadersohi
8ff884059f fix(logging): stop logging tracebacks for client-side HTTP errors (#44666) 2026-10-06 08:05:46 -04:00
Amin Ghadersohi
05a3d4b880 feat(mcp): return the Big Number headline from chart and dashboard data (#44948) 2026-10-06 07:24:56 -04:00
Amin Ghadersohi
13493a3e47 fix(mcp): allow bounding dashboard dataset columns (#44951) 2026-10-06 07:24:36 -04:00
Mike Bridge
ce39d221aa fix(charts): return 404 when chart export hits an inaccessible dataset (#44900)
Co-authored-by: Mike Bridge <michael.bridge@ext.preset.io>
Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-10-05 20:40:36 -04:00
Amin Ghadersohi
2fdf756cf1 fix(mcp): avoid duplicate SQL execution results (#44949) 2026-10-05 20:36:41 -04:00
Elizabeth Thompson
0c6373cd9f fix(models): silence pandas silent-downcasting FutureWarning in normalize_df (#44897)
Co-authored-by: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-05 15:01:47 -07:00
Amin Ghadersohi
3e50c2c128 feat(mcp): support filter_range and filter_timegrain filters (#44893) 2026-10-05 16:10:51 -04:00
Beto Dealmeida
895bc20360 fix: full CSV download in AgGrid (#41696)
Co-authored-by: rusackas <evan@rusackas.com>
Co-authored-by: Evan Rusackas <evan@preset.io>
Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
2026-10-05 12:34:16 -07:00
Đỗ Trọng Hải
13861568aa chore(build): remove unused polyline Python dep (#44961) 2026-10-06 00:18:38 +07:00
dependabot[bot]
0616ba68af chore(deps-dev): bump the swc group in /superset-frontend with 2 updates (#44975)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-10-05 10:17:45 -07:00
Amin Ghadersohi
48ac1bf8c6 fix(mcp): return actionable authorized column suggestions (#44603) 2026-10-05 13:15:31 -04:00
Minwook Shin
09015bb4bf fix(explore): preserve pending column configuration edits (#44931) 2026-10-05 10:10:55 -07:00
Sam Firke
7fecceb690 chore: remove unused INCLUDE_FIREFOX build arg and dead screenshot config (#44245) 2026-10-05 13:10:18 -04:00
dependabot[bot]
31d2d06bba chore(deps): bump ws from 8.21.3 to 8.22.0 in /superset-websocket (#44969)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-10-05 09:53:45 -07:00
dependabot[bot]
83ea1d9e6f chore(deps-dev): bump vitest from 5.0.1 to 5.0.2 in /superset-websocket (#44970)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-10-05 09:53:38 -07:00
dependabot[bot]
303a68b8e2 chore(deps-dev): bump @types/node from 26.6.2 to 26.6.3 in /superset-websocket (#44971)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-10-05 09:53:33 -07:00
dependabot[bot]
c00f6a7aab chore(deps-dev): bump @types/node from 26.6.2 to 26.6.3 in /superset-embedded-sdk (#44972)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-10-05 09:53:27 -07:00
dependabot[bot]
d62fc92273 chore(deps-dev): bump vitest from 5.0.1 to 5.0.2 in /superset-embedded-sdk (#44974)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-10-05 09:53:20 -07:00
dependabot[bot]
343dcb0935 chore(deps): bump chalk from 6.0.0 to 6.0.1 in /superset-frontend (#44976)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-10-05 09:53:15 -07:00
dependabot[bot]
fee8e1b9e5 chore(deps-dev): bump webpack-sources from 3.5.3 to 3.6.0 in /superset-frontend (#44978)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-10-05 09:53:10 -07:00
dependabot[bot]
bc69daa232 chore(deps-dev): bump @types/node from 26.6.2 to 26.6.3 in /superset-frontend (#44979)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-10-05 09:53:04 -07:00
dependabot[bot]
7a62b3a653 chore(deps-dev): bump postcss-styled-syntax from 0.7.2 to 0.7.3 in /superset-frontend (#44980)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-10-05 09:52:58 -07:00
dependabot[bot]
3ac856ceb1 chore(deps): bump chromaui/action from 18.7.3 to 18.10.1 (#44973) 2026-10-05 23:26:33 +07:00
dependabot[bot]
46b9ba9587 chore(deps): bump dawidd6/action-download-artifact from 25 to 26 (#44977) 2026-10-05 23:25:56 +07:00
Daniel Alyoshin
7a2913e2db fix(sqlite): write midnight as a bare date for DATE columns in time filters (#44805)
Co-authored-by: Amin Ghadersohi <5183956+aminghadersohi@users.noreply.github.com>
2026-10-04 19:51:11 -04:00
Evan Rusackas
b5b8a9f3bd fix(dataset-editor): preserve edits across sort and sync external SQL changes (#44858)
Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
2026-10-04 16:30:14 -07:00
Evan Rusackas
68f19947a8 docs(mcp): document semantic-layer MCP tools (#44130)
Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
2026-10-03 21:57:29 -07:00
Joe Li
ccae778498 fix(mypy): ignore false-positive union-attr on Slice.uuid.in_() (#44944)
Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
2026-10-04 11:48:28 +07:00
Amin Ghadersohi
cdafffeacf fix(deps): restore dompurify 3.4.16 in frontend lockfile (#44960) 2026-10-04 09:58:29 +07:00
Evan Rusackas
5d158e7e79 test(cratedb): cover epoch-ms timestamp decoding against a real instance (#44904)
Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
2026-10-03 14:01:51 -07:00
Evan Rusackas
e3bdb3894c test(oracle): cover cancel-query against a real running statement (#44908)
Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
2026-10-03 13:59:53 -07:00
Evan Rusackas
e72d63b20d test(mysql): cover require_mysql_tls fail-closed and verified-TLS paths (#44910)
Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
2026-10-03 13:57:44 -07:00
Evan Rusackas
acdd390b35 fix(frontend): finish migrating off direct antd imports, enforce it in custom rules (#44927)
Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
2026-10-03 13:55:58 -07:00
Evan Rusackas
3fccf29946 test(opensearch): cover pagination and Content-Type regression against a real instance (#44924)
Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
2026-10-03 11:49:00 -07:00
Jay Masiwal
f2ff458acd feat: Add GUI for label_colors in Dashboard Properties Modal (#39434)
Co-authored-by: Evan Rusackas <evan@rusackas.com>
Co-authored-by: Jay Masiwal <jaymasiwal@users.noreply.github.com>
Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
2026-10-03 20:11:44 +03:00
Amin Ghadersohi
549508b340 fix(mcp): preserve calling constraints in compact tool discovery (#44656)
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-03 05:35:46 -04:00
dependabot[bot]
98be2d17da chore(deps-dev): bump clickhouse-connect from 1.8.0 to 1.9.0 (#44934)
Signed-off-by: dependabot[bot] <support@github.com>
Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-10-03 02:19:53 -07:00
dependabot[bot]
291d098917 chore(deps): bump sqlglot from 30.18.0 to 30.19.0 (#44935)
Signed-off-by: dependabot[bot] <support@github.com>
Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-10-03 02:19:47 -07:00
dependabot[bot]
8ba2667967 chore(deps): bump holidays from 0.104 to 0.105 (#44936)
Signed-off-by: dependabot[bot] <support@github.com>
Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-10-03 02:19:41 -07:00
dependabot[bot]
dbd3e28aa3 chore(deps-dev): update databricks-sql-connector requirement from <4.6.0,>=4.5.0 to >=4.6.0,<4.7.0 (#44937)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-10-03 02:19:36 -07:00
dependabot[bot]
3960407334 chore(deps): bump cachetools from 7.1.8 to 7.2.0 (#44939)
Signed-off-by: dependabot[bot] <support@github.com>
Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-10-03 02:19:30 -07:00
dependabot[bot]
a65fe06c51 chore(deps-dev): update google-cloud-storage requirement from >=3.14.1 to >=3.15.0 (#44940)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-10-03 02:19:24 -07:00
dependabot[bot]
3a9becd5cb chore(deps): bump markdown from 3.10.3 to 3.11 (#44941)
Signed-off-by: dependabot[bot] <support@github.com>
Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-10-03 02:19:19 -07:00
Amin Ghadersohi
afa98f3391 perf(deletion-retention): one window pass for repeat predicate (#44349) 2026-10-03 04:58:35 -04:00
Evan Rusackas
f1ae8909d8 fix(import): remove duplicate config redefinition in load_configs (#44932)
Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
2026-10-03 17:53:57 +10:00
Sepuri Sai Krishna
ea79c63e87 fix(post-processing): stop treating gaps as zero for cumprod, cummin and cummax (#44828) 2026-10-02 22:22:50 -07:00
Amin Ghadersohi
81466987cb fix(mcp): use create_proxy in simple_proxy for fastmcp 4 compatibility (#44787) 2026-10-02 22:21:39 -07:00
Endi Monan
6966c1f6cc fix(cartodiagram): share Pie colors across locations in Explore (#44794) 2026-10-02 22:17:49 -07:00
Nguyen Dang Trung Tien
10356c30ed fix(mcp): stop partial-update tools from advertising null defaults (#44573)
Co-authored-by: Claude Opus 5 <noreply@anthropic.com>
2026-10-02 22:16:12 -07:00
hahaok
d668928394 fix(sql-lab): use function valueGetter for GridTable row numbers (#41574)
Co-authored-by: chenshaobo <chenshaobo@yjsafe.cn>
Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Evan Rusackas <evan@rusackas.com>
2026-10-02 22:14:33 -07:00
Piyush Raj
87bb752814 fix(select): remove Space wrapper from optionRender to fix option label truncation (#44357) 2026-10-02 22:05:55 -07:00
Joe Li
743a27f7ed fix(chart): sort Heatmap Y-axis by default when unset (#44588)
Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
Co-authored-by: Evan Rusackas <evan@rusackas.com>
Co-authored-by: Evan Rusackas <evan@preset.io>
2026-10-02 22:03:57 -07:00
Dennis Khylkouski
62ab4cae23 fix(sql-lab): avoid duplicate generated result column names (#44189) 2026-10-02 22:03:18 -07:00
Sepuri Sai Krishna
2220f53d9d fix(chart): accept quarter and day in end-of time ranges (#43204) 2026-10-02 21:46:07 -07:00
Đỗ Trọng Hải
ba453d3cb4 fix(sec): sanitize HTML text before shown as impact item's label (#43825) 2026-10-03 11:44:16 +07:00
Evan Rusackas
646de3a46b test(clickhouse): cover GROUP BY ALL against a real instance (#40482) (#44879)
Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
2026-10-02 19:43:21 -07:00
Evan Rusackas
7260916b90 test(dashboard): cover "View as table" end-to-end for a view-as-table-only role (#44881)
Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
2026-10-02 19:42:49 -07:00
Amin Ghadersohi
8d026b4a56 fix(mcp): skip dashboard live updates when websockets are disabled or realtime access is missing (#44796) 2026-10-03 11:48:02 +10:00
Evan Rusackas
11bdbc91f3 feat(ci): add Chromatic visual regression testing for Storybook (#44103)
Co-authored-by: Claude Code <noreply@anthropic.com>
2026-10-02 18:26:28 -07:00
Evan Rusackas
15bde2a301 fix(native-filters): keep cascade dependency gate in sync with live filter type (#44366)
Co-authored-by: Superset Dev <dev@superset.apache.org>
Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
2026-10-02 18:26:23 -07:00
Evan Rusackas
52d8b405c9 fix(echarts): recognize Date and ISO-string temporal x-axis values in getXAxisDomain (#44818)
Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
2026-10-02 18:26:15 -07:00
Amin Ghadersohi
3fa06db85b fix(mcp): include feature_availability in instance://metadata resource (#44891) 2026-10-02 19:50:28 -04:00
Sam Firke
396030d87e docs: remove stale Selenium references after Playwright-only switch (#44243) 2026-10-02 18:09:31 -04:00
Elizabeth Thompson
f9d67e1a11 fix: downgrade deprecated query_object field warnings to info (#43520) 2026-10-02 15:01:50 -07:00
Elizabeth Thompson
ef2c05c090 fix(security): guard is_guest_user against NoAuthorizationError on unauthenticated error paths (#43826)
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
2026-10-02 15:01:46 -07:00
Elizabeth Thompson
47ba8fc801 fix(api): return 401 not 500 for auth errors in CurrentUserRestApi (SC-120417) (#44213) 2026-10-02 15:01:41 -07:00
Elizabeth Thompson
ece8b8bd7b fix(import): avoid UnboundLocalError when load_yaml fails during load_configs (SC-121288) (#44390)
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
2026-10-02 15:01:37 -07:00
Elizabeth Thompson
3f7d01aaaf fix(reports): catch TypeError when validating non-string extra.dashboard.anchor (#44404)
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
2026-10-02 15:01:31 -07:00
Elizabeth Thompson
7fea33761b fix(chart): wrap raw pandas TypeError/DataError from post-processing as QueryObjectValidationError (#44463) 2026-10-02 15:01:26 -07:00
Sepuri Sai Krishna
2872d16ee6 test(frontend): await the userEvent calls that needed restructuring (#44799) 2026-10-02 14:56:47 -07:00
Joe Li
bc3698b5d6 test(explore): port remaining deleted Cypress explore specs to RTL (#44838)
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-02 11:25:34 -07:00
Joe Li
240a4267f8 test(explore): add datasourcesReducer unit tests (#44840)
Co-authored-by: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-02 10:33:56 -07:00
Joe Li
f6155b9e9e fix(dashboard): show the configured refresh warning alongside the limit error (#44836)
Co-authored-by: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-02 10:28:43 -07:00
Joe Li
e32493c9d9 test(explore): add saveModalReducer unit tests (#44839)
Co-authored-by: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-02 10:28:34 -07:00
Joe Li
03b61cc2d8 test(explore): add fetchTopNValues unit tests (#44841)
Co-authored-by: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-02 10:25:35 -07:00
Joe Li
8849542bda test(explore): cover viz switch and control dependency logic (#44842)
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-02 10:25:24 -07:00
Joe Li
8d25777b99 test(plugin-chart-table): cover server-side sort, query mode controls, and sort ordering (#44845)
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-02 10:25:11 -07:00
Joe Li
b0ac9ef61f test(explore): cover color scheme selection, BigNumber subheader/trendline, and WorldMap bubbles (#44846)
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-02 10:24:47 -07:00
Luiz Otavio
ef64bacbaa feat(chart): cross-filter by x-axis label on charts with dimensions (#44869)
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-02 10:16:28 -07:00
Amin Ghadersohi
e606cadff7 chore(mcp): fix malformed tool and prompt docstrings (#44572)
Co-authored-by: Claude Opus 5 <noreply@anthropic.com>
2026-10-02 12:49:19 -04:00
Krishna kumar singh
c1bb129c21 fix(change-detector): classify changed files by language, not directory (#44895) 2026-10-02 23:41:05 +07:00
Joe Li
e048389872 test(explore): cover time range frames, comparison labels, and metric popover state (#44847)
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-02 09:10:45 -07:00
Alasdair Brown
0fdfd6660e docs(databases): add ClickHouse Managed Postgres (#44870)
Co-authored-by: Đỗ Trọng Hải <41283691+hainenber@users.noreply.github.com>
2026-10-02 22:25:27 +07:00
Joe Li
10d06859b8 fix(ci): floor pyfakefs at 5.7.4 to fix Python 3.13 pytest-cov crash (#44853)
Co-authored-by: Claude Opus 5 <noreply@anthropic.com>
2026-10-02 21:08:54 +07:00
Đỗ Trọng Hải
005edd7423 chore(build): de-vendor helm/chart-testing-action GHA (#44722)
Signed-off-by: hainenber <dotronghai96@gmail.com>
2026-10-02 20:59:36 +07:00
dependabot[bot]
7bb2964941 chore(deps): bump dawidd6/action-download-artifact from 24 to 25 (#44884)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-10-02 20:58:55 +07:00
Younes Beriane
1b0a37cf22 fix(users): stop update_me setting self-referential changed_by_fk (#44866)
Co-authored-by: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-02 15:10:55 +02:00
Mallikarjuna Reddy Nimmakayala
ba3500e0e9 feat(export/import): add annotation layer export/import support for charts and dashboards (#43232)
Co-authored-by: rusackas <evan@rusackas.com>
Co-authored-by: Evan Rusackas <evan@preset.io>
Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
Co-authored-by: Enzo Martellucci <enzomartellucci@gmail.com>
Co-authored-by: Enzo Martellucci <52219496+EnxDev@users.noreply.github.com>
2026-10-02 15:05:18 +02:00
Evan Rusackas
25956d6c44 chore(superset-ui-chart-controls): forward-compat fixes for TypeScript 6.0 (#44877)
Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
2026-10-02 03:53:24 -07:00
dependabot[bot]
27c9213cca chore(deps-dev): bump oxlint-tsgolint from 7.0.2002 to 7.0.2003 in /superset-websocket (#44882)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-10-02 00:57:45 -07:00
dependabot[bot]
95faf3a6a0 chore(deps-dev): bump oxlint-tsgolint from 7.0.2002 to 7.0.2003 in /docs (#44883)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-10-02 00:57:40 -07:00
dependabot[bot]
c43770e12d chore(deps-dev): bump webpack-sources from 3.5.1 to 3.5.3 in /superset-frontend (#44885)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-10-02 00:57:35 -07:00
dependabot[bot]
dfccc2e1e9 chore(deps-dev): bump minimizer-webpack-plugin from 5.11.0 to 5.12.0 in /superset-frontend (#44886)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-10-02 00:57:30 -07:00
dependabot[bot]
6559b483f2 chore(deps): bump maplibre-gl from 6.8.0 to 6.11.2 in /superset-frontend (#44887)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-10-02 00:57:24 -07:00
dependabot[bot]
4a19948659 chore(deps): bump dom-to-image-more from 3.10.2 to 3.11.0 in /superset-frontend (#44888)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-10-02 00:57:18 -07:00
dependabot[bot]
338e640df9 chore(deps): bump dompurify from 3.4.15 to 3.4.16 in /superset-frontend (#44889)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-10-02 00:57:12 -07:00
dependabot[bot]
edc91b86e5 chore(deps-dev): bump baseline-browser-mapping from 2.11.25 to 2.11.26 in /superset-frontend (#44890)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-10-02 00:57:07 -07:00
Amin Ghadersohi
9c7c96fe05 fix(logging): register LogRestApi only once (#44732) 2026-10-02 02:28:52 -04:00
Mike Bridge
b94f88ffbb fix(semantic-layer): require explicit member identity reselection (#44370) 2026-10-02 15:10:18 +10:00
Mike Bridge
6d97cde59a fix(semantic-layers): export/import semantic-view charts by typed reference (#44396) 2026-10-02 15:09:51 +10:00
Mike Bridge
21b937b59d fix(retention): skip models without purge policies before scanning (#44874) 2026-10-02 15:09:06 +10:00
Amin Ghadersohi
342a8f1e4e fix(mcp): report a chart's live dataset id and name (#44681) 2026-10-01 23:19:32 -04:00
Evan Rusackas
db56168a86 ci: require babel-extract to pass before merging master (#44543)
Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
2026-10-01 20:12:46 -07:00
Amin Ghadersohi
f7badeb095 fix(mcp): execute_sql request limit caps, never raises, an explicit SQL LIMIT (#44604)
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-01 23:09:17 -04:00
Archita-kale
e770202034 fix(postprocessing): preserve NULL index values through pivot() (#43547) (#43693)
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Evan Rusackas <evan@rusackas.com>
Co-authored-by: Evan Rusackas <evan@preset.io>
Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
2026-10-01 20:03:58 -07:00
Amin Ghadersohi
6a832cb210 fix(mcp): enforce dashboard filter scope on dataset, SQL and chart tool calls (#44800) 2026-10-01 21:31:32 -04:00
dependabot[bot]
3f6d4cd689 chore(deps-dev): update google-cloud-storage requirement from >=1.37 to >=3.14.1 (#44693)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-10-01 18:16:37 -07:00
Bexultan
abdf2e6c70 fix(home): redirect users without an ID before rendering (#44456) 2026-10-01 17:49:38 -07:00
dependabot[bot]
c82f97b69d chore(deps): bump deck.gl and luma.gl from 9.2.5 to 9.4.0 in /superset-frontend (#42608)
Co-authored-by: Evan Rusackas <evan@rusackas.com>
Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
2026-10-01 17:36:33 -07:00
hadi mobarra
217e4c0223 fix(frontend): use html2canvas for chart image export on Safari (#44529) 2026-10-01 16:52:15 -07:00
Greg Neighbors
446853004a fix(mcp): keep a bubble chart's colors and row limit across updates (#44618)
Co-authored-by: Greg Neighbors <gregneighbors@Gregs-Air-2.lan>
Co-authored-by: Claude Opus 5 <noreply@anthropic.com>
2026-10-01 16:51:47 -07:00
Viktor Högberg
2c72d4d4fe fix(mcp): use DEFAULT_PAGE_SIZE constant in list_charts test (#44786) 2026-10-01 16:51:04 -07:00
mattmc3
4ae8fe7122 fix: size 'Drill to detail' table header correctly (#44807) 2026-10-01 16:50:28 -07:00
Amin Ghadersohi
33292f249d feat(mcp): support tab-scoped dashboard layouts (#44797) 2026-10-01 18:42:33 -04:00
Amin Ghadersohi
0a0a1974c5 test(playwright): select existing dashboards without creating duplicates (#44856) 2026-10-01 18:32:19 -04:00
Amin Ghadersohi
a12d1b8e12 fix(mcp): enforce tool deadlines without blocking the server (#44581)
Co-authored-by: Evan Rusackas <evan@rusackas.com>
Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
2026-10-01 18:30:25 -04:00
SBIN2010
e5ec22ab3e feat(table): add multi-level column header groups (#43938)
Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Enzo Martellucci <enzomartellucci@gmail.com>
Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-10-02 01:05:04 +03:00
Amin Ghadersohi
ee39954adb fix(oauth2): refresh a token rejected when a connection opens (#44765) 2026-10-01 17:46:30 -04:00
Joe Li
8ab7a85a3d chore(e2e): remove Cypress infrastructure (#44829)
Co-authored-by: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-01 11:32:51 -07:00
dependabot[bot]
74d885233d chore(deps): bump github/codeql-action/init from 4.38.1 to 4.38.2 (#44860)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Joe Li <joe@preset.io>
2026-10-01 10:39:30 -07:00
Evan Rusackas
b98e19f6eb chore: drop cypress-matrix-required from required status checks (#44854)
Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
2026-10-01 06:39:09 -07:00
Evan Rusackas
8b643519ca chore: add sadpandajoe as a codeowner for .asf.yaml (#44855)
Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
2026-10-01 06:38:40 -07:00
dependabot[bot]
6418473be1 chore(deps): bump github/codeql-action/upload-sarif from 4.38.1 to 4.38.2 (#44859)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-10-01 01:09:36 -07:00
dependabot[bot]
4f9c22db6d chore(deps): bump github/codeql-action/analyze from 4.38.1 to 4.38.2 (#44861)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-10-01 01:09:24 -07:00
dependabot[bot]
3109cfaf6d chore(deps): bump @googleapis/sheets from 18.0.0 to 18.0.1 in /superset-frontend (#44862)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-10-01 01:09:17 -07:00
Amin Ghadersohi
4911dbe00b fix(doris): offer the connection form by matching the installed driver (#44736) 2026-10-01 02:28:53 -04:00
Vikash Kumar
4cdd680f39 fix: increase dataset edit modal size (#38215) (#39257)
Co-authored-by: codeant-ai-for-open-source[bot] <244253245+codeant-ai-for-open-source[bot]@users.noreply.github.com>
Co-authored-by: rusackas <evan@rusackas.com>
Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
Co-authored-by: Evan Rusackas <evan@preset.io>
2026-09-30 21:33:05 -07:00
Evan Rusackas
d2fb52ac83 fix(auth): remove the legacy FAB password reset views and move password resets into the SPA (#44626)
Co-authored-by: jayvenn21 <jvennamreddy@gmail.com>
Co-authored-by: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-30 20:23:16 -07:00
Amin Ghadersohi
924343e3ee fix(gantt): prevent y-axis category labels from being clipped (#44321) 2026-09-30 19:58:52 -07:00
47th
e91ce19a60 fix(auth): drain flash messages on the login page (#44605) 2026-09-30 19:52:26 -07:00
chadek
90fc473583 test(embedded-sdk): cross-document test rig for the navigation fix (#44608)
Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-30 19:52:06 -07:00
Amin Ghadersohi
bbf00956d4 fix(mcp): prioritize exact tool names in BM25 search (#44682) 2026-09-30 19:51:09 -07:00
Amin Ghadersohi
855bb4e21c fix(gsheets): align service-account validation and serialize upload dates (#44695) 2026-09-30 19:50:52 -07:00
Amin Ghadersohi
5cf8213354 fix(databricks): keep the user's OAuth2 token and extra connect_args; re-auth on HTTP 401 (#44705) 2026-09-30 19:50:32 -07:00
Amin Ghadersohi
8baa9c1f2e fix(db2): accept sqlglot's parse_mod in the DB2 term parser (#44708) 2026-09-30 19:50:17 -07:00
Amin Ghadersohi
dc0e306a24 fix(elasticsearch): classify byte, short, half_float, scaled_float and unsigned_long columns (#44713) 2026-09-30 19:49:48 -07:00
Amin Ghadersohi
d2101c8dba fix(exasol): classify common server errors (#44721) 2026-09-30 19:49:26 -07:00
Amin Ghadersohi
fd524f4b21 fix(sqllab): preserve exact decimals in results and exports (#44739) 2026-09-30 19:48:43 -07:00
Shaitan
f02f53df23 fix(sql): reject client-side file-transfer statements in query execution (#44496)
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
Co-authored-by: Amin Ghadersohi <amin.ghadersohi@gmail.com>
Co-authored-by: Evan Rusackas <evan@rusackas.com>
Co-authored-by: Evan Rusackas <evan@preset.io>
2026-09-30 19:37:23 -07:00
Gaston Laterza
d80fcfc02a fix(i18n): make babel_update.sh .pot normalization actually run (#44395) 2026-10-01 08:04:46 +07:00
Gaurav Dubey
bbf0fa5f42 fix(core): stop discarding API errors that quote an HTML tag (#42489)
Co-authored-by: Evan Rusackas <evan@rusackas.com>
Co-authored-by: Evan Rusackas <evan@preset.io>
Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-30 17:03:04 -07:00
Elizabeth Thompson
883e43ee2d fix(sqllab): ignore non-object template_params in format_sql instead of 500 (#44826)
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-09-30 15:01:29 -07:00
Joe Li
51378f529d fix(matrixify): fan metrics-axis selection into multi-query fields (#44629)
Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-30 14:53:33 -07:00
dependabot[bot]
e90b9fb751 chore(deps): bump dompurify from 3.4.15 to 3.4.16 in /superset-frontend in the security group across 1 directory (#44830)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-09-30 13:25:47 -07:00
Evan Rusackas
65a6012843 ci(python): run the Python-next canary nightly, bump to 3.13 (#44767)
Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-30 13:17:54 -07:00
Amin Ghadersohi
88efac09c6 fix(mcp): align histogram and waterfall query contracts (#44744) 2026-09-30 16:13:38 -04:00
Joe Li
3b06cadca4 fix(csv-import): add primary key when MySQL requires one (#44411)
Co-authored-by: Claude Opus 5 <noreply@anthropic.com>
Co-authored-by: Evan Rusackas <evan@rusackas.com>
Co-authored-by: Evan Rusackas <evan@preset.io>
2026-09-30 12:51:51 -07:00
Mike Bridge
8a7be3b327 fix: avoid provider calls when rendering datasource access denials (#44432) 2026-09-30 15:51:27 -04:00
dependabot[bot]
af794f8c93 chore(deps): bump the security group across 1 directory with 2 updates (#44831)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-10-01 01:17:22 +07:00
Đỗ Trọng Hải
21d46d52df chore(build): remove unused dependencies in docs and superset-frontend (#44697)
Signed-off-by: hainenber <dotronghai96@gmail.com>
2026-10-01 00:57:55 +07:00
Sepuri Sai Krishna
e93f8ce638 test(semantic-views): wait for views refetches to settle before selecting a view (#44792) 2026-10-01 00:37:05 +07:00
dependabot[bot]
929c44097f chore(deps): bump the security group across 1 directory with 2 updates (#44824)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-09-30 10:15:39 -07:00
Amin Ghadersohi
5668faf18e fix(doris): quarter grain, SSL toggle, parameters URI, error mapping and column types (#44718) 2026-09-30 13:13:32 -04:00
Amin Ghadersohi
3f408238ba refactor(mcp): one plugin lifecycle contract and compact chart config schemas (#44746) 2026-09-30 13:04:22 -04:00
shaurya
3f8a23622c perf(security): memoise the user subject lookup within a request (#44017)
Co-authored-by: Shaurya <19599684+no-hup@users.noreply.github.com>
Co-authored-by: Evan Rusackas <evan@rusackas.com>
Co-authored-by: Evan Rusackas <evan@preset.io>
Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-30 16:18:14 +02:00
dependabot[bot]
ba62c86725 chore(deps): bump brace-expansion from 5.0.9 to 5.0.12 in /superset-frontend/cypress-base (#44813)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-09-30 07:09:01 -07:00
Amin Ghadersohi
8c3b985c22 fix(db2): set current_schema to the catalog name of the selected schema (#44706) 2026-10-01 00:02:15 +10:00
Amin Ghadersohi
3e36b242a6 fix(datafusion): render temporal SQL that DataFusion accepts (#44700) 2026-10-01 00:01:53 +10:00
dependabot[bot]
89759eba5d chore(deps): bump react-window from 2.3.2 to 2.3.3 in /superset-frontend (#44820)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-09-30 03:49:31 -07:00
dependabot[bot]
3e8cec55c4 chore(deps): bump undici from 7.29.0 to 7.30.0 in /superset-frontend in the security group across 1 directory (#44809)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Đỗ Trọng Hải <41283691+hainenber@users.noreply.github.com>
2026-09-30 00:28:56 -07:00
Amin Ghadersohi
7154f2790a fix(oracle): map Oracle NUMBER, BINARY_FLOAT/DOUBLE and CLOB column types (#44685)
Co-authored-by: Daniel Vaz Gaspar <danielvazgaspar@gmail.com>
2026-09-30 17:06:13 +10:00
Amin Ghadersohi
16271bbfbb fix(databricks): stop the string-type patch writing SQLAlchemy's shared colspecs (#44707) 2026-09-30 01:17:47 -04:00
Amin Ghadersohi
542e466183 fix(gsheets): pass the OAuth2 token and delegation subject through connect_args (#44709) 2026-09-30 01:17:20 -04:00
Amin Ghadersohi
005eadcacd fix(opensearch): page drill-to-detail samples with the OpenSearch SQL response format (#44703) 2026-09-30 01:17:05 -04:00
Amin Ghadersohi
773f976b6d fix(dynamodb): render time bounds as ISO 8601 so sub-day ranges match stored timestamps (#44702) 2026-09-30 01:16:55 -04:00
Amin Ghadersohi
48a3b02d12 fix(mysql): require TLS when SSL is requested (#44723) 2026-09-30 01:16:35 -04:00
Joe Li
517e94d106 fix(echarts): fix sparse sub-daily bar sizing and x-axis mislabeling (#44628)
Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-29 21:14:13 -07:00
Sanyam Kumat
92b0cf82ca fix(echarts-timeseries): convert xAxisLabelInterval string '0' to number 0 (#43729)
Co-authored-by: sanyamk23 <sanyamk23@gmail.com>
Co-authored-by: Evan Rusackas <evan@rusackas.com>
Co-authored-by: Evan Rusackas <evan@preset.io>
Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-29 20:38:48 -07:00
Joe Li
df450dc2a2 fix(mypy): narrow nullable uuid before RestoreVersionCommand calls (#44789)
Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-29 20:33:57 -07:00
aipiJuancho
6d1bfaa4cd fix(dashboard): forward clearAllTriggers from vertical filter bar to FilterControls (#44531)
Signed-off-by: aipiJuancho <juanmpp@gmail.com>
2026-09-29 20:07:46 -07:00
dependabot[bot]
1dbb7aaace chore(deps): bump fast-uri from 3.1.7 to 3.1.8 in /docs in the security group across 1 directory (#44814)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-09-29 19:05:46 -07:00
dependabot[bot]
14b87366bc chore(deps-dev): bump brace-expansion from 5.0.9 to 5.0.12 in /superset-embedded-sdk in the security group across 1 directory (#44812)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-09-29 19:05:09 -07:00
Mike Bridge
8bd268f9ce docs(versioning): screenshots, retention, and permission guidance for version history and archives (#44190)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
2026-09-29 18:54:28 -07:00
dependabot[bot]
e1daa2f7e1 chore(deps-dev): bump ip-address from 10.4.0 to 10.7.2 in /superset-frontend in the security group across 1 directory (#44774)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Đỗ Trọng Hải <41283691+hainenber@users.noreply.github.com>
2026-09-29 16:03:49 -07:00
Joe Li
6b2d3b1511 fix(auth): gate registration UI by auth type, not just the flag (#44368)
Co-authored-by: Claude Opus 5 <noreply@anthropic.com>
Co-authored-by: Evan Rusackas <evan@preset.io>
Co-authored-by: rusackas <evan@rusackas.com>
2026-09-29 16:02:16 -07:00
Amin Ghadersohi
63c004fe66 feat(mcp): add a permission-filtered asset catalog tool (#44694) 2026-09-30 08:34:30 +10:00
Evan Rusackas
9a5faa8af5 refactor(db_engine_specs): derive epoch method dispatch from EPOCH_FORMATS (#44772)
Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-29 15:17:05 -07:00
Elizabeth Thompson
c6e7bd47a4 fix(dashboard): catch JSONDecodeError on malformed default_filters in set_dash_metadata (#44716)
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-29 15:01:31 -07:00
Elizabeth Thompson
afe8b14d79 fix(database): coerce LazyString validation messages to str in validate_parameters (#44802)
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-09-29 15:01:27 -07:00
Gaston Laterza
cba2574241 fix(i18n): clear 1,188 fuzzy translations with broken placeholders (#44611)
Co-authored-by: Evan Rusackas <evan@preset.io>
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-29 14:53:51 -07:00
Amin Ghadersohi
f639b22c6c fix(api): return 4xx from oauth2 callback errors, not 500 (#44769) 2026-09-29 10:31:25 -07:00
Amin Ghadersohi
f6a7802c81 fix(database): mask secrets in create and update responses (#44733) 2026-09-29 10:30:44 -07:00
Amin Ghadersohi
041f84c6f3 fix(clickhouse): rename SELECT aliases that shadow a source column (#44715) 2026-09-29 10:30:03 -07:00
Amin Ghadersohi
2b050596c0 fix(databricks): derive omitted OAuth2 endpoints from the workspace host (#44710) 2026-09-29 10:20:17 -07:00
Amin Ghadersohi
3e9bd8b45b fix(dynamodb): map NUMBER columns and order charts by metric expressions (#44711) 2026-09-29 10:19:25 -07:00
Amin Ghadersohi
03227878ba fix(db_engine_specs): don't fail DDL/DML when the statement has no result set (#44714) 2026-09-29 10:18:47 -07:00
Amin Ghadersohi
732e6551e0 fix(cratedb): recognize reflected timestamp types for epoch milliseconds (#44720) 2026-09-29 10:17:50 -07:00
Amin Ghadersohi
27c6f5a8d9 fix(db_engine_specs): restore shared compiler state after loading third-party dialects (#44686) 2026-09-29 09:31:27 -07:00
Amin Ghadersohi
2eb620e737 fix(databases): validate schema before listing tables (#44683) 2026-09-29 09:31:22 -07:00
Amin Ghadersohi
c51f192be6 fix(sqllab): stringify integer columns that overflow int64 (#44743) 2026-09-29 09:31:17 -07:00
Rakesh Pai
45f4dd8009 fix: use database rollups for pivot table subtotals in Actual Values mode (#44631) 2026-09-29 09:19:44 -07:00
Alexandru Soare
e65de1fc0f fix(chart-data): roll back db.session after swallowed metadata-DB errors (#44653) 2026-09-29 18:05:03 +03:00
dependabot[bot]
3d436f579c chore(deps-dev): bump oxlint from 1.83.0 to 1.85.0 in /superset-websocket (#44776)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-09-29 07:31:50 -07:00
dependabot[bot]
72c8969ce3 chore(deps-dev): bump oxfmt from 0.68.0 to 0.70.0 in /docs (#44780)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-09-29 07:31:46 -07:00
dependabot[bot]
ef99eeac8e chore(deps-dev): bump oxlint from 1.83.0 to 1.85.0 in /superset-frontend (#44783)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-09-29 07:31:42 -07:00
dependabot[bot]
ce86ac9aef chore(deps-dev): bump jsdom from 30.1.0 to 30.1.1 in /superset-embedded-sdk (#44777)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-09-29 02:54:15 -07:00
dependabot[bot]
4422cf3877 chore(deps-dev): bump oxfmt from 0.68.0 to 0.70.0 in /superset-websocket (#44778)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-09-29 02:54:11 -07:00
dependabot[bot]
b8e4017505 chore(deps-dev): bump the typescript-eslint group in /superset-frontend with 2 updates (#44779)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-09-29 02:54:06 -07:00
dependabot[bot]
5150266456 chore(deps-dev): bump oxlint from 1.83.0 to 1.85.0 in /docs (#44781)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-09-29 02:54:00 -07:00
dependabot[bot]
f837f83970 chore(deps): bump react-window from 2.3.1 to 2.3.2 in /superset-frontend (#44782)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-09-29 02:53:56 -07:00
dependabot[bot]
983d00165a chore(deps-dev): bump jsdom from 30.1.0 to 30.1.1 in /superset-frontend (#44784)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-09-29 02:53:51 -07:00
dependabot[bot]
4a51382f81 chore(deps-dev): bump oxfmt from 0.68.0 to 0.70.0 in /superset-frontend (#44785)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-09-29 02:53:47 -07:00
İbrahim Ercan
e7275f15ae feat(echarts): double-click chart legend to isolate a series (#44562)
Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Evan Rusackas <evan@rusackas.com>
Co-authored-by: Evan Rusackas <evan@preset.io>
Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-29 09:57:32 +03:00
Amin Ghadersohi
ca3d356089 feat(oracle): support cancelling running queries in SQL Lab (#44704) 2026-09-29 15:05:38 +10:00
Amin Ghadersohi
c40eba410b fix(kylin): time grains and labels that work on Calcite and Spark pushdown (#44712) 2026-09-29 15:05:12 +10:00
Amin Ghadersohi
19ea6b231c fix(mcp): hide internal sanitization warnings from input schemas (#44602) 2026-09-29 15:04:50 +10:00
Ilya Bazhenov
49e71752e4 fix(excel): keep wall-clock datetimes when exporting timezones (#44360)
Co-authored-by: CICD Bot <cicd@local.test>
Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Superset Dev <dev@superset.apache.org>
Co-authored-by: Evan Rusackas <evan@preset.io>
Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-28 21:46:14 -07:00
Sakshi Patil
e86af4ee95 fix: DashboardAccessFilter to preserve dashboards with empty layouts (#44256)
Co-authored-by: Claude Code <noreply@anthropic.com>
Co-authored-by: Evan Rusackas <evan@preset.io>
2026-09-28 21:45:48 -07:00
Amin Ghadersohi
db87cd2a2b fix(dataframe): normalize trusted nonfinite scalars (#44219) 2026-09-28 21:45:20 -07:00
Mayank Aggarwal
1e91b93377 refactor(dashboard): simplify cross-filter scope resolution (#38762)
Co-authored-by: Evan Rusackas <evan@rusackas.com>
Co-authored-by: Evan Rusackas <evan@preset.io>
Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-28 21:44:57 -07:00
Deepak Jain (DJ)
cfeceedb60 fix(types): preserve shared control registry option types (#44559)
Signed-off-by: Deepak Jain <deepujain@gmail.com>
2026-09-28 21:42:15 -07:00
Daniel Alyoshin
b4f79f94f8 fix(d1): support SQLAlchemy 2 with sqlalchemy-d1 0.2.0 (#44505) 2026-09-28 21:34:51 -07:00
Ujjwal Jain
33d24f496c fix(ci): fall back to the lean Dockerfile target when publishing a pre-#44100 release (#44248)
Co-authored-by: Evan Rusackas <evan@preset.io>
2026-09-28 21:24:25 -07:00
Donny Peeters
0e5a3b2121 feat(motherduck): set session_name on user impersonation (#42705)
Co-authored-by: Joe Li <joe@preset.io>
2026-09-28 21:16:19 -07:00
Joe Li
d3f5726489 fix(echarts): stop the zoom controls overlapping the legend selector (#44367)
Co-authored-by: Claude Opus 5 <noreply@anthropic.com>
2026-09-28 20:51:50 -07:00
Nguyen Dang Trung Tien
1fdb9171b7 fix(explore): include dataset editors in the Explore datasource payload (#44633)
Co-authored-by: Claude Opus 5 <noreply@anthropic.com>
2026-09-28 20:47:25 -07:00
Devansh Bhargava
c67c88fbf1 fix(reports): drop the sign of negative numbers that round to zero in text reports (#44644) 2026-09-28 20:39:36 -07:00
chadek
7cb19e2b50 fix(embedded-sdk): re-authenticate the iframe after a navigation internal to the dashboard (#44470)
Signed-off-by: Fabrice Meyer <meyer.fabrice@gmx.fr>
2026-09-28 20:38:40 -07:00
Francesco.Castaldi
0fbad0de99 feat(db_engine_specs): add metadata blocks to all remaining incomplete engine specs (#43566)
Co-authored-by: Evan Rusackas <evan@rusackas.com>
Co-authored-by: Evan Rusackas <evan@preset.io>
Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-28 20:28:26 -07:00
Joe Li
ae11708faa test(dashboard): cover edit-mode drag-and-drop drop rules (#44678)
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-28 20:16:06 -07:00
Joe Li
4679a47101 test(dashboard): cover header refresh controls while charts load (#44670)
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-28 20:15:41 -07:00
Ujjwal Jain
c7821516e3 fix(security): vary SQL Lab ad-hoc query cache key by effective RLS predicates (#43985) 2026-09-28 20:14:41 -07:00
Jeremy Schoemaker
506716f2f8 fix(query-context): resolve legacy granularity_sqla for stored queries (#44460) 2026-09-28 20:03:45 -07:00
Konstantin Khlopkov
95db773025 fix(timeseries): preserve explicit UTC offsets in normalizeTimestamp (#43960)
Co-authored-by: Claude Code <noreply@anthropic.com>
Co-authored-by: Evan Rusackas <evan@preset.io>
2026-09-28 19:57:58 -07:00
Bikash
a374f847d6 fix(echarts): reserve grid room for Gantt category names (#43189)
Co-authored-by: bikashJMV <bikash@jmv.co.in>
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
Co-authored-by: Evan Rusackas <evan@preset.io>
Co-authored-by: SBIN2010 <Sbin2010@mail.ru>
2026-09-28 19:47:10 -07:00
Deepak Jain (DJ)
697b056909 fix(chart): prevent stacking bars on a logarithmic axis (#44556)
Signed-off-by: Deepak Jain <deepujain@gmail.com>
2026-09-28 19:41:02 -07:00
Seunggabi Kim
b65d5482b2 feat(dataset): support epoch_us python_date_format (#44500) 2026-09-28 19:40:32 -07:00
Deepak Jain (DJ)
9593bc42c6 fix(ui): normalize BigInt values in memory formatter (#44507) 2026-09-28 19:32:46 -07:00
Mike Bridge
1e167aedbc fix(dashboard): refresh version history after cross-filter scoping save (#44623)
Co-authored-by: Mike Bridge <michael.bridge@ext.preset.io>
2026-09-28 19:30:25 -07:00
Mehmet Salih Yavuz
211339b9a7 chore: add @geido and @msyavuz as code owners (#44771) 2026-09-28 19:28:58 -07:00
Geidō
8bd92b7073 fix(databases): surface dataset dependents in the delete confirmation (#44392) 2026-09-28 19:27:38 -07:00
Nguyen Dang Trung Tien
593080e1a2 feat(mcp): add update_dataset, delete_dataset and restore_dataset tools (#44337)
Co-authored-by: Claude Opus 5 <noreply@anthropic.com>
2026-09-28 19:24:52 -07:00
Elizabeth Thompson
6f6e52ba8b fix(chart/data): guard against non-dict chart.params in get_data (#44770)
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-09-28 15:03:10 -07:00
Mike Bridge
77295721ff feat(versioning): gate history APIs and runtime capture (#44514)
Co-authored-by: Mike Bridge <michael.bridge@ext.preset.io>
Co-authored-by: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-28 16:18:52 -04:00
Evan Rusackas
6cad838c82 chore(dev-deps): drop po2json entirely, build .po->Jed JSON on gettext-parser (#44742)
Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-28 11:15:42 -07:00
Joe Li
98c74d8d8b test(dashboard): cover drill to detail payloads and page reset (#44673)
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-28 10:52:08 -07:00
Joe Li
3ae8e2f9bc test(dashboard): cover save and refresh interval modals (#44671)
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-28 10:47:48 -07:00
Joe Li
e5100cd998 test(dashboard): cover tab switching visibility and hidden chart updates (#44674)
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-28 10:47:08 -07:00
Joe Li
78fdd0dafa test(dashboard): cover native filter bar key persistence and state hooks (#44675)
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-28 10:45:43 -07:00
Joe Li
ff55a99ab7 test(dashboard): cover filter plugin data masks and horizontal overflow (#44676)
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-28 10:42:57 -07:00
Joe Li
0e688a534b fix(ci): retry databend testcontainers bring-up past the image's metasrv race (#44729)
Co-authored-by: Claude Opus 5 <noreply@anthropic.com>
2026-09-28 10:42:11 -07:00
Joe Li
89bf40ee04 fix(calendar): position Month/Week cells within their own month block (#44601)
Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-28 10:41:35 -07:00
Joe Li
3667f5bcaa test(dashboard): cover color scheme precedence and label color map helpers (#44677)
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-28 10:37:08 -07:00
Joe Li
169514aebd test(dashboard): cover dashboard load modes and URL param hydration (#44672)
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-28 10:35:14 -07:00
Joe Li
74d9d94aed test(dashboard): cover native filter dependency cycles and config modal save gating (#44669)
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-28 10:33:29 -07:00
Evan Rusackas
891dbc424b fix(deps): bump anyio to 4.15.1 (CVE-2026-63374) (#44735) 2026-09-29 00:33:20 +07:00
Joe Li
a629c91929 test(explore): migrate remaining explore e2e coverage to Playwright (#44621)
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-28 10:32:31 -07:00
Joe Li
c9455b2c4c fix(i18n): correct Slovak SQL Lab progress message placeholders (#44587)
Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-28 10:31:45 -07:00
Joe Li
5af034ff6f fix(translations): capture stderr and harden check_pot_drift.py follow-ups from #44578 (#44582)
Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-28 10:31:33 -07:00
Evan Rusackas
766f46b6e9 fix(deps): pin qs 6.16.0 in docs to resolve Dependabot alerts (#44741)
Co-authored-by: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-28 10:31:22 -07:00
Joe Li
68ccc99e95 fix(dataset): hide Normalize column names for virtual datasets (#44579)
Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-28 10:31:15 -07:00
dependabot[bot]
60fc996602 chore(deps-dev): bump @types/node from 26.6.1 to 26.6.2 in /superset-websocket (#44745)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-09-28 09:44:54 -07:00
dependabot[bot]
feb4c4f622 chore(deps-dev): bump @types/node from 26.6.1 to 26.6.2 in /superset-embedded-sdk (#44748)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-09-28 09:44:50 -07:00
dependabot[bot]
1c2e7c2988 chore(deps-dev): bump webpack from 5.111.0 to 5.111.1 in /superset-embedded-sdk (#44749)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-09-28 09:44:46 -07:00
dependabot[bot]
565f49d934 chore(deps): bump antd from 6.6.4 to 6.6.5 in /docs (#44751)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-09-28 09:44:41 -07:00
dependabot[bot]
6de85946c4 chore(deps-dev): bump @babel/eslint-parser from 7.29.7 to 7.29.9 in /superset-frontend in the babel group (#44752)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-09-28 09:44:35 -07:00
dependabot[bot]
6ae6e7b287 chore(deps-dev): bump webpack from 5.111.0 to 5.111.1 in /docs (#44753)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-09-28 09:44:29 -07:00
dependabot[bot]
21ed6880d5 chore(deps-dev): bump webpack from 5.111.0 to 5.111.1 in /superset-frontend (#44756)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-09-28 09:44:25 -07:00
dependabot[bot]
7c1979ec54 chore(deps): bump react-error-boundary from 6.1.5 to 6.1.6 in /superset-frontend (#44760)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-09-28 09:44:20 -07:00
dependabot[bot]
e8539f9aff chore(deps-dev): bump @types/node from 26.6.1 to 26.6.2 in /superset-frontend (#44761)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-09-28 09:44:14 -07:00
dependabot[bot]
0085640384 chore(deps-dev): bump babel-jest from 30.5.1 to 30.5.2 in /superset-frontend (#44762)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-09-28 09:44:09 -07:00
dependabot[bot]
c217fe4d1e chore(deps-dev): bump jest from 30.5.1 to 30.5.2 in /superset-frontend (#44763)
Signed-off-by: dependabot[bot] <support@github.com>
Signed-off-by: hainenber <dotronghai96@gmail.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: hainenber <dotronghai96@gmail.com>
2026-09-28 09:44:05 -07:00
dependabot[bot]
b2d5450453 chore(deps): bump antd from 6.6.4 to 6.6.5 in /superset-frontend (#44766)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-09-28 09:44:00 -07:00
Amin Ghadersohi
f6d9b7b94c fix(mcp): use chart metrics for the preview y axis (#44684) 2026-09-29 02:08:33 +10:00
Evan Rusackas
ca6fc26fa4 fix(deps): resolve npm security alerts for fflate, image-size, js-yaml and smol-toml (#44740)
Co-authored-by: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-28 21:48:29 +07:00
dependabot[bot]
1ad6c11800 chore(deps-dev): bump minimizer-webpack-plugin from 5.10.1 to 5.11.0 in /superset-frontend (#44755)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-09-28 21:31:57 +07:00
dependabot[bot]
d9df1b3b83 chore(deps): bump astral-sh/setup-uv from 10.1.0 to 10.2.0 (#44750)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-09-28 21:30:49 +07:00
dependabot[bot]
a5ae32d391 chore(deps-dev): bump tsx from 4.23.13 to 4.23.15 in /superset-frontend (#44757)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-09-28 21:27:08 +07:00
dependabot[bot]
ba6268bddf chore(deps-dev): bump jest-environment-jsdom from 30.5.1 to 30.5.2 in /superset-frontend (#44764)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-09-28 21:23:04 +07:00
dependabot[bot]
4977a2a534 chore(deps-dev): bump the babel group in /superset-embedded-sdk with 3 updates (#44747)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-09-28 21:14:28 +07:00
Arya Ketan
d1307422f1 fix(reports): require a Slack channel id in report recipients (#42850)
Co-authored-by: Enzo Martellucci <52219496+EnxDev@users.noreply.github.com>
Co-authored-by: Enzo Martellucci <enzomartellucci@gmail.com>
Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-09-28 15:07:24 +02:00
Enzo Martellucci
5ba3b8d4fc fix(security): keep guest RLS on sub-queries beside an unaliased source (#44768)
Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-09-28 14:13:31 +02:00
shaurya
049c9777f0 fix(dashboard): load chart editors and viewers up front (#43990)
Co-authored-by: Shaurya <19599684+no-hup@users.noreply.github.com>
2026-09-28 13:58:04 +02:00
Enzo Martellucci
f3e3c3fefd fix(security): apply global guest RLS rules to sub-queries in virtual datasets (#44650)
Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-09-28 11:30:22 +02:00
Amin Ghadersohi
ffe9a00fc4 fix(reports): export full paginated table results (#44218) 2026-09-28 02:26:44 -04:00
Đỗ Trọng Hải
b6be1dd554 build(dev-deps): use @hainenber/po2json as modernized po2json fork (#44457)
Signed-off-by: hainenber <dotronghai96@gmail.com>
2026-09-27 22:58:10 -07:00
dependabot[bot]
8c4b5ae208 chore(deps): bump codecov/codecov-action from 7.1.0 to 7.1.1 (#44571)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-09-27 22:56:54 -07:00
Yuriy Krasilnikov
ad24cb8634 fix(embedded): initialize feature flags in embedded dashboard entry point (#37367)
Co-authored-by: Evan Rusackas <evan@rusackas.com>
Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-27 22:51:32 -07:00
Vihar N
1436035b09 fix(bar-chart): show correct value labels per stack group with stackDimension (#43238)
Co-authored-by: Vihar N <vihar.n@digitalblanket.ai>
Co-authored-by: rusackas <evan@rusackas.com>
Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
Co-authored-by: Evan Rusackas <evan@preset.io>
2026-09-27 22:51:27 -07:00
Evan Rusackas
8a3b86dccd fix: guard the isdigit()-then-int() pattern against non-decimal digits (#44620)
Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-27 22:04:08 -07:00
Elizabeth Thompson
35e5850606 fix(charts): guard Slice.form_data against non-dict params JSON (#44731)
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-09-27 15:04:10 -07:00
Enzo Martellucci
891c2ede0b feat(dashboard): download the Excel export directly when no export storage is configured (#44082)
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
Co-authored-by: rusackas <evan@rusackas.com>
Co-authored-by: Evan Rusackas <evan@preset.io>
2026-09-27 23:48:11 +02:00
SBIN2010
c54a3315e8 feat(plugin-chart-echarts): add Candlestick Chart (#43863)
Co-authored-by: rusackas <evan@rusackas.com>
Co-authored-by: Evan Rusackas <evan@preset.io>
Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-27 13:59:54 -07:00
Amin Ghadersohi
25e63b54fd feat(mcp): add create_dataset_metric and delete_dataset_metric tools (#44580) 2026-09-27 13:56:57 -07:00
aipiJuancho
2e13cfa3e4 fix(charts): stream large CSV exports without executing the query first (#44624)
Co-authored-by: Juan Miguel Pérez <juanm.pineda@claro.com.sv>
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-27 14:40:34 +07:00
Evan Rusackas
eb2ffa28cc chore(docker): quiet scanner self-match noise, keep OS packages current (#44124)
Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-26 20:14:51 -07:00
Joe Li
5b9733fd60 fix(versioning): resolve nightly pre-commit (next) failures — mypy UUID-annotation regression and oxfmt version-drift formatting (#44648)
Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-26 23:56:18 +07:00
dependabot[bot]
6e2e7c6c84 chore(deps-dev): update playwright requirement from <2,>=1.62.0 to >=1.63.0,<2 (#44688)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-09-26 23:34:10 +07:00
dependabot[bot]
b4db7baaff chore(deps-dev): bump python-ldap from 3.4.7 to 3.4.8 (#44690)
Signed-off-by: dependabot[bot] <support@github.com>
Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Đỗ Trọng Hải <41283691+hainenber@users.noreply.github.com>
2026-09-26 23:32:59 +07:00
dependabot[bot]
1a65f0ec9b chore(deps-dev): bump google-cloud-bigquery from 3.45.0 to 3.45.2 (#44692)
Signed-off-by: dependabot[bot] <support@github.com>
Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-09-26 20:42:51 +07:00
dependabot[bot]
1aaa1e6ad1 chore(deps): bump greenlet from 3.5.5 to 3.5.6 (#44691)
Signed-off-by: dependabot[bot] <support@github.com>
Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-09-26 20:41:43 +07:00
dependabot[bot]
60a0b45b06 chore(deps-dev): bump mysqlclient from 2.2.8 to 2.3.0 (#44689)
Signed-off-by: dependabot[bot] <support@github.com>
Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-09-26 20:39:29 +07:00
dependabot[bot]
a33154a4c4 chore(deps-dev): bump hdbcli from 2.29.27 to 2.30.27 (#44687)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-09-26 20:38:11 +07:00
Joe Li
0501796837 chore(ci): collapse Playwright experimental workflow into E2E playwright-tests (#44659)
Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-26 10:48:37 +07:00
Amin Ghadersohi
181422fc60 fix(mcp): return safe argument validation details (#44591) 2026-09-25 19:25:39 -04:00
Elizabeth Thompson
10ca640e97 fix(import): downgrade expected validation-failure logs from error to warning (#44655)
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-25 15:04:23 -07:00
Elizabeth Thompson
5aec4342bb fix(database): catch JSONDecodeError in get_oauth2_config (#44658)
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-09-25 15:04:18 -07:00
Joe Li
4bce27f12f fix(dashboard): shrink row height on chart resize and unblock resize handles above columns (#44359)
Co-authored-by: Claude Opus 5 <noreply@anthropic.com>
Co-authored-by: Evan Rusackas <evan@rusackas.com>
Co-authored-by: Evan Rusackas <evan@preset.io>
2026-09-25 10:51:05 -07:00
dependabot[bot]
be0631858c chore(deps): bump mapbox-gl from 3.30.0 to 3.31.0 in /superset-frontend (#44643)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-09-25 10:23:14 -07:00
dependabot[bot]
241d121015 chore(deps): bump image-size from 2.0.2 to 2.0.4 in /docs in the security group across 1 directory (#44619)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-09-25 10:13:58 -07:00
dependabot[bot]
5e8bbc0eb4 chore(deps): bump baseline-browser-mapping from 2.11.24 to 2.11.25 in /docs (#44638)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-09-25 23:53:48 +07:00
dependabot[bot]
0034601c06 chore(deps): bump github/codeql-action/init from 4.38.0 to 4.38.1 (#44639)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-09-25 23:53:05 +07:00
dependabot[bot]
5be35992c5 chore(deps): bump github/codeql-action/upload-sarif from 4.38.0 to 4.38.1 (#44640)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-09-25 21:45:03 +07:00
dependabot[bot]
5085570fb4 chore(deps): bump apache/infrastructure-actions/allowlist-check from 1.0.3 to 1.0.4 (#44637)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-09-25 21:44:42 +07:00
dependabot[bot]
a44ab4d928 chore(deps-dev): bump baseline-browser-mapping from 2.11.24 to 2.11.25 in /superset-frontend (#44641)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-09-25 21:39:06 +07:00
dependabot[bot]
d1f903c66f chore(deps): bump github/codeql-action/analyze from 4.38.0 to 4.38.1 (#44636)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-09-25 21:38:31 +07:00
dependabot[bot]
d65e9fba9c chore(deps-dev): bump oxlint-tsgolint from 7.0.2001 to 7.0.2002 in /docs (#44635)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-09-25 21:38:09 +07:00
dependabot[bot]
a9342fa02a chore(deps-dev): bump oxlint-tsgolint from 7.0.2001 to 7.0.2002 in /superset-websocket (#44634)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-09-25 21:28:34 +07:00
Enzo Martellucci
83731ce7b3 test(reports): freeze the clock in the stale retry boundary test (#44651)
Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-09-25 14:40:12 +02:00
Mehmet Salih Yavuz
02cb1f1a28 fix(table): resolve auto-detected currency on time comparison columns (#44649) 2026-09-25 15:29:52 +03:00
Amin Ghadersohi
1e08d61204 fix(mcp): preserve deduplicated chart tool input schemas (#44575)
Co-authored-by: Claude Haiku 4.5 <noreply@anthropic.com>
2026-09-25 21:44:43 +10:00
Enzo Martellucci
3bd6e103c1 fix(security): apply global guest RLS rules inside adhoc sub-queries (#44645)
Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-09-25 12:14:55 +02:00
anamitraadhikari
599026a0e5 feat(standalone): granular Explore standalone modes and iframe-safe dashboard fullscreen (#44165)
Co-authored-by: aadhikari <aadhikari@apple.com>
2026-09-24 16:29:56 -07:00
Evan Rusackas
96d31ee3e3 docs(mcp): document deleted_state trash listing for list_charts/list_dashboards (#44128)
Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-24 18:37:23 -04:00
Mike Bridge
7b716b1838 fix(versioning): clean up history actions and refresh after saves (#44613) 2026-09-24 18:36:38 -04:00
Elizabeth Thompson
855ca2228c fix(query_context): raise 422 not 500 on malformed Jinja in Query datasource access check (#44011)
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-09-24 15:02:26 -07:00
Elizabeth Thompson
f5487f04a3 fix(db_engine_specs): raise SupersetGenericDBErrorException instead of bare-reraising JSONDecodeError (#44616)
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-24 15:02:17 -07:00
akashchamp
defcd63910 fix(mongodb): route dataset FROM clauses through quote_table so chart queries return rows (#44583)
Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-24 14:16:12 -07:00
Devansh Bhargava
1c7d1f049b fix(utils): return None from cast_to_num for non-decimal digit strings (#44615) 2026-09-24 13:35:43 -07:00
Joe Li
e04d38a85f fix(mypy): resolve the dataset-scope and datasource-perm errors from the full-repo lint (#44610)
Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-24 13:30:54 -07:00
Deepak Jain (DJ)
e357014559 fix(dashboard): initialize label colors before mounting charts (#44557)
Signed-off-by: Deepak Jain <deepujain@gmail.com>
2026-09-24 13:30:03 -07:00
Konstantin Khlopkov
f5d663c480 fix(versioning): narrow nullable uuid/description reads flagged by mypy in versioning tests (#44424) 2026-09-24 13:26:30 -07:00
Joe Li
9ad6917600 chore(cypress): remove dead dashboard drill-to-detail Cypress suite (#44537)
Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-24 11:26:29 -07:00
Evan Rusackas
732248e475 fix(logging): record dashboard_id and slice_id for REST mutation endpoints (#44553)
Co-authored-by: vikash kumar <vikkiraj073@gmail.com>
Co-authored-by: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-24 11:24:11 -07:00
dependabot[bot]
25cb6fc02d chore(deps): bump the ag-grid group in /superset-frontend with 2 updates (#44595)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-09-24 10:05:52 -07:00
Đỗ Trọng Hải
613033b294 chore(build): replace external file-related deps with native Node modules (#42939)
Signed-off-by: hainenber <dotronghai96@gmail.com>
2026-09-24 22:17:02 +07:00
dependabot[bot]
2ac6e2468d chore(deps-dev): bump webpack-bundle-analyzer from 5.3.3 to 5.4.0 in /superset-frontend (#44598)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-09-24 21:07:54 +07:00
dependabot[bot]
45d76f6aba chore(deps): bump react-draggable from 4.7.1 to 4.7.2 in /superset-frontend (#44597)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-09-24 21:07:44 +07:00
dependabot[bot]
92a3b7d7e3 chore(deps): bump google-auth-library from 11.0.2 to 11.1.0 in /superset-frontend (#44599)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-09-24 21:07:21 +07:00
Devansh Khetan
ad7fcac11f fix(export): stamp ZIP entries with the export time (#44391) 2026-09-24 16:05:39 +02:00
dependabot[bot]
687dcbc63e chore(deps): bump swagger-ui-react from 5.32.15 to 5.33.0 in /docs (#44594)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-09-24 20:41:36 +07:00
dependabot[bot]
b4cc82b766 chore(deps-dev): bump jsdom from 30.0.1 to 30.1.0 in /superset-embedded-sdk (#44592)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-09-24 20:40:49 +07:00
dependabot[bot]
0ad50dc77e chore(deps-dev): bump jsdom from 30.0.1 to 30.1.0 in /superset-frontend (#44596)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-09-24 20:40:20 +07:00
dependabot[bot]
d4370cd46e chore(deps): bump the rjsf group in /superset-frontend with 3 updates (#44593)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-09-24 20:37:35 +07:00
Joe Li
8141d666d6 fix(dashboard): show loading spinner for charts outside an in-flight auto-refresh batch (#44272)
Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
Co-authored-by: Evan Rusackas <evan@rusackas.com>
Co-authored-by: Evan Rusackas <evan@preset.io>
2026-09-23 16:17:57 -07:00
Joe Li
390bf299ff fix(i18n): stop f-strings in gettext leaking a bogus msgid on Python 3.12 (#44584)
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-23 15:34:05 -07:00
Kunal
3b355b6a85 fix(chart): allow semantic view datasource when saving charts (#44169)
Co-authored-by: Gabriel Torres Ruiz <gabo2595@gmail.com>
2026-09-23 15:13:12 -07:00
Shaitan
082961ba16 fix(chart): require edit rights for query-context-only updates (#44494)
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
2026-09-23 22:09:21 +01:00
Prajasree
298aa2f0ba fix(dataset): bump changed_on on column refresh so chart cache invalidates (#43921)
Co-authored-by: rusackas <evan@rusackas.com>
Co-authored-by: Evan Rusackas <evan@preset.io>
Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-23 13:34:06 -07:00
Hong Ng
775f7c5a1f fix(db2): Use DATE_TRUNC to improve timegrain expressions (#43236)
Co-authored-by: Hong Yang Ng <hongyang.ng@defence.gov.au>
Co-authored-by: Evan Rusackas <evan@preset.io>
2026-09-23 13:21:47 -07:00
Joe Li
d7a918b814 fix(ci): make check_pot_drift extract from an isolated git snapshot (#44578)
Co-authored-by: Claude <noreply@anthropic.com>
2026-09-23 12:28:57 -07:00
Gabriel Torres Ruiz
a071d23b41 fix(dashboard): guest sessions, pluggable storage, and streamed downloads for the Excel export (#43805)
Co-authored-by: Elizabeth Thompson <eschutho@gmail.com>
2026-09-23 15:04:12 -03:00
Amin Ghadersohi
c0c688d3e4 fix(mcp): return a specific error per failure class on tool calls (#44387)
Co-authored-by: Claude Opus 5 <noreply@anthropic.com>
2026-09-23 13:24:45 -04:00
Enzo Martellucci
7c7b3adf74 fix(export): keep the acting user in streaming CSV exports (#44425)
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-23 15:40:46 +02:00
Mehmet Salih Yavuz
6323b37f50 fix(dashboard): prevent and repair self-nested layout components (#44303) 2026-09-23 16:35:34 +03:00
Mehmet Salih Yavuz
838376dbc2 fix(mongodb): treat the Mongo database as the SQL Lab schema so Data Preview returns rows (#44141) 2026-09-23 16:23:21 +03:00
Enzo Martellucci
02dbfd2ab5 fix(dashboard): don't register an active tab for childless TABS components (#44345)
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-23 14:08:07 +02:00
Enzo Martellucci
689ab4a77a fix(translations): regenerate messages.pot after the connection-move reword (#44574)
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-23 13:30:44 +02:00
dependabot[bot]
f8f293d266 chore(deps): bump benchmark-action/github-action-benchmark from 1.22.1 to 1.22.2 (#44520)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-09-23 03:02:04 -07:00
dependabot[bot]
3e80a53e14 chore(deps-dev): bump @types/node from 26.5.1 to 26.6.1 in /superset-websocket (#44563)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-09-23 03:02:00 -07:00
dependabot[bot]
4290d94d6c chore(deps-dev): bump vitest from 5.0.0 to 5.0.1 in /superset-websocket (#44564)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-09-23 03:01:56 -07:00
dependabot[bot]
4b180bddad chore(deps): bump baseline-browser-mapping from 2.11.23 to 2.11.24 in /docs (#44565)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-09-23 03:01:52 -07:00
dependabot[bot]
6c9138a6b7 chore(deps-dev): bump baseline-browser-mapping from 2.11.23 to 2.11.24 in /superset-frontend (#44566)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-09-23 03:01:48 -07:00
dependabot[bot]
d1f395914f chore(deps-dev): bump @types/node from 26.5.1 to 26.6.1 in /superset-embedded-sdk (#44567)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-09-23 03:01:44 -07:00
dependabot[bot]
6403e16fe5 chore(deps-dev): bump vitest from 5.0.0 to 5.0.1 in /superset-embedded-sdk (#44568)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-09-23 03:01:40 -07:00
dependabot[bot]
7fe03a536b chore(deps-dev): bump @types/node from 26.5.1 to 26.6.1 in /superset-frontend (#44569)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-09-23 03:01:35 -07:00
dependabot[bot]
3b4e5f5d0c chore(deps): bump markdown-to-jsx from 9.10.2 to 9.10.3 in /superset-frontend (#44570)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-09-23 03:01:30 -07:00
Amin Ghadersohi
c14ac29f47 fix(mcp): complete Treemap round-trip and previews (#44152) 2026-09-23 02:25:30 -04:00
dependabot[bot]
61fffbe0c0 chore(deps-dev): bump oxlint from 1.82.0 to 1.83.0 in /superset-frontend (#44525)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-09-23 11:41:34 +07:00
Bexultan
9612437a9c fix(extensions): preserve chat state across display modes (#44490)
Co-authored-by: Bexultan Mustafin <bexultan.mustafin@ffins.kz>
2026-09-22 18:39:29 -07:00
Amin Ghadersohi
7a9fe06762 fix(mcp): stop data tool responses crashing on binary and NaT values (#44495) 2026-09-22 20:39:01 -04:00
Ujjwal Jain
350dd0d60e fix(security): delete deprecated permissions left over after upgrades (#44142)
Co-authored-by: Evan Rusackas <evan@preset.io>
2026-09-22 17:01:32 -07:00
sonfire186
ea1ffcf0ad fix: fixed inverseSelection (#40970)
Co-authored-by: Evan Rusackas <evan@preset.io>
2026-09-22 16:52:50 -07:00
Evan Rusackas
50bbcedf13 docs(mcp): document restore_chart and restore_dashboard tools (#44207)
Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-22 16:47:51 -07:00
Elizabeth Thompson
269b9f99fe fix(views): return 401 for NoAuthorizationError in handle_api_exception (SC-121647) (#44533)
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-09-22 15:02:41 -07:00
Amin Ghadersohi
0f229fda75 fix(security): exempt health blueprint from forced password changes (#44504)
Co-authored-by: GPT-6 Astra <noreply@openai.com>
2026-09-22 18:02:20 -04:00
Amin Ghadersohi
ca7cdfcd0f fix(pinot): require the SQLAlchemy 2 driver extra (#44287) 2026-09-22 18:01:38 -04:00
Evan Rusackas
add97e5d19 fix(embedded): tighten guest-token scoping for annotations, result types, and channels (#43391)
Co-authored-by: Superset Dev <dev@superset.apache.org>
Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-22 14:55:19 -07:00
Evan Rusackas
7dd70eaf2d fix: tighten object-level and destination checks across four unrelated endpoints (#44036)
Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-22 14:31:03 -07:00
Evan Rusackas
48795f9a2d docs(explore): document show_download param for standalone chart embeds (#43906)
Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-22 14:30:35 -07:00
Evan Rusackas
9413294b2b docs(pivot-table): document the "Show values as" percentage display option (#44127)
Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-22 14:24:22 -07:00
Ville Brofeldt
7024401aef fix(mcp): drop tiktoken, size-guard responses by exact byte length (#44508)
Co-authored-by: rusackas <evan@preset.io>
Co-authored-by: Claude Fable 5.1 <noreply@anthropic.com>
Co-authored-by: Amin Ghadersohi <amin.ghadersohi@gmail.com>
2026-09-22 12:54:18 -07:00
Evan Rusackas
9f48d0eac9 fix(tests): await userEvent.click in CsrfErrorMessage compact-mode test (#44540)
Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-22 12:00:13 -07:00
Evan Rusackas
0fe0662b27 fix(i18n): regenerate messages.pot to match source (#44509)
Co-authored-by: Claude Code <noreply@anthropic.com>
2026-09-23 01:41:24 +07:00
Evan Rusackas
43f0f8876a chore(ci): make the DB migration conflict bot comment less emoji-heavy and more actionable (#44506)
Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-22 11:16:49 -07:00
Amin Ghadersohi
ee4b8ddff6 fix(ci): align superset-cache tag consumers with the Dockerfile PY_VER (#44534)
Co-authored-by: Hugh A. Miles II <hughmil3s@gmail.com>
2026-09-22 13:48:01 -04:00
Elizabeth Thompson
1788486228 fix(datasets): soften render-time UndefinedError in get_virtual_table_metadata (#44316)
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
2026-09-22 10:35:23 -07:00
Elizabeth Thompson
df6e0d08b3 fix(sqla): wrap TypeError from virtual dataset Jinja rendering as a validation error (#44312)
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
2026-09-22 10:35:08 -07:00
Elizabeth Thompson
cef83b3f8d fix(import): catch KeyError for missing uuid/ssh_tunnel in load_configs (#43305) 2026-09-22 10:34:55 -07:00
Ujjwal Jain
c4943a0ab3 feat(native-filters): add configurable display format for time filters (#44237) 2026-09-22 10:29:28 -07:00
Konstantin Khlopkov
5c1f617740 fix(echarts): apply the bar label legibility floor to manual label positions (#44469) 2026-09-22 10:24:38 -07:00
dependabot[bot]
c163112f4e chore(deps): bump @googleapis/sheets from 17.0.0 to 18.0.0 in /superset-frontend (#44523)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Đỗ Trọng Hải <41283691+hainenber@users.noreply.github.com>
2026-09-22 10:23:13 -07:00
Pat Buxton
107a61c4ca feat(databend): add a sqlglot dialect based on Postgres (#43964)
Co-authored-by: Claude Opus 5 <noreply@anthropic.com>
2026-09-22 10:18:39 -07:00
Kunal
a3afedeaab fix(core): normalize bare date-only strings to UTC in normalizeTimestamp (#43807)
Co-authored-by: Kunal8954 <your-github-email@example.com>
2026-09-22 10:16:49 -07:00
Sepuri Sai Krishna
2b5a929523 fix(chart-controls): type post-processing columns as a string-to-string mapping (#43589)
Co-authored-by: Evan Rusackas <evan@preset.io>
2026-09-22 09:58:53 -07:00
dependabot[bot]
d21aa9b4f4 chore(deps): bump yeoman-generator from 9.1.0 to 9.2.0 in /superset-frontend (#44522)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Đỗ Trọng Hải <41283691+hainenber@users.noreply.github.com>
2026-09-22 09:58:35 -07:00
Saurabh Damle
61a5d0e334 fix(csrf): recover from an expired CSRF token without a page reload (#43655)
Signed-off-by: saurabhdamle11 <saurabhdamle8@gmail.com>
2026-09-22 09:28:45 -07:00
Sepuri Sai Krishna
c6d0890f2e fix(api): restore three schema fields disabled by a stray trailing comma (#43225)
Co-authored-by: Claude Opus 5 <noreply@anthropic.com>
2026-09-22 09:21:32 -07:00
Rafael Benitez
250a4797bf fix(plugin-chart-ag-grid-table): send export column filters as structured filters (#44308)
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-09-22 13:16:23 -03:00
jenwitteng
47fd4f4cbf fix(matrixify): lazy-load grid cells with dashboard virtualization (#43053)
Co-authored-by: Evan Rusackas <evan@preset.io>
2026-09-22 09:12:43 -07:00
dependabot[bot]
21db4a5eee chore(deps): bump @types/d3-selection from 3.0.11 to 3.0.12 in /superset-frontend (#44524)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-09-22 22:04:25 +07:00
dependabot[bot]
c691d768d2 chore(deps-dev): bump oxfmt from 0.67.0 to 0.68.0 in /superset-frontend (#44521)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: hainenber <dotronghai96@gmail.com>
2026-09-22 22:03:01 +07:00
Đỗ Trọng Hải
4afaf60a4f feat(build): use latest patch version for Python base image (#44458)
Signed-off-by: hainenber <dotronghai96@gmail.com>
2026-09-22 21:50:35 +07:00
Seunggabi Kim
4c229cb66a fix(dashboard): import getClientErrorObject; regenerate stale messages.pot (#44513) 2026-09-22 21:06:11 +07:00
dependabot[bot]
d43785a2c2 chore(deps): bump docker/setup-buildx-action from 4.3.0 to 4.4.1 (#44519)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: rusackas <evan@rusackas.com>
Co-authored-by: Evan Rusackas <evan@preset.io>
Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-22 21:02:16 +07:00
dependabot[bot]
a54e7353a2 chore(deps-dev): bump oxlint from 1.82.0 to 1.83.0 in /superset-websocket (#44515)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-09-22 06:11:15 -07:00
dependabot[bot]
fc1c7798e9 chore(deps-dev): bump oxfmt from 0.67.0 to 0.68.0 in /docs (#44517)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-09-22 06:11:11 -07:00
dependabot[bot]
1c803d923f chore(deps-dev): bump oxfmt from 0.67.0 to 0.68.0 in /superset-websocket (#44516)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-09-22 02:50:16 -07:00
dependabot[bot]
1428f138d2 chore(deps-dev): bump oxlint from 1.82.0 to 1.83.0 in /docs (#44518)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-09-22 02:50:09 -07:00
dependabot[bot]
4df9c0ad36 chore(deps): bump qs from 6.15.2 to 6.16.0 in /superset-frontend/cypress-base (#44511)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-09-21 23:05:08 -07:00
dependabot[bot]
22d37f3ed0 chore(deps): bump fast-uri from 3.1.5 to 3.1.8 in /superset-frontend/cypress-base (#44510)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-09-21 22:59:46 -07:00
Rakesh Pai
156549ffed fix(temporary-cache): forward tab_id on DELETE so contextual cache mappings are cleared (#44451) 2026-09-21 18:31:17 -07:00
Vardhman Bengani
86fb8db31d chore(version-history): use typed app dispatch (#44438)
Co-authored-by: Vardhman Bengani <vardhman.47th@gmail.com>
2026-09-21 18:30:55 -07:00
Mike Bridge
770bcfb2e9 fix(extensions-cli): fail build and bundle when the frontend build fails (#44407)
Co-authored-by: Mike Bridge <michael.bridge@ext.preset.io>
2026-09-21 18:29:16 -07:00
Konstantin Khlopkov
7eb9532c0b fix(chart-controls): keep axis sort available for columns with unknown type (#44344) 2026-09-21 18:27:49 -07:00
Sepuri Sai Krishna
57108b416b test(explore): await userEvent calls in useExploreAdditionalActionsMenu test (#44323) 2026-09-21 18:27:41 -07:00
Sepuri Sai Krishna
8039aa983d test(explore): await the Customize tab click in ControlPanelsContainer test (#44315) 2026-09-21 18:27:24 -07:00
Amin Ghadersohi
b78585c971 fix(databricks): select the SQLAlchemy 2 dialect (#44286)
Co-authored-by: Claude Opus 5 <noreply@anthropic.com>
2026-09-21 18:26:24 -07:00
Amin Ghadersohi
468936a7e0 fix(sql): preserve literal percents in where_in (#44284) 2026-09-21 18:26:10 -07:00
Deepak Jain (DJ)
3cbee94525 docs: fix internal link guidance examples (#44275)
Signed-off-by: Deepak Jain <deepujain@gmail.com>
2026-09-21 18:25:58 -07:00
Deepak Jain (DJ)
3e39ba13e3 fix(country-map): correct Karelia boundary (#44273)
Signed-off-by: Deepak Jain <deepujain@gmail.com>
2026-09-21 18:25:27 -07:00
Sam Firke
f47fcad3d6 fix(reports): replace stale Selenium references in screenshot messages (#44244)
Co-authored-by: Joe Li <joe@preset.io>
2026-09-21 18:25:18 -07:00
Luc Verdier
0382c19ad3 fix: show the server's error message in the publish toggle and user info toasts (#44238) 2026-09-21 18:25:02 -07:00
Endi Monan
1b8800c84d fix(sqllab): restore SQL code folding (#44236)
Co-authored-by: Joe Li <joe@preset.io>
2026-09-21 18:24:52 -07:00
Abhinav
fd5efcbf5b fix(superset-ui-core): add year to smart_date_verbose tooltip tiers (#44212)
Co-authored-by: Abhinav Dubey <dubeyabhinav@gmail.com>
2026-09-21 18:24:39 -07:00
Endi Monan
c666a6400c fix(database): allow metadata edits on an unreachable database (#44000) 2026-09-21 18:24:26 -07:00
Adalbert Makarovych
903a1e1ff3 docs(singlestore): require singlestoredb[sqlalchemy] and update logo (#44170)
Co-authored-by: Joe Li <joe@preset.io>
2026-09-21 18:24:08 -07:00
jenwitteng
600db8e581 fix(matrixify): apply dimension filters to all query-specific adhoc filter collections (#43861)
Signed-off-by: Jenwit Amonpongitsara <jenwit.amonpongitsara@agoda.com>
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
2026-09-21 18:19:44 -07:00
Deepak Jain (DJ)
5745162faf docs: point remaining Release Notes links at GitHub releases (#43803) 2026-09-21 18:19:25 -07:00
Finn
d45bbdcdf2 fix(sql): use AST for disallowed function checks (#43641) 2026-09-21 18:18:19 -07:00
Kunal
649a665b48 fix(security): allow schema_access holders to explore SQL Lab queries from other authors (#43994) 2026-09-21 17:09:07 -07:00
Mike Bridge
0050b187d7 perf(deletion-retention): scope purge-audit repeat checks with legacy database fallback (#44262)
Co-authored-by: Mike Bridge <michael.bridge@ext.preset.io>
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
2026-09-21 17:02:37 -07:00
Dennis Khylkouski
cf10e894a1 fix(mcp): preserve omitted chart colors and row limits (#44188) 2026-09-21 17:01:50 -07:00
Bikash
92482f07f3 fix(echarts): emit no cross-filter for clicks that are not categories (#43192)
Co-authored-by: bikashJMV <bikash@jmv.co.in>
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-21 17:01:08 -07:00
Mike Bridge
298d776ec5 fix(dashboard): include semantic views in the dashboard datasets payload so semantic charts render their errors (#44413) 2026-09-21 16:55:23 -07:00
Mafi
889f9f1751 fix(reports): validate final capture artifacts before delivery (#44465)
Co-authored-by: Enzo Martellucci <52219496+EnxDev@users.noreply.github.com>
2026-09-21 19:38:19 -04:00
Greg Neighbors
5a2a90b38a feat(mcp): bubble chart type plugin (#43572)
Co-authored-by: Greg Neighbors <gregneighbors@Gregs-Air-2.lan>
Co-authored-by: Claude Opus 5 <noreply@anthropic.com>
2026-09-21 16:36:00 -07:00
Deepak Jain (DJ)
3fd761d174 fix(ui): preserve default modal resize handles when config is partial (#43806)
Signed-off-by: Deepak Jain <deepujain@gmail.com>
2026-09-21 16:27:18 -07:00
Joe Li
3756b7ae2c fix(i18n): guard messages.pot against source drift and regenerate it (#44467)
Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-21 16:20:23 -07:00
Mike Bridge
cbd5bf85fe fix(dataset): render semantic datasource type as a badge (#44398) 2026-09-21 16:19:56 -07:00
Nguyen Dang Trung Tien
ba677f0c5b feat(mcp): read Explore permalinks in get_chart_info (#44338)
Co-authored-by: Claude Opus 5 <noreply@anthropic.com>
2026-09-21 16:18:54 -07:00
Priit Laes
53484ac21c feat(charts): Clean up "shadow state" in conditional formatting dialog (#43692) 2026-09-21 16:14:14 -07:00
Sanmitra Nagaraj
b8cc2a769d fix(echarts): only reserve left grid padding when a Y-axis title exists (#43299) 2026-09-21 16:12:41 -07:00
Bexultan
afd8dac7c8 fix(sqllab): migrate tabs after database deletion (#43278)
Co-authored-by: Bexultan Mustafin <bexultan.mustafin@ffins.kz>
2026-09-21 16:11:56 -07:00
Bikash
48dfbcc652 fix(explore): keep an externally updated TextControl value visible (#43220)
Co-authored-by: bikashJMV <bikash@jmv.co.in>
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-21 16:11:30 -07:00
Abdul Rehman
6cc5c0e00b feat(db_engine_specs): add metadata block to OdpsEngineSpec (#43239) 2026-09-21 16:10:46 -07:00
Deepak Jain (DJ)
4a7b8b6279 fix(ui): preserve HTTP status in error messages (#44271)
Signed-off-by: Deepak Jain <deepujain@gmail.com>
2026-09-21 16:05:10 -07:00
Joe Li
7e6b25a90b fix(row-level-security): allow roles as RLS rule subjects (#43948)
Co-authored-by: rusackas <evan@rusackas.com>
Co-authored-by: Evan Rusackas <evan@preset.io>
Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-21 15:49:54 -07:00
Joe Li
f7784b64f4 fix(ci): give the db2 testcontainer boot real wait headroom (#44399)
Co-authored-by: Claude Opus 5 <noreply@anthropic.com>
2026-09-21 15:32:30 -07:00
Joe Li
ed9bb9169d fix(dashboard): stop wide table charts bleeding over neighbours in dashboard image export (#44414)
Co-authored-by: Claude Opus 5 <noreply@anthropic.com>
2026-09-21 15:15:01 -07:00
Joe Li
c355f0a21d fix(plugin-chart-table): re-measure sticky layout when the table gains a box (#44430)
Co-authored-by: Claude Opus 5 <noreply@anthropic.com>
2026-09-21 15:12:10 -07:00
Joe Li
2f4eb73518 fix(explore): keep edits to a dashboard-inherited filter when saving (#43947)
Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-21 15:10:54 -07:00
Joe Li
d0edf759c9 test(dashboard): migrate native filter cross-filter/dependency E2E to Playwright (#41458)
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Co-authored-by: rusackas <evan@rusackas.com>
Co-authored-by: Evan Rusackas <evan@preset.io>
2026-09-21 15:05:48 -07:00
Elizabeth Thompson
aaa9390a24 fix(semantic-layer): wrap raw pandas TypeError/DataError from post-processing as QueryObjectValidationError (#44502)
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
2026-09-21 15:02:49 -07:00
Elizabeth Thompson
75447bc068 fix(pandas_postprocessing): pass string aggregator names to GroupBy.agg to silence FutureWarning (#43259)
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
2026-09-21 15:02:45 -07:00
Joe Li
e4eb0591bd fix(sql lab): keep the real Flask session on synchronous runs (#44428)
Co-authored-by: Claude Opus 5 <noreply@anthropic.com>
2026-09-21 17:57:16 -04:00
Amin Ghadersohi
cf39d22f38 fix(mcp): honor extra_form_data time_grain_sqla on Generic Chart Axes charts (#44435)
Co-authored-by: GPT-6 Astra <noreply@openai.com>
2026-09-21 17:34:46 -04:00
Geidō
fe2ed7bb8e fix(dashboard): make screenshot completion truthful (#44144) 2026-09-22 00:33:40 +03:00
Amin Ghadersohi
782b7ae924 fix(security): skip session checks for health probes (#43786) 2026-09-21 17:14:31 -04:00
Ville Brofeldt
322eaeaf99 fix(ci): align Docker image publishing policy (#44250) 2026-09-21 13:03:57 -07:00
Shaitan
774d83b4d6 fix(sql-lab): remove the ecpg-based PostgreSQL SQL validator (#43020)
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
2026-09-21 20:22:25 +01:00
Mike Bridge
5a7d269580 fix(charts): guard set_related_perm against unknown datasource_type (#43885)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
2026-09-21 12:38:03 -04:00
Mike Bridge
371ad7cac5 refactor(soft-delete): hoist triplicated restore/purge route bodies onto SoftDeleteApiMixin (#44259)
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
Co-authored-by: Mike Bridge <michael.bridge@ext.preset.io>
2026-09-21 12:37:40 -04:00
Amin Ghadersohi
8b9b055ef0 fix(mcp): never block a committed update_chart write as ToolError (#44386)
Co-authored-by: Claude Opus 5 <noreply@anthropic.com>
2026-09-21 12:14:26 -04:00
Amin Ghadersohi
2ea9ef6cef feat(mcp): search dataset descriptions and add an optional per-role dataset scope (#44146) 2026-09-21 12:09:47 -04:00
Mafi
8ec8beecff fix(reports): enable alert retries with execution safeguards (#44336)
Co-authored-by: Enzo Martellucci <52219496+EnxDev@users.noreply.github.com>
2026-09-21 17:44:07 +02:00
Shaitan
00b1a35301 fix(shillelagh): disable ATTACH DATABASE on APSW connections (#43991)
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
2026-09-21 14:48:33 +01:00
Shaitan
c11dc02796 fix(sql): classify ATTACH/DETACH and MySQL REPLACE/RENAME/SET PASSWORD as mutating (#44072)
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
2026-09-21 14:48:12 +01:00
dependabot[bot]
fc016454fb chore(deps): bump baseline-browser-mapping from 2.11.22 to 2.11.23 in /docs (#44478)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-09-21 04:10:23 -07:00
dependabot[bot]
7486b7187b chore(deps): bump morgan from 1.12.0 to 1.12.1 in /superset-websocket/utils/client-ws-app (#44474)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-09-21 17:20:50 +07:00
dependabot[bot]
b0f7c581db chore(deps): bump yeoman-generator from 8.4.0 to 9.1.0 in /superset-frontend (#44489)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-09-21 17:20:39 +07:00
dependabot[bot]
1f1e09c971 chore(deps): bump hot-shots from 17.1.0 to 17.1.1 in /superset-websocket (#44475)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-09-21 01:03:30 -07:00
dependabot[bot]
085e535b8e chore(deps-dev): bump webpack from 5.110.3 to 5.111.0 in /superset-embedded-sdk (#44476)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-09-21 01:02:40 -07:00
dependabot[bot]
caa82d5b10 chore(deps): bump codecov/codecov-action from 7.0.0 to 7.1.0 (#44477)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-09-21 01:02:37 -07:00
dependabot[bot]
a82a001fe0 chore(deps): bump js-yaml from 5.4.1 to 5.4.2 in /docs (#44479)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-09-21 01:02:31 -07:00
dependabot[bot]
d0739416d5 chore(deps-dev): bump webpack from 5.110.3 to 5.111.0 in /docs (#44480)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-09-21 01:02:28 -07:00
dependabot[bot]
38fac53e55 chore(deps): bump antd from 6.6.3 to 6.6.4 in /docs (#44481)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-09-21 01:02:24 -07:00
dependabot[bot]
07b28abe82 chore(deps-dev): bump webpack from 5.110.3 to 5.111.0 in /superset-frontend (#44482)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-09-21 01:02:21 -07:00
dependabot[bot]
9bb07f2292 chore(deps-dev): bump baseline-browser-mapping from 2.11.22 to 2.11.23 in /superset-frontend (#44483)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-09-21 01:02:17 -07:00
dependabot[bot]
41aa1221be chore(deps-dev): bump @formatjs/intl-durationformat from 0.10.18 to 0.11.1 in /superset-frontend (#44484)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-09-21 01:02:13 -07:00
dependabot[bot]
76496b2df6 chore(deps): bump zod from 4.6.2 to 4.6.5 in /superset-frontend (#44485)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-09-21 01:02:10 -07:00
dependabot[bot]
3f924aa1aa chore(deps): bump antd from 6.6.3 to 6.6.4 in /superset-frontend (#44487)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-09-21 01:02:06 -07:00
dependabot[bot]
27935c2c64 chore(deps-dev): bump @testing-library/dom from 10.4.1 to 10.4.2 in /superset-frontend (#44488)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-09-21 01:02:03 -07:00
Elizabeth Thompson
c9fd9bf94f fix(bigquery): avoid ESCAPE clause in column-value typeahead search (SC-121408) (#44429)
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
2026-09-20 15:02:59 -07:00
Elizabeth Thompson
6300622dd4 fix(mcp): catch ValueError for reversed date range in query_dataset (#44462) 2026-09-20 15:02:56 -07:00
dependabot[bot]
4511c13819 chore(deps-dev): bump psycopg2-binary from 2.9.12 to 2.9.13 (#44444)
Signed-off-by: dependabot[bot] <support@github.com>
Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-09-20 10:15:59 +07:00
dependabot[bot]
db556ec66e chore(deps): bump pyjwt from 2.13.0 to 2.14.0 (#44442)
Signed-off-by: dependabot[bot] <support@github.com>
Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-09-19 18:30:25 -07:00
Elizabeth Thompson
253eef33d5 fix(databricks): prefer python-connector spec over legacy Hive spec for unrecognized drivers (#44449)
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
2026-09-19 19:44:03 -04:00
dependabot[bot]
f170d2670e chore(deps): bump baseline-browser-mapping from 2.11.21 to 2.11.22 in /docs (#44418)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-09-19 15:16:22 -07:00
Mike Bridge
43fee87672 test(versioning): mock the restore locking re-read in the #44253 LookupError tests (fixes red master) (#44445) 2026-09-19 09:48:46 -04:00
Amin Ghadersohi
128c0c159a fix(mcp): rebuild full parent chains in dashboard layouts (#44405)
Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-18 20:51:00 -04:00
Mike Bridge
5ecb19cf92 fix(mcp): pre-validate metric/dimension compatibility in semantic-view get_table (#44265)
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
2026-09-18 18:35:47 -04:00
Mike Bridge
2e1cf8a72c fix(versioning): map the restore registry guard's LookupError to 422 instead of 500 (#44253)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
2026-09-19 07:50:40 +10:00
Mike Bridge
062bf948e5 fix(semantic-layer): preserve independent source permissions (#43887)
Co-authored-by: Mike Bridge <michael.bridge@ext.preset.io>
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
2026-09-18 17:34:59 -03:00
Mike Bridge
43f85576d9 fix(semantic-layer): mapper honors the SemanticView ABC contract (#43886)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
2026-09-18 16:35:53 -03:00
Mike Bridge
9d4db45255 fix(charts): allow saving charts on semantic views (create/update rejected non-table datasource types) (#44416) 2026-09-18 16:32:28 -03:00
Mike Bridge
ae5d8d89a3 fix(datasets): return 400, not 500, for a body-less purge POST; point the database-delete refusal at the purge flow (#44264)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
2026-09-18 14:16:38 -04:00
Mike Bridge
627f32ca62 fix(versioning): mount the dashboard version-history panel inside the content area, below the header (#44255)
Co-authored-by: Mike Bridge <michael.bridge@ext.preset.io>
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
2026-09-18 14:15:59 -04:00
Mike Bridge
8947d3b376 fix(semantic-layers): mask nested and union secrets in layer configuration (#43827)
Co-authored-by: Mike Bridge <michael.bridge@ext.preset.io>
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
2026-09-18 14:14:17 -04:00
Mike Bridge
e4bbd3973a fix(charts): type-aware datasource access parity for the chart list (#43848)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Co-authored-by: Mike Bridge <michael.bridge@ext.preset.io>
2026-09-18 14:13:42 -04:00
Mike Bridge
4bb51d7669 test(mcp): pin distinct cache keys for semantic-view get_table across time ranges (#44263)
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
2026-09-18 14:13:15 -04:00
Mike Bridge
b7f1bdd571 fix(mcp): keep the default list_metrics page under the response-token cap (#44266)
Co-authored-by: Mike Bridge <michael.bridge@ext.preset.io>
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
2026-09-18 14:12:26 -04:00
Mike Bridge
0599cc2516 fix(mcp): accept a time grain in get_table on semantic views (#44270)
Co-authored-by: Mike Bridge <michael.bridge@ext.preset.io>
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
2026-09-18 14:11:37 -04:00
dependabot[bot]
16090803bb chore(deps): bump @googleapis/sheets from 14.0.0 to 17.0.0 in /superset-frontend (#44420)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-09-19 01:01:05 +07:00
dependabot[bot]
79af673bca chore(deps-dev): bump webpack-bundle-analyzer from 5.3.2 to 5.3.3 in /superset-frontend (#44422)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-09-18 10:23:27 -07:00
dependabot[bot]
282bcb0edd chore(deps-dev): bump baseline-browser-mapping from 2.11.21 to 2.11.22 in /superset-frontend (#44421)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-09-18 10:23:16 -07:00
dependabot[bot]
4f1a34446d chore(deps): bump zod from 4.6.1 to 4.6.2 in /superset-frontend (#44419)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-09-18 10:22:53 -07:00
dependabot[bot]
9bb5a95976 chore(deps-dev): bump the babel group in /superset-embedded-sdk with 3 updates (#44417)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-09-18 10:21:01 -07:00
Sepuri Sai Krishna
b8f5b20928 test(frontend): await userEvent calls missed by the user-event v14 migration (#44335) 2026-09-18 09:54:57 -07:00
Joe Li
b5ad396416 fix(query): resolve sub-day "Last <unit>" time_range shorthand (#44254) 2026-09-18 09:17:21 -07:00
Amin Ghadersohi
a7dab4a551 fix(presto): require PyHive 0.7 for SQLAlchemy 2 (#44285) 2026-09-18 06:23:47 -04:00
Mike Bridge
bd786e2bea feat(versioning): render the starting version as the oldest history row for charts and dashboards (#44258)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Co-authored-by: Mike Bridge <michael.bridge@ext.preset.io>
2026-09-18 15:57:27 +10:00
Amin Ghadersohi
394bca55c7 fix(mcp): preserve dashboard filter values for restricted users (#44107) 2026-09-17 22:26:09 -04:00
Amin Ghadersohi
fc80a14850 feat(mcp): apply native dashboard filters from an MCP client (#44096)
Co-authored-by: Claude Opus 5 <noreply@anthropic.com>
2026-09-17 22:24:57 -04:00
Mike Bridge
560828d620 fix(dashboard): resolve display-control and drill datasources by type, not id alone (#42539)
Co-authored-by: Mike Bridge <michael.bridge@ext.preset.io>
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
2026-09-17 20:45:50 -04:00
Mike Bridge
20d7a3e9ae fix(table): preserve semantic temporal column references (#44369)
Co-authored-by: Mike Bridge <michael.bridge@ext.preset.io>
2026-09-17 20:45:33 -04:00
Mike Bridge
944e92dd57 feat(soft-delete): translate unique collisions with soft-deleted rows into restore guidance (#44184)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Co-authored-by: Mike Bridge <michael.bridge@ext.preset.io>
2026-09-17 20:45:15 -04:00
Mike Bridge
f1dc56607e fix(i18n): make module-level error constants lazy gettext (#44180)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Co-authored-by: Mike Bridge <michael.bridge@ext.preset.io>
2026-09-17 20:45:05 -04:00
Mike Bridge
22ae4405d4 fix(explore): anchor the add column/metric/filter popovers to their trigger (#44274)
Co-authored-by: Claude Fable 5.1 <noreply@anthropic.com>
Co-authored-by: Mike Bridge <michael.bridge@ext.preset.io>
2026-09-17 18:06:02 -04:00
Mike Bridge
795cdf2bf1 fix(mcp): include semantic views in get_dashboard_datasets (#44269)
Co-authored-by: Mike Bridge <michael.bridge@ext.preset.io>
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
2026-09-17 18:05:40 -04:00
Mike Bridge
30e5745cd7 fix(mcp): return a structured Unsupported marker for semantic-view get_chart_sql (#44267)
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
Co-authored-by: Mike Bridge <michael.bridge@ext.preset.io>
2026-09-17 18:05:16 -04:00
Mike Bridge
da1cac85f4 fix(versioning): refuse a version restore whose child history was pruned (sc-120012) (#44251)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
2026-09-17 18:04:45 -04:00
Elizabeth Thompson
3abc3588fa fix(sqla): guard unprotected Jinja template rendering in ExploreMixin (#44172)
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-09-17 15:02:59 -07:00
Joe Li
6b80fa7ec2 fix(mypy): narrow chart.uuid before RestoreChartVersionCommand in restore tests (#44394) 2026-09-17 14:51:59 -07:00
Joe Li
678bfae885 fix(charts): align week-grain time comparison offsets to whole weeks (#43936)
Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-17 14:51:47 -07:00
Joe Li
00c2f22fae fix(dashboard): make system default/dark themes assignable to a dashboard (#44361) 2026-09-17 14:45:16 -07:00
Amin Ghadersohi
4c3a890d8b chore(deps): bump flask-appbuilder from 5.2.2 to 5.2.3 (#44400) 2026-09-17 18:18:46 -03:00
Mike Bridge
77dbaafc2a chore(versioning): write-path latency metric for the capture finalizer (#44009)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Co-authored-by: Mike Bridge <michael.bridge@ext.preset.io>
2026-09-17 15:03:19 -04:00
Mike Bridge
fc71d0f9e8 fix(dataset): lock the If-Match validator's transaction-id read (#44091)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Co-authored-by: Mike Bridge <michael.bridge@ext.preset.io>
2026-09-17 15:01:27 -04:00
Mike Bridge
c426186a2e fix(versioning): scope stream_results to the activity SELECTs instead of mutating the session connection (#44261)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
2026-09-17 15:27:47 -03:00
Evan Rusackas
e8e10fb85c fix(charts): don't auto-migrate table charts to ag-grid-table on import unless enabled (#44151)
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
2026-09-17 11:06:19 -07:00
dependabot[bot]
2ad0053642 chore(deps-dev): bump react-refresh from 0.18.0 to 0.19.0 in /superset-frontend (#44381)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-09-17 10:13:14 -07:00
dependabot[bot]
8f4a70cfdf chore(deps-dev): bump minimizer-webpack-plugin from 5.10.0 to 5.10.1 in /superset-frontend (#44380)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-09-17 10:12:51 -07:00
dependabot[bot]
ca0f5cfa8e chore(deps-dev): bump @types/node from 26.5.0 to 26.5.1 in /superset-frontend (#44379)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-09-17 10:12:26 -07:00
dependabot[bot]
c28a8942b7 chore(deps): bump the rjsf group in /superset-frontend with 3 updates (#44378)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Đỗ Trọng Hải <41283691+hainenber@users.noreply.github.com>
2026-09-17 10:12:00 -07:00
Joe Li
66e64cc7d8 fix(time-format): stop reading short digit-only strings as epoch offsets (#44352)
Co-authored-by: sadpandajoe <sadpandajoe@users.noreply.github.com>
Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-17 10:05:38 -07:00
Gabriel Torres Ruiz
35768da1fd fix(dashboard): keep Save enabled when the properties modal name is set (#44356) 2026-09-17 13:15:59 -03:00
Geidō
91c917e199 feat(ci): flag chart metadata changes via labeler (#33180)
Co-authored-by: Diego Pucci <geido@192.168.0.8>
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-17 18:32:50 +03:00
dependabot[bot]
dedfe23a80 chore(deps-dev): bump @types/node from 26.5.0 to 26.5.1 in /superset-embedded-sdk (#44375)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-09-17 21:55:54 +07:00
dependabot[bot]
68433b08b5 chore(deps): bump astral-sh/setup-uv from 10.0.1 to 10.1.0 (#44377)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-09-17 21:55:44 +07:00
dependabot[bot]
bb5d138c50 chore(deps): bump apache/infrastructure-actions/allowlist-check from 1.0.2 to 1.0.3 (#44376)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-09-17 21:55:15 +07:00
dependabot[bot]
5576b73646 chore(deps-dev): bump @types/node from 26.5.0 to 26.5.1 in /superset-websocket (#44374)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-09-17 21:43:10 +07:00
dependabot[bot]
a68503b84a chore(deps): bump zod from 4.5.4 to 4.6.1 in /superset-frontend (#44383)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-09-17 21:42:37 +07:00
Mike Bridge
2ef8e0c1de fix(dashboard): require published for the read-gate's datasource fallback (#44093)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Co-authored-by: Mike Bridge <michael.bridge@ext.preset.io>
2026-09-17 08:47:10 -03:00
Amin Ghadersohi
4c77b0b924 fix(migrations): merge theme editors and purge audit heads (#44364) 2026-09-16 17:00:34 -07:00
Konstantin Khlopkov
fe7391e85e fix(sqla): run column metadata probe statement exactly once (#44242) 2026-09-16 16:55:57 -07:00
Shaitan
82df1ffa61 fix(jinja): escape current_username/current_user_email like sibling macros (#44081)
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
2026-09-16 16:53:56 -07:00
Shaitan
3d17fba362 fix(db): honor connect_args returned by adjust_engine_params (#44078)
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
2026-09-16 16:53:43 -07:00
Shaitan
ea8aac1273 fix(mcp): bound chart_ids length in the generate-dashboard request (#44071)
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
2026-09-16 16:53:22 -07:00
Shaitan
7ee33df647 fix(rls): match the RLS predicate lookup on case-normalized table identifiers (#43993)
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
2026-09-16 16:52:49 -07:00
Ujjwal Jain
187e7d4d80 fix(security): handle self-referential catalog qualifiers (#43974) 2026-09-16 16:52:26 -07:00
Francesco.Castaldi
f5c710d162 refactor(explore): move optional icons outside label element (#43584)
Co-authored-by: FrancescoCastaldi <francesco.castaldi@mapsgroup.it>
2026-09-16 16:51:23 -07:00
n4uu
181e9ad3e2 fix(themes): render brand spinner SVG via <img> data URI (#43504)
Signed-off-by: n4uu <n4uu@users.noreply.github.com>
Co-authored-by: n4uu <n4uu@users.noreply.github.com>
Co-authored-by: rusackas <evan@rusackas.com>
Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-16 16:50:56 -07:00
David Dallakyan
461fdaa5b9 feat(native-filters): drive cascade dependencies from chart metadata (#43223)
Co-authored-by: ashah65 <137852504+ashah65@users.noreply.github.com>
2026-09-16 16:26:29 -07:00
Sepuri Sai Krishna
baccb68d3b fix(chart): include Decimal metrics in contribution totals (#43222) 2026-09-16 16:26:08 -07:00
Sepuri Sai Krishna
175c2f1f1c fix(api): align sort and prophet option schemas with their operations (#43206) 2026-09-16 16:25:40 -07:00
Mike Bridge
f47f1ced19 feat(semantic layers): derive Explore picker modes from declared semantic view features (#42540)
Co-authored-by: Mike Bridge <michael.bridge@ext.preset.io>
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Co-authored-by: Amin Ghadersohi <amin.ghadersohi@gmail.com>
2026-09-16 16:25:04 -07:00
dependabot[bot]
7b6dd7597c chore(deps-dev): bump oxfmt from 0.66.0 to 0.67.0 in /superset-frontend (#44297)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-09-16 15:32:44 -07:00
dependabot[bot]
c417e3b6cc chore(deps-dev): bump yeoman-test from 11.8.1 to 11.8.2 in /superset-frontend (#44302)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-09-16 15:32:40 -07:00
Elizabeth Thompson
2884e4815b fix(datasets): catch MultipleResultsFound in get_or_create's schema-scoped lookup (#43725)
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
2026-09-16 15:03:33 -07:00
Elizabeth Thompson
40f5ab8d0c fix(mcp): downgrade synthetic tool ToolError log level to WARNING (SC-120340) (#44171)
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-09-16 15:03:29 -07:00
David Dallakyan
91c1135c05 fix(histogram): compare groupby membership using column labels (#43219) 2026-09-16 14:04:15 -07:00
Sepuri Sai Krishna
22cef7ef00 fix(chart-data): keep non-numeric columns out of contribution post-processing (#43203) 2026-09-16 14:03:43 -07:00
yousoph
dca54da242 feat(themes): add per-theme editors (Subject model) (#42404)
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
Co-authored-by: sadpandajoe <jcli38@gmail.com>
Co-authored-by: rusackas <evan@rusackas.com>
2026-09-16 13:50:51 -07:00
Gabriel Torres Ruiz
637e19f0ca fix(embedded): report content height independent of iframe height (#44313) 2026-09-16 16:33:04 -03:00
Joe Li
bd76e097a2 ci: pin codeql-action init to the same version as analyze (#44354) 2026-09-16 11:41:03 -07:00
dependabot[bot]
a01f507619 chore(deps-dev): bump @types/node from 26.4.1 to 26.5.0 in /superset-frontend (#44298)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-09-16 09:09:57 -07:00
Joe Li
0db1b47de7 test(dashboard): migrate native filter URL key E2E to Playwright (#41435)
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-09-16 09:07:24 -07:00
dependabot[bot]
134263e8d4 chore(deps-dev): bump ydb-sqlalchemy from 0.1.22 to 0.1.24 (#44329)
Signed-off-by: dependabot[bot] <support@github.com>
Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-09-16 09:05:10 -07:00
dependabot[bot]
9df22ffad3 chore(deps): bump yeoman-generator from 8.3.1 to 8.4.0 in /superset-frontend (#44299)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-09-16 09:02:48 -07:00
dependabot[bot]
79ab1467b5 chore(deps-dev): bump the typescript-eslint group across 1 directory with 2 updates (#44293)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-09-16 09:02:43 -07:00
dependabot[bot]
96d57a9734 chore(deps-dev): bump oxlint from 1.81.0 to 1.82.0 in /superset-frontend (#44301)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-09-16 09:02:39 -07:00
dependabot[bot]
55ee97bb36 chore(deps): bump holidays from 0.103 to 0.104 (#44325)
Signed-off-by: dependabot[bot] <support@github.com>
Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-09-16 09:02:35 -07:00
dependabot[bot]
8233b5e5ae chore(deps-dev): update teradatasql requirement from >=20.0.0.67 to >=20.0.0.68 (#44331)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-09-16 09:02:28 -07:00
Gabriel Torres Ruiz
2db9d6d51c fix(theme): do not suppress a dashboard theme when the forwarded config equals the workspace default (#44173) 2026-09-16 12:13:10 -03:00
Ville Brofeldt
2c135a5cdc test(semantic-layers): fix mypy call_args error on values endpoint test (#44187) 2026-09-16 07:46:37 -07:00
dependabot[bot]
7fbcc0825c chore(deps): bump zizmorcore/zizmor-action from 0.6.3 to 0.6.4 (#44327)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-09-16 21:28:14 +07:00
dependabot[bot]
2659660d90 chore(deps): bump apache/infrastructure-actions/allowlist-check from 1.0.1 to 1.0.2 (#44328)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-09-16 21:27:43 +07:00
dependabot[bot]
1432d7f0c0 chore(deps): bump actions/setup-java from 6.0.0 to 6.0.1 (#44330)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-09-16 21:27:24 +07:00
dependabot[bot]
24a79c4bd3 chore(deps): bump github/codeql-action/upload-sarif from 4.37.9 to 4.38.0 (#44332)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-09-16 21:27:03 +07:00
dependabot[bot]
d7516f1038 chore(deps): bump github/codeql-action/analyze from 4.37.9 to 4.38.0 (#44333)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-09-16 21:26:38 +07:00
Amin Ghadersohi
23bc3de0ca fix(ci): match migration conflicts on filename, not contents_url (#44318) 2026-09-16 07:58:57 -04:00
Amin Ghadersohi
0049f81407 feat(mcp): add typed Gantt chart support (#43737) 2026-09-16 05:44:48 -04:00
Amin Ghadersohi
0f021023f3 fix(mcp): advertise typed tool outputs (#43828) 2026-09-16 05:43:55 -04:00
dependabot[bot]
5dd63ef95b chore(deps): bump antd from 6.6.2 to 6.6.3 in /superset-frontend (#44300)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-09-16 00:11:50 -07:00
Đỗ Trọng Hải
9976e08333 chore(build): remove ts-jest usage for TS7 preparation (#44210) 2026-09-16 08:39:09 +07:00
Evan Rusackas
dd60cc27ff fix(dashboard): include native filter names in filter_state GET response (#44043)
Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-15 17:22:32 -07:00
Evan Rusackas
8da299f58c docs(explore): document the Line chart Percent change control (#44129)
Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-15 17:11:33 -07:00
Evan Rusackas
8f76ff45cd refactor(frontend): consolidate stray antd wrappers into superset-ui-core (#44177)
Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-15 17:08:38 -07:00
Mike Bridge
b1380cf43d fix(versioning): withhold related-record change detail from non-editors (#44319)
Co-authored-by: Mike Bridge <michael.bridge@ext.preset.io>
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
2026-09-15 20:13:22 -03:00
Mike Bridge
4f5cf799a2 fix(db): apply the configured default isolation level (set_db_default_isolation was a no-op) (#44247)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Co-authored-by: Mike Bridge <michael.bridge@ext.preset.io>
2026-09-15 20:13:05 -03:00
Mike Bridge
6cfb331974 fix(api): enforce is_managed_externally on chart/dashboard/dataset update (#44025)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Co-authored-by: Mike Bridge <michael.bridge@ext.preset.io>
2026-09-15 19:13:45 -03:00
Mike Bridge
68c8c7059e refactor(versioning): rename charts_attached_to_dashboard to chart_attachment_windows_for_dashboard (#44185)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Co-authored-by: Mike Bridge <michael.bridge@ext.preset.io>
2026-09-15 19:13:30 -03:00
Amin Ghadersohi
4c27cbd007 fix(migrations): merge purge audit and username index heads (#44288) 2026-09-15 16:50:43 -04:00
Gabriel Torres Ruiz
ef4281d2fc feat(mcp): add get_dashboard_data for bounded, filter-aware dashboard data (#44113) 2026-09-15 17:20:12 -03:00
dependabot[bot]
a184395eca chore(deps-dev): bump oxfmt from 0.66.0 to 0.67.0 in /docs (#44294)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-09-15 10:55:25 -07:00
dependabot[bot]
f3e1470f1a chore(deps-dev): bump oxlint from 1.81.0 to 1.82.0 in /superset-websocket (#44290)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-09-15 10:55:16 -07:00
Durgaprasad M L
dbccb3bcc7 fix(table): preserve configured server page size when row count is smaller (#42243) (#42248)
Co-authored-by: rusackas <evan@rusackas.com>
Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-15 10:10:50 -07:00
BingEdward
109402b8d2 fix: handle formatter errors gracefully in table cell rendering (#36189) (#39658)
Co-authored-by: BingEdward <7487@users.noreply.github.com>
Co-authored-by: Claude Opus 4.7 <noreply@anthropic.com>
2026-09-15 10:10:27 -07:00
dependabot[bot]
2b5dce1246 chore(deps-dev): bump @types/node from 26.4.1 to 26.5.0 in /superset-embedded-sdk (#44289)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-09-15 10:10:03 -07:00
dependabot[bot]
b9f75c9ed5 chore(deps-dev): bump oxfmt from 0.66.0 to 0.67.0 in /superset-websocket (#44291)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-09-15 10:09:58 -07:00
dependabot[bot]
a42a7df102 chore(deps-dev): bump @types/node from 26.4.1 to 26.5.0 in /superset-websocket (#44292)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-09-15 10:09:53 -07:00
dependabot[bot]
3a4aede10d chore(deps-dev): bump oxlint from 1.81.0 to 1.82.0 in /docs (#44296)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-09-15 10:09:48 -07:00
dependabot[bot]
7f04959614 chore(deps): bump antd from 6.6.2 to 6.6.3 in /docs (#44295)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-09-15 10:08:53 -07:00
Evan Rusackas
ae240a8e6f fix(security): use self-repository syntax in frontend workflow (#44118)
Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-14 22:30:41 -07:00
Elizabeth Thompson
b6de64fce7 fix(migrations): add functional index on ab_user(lower(username)) for case-insensitive login (#43939)
Signed-off-by: Elizabeth Thompson <eschutho@gmail.com>
2026-09-14 16:57:39 -07:00
Mafi
447544ea27 fix(reports): fail closed after capture rejection (#44191) 2026-09-15 09:06:31 +10:00
Mike Bridge
b4604c320e refactor(core): let DeleteModal callers supply the confirm button label and style (#44257)
Co-authored-by: Mike Bridge <michael.bridge@ext.preset.io>
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
2026-09-14 19:12:08 -03:00
Mike Bridge
6b696cb818 fix(versioning): version-history panel design fidelity (#44181)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
2026-09-14 19:11:56 -03:00
Mike Bridge
9526ce8082 fix(archive): hide recovery actions from read-only users (#44179)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
2026-09-14 19:11:45 -03:00
Mike Bridge
7f0ca472e4 fix(versioning): row-lock the live entity during version restore (#44015)
Co-authored-by: Mike Bridge <michael.bridge@ext.preset.io>
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
2026-09-14 19:11:31 -03:00
Mike Bridge
c83c95faf6 chore(cli): direct tests for the deletion-retention click entry points; non-zero exit on blocked/not-found force-purge (#44252)
Co-authored-by: Mike Bridge <michael.bridge@ext.preset.io>
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
2026-09-14 19:11:28 -03:00
Mike Bridge
e797f3def6 fix(views): error-response bodies must carry their message (#44090)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
2026-09-14 19:11:17 -03:00
Mike Bridge
4ece071eb7 fix(versioning): carry affected chart names in the rollup impact payload (#43838)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Co-authored-by: Mike Bridge <michael.bridge@ext.preset.io>
2026-09-14 19:11:00 -03:00
Mike Bridge
f8abb280d9 fix(versioning): resolve change-record dashboard membership via attachment windows (#44089)
Co-authored-by: Mike Bridge <michael.bridge@ext.preset.io>
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
2026-09-14 19:10:55 -03:00
Mike Bridge
d3906aabf3 fix(mcp): refuse certification changes on externally managed dashboards (#44094)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
2026-09-14 19:10:17 -03:00
Elizabeth Thompson
0f70666cc1 fix(sql-validate): downgrade log level for undefined Jinja function errors (SC-120409) (#44202)
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
2026-09-14 15:03:17 -07:00
Elizabeth Thompson
4db78bab99 fix(reports): catch JSONDecodeError in report extra validation (dashboard position_json/json_metadata) (#44204) 2026-09-14 15:03:14 -07:00
Elizabeth Thompson
6aaa3ed986 fix(sqla): move process_template inside try block in get_fetch_values_predicate (#44246)
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-09-14 15:03:10 -07:00
Mike Bridge
ad90bf543f test(tags): make humanized-timestamp assertions deterministic (#44260)
Co-authored-by: Mike Bridge <michael.bridge@ext.preset.io>
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
2026-09-14 18:09:38 -03:00
Mike Bridge
43a0031995 fix(versioning): edit-gate the version-history and activity endpoints (#44021)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
2026-09-14 18:04:38 -03:00
Mike Bridge
42c5046864 feat(deletion-retention): scheduled pruning policy for the purge audit log (#43490)
Co-authored-by: Mike Bridge <michael.bridge@ext.preset.io>
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
2026-09-14 18:04:18 -03:00
dependabot[bot]
eeafd65b74 chore(deps-dev): bump the swc group across 1 directory with 3 updates (#44223)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-09-14 10:31:42 -07:00
Adarsh Mishra
d7f658dbde fix(frontend): dispatch warning toasts in downloadAsPdf/downloadAsImage (#44168)
Co-authored-by: Adarsh-Me <adarsh-me@users.noreply.github.com>
2026-09-14 10:21:22 -07:00
Erik O'Leary
f35de69de8 fix(reports): remove machine-auth priming navigation that can clobber the session cookie (#44109)
Signed-off-by: Erik O'Leary <erik.m.oleary@gmail.com>
2026-09-14 10:15:47 -07:00
Aleem Sattar
d4d3e97098 docs: add Savantly to users in the wild (#44108) 2026-09-14 10:15:24 -07:00
Konstantin Khlopkov
f205b16f9f docs(extensions): point the quick-start closing example at real references (#44098) 2026-09-14 10:14:23 -07:00
Evan Rusackas
23bd14eede refactor(list-view): eliminate any usage in ListView/utils.ts (#44186)
Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-14 10:01:18 -07:00
Evan Rusackas
20a09bffa7 fix(security): use self-repository syntax in extensions-cli workflow (#44119)
Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-14 10:01:13 -07:00
Evan Rusackas
0802fa3888 fix(security): use self-repository syntax for setup-backend in helm workflow (#44117)
Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-14 10:01:00 -07:00
Evan Rusackas
1b08bebf00 fix(security): use self-repository syntax for setup-backend in testcontainers workflow (#44116)
Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-14 10:00:40 -07:00
Mike Bridge
96ef982d24 fix(versioning): close the two retention-interaction races (#44012)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Co-authored-by: Mike Bridge <michael.bridge@ext.preset.io>
2026-09-14 09:58:55 -07:00
Mike Bridge
818857d3d9 fix(dataset): refresh the entity under the conditional-write row lock (#44027)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
2026-09-14 09:56:57 -07:00
Joe Li
d028acd567 fix(docker): stop CI startup when initialization fails (#44125) 2026-09-14 09:30:21 -07:00
Geidō
2eccf3bfcb fix(mcp): snapshot chart fields in get_chart_data before session expiry (#44004)
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-14 19:28:00 +03:00
dependabot[bot]
24fe87e5db chore(deps): bump dompurify from 3.4.14 to 3.4.15 in /superset-frontend (#44232)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-09-14 03:39:05 -07:00
dependabot[bot]
47e0abd960 chore(deps-dev): bump @testing-library/user-event from 14.6.5 to 14.6.7 in /superset-frontend (#44234)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-09-14 03:39:02 -07:00
Alexandru Soare
749c8aa078 fix: strip extraneous details from datasource access-denied errors (#43458)
Co-authored-by: Enzo Martellucci <52219496+EnxDev@users.noreply.github.com>
Co-authored-by: Diego Pucci <diegopucci.me@gmail.com>
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-14 13:14:02 +03:00
dependabot[bot]
a33e0d4cd3 chore(deps-dev): bump minimizer-webpack-plugin from 5.9.0 to 5.10.0 in /superset-frontend (#44233)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-09-14 00:33:19 -07:00
dependabot[bot]
f107494efe chore(deps-dev): bump yeoman-test from 11.7.0 to 11.8.1 in /superset-frontend (#44224)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-09-14 00:33:03 -07:00
dependabot[bot]
31856550bc chore(deps-dev): bump eslint from 10.9.1 to 10.10.0 in /superset-frontend (#44226)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-09-14 00:33:00 -07:00
dependabot[bot]
b075c5ecfe chore(deps-dev): bump stylelint from 17.14.1 to 17.15.0 in /superset-frontend (#44230)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-09-14 00:32:56 -07:00
dependabot[bot]
61bbca823d chore(deps): bump react-window from 2.3.0 to 2.3.1 in /superset-frontend (#44225)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-09-14 00:32:42 -07:00
dependabot[bot]
3d4f38b364 chore(deps): bump yeoman-generator from 8.3.0 to 8.3.1 in /superset-frontend (#44227)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-09-14 00:32:39 -07:00
dependabot[bot]
e6255fad4c chore(deps-dev): bump jest-html-reporter from 4.4.0 to 4.4.2 in /superset-frontend (#44228)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-09-14 00:32:36 -07:00
dependabot[bot]
ae15827b06 chore(deps): bump react-error-boundary from 6.1.4 to 6.1.5 in /superset-frontend (#44229)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-09-14 00:32:32 -07:00
dependabot[bot]
090fc6bba8 chore(deps): bump swagger-ui-react from 5.32.14 to 5.32.15 in /docs (#44221)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-09-14 00:30:57 -07:00
dependabot[bot]
0c43a6da94 chore(deps): bump @swc/core from 1.16.1 to 1.16.2 in /docs (#44222)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-09-14 00:30:53 -07:00
Elizabeth Thompson
d9b0cb0453 fix(database): reject non-dict encrypted_extra at schema validation layer (#44145)
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-09-13 15:04:10 -07:00
Đỗ Trọng Hải
8e66145cfe feat(build): migrate JS files in superset-frontend to ESM (#43686) 2026-09-13 10:30:27 +07:00
Evan Rusackas
f443a73b15 feat(ag-grid-table): add zebra striping control (#44112)
Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-12 19:44:01 -07:00
Evan Rusackas
0b801d0008 chore(deps): remove unused underscore dependency (#44175) 2026-09-13 07:33:25 +07:00
dependabot[bot]
f4706c6a0c chore(deps): bump sqlglot from 30.17.0 to 30.18.0 (#44192)
Signed-off-by: dependabot[bot] <support@github.com>
Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: rusackas <evan@rusackas.com>
Co-authored-by: Evan Rusackas <evan@preset.io>
Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-12 16:19:11 -07:00
dependabot[bot]
d3bf3c9c25 chore(deps-dev): bump @testing-library/user-event from 12.8.3 to 14.6.5 in /superset-frontend (#43512)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Superset Dev <dev@superset.apache.org>
Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
Co-authored-by: rusackas <evan@rusackas.com>
2026-09-12 14:41:25 -07:00
dependabot[bot]
598d5f723b chore(deps-dev): update snowflake-sqlalchemy requirement from <2,>=1.11.0 to >=1.11.1,<2 (#44197)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-09-12 11:37:43 -07:00
Joe Li
f51ae6a506 fix(dataset): derive virtual dataset schema from SQL Lab query (#43313)
Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-12 11:00:10 -07:00
Shaitan
7aba2d3392 fix(postgres): detect search_path changes via set_config, not only SET (#43060)
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
2026-09-12 10:59:46 -07:00
Tushar Dhawas (Kyo)
8e69572025 fix(gantt): prevent y-axis labels from being cut off (#39137)
Co-authored-by: codeant-ai-for-open-source[bot] <244253245+codeant-ai-for-open-source[bot]@users.noreply.github.com>
2026-09-12 10:59:16 -07:00
dependabot[bot]
16fc35667e chore(deps): bump cachetools from 7.1.7 to 7.1.8 (#44193)
Signed-off-by: dependabot[bot] <support@github.com>
Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-09-12 08:02:47 -07:00
dependabot[bot]
37229ae474 chore(deps-dev): update databricks-sql-connector requirement from <4.5.0,>=4.4.0 to >=4.5.0,<4.6.0 (#44194)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-09-12 08:02:43 -07:00
dependabot[bot]
d0bfc671fe chore(deps-dev): update pyathena requirement from <4,>=3.35.4 to >=3.36.0,<4 (#44195)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-09-12 08:02:40 -07:00
dependabot[bot]
ba606e043c chore(deps): bump flask-caching from 2.5.0 to 2.5.1 (#44196)
Signed-off-by: dependabot[bot] <support@github.com>
Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-09-12 08:02:37 -07:00
dependabot[bot]
5f07d38334 chore(deps-dev): bump clickhouse-connect from 1.7.2 to 1.8.0 (#44198)
Signed-off-by: dependabot[bot] <support@github.com>
Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-09-12 08:02:34 -07:00
dependabot[bot]
e41f019fb2 chore(deps-dev): bump pymssql from 2.3.13 to 2.4.0 (#44199)
Signed-off-by: dependabot[bot] <support@github.com>
Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-09-12 08:02:30 -07:00
Mike Bridge
3e7bdec53b ci(python-unit): run the unit suite in parallel with pytest-xdist (#44178)
Co-authored-by: Mike Bridge <michael.bridge@ext.preset.io>
Co-authored-by: Claude Code <noreply@anthropic.com>
2026-09-12 10:58:46 +07:00
Ville Brofeldt
3d01094d23 feat(docker): batteries-included default image, minimal image to -lean (#44100)
Co-authored-by: Evan Rusackas <evan@rusackas.com>
Co-authored-by: Evan Rusackas <evan@preset.io>
Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-11 17:58:42 -07:00
Mike Bridge
b366958da3 docs(security): edit-gate version-history and change metadata (#44033)
Co-authored-by: Mike Bridge <michael.bridge@ext.preset.io>
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
2026-09-11 20:56:24 -04:00
Mike Bridge
1f9782ee58 docs(versioning): describe the one-time settings-migration history entry (#43776)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
2026-09-11 17:30:09 -04:00
dependabot[bot]
83530957a8 chore(deps-dev): bump vitest from 4.0.18 to 5.0.0 in /superset-embedded-sdk (#44158)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-09-11 12:55:21 -07:00
dependabot[bot]
0a4d3ee3ac chore(deps-dev): bump vitest from 4.1.11 to 5.0.0 in /superset-websocket (#44157)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-09-11 12:55:17 -07:00
dependabot[bot]
774a51124e chore(deps): bump baseline-browser-mapping from 2.11.20 to 2.11.21 in /docs (#44159)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-09-11 02:39:15 -07:00
dependabot[bot]
36361d9d04 chore(deps): bump postcss from 8.5.26 to 8.5.28 in /superset-frontend (#44160)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-09-11 02:39:11 -07:00
dependabot[bot]
f1d1a826ca chore(deps): bump supercluster from 9.0.0 to 9.1.0 in /superset-frontend (#44161)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-09-11 02:39:07 -07:00
dependabot[bot]
b3aa8ef796 chore(deps-dev): bump minimizer-webpack-plugin from 5.8.0 to 5.9.0 in /superset-frontend (#44162)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-09-11 02:39:03 -07:00
dependabot[bot]
789b905521 chore(deps): bump mapbox-gl from 3.29.0 to 3.30.0 in /superset-frontend (#44163)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-09-11 02:38:59 -07:00
dependabot[bot]
0aa445ed0f chore(deps-dev): bump baseline-browser-mapping from 2.11.20 to 2.11.21 in /superset-frontend (#44164)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-09-11 02:38:55 -07:00
Mehmet Salih Yavuz
06e3a325ae chore(deps): bump pymongosql to 0.7.4 (#44166) 2026-09-11 12:28:34 +03:00
dependabot[bot]
b415d78ac7 chore(deps): bump the storybook group in /docs with 2 updates (#44134)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-09-10 23:08:30 -07:00
dependabot[bot]
be608f7359 chore(deps-dev): bump the storybook group in /superset-frontend with 6 updates (#44135)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-09-10 23:08:26 -07:00
dependabot[bot]
d3d09b9ae7 chore(deps): bump react-map-gl from 8.1.2 to 8.1.3 in /superset-frontend (#44136)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-09-10 23:08:23 -07:00
dependabot[bot]
eb8efaa8f5 chore(deps-dev): bump yeoman-test from 11.6.0 to 11.7.0 in /superset-frontend (#44137)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-09-10 23:08:19 -07:00
Evan Rusackas
89565dbb49 fix(explore): surface a toast when pivot Excel export can't find the table (#44031)
Co-authored-by: Claude Code <noreply@anthropic.com>
2026-09-10 17:01:28 -07:00
Evan Rusackas
70961a68b9 chore(ci): use self-repository syntax for local action references (#44131)
Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-10 17:01:08 -07:00
Greg Neighbors
1b03ad89fb feat(mcp): treemap chart type plugin (#43569)
Co-authored-by: Greg Neighbors <gregneighbors@Gregs-Air-2.lan>
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
2026-09-10 19:11:01 -04:00
Shivam Goel
412ab43712 fix(cache): key on resolved bounds when a query has no time_range (#43914) 2026-09-10 15:41:20 -07:00
Elizabeth Thompson
13b7bcd6c1 fix(sqllab): wrap raw DBAPI errors in query cost estimation (#43934)
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-09-10 15:05:09 -07:00
Amin Ghadersohi
39944ffd47 fix(mcp): make unknown dataset dimension errors actionable (#44106) 2026-09-10 16:41:12 -04:00
Gabriel Torres Ruiz
78e1762255 fix(mcp): honor forwarded active dashboard filters in get_chart_preview and get_chart_info (#44022) 2026-09-10 15:37:16 -03:00
Mafi
12e747437d fix(reports): recheck readiness at capture time (#44114)
Co-authored-by: Rafael Benitez <rebenitez1802@gmail.com>
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-09-10 20:21:48 +02:00
Bikash
3f64442785 fix(docker): install the frontend from the lockfile in docker-frontend.sh (#43168)
Co-authored-by: bikashJMV <bikash@jmv.co.in>
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-10 11:19:41 -07:00
Viktor Högberg
f490bf5a78 fix(funnel): prevent horizontal legends from overlapping the chart by default (#43112)
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
2026-09-10 11:17:28 -07:00
Denys Mamchura
7df4bf3f77 fix(country-map): Malawi map - add missing Karonga district, de-duplicate Chitipa (#42842)
Signed-off-by: Denys Mamchura <denys.work.ua@gmail.com>
2026-09-10 11:16:21 -07:00
SBIN2010
b20ad09391 feat: add conditional formating to CountryMap plugin (#42941) 2026-09-10 20:49:10 +03:00
Amin Ghadersohi
46d40e18b0 fix(mcp): expose resolved query time boundaries (#44105) 2026-09-10 11:33:17 -04:00
Mehmet Salih Yavuz
e5c2a3e4f6 fix(datasets): warn about affected charts and dashboards on bulk delete (#43967) 2026-09-10 14:20:37 +03:00
Shaitan
fbd75f0086 fix(dashboard): apply the import overwrite permission check to slug-matched dashboards (#42582) 2026-09-10 11:46:01 +01:00
Shaitan
b6ead0d429 fix(semantic-layers): apply datasource access checks on layer endpoints (#41430)
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-09-10 11:45:36 +01:00
wenjie liang
e22ce19786 fix(i18n): improve Simplified Chinese translations (#43813)
Co-authored-by: Evan Rusackas <evan@preset.io>
Co-authored-by: Evan Rusackas <evan@rusackas.com>
2026-09-09 21:12:35 -07:00
Aadhya Puttur
64205357d2 fix(rison-filters): only catch ParserException when parsing filters (#43076)
Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
Co-authored-by: bot_apk <apk@cognition.ai>
Co-authored-by: Joe Li <joe@preset.io>
2026-09-09 19:58:52 -07:00
Louis Frament
181ca7d0eb fix(country-map): Madagascar's boundaries should have unique ISO (#42471) 2026-09-09 19:57:47 -07:00
Evan Rusackas
1820a162db fix(maplibre): wire up maplibre-gl 6's worker for plugin-chart-point-cluster-map (#44042)
Co-authored-by: Claude Code <noreply@anthropic.com>
2026-09-09 19:51:11 -07:00
Joe Li
b9407b67b3 fix(ci): skip Showtime jobs for unrelated PR events (#44123)
Co-authored-by: Claude Code <noreply@anthropic.com>
Co-authored-by: Evan Rusackas <evan@preset.io>
2026-09-09 19:03:57 -07:00
luoianun
1b46983127 fix(sql): detect disallowed functions via AST (#42072)
Co-authored-by: lawrence.luo <lawrence.luo@idreamsky.com>
Co-authored-by: Evan Rusackas <evan@preset.io>
2026-09-09 17:58:32 -07:00
Amogh Atreya
b02c7afa00 feat(resample): Add "Fill the entire time range" option to Resample controls (#42587) (#42609)
Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Evan Rusackas <evan@preset.io>
2026-09-09 17:57:22 -07:00
Evan Rusackas
bdae45fee3 docs(mcp): document delete_chart and delete_dashboard tools (#43898)
Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-09 17:53:16 -07:00
Evan Rusackas
af2563f9c3 docs(i18n): document versioned language pack script delivery (#43904)
Co-authored-by: Claude <noreply@anthropic.com>
2026-09-09 17:53:03 -07:00
Evan Rusackas
731a97dbe6 fix(security): suppress zizmor self-repository false positive for postgres celery worker step (#44026) 2026-09-09 17:52:41 -07:00
Evan Rusackas
c915e63aa4 fix(security): suppress zizmor self-repository false positive for playwright mobile step (#44045)
Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
Co-authored-by: Đỗ Trọng Hải <41283691+hainenber@users.noreply.github.com>
2026-09-09 17:52:29 -07:00
Evan Rusackas
4edf7b1005 fix(deps): cap mcp to <2.0 to match fastmcp 3.x's own constraint (#44039)
Co-authored-by: Claude Code <noreply@anthropic.com>
2026-09-09 17:51:51 -07:00
Evan Rusackas
2030adb5ce fix(security): suppress zizmor self-repository false positive for mysql celery worker step (#44041)
Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-09 17:51:23 -07:00
Evan Rusackas
09ae6fa3c3 fix(security): suppress zizmor self-repository false positive for sqlite celery worker step (#43996)
Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-09 17:50:57 -07:00
Evan Rusackas
638ad7980c fix(security): suppress zizmor self-repository false positive for celery worker step (#43986) 2026-09-09 17:50:50 -07:00
Evan Rusackas
37c6037452 fix(security): use self-repository syntax for setup-backend in postgres job (#44040)
Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-09 17:49:45 -07:00
Evan Rusackas
71e6c5f3cd fix(security): suppress zizmor self-repository false positive for postgres setup step (#44038)
Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-09 17:49:37 -07:00
Evan Rusackas
4e4cdf421c fix(security): suppress zizmor self-repository false positive for hive setup-postgres step (#44037)
Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-09 17:49:28 -07:00
Evan Rusackas
bc057813ae feat(ci): restore container image vulnerability scanning with Grype (#44035)
Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-09 17:48:48 -07:00
Evan Rusackas
3f780c503e fix(ci): add per-PR concurrency to the Showtime trigger workflow (#44120)
Co-authored-by: Claude Code <noreply@anthropic.com>
2026-09-09 15:06:47 -07:00
Elizabeth Thompson
62fa7a371b fix(charts/data): return 400 instead of 500 on reversed date range (SC-118279) (#43517)
Co-authored-by: Claude <noreply@anthropic.com>
2026-09-09 15:03:04 -07:00
Elizabeth Thompson
e4440b614c fix(database): reject non-dict extra field in extra_validator (#44092)
Co-authored-by: Claude Opus 5 <noreply@anthropic.com>
2026-09-09 15:02:55 -07:00
dependabot[bot]
a9424afb4e chore(deps-dev): remove unused globals from /superset-websocket (#44047)
Signed-off-by: dependabot[bot] <support@github.com>
Signed-off-by: hainenber <dotronghai96@gmail.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: hainenber <dotronghai96@gmail.com>
2026-09-09 14:55:05 -07:00
dependabot[bot]
b75f629286 chore(deps-dev): bump oxlint from 1.80.0 to 1.81.0 in /superset-frontend (#44057)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: rusackas <evan@rusackas.com>
Co-authored-by: Evan Rusackas <evan@preset.io>
Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-09 14:55:01 -07:00
Amin Ghadersohi
74eb298eb6 fix(mcp): preserve chart form data on update (#43679)
Co-authored-by: Claude Opus 5 <noreply@anthropic.com>
2026-09-09 17:43:04 -04:00
Ville Brofeldt
9a02c4b611 chore: deprecate helm chart (#44097)
Co-authored-by: Claude Code <noreply@anthropic.com>
Co-authored-by: Evan Rusackas <evan@preset.io>
2026-09-09 14:39:56 -07:00
Sam Firke
f69023a9c6 fix(dashboard): freeze nested tabs to the top when scrolling down (#43940) 2026-09-09 15:56:23 -04:00
Joe Li
f8caa2bc2b fix(dashboard): stop duplicate cross-filter chips in FilterBar (#43949)
Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-09 11:51:14 -07:00
Joe Li
0484f9c209 fix(database): sync schema_access permissions on import (#43950)
Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-09 11:50:20 -07:00
Evan Rusackas
3e13b89427 feat(ci): add testcontainers-based db_engine_specs tests (7 dialects) (#43502)
Signed-off-by: dependabot[bot] <support@github.com>
Signed-off-by: hainenber <dotronghai96@gmail.com>
Signed-off-by: Gabriel Torres Ruiz <gabo2595@gmail.com>
Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Superset Dev <dev@superset.apache.org>
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Milad Rashidikhah <mrashidikhah32@gmail.com>
Co-authored-by: bucketbase26 <singhayush062006@gmail.com>
Co-authored-by: Joe Li <joe@preset.io>
Co-authored-by: Viktor Högberg <119532259+vhogberg@users.noreply.github.com>
Co-authored-by: joey <97154801+chkang83@users.noreply.github.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Chandan P <95340276+NoiceHax@users.noreply.github.com>
Co-authored-by: Mafi <matt.fitzgerald@gmail.com>
Co-authored-by: Matt Fitzgerald <matt.fitzgerald@preset.io>
Co-authored-by: Enzo Martellucci <52219496+EnxDev@users.noreply.github.com>
Co-authored-by: Alexandru Soare <37236580+alexandrusoare@users.noreply.github.com>
Co-authored-by: Mehmet Salih Yavuz <salih.yavuz@proton.me>
Co-authored-by: Sanmitra Nagaraj <48400413+s1ny1998@users.noreply.github.com>
Co-authored-by: Lalith Kothuru <lalith.kothuru@gmail.com>
Co-authored-by: shaurya <shauryajaiswal.dev@gmail.com>
Co-authored-by: Shaurya <19599684+no-hup@users.noreply.github.com>
Co-authored-by: Đỗ Trọng Hải <41283691+hainenber@users.noreply.github.com>
Co-authored-by: rlei <242280117+rlei-odes@users.noreply.github.com>
Co-authored-by: Ville Brofeldt <33317356+villebro@users.noreply.github.com>
Co-authored-by: Gabriel Torres Ruiz <gabo2595@gmail.com>
Co-authored-by: hainenber <dotronghai96@gmail.com>
Co-authored-by: ʈᵃᵢ <tai@apache.org>
Co-authored-by: Mike Bridge <michael.bridge@preset.io>
Co-authored-by: Elizabeth Thompson <eschutho@gmail.com>
Co-authored-by: Francesco.Castaldi <info@francescocastaldi.it>
Co-authored-by: FrancescoCastaldi <francesco.castaldi@mapsgroup.it>
Co-authored-by: Abdul Rehman <76230556+Abdulrehman-PIAIC80387@users.noreply.github.com>
Co-authored-by: Sepuri Sai Krishna <saik20533@gmail.com>
Co-authored-by: Mallikarjuna Reddy Nimmakayala <mallikarjunareddy.nimmakayala@gmail.com>
Co-authored-by: PRATHAMESH HUKKERI <prathamhukkeri04@gmail.com>
Co-authored-by: Prathamesh Hukkeri <prathamesh04@users.noreply.github.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: SBIN2010 <Sbin2010@mail.ru>
2026-09-09 11:41:09 -07:00
Joe Li
67d170e611 fix(reports): don't send both chart and dashboard on create (#43137)
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
2026-09-09 11:39:34 -07:00
Ankit
e0103fa889 fix(plugin-chart-echarts): honor per-metric formats in Timeseries tooltips (#43113) 2026-09-09 10:56:59 -07:00
Francesco.Castaldi
b1185d8c05 fix(sql): preserve optimizer hints when formatting semicolon-terminated statements with trailing comments (#43565)
Co-authored-by: FrancescoCastaldi <francesco.castaldi@mapsgroup.it>
2026-09-09 10:44:01 -07:00
Francesco.Castaldi
29dd683f80 fix(database): set default catalog on dataset created from file uploads (#43586)
Co-authored-by: FrancescoCastaldi <francesco.castaldi@mapsgroup.it>
2026-09-09 10:43:41 -07:00
Joe Li
70346a51b6 perf(examples): dedupe dataset imports, right-size chunksize, add timing to load_examples (#43907)
Co-authored-by: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-09 10:16:01 -07:00
Joe Li
0534d569d0 fix(sqllab): mark early-cancelled query stopped, not stuck running (#43889)
Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-09 09:47:58 -07:00
Joe Li
f66843ef0c fix(plugin-chart-table): stop narrowing sticky header/footer width (#43937) 2026-09-09 09:47:27 -07:00
Balaji Madhan
078915f4ce docs(contributing): update legacy rst reference (#44087) 2026-09-09 23:20:02 +07:00
dependabot[bot]
a78591be60 chore(deps-dev): bump oxfmt from 0.65.0 to 0.66.0 in /superset-websocket (#44049)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-09-09 22:34:46 +07:00
Evan Rusackas
4dcc800b58 fix(security): use self-repository syntax for change-detector in integration tests (#44065)
Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-09 22:33:42 +07:00
Evan Rusackas
9267d8b666 fix(security): suppress zizmor self-repository false positive for playwright experimental step (#44064)
Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-09 22:33:33 +07:00
Evan Rusackas
b1c6401e82 fix(security): suppress zizmor self-repository false positive for mysql setup step (#44067)
Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-09 22:33:23 +07:00
Evan Rusackas
196fe87c54 fix(security): use self-repository syntax for setup-backend in mysql job (#44066)
Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-09 22:33:21 +07:00
Evan Rusackas
09522cc4b8 fix(security): suppress zizmor self-repository false positive for playwright test-data step (#44075)
Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-09 22:32:40 +07:00
Evan Rusackas
4aca0d7da4 fix(security): suppress zizmor self-repository false positive for playwright install step (#44074)
Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-09 22:32:29 +07:00
Evan Rusackas
ce700f389c fix(security): suppress zizmor self-repository false positive for postgres setup step (#44084)
Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-09 22:31:57 +07:00
Evan Rusackas
072a29ddb5 fix(security): suppress zizmor self-repository false positive for playwright build step (#44073)
Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-09 22:31:05 +07:00
Shaitan
f73ccee782 fix(couchbase): remove debug prints that emit the connection URI to stdout (#44070)
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
2026-09-09 22:30:45 +07:00
Evan Rusackas
0fe58044cb fix(security): use self-repository syntax for setup-backend in Playwright workflow (#44085)
Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-09 22:29:56 +07:00
Evan Rusackas
4686d13379 fix(security): use self-repository syntax for change-detector in Playwright workflow (#44086)
Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-09 22:28:38 +07:00
dependabot[bot]
68528e3308 chore(deps-dev): bump jest-environment-jsdom from 30.5.0 to 30.5.1 in /superset-frontend (#44055)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-09-09 22:26:26 +07:00
Evan Rusackas
c442180328 fix(security): use self-repository syntax for chart-testing action ref (#44083)
Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-09 22:25:42 +07:00
Evan Rusackas
80ebfad094 fix(security): suppress zizmor self-repository false positive for npm install step (#44076)
Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-09 22:25:21 +07:00
Joe Li
d1ad6aeda6 chore(docker): speed up image builds and the compose dev loop (#43916)
Co-authored-by: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-09 22:24:37 +07:00
Michael S. Molina
7f06e4eb60 feat(table): add opt-in migration from Table V1 to Table V2 (#42088)
Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-09 12:08:05 -03:00
dependabot[bot]
07a8f8b984 chore(deps-dev): bump oxlint from 1.80.0 to 1.81.0 in /docs (#44052)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-09-09 07:50:48 -07:00
Amin Ghadersohi
08e686b535 fix(mcp): complete Gauge chart support follow-up (#43943) 2026-09-09 10:34:50 -04:00
Mafi
97329bb1cf fix(reports): detect perceptually blank screenshots (#44034) 2026-09-09 15:18:20 +02:00
Shaitan
4d8dfdd152 fix(sqllab): restrict TabStateView updates to owned columns and queries (#43992)
Co-authored-by: sha174n <pedro.sousa@preset.io>
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
2026-09-09 14:03:30 +01:00
Shaitan
57a92170bd fix(chart): apply the query-context datasource check on create and update (#43997)
Co-authored-by: sha174n <pedro.sousa@preset.io>
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
2026-09-09 14:03:14 +01:00
Shaitan
954dbc9ff6 fix(dataset): validate SQL table access on virtual dataset import (#43999)
Co-authored-by: sha174n <pedro.sousa@preset.io>
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
2026-09-09 14:02:52 +01:00
Shaitan
7b83ed8374 fix(mcp): align execute_sql table-access checks with the SQL Lab path (#43998)
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
2026-09-09 14:02:35 +01:00
Enzo Martellucci
49b9347974 fix(charts): preserve dataset conversion when saving SQL Lab charts (#43988)
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-09 14:07:50 +02:00
dependabot[bot]
df95ab23ec chore(deps-dev): bump @types/node from 26.4.0 to 26.4.1 in /superset-websocket (#44046)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-09-09 04:47:29 -07:00
dependabot[bot]
e43f44e91e chore(deps-dev): bump @types/node from 26.4.0 to 26.4.1 in /superset-embedded-sdk (#44048)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-09-09 04:47:24 -07:00
dependabot[bot]
d38f20e5ad chore(deps): bump query-string from 9.5.0 to 9.5.1 in /superset-frontend (#44061)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-09-09 04:46:59 -07:00
dependabot[bot]
0a412b07cb chore(deps-dev): bump webpack from 5.110.2 to 5.110.3 in /superset-embedded-sdk (#44050)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-09-09 04:46:28 -07:00
dependabot[bot]
5e99f14ac9 chore(deps-dev): bump oxlint from 1.80.0 to 1.81.0 in /superset-websocket (#44051)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-09-09 04:46:23 -07:00
dependabot[bot]
ea287c1ab0 chore(deps-dev): bump webpack from 5.110.2 to 5.110.3 in /docs (#44053)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-09-09 04:46:16 -07:00
dependabot[bot]
e170822a28 chore(deps-dev): bump oxfmt from 0.65.0 to 0.66.0 in /docs (#44054)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-09-09 04:46:13 -07:00
dependabot[bot]
677e9189f1 chore(deps-dev): bump oxfmt from 0.65.0 to 0.66.0 in /superset-frontend (#44056)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-09-09 04:46:02 -07:00
dependabot[bot]
638f87de5f chore(deps-dev): bump jest from 30.5.0 to 30.5.1 in /superset-frontend (#44058)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-09-09 04:45:51 -07:00
dependabot[bot]
cb2188aec3 chore(deps-dev): bump babel-jest from 30.5.0 to 30.5.1 in /superset-frontend (#44059)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-09-09 04:45:43 -07:00
dependabot[bot]
176a50d254 chore(deps-dev): bump webpack from 5.110.2 to 5.110.3 in /superset-frontend (#44060)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-09-09 04:45:37 -07:00
dependabot[bot]
010c7a12ed chore(deps): bump query-string from 9.5.0 to 9.5.1 in /superset-frontend (#44061)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-09-09 04:45:27 -07:00
dependabot[bot]
de08dc207c chore(deps-dev): bump @types/node from 26.4.0 to 26.4.1 in /superset-frontend (#44062)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-09-09 04:45:17 -07:00
Shaitan
9079f002ee fix(dashboard): scope tab-diff report lookup to the edited dashboard (#43989)
Co-authored-by: sha174n <pedro.sousa@preset.io>
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
2026-09-09 11:03:32 +02:00
Enzo Martellucci
1ab6077e06 fix(filters): clamp filter bar row while remeasuring after items change (#43966)
Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-09 10:52:28 +02:00
Sepuri Sai Krishna
c76e4d98f2 fix(api): advertise only the time grains Prophet can resolve (#43710)
Co-authored-by: Evan Rusackas <evan@rusackas.com>
2026-09-08 22:39:15 -07:00
Mike Bridge
fc110d8428 fix(versioning): enforce is_managed_externally on version restore (#44013)
Co-authored-by: Mike Bridge <michael.bridge@ext.preset.io>
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
2026-09-08 21:55:08 -07:00
Kunal
4f26627a6a fix(native-filters): stop Date Range calendar popup from clipping in overflow dropdown (#43978)
Co-authored-by: Joe Li <joe@preset.io>
2026-09-08 21:52:33 -07:00
Kunal
613871ed36 fix(native-filters): stabilize DefaultValue's filterState object identity (#43859)
Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-08 21:51:20 -07:00
Francesco.Castaldi
c503f92642 fix(charts): restrict Prophet time grain schema validation to supported Prophet grains (#43585)
Co-authored-by: FrancescoCastaldi <francesco.castaldi@mapsgroup.it>
2026-09-08 21:43:33 -07:00
nacretion
50c1504cac fix(db_engine_specs): cast VARCHAR before Postgres DATE_TRUNC (#43167) 2026-09-08 21:38:37 -07:00
Shaitan
5d771e9f46 fix(dataset): apply the import overwrite permission check to identity-matched datasets (#43058)
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
2026-09-08 21:37:14 -07:00
Grégoire Gailly
c9965c7bf4 feat(folders): drag and drop visible elements (columns/metrics) of folders in explore view (#42483) 2026-09-08 21:36:55 -07:00
Đỗ Trọng Hải
9669e41471 chore(build): remove legacy re-export shim used for development (#42190)
Signed-off-by: hainenber <dotronghai96@gmail.com>
2026-09-08 21:34:40 -07:00
Evan Rusackas
daf41bdf04 fix(security): suppress zizmor self-repository false positive for sqlite install-deps step (#44002)
Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-08 18:25:00 -07:00
Mike Bridge
986b648f1c fix(versioning): resolve dashboard M2M membership by attach/detach windows, not end_transaction_id (#44010)
Co-authored-by: Mike Bridge <michael.bridge@ext.preset.io>
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
2026-09-08 17:59:04 -07:00
dependabot[bot]
acb29937ae chore(deps): bump the security group across 1 directory with 3 updates (#44030)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Claude Code <noreply@anthropic.com>
2026-09-08 17:52:32 -07:00
dependabot[bot]
2875c76d55 chore(deps): bump react-ace from 14.0.1 to 15.0.0 in /superset-frontend (#42833)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Claude Code <noreply@anthropic.com>
2026-09-08 17:52:09 -07:00
dependabot[bot]
d0f139c210 feat(deps): bump flask-caching from 2.4.1 to 2.5.0 + bump flask from v2 to v3 (#43875)
Signed-off-by: dependabot[bot] <support@github.com>
Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Signed-off-by: hainenber <dotronghai96@gmail.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: rusackas <evan@rusackas.com>
Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
Co-authored-by: hainenber <dotronghai96@gmail.com>
Co-authored-by: Đỗ Trọng Hải <41283691+hainenber@users.noreply.github.com>
2026-09-08 17:20:53 -07:00
dependabot[bot]
9de50b85e5 chore(deps): bump the security group across 1 directory with 3 updates (#44029)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-09-08 17:04:39 -07:00
Joe Li
c510946df5 fix: BigQuery pivot-table Custom SQL row label with a space drops from GROUPING SETS (#43720)
Co-authored-by: Vitor Avila <vitor.avila@preset.io>
2026-09-08 16:58:49 -07:00
Joe Li
91f4d01ca2 fix(chart-creation): stop antd v6 Steps from doubling the icon-content gap (#43730)
Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-08 16:57:55 -07:00
Evan Rusackas
3828dcb922 fix(security): suppress zizmor self-repository false positive for cached-dependencies in presto-hive workflow (#43976) 2026-09-08 16:53:30 -07:00
Evan Rusackas
362d3509cb fix(security): suppress zizmor self-repository false positive for cached-dependencies in presto-hive workflow (#43984) 2026-09-08 16:53:23 -07:00
Evan Rusackas
fa31e9c1c3 fix(security): suppress zizmor self-repository false positive for cached-dependencies (#43972)
Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-08 16:52:42 -07:00
Evan Rusackas
335a2a78ea fix(dashboard): expand clipped scrollable content before screenshot/PDF export (#43979)
Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-08 16:46:34 -07:00
Evan Rusackas
3564baabf6 fix(security): suppress zizmor self-repository false positive for setup-backend step (#44018)
Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-08 16:41:46 -07:00
Evan Rusackas
380675662d fix(ci): use self-repository syntax for local actions in presto-hive workflow (#43975)
Co-authored-by: Claude <noreply@anthropic.com>
2026-09-08 16:33:28 -07:00
Evan Rusackas
0e6170aaa3 fix(security): use self-repository syntax for setup-backend ref in unit-test workflow (#43970) 2026-09-08 16:31:39 -07:00
Evan Rusackas
9d89dbddc7 fix(security): use self-repository syntax for change-detector action ref (#43971) 2026-09-08 16:31:26 -07:00
Evan Rusackas
02ea5775c1 fix(ci): use self-repository syntax for local supersetbot action ref (#43963) 2026-09-08 16:30:33 -07:00
Evan Rusackas
83d5d1ccda fix(security): use GitHub self-repository syntax for local action ref (#43961)
Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-08 16:30:08 -07:00
Sam Firke
7b65d22205 chore(tags): TAGGING_SYSTEM to True by default (#39888)
Co-authored-by: rusackas <evan@rusackas.com>
2026-09-08 16:27:37 -07:00
Evan Rusackas
1339bdc6ce ci: bump ASF allowlist-check to v1.0.1 for self-repository syntax support (#44014)
Co-authored-by: Claude Code <noreply@anthropic.com>
2026-09-08 15:49:12 -07:00
Evan Rusackas
10866337c5 docs(helm): document Gateway API HTTPRoute support (#43635)
Co-authored-by: Claude <noreply@anthropic.com>
2026-09-08 15:33:45 -07:00
Amin Ghadersohi
e6d088d6b1 fix(mcp): surface rejected filter columns in get_chart_sql (#43680) 2026-09-08 18:05:37 -04:00
Elizabeth Thompson
5986fe92c2 fix(rls): roll back db.session after RLS failure in get_from_clause (#43883)
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-09-08 15:04:32 -07:00
dependabot[bot]
04ab089962 chore(deps): bump @swc/html from 1.15.43 to 1.16.2 in /docs in the security group across 1 directory (#44023)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-09-08 14:29:15 -07:00
rlei
bc35151350 docs(handlebars): correct helper names in the 6.1.0 versioned docs (#44024) 2026-09-08 16:40:44 -04:00
Mafi
7029c468c4 fix(reports): bound CSV transport retries and sanitize failures (#43977)
Co-authored-by: Matt Fitzgerald <matt.fitzgerald@preset.io>
Co-authored-by: Amin Ghadersohi <amin.ghadersohi@gmail.com>
2026-09-08 16:37:25 -04:00
Evan Rusackas
60553b4326 docs(ag-grid): document Show summary support for Raw Records mode (#43905)
Co-authored-by: Claude <noreply@anthropic.com>
2026-09-08 13:30:07 -07:00
Evan Rusackas
85ea6e900a docs(mcp): document MCP_STATELESS_HTTP and its multi-pod tradeoff (#43902)
Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-08 13:29:51 -07:00
Kunal
a114b4cc46 fix(import): skip redundant has_table check when dataset import has no data URI (#43808)
Co-authored-by: Kunal8954 <your-github-email@example.com>
Co-authored-by: Claude Opus 5 <noreply@anthropic.com>
2026-09-08 13:27:40 -07:00
Evan Rusackas
3ccab2ea7a fix(time-format): share DateWithFormatter and stop reading four-digit years as epoch offsets (#43909)
Co-authored-by: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-08 13:24:43 -07:00
Evan Rusackas
067a356b6f fix(chart): include echart_options in Matrixify render-trigger allowlist (#43946)
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
2026-09-08 13:24:13 -07:00
rlei
57eafd75e0 docs(handlebars): correct helper names that are not registered (#44020) 2026-09-08 16:10:40 -04:00
Mafi
c45fc6a31a feat(embedded): diagnose guest-token header size budgets (#43944)
Co-authored-by: Matt Fitzgerald <matt.fitzgerald@preset.io>
Co-authored-by: Amin Ghadersohi <amin.ghadersohi@gmail.com>
Co-authored-by: Joe Li <joe@preset.io>
2026-09-08 14:55:04 -04:00
Evan Rusackas
33c6df77c9 fix(database): don't reattach stored connection details when the effective destination changes (#44003)
Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
Co-authored-by: Shaitan <105581038+sha174n@users.noreply.github.com>
2026-09-08 11:02:42 -07:00
Rafael Benitez
204ccc7ce7 fix(datasets): apply Schema filter on the combined datasource list (#43829)
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-09-08 14:24:27 -03:00
Chandan P
08694d64cb fix(plugin-chart-table): declare DataTable hooks before the early return (#43150) 2026-09-08 10:13:17 -07:00
bouhalimedaziz
056fd218d4 fix: handle missing table element in downloadAsPivotExcel (#39386) 2026-09-08 10:11:03 -07:00
Evan Rusackas
ad319bd8a3 fix(docs): unbreak Netlify docs preview build (#44001)
Co-authored-by: Claude Code <noreply@anthropic.com>
2026-09-08 10:06:17 -07:00
Joe Li
7382ee0bfe fix(dashboard): prevent header metadata bar from overlapping action buttons at narrow widths (#43845)
Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-08 09:34:09 -07:00
Rutger Meuzelaar
7d0cf1acfc docs(scarf-404): replace dead links by the Scarf homepage (#43973) 2026-09-08 21:24:25 +07:00
Enzo Martellucci
c4e145b071 fix(sql_lab): raise 400 not 500 on malformed Jinja during CSV export access check (#43866) 2026-09-08 12:27:29 +02:00
dependabot[bot]
cdb6c8e0c9 chore(deps-dev): bump the typescript-eslint group in /superset-frontend with 2 updates (#43980)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-09-08 01:48:13 -07:00
dependabot[bot]
89786160f9 chore(deps): bump @ant-design/icons from 6.3.3 to 6.3.4 in /docs (#43981)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-09-08 01:48:07 -07:00
dependabot[bot]
bd3ab30907 chore(deps): bump @ant-design/icons from 6.3.3 to 6.3.4 in /superset-frontend (#43982)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-09-08 01:48:03 -07:00
Evan Rusackas
1b3758d2a4 ci: add ASF GitHub Actions allowlist check (#43844)
Co-authored-by: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-07 22:04:10 -07:00
Elizabeth Thompson
1fb6b98941 fix: downgrade md5 namespace-fallback deprecation log to info (#43884) 2026-09-07 15:03:54 -07:00
Elizabeth Thompson
8d6044a147 fix(sqllab): wrap cost-estimate JSON parse to prevent raw JSONDecodeError leak (#43888)
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
2026-09-07 15:03:50 -07:00
Evan Rusackas
574d121cd8 fix(security): use self-repository uses syntax in supersetbot workflow (#43962) 2026-09-07 12:27:17 -07:00
Evan Rusackas
d22069a7af fix(security): use GitHub self-repository syntax for local action refs (#43969)
Co-authored-by: Claude <noreply@anthropic.com>
2026-09-07 12:26:41 -07:00
Evan Rusackas
233f6379ae fix(ci): use self-repository syntax for supersetbot setup in tag-release (#43965)
Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-07 12:26:22 -07:00
Evan Rusackas
4440887dc2 fix(security): use self-repository syntax for setup-backend action ref (#43968)
Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-07 12:25:42 -07:00
Geidō
53070fa4c0 fix(dashboard): resolve metric Label in Chart Data (View as table) results grid (#43719)
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-07 15:13:03 +03:00
dependabot[bot]
92bd2ba057 chore(deps): bump @ant-design/icons from 6.3.2 to 6.3.3 in /superset-frontend (#43955)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: rusackas <evan@rusackas.com>
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
2026-09-07 17:34:47 +07:00
dependabot[bot]
4eff13b81e chore(deps-dev): bump webpack from 5.110.0 to 5.110.2 in /superset-embedded-sdk (#43953)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-09-07 17:34:11 +07:00
dependabot[bot]
06913244de chore(deps-dev): bump webpack from 5.110.1 to 5.110.2 in /docs (#43952)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-09-07 02:38:21 -07:00
dependabot[bot]
a5377541c9 chore(deps): bump zizmorcore/zizmor-action from 0.6.2 to 0.6.3 (#43954)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-09-07 02:38:16 -07:00
dependabot[bot]
e5e6d74819 chore(deps-dev): bump webpack from 5.110.1 to 5.110.2 in /superset-frontend (#43956)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-09-07 02:38:12 -07:00
dependabot[bot]
b8fb5a268c chore(deps): bump zod from 4.4.3 to 4.5.4 in /superset-frontend (#43957)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-09-07 02:38:08 -07:00
dependabot[bot]
07052752b6 chore(deps-dev): bump tsx from 4.23.12 to 4.23.13 in /superset-frontend (#43958)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-09-07 02:38:05 -07:00
dependabot[bot]
7c9c32651c chore(deps): bump react-error-boundary from 6.1.3 to 6.1.4 in /superset-frontend (#43959)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-09-07 02:38:01 -07:00
dependabot[bot]
0db9ca7401 chore(deps): bump @ant-design/icons from 6.3.2 to 6.3.3 in /docs (#43951)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-09-07 02:36:03 -07:00
Evan Rusackas
7d09490bb8 fix(security): grant SQL Lab query authors an explore access bypass (#39296) (#42590)
Co-authored-by: Claude Code <noreply@anthropic.com>
2026-09-06 23:18:34 -07:00
Evan Rusackas
df3abe474c docs(theming): document new component sizing tokens and HIDE_NAVBAR_LOGO (#43639)
Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-06 23:17:12 -07:00
Evan Rusackas
87f138cc80 docs(mcp): add theme management tools to AI/MCP tools reference (#43899)
Co-authored-by: Claude <noreply@anthropic.com>
2026-09-06 18:03:15 -07:00
Greg Neighbors
c03f3441bd feat(mcp): gauge chart type plugin (#43568)
Co-authored-by: Greg Neighbors <gregneighbors@Gregs-Air-2.lan>
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
2026-09-06 12:55:35 -04:00
Mike Bridge
f3896ccf20 fix(explore): say when filter-value suggestions could not be loaded (#43779)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Co-authored-by: Amin Ghadersohi <amin.ghadersohi@gmail.com>
2026-09-06 10:26:48 -04:00
Joe Li
18d277c096 ci(playwright): make embedded and app-root E2E coverage required (#43919)
Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-06 10:17:59 +07:00
Vinícius Sodré Quadros
fe1b368bcd feat: add dashed line support for derived series (timeseries comparison) on MixedTimeseries chart (#34794)
Co-authored-by: Evan <evan@preset.io>
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
2026-09-05 14:17:10 -07:00
Nguyen Van Viet
1358543827 fix(sqllab): preserve ClickHouse LIMIT BY when applying the row limit (#43578)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
2026-09-05 09:51:00 -07:00
dependabot[bot]
1315f5ff6b chore(deps): bump pydantic from 2.13.4 to 2.13.5 (#43924)
Signed-off-by: dependabot[bot] <support@github.com>
Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-09-05 07:40:30 -07:00
dependabot[bot]
974f36f94f chore(deps-dev): bump google-cloud-bigquery from 3.43.0 to 3.45.0 (#43926)
Signed-off-by: dependabot[bot] <support@github.com>
Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-09-05 07:36:47 -07:00
dependabot[bot]
9e9a3d06ad chore(deps-dev): bump grpcio from 1.83.0 to 1.83.1 (#43922)
Signed-off-by: dependabot[bot] <support@github.com>
Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-09-05 07:36:18 -07:00
dependabot[bot]
5c4c8b831f chore(deps): bump cryptography from 50.0.0 to 50.0.1 (#43923)
Signed-off-by: dependabot[bot] <support@github.com>
Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-09-05 07:36:14 -07:00
dependabot[bot]
1e76fb6098 chore(deps-dev): update teradatasql requirement from >=20.0.0.66 to >=20.0.0.67 (#43925)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-09-05 07:36:11 -07:00
Nguyen Dang Trung Tien
4850082247 fix(dashboard): don't 500 on inconsistent position_json (#43575)
Co-authored-by: Claude <noreply@anthropic.com>
2026-09-04 23:16:26 -07:00
Mike Bridge
3b492233c7 fix(versioning): bound dashboard related history by the chart attach window (#43837)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
2026-09-04 23:05:58 -04:00
Mike Bridge
8963613e92 fix(versioning): match version-history search on the change author name (#43835)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
2026-09-04 23:05:00 -04:00
Mike Bridge
0ac1a6fade fix(versioning): keep the dashboard version-history panel inside the viewport (#43836)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
2026-09-04 23:04:57 -04:00
Mike Bridge
630982e269 fix(dashboard): resolve chart datasources across types in access checks (#43781)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
2026-09-04 23:03:31 -04:00
Ville Brofeldt
8fb5b8f2fb feat: migrate Global Async Queries onto the Global Task Framework (#43407)
Co-authored-by: Claude <noreply@anthropic.com>
Co-authored-by: Evan Rusackas <evan@preset.io>
2026-09-04 19:21:37 -07:00
Shivam Goel
a3aba2a16a ci: show the spec diff when the staleness check fails (#43912) 2026-09-04 17:54:04 -07:00
Christian Hollinger
b2fd72559a feat(gunicorn): statsd support (#32487)
Co-authored-by: Evan Rusackas <evan@preset.io>
Co-authored-by: rusackas <evan@rusackas.com>
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
2026-09-04 17:46:59 -07:00
Joe Li
0820a0ac14 fix(sqllab): correct Run dropdown crash and caret color regression (#43849)
Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-04 17:35:15 -07:00
Rafael Benitez
334700fc33 fix(sqla): parenthesize calculated column expressions in SELECT/GROUP BY/ORDER BY and series-limit queries (#43864)
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-09-04 17:20:12 -07:00
Đỗ Trọng Hải
ed4d413d77 ci: remove unused submoduled GHA workflows (#43865)
Signed-off-by: hainenber <dotronghai96@gmail.com>
2026-09-04 17:19:59 -07:00
Shivam Goel
724d9045c6 chore(api): regenerate the spec for ReportScheduleRestApi.report_format (#43910) 2026-09-04 16:00:16 -07:00
Mike Bridge
01b8eb50a0 feat(semantic-layers): hide Samples tab and disable drill-to-detail for semantic views (#42534)
Co-authored-by: Mike Bridge <michael.bridge@ext.preset.io>
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
2026-09-04 15:59:18 -07:00
Mike Bridge
c77efa77ed fix(sqla): normalize PostgreSQL date trunc metric units (#42095)
Co-authored-by: Mike Bridge <michael.bridge@ext.preset.io>
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
2026-09-04 15:59:01 -07:00
Elizabeth Thompson
fb12d4ae12 fix(importers): catch JSONDecodeError in load_configs masked_encrypted_extra merge (#43261)
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
2026-09-04 15:06:14 -07:00
dependabot[bot]
a49581dd76 chore(deps): bump msgpack from 1.2.1 to 1.2.2 (#43867)
Signed-off-by: dependabot[bot] <support@github.com>
Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-09-04 14:59:27 -07:00
dependabot[bot]
ccfaa2302a chore(deps): bump slack-sdk from 3.43.0 to 3.44.1 (#43871)
Signed-off-by: dependabot[bot] <support@github.com>
Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-09-04 14:59:24 -07:00
dependabot[bot]
b8cdebcaba chore(deps-dev): bump jest from 30.4.2 to 30.5.0 in /superset-frontend (#43877)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: rusackas <evan@rusackas.com>
Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-04 14:59:17 -07:00
Raphael Sales
c1ca29fe09 fix(core): render duration values instead of NaN:NaN:NaN (#43839)
Signed-off-by: Raphael Sales <raphaelsales1337@gmail.com>
2026-09-04 14:49:59 -07:00
Facundo Parodi
ff90a60b09 fix(partition): normalize ancestor-path array names to leaf values (#43731)
Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-04 14:49:50 -07:00
Sam Firke
b4325e2ce3 fix(handlebars): separate CSS style block from template with a blank line (#43722) 2026-09-04 14:49:39 -07:00
Konstantin Khlopkov
6760573432 fix(dashboard): show loading state on + Dashboard during the create navigation (#43683) 2026-09-04 14:49:26 -07:00
khaa-dv
db0af5c610 fix(embedded): guard guest payload check against scalar control values (#43577)
Signed-off-by: khaa-dv <antoxa_22@mail.ru>
2026-09-04 14:49:17 -07:00
Endi Monan
67a417812d fix(reports): look up fetched report schedules by the list API id fields (#43365) 2026-09-04 14:49:06 -07:00
Joe Li
9fb02296d8 test(dashboard): migrate tabs resize E2E to Playwright (#41434)
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-09-04 14:37:31 -07:00
Evan Rusackas
ee03ee1719 test(treemap): pin border-free labels so tiles render without seams (#43890)
Co-authored-by: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-04 14:03:18 -07:00
Endi Monan
0d025daaf7 fix(plugin-chart-table): defer search until IME composition ends (#43756) 2026-09-04 13:33:30 -07:00
mkramer5454
c3109899e2 fix(dashboard): is_externally_managed still allows edits (#38584)
Co-authored-by: Matthew Kramer <matthewkramer@Matthews-MacBook-Pro-2.local>
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Co-authored-by: rusackas <evan@rusackas.com>
2026-09-04 13:15:50 -07:00
ʈᵃᵢ
6956da1de5 fix(sql): close StarRocks SQL parsing and mutation-detection gaps (#43809) 2026-09-04 12:38:31 -07:00
Shivam Goel
c1822666da ci: fail when the published OpenAPI spec is stale (#43841) 2026-09-04 12:35:04 -07:00
dependabot[bot]
581ef8b7c1 chore(deps): bump antd from 6.6.1 to 6.6.2 in /docs (#43852)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Đỗ Trọng Hải <41283691+hainenber@users.noreply.github.com>
Co-authored-by: rusackas <evan@rusackas.com>
Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-04 12:11:11 -07:00
Ville Brofeldt
0636ac4b11 fix(examples): correct chart metadata (#43810) 2026-09-04 10:49:26 -07:00
Joe Li
99a910b81c fix(echarts): render Plain Timeseries legends as HTML, not canvas (#43314)
Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-04 10:48:36 -07:00
Ville Brofeldt
635de27b25 fix(explore): prevent editable title over-truncation (#43811) 2026-09-04 10:29:10 -07:00
dependabot[bot]
e1ce6b601c chore(deps-dev): bump jest-environment-jsdom from 30.4.1 to 30.5.0 in /superset-frontend (#43878)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-09-04 10:18:56 -07:00
dependabot[bot]
db60f25ee9 chore(deps-dev): bump babel-jest from 30.4.1 to 30.5.0 in /superset-frontend (#43879)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-09-04 10:18:35 -07:00
dependabot[bot]
297b0455f6 chore(deps): bump nh3 from 0.3.6 to 0.3.7 (#43868)
Signed-off-by: dependabot[bot] <support@github.com>
Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-09-04 10:18:01 -07:00
dependabot[bot]
b1c33e5435 chore(deps-dev): bump hdbcli from 2.29.25 to 2.29.27 (#43869)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-09-04 10:17:51 -07:00
dependabot[bot]
b925246bef chore(deps): bump click from 8.4.2 to 8.5.0 (#43872)
Signed-off-by: dependabot[bot] <support@github.com>
Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-09-04 10:15:28 -07:00
dependabot[bot]
592d378c0d chore(deps-dev): bump pandas-gbq from 0.35.1 to 0.35.2 (#43873)
Signed-off-by: dependabot[bot] <support@github.com>
Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-09-04 10:14:47 -07:00
dependabot[bot]
935ee5f1a6 chore(deps): bump simplejson from 4.1.1 to 4.1.2 (#43874)
Signed-off-by: dependabot[bot] <support@github.com>
Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-09-04 10:14:37 -07:00
Mike Bridge
d9b201db74 fix(explore): open version-history forks in a usable tab, not a blank one (#43830)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
2026-09-04 09:19:06 -07:00
Đỗ Trọng Hải
bc6ff77af0 feat(ci): broaden usage of fast-startup ubuntu-slim runner (#43477)
Signed-off-by: hainenber <dotronghai96@gmail.com>
2026-09-04 22:25:10 +07:00
dependabot[bot]
3b1e43be5c chore(deps-dev): bump css-loader from 7.1.4 to 7.1.5 in /superset-frontend (#43880)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-09-04 22:23:45 +07:00
dependabot[bot]
d27124e5f6 chore(deps-dev): bump webpack-cli from 7.2.2 to 7.2.3 in /superset-embedded-sdk (#43882)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-09-04 22:17:25 +07:00
dependabot[bot]
31a3a19037 chore(deps-dev): bump @types/node from 25.9.5 to 26.4.0 in /superset-embedded-sdk (#43881)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-09-04 22:17:07 +07:00
Enzo Martellucci
f63a0e9d9c feat(conditional-formatting): add manual min/max color-range bounds (#43820)
Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-04 17:07:48 +02:00
Đỗ Trọng Hải
8f6caf4ff9 feat(build): upgrade to Typescript 7, Babel 8, Webpack CLI 7 and JSDOM 30 for superset-embedded-sdk (#43702)
Signed-off-by: hainenber <dotronghai96@gmail.com>
2026-09-04 21:31:34 +07:00
Đỗ Trọng Hải
e9412576b2 feat(build/websocket): upgrade to Typescript 7 + migrate ESLint to TS7-compatible oxlint andtsgolint (#43703)
Signed-off-by: hainenber <dotronghai96@gmail.com>
2026-09-04 21:31:10 +07:00
Đỗ Trọng Hải
c84c7c4bdd chore(ci): optimize Dependabot processes (#43681)
Signed-off-by: hainenber <dotronghai96@gmail.com>
Co-authored-by: Evan Rusackas <evan@preset.io>
2026-09-04 20:50:00 +07:00
dependabot[bot]
a068517393 chore(deps-dev): bump webpack from 5.109.2 to 5.110.1 in /superset-frontend (#43853)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-09-04 20:49:17 +07:00
dependabot[bot]
0a5eddb18b chore(deps): bump morgan from 1.11.0 to 1.12.0 in /superset-websocket/utils/client-ws-app (#43850)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-09-04 20:38:02 +07:00
dependabot[bot]
34286883d3 chore(deps): bump postcss from 8.5.23 to 8.5.26 in /superset-frontend (#43854)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-09-04 20:35:28 +07:00
dependabot[bot]
0fc410eecc chore(deps-dev): bump @testing-library/react from 15.0.7 to 16.3.3 in /superset-frontend (#43855)
Signed-off-by: dependabot[bot] <support@github.com>
Signed-off-by: hainenber <dotronghai96@gmail.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: hainenber <dotronghai96@gmail.com>
2026-09-04 20:34:36 +07:00
dependabot[bot]
173d2173aa chore(deps-dev): bump baseline-browser-mapping from 2.11.19 to 2.11.20 in /superset-frontend (#43856)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-09-04 20:14:59 +07:00
dependabot[bot]
0e01b5fb4c chore(deps): bump baseline-browser-mapping from 2.11.19 to 2.11.20 in /docs (#43851)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-09-04 20:13:14 +07:00
dependabot[bot]
a6a794864b chore(deps-dev): bump minimizer-webpack-plugin from 5.7.0 to 5.8.0 in /superset-frontend (#43857)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-09-04 19:59:06 +07:00
dependabot[bot]
2aacf57932 chore(deps): bump antd from 6.6.1 to 6.6.2 in /superset-frontend (#43858)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-09-04 19:58:42 +07:00
Mike Bridge
8d0637efad fix(semantic-layers): serve filter-value suggestions for semantic views (#43777)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
2026-09-04 01:43:00 -04:00
Mike Bridge
93df5bc362 fix(semantic-layers): classify SemanticLayer/SemanticView in FAB role sets (#43783)
Co-authored-by: Mike Bridge <michael.bridge@ext.preset.io>
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
2026-09-04 01:41:19 -04:00
Elizabeth Thompson
cceb52e776 fix(embedded): don't let guest-user check turn error responses into 500s (#43834)
Signed-off-by: Elizabeth Thompson <eschutho@gmail.com>
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
2026-09-03 21:18:43 -07:00
dependabot[bot]
765a4ecca5 chore(deps): bump caniuse-lite from 1.0.30001809 to 1.0.30001810 in /docs (#43746)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-09-03 18:37:01 -07:00
Elizabeth Thompson
3258f5fa3f fix(security): catch JSONDecodeError on stored query_context in query_context_modified (#43795)
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
2026-09-03 15:07:24 -07:00
Gabriel Torres Ruiz
0bca5af7a9 fix(table): hide the Time Grain control in raw records mode (#43802) 2026-09-03 17:42:48 -03:00
dependabot[bot]
a6cbd7c3b5 chore(deps-dev): bump typescript-eslint from 8.67.0 to 8.68.0 in /superset-websocket (#43742)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-09-03 12:14:31 -07:00
dependabot[bot]
5d8ff9181a chore(deps-dev): bump the typescript-eslint group across 1 directory with 2 updates (#43744)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-09-03 12:14:28 -07:00
dependabot[bot]
c91c901832 chore(deps): bump baseline-browser-mapping from 2.11.18 to 2.11.19 in /docs (#43747)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-09-03 12:14:22 -07:00
dependabot[bot]
232ccf66d6 chore(deps-dev): bump eslint from 10.9.0 to 10.9.1 in /superset-frontend (#43749)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-09-03 12:14:18 -07:00
dependabot[bot]
dd1a475df6 chore(deps-dev): bump baseline-browser-mapping from 2.11.18 to 2.11.19 in /superset-frontend (#43750)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-09-03 12:14:14 -07:00
Evan Rusackas
9828281e7f fix(charts): exclude string helpers from post_processing operation allowlist (#43345)
Co-authored-by: Superset Dev <dev@superset.apache.org>
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
2026-09-03 11:48:29 -07:00
Evan Rusackas
b558f41461 feat(dashboard): convert @import to inline CSS in the dashboard CSS editor (#43667)
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
Co-authored-by: Joe Li <joe@preset.io>
2026-09-03 11:46:26 -07:00
Evan Rusackas
28578160ff docs(pivot-table): document DB-computed totals/subtotals behavior (#43636)
Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-03 11:44:19 -07:00
Joe Li
d2d965e009 fix(navbar): use down-chevron icon consistently on all navbar dropdowns (#43531)
Co-authored-by: Juliann Forbes <juliann@preset.io>
Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-03 10:00:18 -07:00
dependabot[bot]
a95c40aa1e chore(deps): bump qs from 6.15.2 to 6.16.0 in /superset-websocket/utils/client-ws-app in the security group across 1 directory (#43824)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-09-03 21:42:10 +07:00
dependabot[bot]
d9887fd928 chore(deps): bump js-yaml from 5.4.0 to 5.4.1 in /docs (#43816)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-09-03 21:06:19 +07:00
dependabot[bot]
669a0cefb4 chore(deps): bump the security group across 1 directory with 2 updates (#43797)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Joe Li <joe@preset.io>
2026-09-03 21:05:59 +07:00
dependabot[bot]
0398b320f9 chore(deps): bump fast-uri from 3.1.5 to 3.1.7 in /docs in the security group across 1 directory (#43798)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-09-03 21:05:24 +07:00
dependabot[bot]
9d855a4adf chore(deps-dev): bump @types/node from 26.2.0 to 26.4.0 in /superset-websocket (#43815)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-09-03 21:05:00 +07:00
dependabot[bot]
3bd0ad5267 chore(deps): bump react-intersection-observer from 11.0.0 to 11.0.1 in /superset-frontend (#43817)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-09-03 21:04:40 +07:00
dependabot[bot]
464adba69b chore(deps-dev): bump minimizer-webpack-plugin from 5.6.1 to 5.7.0 in /superset-frontend (#43818)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-09-03 21:04:18 +07:00
dependabot[bot]
c185a2c678 chore(deps-dev): bump @types/node from 26.3.0 to 26.4.0 in /superset-frontend (#43819)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-09-03 21:03:47 +07:00
Mafi
bf12a21367 fix(charts): sort chart types by display name (#43634)
Co-authored-by: Matt Fitzgerald <matt.fitzgerald@preset.io>
Co-authored-by: Amin Ghadersohi <amin.ghadersohi@gmail.com>
2026-09-03 12:32:01 +02:00
Jyun-An Chen
18465bad51 perf(dashboard): batch dataset lookups during dashboard export (#43017)
Co-authored-by: Enzo Martellucci <52219496+EnxDev@users.noreply.github.com>
2026-09-03 11:07:47 +02:00
Mafi
4a18556fdc fix(reports): prevent blank dashboard captures (#43784)
Co-authored-by: Amin Ghadersohi <amin.ghadersohi@gmail.com>
2026-09-03 01:30:14 -04:00
Shivam Goel
b457280b57 chore(api): regenerate the OpenAPI spec (#43788) 2026-09-02 18:25:03 -07:00
Mike Bridge
d921131c5d fix(charts): resolve semantic-view datasource name and link in chart list (#43649)
Co-authored-by: Mike Bridge <michael.bridge@ext.preset.io>
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
2026-09-02 20:56:33 -04:00
Mafi
d82a88f479 fix(dashboard): keep filter config modal within iframe (#43632)
Co-authored-by: Matt Fitzgerald <matt.fitzgerald@preset.io>
2026-09-02 20:54:39 -04:00
Mafi
07fc3144e5 feat(dataset): expose dataset certification controls (#43633)
Co-authored-by: Matt Fitzgerald <matt.fitzgerald@preset.io>
2026-09-02 20:54:13 -04:00
Joe Li
52a4cb6314 fix(snowflake): quote case-sensitive lowercase column identifiers in generated SQL (#43312) 2026-09-02 15:52:20 -07:00
Elizabeth Thompson
6dd841c35b fix(jinja): reuse get_request_json_body in get_dataset_id_from_context (#43556) 2026-09-02 15:47:51 -07:00
Amin Ghadersohi
3394097c83 fix(snowflake): refresh rejected OAuth tokens (#43623) 2026-09-02 18:30:34 -04:00
Elizabeth Thompson
a81c0f6773 fix(gsheets): catch JSONDecodeError in validate_parameters for malformed service_account_info (#43772)
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
2026-09-02 15:07:53 -07:00
Elizabeth Thompson
5b8e50e69d fix(reports): downgrade Slack channel-fetch auth-error logging to WARNING (SC-115301) (#42484)
Co-authored-by: Claude <noreply@anthropic.com>
2026-09-02 15:06:58 -07:00
Mike Bridge
e8540b7c49 feat(dataset): warn about dependent charts and dashboards before purging an archived dataset (#43724)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
2026-09-02 16:33:45 -04:00
Mike Bridge
64bfbf75a4 feat(chart): list semantic views in the Create Chart datasource picker (#43629)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
2026-09-02 16:33:19 -04:00
Rafael Benitez
b49c1fd7e4 fix(security): handle cached schema/catalog names deserialized as lists (#43800)
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-09-02 16:30:23 -04:00
dependabot[bot]
e7c42dd8ed chore(deps-dev): bump fast-uri from 3.1.5 to 3.1.7 in /superset-embedded-sdk (#43796)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-09-02 12:53:28 -07:00
dependabot[bot]
0ea234e9ae chore(deps): bump github/codeql-action/analyze from 4.37.8 to 4.37.9 (#43791)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-09-02 12:52:39 -07:00
dependabot[bot]
393b00f38a chore(deps-dev): bump @typescript-eslint/parser from 8.67.0 to 8.68.0 in /superset-websocket (#43789)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-09-02 12:52:25 -07:00
Mehmet Salih Yavuz
3bd437869a feat(export): let deployments carry extra fields through asset export/import (#43763) 2026-09-02 20:28:23 +03:00
Rafael Benitez
f5e427083e fix(native-filters): keep "Select all" count stable while searching the Value filter (#43460)
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-09-02 13:25:18 -04:00
Robin Emeršič
c19879ffff chore(translations): updated Slovenian translations (#43735) 2026-09-02 10:25:15 -07:00
Evan Rusackas
46c8c67a40 fix(semantic_layers): mask write-only config fields, gate flag-off endpoints (#43474)
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
2026-09-02 10:16:59 -07:00
Evan Rusackas
8c2290fcf4 docs(theming): document resultsGrid* Superset-specific tokens (#43638)
Co-authored-by: Claude <noreply@anthropic.com>
2026-09-02 10:14:35 -07:00
Evan Rusackas
b7da5336d3 docs(mcp): document embedded guest-token authentication (#43637)
Co-authored-by: Claude <noreply@anthropic.com>
2026-09-02 10:10:46 -07:00
K HARSHAVARDHAN
316f6ad971 chore(lint): scope in-repo eslint plugins under @superset-ui (#43054) 2026-09-02 10:09:42 -07:00
Evan Rusackas
201a33f68f fix(charts): reject non-table datasource_type instead of crashing (#43500)
Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-02 10:07:16 -07:00
MsfPablo
7321d4aff6 chore: fix typos in comments and docstrings (#43785) 2026-09-02 10:06:41 -07:00
dependabot[bot]
0c7a47ef23 chore(deps): bump github/codeql-action/init from 4.37.8 to 4.37.9 (#43790)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-09-02 10:06:11 -07:00
Rafael Benitez
9b2bb15ece fix(themes): apply system default/dark theme changes live without a page refresh (#43778)
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-09-02 12:31:17 -04:00
Shivam Goel
58f17efa6f feat(datasource): headless query API for Explorable datasources (#43527) 2026-09-02 09:00:37 -07:00
Enzo Martellucci
cf77deb678 fix(sqllab): explain dataset save failures instead of "Fatal error" (#43334)
Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-02 11:10:52 +02:00
dependabot[bot]
45b903b19a chore(deps-dev): bump oxfmt from 0.64.0 to 0.65.0 in /docs (#43745)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-09-02 10:09:58 +07:00
dependabot[bot]
56944319cb chore(deps): bump js-yaml from 5.3.0 to 5.4.0 in /docs (#43748)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-09-02 09:25:34 +07:00
dependabot[bot]
3833161915 chore(deps): bump browserslist from 4.28.1 to 4.28.8 in /superset-frontend/cypress-base (#43774)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-09-02 09:25:08 +07:00
dependabot[bot]
8ad5859fdf chore(deps-dev): bump browserslist from 4.28.1 to 4.28.8 in /superset-frontend in the security group across 1 directory (#43775)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-09-02 09:24:17 +07:00
dependabot[bot]
69333e87db chore(deps): bump browserslist from 4.28.4 to 4.28.8 in /docs in the security group across 1 directory (#43773)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-09-02 09:23:43 +07:00
shaurya
794dee80c2 docs: point homepage Release Notes link to GitHub releases (#43780)
Co-authored-by: no-hup <19599684+no-hup@users.noreply.github.com>
2026-09-02 09:23:10 +07:00
Elizabeth Thompson
531587a4b2 fix(sql): catch sqlglot ParseError when parsing RLS predicates (#43651) 2026-09-01 15:04:18 -07:00
Joe Li
c9f625627d fix(explore): don't drop stashed control values from saved chart params (#43650)
Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-01 13:45:19 -07:00
Joe Li
ba50bdff23 fix(echarts): prevent x-axis time labels from overlapping (#43669)
Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-01 13:23:17 -07:00
Joe Li
32fe4f6612 fix(echarts): make Bar chart value labels fit-aware and readable (#43144)
Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-01 13:21:03 -07:00
Đỗ Trọng Hải
e683aadd6e chore(build): upgrade webpack-dev-server v7 and dependent libs (#43766) 2026-09-02 00:52:17 +07:00
Luc Verdier
ed513bbe42 docs: add Veremes to users in the wild (#43754)
Co-authored-by: Luc Verdier <verdier@users.noreply.github.com>
2026-09-01 10:15:22 -07:00
dependabot[bot]
eec1e4d288 chore(deps-dev): bump eslint from 10.9.0 to 10.9.1 in /superset-websocket (#43740)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-09-01 10:13:26 -07:00
dependabot[bot]
58ef03dabc chore(deps-dev): bump oxfmt from 0.64.0 to 0.65.0 in /superset-websocket (#43739)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-09-01 10:12:49 -07:00
Enzo Martellucci
439564041f fix(echarts): place weekly time-axis ticks on the data buckets (#43339) 2026-09-01 18:17:11 +02:00
Enzo Martellucci
842efd5f12 fix(datasets): warn on percent D3 format for count metrics (#43453) 2026-09-01 18:16:40 +02:00
dependabot[bot]
3b5a4baa05 chore(deps-dev): bump oxfmt from 0.64.0 to 0.65.0 in /superset-frontend (#43751)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-09-01 22:53:55 +07:00
dependabot[bot]
9656ecc3af chore(deps-dev): bump @types/node from 26.2.0 to 26.3.0 in /superset-frontend (#43752)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-09-01 21:51:16 +07:00
dependabot[bot]
e3d30bb730 chore(deps-dev): bump oxlint from 1.79.0 to 1.80.0 in /superset-frontend (#43753)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-09-01 21:49:50 +07:00
Enzo Martellucci
b04a153451 fix(dashboard): stretch Chart Data modal results grid to fill available height (#43454)
Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-01 16:05:27 +02:00
Enzo Martellucci
ba0142ca64 fix(dashboard): reconcile stale results tab in Chart Data modal (#43648)
Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-01 15:32:30 +02:00
Mehmet Salih Yavuz
da27ba59a5 fix(pivot-table): apply "Show values as" percent to exports and reports (#43718)
Co-authored-by: Enzo Martellucci <52219496+EnxDev@users.noreply.github.com>
2026-09-01 16:16:26 +03:00
Elizabeth Thompson
ac3c158c41 fix(tags): catch TemplateError when validating access for tagged SQL Lab queries on delete (#43433)
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
2026-08-31 15:02:22 -07:00
drivaspreset
1f1539fe0e feat: test(presto) close db_engine_spec unit test gaps (#43607)
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-31 13:33:29 -07:00
Gabriel Torres Ruiz
5bffceb295 feat(mcp): let get_dashboard_info accept filter_state directly (#43688) 2026-08-31 15:46:53 -03:00
wenjie liang
b24cb2af8a fix(db_engine_specs): support SQLAlchemy 2 DBAPI discovery (#43700) 2026-08-31 12:51:50 -04:00
dependabot[bot]
040b33c450 chore(deps): bump yeoman-generator from 8.2.2 to 8.3.0 in /superset-frontend (#43709)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-08-31 05:59:31 -07:00
dependabot[bot]
9d1b5ebdb7 chore(deps-dev): bump baseline-browser-mapping from 2.11.17 to 2.11.18 in /superset-frontend (#43708)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-08-31 15:38:46 +07:00
dependabot[bot]
6e185ebce8 chore(deps): bump actions/setup-java from 5.7.0 to 6.0.0 (#43707)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-08-31 15:04:47 +07:00
dependabot[bot]
5b64150d0a chore(deps-dev): bump webpack-bundle-analyzer from 5.3.1 to 5.3.2 in /superset-frontend (#43706)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-08-31 14:48:05 +07:00
dependabot[bot]
b8b2e5ea8b chore(deps): bump baseline-browser-mapping from 2.11.17 to 2.11.18 in /docs (#43704)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-08-31 00:14:13 -07:00
Đỗ Trọng Hải
f3985d88a1 feat(build): migrate to TS7 and TS7-oriented oxlint-tsgolint (#43691) 2026-08-31 09:57:13 +07:00
SBIN2010
6abab3c1cb feat(butterfly): added cross-filtering and drill-to-detail for the butterfly chart (#43684)
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
2026-08-30 23:12:50 +03:00
SBIN2010
b310f469c2 feat(dashboard): add a tooltip displaying chart descriptions (#43271) 2026-08-30 12:25:37 -07:00
shaurya
22891894d4 docs: fix superset-core component source links after src/ui removal (#43690) 2026-08-30 12:23:37 -07:00
Đỗ Trọng Hải
65fa1ce816 chore(ci): skip Jest test HTML report generation to save up time (#43653)
Signed-off-by: hainenber <dotronghai96@gmail.com>
Co-authored-by: Evan Rusackas <evan@rusackas.com>
Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-30 11:52:47 -07:00
Vijay Misal
ee4a90892c test(explore): zero-value stacked bar segment no longer overlaps its neighbor's label (#42882)
Co-authored-by: Joe Li <joe@preset.io>
Co-authored-by: Evan Rusackas <evan@preset.io>
Co-authored-by: vjymisal0 <vijay.looprai@gmail.com>
2026-08-30 11:43:01 -07:00
Joe Li
bba4832946 fix(sqllab): prefer concluded live query state over a stale history snapshot (#43535) 2026-08-30 11:39:34 -07:00
Amin Ghadersohi
2df06dcd57 feat(mcp): add feature-gated interactive pivot support (#43480) 2026-08-30 11:36:17 -07:00
Joe Li
88cd8bf575 fix(ci): repair nightly pre-commit failures (#43366) 2026-08-30 11:35:19 -07:00
Francesco.Castaldi
5f67e85003 chore(i18n): complete Italian translations with 100% placeholder validation (#43274) 2026-08-30 11:34:56 -07:00
Mike Bridge
87fb7d18e1 fix(semantic-layer): hydrate the semantic view edit modal from /structure (#42839)
Co-authored-by: Mike Bridge <michael.bridge@ext.preset.io>
2026-08-30 11:31:35 -07:00
SBIN2010
96119ffefc feat(plugin-chart-echarts): add Butterfly Chart (#43346) 2026-08-29 17:40:02 +03:00
rlei
74ea780eaa fix(plugin-chart-echarts): misplaced first date label on horizontal bar charts (#43661) 2026-08-29 21:16:58 +07:00
Evan Rusackas
3d91ba3fde chore(deps): bump js-yaml, brace-expansion, d3-color to patch DoS/ReDoS in cypress-base (#43664) 2026-08-29 14:02:56 +07:00
Evan Rusackas
9151b5c6fb chore(deps): bump brace-expansion to patch DoS in docs (#43665)
Co-authored-by: Superset Dev <dev@superset.apache.org>
2026-08-29 14:02:17 +07:00
dependabot[bot]
ec19a37e9b chore(deps): bump greenlet from 3.5.4 to 3.5.5 (#43671)
Signed-off-by: dependabot[bot] <support@github.com>
Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-08-29 14:01:34 +07:00
Evan Rusackas
2ca3695f30 chore(deps): bump js-yaml to patch quadratic-CPU DoS (superset-frontend) (#43663) 2026-08-29 13:44:31 +07:00
dependabot[bot]
ac88acb14b chore(deps-dev): bump eslint from 10.8.1 to 10.9.0 in /superset-websocket (#43670)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-08-29 13:42:05 +07:00
dependabot[bot]
46f17aa880 chore(deps): bump baseline-browser-mapping from 2.11.16 to 2.11.17 in /docs (#43673)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-08-29 13:41:17 +07:00
dependabot[bot]
7bc44d5504 chore(deps): bump reselect from 5.2.0 to 5.3.0 in /docs (#43674)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-08-29 13:41:06 +07:00
dependabot[bot]
4444a89f26 chore(deps): bump reselect from 5.2.0 to 5.3.0 in /superset-frontend (#43675)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-08-29 13:40:47 +07:00
dependabot[bot]
7c2a3fa777 chore(deps-dev): bump baseline-browser-mapping from 2.11.16 to 2.11.17 in /superset-frontend (#43676)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-08-29 13:38:37 +07:00
dependabot[bot]
b38fa70256 chore(deps-dev): bump eslint from 10.8.1 to 10.9.0 in /superset-frontend (#43677)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-08-29 13:38:10 +07:00
PRATHAMESH HUKKERI
1c8d58a77b fix(i18n): make language pack endpoint public for embedded dashboards (#42438)
Co-authored-by: Prathamesh Hukkeri <prathamesh04@users.noreply.github.com>
2026-08-28 20:46:27 -07:00
Mallikarjuna Reddy Nimmakayala
de33efae98 fix(table-chart): support where for adhoc columns with server-side pagination (#42706) 2026-08-28 20:37:20 -07:00
Sepuri Sai Krishna
b30d569028 fix(chart): map the remaining time grains for Prophet forecasting (#43205) 2026-08-28 20:35:52 -07:00
Abdul Rehman
6f69fc6dba feat(postprocessing): teach pivot() to compute percent-of-row/col/total (#42809) (#42976)
Co-authored-by: Evan Rusackas <evan@preset.io>
Co-authored-by: Claude Opus 4.7 <noreply@anthropic.com>
2026-08-28 20:34:15 -07:00
dependabot[bot]
b2a8842551 chore(deps-dev): bump the swc group in /superset-frontend with 3 updates (#43447)
Signed-off-by: dependabot[bot] <support@github.com>
Signed-off-by: hainenber <dotronghai96@gmail.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: hainenber <dotronghai96@gmail.com>
2026-08-28 20:30:12 -07:00
dependabot[bot]
c7cc22f4fe chore(deps): bump setuptools to 84.0.0 and pip to 26.2.1 (#43413)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Evan Rusackas <evan@rusackas.com>
Co-authored-by: Superset Dev <dev@superset.apache.org>
2026-08-28 18:34:09 -07:00
Francesco.Castaldi
058eaf78ab fix(dashboard): remove @has_access_api from filter state REST API (#43564)
Co-authored-by: FrancescoCastaldi <francesco.castaldi@mapsgroup.it>
2026-08-28 17:06:06 -07:00
Elizabeth Thompson
30402b412c fix(explore): catch TemplateError when validating access for query-backed form_data (#43470) 2026-08-28 15:03:08 -07:00
Mike Bridge
782a57fbfc chore(deps-dev): bump nwsapi from 2.2.23 to 2.2.24 to fix the SqlEditor jest flake (#43657)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
2026-08-28 17:59:35 -04:00
ʈᵃᵢ
99a1f756cd fix(trino): coerce string-typed values results back to source type (#43654) 2026-08-28 14:25:42 -07:00
Mehmet Salih Yavuz
0eda633b45 fix(dataset): stop a stale edit modal from silently reverting a saved change (#43583) 2026-08-28 21:07:36 +03:00
dependabot[bot]
5c24f72d92 chore(deps): bump content-disposition from 2.0.1 to 3.0.0 in /superset-frontend (#43382)
Signed-off-by: dependabot[bot] <support@github.com>
Signed-off-by: hainenber <dotronghai96@gmail.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: hainenber <dotronghai96@gmail.com>
2026-08-29 00:53:43 +07:00
Gabriel Torres Ruiz
60479fb958 feat(dashboard): add dashboard.slice.header.menu extension slot (#43624)
Signed-off-by: Gabriel Torres Ruiz <gabo2595@gmail.com>
2026-08-28 14:52:18 -03:00
Ville Brofeldt
4ced5ca35a chore(superset-core): drop unused __all__ lists (#43626) 2026-08-28 09:46:56 -07:00
rlei
fc26991cd4 feat(plugin-chart-echarts): add gridline and axis tick controls (#43428) 2026-08-28 09:44:39 -07:00
shaurya
a5c68c8df9 fix(number-format): handle sub-byte values and unit rollover in memory formatter (#43549)
Co-authored-by: Shaurya <19599684+no-hup@users.noreply.github.com>
2026-08-28 09:44:19 -07:00
Đỗ Trọng Hải
53e76afd70 feat(ci): enforce min release age for npm dep installation (#43164)
Signed-off-by: hainenber <dotronghai96@gmail.com>
2026-08-28 23:42:41 +07:00
shaurya
d997d363e3 docs: update frontend Node/npm prerequisites to match engines (#43546)
Co-authored-by: Shaurya <19599684+no-hup@users.noreply.github.com>
2026-08-28 23:16:34 +07:00
Lalith Kothuru
9a6f6ee0c0 docs: fix docstring parameter names that do not match signatures (#43630) 2026-08-28 22:57:43 +07:00
Joe Li
94dd3d049c fix(ci): repair scheduled pre-commit drift (#43603) 2026-08-28 22:56:18 +07:00
Sanmitra Nagaraj
b3f718da62 fix(explore): keep certification badges after saving or swapping a dataset (#43319)
Co-authored-by: rusackas <evan@rusackas.com>
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
2026-08-28 08:47:36 -07:00
Mehmet Salih Yavuz
abf338d611 feat(filters): search filter values server-side in Explore (#43518)
Co-authored-by: Enzo Martellucci <52219496+EnxDev@users.noreply.github.com>
2026-08-28 16:46:09 +03:00
Mehmet Salih Yavuz
e518b21994 fix(dashboard): keep the chart menu usable in fullscreen on production builds (#43555) 2026-08-28 15:47:48 +03:00
Mehmet Salih Yavuz
e18f27e1ce fix(native-filters): allow clearing an optional "select first value" filter (#43405) 2026-08-28 15:46:46 +03:00
dependabot[bot]
9bf457dea6 chore(deps): bump github/codeql-action/analyze from 4.37.7 to 4.37.8 (#43643)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-08-28 15:26:18 +03:00
Enzo Martellucci
cb7b790733 fix(dataset): surface real validation message in save-error dialog (#43459) 2026-08-28 13:35:09 +02:00
Alexandru Soare
8bec85158c feat(modals): add renderExtraFields prop to chart and dashboard properties modals (#43622) 2026-08-28 13:18:51 +03:00
dependabot[bot]
a30e4a4350 chore(deps): bump github/codeql-action/init from 4.37.7 to 4.37.8 (#43644)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-08-28 02:39:11 -07:00
dependabot[bot]
933dbbc2a2 chore(deps-dev): bump eslint-plugin-react-you-might-not-need-an-effect from 1.0.1 to 1.0.2 in /superset-frontend (#43645)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-08-28 02:39:06 -07:00
Enzo Martellucci
a59b96c4f5 fix(explore): keep the row count label visible when the row limit is reached (#43296) 2026-08-28 10:51:27 +02:00
Mafi
12cd259c55 fix(dataset): preserve validation error messages (#43631)
Co-authored-by: Matt Fitzgerald <matt.fitzgerald@preset.io>
2026-08-28 01:01:17 -04:00
Chandan P
3ddc3b1d56 fix(cache): fall back to default timeout when cache_timeout is None (#43149) 2026-08-27 21:50:53 -07:00
Chandan P
98ec6018df fix(embedded): honor "can view query" permission for guest users (#43151) 2026-08-27 21:49:52 -07:00
dependabot[bot]
2ebd415b8a chore(deps-dev): bump mcp from 1.29.1 to 2.0.0 (#43611)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Joe Li <joe@preset.io>
2026-08-27 21:49:50 -07:00
joey
81b3e85522 fix(echarts): guard cross-filter when labelMap entry is missing (#42559)
Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: rusackas <evan@rusackas.com>
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
2026-08-27 21:49:21 -07:00
Viktor Högberg
fd64efd72d fix(uploads): set catalog on datasets created by file upload (#43301) 2026-08-27 21:46:51 -07:00
bucketbase26
e39bfb255b fix(explore): prevent duplicate Date Range tooltips (#43425)
Co-authored-by: Joe Li <joe@preset.io>
2026-08-27 21:02:57 -07:00
Milad Rashidikhah
b7301ac88a fix: Dashboard export with charts from multiple databases (#37120)
Co-authored-by: rusackas <evan@rusackas.com>
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
2026-08-27 20:27:54 -07:00
dependabot[bot]
fa59b44cfe chore(deps): bump mapbox-gl from 3.28.1 to 3.29.0 in /superset-frontend (#43619)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-08-27 19:58:55 -07:00
Evan Rusackas
8c5be889d9 fix(cockroachdb): replace abandoned cockroachdb package with sqlalchemy-cockroachdb (#43501)
Co-authored-by: Superset Dev <dev@superset.apache.org>
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
2026-08-27 19:48:13 -07:00
Evan Rusackas
b733b57e9e docs(mcp): document chart type plugin filtering config (#43597)
Co-authored-by: Claude <noreply@anthropic.com>
2026-08-27 19:47:07 -07:00
Joe Li
13e97ba913 fix(sql-lab): fix transparent background in ag-grid native menus (#43368) 2026-08-27 16:56:36 -07:00
Evan Rusackas
f9e43a37d8 docs(theming): document THEME_DEFAULT_MODE config setting (#43601)
Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-27 16:19:40 -07:00
Evan Rusackas
5ff44c5ed6 docs(cli): document import_directory --username option (#43602)
Co-authored-by: Claude <noreply@anthropic.com>
2026-08-27 16:19:25 -07:00
Elizabeth Thompson
7b145a520c fix(tags): catch TemplateError when validating access for tagged SQL Lab queries (#43423)
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
2026-08-27 15:06:46 -07:00
Elizabeth Thompson
9f62aace7e fix(examples): replace deprecated granularity_sqla with granularity (#43432) 2026-08-27 15:06:42 -07:00
Elizabeth Thompson
20be48c085 fix(explore): catch TemplateError when validating access for permalinked query datasources (#43605)
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
2026-08-27 15:06:38 -07:00
Aurimas Navardauskas
e1c7a51674 fix(mcp): flag failed tool calls with isError (#43374) 2026-08-27 14:59:19 -07:00
Gabriel Torres Ruiz
ecbd6578b0 fix(db_engine_specs): always mask OAuth2 client secret in encrypted extra (#43491) 2026-08-27 18:42:51 -03:00
Amin Ghadersohi
ea3206b076 fix(mcp): surface rejected filter columns in get_chart_data (#43598) 2026-08-27 17:36:50 -04:00
Amin Ghadersohi
478f612f25 fix(mcp): add open-world tool annotations (#43529) 2026-08-27 17:36:30 -04:00
Amin Ghadersohi
a16bc0d94f fix(mcp): apply time grain overrides from extra_form_data (#43599) 2026-08-27 17:35:23 -04:00
Amin Ghadersohi
bcc6af6c5f fix(dao): don't mask transient OperationalError as a "not found" result (#43479)
Co-authored-by: Claude <noreply@anthropic.com>
2026-08-27 17:34:53 -04:00
Evan Rusackas
94b59420b7 docs(embedding): document EMBEDDED_DISABLE_PERMALINK_ORIGIN_REWRITE (#43600)
Co-authored-by: Claude <noreply@anthropic.com>
2026-08-27 13:15:08 -07:00
dependabot[bot]
6814a89230 chore(deps): bump gunicorn from 26.0.0 to 26.2.0 (#43609)
Signed-off-by: dependabot[bot] <support@github.com>
Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Joe Li <joe@preset.io>
2026-08-27 13:08:37 -07:00
dependabot[bot]
ebbe2e8714 chore(deps): bump the storybook group in /docs with 2 updates (#43610)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-08-27 13:08:32 -07:00
dependabot[bot]
b8acf4b207 chore(deps-dev): bump syntaqlite from 0.7.1 to 0.9.0 (#43612)
Signed-off-by: dependabot[bot] <support@github.com>
Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-08-27 13:08:28 -07:00
dependabot[bot]
ba5d5091b9 chore(deps): bump holidays from 0.102 to 0.103 (#43614)
Signed-off-by: dependabot[bot] <support@github.com>
Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Joe Li <joe@preset.io>
2026-08-27 13:08:24 -07:00
dependabot[bot]
8c88c0d3ac chore(deps-dev): update teradatasql requirement from >=20.0.0.65 to >=20.0.0.66 (#43615)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-08-27 13:08:18 -07:00
dependabot[bot]
e9e652d22d chore(deps-dev): bump trino from 0.338.0 to 0.339.0 (#43616)
Signed-off-by: dependabot[bot] <support@github.com>
Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-08-27 13:08:14 -07:00
dependabot[bot]
8f82d851cf chore(deps-dev): bump tiktoken from 0.13.0 to 0.14.0 (#43617)
Signed-off-by: dependabot[bot] <support@github.com>
Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-08-27 13:08:09 -07:00
dependabot[bot]
83934c038e chore(deps-dev): bump the storybook group in /superset-frontend with 5 updates (#43618)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-08-27 13:08:05 -07:00
dependabot[bot]
35fc36a97e chore(deps-dev): bump baseline-browser-mapping from 2.11.15 to 2.11.16 in /superset-frontend (#43621)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-08-27 13:08:00 -07:00
Evan Rusackas
88c4e689e3 fix(pivot-table): keep D3_FORMAT-styled numbers intact in pivoted Excel export (#42601)
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
2026-08-27 12:55:57 -07:00
Evan Rusackas
29f4a05eb7 docs(security): document the RLS indicator badge on dataset list/Explore (#43591)
Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-27 12:54:21 -07:00
Evan Rusackas
323741b043 docs(alerts-reports): document report/alert content format options (#43594)
Co-authored-by: Claude <noreply@anthropic.com>
2026-08-27 12:53:31 -07:00
Evan Rusackas
5c3c6362ae docs(cache): document NATIVE_FILTER_OPTIONS_CACHE_TIMEOUT (#43592)
Co-authored-by: Claude <noreply@anthropic.com>
2026-08-27 12:53:27 -07:00
Evan Rusackas
c1b6ff340b docs(mcp): document the update_dataset_metric tool (#43596)
Co-authored-by: Claude <noreply@anthropic.com>
2026-08-27 12:53:19 -07:00
Evan Rusackas
05830ebc77 docs: document PNG/PDF chart export options (#43593)
Co-authored-by: Claude <noreply@anthropic.com>
2026-08-27 12:53:09 -07:00
Evan Rusackas
74dd690102 docs(security): document EXTRA_EDITORS_RESOLVER (#43595)
Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-27 12:52:56 -07:00
Joe Li
22027ec24c fix(explore): require a value for adhoc filters before save (#43317) 2026-08-27 12:17:46 -07:00
Bikash
a3072c0bf6 fix(deckgl): give handlebars tooltips an opaque background (#43195)
Co-authored-by: bikashJMV <bikash@jmv.co.in>
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-27 12:17:32 -07:00
Bikash
6d8cbbfe8d fix(api): stop export downloads inheriting the one-year Cache-Control (#43185)
Co-authored-by: bikashJMV <bikash@jmv.co.in>
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
Co-authored-by: Evan Rusackas <evan@preset.io>
2026-08-27 12:17:02 -07:00
Sepuri Sai Krishna
926e0e6a92 fix(chart-data): validate select()'s exclude option instead of raising 500s (#42410)
Co-authored-by: Evan Rusackas <evan@preset.io>
2026-08-27 12:14:33 -07:00
dependabot[bot]
d013bc7a21 chore(deps): bump baseline-browser-mapping from 2.11.15 to 2.11.16 in /docs (#43613)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-08-27 12:11:32 -07:00
Enmanuel Sancho Quintanilla
87c48cc473 feat(echarts): make bar chart label position user-configurable (#38695)
Co-authored-by: Claude Opus 5 <noreply@anthropic.com>
Co-authored-by: Enzo Martellucci <52219496+EnxDev@users.noreply.github.com>
2026-08-27 12:10:38 -07:00
dependabot[bot]
c2266f860c chore(deps-dev): update clickhouse-connect requirement from <2.0,>=1.7.1 to >=1.7.2,<2.0 (#43608)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-08-27 12:06:41 -07:00
Viktor Högberg
e8aea6b6df fix: remove redundant 'tooltip' tooltip in scoping modal (#43455) 2026-08-27 11:10:26 -07:00
Evan Rusackas
bde1c483b0 chore(deps): group Dependabot security-update PRs per directory (#43604) 2026-08-27 11:08:21 -07:00
dependabot[bot]
ff1d9f9e09 chore(deps): bump dawidd6/action-download-artifact from 21 to 24 (#43441)
Signed-off-by: dependabot[bot] <support@github.com>
Signed-off-by: hainenber <dotronghai96@gmail.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: hainenber <dotronghai96@gmail.com>
2026-08-27 10:24:38 -07:00
Amogh Atreya
76151beade fix(export): truncate exported filenames to prevent Windows path extraction errors (#42531) (#42541)
Co-authored-by: Evan Rusackas <evan@preset.io>
2026-08-27 08:48:58 -07:00
Amin Ghadersohi
905a35d05f fix(mcp): resolve dashboard permalinks (#43482)
Co-authored-by: Claude <noreply@anthropic.com>
2026-08-27 11:35:36 -04:00
Mehmet Salih Yavuz
fde0fbd315 fix(ci): unblock lint-frontend after the oxlint 1.79.0 bump (#43587) 2026-08-27 17:32:04 +03:00
Endi Monan
5879994e68 fix(charts): resolve export filenames from the chart, not the form data (#43280) 2026-08-27 08:31:32 -03:00
dependabot[bot]
d1b7a4fdb4 chore(deps): bump dompurify from 3.4.13 to 3.4.14 in /superset-frontend (#43579)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-08-27 03:43:02 -07:00
dependabot[bot]
5ea7d05d98 chore(deps): bump immer from 11.1.17 to 11.1.18 in /superset-frontend (#43581)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-08-27 03:42:57 -07:00
dependabot[bot]
0ab64e305c chore(deps-dev): bump lerna from 10.0.0 to 10.0.1 in /superset-frontend (#43580)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-08-27 03:33:14 -07:00
Evan Rusackas
7d355a254e fix(Modal): stop the draggable modal from hijacking text selection (#43498)
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
2026-08-27 03:30:23 -07:00
Evan Rusackas
ca63bb532d fix(plugin-chart-table): preserve comparison arrow when a column-specific formatter entry is missing (#43494)
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
2026-08-27 03:30:17 -07:00
Bikash
b71293acde fix(sqllab): stop a database with no extra from breaking SET_DATABASES (#43216)
Co-authored-by: bikashJMV <bikash@jmv.co.in>
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
Co-authored-by: Evan Rusackas <evan@rusackas.com>
2026-08-26 20:51:08 -07:00
Greg Neighbors
0e172a6ff3 feat(waterfall): add show/hide toggles for X and Y axes (#42371)
Co-authored-by: Greg Neighbors <gregneighbors@Gregs-MacBook-Air-2.local>
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
Co-authored-by: Greg Neighbors <gregneighbors@Gregs-Air-2.lan>
2026-08-26 20:29:26 -07:00
rlei
1c66b71e23 feat(plugin-chart-echarts): allow decal patterns in custom ECharts options (#43427) 2026-08-26 18:01:52 -07:00
Alejandro Solares
6b0aa8714d chore(deps): raise Pillow/PyJWT floors to match resolved pins (#43519) 2026-08-26 15:55:14 -07:00
Vitor Avila
371e5e25e8 fix(trino): honor the verify arg for the user impersonation flow (#43534) 2026-08-26 19:44:30 -03:00
Luiz Otavio
a140e74f5f fix(excel): handle duplicate column labels in xlsx export (#43561)
Co-authored-by: Claude Opus 5 <noreply@anthropic.com>
2026-08-26 16:39:03 -03:00
Amin Ghadersohi
b8308a44a3 fix(pivot-table): exclude rollup totals from conditional formatting scale (#43481) 2026-08-26 15:08:07 -04:00
Amin Ghadersohi
13927f27e2 fix(mcp): raise SDK floor (#43530) 2026-08-26 15:04:59 -04:00
Amin Ghadersohi
434511cb37 fix(mcp): reject unsafe dashboard layout replacements (#43476) 2026-08-26 14:28:26 -04:00
JUST.in DO IT
70c9203aa9 fix(sqllab): release DB connection before fetching query results from backend (#43371)
Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-26 10:37:42 -07:00
Alexandru Soare
455e6603c1 feat(reports): gate retry functionality behind ALERT_REPORTS_RETRY flag (#43553) 2026-08-26 09:18:11 -07:00
dependabot[bot]
0597f36bb6 chore(deps-dev): bump oxlint from 1.78.0 to 1.79.0 in /superset-frontend (#43543)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-08-26 08:20:39 -07:00
Rafael Benitez
e7ca8b8a57 fix(chart): render ECharts charts at full resolution in download-as-image (#43456)
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-08-26 06:22:23 -04:00
dependabot[bot]
686245a905 chore(deps-dev): bump oxfmt from 0.63.0 to 0.64.0 in /superset-websocket (#43537)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-08-26 02:17:00 -07:00
dependabot[bot]
5a4900abb1 chore(deps-dev): bump vitest from 4.1.10 to 4.1.11 in /superset-websocket (#43538)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-08-26 02:16:56 -07:00
dependabot[bot]
450e2edc2b chore(deps): bump @swc/core from 1.16.0 to 1.16.1 in /docs (#43539)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-08-26 02:16:53 -07:00
dependabot[bot]
2bc96a47a4 chore(deps): bump swagger-ui-react from 5.32.13 to 5.32.14 in /docs (#43540)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-08-26 02:16:49 -07:00
dependabot[bot]
622bc45c9e chore(deps-dev): bump @swc/core from 1.16.0 to 1.16.1 in /superset-frontend (#43541)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-08-26 02:16:45 -07:00
dependabot[bot]
e97db01482 chore(deps-dev): bump oxfmt from 0.63.0 to 0.64.0 in /superset-frontend (#43542)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-08-26 02:16:40 -07:00
dependabot[bot]
6194c852f1 chore(deps-dev): bump oxfmt from 0.63.0 to 0.64.0 in /docs (#43544)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-08-26 02:16:36 -07:00
dependabot[bot]
19eca6523f chore(deps): bump uuid from 14.0.1 to 14.0.2 in /superset-frontend (#43545)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-08-26 02:16:31 -07:00
Amin Ghadersohi
1fd763bd29 fix(mcp): honor and validate chart filters (#43478)
Co-authored-by: Claude <noreply@anthropic.com>
2026-08-25 20:54:09 -07:00
Mike Bridge
b4f7114a09 fix(semantic-layer): warn that deleting a layer cascade-deletes its dependent views (#42845)
Co-authored-by: Mike Bridge <michael.bridge@ext.preset.io>
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
2026-08-25 20:47:45 -07:00
Vitor Avila
2dfe8a5bd9 fix(OAuth2): Support creating OAuth2 connections via SQLAlchemy URI (#43489) 2026-08-26 00:07:19 -03:00
Evan Rusackas
62d74be0af fix(metadb): apply SUPERSET_META_DB_LIMIT after join instead of per-table (#36304) (#42598)
Co-authored-by: Claude Code <noreply@anthropic.com>
Co-authored-by: Joe Li <joe@preset.io>
2026-08-25 19:31:11 -07:00
Shivam Goel
473c318335 chore(superset-core): add __init__.py to semantic_layers (#43528) 2026-08-25 18:07:28 -07:00
Evan Rusackas
61ab0cdb5d fix(ocient): update GIS test fixtures for pyocient's relocated geo types (#43496)
Co-authored-by: Superset Dev <dev@superset.apache.org>
2026-08-25 17:18:02 -07:00
Evan Rusackas
e6b9205821 fix(country-map): give Alborz its own ISO code instead of reusing Tehran's (#42429)
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
Co-authored-by: Joe Li <joe@preset.io>
Co-authored-by: Đỗ Trọng Hải <41283691+hainenber@users.noreply.github.com>
2026-08-25 16:59:48 -07:00
Evan Rusackas
0dcb2ca53a feat(maps): Add Italy regions and autonomous provinces country map (#42309)
Co-authored-by: lum4chi <francesco.lumachi@gmail.com>
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
Co-authored-by: Joe Li <joe@preset.io>
2026-08-25 15:45:31 -07:00
Bexultan
649d6f1b41 fix(mcp): defer unknown numeric types to compile (#43131)
Co-authored-by: Bexultan Mustafin <bexultan.mustafin@ffins.kz>
2026-08-25 15:35:00 -07:00
Bexultan
90dab7cf61 fix(mcp): accept common chart input variants (#43130)
Co-authored-by: Bexultan Mustafin <bexultan.mustafin@ffins.kz>
2026-08-25 15:22:52 -07:00
Sepuri Sai Krishna
68386a53ee chore(database): remove dead extra validation exception classes (#42411)
Co-authored-by: Joe Li <joe@preset.io>
2026-08-25 15:14:16 -07:00
Mike Bridge
b89da3e9fc docs(versioning): fix post-flip doc and comment drift (#43493)
Co-authored-by: Mike Bridge <michael.bridge@ext.preset.io>
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
2026-08-25 13:00:25 -07:00
Mike Bridge
88d2c2954e feat(deletion-retention): persist purge block reason codes on the audit log (#43485)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
2026-08-25 12:46:55 -07:00
Amin Ghadersohi
f903e02d91 chore(deps): restore permissive marshmallow lower bound (>=3.0, <5) (#43521) 2026-08-25 14:38:44 -04:00
Maxime Beauchemin
fc4d7221ec fix(explore): skip re-fetch when navigating away from /explore (#39506)
Co-authored-by: sadpandajoe <jcli38@gmail.com>
2026-08-25 11:32:25 -07:00
Chen, Ting-An
3585e8235a fix(i18n): review Traditional Chinese count labels (#43063)
Co-authored-by: Joe Li <joe@preset.io>
2026-08-25 10:28:12 -07:00
Evan Rusackas
34ffa37aaa chore(ci): drop inert SQLALCHEMY_WARN_20 flag from unit-test CI (#43495)
Co-authored-by: Superset Dev <dev@superset.apache.org>
2026-08-25 10:19:38 -07:00
Russlan Ramdowar
02b3e43b66 fix(number-format): preserve custom smart formatter id (#43439) 2026-08-25 10:11:52 -07:00
Dmitry
f9530f31ab fix(table): keep each metric's own aggregate in the summary row by default (#43421)
Co-authored-by: Dmitry Kucher <dima@virtuman.com>
2026-08-25 10:10:02 -07:00
dependabot[bot]
fd3849cef1 chore(deps): bump antd from 6.6.0 to 6.6.1 in /superset-frontend (#43509)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: rusackas <evan@rusackas.com>
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
2026-08-25 05:56:18 -07:00
dependabot[bot]
ef0ad01aa5 chore(deps-dev): bump the storybook group across 1 directory with 5 updates (#43507)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-08-25 05:52:46 -07:00
dependabot[bot]
d480152735 chore(deps): bump the storybook group in /docs with 2 updates (#43505)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-08-25 02:46:30 -07:00
dependabot[bot]
cbfa94c4dd chore(deps): bump antd from 6.6.0 to 6.6.1 in /docs (#43506)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-08-25 02:46:26 -07:00
dependabot[bot]
d2aeb29223 chore(deps-dev): bump baseline-browser-mapping from 2.11.14 to 2.11.15 in /superset-frontend (#43508)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-08-25 02:46:22 -07:00
dependabot[bot]
7bad69f523 chore(deps): bump dayjs from 1.11.22 to 1.11.23 in /superset-frontend (#43510)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-08-25 02:46:17 -07:00
dependabot[bot]
9dd8c42f3d chore(deps): bump dompurify from 3.4.12 to 3.4.13 in /superset-frontend (#43511)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-08-25 02:46:12 -07:00
htamakos
6c2fef29cb feat(snowflake): Add support for OAuth 2.0 authentication (#36856)
Co-authored-by: Evan Rusackas <evan@preset.io>
Co-authored-by: Evan Rusackas <evan@rusackas.com>
Co-authored-by: Claude <noreply@anthropic.com>
Co-authored-by: Joe Li <joe@preset.io>
2026-08-24 21:22:14 -07:00
Evan Rusackas
bd7b739212 chore: remove obsolete pandas/SQLAlchemy version compat shim (#43497)
Co-authored-by: Superset Dev <dev@superset.apache.org>
2026-08-24 20:11:52 -07:00
Mike Bridge
f83fb7c0e0 fix(archived-list): use the semantic-layers-aware label for the dataset type (#43465)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Co-authored-by: Amin Ghadersohi <amin.ghadersohi@gmail.com>
2026-08-24 20:38:29 -04:00
Mike Bridge
a9d54a0037 fix(soft-delete): card-view chart delete shows the archive dialog (#43469)
Co-authored-by: Mike Bridge <michael.bridge@ext.preset.io>
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Co-authored-by: Amin Ghadersohi <amin.ghadersohi@gmail.com>
2026-08-24 20:37:52 -04:00
dependabot[bot]
8b792ab660 chore(deps-dev): bump @swc/core from 1.15.47 to 1.16.0 in /superset-frontend (#43446)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: rusackas <evan@rusackas.com>
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
2026-08-24 16:52:00 -07:00
Durgaprasad M L
107204a1fc fix(sqllab): allow SQL Lab query owners to create charts without all_datasource_access (#42479)
Co-authored-by: Evan Rusackas <evan@rusackas.com>
2026-08-24 16:51:57 -07:00
Mike Bridge
7e3d092ac4 fix(soft-delete): name the recovery location in the archive confirmation (#43401)
Co-authored-by: Mike Bridge <michael.bridge@ext.preset.io>
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
2026-08-24 18:56:20 -04:00
dependabot[bot]
dfd057b920 chore(deps-dev): update clickhouse-connect requirement from <2.0,>=1.6.0 to >=1.7.1,<2.0 (#43419)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-08-24 13:54:23 -07:00
dependabot[bot]
52571a5b8b chore(deps): bump the rjsf group in /superset-frontend with 3 updates (#43440)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Đỗ Trọng Hải <41283691+hainenber@users.noreply.github.com>
2026-08-24 13:54:19 -07:00
Joe Li
ca3d7670b7 fix(ci): restore scheduled CI checks (#43266) 2026-08-24 12:31:50 -07:00
Joe Li
94855e9626 fix(frontend): ignore stale list responses (#43306) 2026-08-24 12:13:34 -07:00
Joe Li
7dbf71a379 fix(query-object): reject malformed ad-hoc metrics (#43353)
Co-authored-by: Claude <noreply@anthropic.com>
2026-08-24 12:12:25 -07:00
Joe Li
24b95f9ca7 fix(gsheets): correctly format Date-column filter literals (#43355)
Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-24 12:12:04 -07:00
Joe Li
c635d0754f fix(explore): honor column Label in filter search and pill (#43404) 2026-08-24 12:11:52 -07:00
Joe Li
31f06c0ee6 fix(dataset): correct Hours Offset filter bounds and grain-truncation order (#43173) 2026-08-24 11:47:16 -07:00
Joe Li
27ec80c07b fix(explore): clear stale custom time-shift date error (#43146)
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
2026-08-24 11:46:48 -07:00
Joe Li
a8a8b51afb fix(plugin-chart-table): guard row-indexed comparison-color lookups against undefined entries (#43139) 2026-08-24 11:45:25 -07:00
Joe Li
6ab21b381a fix(mysql): resolve wire-protocol column types and mutate rows from immutable results (#42821)
Co-authored-by: Jean Massucatto <massucattoj@gmail.com>
Co-authored-by: Claude <noreply@anthropic.com>
2026-08-24 11:45:15 -07:00
Đỗ Trọng Hải
b0962ba5ed fix(plugin/chart/parallel-coordinate): prevent frontend crash with empty/undefined metrics when moving between pages quickly (#42392)
Signed-off-by: hainenber <dotronghai96@gmail.com>
2026-08-24 11:44:50 -07:00
Joe Li
bf5f3a9e6b test(dashboard): migrate drill-to-detail E2E from Cypress to Playwright (#41437)
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-08-24 11:44:35 -07:00
Evan Rusackas
c980b3a361 fix(mcp): tighten auth and request validation edge cases (#43388)
Co-authored-by: Superset Dev <dev@superset.apache.org>
Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-24 10:58:59 -07:00
Bikash
dc436c76f7 fix(datasets): keep a metric's warning text when editing from Explore (#43177)
Co-authored-by: bikashJMV <bikash@jmv.co.in>
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
Co-authored-by: Evan Rusackas <evan@rusackas.com>
2026-08-24 10:47:45 -07:00
Bikash
6eced8e919 fix(roles): let the permissions dropdown size to its content (#43196)
Co-authored-by: bikashJMV <bikash@jmv.co.in>
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
Co-authored-by: Evan Rusackas <evan@preset.io>
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Evan Rusackas <evan@rusackas.com>
2026-08-24 10:46:03 -07:00
dependabot[bot]
1bde62f997 chore(deps-dev): bump gevent from 26.7.0 to 26.8.0 (#43411)
Signed-off-by: dependabot[bot] <support@github.com>
Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-08-24 10:21:06 -07:00
dependabot[bot]
f1f6347885 chore(deps-dev): bump prophet from 1.3.0 to 1.4.0 (#43412)
Signed-off-by: dependabot[bot] <support@github.com>
Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-08-24 10:21:02 -07:00
dependabot[bot]
8591f52ced chore(deps): bump pyarrow from 25.0.0 to 25.0.1 (#43414)
Signed-off-by: dependabot[bot] <support@github.com>
Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-08-24 10:20:59 -07:00
dependabot[bot]
ceb75b9350 chore(deps): bump sqlalchemy from 2.0.51 to 2.0.52 (#43415)
Signed-off-by: dependabot[bot] <support@github.com>
Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-08-24 10:20:55 -07:00
dependabot[bot]
db539288ac chore(deps-dev): update teradatasql requirement from >=20.0.0.64 to >=20.0.0.65 (#43416)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-08-24 10:20:51 -07:00
dependabot[bot]
a392e8b102 chore(deps): bump marshmallow from 4.3.0 to 4.3.1 (#43417)
Signed-off-by: dependabot[bot] <support@github.com>
Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-08-24 10:20:48 -07:00
dependabot[bot]
e450acf1c7 chore(deps): bump sqlglot from 30.16.0 to 30.17.0 (#43418)
Signed-off-by: dependabot[bot] <support@github.com>
Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-08-24 10:20:44 -07:00
dependabot[bot]
2c02965f2b chore(deps): bump @swc/core from 1.15.47 to 1.16.0 in /docs (#43443)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-08-24 10:20:38 -07:00
Evan Rusackas
f3142e7b15 fix(tags): fix broken import in daos/tag.py (#43466) 2026-08-24 10:15:08 -07:00
dependabot[bot]
649c062825 chore(deps): bump baseline-browser-mapping from 2.11.13 to 2.11.15 in /docs (#43444)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-08-24 09:52:03 -07:00
Mike Bridge
3f10d8b1cc fix(versioning): suppress automatic chart normalization changes (#43350)
Co-authored-by: Mike Bridge <michael.bridge@ext.preset.io>
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
2026-08-24 09:09:20 -07:00
Mehmet Salih Yavuz
15b98aa6da fix(plugin-chart-echarts): apply contribution before rename with time comparison (#43384) 2026-08-24 19:08:08 +03:00
Evan Rusackas
7f1b41444c fix: add missing access checks to semantic-layer and theme endpoints (#43389)
Co-authored-by: Superset Dev <dev@superset.apache.org>
Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-24 08:52:45 -07:00
Evan Rusackas
8a32324184 fix: add missing ownership checks to tag, report-log, and dataset-schema endpoints (#43390)
Co-authored-by: Superset Dev <dev@superset.apache.org>
Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-24 08:44:22 -07:00
Joe Li
4623d9219a fix: update in the wild link on community page (#43403) 2026-08-24 22:28:19 +07:00
dependabot[bot]
dcac129b51 chore(deps): bump js-yaml from 5.2.3 to 5.3.0 in /docs (#43442)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-08-24 22:17:39 +07:00
dependabot[bot]
7196ce8a0c chore(deps): bump docker/setup-buildx-action from 4.2.0 to 4.3.0 (#43445)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-08-24 22:16:57 +07:00
dependabot[bot]
e7756aeef9 chore(deps): bump immer from 11.1.16 to 11.1.17 in /superset-frontend (#43448)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-08-24 22:16:27 +07:00
DanielSwift1992
af859717a7 chore: remove two stale codecov ignore paths (#43438) 2026-08-24 22:15:57 +07:00
dependabot[bot]
8fa48d73f6 chore(deps-dev): bump concurrently from 10.0.4 to 10.0.5 in /superset-frontend (#43449)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-08-24 22:04:38 +07:00
dependabot[bot]
90a3d93002 chore(deps): bump dayjs from 1.11.21 to 1.11.22 in /superset-frontend (#43450)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-08-24 22:04:09 +07:00
dependabot[bot]
5ffb72151e chore(deps): bump react-error-boundary from 6.1.2 to 6.1.3 in /superset-frontend (#43451)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-08-24 22:03:04 +07:00
Enzo Martellucci
c3ed8b312d fix(security): surface extra_editors in dashboard/chart lists (#43392) 2026-08-24 11:49:29 +02:00
Elizabeth Thompson
9f505eb0cb fix(examples): replace deprecated timeseries_limit_metric with series_limit_metric (#43422) 2026-08-22 15:02:20 -07:00
Joe Li
f2610e9dca fix(sqllab): default PostgreSQL port to 5432 in the dynamic connection form (#43351)
Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-21 15:59:33 -07:00
abdullah reveha
09bd8c98de feat(chart): enable cross-filter on temporal x-axis (bar/label click) (#42792)
Co-authored-by: Abdullah Sahin <you@example.comclear>
2026-08-21 15:45:06 -07:00
Aurimas Navardauskas
5812c0eab5 fix(mcp): fail closed when MCP_AUTH_FACTORY raises (#43329) 2026-08-21 15:43:51 -07:00
Mike Bridge
5f3e34908c fix(charts): surface blocking alerts/reports when archiving a chart (#43402)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
2026-08-21 19:33:32 -03:00
Evan Rusackas
9781254363 fix(export): escape formula-triggering values consistently and bound post-processing inputs (#43396)
Co-authored-by: Superset Dev <dev@superset.apache.org>
2026-08-21 12:37:33 -07:00
Evan Rusackas
65893113fe fix(import): tighten ownership and validation checks across asset importers (#43393)
Co-authored-by: Superset Dev <dev@superset.apache.org>
Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-21 12:35:33 -07:00
Evan Rusackas
04017f3956 fix(sqllab): re-validate access against rendered SQL and tighten cache/permalink scoping (#43394)
Co-authored-by: Superset Dev <dev@superset.apache.org>
Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-21 12:35:06 -07:00
Evan Rusackas
2b6044b624 fix: tighten SSRF validation, executor resolution, and cache scoping across reports/thumbnails (#43395)
Co-authored-by: Superset Dev <dev@superset.apache.org>
Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-21 12:34:37 -07:00
Evan Rusackas
aee98b527d fix(charts): escape untrusted strings before rendering into chart tooltips and popups (#43397)
Co-authored-by: Superset Dev <dev@superset.apache.org>
2026-08-21 12:31:31 -07:00
Evan Rusackas
edda9d1bbb fix(frontend): tighten SQL Lab autorun scoping and HTML-rendering defaults (#43398)
Co-authored-by: Superset Dev <dev@superset.apache.org>
Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-21 12:31:08 -07:00
Joe Li
03eac279e5 fix(explore): exclude permalink_key from chart URL params (#43354)
Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-21 11:43:18 -07:00
yousoph
fd7095df9a fix(explore): align viz type gallery thumbnails and Featured tag (#43373)
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-08-21 10:40:37 -07:00
PRATHAMESH HUKKERI
d422f5b4b6 fix: last date label hidden on time series x-axis (#39899) (#42299)
Co-authored-by: Prathamesh Hukkeri <prathamesh04@users.noreply.github.com>
Co-authored-by: Claude Code <noreply@anthropic.com>
Co-authored-by: Evan Rusackas <evan@preset.io>
2026-08-21 09:59:06 -07:00
Alexandru Soare
a05a099987 fix(embedded): block custom SQL injection in guest user chart payloads (#43111) 2026-08-21 17:05:40 +03:00
Evan Rusackas
05842a6350 feat(metrics): add MEDIAN/STDDEV_SAMP/VAR_SAMP as system-wide aggregates (#42895)
Co-authored-by: Claude Code <noreply@anthropic.com>
2026-08-21 04:15:17 -07:00
Evan Rusackas
e45dd2d3f1 ci: pull CI service images from GHCR mirror (fork-safe) [depends on #40880] (#40882)
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
2026-08-21 04:11:37 -07:00
Mehmet Salih Yavuz
65910abf21 fix(sqllab): disable Save dataset until the query runs successfully (#43330) 2026-08-21 12:56:42 +03:00
dependabot[bot]
6e22050b50 chore(deps): bump the storybook group in /docs with 2 updates (#43377)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-08-21 01:10:41 -07:00
dependabot[bot]
132340b652 chore(deps): bump astral-sh/setup-uv from 10.0.0 to 10.0.1 (#43378)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-08-21 01:10:37 -07:00
dependabot[bot]
14408eb3db chore(deps-dev): bump the storybook group in /superset-frontend with 5 updates (#43379)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-08-21 01:10:33 -07:00
dependabot[bot]
87743ef3f8 chore(deps): bump dompurify from 3.4.12 to 3.4.13 in /superset-frontend (#43380)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-08-21 01:10:29 -07:00
dependabot[bot]
fb53761ec8 chore(deps-dev): bump baseline-browser-mapping from 2.11.13 to 2.11.14 in /superset-frontend (#43381)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-08-21 01:10:25 -07:00
Amin Ghadersohi
f7d505e1fd fix(listview): stop card clicks creating a duplicate history entry (#43310) 2026-08-20 23:23:46 -04:00
Kasia
22396d504a fix(ux): use title case for button labels (#40048)
Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-authored-by: Evan Rusackas <evan@preset.io>
2026-08-20 20:14:33 -07:00
Gaston Laterza
27ea5de44a fix(i18n-es): correct case/number collapse in the semantic-layer labels (#43311)
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-20 20:03:57 -07:00
Joe Li
18fc2c6228 fix(sqllab): stop copying a permalink when opening a saved query (#43147)
Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-20 15:44:20 -07:00
Amin Ghadersohi
18a36d04c7 fix(mcp): preserve user-authored result values (#43202) 2026-08-20 18:29:39 -04:00
ʈᵃᵢ
01b1d58ac9 fix(plugin-chart-echarts): restore tooltips for metrics labelled like… (#43369) 2026-08-20 14:58:11 -07:00
Joe Li
7441ce90ae fix(charts): align grain-less time comparisons safely (#43315) 2026-08-20 14:55:01 -07:00
Amin Ghadersohi
42ba2a4433 fix(reports): humanize day-of-month + day-of-week crontabs as OR (#43307) 2026-08-20 16:46:08 -04:00
madhushreeag
271564cb0d feat(config): add EXTRA_PANDAS_POSTPROCESSING_OPS extension point (#43337)
Co-authored-by: madhushree agarwal <madhushree_agarwal@apple.com>
2026-08-20 13:15:41 -07:00
JUST.in DO IT
bcfb4346f6 fix(mcp): honor use_cache and cache_timeout in get_chart_data (#43349)
Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-20 13:01:41 -07:00
Joe Li
b5fe00b407 test(frontend): shrink flaky/misplaced recently-archived e2e coverage to Jest unit tests (#43264) 2026-08-20 11:48:02 -07:00
Parman Mohammadalizadeh
148ffaff50 fix(plugin-chart-echarts): omit stacked value labels on zero-height segments (#42756)
Co-authored-by: Evan Rusackas <evan@preset.io>
2026-08-20 11:04:19 -07:00
Ankit
83c6ea4e03 fix(explore): show the empty state when Samples returns no result payload (#43115) 2026-08-20 11:00:54 -07:00
Hans Yu
1ca5e61f54 chore: Unset future flag in engines and sessions. (#43273) 2026-08-20 10:58:37 -07:00
rlei
1ef12580a7 fix(chart): ignore chart actions for a chart no longer in state (#43228) 2026-08-20 10:57:21 -07:00
yousoph
c0884c0f0c fix(explore): keep x-axis label when overriding Time Column with time comparison (#42875)
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
Co-authored-by: Joe Li <joe@preset.io>
2026-08-20 10:52:22 -07:00
Sepuri Sai Krishna
2ff79bd495 fix(github): point the issue templates at labels that exist (#43357)
Co-authored-by: Claude Opus 5 <noreply@anthropic.com>
2026-08-20 10:13:36 -07:00
Mafi
e7dccd44a7 fix(reports): prevent blank/partial report PDFs from virtualized charts (#43348)
Co-authored-by: Matt Fitzgerald <matt.fitzgerald@preset.io>
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
Co-authored-by: Amin Ghadersohi <amin.ghadersohi@gmail.com>
2026-08-20 09:10:30 -04:00
dependabot[bot]
fdd3945dde chore(deps): bump github/codeql-action/analyze from 4.37.6 to 4.37.7 (#43361)
Signed-off-by: dependabot[bot] <support@github.com>
2026-08-20 13:58:31 +03:00
dependabot[bot]
8b67fb4d30 chore(deps-dev): bump globals from 17.10.0 to 17.11.0 in /superset-websocket (#43360)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-08-20 00:41:49 -07:00
dependabot[bot]
b288db91f9 chore(deps): bump github/codeql-action/init from 4.37.6 to 4.37.7 (#43362)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-08-20 00:41:43 -07:00
dependabot[bot]
80bba12d0f chore(deps-dev): bump globals from 17.10.0 to 17.11.0 in /docs (#43363)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-08-20 00:41:38 -07:00
dependabot[bot]
5d4358a149 chore(deps): bump google-auth-library from 11.0.1 to 11.0.2 in /superset-frontend (#43364)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-08-20 00:41:25 -07:00
Arya Ketan
f9cedf84e2 fix: drop post-processing options the operation no longer accepts (#42927)
Signed-off-by: Arya Ketan <aryaketan@sharechat.co>
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
Co-authored-by: Evan Rusackas <evan@preset.io>
2026-08-19 18:15:15 -07:00
Grégoire Gailly
c2d653b4b8 fix: set maxHeight of List components to height when in AutoSizer (#43056)
Co-authored-by: Evan Rusackas <evan@preset.io>
2026-08-19 16:56:30 -07:00
Đỗ Trọng Hải
5a96c3f538 chore(ci): disable Git commit info capture in Playwright E2E tests to avoid timeout (#43213)
Signed-off-by: hainenber <dotronghai96@gmail.com>
Co-authored-by: Joe Li <joe@preset.io>
2026-08-19 16:54:44 -07:00
ʈᵃᵢ
faf7c34c0a fix(explore): legacy boolean filters and limit available operators based on calculated column type (#43341) 2026-08-19 15:37:09 -07:00
dependabot[bot]
b8fca2145d chore(deps): bump astral-sh/setup-uv from 9.0.0 to 10.0.0 (#43322)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-08-19 14:40:02 -07:00
Alejandro Solares
c10054f521 fix(plugin-chart-chord): declare react as a peerDependency (#43304) 2026-08-19 17:35:38 -04:00
Amin Ghadersohi
8c500ccee1 fix(users): show password validation errors (#43191)
Co-authored-by: Claude <noreply@anthropic.com>
2026-08-19 16:57:46 -04:00
Joe Li
6d77efad29 fix(chart): stop contextmenu propagation in BigNumberViz (#43267)
Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-19 13:57:28 -07:00
Amin Ghadersohi
8222db3340 fix(dataset): preserve legacy default dashboard URLs (#43190)
Co-authored-by: Claude <noreply@anthropic.com>
2026-08-19 14:44:54 -04:00
dependabot[bot]
01ce8358a6 chore(deps-dev): bump globals from 17.9.0 to 17.10.0 in /superset-websocket (#43321)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-08-19 11:36:48 -07:00
dependabot[bot]
53a8a0e140 chore(deps): bump the docusaurus-openapi group in /docs with 2 updates (#43323)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-08-19 11:36:44 -07:00
dependabot[bot]
eafbff9f8d chore(deps-dev): bump globals from 17.9.0 to 17.10.0 in /docs (#43324)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-08-19 11:36:37 -07:00
dependabot[bot]
1339bcd9da chore(deps): bump swagger-ui-react from 5.32.12 to 5.32.13 in /docs (#43325)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-08-19 11:36:34 -07:00
dependabot[bot]
334e280489 chore(deps): bump dompurify from 3.4.12 to 3.4.13 in /superset-frontend (#43326)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-08-19 11:36:30 -07:00
dependabot[bot]
c07f3ebf2d chore(deps-dev): bump @swc/plugin-emotion from 14.15.0 to 14.19.0 in /superset-frontend (#43328)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-08-19 11:36:26 -07:00
Sumit Kumar
1569915096 feat(multi-value): array-typed column filters with two-tier operators (ClickHouse MVP) (#41279)
Signed-off-by: thedeceptio <thedeceptio@gmail.com>
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
2026-08-19 10:56:49 -07:00
Bexultan
fde0ba26d1 fix(mcp): validate virtual dataset metadata and surface errors (#43129)
Co-authored-by: Bexultan Mustafin <bexultan.mustafin@ffins.kz>
2026-08-19 10:50:37 -07:00
DanielSwift1992
097c99b19c fix: remove a labeler glob that matches no files (#43270) 2026-08-18 16:21:01 -07:00
David Dallakyan
5ce52e531d fix(clickhouse): add PT1S time grain (#43217) 2026-08-18 15:49:18 -07:00
Bikash
34cd50cc48 test(chart): mock the event log endpoint in the drill-to-detail menu test (#43183)
Co-authored-by: bikashJMV <bikash@jmv.co.in>
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
Co-authored-by: Joe Li <joe@preset.io>
2026-08-18 13:51:54 -07:00
Elizabeth Thompson
c0ab5f3385 fix(dashboard): preserve native filter keys for dataset-less filters on save (#42898)
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
Co-authored-by: Mehmet Salih Yavuz <salih.yavuz@proton.me>
2026-08-18 21:30:50 +03:00
ʈᵃᵢ
7d4f30574f feat(tooltip): add Truncate labels control to timeseries charts (#43272) 2026-08-18 11:05:07 -07:00
dependabot[bot]
e4ea6e23d8 chore(deps): bump supercluster from 8.0.1 to 9.0.0 in /superset-frontend (#43290)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-08-18 10:35:17 -07:00
dependabot[bot]
a13a5f1af4 chore(deps-dev): bump @typescript-eslint/eslint-plugin from 8.65.0 to 8.67.0 in /superset-websocket (#43284)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-08-18 10:34:39 -07:00
Endi Monan
f994602096 fix(dashboard): align list OpenAPI schema (#43256) 2026-08-18 10:22:50 -07:00
Amin Ghadersohi
086b4af65d feat(mcp): per-resource token scopes with user-permission intersection (#42297)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
2026-08-18 13:11:27 -04:00
Evan Rusackas
fd063d17bf fix(security): harden account password-change and session-invalidation handling (#42934)
Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
Co-authored-by: Joe Li <joe@preset.io>
2026-08-18 17:40:08 +01:00
Joe Li
60e1802c52 fix(dashboard): mute the Group By display control loading spinner (#42879)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Co-authored-by: Evan Rusackas <evan@preset.io>
2026-08-18 09:37:43 -07:00
Joe Li
2d1daac11a fix(explore): samples endpoint now honors requested row limit (#43148)
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
2026-08-18 09:28:04 -07:00
dependabot[bot]
3c90bdc6f0 chore(deps-dev): bump oxfmt from 0.62.0 to 0.63.0 in /superset-frontend (#43293)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-08-18 06:15:08 -07:00
dependabot[bot]
ebab31adc2 chore(deps): bump antd from 6.5.4 to 6.6.0 in /superset-frontend (#43294)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: rusackas <evan@rusackas.com>
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
2026-08-18 06:15:04 -07:00
dependabot[bot]
936f073b9a chore(deps-dev): bump @typescript-eslint/parser from 8.66.0 to 8.67.0 in /superset-websocket (#43281)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-08-18 03:00:46 -07:00
dependabot[bot]
d12320239a chore(deps-dev): bump typescript-eslint from 8.66.0 to 8.67.0 in /superset-websocket (#43282)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-08-18 03:00:42 -07:00
dependabot[bot]
8ef7be5788 chore(deps-dev): bump oxfmt from 0.62.0 to 0.63.0 in /superset-websocket (#43283)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-08-18 03:00:39 -07:00
dependabot[bot]
72458ab26f chore(deps-dev): bump @typescript-eslint/eslint-plugin from 8.66.0 to 8.67.0 in /superset-frontend in the typescript-eslint group (#43285)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-08-18 03:00:33 -07:00
dependabot[bot]
5105f13726 chore(deps-dev): bump the typescript-eslint group in /docs with 3 updates (#43286)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-08-18 03:00:29 -07:00
dependabot[bot]
bdafb6c330 chore(deps-dev): bump oxfmt from 0.62.0 to 0.63.0 in /docs (#43287)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-08-18 03:00:25 -07:00
dependabot[bot]
b4d79462ec chore(deps-dev): bump oxlint from 1.77.0 to 1.78.0 in /superset-frontend (#43288)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-08-18 03:00:21 -07:00
dependabot[bot]
49374f1fe5 chore(deps): bump antd from 6.5.4 to 6.6.0 in /docs (#43289)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-08-18 03:00:17 -07:00
dependabot[bot]
f766de6d0d chore(deps): bump dompurify from 3.4.12 to 3.4.13 in /superset-frontend (#43291)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-08-18 02:59:59 -07:00
dependabot[bot]
ed20e729d0 chore(deps): bump google-auth-library from 11.0.0 to 11.0.1 in /superset-frontend (#43292)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-08-18 02:59:55 -07:00
Evan Rusackas
13eb47a1da fix(api): improved request handling and embedded dashboard scoping (#42930)
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
Co-authored-by: Superset Dev <dev@superset.apache.org>
2026-08-17 23:50:25 -07:00
Elizabeth Thompson
98136d547c fix(reports): fail closed on alert screenshot capture instead of delivering a blank (#43031)
Signed-off-by: Elizabeth Thompson <eschutho@gmail.com>
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
2026-08-18 00:03:15 -04:00
Elizabeth Thompson
e2070d79dc fix(reports): wait for ECharts paint before capturing report screenshots (#43077)
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
2026-08-18 00:02:36 -04:00
ʈᵃᵢ
2807f1b0e8 fix(dashboard): report the real error when saving a dashboard fails (#43140) 2026-08-17 17:51:28 -07:00
dependabot[bot]
c9c230142b chore(deps): bump baseline-browser-mapping from 2.11.12 to 2.11.13 in /docs (#43243)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-08-17 17:46:24 -07:00
Beto Dealmeida
2f8875aaef feat(semantic layers): optional metadata for metrics/dimensions (#43269) 2026-08-17 17:34:17 -07:00
Elizabeth Thompson
6e270df4a2 fix(sql-lab): catch TemplateError in StreamingSqlResultExportCommand.validate (#43226) 2026-08-17 15:02:11 -07:00
dependabot[bot]
97eafd6140 chore(deps-dev): bump @types/node from 26.1.2 to 26.2.0 in /superset-websocket (#43240)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-08-17 14:34:35 -07:00
dependabot[bot]
3ed97f9691 chore(deps): bump ws from 8.21.2 to 8.21.3 in /superset-websocket (#43241)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-08-17 14:34:31 -07:00
dependabot[bot]
5105899810 chore(deps-dev): bump eslint from 10.8.0 to 10.8.1 in /superset-websocket (#43242)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-08-17 14:34:25 -07:00
dependabot[bot]
d917071708 chore(deps): bump caniuse-lite from 1.0.30001807 to 1.0.30001809 in /docs (#43244)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-08-17 14:34:18 -07:00
dependabot[bot]
afde126d9a chore(deps-dev): bump @testing-library/jest-dom from 7.0.0 to 7.0.1 in /superset-frontend (#43246)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-08-17 14:34:15 -07:00
dependabot[bot]
b3a9b9beb4 chore(deps-dev): bump @types/node from 26.1.2 to 26.2.0 in /superset-frontend (#43247)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-08-17 14:34:10 -07:00
dependabot[bot]
70ba9c9552 chore(deps-dev): bump eslint from 10.8.0 to 10.8.1 in /superset-frontend (#43248)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-08-17 14:34:06 -07:00
dependabot[bot]
98276cd1f3 chore(deps-dev): bump baseline-browser-mapping from 2.11.12 to 2.11.13 in /superset-frontend (#43249)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-08-17 14:34:03 -07:00
dependabot[bot]
cdeca0c179 chore(deps-dev): bump tsx from 4.23.10 to 4.23.12 in /superset-frontend (#43250)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-08-17 14:33:59 -07:00
Amin Ghadersohi
aaf9eba161 fix(db_engine_specs): skip malformed third-party dialect entry points (#43110)
Signed-off-by: Amin Ghadersohi <amin.ghadersohi@gmail.com>
2026-08-17 14:10:06 -07:00
Mehmet Salih Yavuz
1991e3f0d2 fix(datasets): keep metric certified_by when certification details are typed next (#43255) 2026-08-17 19:23:31 +03:00
Mehmet Salih Yavuz
cfd40bdd0d fix(dashboard): derive filter scope on read instead of serving a stale cache (#43252) 2026-08-17 19:23:19 +03:00
Endi Monan
a8216e3787 fix(calendar): localize date labels (#43163) 2026-08-17 09:44:14 -03:00
anops
d114eb638b fix(datasets): preserve metric warning_markdown when extra is absent (#42763)
Co-authored-by: Evan Rusackas <evan@preset.io>
2026-08-16 00:22:24 -07:00
Abdrihman Hussein
70d06e3d77 docs(faq): convert flask fab freeze question to a proper heading (#43221) 2026-08-15 23:21:13 +07:00
Joe Li
a2c004266b fix(ci): update vulnerable transitive nanoid (#43166) 2026-08-15 23:09:19 +07:00
dependabot[bot]
2773bc94eb chore(deps-dev): bump sqlalchemy-bigquery from 1.17.1 to 1.17.2 (#43209)
Signed-off-by: dependabot[bot] <support@github.com>
Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Đỗ Trọng Hải <41283691+hainenber@users.noreply.github.com>
2026-08-15 00:59:55 -07:00
Bikash
94459ae885 ci: declare top-level permissions on the remaining workflows (#43197)
Co-authored-by: bikashJMV <bikash@jmv.co.in>
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
Co-authored-by: Đỗ Trọng Hải <41283691+hainenber@users.noreply.github.com>
2026-08-15 14:48:43 +07:00
dependabot[bot]
ad3103fdb0 chore(deps-dev): bump fastmcp from 3.4.5 to 3.4.7 (#43210)
Signed-off-by: dependabot[bot] <support@github.com>
Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-08-15 00:43:03 -07:00
dependabot[bot]
065342f8c9 chore(deps-dev): bump pandas-gbq from 0.35.0 to 0.35.1 (#43212)
Signed-off-by: dependabot[bot] <support@github.com>
Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-08-15 00:42:19 -07:00
dependabot[bot]
2e8a8031f8 chore(deps): bump cachetools from 7.1.6 to 7.1.7 (#43208)
Signed-off-by: dependabot[bot] <support@github.com>
Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-08-15 14:33:36 +07:00
dependabot[bot]
cece082eed chore(deps-dev): update pyocient requirement from <4,>=1.0.15 to >=3.9.0,<4 (#43211)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-08-15 14:33:21 +07:00
dependabot[bot]
22dde07a8e chore(deps): bump mako from 1.3.12 to 1.4.1 (#43207)
Signed-off-by: dependabot[bot] <support@github.com>
Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-08-15 14:33:06 +07:00
dependabot[bot]
93cc520482 chore(deps): bump @googleapis/sheets from 13.0.2 to 14.0.0 in /superset-frontend (#43047)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Joe Li <joe@preset.io>
Co-authored-by: Evan Rusackas <evan@preset.io>
2026-08-15 14:23:13 +07:00
Bikash
7679c5641a fix(lint-metrics): record oxlint plugin rules under their canonical id (#43198)
Co-authored-by: bikashJMV <bikash@jmv.co.in>
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-15 14:21:38 +07:00
Evan Rusackas
f7c70568c3 fix(charts): fix Bubble chart crash and correct example's time_range to a year with real data (#43201)
Co-authored-by: Claude Code <noreply@anthropic.com>
2026-08-15 14:16:29 +07:00
Michael Gerber
69c4011a95 feat(embedded): Add setDataMask API method (#35754)
Co-authored-by: Evan Rusackas <evan@preset.io>
2026-08-14 22:07:24 -07:00
water
4684851336 fix(import): isolate per-tag import in a SAVEPOINT to avoid poisoned session (#42912) (#42920)
Co-authored-by: Claude Code <noreply@anthropic.com>
Co-authored-by: Evan Rusackas <evan@preset.io>
2026-08-14 21:56:43 -07:00
Evan Rusackas
e7139a7ac2 fix(models): enforce one OAuth2 token per user+database (#42897)
Co-authored-by: Amin Ghadersohi <amin.ghadersohi@gmail.com>
Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-14 21:50:56 -07:00
Bexultan
21ae918656 fix(mcp): validate chart queries before persistence (#43128)
Co-authored-by: Bexultan Mustafin <bexultan.mustafin@ffins.kz>
Co-authored-by: Joe Li <joe@preset.io>
Co-authored-by: Amin Ghadersohi <amin.ghadersohi@gmail.com>
2026-08-14 17:48:19 -07:00
Joe Li
ca94026e97 fix(sqllab): async queries no longer stuck at Running forever (#42896) 2026-08-14 17:47:10 -07:00
Evan Rusackas
a3bc2d908c ci(frontend): track bundle size over time with benchmark-action (#42511)
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
2026-08-14 17:40:46 -07:00
Gaston Laterza
738d12677a fix(i18n-es): correct stranded translations in API key and semantic layer catalogs (#43080)
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
Co-authored-by: Joe Li <joe@preset.io>
2026-08-14 17:40:23 -07:00
Elizabeth Thompson
2eedc609a8 fix(sql_lab): return 400 not 500 when raise_for_access hits malformed Jinja in results.py (#43145)
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
2026-08-14 15:02:47 -07:00
JUST.in DO IT
f4587218dd fix(mcp): populate user_id in MCP audit logs (#42767) 2026-08-14 16:28:01 -04:00
Amin Ghadersohi
8967e6c2d3 fix(mcp): accept changed_on_delta_humanized as order_column in list tools (#42571) 2026-08-14 16:11:46 -04:00
Amin Ghadersohi
81e431cd50 fix(mcp): return all chart query results (#42824) 2026-08-14 16:10:26 -04:00
Amin Ghadersohi
edfb009e1c fix(mcp): expose query context to Jinja macros (#42822) 2026-08-14 16:10:03 -04:00
Amin Ghadersohi
e808fcbcad fix(mcp): bind all generated charts to dashboard time filters (#42490) 2026-08-14 16:07:50 -04:00
Evan Rusackas
0a7ebe1dd1 fix(ci): stop superseded Docs Deployment runs from showing as cancelled (#42488)
Co-authored-by: Claude Code <noreply@anthropic.com>
2026-08-14 12:14:08 -07:00
Evan Rusackas
dd1afb029f fix(ci): stop py311/py312 docker builds from silently matching lean (#42509)
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
2026-08-14 12:07:23 -07:00
joey
c068a8c09c fix(dashboard): preserve certification fields when Certification panel is closed (#42957)
Co-authored-by: Amin Ghadersohi <amin.ghadersohi@gmail.com>
2026-08-14 11:19:39 -07:00
Evan Rusackas
b62ec512d2 fix(explore): hide edit-properties menu item for non-owner/non-editor users (#38884) (#42737)
Co-authored-by: Claude Code <noreply@anthropic.com>
2026-08-14 11:15:10 -07:00
Bexultan
1e65d93a83 fix(sql): handle ORDER BY in embedded MSSQL queries (#43127)
Co-authored-by: Bexultan Mustafin <bexultan.mustafin@ffins.kz>
Co-authored-by: Amin Ghadersohi <amin.ghadersohi@gmail.com>
2026-08-14 14:07:10 -04:00
Gabriel Torres Ruiz
856599027a fix(mcp): harden the embedded-guest chart data-read path 2026-08-14 14:55:11 -03:00
Evan Rusackas
c395b9a238 fix(examples): migrate Life Expectancy VS Rural % example off the removed legacy bubble viz_type (#43152)
Co-authored-by: Claude Code <noreply@anthropic.com>
2026-08-14 10:27:14 -07:00
Krishn
92728169de docs: document the zstd prerequisite for the frontend dev server (#43109)
Co-authored-by: Claude Opus 5 <noreply@anthropic.com>
Co-authored-by: Joe Li <joe@preset.io>
2026-08-14 20:41:13 +07:00
DanielSwift1992
84c371d56e chore: fix stale developer_portal paths (#43143) 2026-08-14 20:12:08 +07:00
dependabot[bot]
a4c47359e6 chore(deps): bump the storybook group in /docs with 2 updates (#43154)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-08-14 02:34:25 -07:00
dependabot[bot]
7c0c5283c3 chore(deps-dev): bump the storybook group in /superset-frontend with 5 updates (#43155)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-08-14 02:34:20 -07:00
dependabot[bot]
9c5bde9491 chore(deps): bump mapbox-gl from 3.28.0 to 3.28.1 in /superset-frontend (#43156)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-08-14 02:34:16 -07:00
dependabot[bot]
3b99e092d0 chore(deps-dev): bump tsx from 4.23.9 to 4.23.10 in /superset-frontend (#43157)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-08-14 02:34:13 -07:00
dependabot[bot]
acf39e3ef0 chore(deps): bump dompurify from 3.4.12 to 3.4.13 in /superset-frontend (#43158)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-08-14 02:34:10 -07:00
dependabot[bot]
8523ea4d0a chore(deps): bump caniuse-lite from 1.0.30001806 to 1.0.30001807 in /docs (#43159)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-08-14 02:34:06 -07:00
dependabot[bot]
9bc3173e3a chore(deps): bump antd from 6.5.3 to 6.5.4 in /docs (#43160)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-08-14 02:34:03 -07:00
dependabot[bot]
a6db0d1cde chore(deps): bump query-string from 9.4.1 to 9.5.0 in /superset-frontend (#43161)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-08-14 02:34:00 -07:00
dependabot[bot]
aec567f7d6 chore(deps): bump antd from 6.5.3 to 6.5.4 in /superset-frontend (#43162)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-08-14 02:33:56 -07:00
Evan Rusackas
bacaf08a22 docs(perf): add Dashboard Performance guide covering virtualization, lazy tabs, and chart-count guidance (#40238)
Co-authored-by: Claude Code <noreply@anthropic.com>
2026-08-13 23:41:00 -07:00
Evan Rusackas
a188e9473a feat(chart): let Drill By scope to the clicked x-axis value (#42296)
Co-authored-by: Jacob Hartmann (BUVM-STIL) <jacob.hartmann@stil.dk>
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Co-authored-by: Joe Li <joe@preset.io>
2026-08-13 17:02:27 -07:00
Evan Rusackas
537f0fd2db fix(sqllab): use dialect-specific quote chars for autocomplete identifiers (#41492)
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
Co-authored-by: Amin Ghadersohi <amin.ghadersohi@gmail.com>
Co-authored-by: Joe Li <joe@preset.io>
2026-08-13 14:04:38 -07:00
Joe Li
8f78f9eb9c chore: update CODEOWNERS for extension and config files (#43142) 2026-08-13 13:33:49 -07:00
Joe Li
930ba64fdf fix(ci): format ErrorMessage tests (#43114) 2026-08-13 13:19:08 -07:00
Evan Rusackas
3fb58900b9 chore(duckdb): remove cursor.description workaround, no longer reproducible (#43101)
Co-authored-by: Superset Dev <dev@superset.apache.org>
Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
Co-authored-by: Joe Li <joe@preset.io>
2026-08-13 13:16:16 -07:00
Evan Rusackas
a63483b9b1 fix(sql): rebase Dremio dialect on sqlglot's native dialect (#43099)
Co-authored-by: Superset Dev <dev@superset.apache.org>
Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
Co-authored-by: Joe Li <joe@preset.io>
2026-08-13 13:16:06 -07:00
Viktor Högberg
01d0772d4f fix(box-plot): distribute across field not marked as required for datasets without a temporal column (#43087)
Co-authored-by: Joe Li <joe@preset.io>
2026-08-13 13:15:51 -07:00
Evan Rusackas
3c7633f935 fix(encrypt): stop naive padding from truncating secrets ending in '*' (#43074)
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
Co-authored-by: Joe Li <joe@preset.io>
2026-08-13 13:15:37 -07:00
Evan Rusackas
f7a2f0ec50 feat(table): allow choosing Sum or Average for the "Show summary" totals row (#43027)
Co-authored-by: Claude Code <noreply@anthropic.com>
2026-08-13 13:15:23 -07:00
Evan Rusackas
dc9547554b fix(echarts): normalize BigInt metric values before summing/dividing in stacked charts (#36401) (#42594)
Co-authored-by: Claude Code <noreply@anthropic.com>
Co-authored-by: Joe Li <joe@preset.io>
2026-08-13 13:14:33 -07:00
Evan Rusackas
67bbe0ac17 ci: speed up backend CI with astral-sh/setup-uv and apt package caching (#42498)
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
2026-08-13 13:14:24 -07:00
Evan Rusackas
6211f9936b feat(mobile): Add mobile-friendly dashboard consumption mode (#37141)
Co-authored-by: Superset Dev <dev@superset.apache.org>
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Co-authored-by: Joe Li <joe@preset.io>
2026-08-13 13:14:11 -07:00
Bernedotcom2312
5b28158519 fix(helm): stop shipping conflicting podDisruptionBudget defaults (#42995)
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-13 13:02:51 -07:00
Amin Ghadersohi
117b92a517 fix(mcp): expose table column formatting (#42658) 2026-08-13 15:21:44 -04:00
Evan Rusackas
e1468a709c fix(sunburst): keep SQL null and literal string "null" as distinct groups (#43013)
Co-authored-by: Claude <noreply@anthropic.com>
2026-08-13 11:07:06 -07:00
Evan Rusackas
c8cb09d458 fix(dev): stop the webpack dev-proxy from hanging on a mid-stream backend disconnect (#42811)
Co-authored-by: Claude Code <noreply@anthropic.com>
2026-08-13 11:06:30 -07:00
Evan Rusackas
ec136f6d8d fix(charts): decode CSV bytes payload before feeding pandas StringIO (#32370) (#42735)
Co-authored-by: Claude Code <noreply@anthropic.com>
Co-authored-by: Joe Li <joe@preset.io>
2026-08-13 11:06:09 -07:00
goingforstudying-ctrl
d0658bacc8 fix(mcp): give concurrent tool calls isolated db sessions (#42629)
Co-authored-by: goingforstudying-ctrl <goingforstudying-ctrl@users.noreply.github.com>
Co-authored-by: Evan Rusackas <evan@preset.io>
Co-authored-by: Joe Li <joe@preset.io>
2026-08-13 11:05:40 -07:00
ʈᵃᵢ
b8ca729f9f fix(sql): only force a LIMIT onto query expressions (#43097) 2026-08-13 10:43:45 -07:00
Evan Rusackas
25c2ca1127 ci: run pre-commit checks via prek (#42500)
Co-authored-by: Claude Code <noreply@anthropic.com>
2026-08-13 10:28:11 -07:00
Evan Rusackas
d5ae93c9b8 test(echarts): pin Bar chart X Axis Title flows through untouched (#42560) (#42599)
Co-authored-by: Claude Code <noreply@anthropic.com>
2026-08-13 10:27:32 -07:00
Evan Rusackas
fbeba10f75 fix(sqllab): make MenuDotsDropdown trigger focusable for tab rename (#43015)
Co-authored-by: Claude <noreply@anthropic.com>
2026-08-13 10:26:59 -07:00
Evan Rusackas
c8305b0ba9 feat(ci): publish Python unit test results as PR check annotations (#42503)
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
2026-08-13 10:26:42 -07:00
Evan Rusackas
e1777737a7 fix(docs): sync live component demos to the docs site's dark mode toggle (#42602)
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
2026-08-13 10:15:54 -07:00
Amin Ghadersohi
762fdccfde fix(oauth2): log database token failures (#42644) 2026-08-13 12:54:55 -04:00
Amin Ghadersohi
5554b892ff fix(mcp): preserve table chart state during updates (#42655)
Co-authored-by: Claude <noreply@anthropic.com>
2026-08-13 12:54:05 -04:00
dependabot[bot]
e2bb33b1da chore(deps): bump the ag-grid group across 1 directory with 2 updates (#43103)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-08-13 06:50:19 -07:00
Evan Rusackas
59361581cd fix(embedded): restore chart rendering for guest dashboards (#43095)
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
2026-08-13 05:38:57 -07:00
Evan Rusackas
08dfca9631 fix(ci): enforce a single Alembic migration head (#42890)
Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-13 05:38:45 -07:00
dependabot[bot]
276d6f04f5 chore(deps): bump actions/setup-java from 5.6.0 to 5.7.0 (#43102)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-08-13 02:33:25 -07:00
dependabot[bot]
524d99159a chore(deps): bump immer from 11.1.15 to 11.1.16 in /superset-frontend (#43104)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-08-13 02:33:21 -07:00
dependabot[bot]
657a2a4cb2 chore(deps): bump mapbox-gl from 3.27.0 to 3.28.0 in /superset-frontend (#43105)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-08-13 02:33:17 -07:00
dependabot[bot]
eefb3e3835 chore(deps-dev): bump tsx from 4.23.7 to 4.23.9 in /superset-frontend (#43106)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-08-13 02:33:13 -07:00
dependabot[bot]
07accd56f2 chore(deps): bump core-js from 3.49.0 to 3.50.0 in /superset-frontend (#43107)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-08-13 02:33:09 -07:00
Evan Rusackas
22caf221b7 fix(echarts): truncate values at Y axis bounds instead of dropping them (#42300)
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
2026-08-13 02:30:57 -07:00
Evan Rusackas
de2276225a test(playwright): pin drill-to-detail modal table height (#42406)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
2026-08-12 22:48:49 -07:00
endimonan
685f26b1bf fix(cache): warm native dashboard filter defaults (#43073) 2026-08-12 22:30:48 -07:00
Anupam Mediratta
739365979d fix: upgrade brace-expansion to 5.0.8 (CVE-2026-14257) (#42435)
Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-08-12 22:23:33 -07:00
PRATHAMESH HUKKERI
bc1a8e0858 refactor(tags): align ExportTagsCommand with ExportModelsCommand (#42339)
Co-authored-by: Prathamesh Hukkeri <prathamesh04@users.noreply.github.com>
Co-authored-by: rusackas <evan@rusackas.com>
Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
Co-authored-by: Evan Rusackas <evan@preset.io>
2026-08-12 21:44:53 -07:00
Evan Rusackas
0915a39bcb fix(dataset): improve dataset, report, and expression validation (#42929)
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
2026-08-12 20:13:45 -07:00
Evan Rusackas
8014f782d3 feat: bump SQLAlchemy to 2.0 and flask-sqlalchemy to 3.1.1 (#42803)
Co-authored-by: Claude Code <noreply@anthropic.com>
Co-authored-by: Superset Dev <dev@superset.apache.org>
2026-08-12 19:55:14 -07:00
endimonan
eb7d4cba42 fix(explore): hide Superset annotation source for users without annotation access (#43006)
Co-authored-by: Evan Rusackas <evan@preset.io>
2026-08-12 18:51:39 -07:00
Evan Rusackas
01ecefd732 fix(security_manager): stop SupersetAuthView from shadowing AUTH_REMOTE_USER (#42949)
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
2026-08-12 18:09:46 -07:00
Elizabeth Thompson
0c2f91968e fix: commit migration write in get_shared_value to stop recurring md5 deprecation warning (#42916) 2026-08-12 15:02:34 -07:00
Evan Rusackas
ed696b9933 test(sql): pin optimizer hint blocks survive format() round-trip (#38189) (#42733)
Co-authored-by: Claude Code <noreply@anthropic.com>
2026-08-12 14:49:55 -07:00
Joe Li
4baf1cf648 fix(reports): preserve Slack v1 private-channel text delivery (#42089) 2026-08-12 14:42:57 -07:00
Rafael Benitez
aefee48223 fix(GridTable): remove unused rowSelection option to silence AG Grid error #200 (#43078)
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-08-12 23:07:40 +02:00
Evan Rusackas
cc35056bc9 test(core): pin dashboard save-error toast mapping for non-JSON 403 responses (#42250)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
2026-08-12 11:49:11 -07:00
Evan Rusackas
a0d7ec9faf fix(select): permission label search matches displayed label (#42041) (#42592)
Co-authored-by: Claude Code <noreply@anthropic.com>
2026-08-12 08:58:22 -07:00
onheap
a501fed560 fix(rls): handle same-named CTEs and quoted aliases in the SQL rewrite (#43005)
Co-authored-by: keyao_yang <keyao.yang@airbnb.com>
2026-08-12 10:38:36 -03:00
Evan Rusackas
4354b37b96 fix(sql-lab): apply SQL_QUERY_MUTATOR to streaming exports (#40465) (#42739)
Co-authored-by: Claude Code <noreply@anthropic.com>
2026-08-12 05:56:01 -07:00
dependabot[bot]
d840568f3b chore(deps): bump dompurify from 3.4.12 to 3.4.13 in /superset-frontend (#43082)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-08-12 02:56:56 -07:00
dependabot[bot]
174d35380d chore(deps-dev): bump tsx from 4.23.5 to 4.23.7 in /superset-frontend (#43083)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-08-12 02:56:52 -07:00
Evan Rusackas
2c10e6260f fix(explore): pin and fix clipped segments in horizontal row-contribution stacked bar charts (#42610)
Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-12 02:42:15 -07:00
Evan Rusackas
8f6587d0e6 fix(caching): sort extra_cache_keys before hashing (#34543) (#42597)
Co-authored-by: Claude Code <noreply@anthropic.com>
2026-08-11 23:34:01 -07:00
Evan Rusackas
b4f3fae288 fix(sql): guard FORCE_LIMIT against SHOW statements (#36939) (#42588)
Co-authored-by: Claude Code <noreply@anthropic.com>
2026-08-11 23:33:15 -07:00
Evan Rusackas
8e455034d0 chore(codeowners): trim stale ownership blocks, reword maps notice (#43079)
Co-authored-by: Claude Code <noreply@anthropic.com>
2026-08-11 23:29:46 -07:00
Joe Li
8734a232d8 fix(reports): apply chart number and currency formatting to tables sent as text (#42820)
Co-authored-by: Jean Massucatto <massucattoj@gmail.com>
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
2026-08-11 21:48:37 -07:00
Amin Ghadersohi
56573fa2cd feat(mcp): filter asset lists by certification (#42656) 2026-08-12 00:12:38 -04:00
Evan Rusackas
885f00130c fix(sqla): drop stale main_dttm_col from dttm_cols when non-temporal (#30510) (#41964)
Co-authored-by: Claude Code <noreply@anthropic.com>
2026-08-11 19:38:53 -07:00
Evan Rusackas
584466e02b fix(sql-lab): improved SQL statement parsing and validation (#42928)
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
2026-08-11 19:35:43 -07:00
Evan Rusackas
d570335f67 fix: bind permission-sync task to user id, use per-user RLS cache sentinel on parse failure (#42938)
Co-authored-by: Amin Ghadersohi <amin.ghadersohi@gmail.com>
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
2026-08-11 19:35:40 -07:00
Evan Rusackas
a0099af88f fix(deck.gl): dismiss custom tooltips on hover-out (#43075)
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
2026-08-11 19:32:43 -07:00
dependabot[bot]
8bd25b3fed chore(deps-dev): bump the typescript-eslint group across 1 directory with 2 updates (#43038)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-08-11 16:28:52 -07:00
dependabot[bot]
0a2cfb9fba chore(deps-dev): bump oxfmt from 0.61.0 to 0.62.0 in /superset-frontend (#43046)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: rusackas <evan@rusackas.com>
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
2026-08-11 16:28:48 -07:00
Evan Rusackas
5248367587 fix: verify database access before dataset repointing, and tab ownership before tab-state updates (#42936)
Co-authored-by: Amin Ghadersohi <amin.ghadersohi@gmail.com>
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
2026-08-11 16:07:58 -07:00
madhushreeag
bdf8ce69ab feat(Reports&Alerts): remove Selenium support, require Playwright (#43028)
Co-authored-by: madhushree agarwal <madhushree_agarwal@apple.com>
2026-08-11 16:06:26 -07:00
Dang Dao
d91ca50872 perf(charts): reuse datasource in query context (#42476) 2026-08-11 14:31:47 -07:00
Shaitan
f6077eeaa1 fix(dataset): validate stored column and metric expressions at query time (#42087)
Signed-off-by: sha174n <shaitan@zx48.net>
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-08-11 21:48:26 +01:00
Shaitan
0d57c5ab50 fix(dashboard): consistently apply the datasource-access check when serializing member charts and datasets (#42716)
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
2026-08-11 21:47:47 +01:00
Ayush Sharaf
edf30c7019 chore: add logging event for drill to detail (#42563)
Co-authored-by: Ayush Kumar Sharaf <ayush.sharaf@314ecorp.com>
2026-08-11 13:47:00 -07:00
SkinnyPigeon
3ded398a1f fix(chart): dataset dropdown sorted by name (#42475)
Co-authored-by: Enzo Martellucci <52219496+EnxDev@users.noreply.github.com>
2026-08-11 13:45:48 -07:00
Durgaprasad M L
63a81c2125 fix(dashboard): remeasure chart description height after markdown render (#41536)
Co-authored-by: rusackas <evan@rusackas.com>
Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-11 13:44:48 -07:00
Mallikarjuna Reddy Nimmakayala
af258c21d0 fix(mixed-chart): Mixed chart secondary yaxis title position misplaced fix (#42713)
Co-authored-by: Mallikarjuna Reddy N <MallikarjunaReddy.Nimmakayala@gevernova.com>
Co-authored-by: rusackas <evan@rusackas.com>
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
2026-08-11 13:13:34 -07:00
Joe Li
9086bab2c2 ci(e2e): stop gunicorn worker recycling mid-run; slow-test budget for mixed-chart filter spec (#42867)
Co-authored-by: Claude Opus 5 <noreply@anthropic.com>
2026-08-11 12:43:51 -07:00
Joe Li
4c5a3356f3 fix(dashboard): redirect using sanitized slug from save response (#42853)
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
Co-authored-by: rusackas <evan@rusackas.com>
2026-08-11 12:43:24 -07:00
Joe Li
998c408686 fix(rls): return a descriptive error for duplicate rule names (#42819)
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
Co-authored-by: rusackas <evan@rusackas.com>
2026-08-11 12:41:24 -07:00
Joe Li
a3d58d1211 fix(ci): use current actions for Docker refresh (#42482) 2026-08-11 12:04:09 -07:00
Stepan
7b32b870e1 chore: Fix/remove hardcode of admin role (#27779)
Co-authored-by: Evan <evan@preset.io>
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
Co-authored-by: Joe Li <joe@preset.io>
Co-authored-by: rusackas <evan@rusackas.com>
2026-08-11 10:26:50 -07:00
Evan Rusackas
3cd4150539 chore(deps): bump sqlglot from 30.15.0 to 30.16.0 (#43029)
Co-authored-by: Superset Dev <dev@superset.apache.org>
2026-08-11 10:16:44 -07:00
Mike Bridge
2feb6c2bb5 refactor(deletion-retention): add declarative purge policies (#42888)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
2026-08-11 09:55:36 -07:00
dependabot[bot]
5767c3981d chore(deps): bump the storybook group across 1 directory with 2 updates (#43037)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-08-11 09:48:45 -07:00
dependabot[bot]
ec6b2d2347 chore(deps-dev): bump oxfmt from 0.61.0 to 0.62.0 in /superset-websocket (#43033)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-08-11 09:48:42 -07:00
dependabot[bot]
aade32cad8 chore(deps-dev): bump the typescript-eslint group across 1 directory with 3 updates (#43039)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-08-11 09:48:38 -07:00
Evan Rusackas
d6771e96d2 fix(core): let UnsavedChangesModal use Ant Design's automatic z-index stacking (#42548)
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
2026-08-11 09:42:49 -07:00
dependabot[bot]
305638e98c chore(deps-dev): bump baseline-browser-mapping from 2.11.11 to 2.11.12 in /superset-frontend (#43048)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-08-11 09:42:16 -07:00
Evan Rusackas
5099b6ffa9 fix(export): derive chart_hashes and zip from a single chart list (#42946)
Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-11 09:35:59 -07:00
Evan Rusackas
bc436bacad chore(security): warn when legacy encryption engine is configured (#42937)
Co-authored-by: Amin Ghadersohi <amin.ghadersohi@gmail.com>
2026-08-11 09:35:46 -07:00
Evan Rusackas
e31a894be6 fix(common): remove unsupported cross join mode from left_join_df (#43016)
Co-authored-by: Claude <noreply@anthropic.com>
2026-08-11 09:35:16 -07:00
Evan Rusackas
553808daa3 fix(reports): make webhook notification request timeout configurable (#43018)
Co-authored-by: Claude <noreply@anthropic.com>
2026-08-11 09:35:01 -07:00
dependabot[bot]
544756a631 chore(deps): bump github/codeql-action/analyze from 4.37.5 to 4.37.6 (#43040)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-08-11 09:34:49 -07:00
Evan Rusackas
c4e8a9da90 test(explore): add end-to-end regression test for DatasourcePanel through the real AutoSizer + react-window List pipeline (#43023)
Co-authored-by: Claude Code <noreply@anthropic.com>
2026-08-11 09:34:06 -07:00
dependabot[bot]
47adbe31d5 chore(deps-dev): bump typescript-eslint from 8.65.0 to 8.66.0 in /superset-websocket (#43034)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-08-11 06:43:16 -07:00
dependabot[bot]
64165fbdae chore(deps-dev): bump @typescript-eslint/parser from 8.65.0 to 8.66.0 in /superset-websocket (#43035)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-08-11 06:43:12 -07:00
dependabot[bot]
581fb876e4 chore(deps-dev): bump oxfmt from 0.61.0 to 0.62.0 in /docs (#43042)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-08-11 06:43:09 -07:00
dependabot[bot]
29e8e396ee chore(deps-dev): bump the storybook group in /superset-frontend with 5 updates (#43045)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-08-11 06:43:05 -07:00
dependabot[bot]
8bbf0cfc20 chore(deps-dev): bump oxlint from 1.76.0 to 1.77.0 in /superset-frontend (#43049)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-08-11 06:43:01 -07:00
dependabot[bot]
497c73e837 chore(deps): bump github/codeql-action/init from 4.37.5 to 4.37.6 (#43044)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-08-11 06:42:53 -07:00
dependabot[bot]
a5a6f5a5b1 chore(deps): bump ws from 8.21.1 to 8.21.2 in /superset-websocket (#43036)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-08-11 06:42:50 -07:00
dependabot[bot]
156a59a190 chore(deps): bump swagger-ui-react from 5.32.11 to 5.32.12 in /docs (#43041)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-08-11 06:42:46 -07:00
dependabot[bot]
590003cbee chore(deps): bump baseline-browser-mapping from 2.11.11 to 2.11.12 in /docs (#43043)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-08-11 06:42:43 -07:00
dependabot[bot]
579011dea9 chore(deps): bump nanoid from 6.0.0 to 6.0.1 in /superset-frontend (#43050)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-08-11 06:42:39 -07:00
dependabot[bot]
65d808a5fe chore(deps): bump markdown-to-jsx from 9.10.1 to 9.10.2 in /superset-frontend (#43052)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-08-11 06:42:34 -07:00
Evan Rusackas
5ee279363c fix(mcp): reject list values for ne on relationship filters (#42944)
Co-authored-by: Claude <noreply@anthropic.com>
2026-08-11 00:42:13 -07:00
Shaitan
34b2d3a533 fix(rls): match null-schema datasets in predicate lookup (#41426)
Co-authored-by: Claude Opus 5 <noreply@anthropic.com>
2026-08-10 19:58:51 -07:00
Evan Gruhlkey
7157b752ee fix(pie): apply percentage number format to labels (#42880)
Co-authored-by: Joe Li <joe@preset.io>
2026-08-10 19:36:03 -07:00
Hugh A. Miles II
d84a00f3c6 feat(dashboard): handle empty chart query context in Excel export (#42284)
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
Co-authored-by: Elizabeth Thompson <eschutho@gmail.com>
2026-08-10 21:12:08 -04:00
Evan Rusackas
bfa1e775c4 fix(theming): guard ensureStaticPrefix against null/undefined input (#43019)
Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-10 17:41:33 -07:00
Evan Rusackas
265269018e fix(mcp): require issuer-aware resolver for multi-issuer JWT, fix sanitizer input ordering (#42935)
Co-authored-by: Amin Ghadersohi <amin.ghadersohi@gmail.com>
Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-10 15:56:46 -07:00
Evan Rusackas
5f204a9af2 fix(frontend): remove any type and duplicate route in routes.tsx (#43014)
Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-10 15:51:58 -07:00
Evan Rusackas
0c09cf087d fix(reports): translate execute-now success message (#43012)
Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-10 15:51:05 -07:00
Evan Rusackas
651f75b1e8 docs(dashboard): document native filters on semantic views (#43011)
Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-10 15:50:34 -07:00
Evan Rusackas
e48512568d docs(dashboard): document the expand_all_slices metadata flag (#43010)
Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-10 15:50:03 -07:00
Evan Rusackas
4d0eeb7d86 docs: document FAB_API_SWAGGER_UI_SUPERSET_APP_ROOT config flag (#43009)
Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-10 15:49:47 -07:00
Elizabeth Thompson
fdfc49461f fix(sqllab): wrap process_template() in format_sql to prevent raw UndefinedError leak (#42917) 2026-08-10 15:02:10 -07:00
Mike Ma
2eb1e04283 fix: hydrate JWT user before list API filters (#39946)
Co-authored-by: Evan Rusackas <evan@preset.io>
2026-08-10 14:18:28 -07:00
Herestothegamers
bc85f1eacf fix(database): resolve default schema when file upload schema is empty (#42603)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
2026-08-10 13:56:47 -07:00
Gabriel Torres Ruiz
0dedc55f38 fix(dashboard): changing a theme no longer discards unsaved edits or reloads charts 2026-08-10 16:52:43 -03:00
Vijay Misal
178d9c4ceb fix(explore): stacked Timeseries Bar total excludes the sort-only metric (#42881)
Co-authored-by: Joe Li <joe@preset.io>
2026-08-10 12:40:18 -07:00
Luc Verdier
347774f9b8 fix(explore): stop the viz switcher from overflowing the control panel (#42911) 2026-08-10 12:36:23 -07:00
dependabot[bot]
776f70bf63 chore(deps): bump ioredis from 5.11.1 to 6.0.0 in /superset-websocket (#42959)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-08-10 12:35:56 -07:00
Evan Rusackas
572f86c3c3 fix(deckgl): normalize legend swatch alpha channel to 0-1 for CSS rgba() (#42942)
Co-authored-by: Claude <noreply@anthropic.com>
2026-08-10 12:35:24 -07:00
Sepuri Sai Krishna
50c811280e fix(lru-cache): don't evict another entry when overwriting an existing key (#42409) 2026-08-10 12:29:20 -07:00
Bandar
9d6832c927 feat(formatting): add network throughput number formats for bits/s and bytes/s (#42437) 2026-08-10 12:29:05 -07:00
Shaitan
b6504eb111 fix(sql): resolve schema/catalog-qualified table references in CTE detection (#42717)
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
2026-08-10 12:28:31 -07:00
Joe Li
d62a9eeda6 fix(calendar): clean up d3-tip tooltips (#41589)
Co-authored-by: Claude Opus 5 <noreply@anthropic.com>
2026-08-10 12:28:06 -07:00
Mallikarjuna Reddy Nimmakayala
651c046e69 fix(deckgl): remove visibility condition in deckgl fill color (#42712)
Co-authored-by: Damian Pendrak <dpendrak@gmail.com>
2026-08-10 20:58:44 +02:00
Joe Li
d9ae0ec2fc fix(deckgl): hide legend when Legend Position is None (#42402) 2026-08-10 11:24:35 -07:00
varadendrasimha511
b98e157104 fix(sqla): preserve float precision when mixing int/float values in IN filters (#42752) 2026-08-10 11:12:43 -07:00
jenwitteng
4defdbabd2 fix(dashboard): force-render virtualized charts before client-side export (#42561)
Signed-off-by: Jenwit Amonpongitsara <jenwit.amonpongitsara@agoda.com>
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
Co-authored-by: rusackas <evan@rusackas.com>
2026-08-10 10:57:21 -07:00
Evan Rusackas
7dc2afd377 docs(cache): document native filter option cache warm-up strategy (#42953)
Co-authored-by: Claude <noreply@anthropic.com>
2026-08-10 10:28:36 -07:00
Evan Rusackas
5bcd9cd078 docs(exploring-data): document CSV/XLSX download in drill modals (#42952)
Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-10 10:28:14 -07:00
Evan Rusackas
341ca94ba2 docs(security): document the read-only Subject REST API (#42951)
Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-10 10:27:54 -07:00
Evan Rusackas
4b68da82a7 docs: document number format presets, including distance/length units (#42950)
Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-10 10:27:22 -07:00
Evan Rusackas
a9eab4a0df docs: document color picker for conditional formatting rule colors (#42948)
Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-10 10:26:37 -07:00
Evan Rusackas
f60370b695 docs: document CACHE_REDIS_SOCKET_TIMEOUT/CONNECT_TIMEOUT config keys (#42947)
Co-authored-by: Claude <noreply@anthropic.com>
2026-08-10 10:26:18 -07:00
Evan Rusackas
c02dc7780b docs(mcp): add update_dashboard to write-tools enumeration (#42943)
Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-10 10:25:03 -07:00
Mehmet Salih Yavuz
daf1718b44 fix(embedded): redact database errors in API responses to guest users (#42796) 2026-08-10 18:45:20 +03:00
dependabot[bot]
b815640b8f chore(deps): bump actions/setup-java from 5.6.0 to 5.7.0 (#42968)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-08-10 07:54:41 -07:00
Antonio Rivero
9e2cb69a39 feat(database): identify configured database connection errors (#42996) 2026-08-10 14:14:42 +02:00
dependabot[bot]
db88abe0bb chore(deps-dev): bump globals from 17.8.0 to 17.9.0 in /superset-websocket (#42958)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-08-10 04:53:29 -07:00
dependabot[bot]
f53f634f23 chore(deps): bump antd from 6.5.2 to 6.5.3 in /docs (#42961)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-08-10 04:53:13 -07:00
dependabot[bot]
916c50284b chore(deps): bump github/codeql-action/analyze from 4.37.3 to 4.37.5 (#42965)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-08-10 11:39:14 +02:00
dependabot[bot]
6a2e20cdb7 chore(deps): bump zizmorcore/zizmor-action from 0.6.1 to 0.6.2 (#42960)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-08-10 01:29:49 -07:00
dependabot[bot]
9719c7de24 chore(deps-dev): bump globals from 17.8.0 to 17.9.0 in /docs (#42962)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-08-10 01:29:09 -07:00
dependabot[bot]
346dbd6a98 chore(deps): bump js-yaml from 5.2.2 to 5.2.3 in /docs (#42963)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-08-10 01:28:29 -07:00
dependabot[bot]
73478c5274 chore(deps): bump baseline-browser-mapping from 2.11.8 to 2.11.11 in /docs (#42964)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-08-10 01:28:25 -07:00
dependabot[bot]
d7edf610a9 chore(deps-dev): bump @babel/types from 7.29.7 to 7.29.8 in /superset-frontend in the babel group (#42966)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-08-10 01:28:20 -07:00
dependabot[bot]
e12818897d chore(deps): bump github/codeql-action/init from 4.37.3 to 4.37.5 (#42967)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-08-10 01:28:16 -07:00
dependabot[bot]
d41032b70a chore(deps): bump Kesin11/actions-timeline from 3.1.1 to 3.2.0 (#42969)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-08-10 01:28:10 -07:00
dependabot[bot]
10cf2e20f9 chore(deps-dev): bump eslint-plugin-jest-dom from 5.7.0 to 5.10.1 in /superset-frontend (#42970)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-08-10 01:28:05 -07:00
dependabot[bot]
2be726ddad chore(deps-dev): bump tsx from 4.23.1 to 4.23.5 in /superset-frontend (#42971)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-08-10 01:28:02 -07:00
dependabot[bot]
ee5fb095da chore(deps-dev): bump baseline-browser-mapping from 2.11.8 to 2.11.11 in /superset-frontend (#42972)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-08-10 01:27:58 -07:00
dependabot[bot]
4c9bd69eb4 chore(deps): bump antd from 6.5.2 to 6.5.3 in /superset-frontend (#42973)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-08-10 01:27:55 -07:00
dependabot[bot]
7cd6c74757 chore(deps-dev): bump @types/lodash from 4.17.24 to 4.17.25 in /superset-frontend (#42974)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-08-10 01:27:51 -07:00
dependabot[bot]
3539c41dab chore(deps): bump cryptography from 49.0.0 to 50.0.0 (#42906)
Signed-off-by: dependabot[bot] <support@github.com>
Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-08-09 23:42:10 -07:00
Evan Rusackas
c09d5bf6a9 fix(helm): add missing task modules to default CeleryConfig imports (#42945)
Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
Co-authored-by: Đỗ Trọng Hải <41283691+hainenber@users.noreply.github.com>
2026-08-09 22:06:45 -07:00
Đỗ Trọng Hải
f8925cc726 feat(build): reinstate no-restricted-imports lint rule for lodash (#42940) 2026-08-10 09:28:41 +07:00
Jetha Chan
fea84e81ef fix(tech-debt): measure oxlint metrics against the project's ruleset (#42955)
Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-08-10 09:26:15 +07:00
Amin Ghadersohi
b413060030 chore(deps): restore redis floor to >=5.0.0 (#42915) 2026-08-09 17:41:54 -07:00
Đỗ Trọng Hải
3b164e4270 fix(ci): remove extraneous plugins build job (#42677)
Signed-off-by: hainenber <dotronghai96@gmail.com>
Co-authored-by: Joe Li <joe@preset.io>
2026-08-08 17:27:51 -07:00
Dang Dao
bf294cfa43 perf(dashboard): avoid query context N+1 queries (#42474)
Co-authored-by: Evan Rusackas <evan@preset.io>
2026-08-08 17:27:04 -07:00
Yash Janoria
42e4030104 feat(security): add guest user attributes and get_guest_user_attribute() macro (#33924)
Co-authored-by: Yash Janoria <yash.janoria@314ecorp.com>
Co-authored-by: Evan <evan@preset.io>
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Co-authored-by: Evan Rusackas <evan@rusackas.com>
2026-08-08 16:56:07 -07:00
jayakarkatika
8181917f79 fix: Apply timezone offset to convert local time boundaries to UTC (#37014)
Co-authored-by: Evan Rusackas <evan@rusackas.com>
Co-authored-by: Claude <noreply@anthropic.com>
2026-08-08 16:40:31 -07:00
Fabien
d14ab29dcb feat(a11y): enable ECharts aria-label (#28171)
Co-authored-by: rusackas <evan@preset.io>
Co-authored-by: Joe Li <joe@preset.io>
2026-08-08 15:36:24 -07:00
yan
a75665b014 fix(i18n): improve Simplified Chinese translations (#42794)
Co-authored-by: Evan Rusackas <evan@rusackas.com>
Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-08 12:51:59 -07:00
Francesco.Castaldi
db5cd1aa38 chore(i18n): update Italian messages.po translations (#38948)
Co-authored-by: Evan Rusackas <evan@rusackas.com>
Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-08 12:40:08 -07:00
Itz Maazin
abb6dd6e39 fix(i18n): add Tamil (ta) locale with corrected catalog path (#38962)
Co-authored-by: Evan Rusackas <evan@rusackas.com>
Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-08 12:31:29 -07:00
Greg Neighbors
4a587b8539 feat(security): actionable, request-access-aware data permission errors (#41843)
Co-authored-by: Greg Neighbors <gregneighbors@Gregs-Air-2.lan>
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Co-authored-by: Greg Neighbors <gregneighbors@Gregs-MacBook-Air-2.local>
2026-08-08 11:51:15 -07:00
ytihianine
127a6f92a6 chore(i18n): update french po file to match latest pot file version (#40635)
Co-authored-by: Evan Rusackas <evan@rusackas.com>
Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-08 10:43:30 -07:00
Evan Rusackas
25481799f6 test(deckgl): pin GeoJSON layer against multi-row payloads (#34748) (#42734)
Co-authored-by: Claude Code <noreply@anthropic.com>
2026-08-08 08:06:05 -07:00
dependabot[bot]
1da7a7fdb1 chore(deps-dev): update starrocks requirement from <2,>=1.3.3 to >=1.3.4,<2 (#42903)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-08-08 01:54:54 -07:00
dependabot[bot]
185b5938ba chore(deps-dev): bump pyinstrument from 5.1.2 to 5.1.3 (#42905)
Signed-off-by: dependabot[bot] <support@github.com>
Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-08-08 01:54:51 -07:00
dependabot[bot]
503309531f chore(deps-dev): update playwright requirement from <2,>=1.61.0 to >=1.62.0,<2 (#42908)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-08-08 01:54:48 -07:00
dependabot[bot]
44a86b725f chore(deps-dev): update teradatasql requirement from >=20.0.0.63 to >=20.0.0.64 (#42909)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-08-08 01:54:46 -07:00
dependabot[bot]
38727906a2 chore(deps): bump react-window and @types/react-window in /superset-frontend (#42528)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Amin Ghadersohi <amin.ghadersohi@gmail.com>
Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-07 23:02:27 -07:00
dependabot[bot]
2a9c5acb01 chore(deps): bump numpy from 1.26.4 to 2.4.6 (#42778)
Signed-off-by: dependabot[bot] <support@github.com>
Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Joe Li <joe@preset.io>
Co-authored-by: rusackas <evan@rusackas.com>
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
2026-08-07 22:55:20 -07:00
dependabot[bot]
d8b97e31fa chore(deps-dev): bump @playwright/test from 1.61.1 to 1.62.1 in /superset-frontend (#42699)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-08-07 21:05:56 -07:00
Bart Skowron
bd03440ac8 feat(alerts-reports): add per-schedule toggle to include/exclude the Explore in Superset link (#42494)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
2026-08-07 21:05:16 -07:00
dependabot[bot]
a6c478c59d chore(deps-dev): bump lerna from 9.0.4 to 10.0.0 in /superset-frontend (#42829)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-08-08 10:19:24 +07:00
dependabot[bot]
fd36419ca2 chore(deps): bump nanoid from 3.3.16 to 3.3.18 in /docs (#42902)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-08-08 10:08:38 +07:00
dependabot[bot]
d80f4c841d chore(deps-dev): update sqlalchemy-risingwave requirement from <2.0.0,>=1.4.1 to <3.0.0,>=1.4.1 (#42856)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Joe Li <joe@preset.io>
2026-08-08 09:59:53 +07:00
dependabot[bot]
6baa467f59 chore(deps): bump google-auth-library from 10.9.1 to 11.0.0 in /superset-frontend (#42870)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Joe Li <joe@preset.io>
2026-08-08 09:58:51 +07:00
SBIN2010
b18015f63b feat: Color Picker replaces the color selection drop-down list in conditional formatting (#42053)
Co-authored-by: rusackas <evan@rusackas.com>
Co-authored-by: Claude <noreply@anthropic.com>
2026-08-08 02:00:56 +03:00
Elizabeth Thompson
eb8592d4bf fix(sqla): don't mislabel DB errors as ColumnNotFoundException in adhoc_column_to_sqla (#42889)
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
2026-08-07 15:03:49 -07:00
Gaston Laterza
55af4685a2 fix(i18n-es): correct fuzzy-matcher strandings in Spanish catalog (#42808)
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-07 11:29:14 -07:00
Joe Li
c901f01693 fix(datasets): preserve metric/column uuids on dataset export (#42393)
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
2026-08-07 11:15:24 -07:00
Martin Brodeur
4c894affb2 fix(models): purge_oauth2_tokens filters on wrong column (#42211)
Signed-off-by: Martin Brodeur <addressedemartin@gmail.com>
Co-authored-by: rusackas <evan@rusackas.com>
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
2026-08-07 11:04:11 -07:00
dependabot[bot]
0f9049608a chore(deps): bump dompurify from 3.4.12 to 3.4.13 in /superset-frontend (#42893)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Joe Li <joe@preset.io>
2026-08-07 11:00:19 -07:00
Gabriel Torres Ruiz
91b1a6cac5 feat(theme): allow deployments to register extra theme tokens 2026-08-07 14:37:45 -03:00
dependabot[bot]
86a328ca9e chore(deps): bump dompurify from 3.4.12 to 3.4.13 in /docs (#42894)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-08-07 10:23:30 -07:00
dependabot[bot]
38ba4a69bf chore(deps): bump react-intersection-observer from 10.1.0 to 11.0.0 in /superset-frontend (#42869)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-08-07 10:13:31 -07:00
Mike Bridge
280253b1fb fix(deletion-retention): dedupe repeated blocked audits (#42863)
Co-authored-by: Mike Bridge <michael.bridge@ext.preset.io>
2026-08-07 10:11:36 -07:00
dependabot[bot]
79c2cd367d chore(deps): update flask-sqlalchemy requirement from <3.0,>=2.5.1 to <4.0,>=2.5.1 (#42771)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Joe Li <joe@preset.io>
2026-08-07 09:42:42 -07:00
dependabot[bot]
fd6a0a60a6 chore(deps): bump holidays from 0.100 to 0.102 (#42860)
Signed-off-by: dependabot[bot] <support@github.com>
Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-08-07 09:41:57 -07:00
dependabot[bot]
c2b5311f47 chore(deps-dev): bump google-cloud-bigquery from 3.42.2 to 3.43.0 (#42861)
Signed-off-by: dependabot[bot] <support@github.com>
Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-08-07 09:41:26 -07:00
dependabot[bot]
70a82a28bf chore(deps): bump redis from 8.0.1 to 8.1.0 (#42857)
Signed-off-by: dependabot[bot] <support@github.com>
Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-08-07 09:41:03 -07:00
dependabot[bot]
f348cf425d chore(deps): bump shillelagh from 1.4.4 to 1.4.5 (#42858)
Signed-off-by: dependabot[bot] <support@github.com>
Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-08-07 09:41:00 -07:00
dependabot[bot]
74196cf694 chore(deps): bump markdown from 3.10.2 to 3.10.3 (#42859)
Signed-off-by: dependabot[bot] <support@github.com>
Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-08-07 09:40:57 -07:00
Mike Bridge
fe06ebe796 feat(versioning): enable version history and capture by default (#42801)
Co-authored-by: Mike Bridge <michael.bridge@ext.preset.io>
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-07 10:25:48 -03:00
dependabot[bot]
f1411ccd6c chore(deps-dev): update pyathena requirement from <4,>=3.35.2 to >=3.35.4,<4 (#42862)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-08-07 06:19:46 -07:00
dependabot[bot]
1770823f0a chore(deps-dev): bump eslint-plugin-jest-dom from 5.6.0 to 5.7.0 in /superset-frontend (#42868)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-08-07 06:18:31 -07:00
dependabot[bot]
b7b873321d chore(deps-dev): bump baseline-browser-mapping from 2.11.7 to 2.11.8 in /superset-frontend (#42872)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-08-07 06:17:22 -07:00
dependabot[bot]
d363cabec9 chore(deps): bump markdown-to-jsx from 9.9.0 to 9.10.1 in /superset-frontend (#42885)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-08-07 06:17:18 -07:00
Joe Li
8683d1608e fix(migrations): merge divergent Alembic heads into a single chain (#42878) 2026-08-07 09:27:03 -03:00
Mehmet Salih Yavuz
14583b6a5f fix(themes): serve system themes with the algorithm of the slot they fill (#42700) 2026-08-07 14:29:49 +03:00
dependabot[bot]
27498d26aa chore(deps): bump the docusaurus-openapi group in /docs with 2 updates (#42883)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-08-07 02:42:39 -07:00
dependabot[bot]
39e66476e1 chore(deps): bump actions/setup-java from 5.6.0 to 5.7.0 (#42884)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-08-07 02:42:33 -07:00
dependabot[bot]
8153a82489 chore(deps): bump baseline-browser-mapping from 2.11.7 to 2.11.8 in /docs (#42852)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Đỗ Trọng Hải <41283691+hainenber@users.noreply.github.com>
2026-08-06 23:24:24 -07:00
Grégoire Gailly
448eb25d76 feat(docs): add documentation for usage of minio or other s3 compatible service as a cache backend or celery results backend (#35825)
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
2026-08-06 18:36:34 -07:00
dependabot[bot]
9cec7411e9 chore(deps): bump mermaid from 11.16.0 to 11.16.1 in /docs (#42873)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-08-06 18:33:23 -07:00
Joe Li
ae66b697e5 fix(plugin-chart-table): align sticky header column dividers with table body (#42573)
Co-authored-by: Juliann Forbes <juliann@preset.io>
2026-08-06 15:40:44 -07:00
Joe Li
22fb1b3a44 test(dashboard): migrate edit-mode component E2E tests to Playwright (#41438)
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-08-06 15:22:19 -07:00
Elizabeth Thompson
7dd6ce835f fix(datasets): catch TemplateError instead of narrower TemplateSyntaxError in render_dataset_fields (#42802) 2026-08-06 15:05:08 -07:00
Urban Pettersson
4f2147009f feat(dashboard): expand all chart descriptions (#32958)
Co-authored-by: Urban Pettersson <urban.pettersson@alteryx.com>
Co-authored-by: rusackas <evan@rusackas.com>
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
2026-08-06 14:47:30 -07:00
Evan Rusackas
2ecce20e48 chore(viz): remove legacy explore_json + viz.py pipeline (#41714)
Co-authored-by: Claude Code <noreply@anthropic.com>
2026-08-06 13:22:15 -07:00
Elizabeth Thompson
01a9fdc621 chore(reports): thread cache-key/execution-id log context through screenshot capture logs (#42657)
Co-authored-by: Claude <noreply@anthropic.com>
2026-08-06 09:43:12 -07:00
Mike Bridge
ba09f399ac feat(soft-delete): enable soft delete by default and purge for real (#42800)
Co-authored-by: Mike Bridge <michael.bridge@ext.preset.io>
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-06 09:34:55 -07:00
Michael S. Molina
e4c306f5eb fix(deps): revert simple-zstd from 2.1.0 back to 1.4.2, again (#42804)
Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-06 13:18:07 -03:00
Mike Bridge
ea8fa58158 docs: scope AI pre-commit checks to changed files, to align with ci's pre-commit checks (#42835)
Co-authored-by: Mike Bridge <michael.bridge@ext.preset.io>
2026-08-06 10:59:33 -03:00
Mike Bridge
a00e2952a1 style(frontend): apply oxfmt to existing files (#42813)
Co-authored-by: Mike Bridge <michael.bridge@ext.preset.io>
2026-08-06 10:58:27 -03:00
Pat Buxton
de93a19b3c fix(engine): update databend engine spec for dialect version >=0.4.6 (#28627)
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-06 06:28:16 -07:00
Alexandru Soare
57d6e5c637 feat(hooks): add configurable post-creation hook for dashboards (#42837) 2026-08-06 16:11:55 +03:00
dependabot[bot]
0fc0d21dd3 chore(deps): bump github/codeql-action/init from 4.37.3 to 4.37.4 (#42827)
Signed-off-by: dependabot[bot] <support@github.com>
2026-08-06 14:12:22 +03:00
dependabot[bot]
76e6909cfd chore(deps): bump @swc/core from 1.15.46 to 1.15.47 in /docs (#42825)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-08-06 03:14:34 -07:00
dependabot[bot]
450e43b8f2 chore(deps): bump baseline-browser-mapping from 2.11.6 to 2.11.7 in /docs (#42826)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-08-06 03:14:31 -07:00
dependabot[bot]
a7dd86adc6 chore(deps): bump github/codeql-action/analyze from 4.37.3 to 4.37.4 (#42828)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-08-06 03:14:25 -07:00
dependabot[bot]
bbd7ac7278 chore(deps-dev): bump baseline-browser-mapping from 2.11.6 to 2.11.7 in /superset-frontend (#42830)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-08-06 03:14:22 -07:00
dependabot[bot]
05af8eeff2 chore(deps): bump react-map-gl from 8.1.1 to 8.1.2 in /superset-frontend (#42831)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-08-06 03:14:18 -07:00
dependabot[bot]
3f413e6e10 chore(deps-dev): bump @swc/core from 1.15.46 to 1.15.47 in /superset-frontend (#42832)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-08-06 03:14:14 -07:00
jesperct
4278f4b3d9 fix(explore): honor explicit List legend selection instead of flipping to scroll (#41749)
Co-authored-by: Joe Li <joe@preset.io>
2026-08-05 23:08:05 -07:00
Joe Li
b8c44a1ad5 fix(ci): restore master validation checks (#42807) 2026-08-05 22:58:05 -07:00
JUST.in DO IT
d594a4d157 fix(mcp): make streamable-http session mode configurable via MCP_STATELESS_HTTP (#42814)
Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-05 21:31:22 -07:00
Evan Rusackas
442995481c test(deckgl): Polygon chart with a column literally named "polygon" (#33669) (#42591)
Co-authored-by: Claude Code <noreply@anthropic.com>
2026-08-05 20:27:13 -07:00
Evan Rusackas
1de35d1361 fix(mcp): reject unknown fields in nested chart-config models too (#42626) (#42732)
Co-authored-by: Claude Code <noreply@anthropic.com>
2026-08-05 16:24:55 -07:00
Evan Rusackas
3f011edabb fix(mcp): supply required DBEventLogger args so mcp_tool_error events are logged (#42579) (#42730)
Co-authored-by: Claude Code <noreply@anthropic.com>
2026-08-05 16:22:10 -07:00
yousoph
f5bca3bf3f fix(sqllab): stop OAuth2 banner from ballooning the database selector popover (#42652)
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
2026-08-05 15:40:42 -07:00
Mafi
32e4e3c6a8 fix(reports): enforce dashboard readiness and execution budget (#42624)
Co-authored-by: Matt Fitzgerald <matt.fitzgerald@preset.io>
Co-authored-by: Elizabeth Thompson <eschutho@gmail.com>
Co-authored-by: Claude <noreply@anthropic.com>
2026-08-05 14:30:35 -07:00
Evan Rusackas
ad0538935d fix(pivot-table): blank ambiguous cross-metric totals and null values in fraction mode (#42810)
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
2026-08-05 14:17:31 -07:00
Evan Rusackas
633f393880 feat(pivot-table): reintroduce show-values-as-fraction display option (#42761)
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
2026-08-05 14:17:30 -07:00
Amin Ghadersohi
0e4e368768 feat(mcp): add observability to MCP service (#41921)
Co-authored-by: Claude <noreply@anthropic.com>
2026-08-05 11:52:34 -07:00
Mike Bridge
126c93b495 fix(versioning): pin shadow-row reads and restore to (id, uuid) (#42797)
Co-authored-by: Mike Bridge <michael.bridge@ext.preset.io>
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-05 11:12:20 -07:00
Mike Bridge
e880711bbb fix(migrations): actually drop _customer_location_uc (list == set no-op) (#42642)
Co-authored-by: Mike Bridge <michael.bridge@ext.preset.io>
Co-authored-by: Claude Opus 5 <noreply@anthropic.com>
2026-08-05 11:12:14 -07:00
Mike Bridge
47a4dabd14 feat(soft-delete): warn at startup when a retention task's Celery config is incomplete (#42641)
Co-authored-by: Mike Bridge <michael.bridge@ext.preset.io>
Co-authored-by: Claude Opus 5 <noreply@anthropic.com>
2026-08-05 11:12:09 -07:00
JUST.in DO IT
657e2d2267 perf(TimeTable): skip rendering TableView while the window is resizing (#42097) 2026-08-05 10:41:39 -07:00
Evan Rusackas
05193ed7e1 fix(models): guard three more backref cascades for SQLAlchemy 2.0 (#42787)
Co-authored-by: Claude Code <noreply@anthropic.com>
2026-08-05 09:58:45 -07:00
dependabot[bot]
2c7adcaef8 chore(deps): bump sqlglot from 30.12.0 to 30.14.0 (#42772)
Signed-off-by: dependabot[bot] <support@github.com>
Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: rusackas <evan@rusackas.com>
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
2026-08-05 09:44:05 -07:00
Evan Rusackas
f65b42408e fix(tasks): gate exception_type in task properties behind SHOW_STACKTRACE (#40587)
Co-authored-by: Claude Code <noreply@anthropic.com>
2026-08-05 09:31:30 -07:00
Bart Skowron
482a59ec72 fix(docker): replace stale superset_app hostname in dev WEBDRIVER_BASEURL (#42495)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Co-authored-by: Joe Li <joe@preset.io>
2026-08-05 09:31:10 -07:00
Evan Rusackas
e7338a2add fix(mcp): route FastMCP ValidationError through the validation error handler (#42578) (#42738)
Co-authored-by: Claude Code <noreply@anthropic.com>
2026-08-05 09:27:28 -07:00
Evan Rusackas
9c97d4859c fix(mcp): stop false-flagging successful responses with error_type:null as failures (#42580) (#42736)
Co-authored-by: Claude Code <noreply@anthropic.com>
2026-08-05 09:27:17 -07:00
dependabot[bot]
19399a5068 chore(deps-dev): bump jsdom from 30.0.0 to 30.0.1 in /superset-frontend (#42791)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-08-05 22:25:56 +07:00
dependabot[bot]
efab63d42c chore(deps): bump docker/login-action from 4.5.2 to 4.6.0 (#42769)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-08-05 22:24:57 +07:00
dependabot[bot]
816f37f5b9 chore(deps-dev): bump gevent from 26.4.0 to 26.7.0 (#42770)
Signed-off-by: dependabot[bot] <support@github.com>
Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-08-04 23:33:55 -07:00
dependabot[bot]
872311b3c2 chore(deps-dev): bump duckdb from 1.5.4 to 1.5.5 (#42773)
Signed-off-by: dependabot[bot] <support@github.com>
Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-08-04 23:33:52 -07:00
dependabot[bot]
6713f1be45 chore(deps-dev): update teradatasql requirement from >=20.0.0.62 to >=20.0.0.63 (#42774)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-08-04 23:33:48 -07:00
dependabot[bot]
0692607b4a chore(deps-dev): update taospy requirement from >=2.8.9 to >=2.8.10 (#42775)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-08-04 23:33:44 -07:00
dependabot[bot]
fcfee7efbc chore(deps-dev): bump fastmcp from 3.4.4 to 3.4.5 (#42776)
Signed-off-by: dependabot[bot] <support@github.com>
Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-08-04 23:33:41 -07:00
dependabot[bot]
0cc5c51ba3 chore(deps): bump selenium from 4.45.0 to 4.46.0 (#42777)
Signed-off-by: dependabot[bot] <support@github.com>
Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-08-04 23:33:37 -07:00
dependabot[bot]
a57c9b34c9 chore(deps-dev): bump webpack from 5.109.1 to 5.109.2 in /docs (#42779)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-08-04 23:33:33 -07:00
dependabot[bot]
ae8c4bd451 chore(deps): bump baseline-browser-mapping from 2.11.5 to 2.11.6 in /docs (#42780)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-08-04 23:33:30 -07:00
dependabot[bot]
247f610ee1 chore(deps-dev): bump eslint-plugin-jest-dom from 5.5.0 to 5.6.0 in /superset-frontend (#42781)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-08-04 23:33:27 -07:00
dependabot[bot]
4c33258b9d chore(deps): bump react-draggable from 4.7.0 to 4.7.1 in /superset-frontend (#42782)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-08-04 23:33:23 -07:00
dependabot[bot]
3cf83f0a5a chore(deps-dev): bump baseline-browser-mapping from 2.11.5 to 2.11.6 in /superset-frontend (#42783)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-08-04 23:33:20 -07:00
dependabot[bot]
425c70ae37 chore(deps-dev): bump webpack from 5.109.1 to 5.109.2 in /superset-frontend (#42784)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-08-04 23:33:16 -07:00
Evan Rusackas
ab124a333c fix(SafeMarkdown): let htmlSchemaOverrides replace matching default attribute rules (#42202)
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
2026-08-04 23:10:14 -07:00
Evan Rusackas
7324225c77 fix(filters): sort numeric filter values numerically, not lexicographically (#36775) (#42596)
Co-authored-by: Claude Code <noreply@anthropic.com>
2026-08-04 23:06:39 -07:00
endimonan
1605676aa7 fix(reports): use zip extension for bundled CSV attachments (#42640) 2026-08-04 21:09:19 -07:00
SkinnyPigeon
d6c8fdd10d fix(explore): recompute currency_formats when dataset is saved from c… (#42480) 2026-08-04 20:41:06 -07:00
Abdul Rehman
956231b9ee fix(dataset): make post-save column refresh best-effort for Jinja SQL (#42463) 2026-08-04 20:40:09 -07:00
Evan Rusackas
2f9bde5579 fix(sql): preserve quoted-identifier casing for the HANA dialect (#39328) (#42731)
Co-authored-by: Claude Code <noreply@anthropic.com>
2026-08-04 20:39:35 -07:00
Joe Li
5720e9c7fd chore(deps): require manual deck.gl upgrades (#42653) 2026-08-05 10:06:07 +07:00
Gaston Laterza
e871ee27cf fix(i18n-es): correct format-placeholder defects in Spanish catalog (#42728)
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-05 09:21:27 +07:00
dependabot[bot]
1a74c8ef67 chore(deps-dev): bump fast-uri from 3.1.4 to 3.1.5 in /superset-embedded-sdk (#42764)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-08-05 09:07:27 +07:00
Amin Ghadersohi
22909bb039 fix(sqllab): retry table metadata preview after OAuth2 redirect (#42390)
Co-authored-by: Claude <noreply@anthropic.com>
2026-08-04 21:32:13 -04:00
Evan Rusackas
da27b4ed80 chore(sqla2): bump SQLAlchemy-dependent drivers to dual-compat versions (#42542)
Co-authored-by: Claude Code <noreply@anthropic.com>
2026-08-04 17:08:41 -07:00
Amin Ghadersohi
86b2076169 fix(mcp): handle missing metrics/columns and null data in chart preview (#42576) 2026-08-04 19:59:47 -04:00
madhushreeag
a0895a1fbd fix(native-filters): allow X-clear on defaultToFirstItem filters with required warning (#42762)
Co-authored-by: madhushree agarwal <madhushree_agarwal@apple.com>
2026-08-04 16:57:34 -07:00
Amin Ghadersohi
043163b54c fix(mcp): reject unparseable time_range instead of silently matching full table (#42283)
Co-authored-by: Claude <noreply@anthropic.com>
2026-08-04 19:45:30 -04:00
Amin Ghadersohi
33c386a2d6 fix(core): reduce metric expression log noise (#42619) 2026-08-04 16:35:02 -07:00
Elizabeth Thompson
7c03736623 fix(alerts): wrap Jinja rendering errors in AlertCommand._execute_query (#42714) 2026-08-04 15:07:10 -07:00
Elizabeth Thompson
4e9e884dd8 fix(sqllab): wrap process_template() in QueryEstimationCommand to prevent raw UndefinedError leak (#42757) 2026-08-04 15:02:47 -07:00
Rafael Benitez
1478e32bc2 fix(mcp): persist Handlebars template under camelCase key so it renders (#42725)
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-08-04 16:21:57 -04:00
Mike Bridge
e103d92b48 feat(versioning): version-history UI (#41551)
Co-authored-by: Kamil Gabryjelski <kamil.gabryjelski@gmail.com>
Co-authored-by: Claude Opus 4.7 <noreply@anthropic.com>
Co-authored-by: Mike Bridge <michael.bridge@ext.preset.io>
2026-08-04 12:37:46 -07:00
Dang Dao
9377659ffa fix(dashboard): preserve duplicate chart holders in filter scopes (#42502) 2026-08-04 21:24:25 +02:00
Lalith Kothuru
50c84f220b docs: fix parameter name in Explorable.get_query_result docstring (#42646) 2026-08-04 10:15:05 -07:00
Alexandru Soare
3dde95d809 feat(reports): add retry on failure support for reports (#42481) 2026-08-04 18:04:32 +03:00
dependabot[bot]
0615c73ff3 chore(deps): bump docker/setup-buildx-action from 3.12.0 to 4.2.0 (#42692) 2026-08-04 21:57:40 +07:00
dependabot[bot]
e66c7fcb63 chore(deps-dev): bump oxfmt from 0.60.0 to 0.61.0 in /superset-frontend (#42746)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-08-04 06:19:36 -07:00
dependabot[bot]
29098afff7 chore(deps): bump react-arborist from 3.15.1 to 3.16.0 in /superset-frontend (#42689)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-08-04 03:13:38 -07:00
dependabot[bot]
46b583668b chore(deps-dev): bump ip-address from 10.2.0 to 10.4.0 in /superset-frontend (#42727)
Signed-off-by: dependabot[bot] <support@github.com>
Signed-off-by: hainenber <dotronghai96@gmail.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: hainenber <dotronghai96@gmail.com>
2026-08-04 03:11:11 -07:00
dependabot[bot]
ebda22bdfc chore(deps-dev): bump @types/node from 26.1.1 to 26.1.2 in /superset-websocket (#42741)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-08-04 03:11:06 -07:00
dependabot[bot]
5f2bc09b9f chore(deps): bump the storybook group in /docs with 2 updates (#42742)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-08-04 03:11:03 -07:00
dependabot[bot]
f67d12edf8 chore(deps-dev): bump webpack from 5.109.0 to 5.109.1 in /docs (#42743)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-08-04 03:10:59 -07:00
dependabot[bot]
64590b5138 chore(deps): bump baseline-browser-mapping from 2.11.4 to 2.11.5 in /docs (#42744)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-08-04 03:10:56 -07:00
dependabot[bot]
327f526a63 chore(deps-dev): bump the storybook group in /superset-frontend with 5 updates (#42745)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-08-04 03:10:53 -07:00
dependabot[bot]
0048c4d30b chore(deps): bump acorn from 8.17.0 to 8.18.0 in /superset-frontend (#42747)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-08-04 03:10:48 -07:00
dependabot[bot]
720f36e763 chore(deps-dev): bump webpack from 5.109.0 to 5.109.1 in /superset-frontend (#42748)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-08-04 03:10:44 -07:00
dependabot[bot]
e52f22226f chore(deps): bump ol from 10.9.0 to 10.10.0 in /superset-frontend (#42749)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-08-04 03:10:40 -07:00
dependabot[bot]
89d544c2ed chore(deps-dev): bump @types/node from 26.1.1 to 26.1.2 in /superset-frontend (#42750)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-08-04 03:10:36 -07:00
dependabot[bot]
cf7527f2e6 chore(deps-dev): bump oxlint from 1.75.0 to 1.76.0 in /superset-frontend (#42751)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-08-04 03:10:33 -07:00
dependabot[bot]
9a5cf76336 chore(deps): bump fast-uri from 3.1.4 to 3.1.5 in /superset-frontend/cypress-base (#42721)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-08-04 02:49:02 -07:00
dependabot[bot]
1666ccaa2b chore(deps-dev): bump jsdom from 29.1.1 to 30.0.0 in /superset-frontend (#42691)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-08-04 09:18:35 +07:00
Yuriy Krasilnikov
457cd3487d fix(api): include query lifecycle timing in /api/v1/chart/data response (#37516) 2026-08-03 17:27:57 -07:00
Elizabeth Thompson
03b35186e5 fix(jinja): handle UndefinedError from virtual dataset templates (#42366)
Co-authored-by: Claude <noreply@anthropic.com>
2026-08-03 17:09:31 -07:00
Elizabeth Thompson
25ab96188f fix(sqllab): roll back session before retrying get_query after a broken transaction (#42675)
Co-authored-by: Claude <noreply@anthropic.com>
2026-08-03 15:04:28 -07:00
Elizabeth Thompson
4b11fa09c7 fix(errors): map uncaught SupersetException status/log-level correctly (#42643)
Co-authored-by: Claude <noreply@anthropic.com>
2026-08-03 15:03:00 -07:00
Joe Li
5075253b91 fix(ci): validate frontend dependency tree (#42720) 2026-08-03 14:38:00 -07:00
dependabot[bot]
da537cae00 chore(deps): bump fast-uri from 3.1.4 to 3.1.5 in /superset-frontend (#42722)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-08-03 14:30:35 -07:00
dependabot[bot]
f877c29f39 chore(deps): bump fast-uri from 3.1.4 to 3.1.5 in /docs (#42723)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-08-03 14:30:17 -07:00
dependabot[bot]
6de5f12e09 chore(deps): bump antd from 6.5.1 to 6.5.2 in /superset-frontend (#42637)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-08-03 12:30:57 -07:00
dependabot[bot]
de675aee01 chore(deps): bump yargs from 18.0.0 to 18.1.0 in /superset-frontend (#42693)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-08-03 12:27:19 -07:00
dependabot[bot]
366764d7af chore(deps-dev): bump eslint from 10.7.0 to 10.8.0 in /superset-frontend (#42695)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-08-03 12:27:09 -07:00
dependabot[bot]
110c094e35 chore(deps-dev): bump baseline-browser-mapping from 2.11.1 to 2.11.5 in /superset-frontend (#42697)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-08-03 12:27:01 -07:00
dependabot[bot]
0517e6ec25 chore(deps-dev): bump postcss from 8.5.18 to 8.5.25 in /superset-websocket (#42719)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-08-03 12:26:32 -07:00
Mike Bridge
8f10bda68e feat(soft-delete): Recently Archived view with restore and permanent delete (#41550)
Co-authored-by: Mike Bridge <michael.bridge@ext.preset.io>
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
2026-08-03 12:21:48 -07:00
Mike Bridge
da9f4216e1 fix(dashboard): count extra_editors when deciding who may edit a dashboard (#42708)
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-03 12:20:52 -07:00
Mike Bridge
bf34c7f2b4 fix(versioning): stop filing every operational failure under the migration race (#42709)
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-03 12:08:59 -07:00
Mike Bridge
db0b8b1513 test(versioning): un-skip the two obsolete activity-view skips (#42710)
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-03 12:07:49 -07:00
Mike Bridge
081515d52f fix(versioning): drop username from version-history attribution (#42711)
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-03 12:07:02 -07:00
Mike Bridge
df2786692f fix(semantic-layers): survive large multi-metric selection in Semantic View modal (#42535)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
2026-08-03 12:01:54 -07:00
Evan Rusackas
d0503c1b98 fix(dashboard): keep refresh_frequency set via the Advanced JSON editor (#42116) (#42142)
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-08-03 12:00:39 -07:00
Evan Rusackas
564ef599ab fix(ci): collapse Cypress e2e matrix from 2 runners to 1 (#42715) 2026-08-03 11:49:47 -07:00
Đỗ Trọng Hải
e4ef84ca72 feat(build): migrate from Prettier to Oxfmt for performant code formatting (#42434) 2026-08-04 00:27:05 +07:00
Đỗ Trọng Hải
10f7927603 feat(ci): switch to ubuntu-slim runner image for faster startup time when running light CI workloads (#39656) 2026-08-03 23:31:06 +07:00
Evan Rusackas
566d23ea33 fix(chart): stop duplicate metrics when switching between Waterfall and other chart types (#42533)
Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-03 09:22:22 -07:00
JUST.in DO IT
ac97484b2a fix(mcp): missing params in MCP tool call logs (#42660) 2026-08-03 08:38:22 -07:00
dependabot[bot]
5b31e0fee6 chore(deps-dev): bump concurrently from 10.0.3 to 10.0.4 in /superset-frontend (#42694)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-08-03 22:04:03 +07:00
dependabot[bot]
791305dfcf chore(deps): bump ngeohash from 0.6.3 to 0.6.4 in /superset-frontend (#42698)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-08-03 21:51:33 +07:00
dependabot[bot]
de0acdc73e chore(deps-dev): bump html-webpack-plugin from 5.6.7 to 5.6.8 in /superset-frontend (#42688)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-08-03 21:46:29 +07:00
dependabot[bot]
3d5f0813c3 chore(deps): bump the rjsf group in /superset-frontend with 2 updates (#42686)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-08-03 21:45:54 +07:00
dependabot[bot]
4939d6863f chore(deps): bump baseline-browser-mapping from 2.11.1 to 2.11.4 in /docs (#42681)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-08-03 21:45:22 +07:00
dependabot[bot]
788181beba chore(deps-dev): bump globals from 17.7.0 to 17.8.0 in /docs (#42682)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-08-03 21:45:03 +07:00
dependabot[bot]
8b3142c57c chore(deps): bump the storybook group in /docs with 2 updates (#42680)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-08-03 21:44:36 +07:00
dependabot[bot]
11f502d705 chore(deps): bump hot-shots from 17.0.1 to 17.1.0 in /superset-websocket (#42685)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-08-03 21:44:24 +07:00
dependabot[bot]
271dfbf6d5 chore(deps-dev): bump the storybook group in /superset-frontend with 5 updates (#42687)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-08-03 21:43:50 +07:00
dependabot[bot]
5aaaa3472d chore(deps-dev): bump eslint from 10.7.0 to 10.8.0 in /superset-websocket (#42683)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-08-03 21:43:17 +07:00
dependabot[bot]
ad0247208a chore(deps-dev): bump globals from 17.7.0 to 17.8.0 in /superset-websocket (#42684)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-08-03 21:42:48 +07:00
dependabot[bot]
84a33b75d2 chore(deps): bump docker/login-action from 4.5.1 to 4.5.2 (#42690)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-08-03 21:42:15 +07:00
dependabot[bot]
ac1002bddd chore(deps): bump chalk from 5.6.2 to 6.0.0 in /superset-frontend (#42696)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-08-03 21:41:13 +07:00
Evan Rusackas
06628bbd68 feat(i18n): serve language packs as versioned, immutable-cacheable scripts (#41780)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
2026-08-02 21:59:44 -07:00
dependabot[bot]
d64eaf9cdb chore(deps-dev): bump @testing-library/jest-dom from 6.9.1 to 7.0.0 in /superset-frontend (#42525)
Signed-off-by: dependabot[bot] <support@github.com>
Signed-off-by: hainenber <dotronghai96@gmail.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: hainenber <dotronghai96@gmail.com>
Co-authored-by: rusackas <evan@rusackas.com>
Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
Co-authored-by: Đỗ Trọng Hải <41283691+hainenber@users.noreply.github.com>
2026-08-03 09:00:44 +07:00
Luc Verdier
4915a3e8c7 fix(mcp): report the committed chart when its instance is detached (#42621) 2026-08-02 14:56:46 -07:00
Evan Rusackas
7ce56d369a ci: add Kesin11/actions-timeline to the heavy CI workflows (#42507)
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
2026-08-02 14:53:27 -07:00
Evan Rusackas
b6d8c830e7 test(jinja): pin filter_values() drill-to-detail native-filter fallback for virtual datasets (#35263) (#42595)
Co-authored-by: Claude Code <noreply@anthropic.com>
2026-08-02 14:44:38 -07:00
Đỗ Trọng Hải
4e3ff37137 chore(ci): resolve shellcheck-flagged errors (#42430)
Signed-off-by: hainenber <dotronghai96@gmail.com>
2026-08-03 00:09:04 +07:00
Joe Li
120b4420b9 fix(versioning): narrow UUIDs in restore tests (#42654) 2026-08-02 23:54:30 +07:00
dependabot[bot]
0628b0b813 chore(deps-dev): update thrift requirement from <1.0.0,>=0.23.0 to >=0.24.0,<1.0.0 (#42667)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-08-02 23:45:06 +07:00
dependabot[bot]
378634cceb chore(deps-dev): update pyathena requirement from <4,>=2 to >=3.35.2,<4 (#42665)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-08-02 23:44:48 +07:00
dependabot[bot]
af7472fd7e chore(deps-dev): update databricks-sql-connector requirement from <4.4.0,>=4.2.6 to >=4.4.0,<4.5.0 (#42668)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-08-02 23:36:20 +07:00
dependabot[bot]
36e3ebecfa chore(deps): bump croniter from 6.2.2 to 6.2.4 (#42664)
Signed-off-by: dependabot[bot] <support@github.com>
Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-08-02 17:22:56 +07:00
dependabot[bot]
3f201c1c77 chore(deps): bump polyline from 2.0.2 to 2.0.4 (#42666)
Signed-off-by: dependabot[bot] <support@github.com>
Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-08-02 17:22:48 +07:00
dependabot[bot]
cc4cd3e98a chore(deps): bump cachetools from 7.1.4 to 7.1.6 (#42663)
Signed-off-by: dependabot[bot] <support@github.com>
Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-08-02 17:06:14 +07:00
dependabot[bot]
322ae841e5 chore(deps-dev): update clickhouse-connect requirement from <2.0,>=1.4.2 to >=1.6.0,<2.0 (#42669)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-08-02 17:05:57 +07:00
dependabot[bot]
5ccccc8c69 chore(deps): bump greenlet from 3.5.3 to 3.5.4 (#42670)
Signed-off-by: dependabot[bot] <support@github.com>
Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-08-02 17:05:34 +07:00
dependabot[bot]
3d0ee8b4c5 chore(deps-dev): bump prophet from 1.2.0 to 1.3.0 (#42672)
Signed-off-by: dependabot[bot] <support@github.com>
Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-08-02 17:05:20 +07:00
yousoph
ff9bec2b99 fix(dashboard): make chart error messages expandable again (#42491)
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
2026-08-01 15:26:31 -07:00
Beto Dealmeida
9f66cb566b feat(semantic layers): don't show samples tab in explore (#41509) 2026-08-01 16:03:20 -04:00
0xdorian-sm
29ac93862e fix(i18n-fr): translate the 85 remaining untranslated strings (#42577)
Signed-off-by: Dorian Saint-Martin <dorian.saintmartin@outlook.fr>
Co-authored-by: Evan Rusackas <evan@preset.io>
2026-08-01 10:39:59 -07:00
Evan Rusackas
c9b159b4e7 docs(db_engine_specs): link upstream Pinot timestamp fix in TODO (#42623)
Co-authored-by: Claude Code <noreply@anthropic.com>
2026-08-01 10:39:14 -07:00
Evan Rusackas
d336d2a8b6 feat(ci): auto-label PRs with merge conflicts using requires:rebase (#42504)
Co-authored-by: Superset Dev <dev@superset.apache.org>
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
2026-08-01 10:38:02 -07:00
Amin Ghadersohi
22c305f758 fix(dataset): retry metadata after OAuth2 authorization (#42581) 2026-07-31 20:41:42 -04:00
Elizabeth Thompson
6929d032b8 fix(reports): time-budget tiled screenshot to fail cleanly instead of hitting Celery kill (#42118)
Co-authored-by: Claude <noreply@anthropic.com>
2026-07-31 15:37:46 -07:00
Elizabeth Thompson
f6c574edd8 fix(screenshots): validate cached screenshot image bytes on read and write (#42120)
Co-authored-by: Claude <noreply@anthropic.com>
2026-07-31 15:13:59 -07:00
Elizabeth Thompson
b452c1634d fix(a11y): add aria-label to dashboard IconButton and unlabeled call sites (#41470)
Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-07-31 15:05:32 -07:00
Elizabeth Thompson
1bfbce3cfd fix(alerts-reports): catch CroniterBadDateError in report frequency validation (#42650) 2026-07-31 15:04:30 -07:00
Elizabeth Thompson
85bab0b07c fix(reports): downgrade chart-container timeout log level and fix tiling veto on unknown height (#42153)
Co-authored-by: Claude <noreply@anthropic.com>
2026-07-31 15:00:38 -07:00
dependabot[bot]
0981b1101a chore(deps-dev): bump nx from 22.6.1 to 22.7.8 in /superset-frontend (#42651)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-07-31 12:49:05 -07:00
Elizabeth Thompson
f607e17e3a fix(reports): fail loudly instead of falling back to unguarded screenshot when tiled capture fails (#42273)
Co-authored-by: Claude <noreply@anthropic.com>
2026-07-31 12:41:29 -07:00
Evan Rusackas
6c8763bf5a fix(db2): stop truncating table comments to one character (#42645)
Co-authored-by: Claude Code <noreply@anthropic.com>
2026-07-31 12:36:36 -07:00
PRATHAMESH HUKKERI
035eaa8b80 fix(time-comparison): preserve inner bounds for relative offsets (#42357)
Co-authored-by: Prathamesh Hukkeri <prathamesh04@users.noreply.github.com>
2026-07-31 11:03:47 -07:00
Arijit Kumar Roy
ec8405aeea chore(mcp): remove unused MCP_SERVICE_HOST and MCP_SERVICE_PORT config (#42569)
Signed-off-by: arijitroy003 <arijitroy003@gmail.com>
2026-07-31 11:01:39 -07:00
Evan Rusackas
dc632a9737 fix(db_engine_specs): stop filtering out Postgres schemas prefixed with pg (#42312)
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-31 10:58:59 -07:00
Abdul Rehman
e391691328 fix(menu): highlight Datasets tab on /dataset/add/ and /dataset/:id (#42529) 2026-07-31 10:56:36 -07:00
lunar-me
a419a2a47f docs: fix incorrect capitalization 'PiPY' to 'PyPI' in RELEASING/README.md (#42649)
Co-authored-by: pi <pi@m2.local>
2026-07-31 10:44:51 -07:00
lunar-me
263d793b77 docs: fix missing apostrophe in 'doesn't' in superset/mcp_service/README.md (#42648)
Co-authored-by: pi <pi@m2.local>
2026-07-31 10:44:30 -07:00
lunar-me
cd77d13cfe docs: fix typo 'throuth' → 'through' in superset-embedded-sdk/README.md (#42647)
Co-authored-by: pi <pi@m2.local>
2026-07-31 10:44:11 -07:00
dependabot[bot]
268662fa49 chore(deps): bump mapbox-gl from 3.26.0 to 3.27.0 in /superset-frontend (#42636)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-07-31 10:41:41 -07:00
dependabot[bot]
c0f9dec963 chore(deps): bump docker/login-action from 3.7.0 to 4.5.1 (#42632)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-07-31 10:41:06 -07:00
dependabot[bot]
8e08a65abb chore(deps): bump google-auth-library from 10.9.0 to 10.9.1 in /superset-frontend (#42633) 2026-07-31 23:37:20 +07:00
dependabot[bot]
1a7f2afae9 chore(deps): bump antd from 6.5.1 to 6.5.2 in /docs (#42630) 2026-07-31 23:36:46 +07:00
dependabot[bot]
05f45863cb chore(deps-dev): bump webpack from 5.108.4 to 5.109.0 in /docs (#42631) 2026-07-31 23:36:21 +07:00
dependabot[bot]
96a12e0442 chore(deps-dev): bump webpack from 5.108.4 to 5.109.0 in /superset-frontend (#42634) 2026-07-31 23:20:44 +07:00
dependabot[bot]
06effe2961 chore(deps): bump fs-extra from 11.3.2 to 11.4.0 in /superset-frontend (#42635) 2026-07-31 23:19:50 +07:00
Evan Rusackas
8235d0c4fb fix(alerts-reports): skip inactive users when resolving report executor (#42612) 2026-07-31 09:15:59 -07:00
Evan Rusackas
67d05d0ed7 docs(installation): document how to add translations to a custom Docker image (#42586)
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-31 09:15:42 -07:00
Evan Rusackas
837ae95b7b feat(ci): auto-approve Dependabot patch-level bumps (#42508)
Co-authored-by: Superset Dev <dev@superset.apache.org>
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
2026-07-31 09:15:26 -07:00
Evan Rusackas
3692ac5870 ci: de-vendor helm/chart-releaser-action (#42506)
Co-authored-by: Claude Code <noreply@anthropic.com>
2026-07-31 09:15:11 -07:00
Evan Rusackas
1df022b364 ci: mirror CI service images to GHCR (fork-safe Docker Hub pulls, groundwork) (#40880)
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-31 09:14:30 -07:00
endimonan
7d2b184079 fix(explore): show selected current date range (#42616)
Co-authored-by: Enzo Martellucci <52219496+EnxDev@users.noreply.github.com>
2026-07-31 10:55:09 +02:00
Amin Ghadersohi
7b351d53cf fix(mcp): fall back to a temporal dataset column (#42575) 2026-07-30 17:39:49 -04:00
Yousuf Ansari
6279cafbbd fix(echarts): correct time shift handling in Timeseries transformProps (#38126) 2026-07-30 12:35:35 -07:00
Evan Rusackas
4b3801a447 fix(select): don't cap multi-row tag container to single-line height (#42600)
Co-authored-by: Claude Code <noreply@anthropic.com>
2026-07-30 12:32:34 -07:00
Mallikarjuna Reddy Nimmakayala
dae374b75b fix(dashboard): prevent result set overlap in mixed chart View as Table (#42018) 2026-07-30 12:17:46 -07:00
bhavishya123
1df0cca2f9 docs(databricks): include Databricks in user impersonation UI text (#36850)
Co-authored-by: Joe Li <joe@preset.io>
2026-07-30 11:50:30 -07:00
Evan Rusackas
bfa7dabb34 test(query): normalize_dttm_col with UTC offset at second-level grain (#37925) (#42589)
Co-authored-by: Claude Code <noreply@anthropic.com>
2026-07-30 11:44:52 -07:00
Vitor Avila
6e1c2fbcb8 chore: Mask specific Druid/Presto/Trino fields (#42492) 2026-07-30 10:49:19 -07:00
Evan Rusackas
9f5611aca5 chore(country-map): regenerate all country GeoJSON files from the notebook (#42493) 2026-07-30 10:32:42 -07:00
Evan Rusackas
8cd7793cd2 fix(db-engine-specs): handle bare-year python_date_format columns in time-grain expressions (#42432)
Co-authored-by: Claude Code <noreply@anthropic.com>
2026-07-30 10:32:20 -07:00
Evan Rusackas
69801a57b1 fix(explore): resolve now/today anchors to local time, not UTC (#42308)
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-30 10:30:18 -07:00
Evan Rusackas
0fa176c1b2 fix(embedded): respect show_filters URL param in standalone report mode (#42307) 2026-07-30 10:29:11 -07:00
Evan Rusackas
c392a560e6 fix(plugin-chart-echarts): preserve null radar metric values as gaps (#30270) (#41962)
Co-authored-by: Claude Code <noreply@anthropic.com>
2026-07-30 10:28:40 -07:00
Evan Rusackas
e71ade5824 fix(clickhouse): use equality for boolean filters instead of IS (#41867)
Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
2026-07-30 10:27:29 -07:00
Evan Rusackas
3588c9ad86 feat(scatter): add chart orientation and dot size metric controls (#40967)
Co-authored-by: Superset Dev <dev@superset.apache.org>
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
2026-07-30 10:27:04 -07:00
Alejandro Solares
dbaab6d6f4 fix: upgrade brace-expansion to patched versions (CVE-2026-14257) (#42583) 2026-07-31 00:22:48 +07:00
dependabot[bot]
bb4bd75426 chore(deps-dev): bump baseline-browser-mapping from 2.11.0 to 2.11.1 in /superset-frontend (#42607)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-07-30 10:22:05 -07:00
dependabot[bot]
6a32c53070 chore(deps): bump zizmorcore/zizmor-action from 0.6.0 to 0.6.1 (#42606)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-07-30 10:21:50 -07:00
dependabot[bot]
d1b211d4ab chore(deps): bump docker/login-action from 4.4.0 to 4.5.0 (#42605)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-07-30 10:21:38 -07:00
dependabot[bot]
6282f3907f chore(deps): bump baseline-browser-mapping from 2.11.0 to 2.11.1 in /docs (#42604)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-07-30 10:21:22 -07:00
Enzo Martellucci
473f447c1b fix(explore): keep the annotation layer modal usable in a small viewport (#42614)
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-07-30 19:09:58 +02:00
Mike Bridge
59a5ae0df3 feat(soft-delete): deletion-retention purge of soft-deleted entities (#41549) 2026-07-30 09:01:12 -07:00
Evan Rusackas
673f928589 fix(ci): stop helm release PRs from piling up and going stale (#42209) 2026-07-30 07:46:56 +07:00
dependabot[bot]
23d5b63421 chore(deps): bump pyarrow from 24.0.0 to 25.0.0 (#42415)
Signed-off-by: dependabot[bot] <support@github.com>
Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Evan Rusackas <evan@preset.io>
Co-authored-by: Joe Li <joe@preset.io>
2026-07-29 16:16:00 -07:00
Evan Rusackas
cec033e59c fix(table): pick totals query positionally so all_records percent metrics don't shift it (#42428)
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-29 15:47:57 -07:00
Evan Rusackas
d9c0f19b0c fix(pivot-table): keep each Rows field as its own CSV/XLSX column (#42443) 2026-07-29 15:47:28 -07:00
Elizabeth Thompson
8955593b85 fix: close gaps in pkg_resources/sqlalchemy-redshift warning suppression (#41935)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
2026-07-29 15:05:18 -07:00
Elizabeth Thompson
bab40cf437 fix(errors): downgrade SSH tunnel connection-failure logging to WARNING (SC-115347) (#42538)
Co-authored-by: Claude <noreply@anthropic.com>
2026-07-29 15:03:17 -07:00
PRATHAMESH HUKKERI
e553910240 fix(sqllab): add filterBySqlLab prop to decouple expose_in_sqllab filter from UI rendering mode (#42440)
Co-authored-by: Prathamesh Hukkeri <prathamesh04@users.noreply.github.com>
2026-07-29 14:12:02 -07:00
Arijit Kumar Roy
1e3601a641 fix(docs): Fix insecure HTTP links in README.md (#42565)
Signed-off-by: arijitroy003 <arijitroy003@gmail.com>
2026-07-29 13:10:39 -07:00
SBIN2010
68528281b1 fix(explore): ensure unsaved-changes dialog renders above View SQL modal v2 (#42546) 2026-07-29 12:57:08 -07:00
dependabot[bot]
7d542a9e87 chore(deps): bump github/codeql-action/analyze from 4.37.2 to 4.37.3 (#42551)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-07-29 12:12:55 -07:00
dependabot[bot]
34e71c91f2 chore(deps-dev): bump oxlint from 1.74.0 to 1.75.0 in /superset-frontend (#42558)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-07-29 12:12:28 -07:00
dependabot[bot]
6bb0d92279 chore(deps-dev): bump wait-on from 9.0.10 to 9.1.0 in /superset-frontend (#42556)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-07-29 11:39:36 -07:00
dependabot[bot]
bdaa53575f chore(deps): bump react-arborist from 3.15.0 to 3.15.1 in /superset-frontend (#42557)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-07-29 11:39:31 -07:00
dependabot[bot]
7e9c2a347a chore(deps): bump the ag-grid group in /superset-frontend with 2 updates (#42553)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-07-29 11:39:22 -07:00
dependabot[bot]
ffb4fcceb9 chore(deps-dev): bump ts-jest from 29.4.11 to 29.4.12 in /superset-frontend (#42554)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-07-29 11:39:16 -07:00
dependabot[bot]
dd54aabc61 chore(deps-dev): bump baseline-browser-mapping from 2.10.44 to 2.11.0 in /superset-frontend (#42555)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-07-29 11:39:12 -07:00
dependabot[bot]
e36cbe48f2 chore(deps): bump baseline-browser-mapping from 2.10.44 to 2.11.0 in /docs (#42550)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-07-29 11:38:59 -07:00
dependabot[bot]
4c64ec6efa chore(deps): bump github/codeql-action/init from 4.37.2 to 4.37.3 (#42552)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-07-29 11:38:55 -07:00
dependabot[bot]
f486783b02 chore(deps): bump swagger-ui-react from 5.32.9 to 5.32.11 in /docs (#42549)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-07-29 11:38:44 -07:00
Luiz Otavio
afb863684b feat(cache): add DATA_CACHE_MAX_VALUE_SIZE to skip caching oversized results (#42570) 2026-07-29 11:35:42 -07:00
Joe Li
5286e565e4 refactor(e2e): model dashboard filter bar (#42017) 2026-07-29 10:41:02 -07:00
Joe Li
435fb8babc fix(sqllab): make dark-theme occurrence highlight readable (#42403)
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-29 10:22:58 -07:00
Mike Bridge
f8c05bba6e fix(clickhouse): bound system sampling reads instead of failing on max_rows_to_read (#42464)
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-29 10:20:20 -07:00
yousoph
9d2dcf2198 fix(oauth2): clear schema/catalog auth banner after OAuth2 redirect refetch (#41913)
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-29 10:20:15 -07:00
yousoph
c257fa7d66 fix(chart): render chart error stack trace in monospace in dark mode (#42320)
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-29 10:20:11 -07:00
Jean Pommier
87f7dbf337 fix(i18n-fr): improve French translation (#42572) 2026-07-29 10:06:52 -07:00
Mike Bridge
940b670636 feat(versioning): version-restore engine and endpoints for charts, dashboards, and datasets (#42469)
Co-authored-by: Mike Bridge <michael.bridge@ext.preset.io>
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-29 09:54:37 -07:00
Enzo Martellucci
069605828d feat(subjects): scope principal listings and default new assets to creator groups (#42472)
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-29 14:36:45 +02:00
Mehmet Salih Yavuz
7999b7410f fix(explore): restore Back button undo for chart changes (#42473) 2026-07-29 13:55:57 +03:00
Alexandru Soare
6a801ff94f fix(explore): sync FilterInput value with parent filter state (#42342) 2026-07-29 13:26:49 +03:00
Evan Rusackas
dac69f9bcd feat(pie): geometric recentering and scaling for partial arcs (#42151)
Co-authored-by: Amin Ghadersohi <amin.ghadersohi@gmail.com>
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-28 22:27:11 -07:00
Rehan Islam
d984fb08a4 feat(explore): add download control to standalone charts (#42238) 2026-07-28 22:06:45 -07:00
jesperct
8be430014e fix(dashboard): make Clear All clear filters that have default values (#42111) 2026-07-28 22:05:51 -07:00
aikawa-ohno
00c60bf2de fix(i18n): Update Japanese translations (#42444) 2026-07-28 17:04:47 -07:00
Evan Rusackas
1d4c3a2adb fix(core): don't blank a datetime column when its format coerces every value to NaT (#42405)
Co-authored-by: Claude Code <noreply@anthropic.com>
2026-07-28 15:18:53 -07:00
Elizabeth Thompson
4a4f0685fd fix(reports): prevent bad-date crontab from crashing the report scheduler for all tenants (#42486) 2026-07-28 15:02:36 -07:00
Kobi Hikri
22ad3f2c34 fix(ci): make the Dependency Review check able to fail again (#42537) 2026-07-28 11:52:12 -07:00
Joe Li
9cdb555255 fix(docker): isolate tagged images from host packages (#42249) 2026-07-28 11:51:48 -07:00
Grégoire Gailly
fc59d9c0cf fix(i18n): improve french translations (#42470)
Co-authored-by: Elsanbot <elsanbot@elsan.care>
2026-07-28 11:48:31 -07:00
dependabot[bot]
623348f190 chore(deps-dev): bump @typescript-eslint/eslint-plugin from 8.64.0 to 8.65.0 in /superset-frontend in the typescript-eslint group across 1 directory (#42512)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-07-28 10:29:58 -07:00
Amin Ghadersohi
5aaf9d337b fix(jinja): handle non-JSON body with JSON content-type in get_form_data (#42196) 2026-07-28 09:18:08 -07:00
JUST.in DO IT
181f5bc9c1 fix(mcp): capture created chart/dashboard id in generate_chart/generate_dashboard audit logs (#42367) 2026-07-28 09:16:58 -07:00
Đỗ Trọng Hải
e426fb7bc6 chore(ci): correct GH event type for opening new issue and PR in supersetbot orglabel job (#42424)
Signed-off-by: hainenber <dotronghai96@gmail.com>
2026-07-28 09:16:41 -07:00
Evan Rusackas
b5c8d4a5df fix(mixed-timeseries): stop duplicating first metric in multi-metric + group-by series names (#40146)
Co-authored-by: Claude Code <noreply@anthropic.com>
2026-07-28 09:15:26 -07:00
dependabot[bot]
236c9a52fd chore(deps-dev): bump @typescript-eslint/eslint-plugin from 8.63.0 to 8.65.0 in /superset-websocket (#42515)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: rusackas <evan@rusackas.com>
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-28 08:06:12 -07:00
Mehmet Salih Yavuz
b983161eef feat(async): cancel running chart queries under GLOBAL_ASYNC_QUERIES (#42305) 2026-07-28 18:02:16 +03:00
Evan Rusackas
7b767f6c1d chore(ci): swap linkinator-action for lychee-action in docs link checker (#42501)
Co-authored-by: Superset Dev <dev@superset.apache.org>
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
2026-07-28 21:33:01 +07:00
dependabot[bot]
526cebac73 chore(deps-dev): bump prettier from 3.9.5 to 3.9.6 in /superset-websocket (#42514)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-07-28 21:30:23 +07:00
dependabot[bot]
39f9b7029b chore(deps): bump github/codeql-action/analyze from 4.37.1 to 4.37.2 (#42520)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-07-28 16:05:23 +03:00
dependabot[bot]
25a985893d chore(deps-dev): bump typescript-eslint from 8.64.0 to 8.65.0 in /superset-websocket (#42516)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-07-28 03:49:06 -07:00
dependabot[bot]
ad15c4ddd1 chore(deps): bump the storybook group in /docs with 2 updates (#42517)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-07-28 03:49:02 -07:00
dependabot[bot]
a301e7c511 chore(deps-dev): bump the typescript-eslint group in /docs with 3 updates (#42518)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-07-28 03:48:59 -07:00
dependabot[bot]
dd7bbe0adf chore(deps-dev): bump prettier from 3.9.5 to 3.9.6 in /docs (#42519)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-07-28 03:48:56 -07:00
dependabot[bot]
2e81eb580f chore(deps): bump baseline-browser-mapping from 2.10.43 to 2.10.44 in /docs (#42521)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-07-28 03:48:49 -07:00
dependabot[bot]
a970838b5c chore(deps): bump github/codeql-action/init from 4.37.1 to 4.37.2 (#42522)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-07-28 03:48:46 -07:00
dependabot[bot]
2c061f1e05 chore(deps-dev): bump the storybook group in /superset-frontend with 5 updates (#42523)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-07-28 03:48:42 -07:00
dependabot[bot]
be012c8faa chore(deps): bump markdown-to-jsx from 9.8.2 to 9.9.0 in /superset-frontend (#42524)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-07-28 03:48:39 -07:00
dependabot[bot]
e754b73af2 chore(deps-dev): bump baseline-browser-mapping from 2.10.43 to 2.10.44 in /superset-frontend (#42526)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-07-28 03:48:35 -07:00
dependabot[bot]
435e7825a6 chore(deps-dev): bump prettier from 3.9.5 to 3.9.6 in /superset-frontend (#42527)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-07-28 03:48:32 -07:00
Mehmet Salih Yavuz
ecc7f726a4 fix: guard potential null derefs and remove dead branches (#42358)
Co-authored-by: Enzo Martellucci <52219496+EnxDev@users.noreply.github.com>
2026-07-28 11:43:46 +03:00
PRATHAMESH HUKKERI
26b6f7bb5d fix(dashboard): preserve refresh_frequency when absent from save data (#42354)
Co-authored-by: Prathamesh Hukkeri <prathamesh04@users.noreply.github.com>
2026-07-27 23:13:11 -07:00
Phuc Hung Nguyen
a10c3f0b1d test(result_set): add regression test for empty result set column metadata (#35962)
Co-authored-by: Phuc Hung Nguyen <phucnguyen@geotab.com>
Co-authored-by: Claude <noreply@anthropic.com>
2026-07-27 23:08:59 -07:00
PRATHAMESH HUKKERI
3095d7b07f fix(metadata-bar): add max-width to text for proper ellipsis truncation (#42237)
Co-authored-by: Prathamesh Hukkeri <prathamesh04@users.noreply.github.com>
2026-07-27 20:38:29 -07:00
Gaurav Dubey
a8e2a340f1 fix(select): exclude null-valued options from "Select all" count (#42220)
Co-authored-by: Evan Rusackas <evan@preset.io>
2026-07-27 20:24:44 -07:00
Pawan
c0117f78a9 feat(dashboard): respect GranularExportControls for download permission (#41799) 2026-07-27 20:00:03 -07:00
Mike Bridge
a73e2485de feat(versioning): version-history retention cleanup job (#41075)
Co-authored-by: Mike Bridge <michael.bridge@ext.preset.io>
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-27 19:59:11 -07:00
Jean-Philippe Monette
79f3fed1f9 fix(country-map): carve the Great Lakes out of USA map states (#29503)
Co-authored-by: Evan Rusackas <evan@rusackas.com>
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Co-authored-by: Evan Rusackas <evan@preset.io>
2026-07-27 19:58:32 -07:00
Amogh Atreya
c792752a58 fix(db_engine_specs): preserve DATE semantics when applying Postgres time grains (#42254) (#42329)
Co-authored-by: Amin Ghadersohi <amin.ghadersohi@gmail.com>
2026-07-27 17:31:28 -07:00
Elizabeth Thompson
eb914b8ae3 fix(datasets): log datetime format-detection DB query failures at WARNING (#42388)
Co-authored-by: Claude <noreply@anthropic.com>
2026-07-27 15:09:28 -07:00
Elizabeth Thompson
276b7e2d67 fix(importers): catch YAMLError instead of narrower ParserError in dataset v0 importer (#42442) 2026-07-27 15:04:52 -07:00
Elizabeth Thompson
3e7ae85cc2 fix(importers): catch YAMLError instead of narrower ParserError in load_yaml (#42426) 2026-07-27 15:03:37 -07:00
jobbywl
12d7179c21 fix(hive): select schema via USE prequery instead of rewriting the URI database (#36603)
Co-authored-by: Job <job@samax.nu>
Co-authored-by: Evan Rusackas <evan@preset.io>
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
2026-07-27 14:54:16 -07:00
Joe Li
1d752a0ced fix(embedded): load guest charts with missing or stale query_context (#42150)
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-27 14:14:55 -07:00
Joe Li
a44afd8105 chore: drop legacy /superset prefix from remaining hardcoded URLs (#42156)
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-27 14:13:35 -07:00
Nitish Agarwal
74924ae73a fix(db_engine_specs): use CAST(DATE({col}) AS DATETIME) in MySQL HOUR time grain (#38617) 2026-07-27 12:52:25 -07:00
dependabot[bot]
748e1e80f0 chore(deps): bump actions/setup-python from 6.3.0 to 7.0.0 (#42452)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-07-27 12:45:26 -07:00
dependabot[bot]
4300e9fb93 chore(deps): bump hot-shots from 17.0.0 to 17.0.1 in /superset-websocket (#42445)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-07-27 11:24:56 -07:00
dependabot[bot]
3540f3f957 chore(deps): bump the rjsf group in /superset-frontend with 3 updates (#42446)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-07-27 11:24:53 -07:00
dependabot[bot]
faf2cc0f04 chore(deps): bump @fontsource/ibm-plex-mono from 5.2.7 to 5.3.0 in /docs (#42447)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-07-27 11:24:49 -07:00
dependabot[bot]
45c2b801f7 chore(deps): bump @fontsource/ibm-plex-mono from 5.2.7 to 5.3.0 in /superset-frontend (#42458)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-07-27 11:24:45 -07:00
Đỗ Trọng Hải
03c97764d1 chore(ci): remove nyc usage for merging coverage results as Codecov natively supports the action (#42431)
Signed-off-by: hainenber <dotronghai96@gmail.com>
2026-07-27 10:28:26 -07:00
Evan Rusackas
95e5e25e1a feat(helm): mitigate init-db Job hang under Istio sidecar injection (closes #25798) (#41396)
Co-authored-by: Devin AI <devin-ai-integration[bot]@users.noreply.github.com>
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-27 10:09:30 -07:00
dependabot[bot]
dece457792 chore(deps): bump @swc/core from 1.15.43 to 1.15.46 in /docs (#42448)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-07-27 07:52:52 -07:00
dependabot[bot]
3666b9a934 chore(deps): bump swagger-ui-react from 5.32.8 to 5.32.9 in /docs (#42449)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-07-27 07:51:55 -07:00
dependabot[bot]
c09ebc2087 chore(deps): bump @fontsource/inter from 5.2.8 to 5.3.0 in /docs (#42450)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-07-27 07:51:50 -07:00
dependabot[bot]
23e5cc24d5 chore(deps): bump @fontsource/fira-code from 5.2.7 to 5.3.0 in /docs (#42451)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-07-27 07:51:45 -07:00
dependabot[bot]
fe78726935 chore(deps-dev): bump stylelint from 17.14.0 to 17.14.1 in /superset-frontend (#42453)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-07-27 07:51:38 -07:00
dependabot[bot]
b3c95d138a chore(deps): bump chrono-node from 2.10.0 to 2.10.1 in /superset-frontend (#42454)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-07-27 07:51:32 -07:00
dependabot[bot]
5898463ced chore(deps-dev): bump @swc/core from 1.15.43 to 1.15.46 in /superset-frontend (#42455)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-07-27 07:51:26 -07:00
dependabot[bot]
0d2a82c2b2 chore(deps): bump react-arborist from 3.13.2 to 3.15.0 in /superset-frontend (#42456)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-07-27 07:51:21 -07:00
dependabot[bot]
67face3e3d chore(deps-dev): bump lightningcss from 1.32.0 to 1.33.0 in /superset-frontend (#42457)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-07-27 07:51:16 -07:00
dependabot[bot]
fdea53df9e chore(deps-dev): bump source-map from 0.7.6 to 0.8.0 in /superset-frontend (#42459)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-07-27 07:51:08 -07:00
dependabot[bot]
5dea601a09 chore(deps): bump @fontsource/inter from 5.2.8 to 5.3.0 in /superset-frontend (#42460)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-07-27 07:51:02 -07:00
dependabot[bot]
943bbb92e4 chore(deps): bump @fontsource/fira-code from 5.2.7 to 5.3.0 in /superset-frontend (#42461)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-07-27 07:50:57 -07:00
Enzo Martellucci
e338c77dd7 fix(dashboard-tabs): disable drag on input fields during tab reorder (#36889) 2026-07-27 16:06:41 +02:00
Sepuri Sai Krishna
6856d0fc67 fix(select): rank case-insensitive matches consistently in dropdown search (#42408) 2026-07-26 19:29:30 -07:00
Hans Yu
8f8331f656 chore: session enforce sqlalchemy 2.0 (#42365)
Co-authored-by: Evan Rusackas <evan@rusackas.com>
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
2026-07-26 19:28:42 -07:00
Evan Rusackas
e54eccd5fb chore(a11y): enable jsx-a11y/prefer-tag-over-role as error (#42078)
Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
2026-07-26 17:38:55 -07:00
Evan Rusackas
710037d3d2 chore(importers): log field names instead of full config on validation failure (#42399)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
2026-07-26 17:36:34 -07:00
Elizabeth Thompson
90040fc1f6 fix(mcp_service): downgrade client-disconnect transport noise to WARNING (SC-115264) (#42441)
Co-authored-by: Claude <noreply@anthropic.com>
Co-authored-by: Amin Ghadersohi <amin.ghadersohi@gmail.com>
2026-07-26 15:02:15 -07:00
Evan Rusackas
ba0900d2b3 fix(semantic-layers): show a friendly warning when schema enrichment falls back (#42400)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
2026-07-26 02:57:17 -07:00
Elizabeth Thompson
9a025267bd fix(reports): positive readiness check for non-tiled screenshots (#42253)
Co-authored-by: Claude <noreply@anthropic.com>
Co-authored-by: Mafi <matt.fitzgerald@gmail.com>
Co-authored-by: Matt Fitzgerald <matt.fitzgerald@preset.io>
2026-07-26 01:14:06 -04:00
dependabot[bot]
e3d3262e97 chore(deps-dev): bump grpcio from 1.81.1 to 1.83.0 (#42414)
Signed-off-by: dependabot[bot] <support@github.com>
Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Đỗ Trọng Hải <41283691+hainenber@users.noreply.github.com>
2026-07-25 18:47:24 -07:00
Evan Rusackas
6c2ccc44bd chore(table): drop dead th.ant-column-cell selector (#42407)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
2026-07-25 18:31:07 -07:00
dependabot[bot]
e1ffa53d9b chore(deps): bump pyparsing from 3.2.3 to 3.3.2 (#42420)
Signed-off-by: dependabot[bot] <support@github.com>
Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-07-25 21:53:51 +07:00
dependabot[bot]
4443357f33 chore(deps): bump flask-caching from 2.3.1 to 2.4.1 (#42413)
Signed-off-by: dependabot[bot] <support@github.com>
Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-07-25 21:49:15 +07:00
dependabot[bot]
dd08c4f36c chore(deps-dev): update flightsql-dbapi requirement from <0.3,>=0.2.0 to >=0.2.2,<0.3 (#42416)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-07-25 21:36:04 +07:00
dependabot[bot]
4f3a1a5058 chore(deps-dev): update snowflake-sqlalchemy requirement from <2,>=1.10.2 to >=1.11.0,<2 (#42418)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-07-25 21:35:44 +07:00
dependabot[bot]
9d6fbdceff chore(deps-dev): update ibm-db-sa requirement from <=0.4.4,>0.3.8 to <=0.4.4,>=0.4.4 (#42419)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-07-25 20:15:32 +07:00
dependabot[bot]
8864b7a0a3 chore(deps-dev): update oracledb requirement from <5,>=2.0.0 to >=4.0.2,<5 (#42421)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-07-25 20:04:34 +07:00
dependabot[bot]
d4652460ee chore(deps-dev): bump google-cloud-bigquery from 3.42.1 to 3.42.2 (#42422)
Signed-off-by: dependabot[bot] <support@github.com>
Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-07-25 20:04:07 +07:00
Gordon Cowie
8c37d627aa fix: allow clearing database/schema in DatasourceModal (#39918) 2026-07-24 16:17:25 -07:00
dependabot[bot]
5775bdbe5e chore(deps-dev): bump postcss from 8.5.15 to 8.5.23 in /superset-embedded-sdk (#42394)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-07-24 16:14:38 -07:00
Evan Rusackas
c65bedf2d7 fix(extensions): make LOCAL_EXTENSIONS hot reload reliable in Docker (#40084)
Co-authored-by: Amin Ghadersohi <amin.ghadersohi@gmail.com>
Co-authored-by: Claude Opus 4.7 <noreply@anthropic.com>
2026-07-24 15:30:04 -07:00
dependabot[bot]
2a07f7967d chore(deps): bump brace-expansion, @cypress/code-coverage and eslint in /superset-frontend/cypress-base (#42275)
Signed-off-by: dependabot[bot] <support@github.com>
Signed-off-by: hainenber <dotronghai96@gmail.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Evan <evan@preset.io>
Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
Co-authored-by: hainenber <dotronghai96@gmail.com>
2026-07-24 14:24:22 -07:00
Joe Li
b82ff27f9c fix(sqllab): render each query error once on async fallback (#42318)
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
Co-authored-by: Evan Rusackas <evan@rusackas.com>
2026-07-24 14:13:35 -07:00
dependabot[bot]
83ea9a1025 chore(deps): bump js-yaml from 5.2.1 to 5.2.2 in /docs (#42395)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-07-24 13:33:36 -07:00
dependabot[bot]
e9f61c1e66 chore(deps): bump postcss from 8.5.15 to 8.5.23 in /superset-frontend (#42396)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-07-24 13:33:22 -07:00
dependabot[bot]
857a194c66 chore(deps): bump postcss from 8.5.16 to 8.5.23 in /docs (#42397)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-07-24 13:33:09 -07:00
Joe Li
5ffdac1871 fix(mcp): align pooled screenshot override signature (#42384) 2026-07-24 13:32:31 -07:00
Joe Li
52552c8278 test(dashboard): migrate dashboard force-refresh control to Playwright (#41433)
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-24 13:32:09 -07:00
Joe Li
134cae07ae fix(ui): update stale Ant Design v6 internal class selectors (#42146)
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-24 13:31:45 -07:00
Evan Rusackas
f3fa1c7d4f fix(reports): write a single execution log row per report run (#29857) (#41966)
Co-authored-by: Claude Code <noreply@anthropic.com>
2026-07-24 13:30:31 -07:00
Evan Rusackas
99841fb504 fix(async): include datasets and rev claims in guest channel HMAC (#41487)
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-24 13:29:58 -07:00
Evan Rusackas
3a53c4ebc3 chore(deps): raise SQLAlchemy lower bound to >=1.4.43 (#41123)
Co-authored-by: Amin Ghadersohi <amin.ghadersohi@gmail.com>
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
2026-07-24 13:29:30 -07:00
Joe Li
f7d0ec3a2c chore: add @rusackas to migration code owners (#42398) 2026-07-24 13:18:33 -07:00
Bhargava Vadlamani
7eceebce1c feat(dbspec): Support apache datafusion dbspec (#42374) 2026-07-24 11:56:30 -07:00
Amin Ghadersohi
3bdf134aaa fix(logging): stop noisy LocalProxy-not-mapped warning for guest users (#42306)
Co-authored-by: Claude <noreply@anthropic.com>
2026-07-24 13:06:20 -04:00
ViktorGo86
65528a5b76 docs(map-tiles): add Yandex Maps Tiles API configuration (#42375) 2026-07-24 22:19:20 +07:00
Alejandro Solares
0792f98910 fix(security): bump pillow from 12.2.0 to 12.3.0 (#42362) 2026-07-24 21:49:27 +07:00
Alejandro Solares
67c3fea0ce fix(security): bump pyasn1 from 0.6.3 to 0.6.4 (#42363) 2026-07-24 21:46:21 +07:00
dependabot[bot]
d2ea5e9a1a chore(deps-dev): bump brace-expansion from 1.1.15 to 1.1.16 in /superset-embedded-sdk (#42369)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-07-24 21:23:48 +07:00
dependabot[bot]
0b9a9c5d03 chore(deps): bump body-parser from 1.20.5 to 1.20.6 in /docs (#42370)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-07-24 21:23:31 +07:00
dependabot[bot]
16de95f024 chore(deps): bump immer from 11.1.11 to 11.1.15 in /superset-frontend (#42378)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-07-24 21:23:14 +07:00
dependabot[bot]
5b5e5cf82d chore(deps): bump actions/checkout from 7.0.0 to 7.0.1 (#42376)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-07-24 21:23:00 +07:00
dependabot[bot]
542416ac6e chore(deps): bump @deck.gl/mapbox from 9.3.6 to 9.3.7 in /superset-frontend in the deckgl group (#42377)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-07-24 21:21:20 +07:00
SkinnyPigeon
4f017de532 docs(gunicorn): correct dead links in values.yaml (#42385) 2026-07-24 21:20:46 +07:00
suvankardas216
a1142b0f91 fix(dataset): disable duplicate button when name is empty (#42217)
Co-authored-by: AS-MAC-1123 <as-mac-1123@AS-MAC-1123.local>
Co-authored-by: Evan Rusackas <evan@rusackas.com>
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
2026-07-24 00:24:37 -07:00
Jean Massucatto
4ee500e47b fix(explore): render Jinja before validating legacy chart filters (#41996) 2026-07-23 22:05:14 -07:00
Ujjwal Jain
3ff5dbfe81 fix(native-filters): use FILTER_STATE_CACHE_CONFIG timeout for dynamic filter option queries (#38910) 2026-07-23 21:01:54 -07:00
dependabot[bot]
cfb04a6e79 chore(deps-dev): bump databricks-sql-connector from 4.2.6 to 4.3.0 (#42347)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Joe Li <joe@preset.io>
Co-authored-by: Evan Rusackas <evan@preset.io>
2026-07-23 20:57:58 -07:00
dependabot[bot]
49f4e84b48 chore(deps): bump flask-compress from 1.17 to 1.24 (#42346)
Signed-off-by: dependabot[bot] <support@github.com>
Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Joe Li <joe@preset.io>
2026-07-23 19:21:29 -07:00
dependabot[bot]
921f75d544 chore(deps): bump pillow from 12.2.0 to 12.3.0 (#42348)
Signed-off-by: dependabot[bot] <support@github.com>
Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Joe Li <joe@preset.io>
2026-07-23 19:21:17 -07:00
Ramachandran A G
bcf0361a91 feat(KustoKQL): Add support for NULL / IS NOT NULL operator (#37890)
Co-authored-by: ag-ramachandran <ramacg@microsoft.com>
Co-authored-by: Joe Li <joe@preset.io>
2026-07-23 18:28:37 -07:00
jenwitteng
5776aff50a fix(charts): handle async (202) chart-data responses in StatefulChart (#42157)
Co-authored-by: Claude Sonnet 4.5 <noreply@anthropic.com>
Co-authored-by: Evan Rusackas <evan@preset.io>
2026-07-23 18:01:05 -07:00
Hans Yu
14c96761e5 chore: SQLAlchemy User cascade backref warnings are irrelevant (#42360) 2026-07-23 17:16:38 -07:00
Abdul Rehman
d41f0febae fix(api): add example to get_export_ids_schema so Swagger "Try it out" pre-fills a valid array (#42265) 2026-07-23 17:15:24 -07:00
jesperct
c43effa4a3 fix(explore): show the beginning date on time-series x-axis line charts (#42046) 2026-07-23 17:14:30 -07:00
Evan Rusackas
206fe7ab12 fix(embedded): stop rejecting guest chart data built from control-specific params keys (#42295)
Co-authored-by: Claude Code <noreply@anthropic.com>
2026-07-23 13:31:04 -07:00
dependabot[bot]
1049826bc1 chore(deps): bump sqlalchemy-continuum from 1.6.0 to 1.7.0 (#42351)
Signed-off-by: dependabot[bot] <support@github.com>
Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Joe Li <joe@preset.io>
2026-07-23 12:56:11 -07:00
dependabot[bot]
6317113ee8 chore(deps): bump pydantic from 2.11.7 to 2.13.4 (#42350)
Signed-off-by: dependabot[bot] <support@github.com>
Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Joe Li <joe@preset.io>
2026-07-23 12:56:03 -07:00
dependabot[bot]
fdb9c152f0 chore(deps): bump nh3 from 0.3.5 to 0.3.6 (#42349)
Signed-off-by: dependabot[bot] <support@github.com>
Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Joe Li <joe@preset.io>
2026-07-23 12:55:56 -07:00
Amin Ghadersohi
2317d9cf91 fix(mcp): truncate query-tool responses instead of hard-failing (#42244) 2026-07-23 14:38:49 -04:00
yousoph
df8bbb548a fix(native-filters): keep filter value input caret at inline start (#42323)
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-23 11:26:56 -07:00
dependabot[bot]
6b02a423ef chore(deps-dev): bump the storybook group in /superset-frontend with 5 updates (#42355)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-07-24 00:39:08 +07:00
dependabot[bot]
f2848d951c chore(deps-dev): update taos-ws-py requirement from >=0.6.9 to >=0.7.0 (#42344)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-07-23 10:27:56 -07:00
JUST.in DO IT
cb319c9b81 fix(mcp): trust dataset is_dttm flag when applying time_grain to VARCHAR temporal columns (#42288) 2026-07-23 10:00:22 -07:00
dependabot[bot]
cc8edd2231 chore(deps): bump ag-grid from 36.0.0 to 36.0.1 in /superset-frontend (#42338)
Signed-off-by: dependabot[bot] <support@github.com>
Signed-off-by: hainenber <dotronghai96@gmail.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: hainenber <dotronghai96@gmail.com>
2026-07-23 22:21:37 +07:00
Yash Shrivastava
c5f6d33d21 docs: add pattern to the list of organisations using superset (#42341) 2026-07-23 22:11:17 +07:00
Evan Rusackas
2e72080a16 chore(deps): bump echarts to 6.1.0 with locale and containLabel guards (#42315) (#42321)
Co-authored-by: Claude Code <noreply@anthropic.com>
Co-authored-by: Amin Ghadersohi <amin.ghadersohi@gmail.com>
2026-07-23 21:48:11 +07:00
dependabot[bot]
6654318491 chore(deps): bump caniuse-lite from 1.0.30001805 to 1.0.30001806 in /docs (#42333)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-07-23 21:46:27 +07:00
dependabot[bot]
ab553c37ab chore(deps-dev): bump @formatjs/intl-durationformat from 0.10.17 to 0.10.18 in /superset-frontend (#42337)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-07-23 21:37:30 +07:00
dependabot[bot]
873da606dd chore(deps): bump github/codeql-action/init from 4.37.0 to 4.37.1 (#42334)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-07-23 21:36:39 +07:00
dependabot[bot]
1dd3103c24 chore(deps): bump github/codeql-action/analyze from 4.37.0 to 4.37.1 (#42331)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-07-23 21:36:16 +07:00
dependabot[bot]
2926d6f6a9 chore(deps): bump actions/labeler from 6.2.0 to 7.0.0 (#42332)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-07-23 21:34:54 +07:00
Evan Rusackas
67924ad35e fix(dashboard): offer Exit edit mode when there is nothing to discard (#42208)
Co-authored-by: Claude Code <noreply@anthropic.com>
2026-07-22 18:43:49 -07:00
David
ef459c21e8 fix(helm): add MCP HTTPRoute configuration (#42219) 2026-07-22 17:08:16 -07:00
Amitesh Gupta
3ed8889a01 fix: Added PostgreSQL 17.X to the supported database versions table in (#42280) 2026-07-22 16:24:13 -07:00
yousoph
17bd286ae9 fix(forecast): resolve time grain robustly for Prophet forecasting (#42145)
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-22 16:08:57 -07:00
yousoph
32937f24d2 fix(heatmap): correct tooltip axis value lookup and percentage calculations and add tests (#41864)
Signed-off-by: yousoph <sophieyou12@gmail.com>
Co-authored-by: Kamil Gabryjelski <kamil.gabryjelski@gmail.com>
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-07-22 15:34:10 -07:00
Elizabeth Thompson
e075133a83 fix(pandas_postprocessing): avoid FutureWarning for max/min in boxplot MINMAX (#42272) 2026-07-22 15:02:14 -07:00
Joe Li
8d034ef65c fix(plugin-chart-echarts): import the -obj locale build so time axes render (#42317)
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-22 14:53:59 -07:00
Joe Li
641713f623 fix: Revert "chore(deps): bump echarts from 5.6.0 to 6.1.0 in /superset-frontend" (#42314)
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-22 12:40:56 -07:00
Joe Li
40d9e7d048 fix(ag-grid-table): avoid ambiguous build query import (#42313) 2026-07-22 11:30:45 -07:00
Hans Yu
19159d58c8 refactor: engine enforce SQLAlchemy 2.0 (#42277) 2026-07-22 11:11:48 -07:00
Grégoire
894c0191d6 fix(superset_app_root): when used with oauth (#38033)
Signed-off-by: Grégoire Bellon-Gervais <gregoire.bellon-gervais@docaposte.fr>
Co-authored-by: Evan Rusackas <evan@preset.io>
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-22 10:34:43 -07:00
Joe Li
49b4243129 test(dashboard): migrate dashboard load smoke test to Playwright (#41432)
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-22 10:32:07 -07:00
dependabot[bot]
ac41f61d4a chore(deps): bump nanoid from 5.0.9 to 6.0.0 in /superset-frontend (#42230)
Signed-off-by: dependabot[bot] <support@github.com>
Signed-off-by: hainenber <dotronghai96@gmail.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: hainenber <dotronghai96@gmail.com>
Co-authored-by: Joe Li <joe@preset.io>
Co-authored-by: Evan <evan@preset.io>
Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
2026-07-22 10:28:51 -07:00
dependabot[bot]
f50b7b7154 chore(deps): bump actions/setup-go from 6.5.0 to 7.0.0 (#42303)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-07-22 10:28:11 -07:00
Zack
be5744c431 fix(chart): updates counties of kenya map (#38019)
Co-authored-by: Zack Adams <zack@Zacks-Laptop.local>
Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-authored-by: Evan <evan@preset.io>
Co-authored-by: Evan Rusackas <evan@rusackas.com>
2026-07-22 10:17:29 -07:00
SkinnyPigeon
8c5d465a65 feat(datasets): add RLS filter indicator badge to dataset list and explore view (#38807)
Co-authored-by: Evan <evan@preset.io>
2026-07-22 10:07:52 -07:00
Evan Rusackas
c5935b6904 feat(table/pivot-table): correct non-additive totals/subtotals via DB rollup [SIP-216] (#41184)
Co-authored-by: Superset Dev <dev@superset.apache.org>
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
Co-authored-by: Amin Ghadersohi <amin.ghadersohi@gmail.com>
2026-07-22 10:06:05 -07:00
Evan Rusackas
10ff470702 fix(ag-grid-table): respect row limit with server pagination (#41346)
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-22 10:03:33 -07:00
Amin Ghadersohi
1c0f259e38 refactor(mcp): dedupe list-tool schemas and delete dead middleware (#41923) 2026-07-22 12:29:59 -04:00
Alexandru Soare
b8f3b768d4 fix(sqllab): Fall back to empty editor tab when linked query no longer exists (#42241) 2026-07-22 15:30:42 +03:00
dependabot[bot]
6e1954fd51 chore(deps): bump ws from 8.21.0 to 8.21.1 in /superset-websocket (#42301)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-07-22 02:21:25 -07:00
dependabot[bot]
248f6e1064 chore(deps): bump zizmorcore/zizmor-action from 0.5.7 to 0.6.0 (#42302)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-07-22 02:21:21 -07:00
dependabot[bot]
46c5e30533 chore(deps-dev): bump oxlint from 1.73.0 to 1.74.0 in /superset-frontend (#42304)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-07-22 02:21:17 -07:00
Mehmet Salih Yavuz
b71b58e821 fix(explore): render stopped state when a chart query is cancelled (#42270) 2026-07-22 11:14:08 +03:00
Damian Pendrak
1392fbc9b2 fix(sql): validate Custom SQL metric has an aggregate under GROUP BY (#42199) 2026-07-22 09:28:57 +02:00
Mafi
a086b2eae9 fix(clickhouse): retry adhoc column type probe with comment-safe SQL (#42298)
Co-authored-by: Matt Fitzgerald <matt.fitzgerald@preset.io>
2026-07-22 02:39:49 -04:00
Pawan
788165b5bb fix(frontend): jest testRegex matches Windows path separators (#41863) 2026-07-21 20:32:33 -07:00
dependabot[bot]
60a7c18204 chore(deps): bump svgo from 3.3.3 to 3.3.4 in /docs (#42286)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-07-21 17:55:25 -07:00
dependabot[bot]
db1959b9b6 chore(deps): bump fast-uri from 3.1.2 to 3.1.4 in /superset-frontend/cypress-base (#42292)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-07-21 17:55:20 -07:00
dependabot[bot]
936b8a84ae chore(deps): bump fast-uri from 3.1.3 to 3.1.4 in /superset-frontend (#42293)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-07-21 17:55:15 -07:00
dependabot[bot]
37ef2f381e chore(deps): bump fast-uri from 3.1.3 to 3.1.4 in /docs (#42294)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-07-21 17:55:11 -07:00
Amin Ghadersohi
cae61b51e1 fix(cache): QueryCacheManager.get() should fail open on cache backend errors (#42252) 2026-07-21 20:05:00 -04:00
dependabot[bot]
9c08240fdc chore(deps): bump dompurify from 3.4.11 to 3.4.12 in /docs (#42287)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-07-21 16:44:49 -07:00
Igor Khrol
072ff01406 fix: disable recaptcha for LDAP authentication (#36857)
Co-authored-by: Igor Khrol <khroliz@Igors-MacBook-Pro-2.local>
2026-07-21 16:31:12 -07:00
Keonik
8b1ef3a4cb feat(helm): Add annotations to secrets manifests (#40803)
Co-authored-by: Superset Dev <dev@superset.apache.org>
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
2026-07-21 16:27:55 -07:00
JUST.in DO IT
d62dbdb694 fix(chat): prevent main content reload when toggling chat panel (#42143) 2026-07-21 16:27:29 -07:00
Aleksey
2ddea33bb6 fix(models): inline calculated column expression in raw-records queries (#34784) (#42040)
Co-authored-by: Evan Rusackas <evan@preset.io>
2026-07-21 16:23:59 -07:00
Ville Brofeldt
15d7d36580 chore: remove deprecated from_dttm and to_dttm jinja vars (#42279) 2026-07-21 15:07:36 -07:00
dependabot[bot]
ab8e23d874 chore(deps-dev): bump svgo from 3.3.3 to 3.3.4 in /superset-frontend (#42285)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-07-21 14:45:12 -07:00
Jean Massucatto
1b882c1f47 test(explore): cover annotation layer link app-root prefix in subdire… (#41997) 2026-07-21 14:05:30 -07:00
dependabot[bot]
8329481c2e chore(deps-dev): bump the typescript-eslint group across 1 directory with 2 updates (#42258)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-07-21 14:04:48 -07:00
dependabot[bot]
c95c8086f5 chore(deps-dev): bump webpack-bundle-analyzer from 5.3.0 to 5.3.1 in /superset-frontend (#42261)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-07-21 14:04:44 -07:00
dependabot[bot]
cfac785541 chore(deps): bump fuse.js from 7.4.2 to 7.5.0 in /superset-frontend (#42262)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Joe Li <joe@preset.io>
2026-07-21 14:04:40 -07:00
dependabot[bot]
b97a7f5f94 chore(deps-dev): bump fast-uri from 3.1.2 to 3.1.4 in /superset-embedded-sdk (#42282)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-07-21 14:04:30 -07:00
Amin Ghadersohi
e5c418a187 fix(mcp): normalize bracket-shorthand time ranges in query_dataset (#42144) 2026-07-21 15:42:04 -04:00
Michael S. Molina
34ebe3d22a feat(extensions): add a Storage API for extensions (#39171)
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
Co-authored-by: Evan Rusackas <evan@preset.io>
Co-authored-by: Amin Ghadersohi <amin.ghadersohi@gmail.com>
Co-authored-by: Benyovszky Máté <benyovszky.mate.work@outlook.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-21 16:23:56 -03:00
SBIN2010
0dd06f3b7b fix: dashboard filter regress (#35218)
Co-authored-by: Evan Rusackas <evan@preset.io>
2026-07-21 21:04:04 +03:00
Hans Yu
40a13883ea refactor: do not cascade to SqlMetric (#42221)
Co-authored-by: Evan Rusackas <evan@rusackas.com>
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
2026-07-21 10:26:01 -07:00
Evan Rusackas
f2967264d2 fix(ci): diff pre-commit changed files against the live base branch tip (#42152)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
2026-07-21 10:20:57 -07:00
Evan Rusackas
706a65cb02 fix(docs): allow *.run.app in CSP for the Kapa widget backend (#42276)
Co-authored-by: Amin Ghadersohi <amin.ghadersohi@gmail.com>
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
2026-07-21 10:18:13 -07:00
Evan Rusackas
f9378baba8 test(sqla): add the jinja orderby calculated column to the session (#42274)
Co-authored-by: Claude Code <noreply@anthropic.com>
2026-07-21 10:16:29 -07:00
Evan Rusackas
e1a265447f fix(charts): use chart name in CSV/XLSX/zip export filenames (#42193)
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-21 10:16:17 -07:00
Amin Ghadersohi
f999afaac0 fix(mcp): coerce float rowcount to int in ChartData to prevent PydanticSerializationError (#42140) 2026-07-21 10:10:33 -07:00
Elizabeth Thompson
1a862476e1 fix(dashboard): add cacheKey, dashboardId, and format context to screenshot download error logs (#42121)
Co-authored-by: Claude <noreply@anthropic.com>
2026-07-21 10:10:14 -07:00
Taras Pashkevych
df34b5d277 fix(drill-detail): paginate Elasticsearch samples via engine cursor (#39509) 2026-07-21 10:09:28 -07:00
Evan Rusackas
b362d36019 chore: remove deck.gl JavaScript tooltip controls and ENABLE_JAVASCRIPT_CONTROLS (#42126)
Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
2026-07-21 10:01:25 -07:00
Evan Rusackas
666b6805c4 test(sql): prove Oracle GROUP BY stays explicit for virtual-dataset charts (#42255)
Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
2026-07-21 09:59:34 -07:00
dependabot[bot]
3fa7cc5986 chore(deps): bump react-diff-viewer-continued from 4.3.0 to 4.4.0 in /superset-frontend (#42263)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Evan <evan@preset.io>
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-21 09:47:05 -07:00
dependabot[bot]
7f4d151a37 chore(deps): bump body-parser from 2.2.1 to 2.3.0 in /superset-websocket/utils/client-ws-app (#42264)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-07-21 09:46:56 -07:00
dependabot[bot]
5efbd5b157 chore(deps-dev): bump brace-expansion from 5.0.6 to 5.0.7 in /superset-websocket (#42267)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-07-21 09:46:48 -07:00
Hugh A. Miles II
00cb3037e7 feat(dashboard): export dashboard chart data to Excel (async, S3 + email) (#41133) 2026-07-21 12:17:00 -04:00
Hans Yu
6c58afe6ac refactor: do not cascade to TableColumn (#42222) 2026-07-21 09:00:47 -07:00
Evan Rusackas
f751716867 fix(trino): quote nested ROW field paths per-segment in physical column expressions (#41946)
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-21 04:27:24 -07:00
dependabot[bot]
bafe5ad9ba chore(deps): bump actions/setup-java from 5.5.0 to 5.6.0 (#42260)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-07-21 01:15:32 -07:00
dependabot[bot]
a1d4cda0cb chore(deps-dev): bump typescript-eslint from 8.63.0 to 8.64.0 in /docs in the typescript-eslint group (#42259)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-07-21 01:15:28 -07:00
Evan Rusackas
2d3cbc162e fix(db_engine_specs): map var_string to STRING for MySQL/StarRocks (#41868)
Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
2026-07-21 00:11:46 -07:00
Evan Rusackas
e4005f02c6 fix(sqla): render Jinja templates in calculated columns used via orderby adhoc metrics (#41870)
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-21 00:11:26 -07:00
jesperct
8296fe8ce4 fix(home): restore navigation for saved query cards (#41912) 2026-07-20 17:33:32 -07:00
Elizabeth Thompson
4b659da5c4 fix(reports): positive per-tile chart readiness check for tiled screenshots (#42119)
Co-authored-by: Claude <noreply@anthropic.com>
Co-authored-by: yousoph <sophieyou12@gmail.com>
2026-07-20 17:31:45 -07:00
worker24h
b4529c2654 feat: add distance unit (#24444)
Co-authored-by: xuxiaobing <xuxiaobing@neolix.cn>
Co-authored-by: Claude Code <noreply@anthropic.com>
Co-authored-by: Evan <evan@preset.io>
Co-authored-by: Evan Rusackas <evan@rusackas.com>
2026-07-20 16:25:48 -07:00
Evan Rusackas
034823e99b chore: replace deprecated datetime.utcnow()/utcfromtimestamp() (#41502)
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-20 15:37:57 -07:00
Evan Rusackas
abd6dc8e44 refactor: set cascade_backrefs=False for SavedQuery (#42212)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
2026-07-20 15:37:28 -07:00
Evan Rusackas
b3757870cc fix(sqllab): apply SQL_QUERY_MUTATOR in SQL Lab when MUTATE_AFTER_SPLIT is set (#41127)
Co-authored-by: Lucas Wolkersdorfer <lucas.wolkersdorfer@rise-world.com>
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-20 15:36:45 -07:00
dependabot[bot]
158e321992 chore(deps): bump axios from 1.16.0 to 1.18.1 in /superset-frontend (#42251)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-07-20 11:45:40 -07:00
Evan Rusackas
590357731b feat(ci): cancel CI runs when hold label applied, re-run on removal (#40387)
Co-authored-by: Claude <claude@anthropic.com>
Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-authored-by: Đỗ Trọng Hải <41283691+hainenber@users.noreply.github.com>
2026-07-20 10:35:26 -07:00
Elizabeth Thompson
64053271e8 fix(views): remove stray space in @deprecated new_target log message (#42218) 2026-07-20 10:35:02 -07:00
Matthew Chiang
940e2c34a2 fix(Calendar Heatmap): Add Back chart options for Calendar Heatmap (#26230)
Co-authored-by: Claude <claude@anthropic.com>
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Co-authored-by: Evan Rusackas <evan@rusackas.com>
2026-07-20 10:32:35 -07:00
Đỗ Trọng Hải
d65a816b39 chore(lint): toggle import/no-named-as-default to error level + fix all violations (#42214)
Signed-off-by: hainenber <dotronghai96@gmail.com>
2026-07-20 10:22:15 -07:00
Evan Rusackas
48faca5b8d refactor: set cascade_backrefs=False for SqlaTable (#42213)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
2026-07-20 10:22:00 -07:00
Evan Rusackas
9178faf9b1 refactor: set cascade_backrefs=False for Query (#42210)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
2026-07-20 10:20:09 -07:00
PRATHAMESH HUKKERI
15bc73facf test(table): add regression test for pagination reset on cell click (#42155)
Co-authored-by: Prathamesh Hukkeri <prathamesh04@users.noreply.github.com>
2026-07-20 10:15:29 -07:00
Evan Rusackas
e0d0eb6d02 fix(build): deterministic echarts locale imports; fingerprint loaded config (#42154)
Co-authored-by: Superset Dev <dev@superset.apache.org>
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
2026-07-20 10:13:58 -07:00
Đỗ Trọng Hải
1f81b700c1 chore(ci): upgrade GHA runner image to Ubuntu 26.04 (#42191)
Signed-off-by: hainenber <dotronghai96@gmail.com>
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: David <39565245+dmunozv04@users.noreply.github.com>
Co-authored-by: Hans Yu <hans.yu@outlook.de>
Co-authored-by: Shaitan <105581038+sha174n@users.noreply.github.com>
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
Co-authored-by: Rehan Islam <2025eb01502@online.bits-pilani.ac.in>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: J0s3-H3nr1qu3 <hareboom@gmail.com>
Co-authored-by: José Teixeira <jose.teixeira@douroeci.com>
2026-07-20 09:43:19 -07:00
Jean Massucatto
3a3f087869 fix(native-filters): support double-quote escaping for comma in filte… (#39068)
Co-authored-by: Evan <evan@preset.io>
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-20 09:42:52 -07:00
Evan Rusackas
f03a66db9c fix(dataset): apply HOURS OFFSET to all temporal columns, not just the time column (#41489)
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-20 09:23:20 -07:00
Adolfo Carvalho
515dfef955 fix(dashboard import): Importing existing dashboard via UI won't update charts and datasets (#34880)
Co-authored-by: Evan Rusackas <evan@preset.io>
Co-authored-by: Joe Li <joe@preset.io>
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-20 09:22:06 -07:00
Evan Rusackas
5a17ae1224 chore: drop Python 3.10 support, require Python 3.11+ (#42045)
Signed-off-by: hainenber <dotronghai96@gmail.com>
Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
Co-authored-by: hainenber <dotronghai96@gmail.com>
2026-07-20 08:16:22 -07:00
Mehmet Salih Yavuz
c1e660fac8 fix(databases): reset import file entry after invalid file error (#42240) 2026-07-20 18:06:44 +03:00
dependabot[bot]
19ca088de6 chore(deps): bump baseline-browser-mapping from 2.10.42 to 2.10.43 in /docs (#42227)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-07-20 07:44:06 -07:00
dependabot[bot]
57dc3c0208 chore(deps): bump antd from 6.5.0 to 6.5.1 in /superset-frontend (#42234)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-07-20 21:42:51 +07:00
dependabot[bot]
ceffbe80f9 chore(deps): bump hot-shots from 16.0.0 to 17.0.0 in /superset-websocket (#42236)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-07-20 21:42:00 +07:00
dependabot[bot]
eed41b6435 chore(deps): bump actions/setup-node from 6.4.0 to 7.0.0 (#42229)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-07-20 21:33:36 +07:00
J0s3-H3nr1qu3
277c814c5a fix(i18n): review and complete Portuguese (pt_PT) translation catalog (#42137)
Co-authored-by: José Teixeira <jose.teixeira@douroeci.com>
2026-07-20 14:37:43 +01:00
dependabot[bot]
7e63b29741 chore(deps): bump antd from 6.5.0 to 6.5.1 in /docs (#42226)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-07-20 03:56:10 -07:00
dependabot[bot]
b5ae7cbd0d chore(deps): bump caniuse-lite from 1.0.30001803 to 1.0.30001805 in /docs (#42228)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-07-20 03:56:03 -07:00
dependabot[bot]
e044d7783a chore(deps): bump dompurify from 3.4.11 to 3.4.12 in /superset-frontend (#42231)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-07-20 03:55:59 -07:00
dependabot[bot]
9e8b9ac8cf chore(deps-dev): bump tsx from 4.23.0 to 4.23.1 in /superset-frontend (#42232)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-07-20 03:55:55 -07:00
dependabot[bot]
19588826c8 chore(deps-dev): bump baseline-browser-mapping from 2.10.42 to 2.10.43 in /superset-frontend (#42233)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-07-20 03:55:50 -07:00
dependabot[bot]
8b415502cf chore(deps): bump chrono-node from 2.9.1 to 2.10.0 in /superset-frontend (#42235)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-07-20 03:55:43 -07:00
Rehan Islam
09148d0af6 fix(time-table): correctly sort computed columns (#41976) 2026-07-19 20:56:53 -07:00
Shaitan
3e40bebba8 fix(import): enforce write permission for objects created by legacy import paths (#42205)
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-19 20:50:58 -07:00
Hans Yu
36dbff091f refactor: do not cascade to TaggedObject (#42223) 2026-07-19 20:18:53 -07:00
David
9e9b7c4bbd feat(ci): run helm-unittest on pull requests (#42206) 2026-07-20 07:36:19 +07:00
dependabot[bot]
42a2aede78 chore(deps): bump pandas from 2.1.4 to 2.3.3 (#42192)
Signed-off-by: dependabot[bot] <support@github.com>
Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Amin Ghadersohi <amin.ghadersohi@gmail.com>
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-18 15:42:02 -07:00
lguichard78
c4d50472a9 fix(login): oauth and ldap login ignoring superset_app_root (#34657) 2026-07-18 14:58:22 -07:00
Younsung Lee
cd045886d0 feat(helm): add Gateway API HTTPRoute support (#41073)
Signed-off-by: younsl <cysl@kakao.com>
2026-07-18 14:57:02 -07:00
Jean Massucatto
751f5eb663 fix(dashboard): disable Discard button when there are no unsaved changes (#40832)
Co-authored-by: Evan Rusackas <evan@preset.io>
2026-07-18 14:15:17 -07:00
serdukow
4e098b6f38 fix(ag-grid-table): use t('Main') for time comparison column keys to fix i18n (#40681)
Co-authored-by: Evan Rusackas <evan@preset.io>
Co-authored-by: Claude <noreply@anthropic.com>
2026-07-18 13:00:53 -07:00
David
5ee4a81906 feat(helm): add Superset MCP server templates (#40507) 2026-07-18 12:59:40 -07:00
Mike Bridge
caf017bd0b feat(versioning): cross-entity version activity view (#41076)
Co-authored-by: Mike Bridge <michael.bridge@ext.preset.io>
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-18 11:06:54 -07:00
jenwitteng
a83171bce6 fix(database): capture result metadata after fetch (#42127)
Signed-off-by: Jenwit Amonpongitsara <jenwit.amonpongitsara@agoda.com>
2026-07-18 10:54:36 -07:00
Đỗ Trọng Hải
6c13ab6657 feat(ci): optimize Storybook testing in CI by replacing http-server with Python3 static server (#41956)
Signed-off-by: hainenber <dotronghai96@gmail.com>
2026-07-18 10:53:54 -07:00
Đỗ Trọng Hải
b9ede492b7 chore(lint): toggle import/named and import/export lint rules to error level (#42189)
Signed-off-by: hainenber <dotronghai96@gmail.com>
2026-07-18 10:53:40 -07:00
Gagandeep Singh Choudhary
fb29db6119 fix(sqllab): preserve database state on SET_DATABASES (#41281)
Co-authored-by: Joe Li <joe@preset.io>
Co-authored-by: Evan <evan@preset.io>
Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
2026-07-18 10:52:45 -07:00
David
0a66e4ea2d fix(helm): support initContainers in supersetWebsockets (#42201) 2026-07-18 10:29:42 -07:00
AYUSHI RAI
3e0f9e60c0 fix(charts): preserve minute/second precision in X-axis time labels f… (#41505)
Co-authored-by: Evan Rusackas <evan@rusackas.com>
Co-authored-by: Claude <noreply@anthropic.com>
2026-07-18 10:28:03 -07:00
Durgaprasad M L
ff1cf5f24e fix(table): hide search dropdown when search box is disabled (#41772) 2026-07-18 10:23:54 -07:00
dependabot[bot]
023b60c8f0 chore(deps-dev): bump pandas-gbq from 0.19.1 to 0.35.0 (#42161)
Signed-off-by: dependabot[bot] <support@github.com>
Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-07-18 07:23:17 -07:00
dependabot[bot]
2ada286ee9 chore(deps-dev): update pydynamodb requirement from >=0.4.2 to >=0.8.2 (#42162)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-07-18 07:23:13 -07:00
dependabot[bot]
42e5640f60 chore(deps-dev): update nzalchemy requirement from <11.2,>=11.0.2 to >=11.1.2,<11.2 (#42164)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-07-18 07:23:09 -07:00
dependabot[bot]
74703906df chore(deps): bump dom-to-image-more from 3.10.0 to 3.10.2 in /superset-frontend (#42180)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-07-18 21:15:23 +07:00
dependabot[bot]
3c23394675 chore(deps-dev): bump eslint from 10.6.0 to 10.7.0 in /superset-websocket (#42159)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-07-18 16:12:08 +07:00
dependabot[bot]
b6ce28ff72 chore(deps): bump typing-extensions from 4.15.0 to 4.16.0 (#42165)
Signed-off-by: dependabot[bot] <support@github.com>
Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-07-18 16:11:46 +07:00
dependabot[bot]
79eff6b6f1 chore(deps): bump greenlet from 3.5.1 to 3.5.3 (#42166)
Signed-off-by: dependabot[bot] <support@github.com>
Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-07-18 16:08:28 +07:00
dependabot[bot]
a58012fc0f chore(deps): bump the docusaurus-openapi group in /docs with 2 updates (#42195)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-07-18 16:05:39 +07:00
dependabot[bot]
dab5f30842 chore(deps): bump @docusaurus/faster from 3.10.1 to 3.10.2 in /docs (#42179)
Signed-off-by: dependabot[bot] <support@github.com>
Signed-off-by: hainenber <dotronghai96@gmail.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Đỗ Trọng Hải <41283691+hainenber@users.noreply.github.com>
Co-authored-by: hainenber <dotronghai96@gmail.com>
2026-07-18 15:55:18 +07:00
dependabot[bot]
8299e7f87c chore(deps-dev): bump storybook from 10.4.6 to 10.5.0 in /superset-frontend (#42185)
Signed-off-by: dependabot[bot] <support@github.com>
Signed-off-by: hainenber <dotronghai96@gmail.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: hainenber <dotronghai96@gmail.com>
2026-07-18 15:41:22 +07:00
dependabot[bot]
f6acf68dfa chore(deps): bump react-intersection-observer from 10.0.3 to 10.1.0 in /superset-frontend (#42181)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-07-18 13:31:08 +07:00
dependabot[bot]
cce77b42f6 chore(deps-dev): bump @formatjs/intl-durationformat from 0.10.16 to 0.10.17 in /superset-frontend (#42184)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-07-18 13:11:17 +07:00
dependabot[bot]
e495fd80f6 chore(deps-dev): bump eslint from 10.6.0 to 10.7.0 in /superset-frontend (#42188)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-07-18 13:01:56 +07:00
dependabot[bot]
bda62cb28d chore(deps-dev): bump hdbcli from 2.29.23 to 2.29.25 (#42170)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-07-18 12:38:16 +07:00
Đỗ Trọng Hải
45354994a6 build(deps): update @rjsf deps to v6 (#41955)
Signed-off-by: hainenber <dotronghai96@gmail.com>
2026-07-18 10:54:40 +07:00
Abhishek Kumbhar
0f61d9a3fb fix(bigquery): ensure BigQuery client uses project from engine URI (#41975) 2026-07-17 20:05:34 -07:00
Evan Rusackas
b432f8c917 fix(docs): use modern driver package for CrateDB (#42125)
Co-authored-by: Andreas Motl <andreas.motl@crate.io>
Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
2026-07-18 10:05:09 +07:00
Igor Shargin
25f6c6c80b fix(pivot-table): add bottom border to last grouped row (#36081)
Co-authored-by: Evan <evan@preset.io>
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
Co-authored-by: Evan Rusackas <evan@rusackas.com>
2026-07-17 19:26:55 -07:00
Evan Rusackas
ce8d4397cd test(jinja): prove current_user_* macros produce collision-free cache keys (#42122)
Co-authored-by: Amin Ghadersohi <amin.ghadersohi@gmail.com>
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-17 16:50:11 -07:00
Evan Rusackas
68297886d4 fix(ci): stop concurrency cancellation from bricking required checks on approval-gated PRs (#42148)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
2026-07-17 16:38:27 -07:00
SBIN2010
91f814abea feat(pie): add the ability to make half a donut (#35459)
Co-authored-by: Enzo Martellucci <52219496+EnxDev@users.noreply.github.com>
Co-authored-by: Amin Ghadersohi <amin.ghadersohi@gmail.com>
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-17 16:29:23 -07:00
dependabot[bot]
6a330c251b chore(deps): bump redis from 5.3.1 to 8.0.1 (#41813)
Signed-off-by: dependabot[bot] <support@github.com>
Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Evan Rusackas <evan@rusackas.com>
Co-authored-by: Evan Rusackas <evan@preset.io>
Co-authored-by: Joe Li <joe@preset.io>
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
2026-07-17 15:25:51 -07:00
Joe Li
5bf26f77f8 fix(label): restore spacing between icon and label text (#42141)
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-17 15:05:48 -07:00
Elizabeth Thompson
5750d82426 fix(pandas_postprocessing): avoid FutureWarning for mean/median in boxplot (#42004) 2026-07-17 15:02:40 -07:00
Philip Leong
c84a154b52 feat(helm): support additive extra init containers (#42114) 2026-07-17 14:44:24 -07:00
Evan Rusackas
5b837e844e fix(sqla): cast native UUID columns to string for LIKE/ILIKE filters (#41804)
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-17 13:59:41 -07:00
Greg Neighbors
a99c98c6fe feat(mcp): waterfall chart type plugin (#42070)
Co-authored-by: Greg Neighbors <gregneighbors@Gregs-Air-2.lan>
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Co-authored-by: Greg Neighbors <gregneighbors@Gregs-MacBook-Air-2.local>
2026-07-17 13:49:34 -07:00
Abdul Rehman
f8cfa459ef fix(presto): fix latest_sub_partition guard bypass + escape partition filter values (#41877) 2026-07-17 13:48:58 -07:00
Amin Ghadersohi
eef3dac72f fix(nav): prevent top navbar from flashing to vertical layout on load (#40781)
Co-authored-by: yousoph <sophieyou12@gmail.com>
Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-07-17 13:29:13 -07:00
Amin Ghadersohi
73aa8ef280 docs(mcp): fix instruction/docstring drift and annotation metadata in mcp_service (#41922)
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
2026-07-17 16:13:45 -04:00
Amin Ghadersohi
f3255c46ac feat(mcp): add dashboard owner, role, and certification management tools (#41606)
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
2026-07-17 13:05:58 -07:00
mathiasi
9f230bcfc0 fix(cli): add --username option to import-directory command (#40994)
Co-authored-by: Evan Rusackas <evan@preset.io>
Co-authored-by: Claude <noreply@anthropic.com>
2026-07-17 12:34:38 -07:00
PRATHAMESH HUKKERI
c05ac138fb fix(table): prevent pagination reset on cell click (#42136)
Co-authored-by: Prathamesh Hukkeri <prathamesh04@users.noreply.github.com>
2026-07-17 21:33:19 +03:00
Daniel
c0781ba316 chore(i18n): update Russian translations (#41885) 2026-07-17 10:46:00 -07:00
Evan Rusackas
905b20a3f2 fix(ci): retry change_detector GitHub API calls on transient errors (#42138)
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-17 10:41:05 -07:00
innovark
fc506c06da feat: added email delivery of XLSX reports (#40885) 2026-07-17 10:35:34 -07:00
John
69b144ec16 feat(dashboards): Add open graph metadata for dashboards (#33550)
Co-authored-by: Evan Rusackas <evan@preset.io>
Co-authored-by: Claude <noreply@anthropic.com>
2026-07-17 10:35:14 -07:00
Evan Rusackas
9ccd365652 feat(echarts): respect time grain in time-series tooltips (#41350)
Co-authored-by: Michael Gerber <michael.gerber@nxt.engineering>
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-17 09:41:04 -07:00
Amin Ghadersohi
60fb1c6f01 docs(mcp): document all 7 generate_chart chart_type values, fix stale config comment (#41599) 2026-07-17 10:06:52 -04:00
dependabot[bot]
929ec58276 chore(deps): bump docusaurus-theme-openapi-docs from 5.1.0 to 5.1.1 in /docs (#42129)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-07-17 06:05:47 -07:00
dependabot[bot]
bef03fb850 chore(deps-dev): bump prettier from 3.9.4 to 3.9.5 in /docs (#42128)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-07-17 02:28:19 -07:00
dependabot[bot]
8d36dca9e8 chore(deps): bump react-diff-viewer-continued from 4.2.2 to 4.3.0 in /superset-frontend (#42130)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-07-17 02:28:14 -07:00
dependabot[bot]
9bb0e376b3 chore(deps): bump docusaurus-plugin-openapi-docs from 5.1.0 to 5.1.1 in /docs (#42131)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-07-17 02:28:11 -07:00
dependabot[bot]
778800ba82 chore(deps): bump mapbox-gl from 3.25.0 to 3.26.0 in /superset-frontend (#42132)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-07-17 02:28:07 -07:00
dependabot[bot]
ba309fd016 chore(deps-dev): bump prettier from 3.9.4 to 3.9.5 in /superset-frontend (#42133)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-07-17 02:28:04 -07:00
dependabot[bot]
7eab41f904 chore(deps-dev): bump prettier from 3.9.4 to 3.9.5 in /superset-websocket (#42134)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-07-17 02:28:00 -07:00
amaannawab923
dbef0c3fee fix(plugin-chart-ag-grid-table): render Show summary totals row on ag-grid 36 (#42115) 2026-07-17 13:58:22 +05:30
Joe Li
157ef61fd8 fix(charts): render time comparison without a time grain (#42054)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
2026-07-16 21:50:46 -07:00
Evan Rusackas
f467d36a24 fix(i18n): accept script subtags (e.g. sr_Latn) in backfill_po language codes (#42103)
Co-authored-by: Amin Ghadersohi <amin.ghadersohi@gmail.com>
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-16 21:25:30 -07:00
Evan Rusackas
9f8e1508ca fix(plugin-chart-echarts): show forecast tooltip values when they equal zero (#41311)
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-16 21:25:06 -07:00
Joe Li
20e6dfd37d fix(dashboard): seed default active tab path at hydration (#42075) 2026-07-16 17:31:03 -07:00
Đỗ Trọng Hải
5067230484 chore(lint): display import/no-duplicates lint rule violation as error (#42042) 2026-07-16 15:50:38 -07:00
Gabriel Wong
c45b9002e6 feat(mcp): register /health HTTP endpoint (#41755) 2026-07-16 15:32:33 -07:00
Joe Li
edca579625 fix(alerts): show typed text in email recipients selector (#42091)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
2026-07-16 15:26:15 -07:00
fnardin-maystreet
30b93ab743 fix(frontend): fix edit/delete permissions for charts, dashboards, and datasets (#18870) (#32981) (#32995)
Co-authored-by: Filippo Nardin <filippo.nardin.96@gmail.com>
Co-authored-by: Evan Rusackas <evan@preset.io>
2026-07-16 15:21:26 -07:00
Evan Rusackas
9e38c1dd13 chore(a11y): enable jsx-a11y/no-static-element-interactions as error (#42096)
Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
2026-07-16 12:21:15 -07:00
Evan Rusackas
b459601ceb feat(i18n): backfill missing translations across 24 catalogs (AI-generated, needs review) (#42099)
Co-authored-by: Amin Ghadersohi <amin.ghadersohi@gmail.com>
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-16 12:21:07 -07:00
Evan Rusackas
6f154377d7 feat(i18n): backfill Romanian (ro) translations (AI-generated, needs review) (#42100)
Co-authored-by: Amin Ghadersohi <amin.ghadersohi@gmail.com>
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-16 12:20:39 -07:00
Evan Rusackas
5b57eb38d2 feat(i18n): backfill Chinese (Traditional) (zh_TW) translations (AI-generated, needs review) (#42102)
Co-authored-by: Amin Ghadersohi <amin.ghadersohi@gmail.com>
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-16 12:20:25 -07:00
Evan Rusackas
33bc35d135 feat(i18n): backfill Italian (it) translations (AI-generated, needs review) (#42101)
Co-authored-by: Amin Ghadersohi <amin.ghadersohi@gmail.com>
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-16 12:20:21 -07:00
yousoph
2dfd08fdb3 fix(plugin-chart-echarts): clarify Tooltip sort by metric description for stacked charts (#42106)
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-16 10:58:43 -07:00
Hans Yu
661535e390 refactor: automatically load with engine/connection (#41980)
Co-authored-by: Evan Rusackas <evan@preset.io>
2026-07-16 10:31:23 -07:00
Mehmet Salih Yavuz
059f6944eb fix(migration): use non-deprecated sqlalchemy.orm.declarative_base (#42080) 2026-07-16 20:24:50 +03:00
Joe Li
3b7647eb6e fix(alerts): remove double border on InputNumber fields in report modal (#42090)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
2026-07-16 10:19:33 -07:00
dependabot[bot]
e84f870787 chore(deps-dev): bump @formatjs/intl-durationformat from 0.10.15 to 0.10.16 in /superset-frontend (#42105)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-07-16 02:45:07 -07:00
Joe Li
de300c70b9 test(app-root): close two blind spots in the subdirectory redirect tests (#42016)
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-15 23:36:47 -07:00
Greg Neighbors
2f7afe4b47 feat(mcp): deleted_state trash listing for list_charts and list_dashboards (#41855)
Co-authored-by: Greg Neighbors <gregneighbors@Gregs-Air-2.lan>
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
2026-07-15 23:36:04 -07:00
lohit geddam
aea4585c6d fix(embedded-sdk): handle malformed JWT refresh timing (#40490) 2026-07-15 23:35:21 -07:00
Evan Rusackas
f697a0c24d test(charts): assert drill-to-detail carries applied filters (#28562) (#41960)
Co-authored-by: Claude Code <noreply@anthropic.com>
2026-07-15 22:24:33 -07:00
Evan Rusackas
13d38a9cbd test(security): assert intended trailing-slash behavior of security API (#29934) (#41965)
Co-authored-by: Claude Code <noreply@anthropic.com>
2026-07-15 22:24:15 -07:00
yousoph
8603048518 fix(dashboard): block dependent filter from fetching until defaultToFirstItem parent selects (#40978)
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-15 22:01:56 -07:00
Mike Bridge
635b18103d fix(reports): null-guard execution against missing target (#39973)
Co-authored-by: Mike Bridge <michael.bridge@ext.preset.io>
Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Co-authored-by: Evan Rusackas <evan@preset.io>
2026-07-15 22:00:46 -07:00
gr33nak
d57569c54a feat(reports): add XLSX (Excel) attachments for Alerts & Reports (#41424)
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Co-authored-by: Martin Kominek <martin.kominek@stratox.cz>
Co-authored-by: kominma3 <127758497+kominma3@users.noreply.github.com>
2026-07-15 21:49:47 -07:00
Benedict Jin
409605de70 fix(plugin-chart-echarts): key Mixed Timeseries label maps by rendered series names (#41933) 2026-07-15 21:37:59 -07:00
Greg Neighbors
8ce6d42942 feat(mcp): add restore_chart and restore_dashboard tools (#41842)
Co-authored-by: Greg Neighbors <gregneighbors@Gregs-Air-2.lan>
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
2026-07-15 15:51:15 -07:00
Greg Neighbors
2bbb7d0638 feat(mcp): histogram and box plot chart type plugins (#41860)
Co-authored-by: Greg Neighbors <gregneighbors@Gregs-Air-2.lan>
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
2026-07-15 15:50:09 -07:00
Evan Rusackas
1b0c6aaed3 chore(a11y): enable jsx-a11y/click-events-have-key-events as error (#42009)
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-15 15:49:45 -07:00
dependabot[bot]
1f786f1949 chore(deps): bump websocket-driver from 0.7.4 to 0.7.5 in /superset-frontend (#42094)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-07-15 15:49:15 -07:00
Evan Rusackas
c540f782a3 fix(ci): remove Python 3.10 from the test matrix to unblock CI (#42058)
Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
2026-07-15 15:48:47 -07:00
Joe Li
6fe4655ba2 fix(semantic-layers): separate grain and offset time-axis resolvers (#42093)
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-15 15:33:52 -07:00
Elizabeth Thompson
689fc34ac2 fix: replace deprecated appbuilder.app with current_app in test_explore_redirect (#42086) 2026-07-15 15:05:15 -07:00
Elizabeth Thompson
e564389a01 fix(a11y): associate Name label with input in CssTemplateModal (#42081) 2026-07-15 15:04:33 -07:00
Elizabeth Thompson
da518d7a10 fix(a11y): associate Description label with TagModal input (#42034) 2026-07-15 15:03:40 -07:00
Joe Li
c6da740ce2 fix(app-root): restore legacy redirects for HEAD and the /superset app root (#42015)
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-15 13:13:46 -07:00
Beto Dealmeida
e28b259de0 fix(semantic-layers): expose time grains in Explore for SemanticView datasources (#41456) 2026-07-15 12:25:41 -07:00
Elizabeth Thompson
beb9d53687 fix(plugin-chart-echarts): use echarts 5.6.0 i18n export path for locale import (#42055)
Co-authored-by: Claude <noreply@anthropic.com>
2026-07-15 11:45:14 -07:00
Mike Bridge
90f9238f8a fix(charts): preserve time filter for expression axes (#42052)
Co-authored-by: Mike Bridge <michael.bridge@ext.preset.io>
2026-07-15 14:27:50 -03:00
Amin Ghadersohi
f38fff2a19 test(mcp): close systematic test-coverage gaps in mcp_service (#41924) 2026-07-15 12:30:04 -04:00
Amin Ghadersohi
cec9afb165 fix(mcp): await ctx.info calls in update_dashboard tool (#41920)
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
2026-07-15 12:28:44 -04:00
dependabot[bot]
753113d169 chore(deps-dev): bump trino from 0.337.0 to 0.338.0 (#42059)
Signed-off-by: dependabot[bot] <support@github.com>
Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-07-15 08:13:33 -07:00
dependabot[bot]
5c8e14e9dc chore(deps-dev): bump hdbcli from 2.28.21 to 2.29.23 (#42060)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-07-15 08:13:30 -07:00
dependabot[bot]
e66d58361a chore(deps-dev): update clickhouse-connect requirement from <2.0,>=1.1.1 to >=1.4.2,<2.0 (#42062)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-07-15 08:13:26 -07:00
dependabot[bot]
7bc1895050 chore(deps-dev): update pydoris requirement from <2.0.0,>=1.0.0 to >=1.2.0,<2.0.0 (#42063)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-07-15 08:13:22 -07:00
dependabot[bot]
071c431580 chore(deps-dev): bump @types/node from 26.1.0 to 26.1.1 in /superset-websocket (#42076)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-07-15 08:13:19 -07:00
dependabot[bot]
53c4603c8c chore(deps-dev): bump @types/node from 26.1.0 to 26.1.1 in /superset-frontend (#42077)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-07-15 08:13:15 -07:00
Mehmet Salih Yavuz
f010affbc2 fix(reports): paginate Slack recipient picker for large workspaces (#41998) 2026-07-15 18:00:53 +03:00
Amin Ghadersohi
6c2b7aceb5 fix(mcp): correct decorator order on query_dataset tool (#41925) 2026-07-15 10:42:11 -04:00
Daniel Vaz Gaspar
2af66b2c9b fix(async-queries): add Celery task expiry to GAQ async query tasks (#42084)
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-07-15 15:04:56 +01:00
Evan Rusackas
a540f56f5c fix(reports): raise typed executor-not-found error in alert-query path (#41486)
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-14 23:53:03 -07:00
aikawa-ohno
aa85455a5c fix(i18n): Update Japanese translations (#41984)
Co-authored-by: Amin Ghadersohi <amin.ghadersohi@gmail.com>
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-14 22:07:38 -07:00
dependabot[bot]
d80267d00b chore(deps): bump github/codeql-action/init from 4.36.3 to 4.37.0 (#42068)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-07-14 21:21:25 -07:00
yousoph
7953382d10 feat(submenu_export): Add export to png and pdf options for charts (#38535)
Co-authored-by: Ramiro Aquino Romero <ramiroaquinoromero@gmail.com>
Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-authored-by: Joe Li <joe@preset.io>
Co-authored-by: Claude <claude@anthropic.com>
2026-07-14 21:21:12 -07:00
dependabot[bot]
abafe195bf chore(deps): bump click from 8.4.1 to 8.4.2 (#42064)
Signed-off-by: dependabot[bot] <support@github.com>
Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-07-14 20:38:32 -07:00
dependabot[bot]
b4373f60b3 chore(deps-dev): bump fastmcp from 3.4.2 to 3.4.3 (#42065)
Signed-off-by: dependabot[bot] <support@github.com>
Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-07-14 20:38:30 -07:00
dependabot[bot]
6dcd95e14a chore(deps-dev): bump syntaqlite from 0.6.0 to 0.7.0 (#42067)
Signed-off-by: dependabot[bot] <support@github.com>
Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-07-14 20:38:27 -07:00
dependabot[bot]
ad8f2cf268 chore(deps): bump github/codeql-action/analyze from 4.36.3 to 4.37.0 (#42069)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-07-14 20:38:21 -07:00
Mafi
9db88203e1 fix(migration): use sqlalchemy.orm.declarative_base to avoid MovedIn20Warning (#42056)
Co-authored-by: Matt Fitzgerald <matt.fitzgerald@preset.io>
Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-07-14 21:08:43 -04:00
Joe Li
13121fcd58 fix(ci): skip unsupported React 19 Dependabot updates (#42047) 2026-07-15 08:03:14 +07:00
Evan Rusackas
be768efc0f fix(ci): make pre-commit fail closed instead of silently passing on an empty file list (#42044)
Co-authored-by: Amin Ghadersohi <amin.ghadersohi@gmail.com>
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-14 16:20:56 -07:00
Elizabeth Thompson
d68e84e731 fix(databricks): classify insufficient-permissions errors as 4xx (#41945)
Co-authored-by: Claude <noreply@anthropic.com>
2026-07-14 13:44:41 -07:00
Mafi
0a3c263606 fix(migration): strip metricSqlExpressions from ag_grid_table params (#41591)
Co-authored-by: Matt Fitzgerald <matt.fitzgerald@preset.io>
Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-07-14 16:42:32 -04:00
Amin Ghadersohi
bd9ba24266 fix(mcp): add AliasChoices to chart/dashboard/dataset request schemas (#41597)
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
2026-07-14 14:24:12 -04:00
Evan Rusackas
4446967d0f chore(lint): convert Storybook stories and shared helpers to function components (#39451)
Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-07-14 11:13:47 -07:00
Evan Rusackas
c04a0295ef fix(chart): keep query-context updates bound to the chart's datasource (#40955)
Co-authored-by: Claude Code <noreply@anthropic.com>
2026-07-14 11:13:33 -07:00
Mike Bridge
e3a0d0e41e fix(versioning): isolate action metadata writes (#41943)
Co-authored-by: Mike Bridge <michael.bridge@ext.preset.io>
2026-07-14 11:10:12 -07:00
Hans Yu
256cc71c87 refactor: import from sqlalchemy.orm (#41981) 2026-07-14 10:29:18 -07:00
JUST.in DO IT
4b07d43050 fix(sqllab): collapse left sidebar shows compact db selector in top bar (#41898) 2026-07-14 09:01:30 -07:00
dependabot[bot]
ef3a9e925e chore(deps-dev): bump @typescript-eslint/eslint-plugin from 8.62.0 to 8.63.0 in /superset-websocket (#42020)
Signed-off-by: dependabot[bot] <support@github.com>
Signed-off-by: hainenber <dotronghai96@gmail.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Evan <evan@preset.io>
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
Co-authored-by: hainenber <dotronghai96@gmail.com>
2026-07-14 08:58:58 -07:00
Mehmet Salih Yavuz
76bb5f8e69 fix(dashboard): prevent native filter loss when saving chart customizations (#42032)
Co-authored-by: Enzo Martellucci <52219496+EnxDev@users.noreply.github.com>
2026-07-14 18:30:12 +03:00
dependabot[bot]
1f41899deb chore(deps-dev): bump @typescript-eslint/eslint-plugin from 8.62.1 to 8.63.0 in /superset-frontend (#42023)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-07-14 21:35:48 +07:00
Evan Rusackas
c4bee525ea fix(ci): correct mismatched version comment on actions/setup-node pin (#42036)
Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
2026-07-14 21:32:50 +07:00
dependabot[bot]
0dcf67fa27 chore(deps-dev): bump typescript-eslint from 8.62.1 to 8.63.0 in /docs (#42024)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-07-14 21:31:49 +07:00
Evan Rusackas
4e10a96253 chore(ci): correct actions/setup-node version comment to v6.4.0 (#42038)
Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
2026-07-14 21:31:08 +07:00
Evan Rusackas
24959d1656 fix(ci): correct setup-node version comment in tech-debt.yml (#42037) 2026-07-14 21:30:47 +07:00
Luiz Otavio
7075e9f253 fix(event-log): match embedded routes without trailing slash in logger middleware (#42005)
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
Co-authored-by: Michael S. Molina <70410625+michael-s-molina@users.noreply.github.com>
2026-07-14 11:12:50 -03:00
Evan Rusackas
d5e75c4813 fix(ci): correct setup-node version comment in tag-release.yml (#42039) 2026-07-14 19:43:13 +07:00
dependabot[bot]
cc32d16e0c chore(deps-dev): bump @typescript-eslint/parser from 8.62.0 to 8.63.0 in /superset-websocket (#42021)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-07-14 05:14:28 -07:00
dependabot[bot]
258f4c035b chore(deps-dev): bump typescript-eslint from 8.62.1 to 8.63.0 in /superset-websocket (#42022)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-07-14 05:14:25 -07:00
dependabot[bot]
d49365757c chore(deps-dev): bump @typescript-eslint/parser from 8.61.0 to 8.63.0 in /docs (#42025)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-07-14 05:14:18 -07:00
dependabot[bot]
68881a60ca chore(deps): bump caniuse-lite from 1.0.30001802 to 1.0.30001803 in /docs (#42026)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-07-14 05:14:14 -07:00
dependabot[bot]
41efdb3082 chore(deps-dev): bump webpack-sources from 3.5.0 to 3.5.1 in /superset-frontend (#42027)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-07-14 05:14:11 -07:00
dependabot[bot]
e86dcf7b82 chore(deps): bump actions/setup-java from 5.4.0 to 5.5.0 (#42028)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-07-14 05:14:08 -07:00
dependabot[bot]
35d05cc278 chore(deps-dev): bump @swc/plugin-emotion from 14.14.1 to 14.15.0 in /superset-frontend (#42029)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-07-14 05:14:04 -07:00
dependabot[bot]
115ce12ff7 chore(deps-dev): bump @typescript-eslint/parser from 8.62.1 to 8.63.0 in /superset-frontend (#42030)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-07-14 05:14:01 -07:00
dependabot[bot]
ccfccdf237 chore(deps-dev): bump oxlint from 1.72.0 to 1.73.0 in /superset-frontend (#42031)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-07-14 05:13:56 -07:00
Antonio Rivero
42523f8cc4 fix(async-queries): back off polling when async event requests keep failing (#42012) 2026-07-14 12:57:45 +02:00
Hans Yu
e165762bb7 refactor: begin transaction to automatically commit (#41979)
Co-authored-by: Evan Rusackas <evan@preset.io>
2026-07-13 22:45:40 -07:00
Hans Yu
8afad27c84 chore: convert warning to error if parameters not passed as collection (#41977) 2026-07-13 21:25:23 -07:00
Evan Rusackas
e420812eb7 test(filters): guard BIGINT filter value precision (#27510) (#41963)
Co-authored-by: Claude Code <noreply@anthropic.com>
2026-07-13 21:20:38 -07:00
Mike Bridge
993a43396a fix: restore all-files pre-commit checks (#42014)
Co-authored-by: Mike Bridge <michael.bridge@ext.preset.io>
Co-authored-by: Joe Li <joe@preset.io>
2026-07-13 17:35:55 -07:00
Joe Li
a2a71760ed fix(e2e): repair master Playwright smoke tests (#42013) 2026-07-13 17:13:35 -07:00
Evan Rusackas
836dce9b05 fix(i18n): reset embedded start guard and align menu error handling (#41491)
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-13 16:03:53 -07:00
Evan Rusackas
2857b29ab9 test(sqla): assert simple metric quotes columns requiring quoting (#30637) (#41961)
Co-authored-by: Claude Code <noreply@anthropic.com>
2026-07-13 15:58:34 -07:00
Evan Rusackas
3c648ca264 fix(swagger): support URL prefix via APPLICATION_ROOT in OpenAPI and Swagger UI (#40908)
Co-authored-by: Claude Code <noreply@anthropic.com>
Co-authored-by: rsbhatti <rajvindrasinghbhatti12@gmail.com>
2026-07-13 15:47:09 -07:00
Evan Rusackas
25ce83cc58 fix(dashboard): apply auto-refresh interval in standalone mode (#41740)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
2026-07-13 15:46:34 -07:00
Elizabeth Thompson
ce8219672e fix(a11y): add accessible labels to EmbedCodeContent height/width inputs (#41995) 2026-07-13 15:05:28 -07:00
Elizabeth Thompson
3e957b63d4 fix(a11y): make CopyToClipboard keyboard-operable for custom copyNode elements (#41958) 2026-07-13 15:04:44 -07:00
Elizabeth Thompson
9818da445a fix(a11y): add aria-label to cross-filter search icon (#41619) 2026-07-13 15:03:08 -07:00
yousoph
8262aa7d6b fix(explore): restore drag-and-drop reordering broken by @dnd-kit migration (#41637)
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-13 14:25:15 -07:00
innovark
d4a31d1d78 fix: add subdirectory deployment support for brandSpinnerUrl (#37523)
Co-authored-by: Evan Rusackas <evan@preset.io>
2026-07-13 14:01:14 -07:00
Evan Rusackas
18f1dd394b test(security): prove Drill By access does not require can_explore (#27900) (#41967)
Co-authored-by: Claude Code <noreply@anthropic.com>
2026-07-13 12:05:16 -07:00
Amin Ghadersohi
62ccdfacc2 fix(mcp): make list-item truncation cap configurable in get_dashboard_info (#41698) 2026-07-13 14:46:10 -04:00
Evan Rusackas
c5131bff47 chore(a11y): enable 9 more jsx-a11y oxlint rules as errors (#42006)
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-13 11:39:13 -07:00
Hans Yu
521e51429a chore: as_declarative() warnings are irrelevant (#41982) 2026-07-13 11:37:45 -07:00
Durgaprasad M L
64df96be00 fix(nvd3): invoke shiftMetric() in TimePivot formDataOverrides (#41916) 2026-07-13 10:44:50 -07:00
Hans Yu
d43a0d7633 chore: sqlalchemy.database package warnings are irrelevant (#41978) 2026-07-13 10:41:41 -07:00
Amin Ghadersohi
873566c827 fix(mcp): stop masking dashboard lookup DB errors as not-found (#41919) 2026-07-13 13:32:35 -04:00
Evan Rusackas
e063f5093c feat(frontend): upgrade Ant Design from v5 to v6 (#41636)
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
Co-authored-by: Enzo Martellucci <52219496+EnxDev@users.noreply.github.com>
2026-07-13 10:13:30 -07:00
Evan Rusackas
1627fab741 fix(i18n): make every catalog compile clean, canonicalize, fix ja plurals (#41828)
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-13 10:08:03 -07:00
Enzo Martellucci
5dd060b714 fix(chart-echarts): disable animation for report screenshots so time-shift lines render fully (#42003) 2026-07-13 19:02:45 +02:00
Hans Yu
68ebc22e1e refactor: replace Engine.execute() with Connection.execute() (#41917) 2026-07-13 09:40:33 -07:00
Enzo Martellucci
8f75f1a353 fix(dashboard): deleted Display Control reappears after Apply Filters (#41999) 2026-07-13 16:25:47 +02:00
Mehmet Salih Yavuz
2fac66d1a3 feat(mcp): add update_dataset_metric tool for editing saved dataset metrics (#40975) 2026-07-13 15:44:57 +03:00
Luiz Otavio
029d49539b fix(event-log): match embedded routes precisely in logger middleware (#41942) 2026-07-13 08:46:23 -03:00
dependabot[bot]
3c6982252b chore(deps-dev): bump webpack from 5.108.3 to 5.108.4 in /superset-frontend (#41989)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-07-13 18:08:48 +07:00
dependabot[bot]
1c7a3f395f chore(deps): bump fs-extra from 11.3.2 to 11.3.6 in /superset-frontend (#41990)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-07-13 18:08:05 +07:00
dependabot[bot]
f7b7bad9a8 chore(deps-dev): bump tsx from 4.22.5 to 4.23.0 in /superset-frontend (#41985)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-07-13 03:26:24 -07:00
dependabot[bot]
0cf217cdea chore(deps-dev): bump vitest from 4.1.9 to 4.1.10 in /superset-websocket (#41986)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-07-13 03:26:21 -07:00
dependabot[bot]
96bf1a1e4c chore(deps): bump caniuse-lite from 1.0.30001800 to 1.0.30001802 in /docs (#41987)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-07-13 03:26:18 -07:00
dependabot[bot]
9180ace1dd chore(deps): bump actions/labeler from 6.1.0 to 6.2.0 (#41988)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-07-13 03:26:15 -07:00
dependabot[bot]
bb5d7dbb17 chore(deps): bump immer from 11.1.9 to 11.1.11 in /superset-frontend (#41991)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-07-13 03:26:12 -07:00
dependabot[bot]
73925922a9 chore(deps): bump react-arborist from 3.12.0 to 3.13.2 in /superset-frontend (#41992)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-07-13 03:26:09 -07:00
dependabot[bot]
8f339545ad chore(deps-dev): bump baseline-browser-mapping from 2.10.41 to 2.10.42 in /superset-frontend (#41993)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-07-13 03:26:06 -07:00
Evan Rusackas
c762b75ddc chore(lint): upgrade no-unused-vars rule from warn to error (#41132)
Co-authored-by: Superset Dev <dev@superset.apache.org>
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
2026-07-13 03:11:09 -07:00
Evan Rusackas
c0e5f5226d fix(explore): let chart owners overwrite when owners come through as objects (#41352)
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-13 03:10:00 -07:00
dependabot[bot]
d380663e71 chore(deps-dev): bump syntaqlite from 0.4.2 to 0.6.0 (#41952)
Signed-off-by: dependabot[bot] <support@github.com>
Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-07-12 20:17:34 -07:00
dependabot[bot]
98c3ec7a71 chore(deps): bump sqlglot from 30.8.0 to 30.12.0 (#41948)
Signed-off-by: dependabot[bot] <support@github.com>
Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Evan <evan@preset.io>
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-12 16:20:07 -07:00
dependabot[bot]
12f28ce235 chore(deps): bump holidays from 0.82 to 0.99 (#41949)
Signed-off-by: dependabot[bot] <support@github.com>
Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-07-12 16:19:51 -07:00
Evan Rusackas
e403d9b074 chore(lint): convert legacy plugin chart components to function components (#39452)
Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-authored-by: Enzo Martellucci <52219496+EnxDev@users.noreply.github.com>
2026-07-13 00:37:46 +02:00
isaac-jaynes-imperva
0ca51d9796 fix(Database Connection Form): Added validation to db credential input (#37919)
Co-authored-by: codeant-ai-for-open-source[bot] <244253245+codeant-ai-for-open-source[bot]@users.noreply.github.com>
Co-authored-by: Evan Rusackas <evan@rusackas.com>
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-12 09:36:41 -07:00
dependabot[bot]
db1912c6d9 chore(deps): bump cachetools from 6.2.1 to 7.1.4 (#41947)
Signed-off-by: dependabot[bot] <support@github.com>
Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-07-12 09:36:28 -07:00
Evan Rusackas
2a18a556b0 chore(frontend): lint Emotion CSS-in-JS with Stylelint (#41871)
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
Co-authored-by: Đỗ Trọng Hải <41283691+hainenber@users.noreply.github.com>
2026-07-12 08:45:02 -07:00
Evan Rusackas
a1d1d69f5e ci: enforce SQLAlchemy 2.0 deprecation warnings in unit-test CI (#41915)
Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
2026-07-12 08:43:09 -07:00
Moussa Leblouba
13c5a32402 fix(tests): correct stale TYPE_CHECKING import path in base_data_loader (#41972)
Co-authored-by: Moussa Leblouba <mlablouba@gmail.com>
2026-07-12 20:26:11 +07:00
Evan Rusackas
958d1ab256 test(rls): assert dataset search returns all mask matches (#29707) (#41968)
Co-authored-by: Claude Code <noreply@anthropic.com>
2026-07-12 20:23:29 +07:00
Evan Rusackas
b8c0171976 test(rls): assert related/subjects honors search filter for roles (#31466) (#41969)
Co-authored-by: Claude Code <noreply@anthropic.com>
2026-07-12 20:22:39 +07:00
Evan Rusackas
49dc0acd82 fix(pre-commit): prettier hook drops first file and never batches (#41944)
Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
2026-07-12 11:17:27 +07:00
dependabot[bot]
5e6b29d1a3 chore(deps-dev): bump sqlalchemy-hana from 0.4.0 to 3.0.3 (#41953)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-11 16:59:46 -07:00
Anatolii
189f258e0c fix(drill): coerce temporal drill filter values (#40180)
Co-authored-by: Claude Opus 4.7 <noreply@anthropic.com>
Co-authored-by: Superset Dev <dev@superset.apache.org>
2026-07-11 15:24:51 -07:00
yousoph
f5deda7864 fix(dataset): copy catalog field when duplicating a BigQuery dataset (#41106)
Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-authored-by: Evan Rusackas <evan@rusackas.com>
2026-07-11 15:24:21 -07:00
Elizabeth Thompson
b237aefb1e fix(a11y): add aria-label to RightMenu documentation and bug-report icon links (#41903) 2026-07-11 15:03:24 -07:00
Elizabeth Thompson
0ecf34d80e fix(a11y): add aria-label to ViewportControl text inputs (#41931) 2026-07-11 15:02:44 -07:00
Dhimas Ardinata
a03cabffa7 perf(csv): avoid regex in CSV value escaping (#40195)
Co-authored-by: Superset Dev <dev@superset.apache.org>
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-11 11:52:50 -07:00
Krupa Vadher
e852147182 test: add edge-case tests for datetime_to_epoch function (#39404)
Co-authored-by: Evan <evan@preset.io>
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
Co-authored-by: Evan Rusackas <evan@rusackas.com>
2026-07-11 11:51:46 -07:00
dependabot[bot]
df209cedbf chore(deps-dev): update sqlalchemy-firebird requirement from <2.2,>=0.7.0 to >=0.8.0,<2.2 (#41950)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-07-11 10:51:36 -07:00
Mike Bridge
b641008da6 fix(versioning): preserve complete multi-flush history (#41940)
Co-authored-by: Mike Bridge <michael.bridge@ext.preset.io>
2026-07-11 10:50:48 -07:00
Luis Carbonell
678fcba8b4 feat(helm): Superset 6 structured config schema with deprecation path (#41777) 2026-07-11 10:50:20 -07:00
Greg Neighbors
5c12f216d5 feat(mcp): add delete_chart and delete_dashboard tools (#41472)
Co-authored-by: Greg Neighbors <gregneighbors@Gregs-Air-2.lan>
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-11 10:47:27 -07:00
Ujjwal Jain
7a752d1c22 fix(dashboard): restore arrow key navigation in modal inputs opened from dropdown (#37978) 2026-07-11 10:39:28 -07:00
dependabot[bot]
51ce2b11ad chore(deps-dev): update impyla requirement from <0.23,>0.16.2 to >=0.24.0,<0.25 (#41951)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-07-11 05:18:31 -07:00
Greg Neighbors
3818152191 fix(mcp): user/role tools demanded a permission FAB never registers (#41858)
Co-authored-by: Greg Neighbors <gregneighbors@Gregs-Air-2.lan>
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
2026-07-10 17:36:54 -07:00
Mike Bridge
4dde4d2c70 fix(versioning): make baseline capture atomic (#41941)
Co-authored-by: Mike Bridge <michael.bridge@ext.preset.io>
2026-07-10 16:12:32 -07:00
Yinka Metrics
35712ff977 fix(sqllab): show truncated table list warning (#41617)
Co-authored-by: Evan Rusackas <evan@preset.io>
2026-07-10 16:10:20 -07:00
dependabot[bot]
bc80d138fd chore(deps): bump slack-sdk from 3.42.0 to 3.43.0 (#41893)
Signed-off-by: dependabot[bot] <support@github.com>
Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-07-10 14:59:10 -07:00
Amin Ghadersohi
bd61e09b4e fix(mcp): bind Big Number chart to a temporal column for dashboard time filters (#41895) 2026-07-10 16:48:09 -04:00
Beto Dealmeida
5b8e94de26 feat(semantic layers): dashboard filters (#40475) 2026-07-10 12:18:51 -07:00
Evan Rusackas
a6ce2fd76b fix(mcp): patch list_metrics DAOs via module object to avoid Python 3.10 mock resolution bug (#41881)
Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
2026-07-10 07:29:29 -07:00
Ville Brofeldt
2112fbd379 feat(subjects): add read-only Subject REST API and DAO (#41897) 2026-07-10 04:29:34 -07:00
Mehmet Salih Yavuz
1631d52b65 fix(CollectionControl): a11y drag handle and vertical axis lock (#39863)
Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Co-authored-by: Evan Rusackas <evan@preset.io>
Co-authored-by: Joe Li <joe@preset.io>
2026-07-10 11:24:25 +02:00
dependabot[bot]
1ddc3e45d7 chore(deps): bump @deck.gl/mapbox from 9.3.5 to 9.3.6 in /superset-frontend (#41926)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-07-10 02:16:39 -07:00
dependabot[bot]
2a3d65f61a chore(deps): bump docker/login-action from 4.3.0 to 4.4.0 (#41927)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-07-10 02:16:35 -07:00
dependabot[bot]
169c05f8ce chore(deps-dev): bump tsx from 4.22.4 to 4.22.5 in /superset-frontend (#41928)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-07-10 02:16:31 -07:00
dependabot[bot]
38707866c0 chore(deps-dev): bump baseline-browser-mapping from 2.10.40 to 2.10.41 in /superset-frontend (#41929)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-07-10 02:16:27 -07:00
Joe Li
e2ba378b69 fix(sqllab): redirect legacy /superset/sql/<db_id>/ deep links (#41759)
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-10 01:16:59 -07:00
schoel-bis
597c9c6fea fix: do not require recaptcha public key for LDAP authentication (#37009)
Co-authored-by: Evan Rusackas <evan@preset.io>
Co-authored-by: Evan Rusackas <evan@rusackas.com>
Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
2026-07-10 01:07:01 -07:00
Evan Rusackas
be600f78fc chore(deps): upgrade ag-grid to 36.0.0 (#41882)
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-10 12:33:03 +07:00
dependabot[bot]
ea76d0d785 chore(deps): bump cookie from 1.1.1 to 2.0.1 in /superset-websocket (#41874)
Signed-off-by: dependabot[bot] <support@github.com>
Signed-off-by: hainenber <dotronghai96@gmail.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Đỗ Trọng Hải <41283691+hainenber@users.noreply.github.com>
Co-authored-by: hainenber <dotronghai96@gmail.com>
2026-07-10 12:31:58 +07:00
Evan Rusackas
0ff52d46e0 fix(docs): correct broken In the Wild logo for Région Hauts-de-France (#41918)
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-10 10:14:08 +07:00
Mike Bridge
a899e1db41 feat(versioning): entity-version base infrastructure (gated off, dark launch) (#41176)
Co-authored-by: Mike Bridge <michael.bridge@ext.preset.io>
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-09 19:57:05 -07:00
Evan Rusackas
1bfb7c60e7 fix(ci): repair stale mock target breaking Python-Unit on master (#41911) 2026-07-10 09:31:50 +07:00
carlosribeiro-plaid
2380d576d5 fix(cli): avoid DetachedInstanceError in compute-thumbnails (#41530)
Co-authored-by: Evan Rusackas <evan@preset.io>
2026-07-09 19:26:41 -07:00
abderrahmen bejaoui
43bfc85941 fix(db): validate schema and table cache timeout to reject negative values (#38490)
Co-authored-by: abderbj <115119179+abderbj@users.noreply.github.com>
Co-authored-by: Evan Rusackas <evan@preset.io>
2026-07-09 18:19:00 -07:00
Rahul Shelke
bea5f8d4a4 fix(dashboard): stagger manual refresh to prevent worker saturation (#40512)
Signed-off-by: shelkesays <674591+shelkesays@users.noreply.github.com>
2026-07-09 17:53:04 -07:00
Greg Neighbors
baff395d98 feat(mcp): add list_themes, get_theme_info, and create_theme tools (#41497)
Co-authored-by: Greg Neighbors <gregneighbors@Gregs-Air-2.lan>
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-09 17:51:51 -07:00
Gabriel Torres Ruiz
1fd43ffe52 feat(mcp): scope embedded-guest data reads to the token's dashboards (#41753) 2026-07-09 14:58:01 -03:00
dependabot[bot]
afc7dbeff2 chore(deps-dev): update teradatasql requirement from >=16.20.0.23 to >=20.0.0.62 (#41886)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-07-09 10:17:57 -07:00
dependabot[bot]
c1d4401d29 chore(deps): bump github/codeql-action/init from 4.36.2 to 4.36.3 (#41899)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-07-09 10:17:45 -07:00
dependabot[bot]
a4418a27c5 chore(deps): bump github/codeql-action/analyze from 4.36.2 to 4.36.3 (#41900)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-07-09 09:34:41 -07:00
dependabot[bot]
30e1ab3203 chore(deps): bump docker/login-action from 4.2.0 to 4.3.0 (#41901)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-07-09 09:34:37 -07:00
dependabot[bot]
3dd5e69714 chore(deps-dev): bump @types/node from 26.0.1 to 26.1.0 in /superset-websocket (#41887)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-07-09 12:56:24 +07:00
Durgaprasad M L
227b3a48c1 fix(chart-data): return 403 for SupersetSecurityException in chart data API (#41865) 2026-07-09 08:21:36 +07:00
madhushreeag
74c3f3b66b feat(theme): make default theme changeable through config.py (#41007)
Co-authored-by: madhushree agarwal <madhushree_agarwal@apple.com>
2026-07-08 15:38:21 -07:00
madhushreeag
ea5950558b feat(dashboard): add vertical alignment guides and height indicator when resizing charts (#41079)
Co-authored-by: madhushree agarwal <madhushree_agarwal@apple.com>
2026-07-08 15:02:56 -07:00
dependabot[bot]
3a10f39c20 chore(deps-dev): bump pytest from 7.4.4 to 9.1.1 (#41888)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Evan Rusackas <evan@rusackas.com>
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-08 13:48:31 -07:00
dependabot[bot]
a0d9e82c60 chore(deps): bump celery from 5.5.2 to 5.6.3 (#41892)
Signed-off-by: dependabot[bot] <support@github.com>
Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-07-08 13:16:30 -07:00
dependabot[bot]
15f8b8e9b4 chore(deps): bump immer from 11.1.8 to 11.1.9 in /superset-frontend (#41894)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-07-08 12:26:28 -07:00
dependabot[bot]
31351eb52a chore(deps-dev): bump @types/node from 26.0.1 to 26.1.0 in /superset-frontend (#41896)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-07-08 12:26:10 -07:00
dependabot[bot]
8e549e4975 chore(deps-dev): update playwright requirement from <2,>=1.60.0 to >=1.61.0,<2 (#41890)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-07-08 12:11:45 -07:00
Kevin Lan
e65b2c49d7 fix(marshmallow): add compatibility layer for Flask-AppBuilder with marshmallow 4.x (#35920)
Co-authored-by: FLAME <xaustin03@gmail.com>
Co-authored-by: Eyang0612 <eddieyang0612@gmail.com>
2026-07-08 12:09:50 -07:00
Đỗ Trọng Hải
2c8cdbbd9b chore(dependabot): unify npm Dependabot config used for multi-workspace superset-frontend (#41586) 2026-07-09 01:15:15 +07:00
Đỗ Trọng Hải
83716cb8c0 build(websocket): migrate to ESM (#41680) 2026-07-09 01:14:44 +07:00
Ville Brofeldt
33f0fc93ed feat: introduce Subject model and entity editors/viewers (#38831) 2026-07-08 11:00:03 -07:00
Evan Rusackas
01e872c105 refactor: remove the deprecated AVOID_COLORS_COLLISION feature flag (#41800)
Co-authored-by: Claude Code <noreply@anthropic.com>
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
2026-07-08 09:48:32 -07:00
Daniel
34d4966f8b fix(dataset): resolve duplicate virtual dataset validation error (#37932)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
2026-07-08 08:27:13 -07:00
Beto Dealmeida
001d6c9692 fix(semantic-layers): apply time-comparison offset to TEMPORAL_RANGE filters (#41556) 2026-07-08 08:25:42 -07:00
Evan Rusackas
e333135a0d feat(i18n): expose the six newly backfilled locales (#41827)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Co-authored-by: Đỗ Trọng Hải <41283691+hainenber@users.noreply.github.com>
2026-07-08 08:25:14 -07:00
Jean Pommier
dc5c5af467 docs: Add geOrchestra project and pi-geosolutions to In the Wild (#41801) 2026-07-08 08:24:03 -07:00
Evan Rusackas
deefe897f1 chore(frontend): remove orphaned eslint-plugin-cypress devDependency (#41866)
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-08 21:52:54 +07:00
Elizabeth Thompson
49ed206381 fix(a11y): add aria-label to dependency-list remove icon (#41878) 2026-07-08 21:36:52 +07:00
Alexandru Soare
8a599d70b4 fix(explore): admin creating new chart crashes on save (#41880) 2026-07-08 16:57:17 +03:00
Enzo Martellucci
d81b135a04 fix(explore): render DragOverlay so dragged metric/column is visible (#41879) 2026-07-08 14:49:45 +02:00
dependabot[bot]
211bcbc635 chore(deps-dev): bump @swc/plugin-emotion from 14.14.0 to 14.14.1 in /superset-frontend (#41875)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-07-08 04:40:28 -07:00
Alexandru Soare
3b1abf8260 feat(Icons): adding Layout icon (#41853) 2026-07-08 12:25:51 +03:00
yousoph
01cd215202 fix(explore): default Save As for new charts in save dialog (#41314)
Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-07-08 00:44:34 -07:00
jaehoon
2dab31c130 fix(mcp): serialize FAB role permissions (#41404)
Co-authored-by: jaehoon.kim <jaehoon.kim@42dot.ai>
2026-07-07 23:27:30 -07:00
Paul Spitzner
f74de0eb6c fix: Show metric in the default tooltip of deck.gl GeoJson Polygon chart (#41341)
Co-authored-by: Damian Pendrak <dpendrak@gmail.com>
2026-07-07 23:22:15 -07:00
Shaitan
206155f986 fix(explore): apply per-datasource access check on the legacy explore view (#41425)
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-07 23:08:17 -07:00
innovark
f6d03e4a68 fix(clickhouse): time filters use server timezone for toDateTime literals (#41579) 2026-07-07 23:07:46 -07:00
Maxime Beauchemin
0efcd54250 fix(charts): fix time comparison crash when offsets share a numeric prefix (#39344)
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-07-07 17:46:30 -07:00
Jacobdavis12
3fa000ba0b fix(chart): allow custom date format for week range in Big Number with Trendline (#35752) 2026-07-07 17:46:06 -07:00
Akshat Sinha
9617155289 fix(utils): urls preserve query params (#35936) 2026-07-07 17:11:19 -07:00
Nicolas
e49945fc2f fix(table charts v1 & v2): pagination, translation and search by (#36881)
Co-authored-by: Nicolas <n.berry@urios.com>
2026-07-07 17:10:44 -07:00
JUST.in DO IT
866f8c51ee fix(sqllab): invalid height in ResultTable (#37408) 2026-07-07 17:09:45 -07:00
abdullah reveha
98fc857613 feat(cache): warm up native filter option queries (#41531)
Co-authored-by: Abdullah Sahin <you@example.comclear>
2026-07-07 17:08:40 -07:00
Jay Masiwal
ddca50c820 fix(ui): improve getPopupContainer to avoid double scrollbar without breaking modal behavior (#38792) 2026-07-07 17:04:31 -07:00
mkramer5454
c253b68d7b fix(chart): fix Chart Time Grain option not working if Dataset is not saved (#38766)
Co-authored-by: Matthew Kramer <matthewkramer@Matthews-MacBook-Pro.local>
Co-authored-by: Matthew Kramer <matthewkramer@Matthews-MacBook-Pro-2.local>
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-07 17:00:40 -07:00
Jeremy
050acc6c30 fix(databend): support configuring Databend via individual parameters (#41513) 2026-07-07 16:58:33 -07:00
abdullah reveha
7b95d8b17c feat(alerts): add user lookup for email recipients (#41338)
Co-authored-by: Abdullah Sahin <you@example.comclear>
2026-07-07 16:57:35 -07:00
innovark
0d9533fdf8 fix(reports): export server-paginated table row limits (#41103) 2026-07-07 16:57:11 -07:00
Open Loop
6b1311a6c7 fix(sqllab): correct verticalalign CSS typo in SqlEditorTabHeader icon styles (#41052)
Signed-off-by: albraa911sa-lgtm <albraa911sa@gmail.com>
2026-07-07 16:48:31 -07:00
dependabot[bot]
f1c0a461fd chore(deps): bump react-markdown from 9.0.7 to 10.1.0 in /superset-frontend/packages/superset-ui-core (#41805)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Evan <evan@preset.io>
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-07 16:46:07 -07:00
SBIN2010
ef10501e6b feat(table v2): add tooltip to table header (#39287) 2026-07-07 16:44:50 -07:00
jesperct
17ae25b8d4 fix(explore): resolve adhoc Custom SQL dimension in Bubble chart (#41861) 2026-07-07 16:44:24 -07:00
Đỗ Trọng Hải
2a77c0156a fix(frontend/setup): sanitize returned client error message when shown as HTML content (#41768)
Signed-off-by: hainenber <dotronghai96@gmail.com>
2026-07-07 16:44:04 -07:00
goingforstudying-ctrl
8f4c411765 fix(mcp): coerce Role ORM objects to role names in UserInfo schema (#40746)
Signed-off-by: goingforstudying-ctrl <goingforstudying-ctrl@users.noreply.github.com>
Co-authored-by: goingforstudying-ctrl <goingforstudying@users.noreply.github.com>
Co-authored-by: goingforstudying-ctrl <goingforstudying-ctrl@users.noreply.github.com>
Co-authored-by: Evan <evan@preset.io>
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-07 15:35:27 -07:00
dependabot[bot]
0936160633 chore(deps-dev): bump eslint-plugin-cypress from 3.6.0 to 6.4.2 in /superset-frontend (#41849)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-07-07 15:14:33 -07:00
Elizabeth Thompson
d9e1f34527 fix(a11y): add aria-label to notification method remove button (#41850) 2026-07-07 15:01:30 -07:00
dependabot[bot]
4038c9d1e6 chore(deps-dev): bump google-cloud-bigquery from 3.27.0 to 3.42.1 (#41807)
Signed-off-by: dependabot[bot] <support@github.com>
Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-07-07 14:13:28 -07:00
dependabot[bot]
8108496e2a chore(deps-dev): bump @types/d3-scale from 2.2.10 to 4.0.9 in /superset-frontend/packages/superset-ui-core (#41318)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Evan <evan@preset.io>
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
Co-authored-by: Evan Rusackas <evan@rusackas.com>
2026-07-07 11:36:45 -07:00
yousoph
098b95560d fix(oauth2): retrigger queries for unsaved charts and schema loading after OAuth2 redirect (#41101) 2026-07-07 11:33:11 -07:00
dependabot[bot]
6edbf425f7 chore(deps-dev): update sqlalchemy-ocient requirement from >=1.0.0 to >=3.0.0 (#41806)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Evan Rusackas <evan@rusackas.com>
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-07 11:28:13 -07:00
dependabot[bot]
8e98ae701b chore(deps): bump cryptography from 48.0.1 to 49.0.0 (#41811)
Signed-off-by: dependabot[bot] <support@github.com>
Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-07-07 11:07:52 -07:00
dependabot[bot]
054be4d45e chore(deps-dev): bump eslint-plugin-storybook from 10.4.5 to 10.4.6 in /superset-frontend (#41360)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-07-07 10:24:46 -07:00
Amin Ghadersohi
fbc24959ab feat(mcp): add semantic layer MCP tools (list_metrics, get_table, get_compatible_dimensions, get_compatible_metrics) (#41611) 2026-07-07 12:51:35 -04:00
Jean Massucatto
fe7d9b4724 fix(sqllab): reflect query history deletion without page refresh (#41019)
Co-authored-by: Evan Rusackas <evan@rusackas.com>
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
2026-07-07 09:40:33 -07:00
Evan Rusackas
5f27f88e73 test(preset-chart-deckgl): prove legend clicks no longer scroll to top (#41831)
Co-authored-by: Claude Code <noreply@anthropic.com>
2026-07-07 09:34:14 -07:00
Mike Bridge
04f8b700d7 feat(datasets): soft-delete and restore (#40130)
Co-authored-by: Mike Bridge <michael.bridge@ext.preset.io>
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
2026-07-07 08:57:08 -07:00
Evan Rusackas
a01a4ae511 test(superset-ui-core): prove angle-bracketed non-HTML values render as text (#34082) (#41829)
Co-authored-by: Claude Code <noreply@anthropic.com>
2026-07-07 08:55:39 -07:00
Evan Rusackas
0d9b3f3b05 test(dashboard): prove filters with defaults apply without touching every filter (#41841)
Co-authored-by: Claude Code <noreply@anthropic.com>
2026-07-07 08:55:20 -07:00
Evan Rusackas
51a171f821 test(dashboard): prove BigInt column values no longer break native filter config (#41840)
Co-authored-by: Claude Code <noreply@anthropic.com>
2026-07-07 08:55:00 -07:00
Evan Rusackas
19c982d8d3 test(async-queries): prove OAuth2RedirectError survives async chart queries (#41839)
Co-authored-by: Claude Code <noreply@anthropic.com>
2026-07-07 08:54:40 -07:00
Evan Rusackas
973366d30b test(models): prove owner association tables reject duplicate rows (#41837)
Co-authored-by: Claude Code <noreply@anthropic.com>
2026-07-07 08:54:08 -07:00
Evan Rusackas
7b0969131f test(sql): prove ClickHouse parametric aggregates parse cleanly (#37285) (#41836)
Co-authored-by: Claude Code <noreply@anthropic.com>
2026-07-07 08:53:49 -07:00
Evan Rusackas
00a9546de9 test(sql): prove multi-space column names no longer trip subquery validation (#41835)
Co-authored-by: Claude Code <noreply@anthropic.com>
2026-07-07 08:53:20 -07:00
Evan Rusackas
de5a31a2cf test(sql): prove Oracle GROUP BY is no longer rewritten to ordinals (#35414) (#41834)
Co-authored-by: Claude Code <noreply@anthropic.com>
2026-07-07 08:53:05 -07:00
Evan Rusackas
af058ccecb test(plugin-chart-echarts): prove user-selected plain legend type is honored (#39540) (#41833)
Co-authored-by: Claude Code <noreply@anthropic.com>
2026-07-07 08:52:49 -07:00
Evan Rusackas
d0b42d8c19 test(dashboard): prove activeTabs from permalinks selects tab content (#41832)
Co-authored-by: Claude Code <noreply@anthropic.com>
2026-07-07 08:52:33 -07:00
Evan Rusackas
f0e25fb978 test(preset-chart-deckgl): prove ctrl+click on deck.gl legend toggles the layer without opening a new tab (#41830)
Co-authored-by: Claude Code <noreply@anthropic.com>
2026-07-07 08:51:53 -07:00
dependabot[bot]
77b98a5d67 chore(deps-dev): update databend-sqlalchemy requirement from <1.0,>=0.3.2 to >=0.5.5,<1.0 (#41479)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-07-07 08:42:20 -07:00
Rafael Benitez
dd0277e1e3 feat(mcp): support embedded guest-token authentication (#41003)
Co-authored-by: Gabriel Torres Ruiz <gabo2595@gmail.com>
2026-07-07 12:24:02 -03:00
amaannawab923
9b508ebe0d fix(ag-grid): honor dataset hour offset in time range filters (#41391)
Co-authored-by: Enzo Martellucci <52219496+EnxDev@users.noreply.github.com>
Co-authored-by: Enzo Martellucci <enzomartellucci@gmail.com>
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-07 17:12:01 +02:00
dependabot[bot]
53c3b1ceb1 chore(deps): bump fs-extra from 11.3.5 to 11.3.6 in /superset-frontend (#41847)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-07-07 06:38:21 -07:00
dependabot[bot]
0dcb09b163 chore(deps-dev): bump @typescript-eslint/eslint-plugin from 8.62.0 to 8.62.1 in /superset-frontend (#41822)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-07-07 06:36:55 -07:00
dependabot[bot]
3a514dc8eb chore(deps-dev): update sqlalchemy-singlestoredb requirement from <2,>=1.1.1 to >=1.2.1,<2 (#41809)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-07-07 06:36:51 -07:00
dependabot[bot]
aa330422f1 chore(deps-dev): bump prettier from 3.9.3 to 3.9.4 in /superset-websocket (#41844)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-07-07 06:36:47 -07:00
dependabot[bot]
7bdde4a36a chore(deps-dev): bump prettier from 3.9.3 to 3.9.4 in /superset-frontend (#41846)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-07-07 06:36:43 -07:00
dependabot[bot]
5e16c4eaaf chore(deps-dev): bump oxlint from 1.71.0 to 1.72.0 in /superset-frontend (#41848)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-07-07 06:36:37 -07:00
amaannawab923
ffd0982942 fix(ag-grid): keep basic conditional formatting aligned after sort (#41390)
Co-authored-by: Enzo Martellucci <52219496+EnxDev@users.noreply.github.com>
Co-authored-by: Enzo Martellucci <enzomartellucci@gmail.com>
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-07 15:12:44 +02:00
Beto Dealmeida
4dc45aa958 fix(semantic layers): apply post-processing (#41601) 2026-07-07 08:52:44 -04:00
Beto Dealmeida
4167a21f7d fix(semantic layers): guards for zero rows (#41600) 2026-07-07 08:51:45 -04:00
6632 changed files with 808822 additions and 208570 deletions

View File

@@ -77,8 +77,9 @@ github:
# combination here.
contexts:
- lint-check
- cypress-matrix-required
- babel-extract
- dependency-review
- enforce-single-migration-head
- frontend-build
- playwright-tests-required
- pre-commit (current)

View File

@@ -3,9 +3,7 @@ codecov:
after_n_builds: 4
ignore:
- "superset/migrations/versions/*.py"
- "superset-frontend/packages/superset-ui-demo/**/*"
- "**/*.stories.tsx"
- "**/*.stories.jsx"
coverage:
status:
project:

View File

@@ -20,8 +20,8 @@ Apache Superset is a data visualization platform with Flask/Python backend and R
### Testing Strategy Migration
- **Prefer unit tests** over integration tests
- **Prefer integration tests** over Cypress end-to-end tests
- **Cypress is last resort** - Actively moving away from Cypress
- **Prefer integration tests** over end-to-end tests
- **Use Playwright for E2E tests** - Cypress has been removed
- **Use Jest + React Testing Library** for component testing
### Backend Type Safety
@@ -105,9 +105,9 @@ Charts built from enriched datasets containing:
pre-commit install
# Quick validation (faster than --all-files)
pre-commit run # Staged files only
pre-commit run # Staged files only
pre-commit run mypy # Python type checking
pre-commit run prettier # Code formatting
pre-commit run format # Code formatting
pre-commit run eslint # Frontend linting
```

View File

@@ -1,5 +1,5 @@
# Keep this in sync with the base image in the main Dockerfile (ARG PY_VER)
FROM python:3.11.13-trixie AS base
FROM python:3.11-trixie AS base
# Install system dependencies that Superset needs
# This layer will be cached across Codespace sessions

View File

@@ -2,7 +2,7 @@
"name": "Apache Superset Development",
// Keep this in sync with the base image in Dockerfile (ARG PY_VER)
// Using the same base as Dockerfile, but non-slim for dev tools
"image": "python:3.11.13-bookworm",
"image": "python:3.11-bookworm",
"features": {
"ghcr.io/devcontainers/features/docker-in-docker:2": {
@@ -32,7 +32,6 @@
"ms-python.vscode-pylance",
"charliermarsh.ruff",
"dbaeumer.vscode-eslint",
"esbenp.prettier-vscode"
]
}
}

View File

@@ -59,7 +59,6 @@
"ms-python.vscode-pylance",
"charliermarsh.ruff",
"dbaeumer.vscode-eslint",
"esbenp.prettier-vscode"
]
}
}

View File

@@ -39,7 +39,6 @@
tests/
docs/
install/
superset-frontend/cypress-base/
superset-frontend/coverage/
superset-frontend/.temp_cache/
superset/static/assets/

View File

@@ -32,7 +32,6 @@ _p=80; while ! _is_free $_p; do ((_p++)); done; export NGINX_PORT=$_p
_p=8088; while ! _is_free $_p; do ((_p++)); done; export SUPERSET_PORT=$_p
_p=9000; while ! _is_free $_p; do ((_p++)); done; export NODE_PORT=$_p
_p=8080; while ! _is_free $_p || [ $_p -eq $NGINX_PORT ]; do ((_p++)); done; export WEBSOCKET_PORT=$_p
_p=8081; while ! _is_free $_p || [ $_p -eq $WEBSOCKET_PORT ]; do ((_p++)); done; export CYPRESS_PORT=$_p
_p=5432; while ! _is_free $_p; do ((_p++)); done; export DATABASE_PORT=$_p
_p=6379; while ! _is_free $_p; do ((_p++)); done; export REDIS_PORT=$_p

49
.github/CODEOWNERS vendored
View File

@@ -1,52 +1,29 @@
# Notify all committers of DB migration changes, per SIP-59
/superset/migrations/ @mistercrunch @michael-s-molina @betodealmeida @eschutho @sadpandajoe
# Notify some committers of changes in the components
/superset-frontend/src/components/Select/ @michael-s-molina @geido @kgabryje
/superset-frontend/src/components/MetadataBar/ @michael-s-molina @geido @kgabryje
/superset-frontend/src/components/DropdownContainer/ @michael-s-molina @geido @kgabryje
# Notify Helm Chart maintainers about changes in it
/helm/superset/ @dpgaspar @villebro @nytai @michael-s-molina @mistercrunch @rusackas @Antonio-RiveroMartnez @hainenber
# Notify E2E test maintainers of changes
/superset-frontend/playwright/ @sadpandajoe @geido @eschutho @rusackas @mistercrunch
/superset-frontend/cypress-base/ @sadpandajoe @geido @eschutho @rusackas @mistercrunch
# Notify PMC members of changes to GitHub Actions
/.github/ @villebro @geido @eschutho @rusackas @betodealmeida @nytai @mistercrunch @kgabryje @sha174n @dpgaspar @sadpandajoe @hainenber
/.github/ @villebro @geido @eschutho @rusackas @betodealmeida @nytai @mistercrunch @kgabryje @sha174n @dpgaspar @sadpandajoe @hainenber @msyavuz
# Notify PMC members of changes to CI-executed scripts (supply-chain risk:
# scripts/ files run directly in CI workflows and can execute arbitrary code)
/scripts/ @villebro @geido @eschutho @rusackas @betodealmeida @nytai @mistercrunch @kgabryje @dpgaspar @sha174n @sadpandajoe @hainenber
/scripts/ @villebro @geido @eschutho @rusackas @betodealmeida @nytai @mistercrunch @kgabryje @dpgaspar @sha174n @sadpandajoe @hainenber @msyavuz
# Notify PMC members of changes to required GitHub Actions
/.asf.yaml @villebro @geido @eschutho @rusackas @betodealmeida @nytai @mistercrunch @kgabryje @dpgaspar @sha174n @Antonio-RiveroMartnez
/.asf.yaml @villebro @geido @eschutho @rusackas @betodealmeida @nytai @mistercrunch @kgabryje @dpgaspar @sha174n @sadpandajoe @Antonio-RiveroMartnez @msyavuz
# Maps are a finicky contribution process we care about
# Maps are fragile and political. GeoJson edits MUST be made in the Jupyter notebook or they'll be overwritten.
**/*.geojson @villebro @rusackas
**/*.ipynb @villebro @rusackas
/superset-frontend/plugins/legacy-plugin-chart-country-map/ @villebro @rusackas
# Notify translation maintainers of changes to translations
/superset/translations/ @sfirke @rusackas @villebro @sadpandajoe @hainenber
/superset-frontend/plugins/plugin-chart-country-map/ @villebro @rusackas
# Notify PMC members of changes to extension-related files
/docs/developer_portal/extensions/ @michael-s-molina @villebro @rusackas
/superset-core/ @michael-s-molina @villebro @geido @eschutho @rusackas @kgabryje
/superset-extensions-cli/ @michael-s-molina @villebro @geido @eschutho @rusackas @kgabryje
/superset/core/ @michael-s-molina @villebro @geido @eschutho @rusackas @kgabryje
/superset/extensions/ @michael-s-molina @villebro @geido @eschutho @rusackas @kgabryje
/superset-frontend/src/packages/superset-core/ @michael-s-molina @villebro @geido @eschutho @rusackas @kgabryje
/superset-frontend/src/core/ @michael-s-molina @villebro @geido @eschutho @rusackas @kgabryje
/superset-frontend/src/extensions/ @michael-s-molina @villebro @geido @eschutho @rusackas @kgabryje
/docs/developer_docs/extensions/ @michael-s-molina @villebro @rusackas @geido @msyavuz
/superset-extensions-cli/ @michael-s-molina @villebro @rusackas @sadpandajoe @geido @msyavuz
/superset/extensions/ @michael-s-molina @villebro @rusackas @sadpandajoe @geido @msyavuz
/superset-frontend/src/extensions/ @michael-s-molina @villebro @rusackas @sadpandajoe @geido @msyavuz
# Notify PMC members of config changes e.g. feature flags
/superset/config.py @michael-s-molina @villebro @rusackas @sadpandajoe @geido @msyavuz

View File

@@ -1,6 +1,6 @@
name: Bug report
description: Report a bug to improve Superset's stability
labels: ["bug"]
labels: ["#bug"]
body:
- type: markdown
attributes:
@@ -50,9 +50,8 @@ body:
attributes:
label: Python version
options:
- "3.9"
- "3.10"
- "3.11"
- "3.12"
- Not applicable
- I don't know
validations:

View File

@@ -1,7 +1,7 @@
---
name: Cosmetic Issue
about: Describe a cosmetic issue with CSS, positioning, layout, labeling, or similar
labels: "cosmetic-issue"
labels: "#bug:cosmetic"
---
## Screenshot

View File

@@ -20,6 +20,11 @@ outputs:
superset-extensions-cli:
description: Whether superset-extensions-cli package-related files were changed
value: ${{ steps.change-detector.outputs.superset-extensions-cli }}
languages:
description: >-
JSON array of CodeQL languages touched, classified by file extension
regardless of directory (e.g. ["javascript", "python"])
value: ${{ steps.change-detector.outputs.languages }}
runs:
using: composite
steps:

View File

@@ -1,23 +0,0 @@
name: Label Draft PRs
on:
pull_request:
types:
- opened
- converted_to_draft
jobs:
label-draft:
runs-on: ubuntu-latest
steps:
- name: Check if the PR is a draft
id: check-draft
uses: actions/github-script@v8
with:
script: |
const isDraft = context.payload.pull_request.draft;
core.setOutput('isDraft', isDraft);
- name: Add `review:draft` Label
if: steps.check-draft.outputs.isDraft == 'true'
uses: actions-ecosystem/action-add-labels@v1
with:
github_token: ${{ secrets.GITHUB_TOKEN }}
labels: "review:draft"

View File

@@ -5,10 +5,6 @@ inputs:
description: 'Python version to set up. Accepts a version number, "current", or "next".'
required: true
default: 'current'
cache:
description: 'Cache dependencies. Options: pip'
required: false
default: 'pip'
requirements-type:
description: 'Type of requirements to install. Options: base, development, default'
required: false
@@ -30,10 +26,9 @@ runs:
if [ "$INPUT_PYTHON_VERSION" = "current" ]; then
RESOLVED_VERSION="3.11"
elif [ "$INPUT_PYTHON_VERSION" = "next" ]; then
# currently disabled in GHA matrixes because of library compatibility issues
RESOLVED_VERSION="3.12"
elif [ "$INPUT_PYTHON_VERSION" = "previous" ]; then
RESOLVED_VERSION="3.10"
# tracks the next Python minor we're evaluating for support; exercised
# by the nightly canary (python-nightly-canary.yml), not PR/push CI
RESOLVED_VERSION="3.13"
elif printf '%s' "$INPUT_PYTHON_VERSION" | grep -Eq '^[0-9]+\.[0-9]+(\.[0-9]+)?$'; then
RESOLVED_VERSION="$INPUT_PYTHON_VERSION"
else
@@ -45,17 +40,35 @@ runs:
uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6.2.0
with:
python-version: ${{ steps.set-python-version.outputs.python-version }}
cache: ${{ inputs.cache }}
- name: Install uv
if: inputs.install-superset == 'true'
uses: astral-sh/setup-uv@c771a70e6277c0a99b617c7a806ffedaca235ff9 # v9.0.0
with:
python-version: ${{ steps.set-python-version.outputs.python-version }}
enable-cache: true
- name: Update apt package lists
# cache-apt-pkgs-action assumes a fresh `apt-cache` index (true on GitHub-hosted
# runners, not on all self-hosted/custom runner images), so refresh it explicitly
# or package lookups silently resolve to an empty list.
if: inputs.install-superset == 'true'
shell: bash
run: |
# Use the runner's preinstalled Chrome; these dependencies do not need
# its apt repository. Mirror index failures must not block their setup.
sudo rm -f /etc/apt/sources.list.d/google-chrome*.list /etc/apt/sources.list.d/google-chrome*.sources
sudo apt-get update
- name: Install apt packages
if: inputs.install-superset == 'true'
uses: awalsh128/cache-apt-pkgs-action@553a35bb8ebd9fcabcb1c9451aa4c98e1b4ca8a9 # v1.6.3
with:
packages: libldap2-dev libsasl2-dev
version: 1.0
- name: Install dependencies
env:
INPUT_INSTALL_SUPERSET: ${{ inputs.install-superset }}
INPUT_REQUIREMENTS_TYPE: ${{ inputs.requirements-type }}
run: |
if [ "$INPUT_INSTALL_SUPERSET" = "true" ]; then
sudo apt-get update && sudo apt-get -y install libldap2-dev libsasl2-dev
pip install --upgrade pip setuptools wheel uv
if [ "$INPUT_REQUIREMENTS_TYPE" = "dev" ]; then
uv pip install --system -r requirements/development.txt
elif [ "$INPUT_REQUIREMENTS_TYPE" = "base" ]; then

View File

@@ -26,7 +26,7 @@ runs:
- name: Set up QEMU
if: ${{ inputs.build == 'true' }}
uses: docker/setup-qemu-action@06116385d9baf250c9f4dcb4858b16962ea869c3 # v4.1.0
uses: docker/setup-qemu-action@96fe6ef7f33517b61c61be40b68a1882f3264fb8 # v4.2.0
with:
# Pin the binfmt image to a specific QEMU release. The default
# (`tonistiigi/binfmt:latest`) is a moving target, and drift across
@@ -39,12 +39,12 @@ runs:
- name: Set up Docker Buildx
if: ${{ inputs.build == 'true' }}
uses: docker/setup-buildx-action@d7f5e7f509e45cec5c76c4d5afdd7de93d0b3df5 # v4.1.0
uses: docker/setup-buildx-action@37fe631027851001ddb9b187196cc803df7f5f0e # v4.3.0
- name: Try to login to DockerHub
if: ${{ inputs.login-to-dockerhub == 'true' }}
continue-on-error: true
uses: docker/login-action@650006c6eb7dba73a995cc03b0b2d7f5ca915bee # v4.2.0
uses: docker/login-action@dbcb813823bdd20940b903addbd779551569679f # v4.6.0
with:
username: ${{ inputs.dockerhub-user }}
password: ${{ inputs.dockerhub-token }}
@@ -53,6 +53,9 @@ runs:
if: ${{ inputs.install-docker-compose == 'true' }}
shell: bash
run: |
# Use the runner's preinstalled Chrome; these dependencies do not need
# its apt repository. Mirror index failures must not block their setup.
sudo rm -f /etc/apt/sources.list.d/google-chrome*.list /etc/apt/sources.list.d/google-chrome*.sources
sudo apt-get update
sudo apt-get install -y ca-certificates curl
sudo install -m 0755 -d /etc/apt/keyrings

400
.github/dependabot.yml vendored
View File

@@ -5,22 +5,30 @@ updates:
directory: "/"
schedule:
interval: "daily"
groups:
security:
applies-to: "security-updates"
patterns: ["*"]
cooldown:
default-days: 7
- package-ecosystem: "npm"
ignore:
- dependency-name: "@rjsf/*"
# TODO: remove below entries until React >= 19.0.0
# TODO: remove below entries once the application supports React >= 19.0.0
- dependency-name: "react"
update-types: ["version-update:semver-major"]
- dependency-name: "react-dom"
update-types: ["version-update:semver-major"]
- dependency-name: "@types/react"
update-types: ["version-update:semver-major"]
- dependency-name: "@types/react-dom"
update-types: ["version-update:semver-major"]
- dependency-name: "react-icons"
# JSDOM v30 doesn't play well with Jest v30
# Source: https://jestjs.io/blog#known-issues
# GH thread: https://github.com/jsdom/jsdom/issues/3492
- dependency-name: "jest-environment-jsdom"
# `@swc/plugin-transform-imports` doesn't work with current Webpack-SWC hybrid setup
# See https://github.com/apache/superset/pull/37384#issuecomment-3793991389
# TODO: remove the plugin once Lodash usage has been migrated to a more readily tree-shakeable alternative
- dependency-name: "@swc/plugin-transform-imports"
# deck.gl and luma.gl share strict peer constraints across the root and
# plugin workspaces, and root overrides pin their transitive versions.
# Upgrade both families together in a manually validated change.
- dependency-name: "@deck.gl/*"
- dependency-name: "@luma.gl/*"
# `just-handlerbars-helpers` library in plugin-chart-handlebars requires `currencyformatter`` to be < 2
- dependency-name: "currencyformatter.js"
update-types: ["version-update:semver-major"]
@@ -29,24 +37,69 @@ updates:
- dependency-name: "react-checkbox-tree"
update-types: ["version-update:semver-major"]
# Babel 8 (7.x -> 8.x) is blocked on the surrounding ecosystem: @emotion/babel-plugin
# (NodePath#hoist), babel-plugin-jsx-remove-data-test-id (t.jSXOpeningElement), and
# ts-jest all rely on Babel APIs removed in v8 and have not shipped Babel 8 support.
# (NodePath#hoist) and babel-plugin-jsx-remove-data-test-id (t.jSXOpeningElement).
# Ignore the coordinated major bump until the ecosystem catches up; it must be done
# as a single manual upgrade anyway. TODO: remove when Babel 8 support is viable.
- dependency-name: "@babel/*"
update-types: ["version-update:semver-major"]
# v2.0.0 renamed ZSTDDecompress to decompress and made it async, breaking
# the webpack dev proxy (see #38662, #39138, #39139). Dependabot reopened
# the same bump in #39369 after the first revert, so pin it here instead
# of relying on a package.json comment (package.json is JSON and can't
# hold comments). Remove this once the proxy code is updated to await
# the async decompress() API.
- dependency-name: "simple-zstd"
directory: "/superset-frontend/"
schedule:
interval: "daily"
labels:
- npm
- dependabot
groups:
security:
applies-to: "security-updates"
patterns: ["*"]
rjsf:
patterns:
- "@rjsf/*"
typescript-eslint:
patterns:
- "@typescript-eslint/*"
- "typescript-eslint"
babel:
patterns:
- "@babel/*"
storybook:
patterns:
- "@storybook/*"
- "storybook"
- "eslint-plugin-storybook"
ag-grid:
patterns:
- "ag-grid-react"
- "ag-grid-community"
swc:
patterns:
- "@swc/core"
- "@swc/plugin-emotion"
- "@swc/plugin-transform-imports"
jsonforms:
patterns:
- "@jsonforms/*"
visx:
patterns:
- "@visx/*"
emotion:
patterns:
- "@emotion/*"
fontsource:
patterns:
- "@fontsource/*"
open-pull-requests-limit: 30
versioning-strategy: increase
cooldown:
default-days: 7
- package-ecosystem: "pip"
directory: "/"
open-pull-requests-limit: 10
@@ -60,6 +113,10 @@ updates:
labels:
- pip
- dependabot
groups:
security:
applies-to: "security-updates"
patterns: ["*"]
cooldown:
default-days: 7
@@ -67,6 +124,10 @@ updates:
directory: ".github/actions"
schedule:
interval: "daily"
groups:
security:
applies-to: "security-updates"
patterns: ["*"]
open-pull-requests-limit: 10
versioning-strategy: increase
cooldown:
@@ -76,6 +137,25 @@ updates:
directory: "/docs/"
schedule:
interval: "daily"
groups:
security:
applies-to: "security-updates"
patterns: ["*"]
storybook:
patterns:
- "@storybook/*"
- "storybook"
docusaurus:
patterns:
- "@docusaurus/*"
docusaurus-openapi:
patterns:
- "docusaurus-plugin-openapi-docs"
- "docusaurus-theme-openapi-docs"
typescript-eslint:
patterns:
- "@typescript-eslint/*"
- "typescript-eslint"
open-pull-requests-limit: 10
versioning-strategy: increase
cooldown:
@@ -88,6 +168,10 @@ updates:
labels:
- npm
- dependabot
groups:
security:
applies-to: "security-updates"
patterns: ["*"]
versioning-strategy: increase
cooldown:
default-days: 7
@@ -99,295 +183,29 @@ updates:
labels:
- npm
- dependabot
groups:
security:
applies-to: "security-updates"
patterns: ["*"]
open-pull-requests-limit: 10
versioning-strategy: increase
cooldown:
default-days: 7
# Now for all of our plugins and packages!
- package-ecosystem: "npm"
directory: "/superset-frontend/plugins/legacy-plugin-chart-calendar/"
directory: "/superset-embedded-sdk/"
schedule:
interval: "daily"
labels:
- npm
- dependabot
open-pull-requests-limit: 5
versioning-strategy: increase
cooldown:
default-days: 7
- package-ecosystem: "npm"
directory: "/superset-frontend/plugins/legacy-plugin-chart-partition/"
schedule:
interval: "daily"
labels:
- npm
- dependabot
open-pull-requests-limit: 5
versioning-strategy: increase
cooldown:
default-days: 7
- package-ecosystem: "npm"
directory: "/superset-frontend/plugins/legacy-plugin-chart-world-map/"
schedule:
interval: "daily"
labels:
- npm
- dependabot
open-pull-requests-limit: 5
versioning-strategy: increase
cooldown:
default-days: 7
- package-ecosystem: "npm"
directory: "/superset-frontend/plugins/plugin-chart-pivot-table/"
ignore:
# TODO: remove below entries until React >= 19.0.0
- dependency-name: "react-icons"
schedule:
interval: "daily"
labels:
- npm
- dependabot
open-pull-requests-limit: 5
versioning-strategy: increase
cooldown:
default-days: 7
- package-ecosystem: "npm"
directory: "/superset-frontend/plugins/legacy-plugin-chart-chord/"
schedule:
interval: "daily"
labels:
- npm
- dependabot
open-pull-requests-limit: 5
versioning-strategy: increase
cooldown:
default-days: 7
- package-ecosystem: "npm"
directory: "/superset-frontend/plugins/legacy-plugin-chart-horizon/"
schedule:
interval: "daily"
labels:
- npm
- dependabot
open-pull-requests-limit: 5
versioning-strategy: increase
cooldown:
default-days: 7
- package-ecosystem: "npm"
directory: "/superset-frontend/plugins/legacy-plugin-chart-rose/"
schedule:
interval: "daily"
labels:
- npm
- dependabot
open-pull-requests-limit: 5
versioning-strategy: increase
cooldown:
default-days: 7
- package-ecosystem: "npm"
directory: "/superset-frontend/plugins/legacy-preset-chart-deckgl/"
schedule:
interval: "daily"
labels:
- npm
- dependabot
open-pull-requests-limit: 5
versioning-strategy: increase
cooldown:
default-days: 7
- package-ecosystem: "npm"
directory: "/superset-frontend/plugins/plugin-chart-table/"
ignore:
# TODO: remove below entries until React >= 19.0.0
- dependency-name: "react-icons"
schedule:
interval: "daily"
labels:
- npm
- dependabot
open-pull-requests-limit: 5
versioning-strategy: increase
cooldown:
default-days: 7
- package-ecosystem: "npm"
directory: "/superset-frontend/plugins/legacy-plugin-chart-country-map/"
schedule:
interval: "daily"
labels:
- npm
- dependabot
open-pull-requests-limit: 5
versioning-strategy: increase
cooldown:
default-days: 7
- package-ecosystem: "npm"
directory: "/superset-frontend/plugins/legacy-plugin-chart-map-box/"
schedule:
interval: "daily"
labels:
- npm
- dependabot
open-pull-requests-limit: 5
versioning-strategy: increase
cooldown:
default-days: 7
- package-ecosystem: "npm"
directory: "/superset-frontend/plugins/legacy-preset-chart-nvd3/"
schedule:
interval: "daily"
labels:
- npm
- dependabot
open-pull-requests-limit: 5
versioning-strategy: increase
cooldown:
default-days: 7
- package-ecosystem: "npm"
directory: "/superset-frontend/plugins/plugin-chart-word-cloud/"
schedule:
interval: "daily"
labels:
- npm
- dependabot
open-pull-requests-limit: 5
versioning-strategy: increase
cooldown:
default-days: 7
- package-ecosystem: "npm"
directory: "/superset-frontend/plugins/legacy-plugin-chart-paired-t-test/"
schedule:
interval: "daily"
labels:
- npm
- dependabot
open-pull-requests-limit: 5
versioning-strategy: increase
cooldown:
default-days: 7
- package-ecosystem: "npm"
directory: "/superset-frontend/plugins/plugin-chart-echarts/"
schedule:
interval: "daily"
labels:
- npm
- dependabot
open-pull-requests-limit: 5
versioning-strategy: increase
cooldown:
default-days: 7
- package-ecosystem: "npm"
directory: "/superset-frontend/plugins/plugin-chart-ag-grid-table/"
schedule:
interval: "daily"
labels:
- npm
- dependabot
open-pull-requests-limit: 5
versioning-strategy: increase
cooldown:
default-days: 7
- package-ecosystem: "npm"
directory: "/superset-frontend/plugins/plugin-chart-cartodiagram/"
schedule:
interval: "daily"
labels:
- npm
- dependabot
open-pull-requests-limit: 5
versioning-strategy: increase
cooldown:
default-days: 7
- package-ecosystem: "npm"
directory: "/superset-frontend/plugins/legacy-plugin-chart-parallel-coordinates/"
schedule:
interval: "daily"
labels:
- npm
- dependabot
open-pull-requests-limit: 5
versioning-strategy: increase
cooldown:
default-days: 7
- package-ecosystem: "npm"
directory: "/superset-frontend/plugins/plugin-chart-handlebars/"
ignore:
# `just-handlerbars-helpers` library in plugin-chart-handlebars requires `currencyformatter`` to be < 2
- dependency-name: "currencyformatter.js"
update-types: ["version-update:semver-major"]
schedule:
interval: "daily"
labels:
- npm
- dependabot
open-pull-requests-limit: 5
versioning-strategy: increase
cooldown:
default-days: 7
- package-ecosystem: "npm"
directory: "/superset-frontend/packages/generator-superset/"
schedule:
interval: "daily"
labels:
- npm
- dependabot
open-pull-requests-limit: 5
versioning-strategy: increase
cooldown:
default-days: 7
- package-ecosystem: "npm"
directory: "/superset-frontend/packages/superset-ui-chart-controls/"
schedule:
interval: "daily"
labels:
- npm
- dependabot
open-pull-requests-limit: 5
versioning-strategy: increase
cooldown:
default-days: 7
- package-ecosystem: "npm"
directory: "/superset-frontend/packages/superset-ui-core/"
schedule:
interval: "daily"
labels:
- npm
- dependabot
open-pull-requests-limit: 5
versioning-strategy: increase
cooldown:
default-days: 7
- package-ecosystem: "npm"
directory: "/superset-frontend/packages/superset-ui-switchboard/"
schedule:
interval: "daily"
labels:
- npm
- dependabot
open-pull-requests-limit: 5
groups:
security:
applies-to: "security-updates"
patterns: ["*"]
babel:
patterns:
- "@babel/*"
versioning-strategy: increase
cooldown:
default-days: 7

16
.github/labeler.yml vendored
View File

@@ -22,6 +22,18 @@
- any-glob-to-any-file:
- 'scripts/**'
# A chart's `controlPanel` defines the form_data keys persisted on every
# slice that uses it, and its `transformProps` reads those keys back at
# render time. Changing either can break charts and dashboards saved
# against the previous shape. Covers chart plugins, native filters and
# chart customizations, wherever they live in the frontend.
"risk:chart-metadata":
- changed-files:
- any-glob-to-any-file:
- 'superset-frontend/**/{controlPanel,transformProps}.{ts,tsx}'
- 'superset-frontend/**/config/{controlPanel,transformProps}/index.ts'
- 'superset-frontend/src/explore/controlPanels/**'
############################################
# Dependencies
############################################
@@ -29,7 +41,7 @@
"dependencies:python":
- changed-files:
- any-glob-to-any-file:
- 'superset/requirements/**'
- 'requirements/**'
- 'superset/translations/requirements.txt'
- 'RELEASING/requirements.txt'
@@ -42,8 +54,6 @@
- 'superset-embedded-sdk/package-lock.json'
- 'superset-websocket/package.json'
- 'superset-websocket/package-lock.json'
- 'superset-frontend/cypress-base/package.json'
- 'superset-frontend/cypress-base/package-lock.json'
- 'superset-frontend/packages/**/package.json'
- 'superset-frontend/plugins/**/package.json'

View File

@@ -0,0 +1,46 @@
# Verifies that every `uses:` ref under .github/ is on the ASF Infrastructure
# GitHub Actions allowlist (apache/infrastructure-actions). An action that is
# not allowlisted fails at "Set up job" with no logs and no notification, so
# this check surfaces the problem at PR time instead. It also warns (without
# failing) when a pinned SHA's allowlist entry is about to expire.
name: ASF Allowlist Check
on:
workflow_dispatch:
pull_request:
types: [opened, synchronize, reopened, ready_for_review]
paths:
- ".github/**"
push:
branches:
- "master"
- "[0-9].[0-9]*"
paths:
- ".github/**"
schedule:
# Weekly, so allowlist expirations are surfaced even when nothing under
# .github/ has changed.
- cron: "0 6 * * 1"
permissions:
contents: read
# cancel previous workflow jobs for PRs
concurrency:
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.run_id }}
cancel-in-progress: true
jobs:
asf-allowlist-check:
runs-on: ubuntu-26.04
steps:
- name: Checkout Repository
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
with:
persist-credentials: false
- name: Check action refs against the ASF allowlist
uses: apache/infrastructure-actions/allowlist-check@47b297bbe90f580139129bee531bd84bd95b7f5d # allowlist-check/v1.0.4
with:
# Default scan-glob is .github/**/*.yml, which misses .yaml files.
scan-glob: ".github/**/*.y*ml"

View File

@@ -79,8 +79,6 @@ build-instrumented-assets() {
}
setup-postgres() {
say "::group::Install dependency for unit tests"
sudo apt-get update && sudo apt-get install --yes libecpg-dev
say "::group::Initialize database"
psql "postgresql://superset:superset@127.0.0.1:15432/superset" <<-EOF
DROP SCHEMA IF EXISTS sqllab_test_db CASCADE;
@@ -163,103 +161,6 @@ celery-worker() {
say "::endgroup::"
}
cypress-install() {
cd "$GITHUB_WORKSPACE/superset-frontend/cypress-base"
cache-restore cypress
say "::group::Install Cypress"
npm ci
say "::endgroup::"
cache-save cypress
}
cypress-run-all() {
local USE_DASHBOARD=$1
local APP_ROOT=$2
cd "$GITHUB_WORKSPACE/superset-frontend/cypress-base"
# Start the Superset backend via gunicorn (not `flask run`). The Flask
# development server is single-threaded and has no crash-recovery, so
# heavy tests (dashboard import/export, SQL Lab) can knock it offline
# for the rest of the run — surfacing as `ECONNREFUSED` / `socket hang up`
# / `Missing CSRF token` cascades. Gunicorn gives us multiple workers,
# a request timeout, and worker-recycling under load.
local serverlog="${HOME}/superset-cypress.log"
local port=8081
CYPRESS_BASE_URL="http://localhost:${port}"
if [ -n "$APP_ROOT" ]; then
export SUPERSET_APP_ROOT=$APP_ROOT
CYPRESS_BASE_URL=${CYPRESS_BASE_URL}${APP_ROOT}
fi
export CYPRESS_BASE_URL
# Mirrors the args in docker/entrypoints/run-server.sh (1 worker × 20
# gthread threads) to keep parity with production. Multi-worker
# configurations expose timing-sensitive races in the SQL Lab → Explore
# navigation flow under E2E. We diverge from the entrypoint on:
# --timeout 120: heavy dashboard import/export specs exceed the 60s
# default
# --max-requests / --max-requests-jitter: recycle the worker under
# test load to avoid leaks accumulating across the run
# superset.app:create_app(): explicit factory so we don't depend on
# FLASK_APP being exported
nohup gunicorn \
--bind "127.0.0.1:$port" \
--workers 1 \
--worker-class gthread \
--threads 20 \
--timeout 120 \
--max-requests 500 \
--max-requests-jitter 50 \
--access-logfile - \
--error-logfile - \
"superset.app:create_app()" \
>"$serverlog" 2>&1 </dev/null &
local serverPid=$!
# Ensure the backend is cleaned up and its log is emitted even when the
# test runner fails under `set -e`.
trap '
echo "::group::gunicorn log for Cypress run"
cat "'"$serverlog"'" || true
echo "::endgroup::"
kill '"$serverPid"' 2>/dev/null || true
' EXIT
# Wait for the backend to be ready before launching Cypress; otherwise
# the first spec can race the server bind and see connection errors.
local timeout=60
say "Waiting for gunicorn server to start on port $port..."
while [ $timeout -gt 0 ]; do
if curl -f "http://localhost:${port}${APP_ROOT}/health" >/dev/null 2>&1; then
say "gunicorn server is ready"
break
fi
sleep 1
timeout=$((timeout - 1))
done
if [ $timeout -eq 0 ]; then
echo "::error::gunicorn server failed to start within 60 seconds"
echo "::group::Server startup log"
cat "$serverlog"
echo "::endgroup::"
return 1
fi
USE_DASHBOARD_FLAG=''
if [ "$USE_DASHBOARD" = "true" ]; then
USE_DASHBOARD_FLAG='--use-dashboard'
fi
# UNCOMMENT the next few commands to monitor memory usage
# monitor_memory & # Start memory monitoring in the background
# memoryMonitorPid=$!
python ../../scripts/cypress_run.py --parallelism $PARALLELISM --parallelism-id $PARALLEL_ID --group $PARALLEL_ID --retries 5 $USE_DASHBOARD_FLAG
# kill $memoryMonitorPid
}
playwright-install() {
cd "$GITHUB_WORKSPACE/superset-frontend"
@@ -273,11 +174,20 @@ playwright-install() {
playwright-run() {
local APP_ROOT=$1
local TEST_PATH=$2
shift || true
# Remaining arguments are test paths, relative to playwright/tests. Passing
# more than one lets a caller run a suite that spans directories. With none,
# selection comes from PLAYWRIGHT_EXTRA_ARGS instead -- that is how
# playwright-run-gaq picks its suite, via --project.
local TEST_PATHS=("$@")
local TEST_PATH=${TEST_PATHS[0]:-}
# Start the Superset backend via gunicorn from the project root.
# See cypress-run-all() above for the rationale — the Flask dev server
# cannot survive the dashboard import/export tests under load.
# Start the Superset backend via gunicorn (not `flask run`). The Flask
# development server is single-threaded and has no crash-recovery, so
# heavy tests (dashboard import/export, SQL Lab) can knock it offline
# for the rest of the run — surfacing as `ECONNREFUSED` / `socket hang up`
# / `Missing CSRF token` cascades. Gunicorn gives us a request timeout
# and a multi-threaded worker.
cd "$GITHUB_WORKSPACE"
local serverlog="${HOME}/superset-playwright.log"
local port=8081
@@ -293,17 +203,28 @@ playwright-run() {
fi
export PLAYWRIGHT_BASE_URL
# See cypress-run-all() above for the args rationale (1 worker × 20
# gthread threads matching docker/entrypoints/run-server.sh, plus a
# 120s timeout and request-recycling for heavy E2E load).
# Mirrors the args in docker/entrypoints/run-server.sh (1 worker × 20
# gthread threads) to keep parity with production. Multi-worker
# configurations expose timing-sensitive races in the SQL Lab → Explore
# navigation flow under E2E. We diverge from the entrypoint on:
# --timeout 120: heavy dashboard import/export specs exceed the 60s
# default
# superset.app:create_app(): explicit factory so we don't depend on
# FLASK_APP being exported
#
# No --max-requests, matching the entrypoint's default of 0 (recycling
# off). With a single worker a recycle takes the whole backend offline for
# the graceful-timeout drain — browser keep-alive connections hold it open
# for the full 30s — plus ~5s of app boot, which flakes whichever specs
# happen to navigate into the outage. Lowering --graceful-timeout is not
# enough: a dashboard load plus chart render needs 6-10s, which still
# lands inside the window.
nohup gunicorn \
--bind "127.0.0.1:$port" \
--workers 1 \
--worker-class gthread \
--threads 20 \
--timeout 120 \
--max-requests 500 \
--max-requests-jitter 50 \
--access-logfile - \
--error-logfile - \
"superset.app:create_app()" \
@@ -344,22 +265,29 @@ playwright-run() {
say "::group::Run Playwright tests"
echo "Running Playwright with baseURL: ${PLAYWRIGHT_BASE_URL}"
if [ -n "$TEST_PATH" ]; then
# Check if there are any test files in the specified path
if ! find "playwright/tests/${TEST_PATH}" -name "*.spec.ts" -type f 2>/dev/null | grep -q .; then
echo "No test files found in ${TEST_PATH} - skipping test run"
# Check if there are any test files in the specified paths
local found=0
local candidate
for candidate in "${TEST_PATHS[@]}"; do
if find "playwright/tests/${candidate}" -name "*.spec.ts" -type f 2>/dev/null | grep -q .; then
found=1
elif [ -f "playwright/tests/${candidate}" ]; then
found=1
fi
done
if [ "$found" -eq 0 ]; then
echo "No test files found in ${TEST_PATHS[*]} - skipping test run"
say "::endgroup::"
return 0
fi
echo "Running tests: ${TEST_PATH}"
# Set INCLUDE_EXPERIMENTAL=true to allow experimental tests to run
export INCLUDE_EXPERIMENTAL=true
npx playwright test "${TEST_PATH}" --output=playwright-results
echo "Running tests: ${TEST_PATHS[*]}"
# shellcheck disable=SC2086
npx playwright test "${TEST_PATHS[@]}" --output=playwright-results ${PLAYWRIGHT_EXTRA_ARGS:-}
local status=$?
# Unset to prevent leaking into subsequent commands
unset INCLUDE_EXPERIMENTAL
else
echo "Running all required tests (experimental/ excluded via playwright.config.ts)"
npx playwright test --output=playwright-results
echo "Running with no explicit paths (project selection comes from PLAYWRIGHT_EXTRA_ARGS, if set)"
# shellcheck disable=SC2086
npx playwright test --output=playwright-results ${PLAYWRIGHT_EXTRA_ARGS:-}
local status=$?
fi
say "::endgroup::"
@@ -367,6 +295,122 @@ playwright-run() {
return $status
}
playwright-run-gaq() {
# Global Async Queries needs more than a feature flag: submissions are handed
# to Celery, so without a worker consuming the queue the API returns 202 and
# no job ever runs -- the specs would time out rather than fail usefully.
# `playwright-run` boots gunicorn with this step's environment, so the flag
# set on the step reaches both the web server and the worker started here.
local APP_ROOT=$1
cd "$GITHUB_WORKSPACE"
if [ "${SUPERSET_FEATURE_GLOBAL_ASYNC_QUERIES:-}" != "true" ]; then
echo "::error::SUPERSET_FEATURE_GLOBAL_ASYNC_QUERIES must be \"true\" for this step; the specs would skip themselves and report nothing."
return 1
fi
local workerlog="${HOME}/superset-gaq-worker.log"
say "::group::Start Celery worker for GAQ"
# Mirrors docker/docker-bootstrap.sh's worker invocation.
nohup celery --app=superset.tasks.celery_app:app worker \
-O fair \
--loglevel=INFO \
--concurrency=2 \
>"$workerlog" 2>&1 </dev/null &
local workerPid=$!
# Fail fast on a worker that never comes up: a dead worker is
# indistinguishable from a slow one once the specs start timing out.
local timeout=60
while [ $timeout -gt 0 ]; do
if ! kill -0 "$workerPid" 2>/dev/null; then
echo "::error::Celery worker exited during startup"
cat "$workerlog" || true
say "::endgroup::"
return 1
fi
if grep -q "celery@.*ready" "$workerlog" 2>/dev/null; then
say "Celery worker is ready"
break
fi
sleep 1
timeout=$((timeout - 1))
done
if [ $timeout -eq 0 ]; then
echo "::error::Celery worker failed to become ready within 60 seconds"
cat "$workerlog" || true
kill "$workerPid" 2>/dev/null || true
say "::endgroup::"
return 1
fi
say "::endgroup::"
# The GAQ specs are excluded from every other project, so this is what makes
# them loadable at all -- see the chromium-gaq project in playwright.config.ts.
export INCLUDE_GAQ=true
local report="${GITHUB_WORKSPACE}/superset-frontend/playwright-gaq-report.json"
rm -f "$report"
export PLAYWRIGHT_JSON_OUTPUT_NAME="$report"
# --workers=1: the fixtures all create charts as the same admin user, and
# Superset's tag listener races on the shared `editor:<id>` tag (see the
# chromium-gaq project in playwright.config.ts). That project's
# `fullyParallel: false` only orders tests within one file -- Playwright
# still runs separate files concurrently -- and this suite spans three, so
# one worker is what actually serializes it.
#
# --project=chromium-gaq rather than a list of spec paths: that project's
# testMatch (`**/global-async-query*.spec.ts`) is the same glob the default
# and sqllab projects use to *exclude* these specs, so selecting by project
# keeps both sides reading from one definition. A new spec matching the glob
# is picked up here automatically; with a hand-maintained path list it would
# be excluded from the required run and never added here, so it would run
# nowhere and the zero-executed check below could not notice.
export PLAYWRIGHT_EXTRA_ARGS="--reporter=list,json --workers=1 --project=chromium-gaq"
# `set -e` is on: without the guard a failing run would exit before the
# worker log is emitted and before the did-it-actually-run check below.
local status=0
playwright-run "$APP_ROOT" || status=$?
unset PLAYWRIGHT_EXTRA_ARGS PLAYWRIGHT_JSON_OUTPUT_NAME INCLUDE_GAQ
say "::group::Celery worker log"
cat "$workerlog" || true
say "::endgroup::"
kill "$workerPid" 2>/dev/null || true
# A suite that skips itself still exits 0. That is the failure mode this step
# exists to prevent, so assert that tests actually ran.
if [ ! -f "$report" ]; then
echo "::error::No Playwright JSON report produced; cannot confirm the GAQ specs ran."
return 1
fi
# "Did the suite run?" must count every outcome that proves a test executed,
# not just first-attempt passes. A run where every GAQ test genuinely fails
# (say the worker loses Redis mid-run) reports expected=0 too, and blaming
# that on an inactive GLOBAL_ASYNC_QUERIES would point whoever is debugging
# at the wrong layer -- the job is already red from the real failure.
local expected unexpected flaky skipped executed
expected=$(jq '.stats.expected // 0' "$report")
unexpected=$(jq '.stats.unexpected // 0' "$report")
flaky=$(jq '.stats.flaky // 0' "$report")
skipped=$(jq '.stats.skipped // 0' "$report")
executed=$((expected + unexpected + flaky))
say "GAQ suite: ${expected} passed, ${unexpected} failed, ${flaky} flaky, ${skipped} skipped"
if [ "$executed" -eq 0 ]; then
echo "::error::The GAQ specs reported zero executed tests -- they skipped themselves, which means GLOBAL_ASYNC_QUERIES was not active on the server under test."
return 1
fi
if [ "$skipped" -ne 0 ]; then
echo "::error::${skipped} GAQ test(s) skipped; this step must run the whole suite."
return 1
fi
return $status
}
eyes-storybook-dependencies() {
say "::group::install eyes-storyook dependencies"
sudo apt-get update -y && sudo apt-get -y install gconf-service ca-certificates libxshmfence-dev fonts-liberation libappindicator3-1 libasound2 libatk-bridge2.0-0 libatk1.0-0 libc6 libcairo2 libcups2 libdbus-1-3 libexpat1 libfontconfig1 libgbm1 libgcc1 libgconf-2-4 libglib2.0-0 libgdk-pixbuf2.0-0 libgtk-3-0 libnspr4 libnss3 libpangocairo-1.0-0 libstdc++6 libx11-6 libx11-xcb1 libxcb1 libxcomposite1 libxcursor1 libxdamage1 libxext6 libxfixes3 libxi6 libxrandr2 libxrender1 libxss1 libxtst6 lsb-release xdg-utils libappindicator1

View File

@@ -21,9 +21,12 @@ on:
#schedule:
# - cron: '0 0 * * *' # Runs daily at midnight UTC
permissions:
contents: read
jobs:
bump-python-package:
runs-on: ubuntu-24.04
runs-on: ubuntu-slim
permissions:
actions: write
contents: write
@@ -31,21 +34,24 @@ jobs:
checks: write
steps:
- name: "Checkout ${{ github.ref }} ( ${{ github.sha }} )"
uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
with:
persist-credentials: true
ref: master
- name: Setup supersetbot
uses: ./.github/actions/setup-supersetbot/
uses: $/.github/actions/setup-supersetbot/
- name: Set up Python ${{ inputs.python-version }}
uses: actions/setup-python@ece7cb06caefa5fff74198d8649806c4678c61a1 # v6.3.0
uses: actions/setup-python@5fda3b95a4ea91299a34e894583c3862153e4b97 # v7.0.0
with:
python-version: "3.10"
python-version: "3.11"
- name: Install uv
run: pip install uv
uses: astral-sh/setup-uv@c18668ad3cf93ea998bef934396af7bb5c839dc7 # v10.2.0
with:
python-version: "3.11"
enable-cache: true
- name: supersetbot bump-python -p "${{ github.event.inputs.package }}"
env:

View File

@@ -49,10 +49,4 @@ module.exports = {
// one is built with `npm run build`,
// another is built with `npm run build-instrumented`
'instrumented-assets': assetsConfig,
cypress: {
path: [`${homeDirectory}/.cache/Cypress`],
hashFiles: [
`${workspaceDirectory}/superset-frontend/cypress-base/package-lock.json`,
],
},
};

View File

@@ -16,16 +16,19 @@ concurrency:
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.run_id }}
cancel-in-progress: true
permissions:
contents: read
jobs:
check_db_migration_conflict:
name: Check DB migration conflict
runs-on: ubuntu-24.04
runs-on: ubuntu-slim
permissions:
contents: read
pull-requests: write
steps:
- name: "Checkout ${{ github.ref }} ( ${{ github.sha }} )"
uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
with:
persist-credentials: false
- name: Check and notify
@@ -57,21 +60,36 @@ jobs:
pull_number: pull.number,
});
const files = await github.paginate(listFilesOpts);
// Match on `filename`, not `contents_url`: the API percent-encodes
// path separators in `contents_url` (`/contents/superset%2Fmigrations%2F...`),
// so a substring test for `/contents/superset/migrations` never matches.
if (
files.some(x => x.contents_url.includes('/contents/superset/migrations'))
files.some(x => x.filename.startsWith('superset/migrations/'))
) {
console.log(`PR #${pull.number} "${pull.title}" also added db migration`)
await github.rest.issues.createComment({
issue_number: context.issue.number,
owner: context.repo.owner,
repo: context.repo.repo,
issue_number: pull.number,
body:
`# 🙅‍♂️ 🙅‍♂️ 🙅‍♂️ 🙅‍♂️ 🙅‍♂️ 🙅‍♂️ 🙅‍♂️ 🙅‍♂️ 🙅‍♂️ 🙅‍♂️ 🙅‍♂️ 🙅‍♂️ 🙅‍♂️ 🙅‍♂️ 🙅‍♂️ 🙅‍♂️` +
`❗ @${pull.user.login} Your base branch \`${currentBranch}\` has ` +
'also updated `superset/migrations`.\n' +
`### ⚠️ Possible DB migration conflict\n` +
`\n` +
`@${pull.user.login} the base branch \`${currentBranch}\` picked up a new database ` +
'migration under `superset/migrations/` after this PR was opened, and this PR adds or ' +
'modifies migration files too. Alembic migrations form a single linear chain, so if both ' +
'branch off the same parent revision, merging this PR as-is could leave the migration ' +
'history with two heads instead of one, which makes `superset db upgrade` fail with ' +
'`Multiple head revisions are present`.\n' +
'\n' +
'**Please consider rebasing your branch and [resolving potential db migration conflicts](https://superset.apache.org/docs/contributing/development#merging-db-migrations).**',
'To check and, if needed, fix this:\n' +
'\n' +
`1. Rebase this branch onto the latest \`${currentBranch}\`.\n` +
'2. Run `superset db heads`. If it lists more than one revision, you have a conflict.\n' +
"3. In your new migration's script, update `down_revision` (and the `Revises` comment) " +
'to point at the other head instead, so the chain has a single head again.\n' +
'\n' +
'See [Merging DB Migrations](https://superset.apache.org/docs/contributing/development#merging-db-migrations) ' +
'in the contributing guide for a worked example.',
});
}
}

View File

@@ -0,0 +1,99 @@
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements. See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership. The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied. See the License for the
# specific language governing permissions and limitations
# under the License.
name: Check OpenAPI spec drift
on:
push:
branches:
- "master"
- "[0-9].[0-9]*"
pull_request:
types: [synchronize, opened, reopened, ready_for_review]
# Deliberately unfiltered by `paths`: a required check that does not run on a
# PR blocks it from merging forever.
concurrency:
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.run_id }}
cancel-in-progress: true
permissions:
contents: read
jobs:
check-openapi-spec-drift:
runs-on: ubuntu-26.04
steps:
- name: "Checkout ${{ github.ref }} ( ${{ github.sha }} )"
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
with:
persist-credentials: false
- name: Setup Python
uses: $/.github/actions/setup-backend/
with:
# The generated output depends on the pinned apispec version.
requirements-type: base
- name: Regenerate the spec
env:
# No config file: the spec documents what a default deployment
# registers, so feature flags must stay off.
SUPERSET__SQLALCHEMY_DATABASE_URI: "sqlite:///:memory:"
FLASK_APP: "superset.app:create_app()"
run: superset update-api-docs
- name: Assert the published spec is up to date
env:
SPEC: docs/static/resources/openapi.json
run: |
if git diff --quiet -- "$SPEC"; then
exit 0
fi
# Staged to a file, not piped: `head` closing the pipe would
# SIGPIPE-kill `git diff` under pipefail and abort this step.
diff_file="$RUNNER_TEMP/openapi.diff"
git diff -- "$SPEC" > "$diff_file"
regen="SUPERSET__SQLALCHEMY_DATABASE_URI='sqlite:///:memory:' FLASK_APP='superset.app:create_app()' superset update-api-docs"
echo "::error::$SPEC is stale. Regenerate it on the pinned requirements:"
echo "$regen"
git diff --stat -- "$SPEC"
# Summaries cap at 1 MiB, well under a full regeneration.
{
echo '### OpenAPI spec is stale'
echo
git diff --stat -- "$SPEC"
echo
echo 'Regenerate with:'
echo
echo '```bash'
echo "$regen"
echo '```'
echo
echo '```diff'
head -300 "$diff_file"
echo '```'
if [ "$(wc -l < "$diff_file")" -gt 300 ]; then
echo
echo '_Truncated at 300 lines; see the job log for the full diff._'
fi
} >> "$GITHUB_STEP_SUMMARY"
echo "::group::Full diff"
cat "$diff_file"
echo "::endgroup::"
exit 1

View File

@@ -11,6 +11,7 @@ on:
permissions:
contents: read
pull-requests: read
actions: read
# cancel previous workflow jobs for PRs
concurrency:
@@ -19,10 +20,14 @@ concurrency:
jobs:
check-python-deps:
runs-on: ubuntu-22.04
runs-on: ubuntu-26.04
steps:
- uses: Kesin11/actions-timeline@57fc93f20c6da7fbc14063c6d24a2a5627c799ad # v3.2.0
with:
expand-composite-actions: true
- name: "Checkout ${{ github.ref }} ( ${{ github.sha }} )"
uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
with:
persist-credentials: false
submodules: recursive
@@ -30,13 +35,13 @@ jobs:
- name: Check for file changes
id: check
uses: ./.github/actions/change-detector/
uses: $/.github/actions/change-detector/
with:
token: ${{ secrets.GITHUB_TOKEN }}
- name: Setup Python
if: steps.check.outputs.python
uses: ./.github/actions/setup-backend/
uses: $/.github/actions/setup-backend/
# Authenticate the Docker daemon so the python:slim pull in
# uv-pip-compile.sh uses our (much higher) authenticated rate limit
@@ -46,7 +51,7 @@ jobs:
- name: Login to Docker Hub
if: steps.check.outputs.python
continue-on-error: true
uses: docker/login-action@650006c6eb7dba73a995cc03b0b2d7f5ca915bee # v4.2.0
uses: docker/login-action@dbcb813823bdd20940b903addbd779551569679f # v4.6.0
with:
username: ${{ secrets.DOCKERHUB_USER }}
password: ${{ secrets.DOCKERHUB_TOKEN }}

134
.github/workflows/chromatic.yml vendored Normal file
View File

@@ -0,0 +1,134 @@
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements. See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership. The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied. See the License for the
# specific language governing permissions and limitations
# under the License.
# Publishes superset-frontend's Storybook to Chromatic for visual
# regression testing. See https://www.chromatic.com/docs/github-actions
#
# Runs on pushes to master (keeps the Chromatic baseline in sync with
# mainline) and on pull requests that touch superset-frontend. Fork PRs
# don't receive CHROMATIC_PROJECT_TOKEN -- GitHub withholds repository
# secrets from pull_request runs triggered by a fork -- so the publish
# steps below no-op for them (via the CHROMATIC_PROJECT_TOKEN != '' guard)
# rather than failing.
#
# Non-blocking for now (exitZeroOnChanges: true): visual changes are
# surfaced as a PR check/comment for review, not enforced as a merge gate.
# A prior Chromatic setup here (#21095) was removed in #27232 for being
# unmaintained and overlapping with Applitools (since also discontinued).
# Keep this one simple and watch it before considering a required check.
#
# The master (push) run auto-accepts its own changes so the baseline stays
# current; otherwise every subsequent PR would keep reporting the same
# already-merged diff against a stale baseline. PR runs are left alone so a
# human still reviews what changed.
name: Chromatic
on:
push:
branches:
- master
paths:
- "superset-frontend/**"
- ".github/workflows/chromatic.yml"
pull_request:
types: [synchronize, opened, reopened, ready_for_review]
paths:
- "superset-frontend/**"
workflow_dispatch: {}
# cancel previous workflow jobs for PRs
concurrency:
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.run_id }}
cancel-in-progress: true
env:
TAG: apache/superset:chromatic-${{ github.run_id }}
CHROMATIC_PROJECT_TOKEN: ${{ secrets.CHROMATIC_PROJECT_TOKEN }}
permissions:
contents: read
jobs:
chromatic:
runs-on: ubuntu-26.04
timeout-minutes: 30
# pull-requests: write lets chromaui/action post its check and PR
# comment. Withheld automatically by GitHub for fork-triggered
# pull_request runs, same as CHROMATIC_PROJECT_TOKEN above.
permissions:
contents: read
pull-requests: write
steps:
- name: Checkout Code
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
with:
persist-credentials: false
# TurboSnap (onlyChanged below) needs history to diff against the
# baseline commit, but NOT fetch-depth: 0. This Chromatic project
# was dormant for ~2 years (Chromatic here shipped in #21095,
# removed in #27232) before this workflow, so its last known
# baseline predates thousands of commits on a very active repo.
# With full history, Chromatic's CLI tries to `git log` every
# commit back to that ancient baseline as individual CLI args and
# hits the OS ARG_MAX limit (E2BIG) -- see
# https://github.com/chromaui/chromatic-cli/issues/432, where the
# Chromatic team's own recommended workaround is exactly this: a
# bounded depth, since a multi-year-old baseline isn't useful
# anyway. 500 is far more than any realistic PR needs once a
# recent baseline exists (i.e. after this workflow's own first
# successful run on master).
fetch-depth: 500
ref: ${{ github.event_name == 'pull_request' && github.event.pull_request.head.sha || github.sha }}
- name: Build Docker Image
if: ${{ env.CHROMATIC_PROJECT_TOKEN != '' }}
run: |
docker buildx build \
-t $TAG \
--cache-from=type=registry,ref=apache/superset-cache:3.11-slim-trixie \
--target superset-node-ci \
.
# --webpack-stats-json writes preview-stats.json into storybook-static.
# TurboSnap (onlyChanged below) needs it to trace which stories a
# changed file affects; without it, chromaui/action fails with "Could
# not retrieve dependent story files" since storybookBuildDir points
# at an already-built Storybook it can't inject its own stats
# collection into.
- name: Build Storybook
if: ${{ env.CHROMATIC_PROJECT_TOKEN != '' }}
run: |
mkdir -p ${{ github.workspace }}/superset-frontend/storybook-static
docker run \
-v ${{ github.workspace }}/superset-frontend/storybook-static:/app/superset-frontend/storybook-static \
--rm $TAG \
bash -c "npm i && npm run build-storybook -- --webpack-stats-json"
- name: Publish to Chromatic
if: ${{ env.CHROMATIC_PROJECT_TOKEN != '' }}
uses: chromaui/action@db3ceb5efb0cd7447d63c2d8cce7da732ce89322 # v18.10.1
with:
projectToken: ${{ env.CHROMATIC_PROJECT_TOKEN }}
token: ${{ secrets.GITHUB_TOKEN }}
workingDir: superset-frontend
storybookBuildDir: storybook-static
# TurboSnap: only re-snapshot stories affected by files changed
# since the baseline build.
onlyChanged: true
exitZeroOnChanges: true
autoAcceptChanges: ${{ github.event_name == 'push' }}
zip: true

View File

@@ -14,24 +14,26 @@ concurrency:
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.run_id }}
cancel-in-progress: true
permissions:
contents: read
jobs:
changes:
runs-on: ubuntu-24.04
runs-on: ubuntu-slim
timeout-minutes: 10
permissions:
contents: read
pull-requests: read
outputs:
python: ${{ steps.check.outputs.python }}
frontend: ${{ steps.check.outputs.frontend }}
languages: ${{ steps.check.outputs.languages }}
steps:
- name: Checkout
uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
with:
persist-credentials: false
- name: Check for file changes
id: check
uses: ./.github/actions/change-detector/
uses: $/.github/actions/change-detector/
with:
token: ${{ secrets.GITHUB_TOKEN }}
@@ -41,9 +43,9 @@ jobs:
# Skip on PRs that touch neither code group (e.g. docs-only) so the
# analysis runners don't spin up. push/schedule runs always proceed:
# the change-detector returns "all changed" for non-PR events.
if: needs.changes.outputs.python == 'true' || needs.changes.outputs.frontend == 'true'
runs-on: ubuntu-24.04
timeout-minutes: 30
if: ${{ contains(fromJSON(needs.changes.outputs.languages), 'python') || contains(fromJSON(needs.changes.outputs.languages), 'javascript') }}
runs-on: ubuntu-26.04
timeout-minutes: 15
permissions:
actions: read
contents: read
@@ -53,18 +55,18 @@ jobs:
strategy:
fail-fast: false
matrix:
language: ["python", "javascript"]
language: ${{ fromJson(needs.changes.outputs.languages) }}
# Learn more about CodeQL language support at https://aka.ms/codeql-docs/language-support
steps:
- name: Checkout repository
uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
with:
persist-credentials: false
# Initializes the CodeQL tools for scanning.
- name: Initialize CodeQL
uses: github/codeql-action/init@8aad20d150bbac5944a9f9d289da16a4b0d87c1e # v4.36.2
uses: github/codeql-action/init@2892aa5e19bbd11bc0cff5427e3b750a04d9e3c2 # v4.38.2
with:
languages: ${{ matrix.language }}
# If you wish to specify custom queries, you can do so here or in a config file.
@@ -75,6 +77,6 @@ jobs:
# queries: security-extended,security-and-quality
- name: Perform CodeQL Analysis
uses: github/codeql-action/analyze@8aad20d150bbac5944a9f9d289da16a4b0d87c1e # v4.36.2
uses: github/codeql-action/analyze@2892aa5e19bbd11bc0cff5427e3b750a04d9e3c2 # v4.38.2
with:
category: "/language:${{matrix.language}}"

View File

@@ -0,0 +1,63 @@
name: Auto-approve Dependabot patch bumps
# Posts an approving review on Dependabot PRs that only bump a patch
# version, using the same trigger/guard convention already proven to work
# for Dependabot PRs in sync-requirements-for-python-dep-upgrade-pr.yml
# (plain `pull_request` gets a working, write-capable GITHUB_TOKEN here
# because Dependabot pushes branches directly to this repo, not a fork).
#
# This does NOT auto-merge anything - repo-wide auto-merge is disabled
# (Settings > General > Pull Requests > "Allow auto-merge" is off), and
# flipping that is a separate, repo-wide decision this workflow doesn't
# make on its own. Branch protection also still requires 1 approving
# review; this just means that review can already exist by the time a
# human looks at the PR, for the (large majority of) ecosystems whose
# files aren't matched by any CODEOWNERS pattern. One ecosystem - the npm
# bump under .github/actions - matches the /.github/ CODEOWNERS entry, so
# those PRs will still need a human owner's approval regardless of this
# workflow; it posts a review there too, but that alone won't satisfy the
# code-owner requirement.
on:
pull_request:
types: [opened, synchronize]
# Cancel a superseded run if Dependabot pushes to the same PR again before
# the previous run finished (matches the pattern used elsewhere in
# superset-docs-verify.yml).
concurrency:
group: ${{ github.workflow }}-${{ github.event.pull_request.number }}
cancel-in-progress: true
permissions: {}
jobs:
approve-patch-bump:
name: Approve patch-level bump
# Mirrors the guard in sync-requirements-for-python-dep-upgrade-pr.yml:
# limited to (1) PRs authored by Dependabot and (2) the upstream repo,
# since forked PRs don't get a write-capable token here anyway.
if: >
github.repository == 'apache/superset' &&
github.event.pull_request.user.login == 'dependabot[bot]' &&
github.event.pull_request.head.repo.fork == false
runs-on: ubuntu-latest
permissions:
pull-requests: write # to post the approving review via `gh pr review`
steps:
- name: Fetch Dependabot metadata
id: metadata
# This exact SHA is on ASF Infra's action allowlist
# (apache/infrastructure-actions approved_patterns.yml) as of this
# writing. Do not bump without opening an Infra ticket to allow
# the new SHA first!
uses: dependabot/fetch-metadata@25dd0e34f4fe68f24cc83900b1fe3fe149efef98 # v3.1.0
- name: Approve patch-level bump
if: steps.metadata.outputs.update-type == 'version-update:semver-patch'
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
PR_URL: ${{ github.event.pull_request.html_url }}
DEPENDENCY_NAMES: ${{ steps.metadata.outputs.dependency-names }}
run: |
gh pr review --approve "$PR_URL" \
--body "Auto-approved: patch-level bump only ($DEPENDENCY_NAMES)."

View File

@@ -20,19 +20,19 @@ concurrency:
permissions:
contents: read
actions: read
jobs:
dependency-review:
if: github.event_name == 'pull_request'
runs-on: ubuntu-24.04
runs-on: ubuntu-slim
steps:
- name: "Checkout Repository"
uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
with:
persist-credentials: false
- name: "Dependency Review"
uses: actions/dependency-review-action@a1d282b36b6f3519aa1f3fc636f609c47dddb294 # v5.0.0
continue-on-error: true
with:
fail-on-severity: critical
# compatible/incompatible licenses addressed here: https://www.apache.org/legal/resolved.html
@@ -48,20 +48,45 @@ jobs:
python-dependency-liccheck:
# NOTE: Configuration for liccheck lives in our pyproject.yml.
# You cannot use a liccheck.ini file in this workflow.
runs-on: ubuntu-22.04
runs-on: ubuntu-slim
steps:
- uses: Kesin11/actions-timeline@57fc93f20c6da7fbc14063c6d24a2a5627c799ad # v3.2.0
with:
expand-composite-actions: true
- name: "Checkout Repository"
uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
with:
persist-credentials: false
- name: Setup Python
uses: ./.github/actions/setup-backend/
uses: $/.github/actions/setup-backend/
with:
requirements-type: base
- name: "Set up liccheck"
run: |
# liccheck (as of 0.9.2) still does a bare `import pkg_resources`
# without declaring setuptools as a dependency, relying on it
# having historically been bundled. setuptools 81+ (installed
# above via requirements/base.txt) dropped the pkg_resources
# subpackage entirely, so liccheck's own import breaks outright.
#
# Reinstalling an older setuptools would restore pkg_resources but
# would also downgrade the *real* setuptools install, which then
# trips liccheck's own working_set.resolve() -- it cross-checks
# requirements/base.txt's declared `setuptools==84.0.0` against
# what's actually installed, and a downgrade makes those disagree.
#
# Instead, vendor just the pkg_resources/ package files from an
# old setuptools wheel into site-packages, leaving the real
# setuptools install (and its dist-info metadata) untouched. This
# gives liccheck an importable pkg_resources whose own working-set
# scan still correctly reports the real installed setuptools
# version, so no conflict is raised.
pip download "setuptools<81" --no-deps -d /tmp/old-setuptools
python -m zipfile -e /tmp/old-setuptools/setuptools-*.whl /tmp/old-setuptools-extracted/
cp -r /tmp/old-setuptools-extracted/pkg_resources "$(python -c 'import site; print(site.getsitepackages()[0])')/"
uv pip install --system liccheck
- name: "Run liccheck"
run: |

View File

@@ -13,13 +13,9 @@ permissions:
contents: read
pull-requests: read
concurrency:
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.run_id }}
cancel-in-progress: true
jobs:
changes:
runs-on: ubuntu-24.04
runs-on: ubuntu-26.04
timeout-minutes: 10
permissions:
contents: read
@@ -30,27 +26,257 @@ jobs:
docker: ${{ steps.check.outputs.docker }}
steps:
- name: Checkout
uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
with:
persist-credentials: false
- name: Check for file changes
id: check
uses: ./.github/actions/change-detector/
uses: $/.github/actions/change-detector/
with:
token: ${{ secrets.GITHUB_TOKEN }}
setup_matrix:
runs-on: ubuntu-24.04
runs-on: ubuntu-slim
timeout-minutes: 5
outputs:
matrix_config: ${{ steps.set_matrix.outputs.matrix_config }}
steps:
- id: set_matrix
run: |
MATRIX_CONFIG=$(if [ "${{ github.event_name }}" == "pull_request" ]; then echo '["dev", "lean"]'; else echo '["dev", "lean", "py310", "websocket", "dockerize", "py311", "py312"]'; fi)
MATRIX_CONFIG=$(if [ "${{ github.event_name }}" == "pull_request" ]; then echo '["superset", "dev", "lean"]'; else echo '["superset", "dev", "lean", "py311", "py312"]'; fi)
echo "matrix_config=${MATRIX_CONFIG}" >> $GITHUB_OUTPUT
echo $GITHUB_OUTPUT
# Runs unconditionally (no dependency on `changes`, and no build-preset
# matrix restriction) so regressions in the assembled Supersetbot command
# are always caught on PRs. Without this, the real docker-build job only
# runs when the change detector flags docker/python/frontend changes (a
# workflow-only edit like this one does not), and even then the PR build
# matrix never includes the "py311"/"py312" presets that logic protects.
docker-command-check:
name: verify docker build command
runs-on: ubuntu-26.04
timeout-minutes: 5
steps:
- name: Checkout
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
with:
persist-credentials: false
- name: Setup supersetbot
uses: $/.github/actions/setup-supersetbot/
- name: Assert generated docker build command
shell: bash
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
set -euo pipefail
# Asserts against the actual buildx command line `supersetbot docker
# --dry-run` would run, not just this repo's own extra-flags helper,
# so a regression in supersetbot itself (dropping the py311/py312
# PY_VER pin, or reordering args so our override no longer lands
# last) is caught here too, instead of only surfacing on master.
docker_command() {
local preset="$1" extra_flags="$2"
shift 2
# Supersetbot adds its own --cache-to whenever DOCKERHUB_TOKEN is
# present. Hide the token from Supersetbot so cache export is
# controlled only by docker-build-extra-flags.sh, mirroring the
# docker-build job. assert_supersetbot_exports_cache_with_token
# below covers the unhidden case.
DOCKERHUB_TOKEN= supersetbot docker \
--preset "$preset" \
--platform linux/amd64 \
"$@" \
--extra-flags "$extra_flags" \
--dry-run
}
docker_command_with_token() {
local preset="$1" extra_flags="$2"
shift 2
DOCKERHUB_TOKEN=dummy supersetbot docker \
--preset "$preset" \
--platform linux/amd64 \
"$@" \
--extra-flags "$extra_flags" \
--dry-run
}
load_build_plan() {
local event_name="$1" ref="$2" ref_name="$3"
eval "$(bash scripts/docker-build-plan.sh "$event_name" "$ref" "$ref_name")"
}
assert_build_plan() {
local event_name="$1" ref="$2" ref_name="$3" expected_context="$4" expected_context_ref="$5" expected_push_or_load="$6" expected_platform="$7" expected_cache_publish="$8"
load_build_plan "$event_name" "$ref" "$ref_name"
if [ "$BUILD_CONTEXT" != "$expected_context" ] ||
[ "$BUILD_CONTEXT_REF" != "$expected_context_ref" ] ||
[ "$PUSH_OR_LOAD" != "$expected_push_or_load" ] ||
[ "$PLATFORM_ARG" != "$expected_platform" ] ||
[ "$PUBLISH_DOCKER_CACHE" != "$expected_cache_publish" ]; then
echo "::error::unexpected docker build plan for event=$event_name ref=$ref ref_name=$ref_name: context=$BUILD_CONTEXT context_ref=$BUILD_CONTEXT_REF push_or_load=$PUSH_OR_LOAD platform=$PLATFORM_ARG publish_cache=$PUBLISH_DOCKER_CACHE"
exit 1
fi
}
assert_effective_py_ver() {
local preset="$1" expected="$2" extra_flags command actual
extra_flags="$(scripts/docker-build-extra-flags.sh "$preset" dummy-tag)"
command="$(docker_command "$preset" "$extra_flags")"
# docker buildx keeps the LAST value of a repeated --build-arg key.
actual="$(grep -oE -- '--build-arg PY_VER=[^[:space:]]+' <<<"$command" | tail -1)"
if [ "$actual" != "--build-arg PY_VER=$expected" ]; then
echo "::error::preset '$preset' expected effective --build-arg PY_VER=$expected, got: ${actual:-<none>} (full command: $command)"
exit 1
fi
}
assert_cache_ref() {
local preset="$1" expected="$2" extra_flags command
extra_flags="$(scripts/docker-build-extra-flags.sh "$preset" dummy-tag)"
command="$(docker_command "$preset" "$extra_flags")"
if ! grep -Fq -- "--cache-from=type=registry,ref=apache/superset-cache:$expected" <<<"$command"; then
echo "::error::preset '$preset' expected cache-from apache/superset-cache:$expected (full command: $command)"
exit 1
fi
}
assert_master_tag() {
local preset="$1" expected="$2" extra_flags command
load_build_plan push refs/heads/master master
extra_flags="$(scripts/docker-build-extra-flags.sh "$preset" dummy-tag)"
command="$(docker_command "$preset" "$extra_flags" --context "$BUILD_CONTEXT" --context-ref "$BUILD_CONTEXT_REF")"
if ! grep -Eq -- "-t apache/superset:${expected}([[:space:]]|$)" <<<"$command"; then
echo "::error::preset '$preset' expected master tag apache/superset:$expected (full command: $command)"
exit 1
fi
}
assert_no_cache_push_for_validation() {
local preset="$1" extra_flags command
load_build_plan push refs/heads/7.0 7.0
extra_flags="$(PUBLISH_DOCKER_CACHE="" DOCKERHUB_TOKEN=dummy scripts/docker-build-extra-flags.sh "$preset" dummy-tag)"
command="$(GITHUB_REF=refs/heads/7.0 docker_command "$preset" "$extra_flags" --context "$BUILD_CONTEXT" --context-ref "$BUILD_CONTEXT_REF")"
if grep -Fq -- "--cache-to=type=registry" <<<"$command"; then
echo "::error::preset '$preset' unexpectedly exports registry cache during validation (full command: $command)"
exit 1
fi
}
# The assertion above only proves our own helper stays quiet; it is
# the docker-build job blanking DOCKERHUB_TOKEN that stops Supersetbot
# from adding an implicit --cache-to of its own. Pin that Supersetbot
# behaviour here, so the reason the production guard exists cannot
# quietly disappear and leave validation builds exporting unreviewed
# layers to the shared registry cache.
assert_supersetbot_exports_cache_with_token() {
local preset="$1" extra_flags command
load_build_plan push refs/heads/7.0 7.0
extra_flags="$(PUBLISH_DOCKER_CACHE="" DOCKERHUB_TOKEN=dummy scripts/docker-build-extra-flags.sh "$preset" dummy-tag)"
command="$(GITHUB_REF=refs/heads/7.0 docker_command_with_token "$preset" "$extra_flags" --context "$BUILD_CONTEXT" --context-ref "$BUILD_CONTEXT_REF")"
if ! grep -Fq -- "--cache-to=type=registry" <<<"$command"; then
echo "::error::supersetbot no longer adds an implicit --cache-to when DOCKERHUB_TOKEN is set; the token-hiding guard in docker-build may be obsolete (full command: $command)"
exit 1
fi
}
assert_publish_guard() {
local event_name="$1" ref="$2" sha="$3" tip_sha="$4" expected="$5"
eval "$(bash scripts/docker-publish-guard.sh "$event_name" "$ref" "$sha" "$tip_sha")"
if [ "$PUBLISH" != "$expected" ]; then
echo "::error::publish guard for event=$event_name ref=$ref sha=$sha tip=$tip_sha expected PUBLISH=$expected, got $PUBLISH"
exit 1
fi
}
assert_cache_push_for_master() {
local preset="$1" expected="$2" extra_flags command
load_build_plan push refs/heads/master master
extra_flags="$(PUBLISH_DOCKER_CACHE=true DOCKERHUB_TOKEN=dummy scripts/docker-build-extra-flags.sh "$preset" dummy-tag)"
command="$(docker_command "$preset" "$extra_flags" --context "$BUILD_CONTEXT" --context-ref "$BUILD_CONTEXT_REF")"
if ! grep -Fq -- "--cache-to=type=registry,mode=max,ref=apache/superset-cache:$expected" <<<"$command"; then
echo "::error::preset '$preset' expected cache-to apache/superset-cache:$expected for master publish (full command: $command)"
exit 1
fi
}
assert_release_tag() {
local preset="$1" expected="$2" extra_flags command
extra_flags="$(scripts/docker-build-extra-flags.sh "$preset" "" release)"
command="$(docker_command "$preset" "$extra_flags" --context release --context-ref 6.1.0)"
if ! grep -Eq -- "-t apache/superset:${expected}([[:space:]]|$)" <<<"$command"; then
echo "::error::preset '$preset' expected release tag apache/superset:$expected (full command: $command)"
exit 1
fi
if grep -Fq -- "--build-arg INCLUDE_CHROMIUM=" <<<"$command"; then
echo "::error::preset '$preset' overrides the release Dockerfile's Chromium default (full command: $command)"
exit 1
fi
}
# tag-release.yml snapshots this helper from master, then checks out
# the release ref before running it, so the helper has to read the
# Dockerfile from the working tree rather than from wherever it
# lives. Simulate that ref swap against a synthetic older tree: a
# real release ref pins an older PY_VER and carries its own Chromium
# default, neither of which release mode may override.
assert_release_ref_swap() {
local snapshot release_tree flags
snapshot="$(mktemp -d)/docker-build-extra-flags.sh"
cp scripts/docker-build-extra-flags.sh "$snapshot"
release_tree="$(mktemp -d)"
printf 'ARG PY_VER=3.11-slim-bookworm\n' >"$release_tree/Dockerfile"
flags="$(cd "$release_tree" && bash "$snapshot" superset "" release)"
if ! grep -Fq -- "--build-arg PY_VER=3.11-slim-bookworm" <<<"$flags"; then
echo "::error::release build ignored the checked-out Dockerfile's PY_VER (flags: $flags)"
exit 1
fi
if grep -Fq -- "--build-arg INCLUDE_CHROMIUM=" <<<"$flags"; then
echo "::error::release build overrode the checked-out Dockerfile's Chromium default (flags: $flags)"
exit 1
fi
# The same tree in ci mode must still get the validation override,
# so the two modes cannot silently converge.
flags="$(cd "$release_tree" && bash "$snapshot" superset dummy-tag ci)"
if ! grep -Fq -- "--build-arg INCLUDE_CHROMIUM=false" <<<"$flags"; then
echo "::error::ci build lost the INCLUDE_CHROMIUM=false override (flags: $flags)"
exit 1
fi
}
assert_build_plan push refs/heads/master master push master --push "--platform linux/arm64 --platform linux/amd64" true
assert_build_plan push refs/heads/7.0 7.0 push "" --load "--platform linux/amd64" ""
assert_build_plan pull_request refs/pull/44250/merge "" pull_request "" --load "--platform linux/amd64" ""
# A master push publishes only while its commit is still the branch
# tip. The second case is the delayed-A/fast-B inversion: A's change
# detection lagged, B published first, and A must not roll the
# mutable master* tags back to the older digest.
assert_publish_guard push refs/heads/master aaaa111 aaaa111 true
assert_publish_guard push refs/heads/master aaaa111 bbbb222 false
assert_publish_guard push refs/heads/7.0 aaaa111 bbbb222 true
assert_publish_guard pull_request refs/pull/44250/merge aaaa111 bbbb222 true
assert_supersetbot_exports_cache_with_token superset
for preset in superset dev lean; do
assert_effective_py_ver "$preset" "3.11-slim-trixie"
expected_cache="3.11-slim-trixie"
if [ "$preset" != "superset" ]; then
expected_cache="${expected_cache}-${preset}"
fi
assert_cache_ref "$preset" "$expected_cache"
assert_no_cache_push_for_validation "$preset"
done
assert_effective_py_ver py311 "3.11-slim-bookworm"
assert_cache_ref py311 "3.11-slim-bookworm"
assert_no_cache_push_for_validation py311
assert_effective_py_ver py312 "3.12-slim-bookworm"
assert_cache_ref py312 "3.12-slim-bookworm"
assert_no_cache_push_for_validation py312
assert_master_tag superset master
assert_master_tag dev master-dev
assert_master_tag lean master-lean
assert_master_tag py311 master-py311
assert_master_tag py312 master-py312
assert_cache_push_for_master superset "3.11-slim-trixie"
assert_cache_push_for_master dev "3.11-slim-trixie-dev"
assert_cache_push_for_master lean "3.11-slim-trixie-lean"
assert_cache_push_for_master py311 "3.11-slim-bookworm"
assert_cache_push_for_master py312 "3.12-slim-bookworm"
assert_release_tag superset "6.1.0"
assert_release_tag dev "6.1.0-dev"
assert_release_tag lean "6.1.0-lean"
assert_release_tag py311 "6.1.0-py311"
assert_release_tag py312 "6.1.0-py312"
assert_release_ref_swap
echo "Docker build command verified for Python versions, cache refs, cache export, publish guard, master tags, release tags, and the release ref swap"
docker-build:
name: docker-build
needs: [setup_matrix, changes]
@@ -58,12 +284,27 @@ jobs:
needs.changes.outputs.python == 'true' ||
needs.changes.outputs.frontend == 'true' ||
needs.changes.outputs.docker == 'true'
runs-on: ubuntu-24.04
runs-on: ubuntu-26.04
timeout-minutes: 60
permissions:
contents: read
# Required for the vulnerability scan below to upload its SARIF
# results to GitHub code scanning (advanced-security is enabled by
# default), matching the same grant in github-action-validator.yml.
security-events: write
strategy:
matrix:
build_preset: ${{fromJson(needs.setup_matrix.outputs.matrix_config)}}
fail-fast: false
# Apply concurrency after change detection. A docs-only push has no
# docker-build job and cannot replace a pending publisher. Publishing
# pushes queue so a slower run cannot overwrite mutable tags, while
# superseded pull_request validation builds are cancelled as before --
# otherwise every new commit on a PR would wait behind the abandoned
# merge ref's build for up to the 60 minute job timeout.
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}-${{ matrix.build_preset }}
cancel-in-progress: ${{ github.event_name == 'pull_request' }}
env:
DOCKERHUB_USER: ${{ secrets.DOCKERHUB_USER }}
DOCKERHUB_TOKEN: ${{ secrets.DOCKERHUB_TOKEN }}
@@ -71,7 +312,7 @@ jobs:
steps:
- name: "Checkout ${{ github.ref }} ( ${{ github.sha }} )"
uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
with:
persist-credentials: false
@@ -94,42 +335,89 @@ jobs:
echo "Disk after cleanup:"; df -h /
- name: Setup Docker Environment
uses: ./.github/actions/setup-docker
uses: $/.github/actions/setup-docker
with:
dockerhub-user: ${{ secrets.DOCKERHUB_USER }}
dockerhub-token: ${{ secrets.DOCKERHUB_TOKEN }}
build: "true"
- name: Setup supersetbot
uses: ./.github/actions/setup-supersetbot/
uses: $/.github/actions/setup-supersetbot/
# Concurrency serializes the master matrix per preset, but it does not
# order the runs entering it: a run whose change detection lagged can
# acquire the lock after a newer commit already published, and would
# then move the mutable `master*` tags back to the older digest. Reject
# the stale SHA instead. Every later step is gated on the result,
# because a skipped build leaves no $IMAGE_TAG for them to act on.
- name: Guard against publishing a superseded master commit
id: publish_guard
shell: bash
run: |
set -euo pipefail
TIP_SHA=""
if [ "$GITHUB_EVENT_NAME" = "push" ] && [ "$GITHUB_REF" = "refs/heads/master" ]; then
# Public repo, so ls-remote needs no credentials; this keeps
# persist-credentials: false on the checkout above. Retried
# because a transient blip here would otherwise fail the job
# rather than let it publish from a possibly superseded commit.
for attempt in 1 2 3; do
if TIP_SHA="$(git ls-remote "$GITHUB_SERVER_URL/$GITHUB_REPOSITORY" refs/heads/master | cut -f1)" &&
[ -n "$TIP_SHA" ]; then
break
fi
if [ "$attempt" -eq 3 ]; then
echo "::error::could not read the master tip to validate $GITHUB_SHA"
exit 1
fi
echo "::warning::ls-remote attempt ${attempt} failed; retrying in 10s..."
sleep 10
done
fi
eval "$(bash scripts/docker-publish-guard.sh "$GITHUB_EVENT_NAME" "$GITHUB_REF" "$GITHUB_SHA" "$TIP_SHA")"
if [ "$PUBLISH" != "true" ]; then
echo "::notice::master advanced to ${TIP_SHA} while ${GITHUB_SHA} was queued; skipping this build"
fi
echo "publish=$PUBLISH" >> "$GITHUB_OUTPUT"
- name: Build Docker Image
if: steps.publish_guard.outputs.publish == 'true'
shell: bash
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
BUILD_PRESET: ${{ matrix.build_preset }}
run: |
# Single platform builds in pull_request context to speed things up
if [ "$GITHUB_EVENT_NAME" = "push" ]; then
PLATFORM_ARG="--platform linux/arm64 --platform linux/amd64"
# can only --load images in single-platform builds
PUSH_OR_LOAD="--push"
elif [ "$GITHUB_EVENT_NAME" = "pull_request" ]; then
PLATFORM_ARG="--platform linux/amd64"
PUSH_OR_LOAD="--load"
fi
set -euo pipefail
# Release branch pushes and pull requests validate the build
# locally. Official release images are published only by the
# release workflow after the vote completes.
eval "$(bash scripts/docker-build-plan.sh "$GITHUB_EVENT_NAME" "$GITHUB_REF" "${GITHUB_REF_NAME:-}")"
export PUBLISH_DOCKER_CACHE
# Retry to absorb transient Docker Hub registry errors (base-image
# pull timeouts, 504/401 on push, ECONNRESET) that otherwise fail
# the whole job. buildx reuses the buildkit layer cache from the
# failed attempt, so a retry mostly re-does just the failed push.
#
# See scripts/docker-build-extra-flags.sh for why "py311"/"py312"
# are excluded from the PY_VER override applied to every other
# preset; that logic is also exercised on every PR by the
# always-on docker-command-check job, since this job itself
# only runs when the change detector flags docker/python/frontend
# changes and the PR build matrix never includes py311/py312.
EXTRA_FLAGS="$(scripts/docker-build-extra-flags.sh "$BUILD_PRESET" "$IMAGE_TAG")"
for attempt in 1 2 3; do
if supersetbot docker \
# Supersetbot adds --cache-to whenever DOCKERHUB_TOKEN is present.
# Docker auth was already configured above; hide the token from
# Supersetbot so release branches and PRs cannot write registry
# cache while using --load validation builds.
if DOCKERHUB_TOKEN= supersetbot docker \
$PUSH_OR_LOAD \
--preset "$BUILD_PRESET" \
--context "$EVENT" \
--context-ref "$RELEASE" $FORCE_LATEST \
--extra-flags "--build-arg INCLUDE_CHROMIUM=false --tag $IMAGE_TAG" \
--context "$BUILD_CONTEXT" \
--context-ref "$BUILD_CONTEXT_REF" \
--extra-flags "$EXTRA_FLAGS" \
$PLATFORM_ARG; then
break
fi
@@ -143,7 +431,9 @@ jobs:
# in the context of push (using multi-platform build), we need to pull the image locally
- name: Docker pull
if: github.event_name == 'push'
if: >-
steps.publish_guard.outputs.publish == 'true' &&
github.event_name == 'push' && github.ref == 'refs/heads/master'
run: |
for i in 1 2 3; do
docker pull $IMAGE_TAG && break
@@ -151,14 +441,86 @@ jobs:
done
- name: Print docker stats
if: steps.publish_guard.outputs.publish == 'true'
run: |
echo "SHA: ${{ github.sha }}"
echo "IMAGE: $IMAGE_TAG"
docker images $IMAGE_TAG
docker history $IMAGE_TAG
# Scan the built image for known vulnerabilities and publish results
# to the Security tab. Trivy did this until #38780 removed it: both
# aquasecurity/trivy-action and the trivy binary itself were
# compromised (twice) to steal GitHub Secrets from CI runs. Grype is a
# different tool from a different maintainer with no shared supply
# chain, and is already on the ASF Infra GitHub Actions allowlist.
- name: Scan built image for vulnerabilities
if: >-
steps.publish_guard.outputs.publish == 'true' &&
github.event_name == 'push' && github.ref == 'refs/heads/master' &&
contains(fromJson('["superset", "lean"]'), matrix.build_preset)
id: grype-scan
# This step's own failure (e.g. a transient issue pulling the Grype
# vulnerability DB) must not fail docker-build, matching the
# informational fail-build: false below -- one is findings, the
# other is the scan itself not completing.
continue-on-error: true
uses: anchore/scan-action@27805bf3b4e84b4a5c980df22ed233c00390a439 # v7.4.2
with:
image: ${{ env.IMAGE_TAG }}
output-format: sarif
severity-cutoff: high
only-fixed: true
# Informational only, matching the prior Trivy setup: this
# workflow does not gate merges on scan findings.
fail-build: false
- name: Upload vulnerability scan results to GitHub Security tab
if: >-
steps.publish_guard.outputs.publish == 'true' &&
github.event_name == 'push' && github.ref == 'refs/heads/master' &&
contains(fromJson('["superset", "lean"]'), matrix.build_preset) &&
steps.grype-scan.outputs.sarif != ''
continue-on-error: true
uses: github/codeql-action/upload-sarif@2892aa5e19bbd11bc0cff5427e3b750a04d9e3c2 # v4.38.2
with:
sarif_file: ${{ steps.grype-scan.outputs.sarif }}
# Both `superset` and `lean` are scanned now; without a distinct
# category per preset they would land under the same code-scanning
# entry and one build_preset's findings would overwrite the
# other's, mirroring the per-language category in
# codeql-analysis.yml.
category: "docker-${{ matrix.build_preset }}"
- name: WebSocket server smoke test
if: >-
steps.publish_guard.outputs.publish == 'true' &&
contains(fromJson('["superset", "lean", "dev"]'), matrix.build_preset)
shell: bash
run: |
# The realtime WebSocket server is bundled in the official image and
# launched via an alternate entrypoint; verify the bundled Node runtime
# starts it and it serves /health. (A JWT secret >= 32 bytes is required
# or the server refuses to start; no Redis is needed for /health.)
# All app-image presets are checked because docker-compose-non-dev.yml
# runs the websocket service from the dev target.
docker run -d --name superset-ws \
-e JWT_SECRET="ci-smoke-test-secret-ci-smoke-test-secret" \
-e PORT=8080 -p 8080:8080 \
"$IMAGE_TAG" /app/docker/entrypoints/run-websocket.sh
ok=""
for _ in $(seq 1 20); do
if curl -sf http://localhost:8080/health; then echo "ws /health OK"; ok=1; break; fi
sleep 2
done
docker logs superset-ws || true
docker rm -f superset-ws || true
[ "$ok" = "1" ] || { echo "::error::websocket /health did not come up"; exit 1; }
- name: docker-compose sanity check
if: matrix.build_preset == 'dev'
if: >-
steps.publish_guard.outputs.publish == 'true' &&
matrix.build_preset == 'dev'
shell: bash
env:
BUILD_PRESET: ${{ matrix.build_preset }}
@@ -173,11 +535,11 @@ jobs:
# goal is to check that building the latest image works, not required for all PR pushes
needs: changes
if: github.event_name == 'push' && github.ref == 'refs/heads/master' && needs.changes.outputs.docker == 'true'
runs-on: ubuntu-24.04
runs-on: ubuntu-26.04
timeout-minutes: 30
steps:
- name: "Checkout ${{ github.ref }} ( ${{ github.sha }} )"
uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
with:
persist-credentials: false
- name: Free up disk space
@@ -196,7 +558,7 @@ jobs:
/usr/local/share/boost || true
echo "Disk after cleanup:"; df -h /
- name: Setup Docker Environment
uses: ./.github/actions/setup-docker
uses: $/.github/actions/setup-docker
with:
dockerhub-user: ${{ secrets.DOCKERHUB_USER }}
dockerhub-token: ${{ secrets.DOCKERHUB_TOKEN }}
@@ -206,3 +568,14 @@ jobs:
shell: bash
run: |
docker compose -f docker-compose-image-tag.yml up superset-init --exit-code-from superset-init
actions-timeline:
needs: [docker-build, docker-compose-image-tag]
if: always()
runs-on: ubuntu-slim
permissions:
actions: read
steps:
- uses: Kesin11/actions-timeline@57fc93f20c6da7fbc14063c6d24a2a5627c799ad # v3.2.0
with:
expand-composite-actions: true

View File

@@ -15,7 +15,7 @@ jobs:
# gate on. Restrict to the canonical repo: forks cannot mint a valid OIDC
# token for this package and must not publish.
if: github.repository == 'apache/superset'
runs-on: ubuntu-24.04
runs-on: ubuntu-slim
permissions:
contents: read
id-token: write # required for npm trusted publishing (OIDC)
@@ -23,7 +23,7 @@ jobs:
run:
working-directory: superset-embedded-sdk
steps:
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
with:
persist-credentials: false
# Note: registry-url is intentionally omitted. When set, actions/setup-node
@@ -31,7 +31,7 @@ jobs:
# token, which makes npm attempt token auth and skip the OIDC
# trusted-publishing exchange. With no .npmrc auth line, npm authenticates
# via OIDC against the default registry (registry.npmjs.org).
- uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6
- uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0
with:
node-version-file: "./superset-embedded-sdk/.nvmrc"
- run: npm ci

View File

@@ -16,15 +16,15 @@ concurrency:
jobs:
embedded-sdk-test:
runs-on: ubuntu-24.04
runs-on: ubuntu-slim
defaults:
run:
working-directory: superset-embedded-sdk
steps:
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
with:
persist-credentials: false
- uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6
- uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0
with:
node-version-file: "./superset-embedded-sdk/.nvmrc"
registry-url: "https://registry.npmjs.org"

View File

@@ -0,0 +1,85 @@
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements. See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership. The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied. See the License for the
# specific language governing permissions and limitations
# under the License.
name: Enforce single Alembic migration head
on:
push:
branches:
- "master"
- "[0-9].[0-9]*"
pull_request:
types: [synchronize, opened, reopened, ready_for_review]
# No `paths:` filter on purpose: this job is a required status check, and a
# required check that never runs for a given PR blocks that PR from merging
# forever. It has to fire on every PR so it always reports a status; whether
# migrations changed is decided inside the job, not the trigger.
# cancel previous workflow jobs for PRs
concurrency:
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.run_id }}
cancel-in-progress: true
permissions:
contents: read
jobs:
enforce-single-migration-head:
runs-on: ubuntu-26.04
permissions:
contents: read
pull-requests: read
steps:
- name: "Checkout ${{ github.ref }} ( ${{ github.sha }} )"
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
with:
persist-credentials: false
- name: Check for migration file changes
id: check
uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0
with:
github-token: ${{ github.token }}
script: |
if (context.eventName === 'push') {
core.setOutput('changed', 'true');
return;
}
const files = await github.paginate(github.rest.pulls.listFiles, {
owner: context.repo.owner,
repo: context.repo.repo,
pull_number: context.issue.number,
});
const changed = files.some((f) => f.filename.startsWith('superset/migrations/'));
core.setOutput('changed', String(changed));
- name: Setup Python
if: steps.check.outputs.changed == 'true'
uses: $/.github/actions/setup-backend/
with:
requirements-type: base
- name: Assert a single Alembic head
if: steps.check.outputs.changed == 'true'
env:
SUPERSET__SQLALCHEMY_DATABASE_URI: "sqlite:///:memory:"
run: |
heads="$(superset db heads)"
echo "$heads"
head_count=$(printf '%s\n' "$heads" | grep -c .)
if [ "$head_count" -ne 1 ]; then
echo "::error::superset/migrations resolves to $head_count Alembic heads (expected exactly 1)."
echo "Another migration already landed with the same down_revision this branch was cut from."
echo "Add a no-op merge revision joining the heads: https://superset.apache.org/docs/contributing/development#merging-db-migrations"
exit 1
fi

View File

@@ -0,0 +1,136 @@
name: Frontend bundle size (nightly baseline + analyzer)
# Refreshes the bundle-size baseline that superset-frontend.yml's `bundle-size`
# job compares PRs against, and publishes a browsable bundle-analyzer treemap
# report of the same build. Deliberately NOT triggered on every push to
# master: a day-old baseline/report is fine for catching relative
# regressions on PRs and for browsing what's actually in the bundle, and
# building the production bundle on every one of the many pushes master
# gets per day would burn CI time for no benefit a nightly refresh doesn't
# already cover.
on:
schedule:
- cron: "0 6 * * *"
workflow_dispatch: {}
concurrency:
group: ${{ github.workflow }}
cancel-in-progress: true
env:
TAG: apache/superset:bundle-size-nightly-${{ github.run_id }}
permissions:
contents: read
jobs:
refresh-baseline:
runs-on: ubuntu-26.04
timeout-minutes: 30
env:
NETLIFY_SITE_ID: ${{ secrets.NETLIFY_BUNDLE_ANALYZER_SITE_ID }}
steps:
- name: "Checkout master"
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
with:
persist-credentials: false
ref: master
- name: Build Docker Image
run: |
docker buildx build \
-t $TAG \
--cache-from=type=registry,ref=apache/superset-cache:3.11-slim-trixie \
--target superset-node-ci \
.
# Same cache the PR-time bundle-size job restores/writes -- webpack's
# persistent filesystem cache turns a warm production build into ~20s
# instead of several minutes. See superset-frontend.yml for the
# matching restore step and why it's keyed this way.
- name: Restore webpack build cache
uses: actions/cache@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6.1.0
with:
path: superset-frontend/.temp_cache
key: >-
webpack-prod-cache-${{ hashFiles('superset-frontend/package-lock.json',
'superset-frontend/babel.config.js', 'superset-frontend/tsconfig.json',
'superset-frontend/webpack.config.js') }}
# Only ever pull the last recorded data point off the cache, keyed by
# run ID -- `restore-keys` prefix-matches the most recently created
# entry. Absent on the very first run ever; benchmark-action starts a
# fresh history in that case.
- name: Restore bundle size history
uses: actions/cache/restore@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6.1.0
with:
path: bundle-size-history.json
key: bundle-size-history-${{ github.run_id }}
restore-keys: |
bundle-size-history-
# BUNDLE_ANALYZER rides along in the same build as BUNDLE_SIZE_STATS --
# they're independent env-gated additions in webpack.config.js (one
# sets `config.stats`, the other pushes plugins), so one production
# build produces both the numeric stats.json and the analyzer's
# report.html. Only report.html is mounted out, not
# BUNDLE_ANALYZER's sibling `statistics.html` sunburst -- that file is
# documented in webpack.config.js as routinely exceeding 100MB for
# this app (it's .gitignore'd for exactly that reason), too large to
# publish as a static site page.
- name: Build production bundle with stats and analyzer report
run: |
mkdir -p ${{ github.workspace }}/superset-frontend/bundle-stats
mkdir -p ${{ github.workspace }}/superset-frontend/.temp_cache
mkdir -p ${{ github.workspace }}/superset/static/assets
docker run \
-v ${{ github.workspace }}/superset-frontend/bundle-stats:/app/superset-frontend/bundle-stats \
-v ${{ github.workspace }}/superset-frontend/.temp_cache:/app/superset-frontend/.temp_cache \
-v ${{ github.workspace }}/superset/static/assets:/app/superset/static/assets \
--rm $TAG \
bash -c \
"npm i && BUNDLE_SIZE_STATS=true BUNDLE_ANALYZER=true npm run build -- --json=bundle-stats/stats.json"
- name: Summarize bundle size
run: |
node superset-frontend/scripts/bundle-size-summary.js \
superset-frontend/bundle-stats/stats.json > bundle-size-summary.json
rm -rf superset-frontend/bundle-stats
# No PR to comment on here, so comment-on-alert is off -- the job
# summary (summary-always) is the only surface for this run.
- name: Update bundle size baseline
uses: benchmark-action/github-action-benchmark@4322e5726e6334590d251fc4f92bec0efafc45dc # v1.22.2
with:
tool: customSmallerIsBetter
output-file-path: bundle-size-summary.json
external-data-json-path: bundle-size-history.json
github-token: ${{ secrets.GITHUB_TOKEN }}
fail-on-alert: false
summary-always: true
- name: Save bundle size history
uses: actions/cache/save@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6.1.0
with:
path: bundle-size-history.json
key: bundle-size-history-${{ github.run_id }}
# Publishes the treemap to Netlify (the same host already used for
# superset-storybook.netlify.app and docs previews, reusing the
# existing NETLIFY_AUTH_TOKEN). Skipped until
# NETLIFY_BUNDLE_ANALYZER_SITE_ID exists -- create a new (free)
# Netlify site named superset-bundle-analyzer and add its site ID as
# that secret to turn this on; nothing else in this workflow depends
# on it.
- name: Publish bundle analyzer report to Netlify
if: ${{ env.NETLIFY_SITE_ID != '' }}
env:
NETLIFY_AUTH_TOKEN: ${{ secrets.NETLIFY_AUTH_TOKEN }}
run: |
mkdir -p netlify-publish
cp superset/static/assets/report.html netlify-publish/index.html
# zizmor: ignore[adhoc-packages] - netlify-cli is a one-shot CI deploy
# tool, not an application dependency; a global/npx install has no
# lockfile context. Version pinned above the floor set by other
# ad-hoc installs in this repo (bump deliberately when upgrading).
npx --yes netlify-cli@27.0.1 deploy --prod --dir=netlify-publish

View File

@@ -11,7 +11,7 @@ permissions:
jobs:
config:
runs-on: ubuntu-24.04
runs-on: ubuntu-slim
outputs:
has-secrets: ${{ steps.check.outputs.has-secrets }}
steps:
@@ -29,15 +29,15 @@ jobs:
needs: config
if: needs.config.outputs.has-secrets
name: Generate Report
runs-on: ubuntu-24.04
runs-on: ubuntu-slim
steps:
- name: "Checkout ${{ github.ref }} ( ${{ github.sha }} )"
uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
with:
persist-credentials: false
submodules: recursive
- name: Setup Java
uses: actions/setup-java@1bcf9fb12cf4aa7d266a90ae39939e61372fe520 # v5.4.0
uses: actions/setup-java@de7274f081f381c8f8158605e0321c36c376e2e6 # v6.0.1
with:
distribution: "temurin"
java-version: "11"

View File

@@ -19,7 +19,7 @@ concurrency:
jobs:
validate-all-ghas:
runs-on: ubuntu-24.04
runs-on: ubuntu-26.04 # Don't switch to ubuntu-slim as zizmore-action requires Docker
permissions:
contents: read
# Required for the zizmor action to upload its SARIF results to
@@ -27,14 +27,14 @@ jobs:
security-events: write
steps:
- name: Checkout Repository
uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
with:
persist-credentials: false
- name: Set up Node.js
uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0
uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0
with:
node-version: "20"
node-version-file: "./superset-frontend/.nvmrc"
- name: Install Dependencies
# Versions are pinned to avoid ad-hoc, unpinned package installs.
@@ -45,5 +45,8 @@ jobs:
- name: Run Script
run: bash .github/workflows/github-action-validator.sh
- name: Test docs-deploy freshness gate
run: bash .github/workflows/scripts/check-docs-deploy-freshness.test.sh
- name: Check for security issues on GHA workflows
uses: zizmorcore/zizmor-action@192e21d79ab29983730a13d1382995c2307fbcaa # v0.5.7
uses: zizmorcore/zizmor-action@cc914d7f3750a2d13d75c7f184a1060aa0e9d482 # v0.6.4

115
.github/workflows/hold-label-ci-gate.yml vendored Normal file
View File

@@ -0,0 +1,115 @@
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements. See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership. The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied. See the License for the
# specific language governing permissions and limitations
# under the License.
name: Hold Label CI Gate
on:
pull_request:
types: [labeled, unlabeled]
permissions: {}
jobs:
cancel-on-hold:
name: Cancel CI runs when hold label applied
if: github.event.action == 'labeled' && startsWith(github.event.label.name, 'hold')
runs-on: ubuntu-slim
permissions:
actions: write
pull-requests: read
steps:
- name: Cancel in-progress workflow runs
uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0
with:
github-token: ${{ secrets.GITHUB_TOKEN }}
script: |
const { owner, repo } = context.repo;
const sha = context.payload.pull_request.head.sha;
const { data: { workflow_runs: runs } } =
await github.rest.actions.listWorkflowRunsForRepo({
owner,
repo,
head_sha: sha,
per_page: 100,
});
const active = runs.filter(r =>
['in_progress', 'queued', 'waiting', 'requested', 'pending'].includes(r.status)
);
core.info(`Found ${active.length} active run(s) to cancel for SHA ${sha}`);
for (const run of active) {
try {
await github.rest.actions.cancelWorkflowRun({
owner,
repo,
run_id: run.id,
});
core.info(`Cancelled run ${run.id} (${run.name})`);
} catch (err) {
core.warning(`Could not cancel run ${run.id}: ${err.message}`);
}
}
rerun-on-unhold:
name: Re-run CI when hold label removed
if: github.event.action == 'unlabeled' && startsWith(github.event.label.name, 'hold')
runs-on: ubuntu-slim
permissions:
actions: write
pull-requests: read
steps:
- name: Re-trigger cancelled workflow runs
uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0
with:
github-token: ${{ secrets.GITHUB_TOKEN }}
script: |
const { owner, repo } = context.repo;
const sha = context.payload.pull_request.head.sha;
// Check that no other hold* labels remain on the PR
const labels = context.payload.pull_request.labels.map(l => l.name);
const stillHeld = labels.some(l => l.startsWith('hold'));
if (stillHeld) {
core.info('PR still has a hold label — skipping re-run.');
return;
}
const { data: { workflow_runs: runs } } =
await github.rest.actions.listWorkflowRunsForRepo({
owner,
repo,
head_sha: sha,
per_page: 100,
});
const cancelled = runs.filter(r => r.conclusion === 'cancelled');
core.info(`Found ${cancelled.length} cancelled run(s) to re-trigger for SHA ${sha}`);
for (const run of cancelled) {
try {
await github.rest.actions.reRunWorkflow({
owner,
repo,
run_id: run.id,
});
core.info(`Re-triggered run ${run.id} (${run.name})`);
} catch (err) {
core.warning(`Could not re-run ${run.id}: ${err.message}`);
}
}

View File

@@ -2,26 +2,29 @@ name: supersetbot orglabel based on author
on:
issues:
types: [created, edited]
types: [opened, edited]
pull_request:
types: [created, edited]
types: [opened, edited]
permissions:
contents: read
jobs:
superbot-orglabel:
runs-on: ubuntu-24.04
runs-on: ubuntu-slim
permissions:
contents: read
pull-requests: write
issues: write
steps:
- name: "Checkout ${{ github.ref }} ( ${{ github.sha }} )"
uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
with:
persist-credentials: false
- name: Setup supersetbot
uses: ./.github/actions/setup-supersetbot/
uses: $/.github/actions/setup-supersetbot/
- name: Execute supersetbot orglabel command
env:
@@ -30,4 +33,4 @@ jobs:
# Label the issue with the appropriate org using supersetbot
# - this requires for the author to be publicly associated with their org
# - and for the org to be listed in `supersetbot/src/metadata.js`
supersetbot orglabel --issue ${{ github.event.number }} --repo ${{ github.repository }} || true
supersetbot orglabel --issue ${{ github.event.number || github.event.issue.number }} --repo ${{ github.repository }} || true

View File

@@ -0,0 +1,54 @@
name: Label Merge Conflicts
# Sweeps every open PR and labels the ones GitHub reports as CONFLICTING with
# `requires:rebase` (removing it once a rebase makes the PR mergeable again),
# so the label can be used to filter the PR backlog for the ones that need a
# rebase before they can be reviewed/merged.
#
# The action itself always re-checks *every* open PR via GraphQL on each run
# regardless of what triggered it (see eps1lon/actions-label-merge-conflict's
# sources/main.ts) - there's no way to scope it to "just this PR". The
# project's own README suggests triggering on `push` (to the default branch)
# plus `pull_request_target: [synchronize]`, but on a repo with Superset's PR
# volume that combination would re-sweep the entire open-PR list on every
# merge to master *and* every push to *any* open PR - many times an hour.
# A schedule bounds that to a fixed, predictable cadence instead; adjust it
# if 2 hours turns out to be too slow or too chatty in practice.
on:
schedule:
- cron: "0 */2 * * *"
workflow_dispatch:
# Avoid two full backlog sweeps racing (a manual workflow_dispatch landing
# mid-schedule-tick, say); queue rather than cancel so an in-progress
# paginated sweep always runs to completion.
concurrency:
group: ${{ github.workflow }}
cancel-in-progress: false
permissions: {}
jobs:
label-merge-conflicts:
# Scheduled/dispatch workflows still run on forks that carry this file;
# skip anywhere but the canonical repo.
if: github.repository == 'apache/superset'
name: Label Merge Conflicts
runs-on: ubuntu-latest
permissions:
contents: read
pull-requests: write # to add/remove requires:rebase and need:merge
steps:
# ASF Infra allowlists this whole action via a wildcard
# (eps1lon/actions-label-merge-conflict@*), so any pinned SHA/version
# is already fine here - no Infra ticket needed for future bumps.
- uses: eps1lon/actions-label-merge-conflict@0273be72a0bbd58fcd71d0d6c02c209b50d1e5e1 # v3.1.0
with:
dirtyLabel: "requires:rebase"
# A conflicting PR isn't actually ready to merge; strip that signal
# if it was previously set so reviewers don't act on a stale one.
removeOnDirtyLabel: "need:merge"
repoToken: ${{ secrets.GITHUB_TOKEN }}
# Intentionally no commentOnDirty/commentOnClean: the label alone is
# the signal (matches the label's existing description, and avoids
# a one-time comment storm across the whole backlog on first run).

View File

@@ -7,14 +7,17 @@ concurrency:
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.run_id }}
cancel-in-progress: true
permissions:
contents: read
jobs:
labeler:
permissions:
contents: read
pull-requests: write
runs-on: ubuntu-24.04
runs-on: ubuntu-slim
steps:
- uses: actions/labeler@f27b608878404679385c85cfa523b85ccb86e213 # v6.1.0
- uses: actions/labeler@bf12e9b00b37c5c0ca2b87b79b2daf7891dbda13 # v7.0.0
with:
sync-labels: true

View File

@@ -1,39 +0,0 @@
name: Tags
on:
release:
types: [published] # This makes it run only when a new released is published
jobs:
latest-release:
name: Add/update tag to new release
runs-on: ubuntu-24.04
permissions:
contents: write
steps:
- name: "Checkout ${{ github.ref }} ( ${{ github.sha }} )"
uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
with:
persist-credentials: false
submodules: recursive
- name: Check for latest tag
id: latest-tag
env:
RELEASE_TAG_NAME: ${{ github.event.release.tag_name }}
run: |
source ./scripts/tag_latest_release.sh "$RELEASE_TAG_NAME" --dry-run
- name: Configure Git
run: |
git config user.name "$GITHUB_ACTOR"
git config user.email "$GITHUB_ACTOR@users.noreply.github.com"
- name: Run latest-tag
uses: ./.github/actions/latest-tag
if: steps.latest-tag.outputs.SKIP_TAG != 'true'
with:
description: Superset latest release
tag-name: latest
env:
GITHUB_TOKEN: ${{ github.token }}

View File

@@ -15,15 +15,15 @@ concurrency:
jobs:
license_check:
name: License Check
runs-on: ubuntu-24.04
runs-on: ubuntu-slim
steps:
- name: "Checkout ${{ github.ref }} ( ${{ github.sha }} )"
uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
with:
persist-credentials: false
submodules: recursive
- name: Setup Java
uses: actions/setup-java@1bcf9fb12cf4aa7d266a90ae39939e61372fe520 # v5.4.0
uses: actions/setup-java@de7274f081f381c8f8158605e0321c36c376e2e6 # v6.0.1
with:
distribution: "temurin"
java-version: "11"

View File

@@ -0,0 +1,113 @@
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements. See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership. The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied. See the License for the
# specific language governing permissions and limitations
# under the License.
#
# Mirror the Docker Hub service-container images that CI relies on into the
# repository's GitHub Container Registry (GHCR) namespace.
#
# WHY: CI jobs declare Postgres/MySQL/Redis/Presto as `services:` containers
# pulled anonymously from Docker Hub. Anonymous pulls share the runner's IP
# rate limit, which causes intermittent timeouts / 429s / 502s on `master`
# and same-repo PRs. The obvious fix — adding `credentials:` to the service
# blocks — breaks fork PRs hard: forks can't read secrets, so the templated
# username/password resolve to '' and GitHub rejects the workflow at parse
# time ("Unexpected value ''"), failing every fork job at "Set up job".
#
# Mirroring to GHCR sidesteps both problems: public GHCR images are pulled
# without Docker Hub's anonymous rate limit AND without any credentials, so
# the consuming workflows need no `credentials:` block and forks work
# unchanged.
#
# ONE-TIME BOOTSTRAP (maintainer, after this lands on the default branch):
# 1. Run this workflow once (Actions tab → "Mirror service images to GHCR"
# → Run workflow), or wait for the weekly schedule.
# 2. In the org's Packages settings, set each mirrored package's visibility
# to **public** (apache/superset → ci/postgres, ci/mysql, ci/redis,
# ci/presto). Public visibility is what lets fork CI pull without auth.
# 3. Only then merge the follow-up that repoints the `services.*.image`
# refs at these GHCR copies and drops the `credentials:` blocks.
#
# NOTE: this mirrors only the images declared as `services:` containers (the
# ones that broke forks). The `bde2020` hive-metastore image pulled via
# `docker compose` in the Presto/Hive job is a separate path and is left for
# a follow-up.
name: Mirror service images to GHCR
on:
schedule:
# Weekly, Monday 06:00 UTC — keeps the mirror fresh as upstream tags move.
- cron: "0 6 * * 1"
workflow_dispatch: {}
concurrency:
group: mirror-service-images
cancel-in-progress: false
permissions:
contents: read
packages: write
jobs:
mirror:
# Never run on forks: they lack both the secrets and write access to the
# apache GHCR namespace, so a scheduled run there would only ever fail.
if: github.repository == 'apache/superset'
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
# Keep this list in sync with the `services.*.image` refs in
# superset-e2e.yml, superset-python-integrationtest.yml, and
# superset-python-presto-hive.yml.
image:
- postgres:17-alpine
- redis:7-alpine
- mysql:8.0
- starburstdata/presto:350-e.6
steps:
- name: Log in to Docker Hub (authenticated source pulls)
uses: docker/login-action@dbcb813823bdd20940b903addbd779551569679f # v4.6.0
with:
username: ${{ secrets.DOCKERHUB_USER }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
- name: Log in to GHCR (push target)
uses: docker/login-action@dbcb813823bdd20940b903addbd779551569679f # v4.6.0
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@f87e5991a6d7451dcb8d9637bfbc97413f497069 # v4.4.1
- name: Copy image to GHCR
env:
# Pass the matrix value through the environment rather than
# interpolating it into the shell, to avoid template injection.
SRC_IMAGE: ${{ matrix.image }}
run: |
set -euo pipefail
# Destination keeps the image's short name (drop any namespace),
# under a `ci/` prefix in this repo's GHCR namespace.
name="${SRC_IMAGE##*/}"
dst="ghcr.io/${GITHUB_REPOSITORY}/ci/${name}"
echo "Mirroring docker.io/${SRC_IMAGE} -> ${dst}"
# imagetools copies the full (multi-arch) manifest registry-to-
# registry without a local pull/retag/push round trip.
docker buildx imagetools create --tag "${dst}" "docker.io/${SRC_IMAGE}"
echo "- \`docker.io/${SRC_IMAGE}\` → \`${dst}\`" >> "${GITHUB_STEP_SUMMARY}"

View File

@@ -17,7 +17,7 @@ concurrency:
jobs:
check-hold-label:
runs-on: ubuntu-24.04
runs-on: ubuntu-slim
steps:
- name: Check for 'hold' label
uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0

View File

@@ -8,24 +8,39 @@ on:
# Possible values: https://help.github.com/en/actions/reference/events-that-trigger-workflows#pull-request-event-pull_request
types: [opened, edited, reopened, synchronize]
# cancel previous workflow jobs for PRs
# Serialize runs per PR without cancelling: the `edited` trigger means a PR
# opened and then edited has two queued runs for the same head SHA. On
# first-time-contributor PRs those runs start together when a maintainer
# approves workflows, and cancel-in-progress lets the older run cancel the
# newer one — leaving a permanently-cancelled required check on the head SHA
# that blocks merging until manually re-run. This job takes seconds, so let
# queued runs complete instead.
concurrency:
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.run_id }}
cancel-in-progress: true
cancel-in-progress: false
permissions:
contents: read
jobs:
lint-check:
runs-on: ubuntu-24.04
runs-on: ubuntu-slim
permissions:
contents: read
pull-requests: write
steps:
- name: "Checkout ${{ github.ref }} ( ${{ github.sha }} )"
uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
with:
persist-credentials: false
submodules: recursive
- uses: ./.github/actions/pr-lint-action
# pr-lint-action is a submodule (not a plain directory), and the $/
# self-repository syntax resolves action files directly from the
# repository without performing a real (submodule-aware) checkout, so
# it can't see into a submodule's link. Keep this one on the
# workspace-relative ./ form, consistent with every other workflow in
# the repo that references a submodule action.
- uses: ./.github/actions/pr-lint-action # zizmor: ignore[self-repository] - $/ cannot resolve an action that lives in a submodule; ./ is required here
with:
title-regex: "^(build|chore|ci|docs|feat|fix|perf|refactor|style|test|other)(\\(.+\\))?(\\!)?:\\s.+"
on-failed-regex-fail-action: true

View File

@@ -7,9 +7,15 @@ on:
- "[0-9].[0-9]*"
pull_request:
types: [synchronize, opened, reopened, ready_for_review]
# Nightly full-tree sweep. Per-PR runs only lint changed files, so a change
# that invalidates an untouched file (e.g. a type change that breaks an
# importing test) can pass every PR yet leave master red. This catches that.
schedule:
- cron: "0 6 * * *"
permissions:
contents: read
actions: read
# cancel previous workflow jobs for PRs
concurrency:
@@ -18,34 +24,46 @@ concurrency:
jobs:
pre-commit:
runs-on: ubuntu-24.04
runs-on: ubuntu-26.04
timeout-minutes: 20
strategy:
matrix:
# Run the full version spread on push (master/release) and nightly,
# but only the current version on PRs — lint/format/type results
# rarely differ across patch versions, so 3x per PR is wasteful.
python-version: ${{ github.event_name == 'pull_request' && fromJSON('["current"]') || fromJSON('["current", "previous", "next"]') }}
python-version: ${{ github.event_name == 'pull_request' && fromJSON('["current"]') || fromJSON('["current", "next"]') }}
steps:
- name: "Checkout ${{ github.ref }} ( ${{ github.sha }} )"
uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
with:
persist-credentials: false
submodules: recursive
# Full history so we can diff a PR/push against its base commit to
# determine changed files (see "Determine changed files" below).
fetch-depth: 0
- name: Setup Python
uses: ./.github/actions/setup-backend/
uses: $/.github/actions/setup-backend/
with:
python-version: ${{ matrix.python-version }}
- name: Setup Go
uses: actions/setup-go@924ae3a1cded613372ab5595356fb5720e22ba16 # v6.5.0
uses: actions/setup-go@b7ad1dad31e06c5925ef5d2fc7ad053ef454303e # v7.0.0
- name: Install helm-docs
run: go install github.com/norwoodj/helm-docs/cmd/helm-docs@v1.14.2
# Spike: run the existing .pre-commit-config.yaml through prek (a Rust
# reimplementation of pre-commit) instead of pre-commit itself, to see
# whether it's viable to speed up this job. CI-only — contributors keep
# installing/running `pre-commit` locally exactly as documented; nothing
# here changes that.
- name: Install prek
run: |
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/j178/prek/releases/download/v0.4.11/prek-installer.sh | sh
- name: Setup Node.js
uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6
uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0
with:
node-version-file: "superset-frontend/.nvmrc"
cache: "npm"
@@ -61,27 +79,106 @@ jobs:
cd docs
yarn install --immutable
- name: Cache pre-commit environments
- name: Cache prek environments
uses: actions/cache@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6.1.0
with:
path: ~/.cache/pre-commit
key: pre-commit-v2-${{ runner.os }}-py${{ matrix.python-version }}-${{ hashFiles('.pre-commit-config.yaml') }}
path: ~/.cache/prek
key: prek-v1-${{ runner.os }}-py${{ matrix.python-version }}-${{ hashFiles('.pre-commit-config.yaml') }}
restore-keys: |
pre-commit-v2-${{ runner.os }}-py${{ matrix.python-version }}-
prek-v1-${{ runner.os }}-py${{ matrix.python-version }}-
- name: Get changed files
- name: Determine changed files
id: changed_files
uses: ./.github/actions/file-changes-action
with:
output: " "
- name: pre-commit
env:
EVENT_NAME: ${{ github.event_name }}
BEFORE_SHA: ${{ github.event.before }}
run: |
set -euo pipefail
# Scheduled runs check the whole tree (see the pre-commit step).
if [ "${EVENT_NAME}" = "schedule" ]; then
echo "mode=all" >> "$GITHUB_OUTPUT"
exit 0
fi
# Resolve the commit to diff against.
base=""
if [ "${EVENT_NAME}" = "pull_request" ]; then
# HEAD is the PR merge commit, so its first parent is the current
# tip of the base branch. github.event.pull_request.base.sha is
# NOT that: GitHub freezes it at PR creation, so on a long-lived
# PR it points at the original branch point and the diff picks up
# all of the base branch's churn since then — thousands of paths,
# enough for the CHANGED_FILES env var below to exceed the
# kernel's per-variable size limit and kill the step with
# "Argument list too long" before bash even starts.
base="$(git rev-parse HEAD^1 2>/dev/null || true)"
elif [ -n "${BEFORE_SHA:-}" ] && \
[ "${BEFORE_SHA}" != "0000000000000000000000000000000000000000" ]; then
base="${BEFORE_SHA}"
fi
# Fail closed: if the diff base can't be resolved, check every file
# instead of silently checking nothing. Previously an empty file list
# made `pre-commit run --files` a no-op that still reported success,
# which let unlinted code reach master.
if [ -z "${base}" ] || ! git cat-file -e "${base}^{commit}" 2>/dev/null; then
echo "::notice::Could not resolve a diff base; falling back to --all-files."
echo "mode=all" >> "$GITHUB_OUTPUT"
exit 0
fi
# Files present in HEAD that changed since the base (drop deletions).
files="$(git diff --name-only --diff-filter=ACMRT "${base}...HEAD")"
# Env vars have a hard per-variable size limit (E2BIG at step
# start). A PR that legitimately touches thousands of files is
# better served by --all-files anyway.
if [ "$(printf '%s' "${files}" | wc -c)" -gt 100000 ]; then
echo "::notice::Changed-file list too large to pass via env; falling back to --all-files."
echo "mode=all" >> "$GITHUB_OUTPUT"
exit 0
fi
if [ -z "${files}" ]; then
echo "mode=none" >> "$GITHUB_OUTPUT"
else
echo "mode=files" >> "$GITHUB_OUTPUT"
{
echo "files<<__CHANGED_FILES_EOF__"
echo "${files}"
echo "__CHANGED_FILES_EOF__"
} >> "$GITHUB_OUTPUT"
fi
- name: pre-commit (via prek)
env:
MODE: ${{ steps.changed_files.outputs.mode }}
CHANGED_FILES: ${{ steps.changed_files.outputs.files }}
run: |
set +e # Don't exit immediately on failure
export SKIP=type-checking-frontend
pre-commit run --files $CHANGED_FILES
case "${MODE}" in
all)
echo "ℹ️ Running prek on all files."
prek run --all-files
;;
files)
echo "ℹ️ Running prek on changed files:"
echo "${CHANGED_FILES}"
# shellcheck disable=SC2086
prek run --files ${CHANGED_FILES}
;;
none)
echo "ℹ️ No source files changed; nothing for prek to check."
exit 0
;;
*)
echo "⚠️ Unrecognized changed-files mode '${MODE}'; checking all files."
prek run --all-files
;;
esac
PRE_COMMIT_EXIT_CODE=$?
git diff --quiet --exit-code
GIT_DIFF_EXIT_CODE=$?
@@ -101,3 +198,12 @@ jobs:
echo "📖 More details here: https://superset.apache.org/docs/contributing/development#git-hooks"
exit 1
fi
actions-timeline:
needs: pre-commit
if: always()
runs-on: ubuntu-slim
steps:
- uses: Kesin11/actions-timeline@57fc93f20c6da7fbc14063c6d24a2a5627c799ad # v3.2.0
with:
expand-composite-actions: true

View File

@@ -0,0 +1,94 @@
# Python nightly canary
name: Python-Nightly-Canary
# Exercises the "next" Python minor (currently 3.13 -- see the `next`
# resolution in setup-backend/action.yml) against `master` on a schedule
# instead of on every push. The Docker image's base Python is pinned via
# PY_VER to the 3.11 line (see the Dockerfile); this canary is how we find
# out the codebase and dependency tree are clean on the next minor before
# that pin is ever moved, without paying for a second full Python version
# on every push/PR.
#
# Runs the unit-test suite only, not the full integration matrix or
# coverage gates -- this is a compatibility signal, not a release gate.
permissions:
contents: read
on:
schedule:
# 05:00 UTC daily, so a 3.13 regression is known well before anyone
# considers bumping PY_VER off 3.11.
- cron: "0 5 * * *"
# Manual trigger for on-demand runs (e.g. right after a dependency bump).
workflow_dispatch: {}
concurrency:
group: ${{ github.workflow }}
cancel-in-progress: true
jobs:
unit-tests-next:
runs-on: ubuntu-26.04
timeout-minutes: 45
env:
PYTHONPATH: ${{ github.workspace }}
SQLALCHEMY_WARN_20: "1"
steps:
- name: "Checkout master (${{ github.sha }})"
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
with:
persist-credentials: false
submodules: recursive
- name: Setup Python (next)
uses: $/.github/actions/setup-backend/
with:
python-version: next
- name: Python unit tests
env:
SUPERSET_TESTENV: true
SUPERSET_SECRET_KEY: not-a-secret
run: |
pytest --durations-min=0.5 --cov-report= --cov=superset ./tests/common ./tests/unit_tests --cache-clear --maxfail=50
# The whole point of this cron is finding 3.13 breakage before it's a
# blocker on a real PY_VER bump, so a silent failure defeats the purpose --
# a red X in the Actions tab nobody is watching. Track it in one issue
# that stays open across consecutive nightly failures (commenting on each
# recurrence) instead of filing a fresh issue per failed run, which would
# spam the issue board on a multi-night break.
notify-on-failure:
needs: unit-tests-next
if: failure()
runs-on: ubuntu-26.04
permissions:
contents: read
issues: write
steps:
- name: Find or open the tracking issue
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
REPOSITORY: ${{ github.repository }}
RUN_URL: ${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}
run: |
TITLE="Python nightly canary (3.13) is failing"
ISSUE_NUMBER=$(gh issue list \
--repo "$REPOSITORY" \
--search "\"$TITLE\" in:title" \
--state open \
--json number,title \
--jq ".[] | select(.title == \"$TITLE\") | .number" | head -1)
if [ -n "$ISSUE_NUMBER" ]; then
gh issue comment "$ISSUE_NUMBER" --repo "$REPOSITORY" \
--body "Still failing: ${RUN_URL}"
else
gh issue create \
--repo "$REPOSITORY" \
--title "$TITLE" \
--label "python" \
--body "The nightly Python-next (3.13) canary is failing against \`master\`. This tracks compatibility work ahead of bumping the base image's PY_VER off the 3.11 line. Further failures get commented here rather than filing new issues.
Failed run: ${RUN_URL}"
fi

View File

@@ -11,7 +11,7 @@ permissions:
jobs:
config:
runs-on: ubuntu-24.04
runs-on: ubuntu-slim
outputs:
has-secrets: ${{ steps.check.outputs.has-secrets }}
steps:
@@ -29,11 +29,11 @@ jobs:
needs: config
if: needs.config.outputs.has-secrets
name: Bump version and publish package(s)
runs-on: ubuntu-24.04
runs-on: ubuntu-26.04
permissions:
contents: write
steps:
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
with:
persist-credentials: false
# pulls all commits (needed for lerna / semantic release to correctly version)
@@ -50,7 +50,7 @@ jobs:
- name: Install Node.js
if: env.HAS_TAGS
uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6
uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0
with:
node-version-file: "./superset-frontend/.nvmrc"

View File

@@ -1,177 +0,0 @@
name: Scheduled Docker image refresh
# Re-runs the Docker image build against the latest published release on a
# weekly cadence. The code being built doesn't change — but the base image
# layers (python:*-slim-trixie and its OS packages) DO get upstream
# security patches between Superset releases, and those patches don't
# reach our published images unless we rebuild.
#
# Without this workflow, `apache/superset:<latest>` lags behind upstream
# Debian/Python base patches by whatever interval falls between Superset
# releases (typically 3–6 weeks). With it, the lag drops to at most one
# week regardless of release cadence.
#
# This is a security-hygiene cron, not a release. It overwrites the
# existing tags for the most recent release (e.g. `apache/superset:5.0.0`
# and `apache/superset:latest`) with bit-for-bit-equivalent contents
# layered on a refreshed base. Image digests change; everything users
# actually pin against (image content, code, deps) does not.
on:
schedule:
# Mondays at 06:00 UTC — gives the weekend for upstream patches to
# settle and surfaces failures at the start of the work week so a
# human can react.
- cron: "0 6 * * 1"
# Manual trigger so operators can force a refresh on demand (e.g.
# immediately after a high-severity base-image CVE drops).
workflow_dispatch: {}
permissions:
contents: read
# Serialize with itself and with the release publisher (tag-release.yml) —
# both push to the same Docker Hub tags, so a race could end with stale
# layers winning. Both workflows must declare this group for the lock to work.
concurrency:
group: docker-publish-latest-release
cancel-in-progress: false
jobs:
config:
runs-on: ubuntu-24.04
outputs:
has-secrets: ${{ steps.check.outputs.has-secrets }}
latest-release: ${{ steps.latest.outputs.tag }}
force-latest: ${{ steps.latest.outputs.force-latest }}
steps:
- name: Check for Docker Hub secrets
id: check
shell: bash
run: |
if [ -n "${DOCKERHUB_USER}" ]; then
echo "has-secrets=1" >> "$GITHUB_OUTPUT"
fi
env:
DOCKERHUB_USER: ${{ (secrets.DOCKERHUB_USER != '' && secrets.DOCKERHUB_TOKEN != '') || '' }}
- name: Look up latest published release
id: latest
shell: bash
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
REPOSITORY: ${{ github.repository }}
run: |
# `releases/latest` returns the latest non-prerelease, non-draft
# release — which is exactly what `apache/superset:latest`
# should reflect.
TAG=$(gh api "repos/${REPOSITORY}/releases/latest" --jq .tag_name)
if [ -z "$TAG" ] || [ "$TAG" = "null" ]; then
echo "::error::Could not determine latest release tag"
exit 1
fi
echo "Latest release: $TAG"
echo "tag=$TAG" >> "$GITHUB_OUTPUT"
# Only move `:latest` when the release flagged "latest" is also the
# highest semver release. This guards against a mis-click leaving an
# older maintenance release (e.g. a 5.x patch shipped after 6.0 GA)
# marked latest, which would otherwise roll `:latest` back a major
# version on the next cron run. If it isn't the newest, we still
# refresh that release's own version tag but leave `:latest` alone.
HIGHEST=$(gh api --paginate "repos/${REPOSITORY}/releases" \
--jq '.[] | select(.draft|not) | select(.prerelease|not) | .tag_name' \
| sed 's/^v//' | sort -V | tail -n1)
if [ "${TAG#v}" = "$HIGHEST" ]; then
echo "force-latest=1" >> "$GITHUB_OUTPUT"
else
echo "::warning::Latest-flagged release $TAG is not the highest semver ($HIGHEST); refreshing its version tag but leaving :latest untouched"
fi
docker-rebuild:
needs: config
if: needs.config.outputs.has-secrets == '1'
name: docker-rebuild
runs-on: ubuntu-24.04
strategy:
# Mirror the same matrix the release publisher uses so every variant
# operators consume from Docker Hub gets the refreshed base.
matrix:
build_preset: ["dev", "lean", "py310", "websocket", "dockerize", "py311", "py312"]
fail-fast: false
steps:
- name: "Checkout release tag: ${{ needs.config.outputs.latest-release }}"
uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
with:
ref: ${{ needs.config.outputs.latest-release }}
fetch-depth: 0
persist-credentials: false
- name: Setup Docker Environment
uses: ./.github/actions/setup-docker
with:
dockerhub-user: ${{ secrets.DOCKERHUB_USER }}
dockerhub-token: ${{ secrets.DOCKERHUB_TOKEN }}
install-docker-compose: "false"
build: "true"
- name: Use Node.js 20
uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6
with:
node-version: 20
- name: Setup supersetbot
uses: ./.github/actions/setup-supersetbot/
- name: Rebuild and push
env:
DOCKERHUB_USER: ${{ secrets.DOCKERHUB_USER }}
DOCKERHUB_TOKEN: ${{ secrets.DOCKERHUB_TOKEN }}
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
BUILD_PRESET: ${{ matrix.build_preset }}
LATEST_RELEASE: ${{ needs.config.outputs.latest-release }}
FORCE_LATEST_FLAG: ${{ needs.config.outputs.force-latest == '1' && '--force-latest' || '' }}
run: |
# Reuses the same supersetbot invocation as the release
# publisher (`tag-release.yml`), so the resulting tags are
# identical to what a manual release dispatch would produce —
# just with a freshly-pulled base image layer underneath.
# `--force-latest` is only passed when the config job confirmed the
# fetched release is the newest one (see FORCE_LATEST_FLAG above).
supersetbot docker \
--push \
--preset "$BUILD_PRESET" \
--context release \
--context-ref "$LATEST_RELEASE" \
$FORCE_LATEST_FLAG \
--platform "linux/arm64" \
--platform "linux/amd64"
# The whole point of this cron is catching base-image CVEs, so a silent
# failure is the expensive case — a red X in the Actions tab nobody is
# watching on a Monday. File a tracked issue when any rebuild leg fails so
# a missed security refresh surfaces instead of sitting unnoticed.
notify-on-failure:
needs: [config, docker-rebuild]
if: failure() && needs.config.outputs.has-secrets == '1'
runs-on: ubuntu-24.04
permissions:
contents: read
issues: write
steps:
- name: Open a tracking issue
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
REPOSITORY: ${{ github.repository }}
LATEST_RELEASE: ${{ needs.config.outputs.latest-release }}
RUN_URL: ${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}
run: |
gh issue create \
--repo "$REPOSITORY" \
--title "Scheduled Docker image refresh failed for ${LATEST_RELEASE}" \
--label "infra:container" \
--label "bug" \
--body "The weekly Docker base-image refresh failed for release \`${LATEST_RELEASE}\`. Published images may be missing upstream base-layer security patches until this is resolved.
Failed run: ${RUN_URL}"

View File

@@ -0,0 +1,49 @@
#!/bin/bash
#
# Licensed to the Apache Software Foundation (ASF) under one or more
# contributor license agreements. See the NOTICE file distributed with
# this work for additional information regarding copyright ownership.
# The ASF licenses this file to You under the Apache License, Version 2.0
# (the "License"); you may not use this file except in compliance with
# the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
# Shared freshness gate used by the Docs Deployment workflow
# (superset-docs-deploy.yml) both up front (check-freshness) and again right
# before the deploy step (recheck-freshness). Writes an output declaring
# whether BUILD_SHA is still master's current tip, so a superseded run can
# skip cleanly instead of racing (and clobbering, or being force-cancelled
# by) a fresher run.
#
# Required env vars:
# BUILD_SHA - the commit SHA this run is building
# REPO - "owner/repo" to query, e.g. github.repository
# OUTPUT_NAME - the GITHUB_OUTPUT key to write, e.g. "is-current"
# GITHUB_OUTPUT - path to append outputs to (set by the Actions runner)
# Optional env vars:
# EVENT_NAME - if "workflow_dispatch", bypasses the check and always
# reports current, since a manual dispatch is a deliberate,
# one-off action rather than something racing other triggers
# GH_TOKEN - passed through to `gh`, needed to call the GitHub API
set -euo pipefail
if [ "${EVENT_NAME:-}" = "workflow_dispatch" ]; then
echo "${OUTPUT_NAME}=true" >>"$GITHUB_OUTPUT"
exit 0
fi
latest_sha="$(gh api "repos/${REPO}/commits/master" --jq .sha)"
if [ "${latest_sha}" = "${BUILD_SHA}" ]; then
echo "${OUTPUT_NAME}=true" >>"$GITHUB_OUTPUT"
else
echo "${OUTPUT_NAME}=false" >>"$GITHUB_OUTPUT"
echo "::notice::master has moved on to ${latest_sha} since ${BUILD_SHA} was triggered — skipping this stale run."
fi

View File

@@ -0,0 +1,100 @@
#!/bin/bash
#
# Licensed to the Apache Software Foundation (ASF) under one or more
# contributor license agreements. See the NOTICE file distributed with
# this work for additional information regarding copyright ownership.
# The ASF licenses this file to You under the Apache License, Version 2.0
# (the "License"); you may not use this file except in compliance with
# the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
# Exercises check-docs-deploy-freshness.sh against a stubbed `gh`, covering
# the dispatch-bypass, current-tip and stale-tip branches so the output
# contract (is-current / still-current) can't silently regress. Run
# directly, no extra tooling required:
# bash .github/workflows/scripts/check-docs-deploy-freshness.test.sh
set -euo pipefail
script_dir="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
script_under_test="${script_dir}/check-docs-deploy-freshness.sh"
failures=0
# Runs the script under test with a stubbed `gh` reporting $1 as master's
# latest sha, asserting that GITHUB_OUTPUT ends up containing exactly $4.
run_case() {
local case_name="$1"
local latest_sha="$2"
local build_sha="$3"
local event_name="$4"
local expected_line="$5"
local workdir
workdir="$(mktemp -d)"
trap 'rm -rf "${workdir}"' RETURN
# Fake `gh` that just echoes back the requested "latest" sha regardless of
# arguments, so the script under test never touches the network.
cat >"${workdir}/gh" <<EOF
#!/bin/bash
echo '${latest_sha}'
EOF
chmod +x "${workdir}/gh"
local output_file="${workdir}/github_output"
: >"${output_file}"
if PATH="${workdir}:${PATH}" \
GITHUB_OUTPUT="${output_file}" \
OUTPUT_NAME="is-current" \
REPO="apache/superset" \
BUILD_SHA="${build_sha}" \
EVENT_NAME="${event_name}" \
GH_TOKEN="fake-token" \
bash "${script_under_test}"; then
:
else
echo "FAIL (${case_name}): script exited non-zero"
failures=$((failures + 1))
return
fi
local actual
actual="$(cat "${output_file}")"
if [ "${actual}" = "${expected_line}" ]; then
echo "PASS (${case_name})"
else
echo "FAIL (${case_name}): expected '${expected_line}', got '${actual}'"
failures=$((failures + 1))
fi
}
# `gh` prints "should-not-be-called" for the dispatch case above the trick:
# it's never actually invoked since the bypass short-circuits before the
# `gh api` call, but the fake still needs a body.
run_case "workflow_dispatch bypasses the check" \
"unused" "abc123" "workflow_dispatch" \
"is-current=true"
run_case "build sha matches master's tip" \
"abc123" "abc123" "push" \
"is-current=true"
run_case "build sha is stale" \
"def456" "abc123" "push" \
"is-current=false"
if [ "${failures}" -gt 0 ]; then
echo "${failures} case(s) failed"
exit 1
fi
echo "All cases passed"

View File

@@ -17,6 +17,9 @@ env:
GITHUB_ORG: ${{ github.repository_owner }}
GITHUB_REPO: ${{ github.event.repository.name }}
permissions:
contents: read
jobs:
cleanup-expired:
name: Clean up expired showtime environments

View File

@@ -1,6 +1,6 @@
name: 🎪 Superset Showtime
# Ultra-simple: just sync on any PR state change
# Sync on Showtime label changes and updates to PRs using Showtime.
on:
# zizmor: ignore[dangerous-triggers] - required to react to PR label changes; PR code is
# only checked out and built after the maintainer-authorization gate (write/admin actors)
@@ -19,6 +19,19 @@ on:
required: false
type: string
# Triggers on labeled/unlabeled/synchronize/closed -- far more events per PR than
# typical CI's synchronize-only trigger. Without this, every event queues its own
# run and nothing ever supersedes a stale one, so runs pile up indefinitely on
# active PRs (observed: 6 simultaneously queued runs for a single PR) and end up
# starved competing for the same runner pool as everything else. cancel-in-progress
# is correct here, not just a queue-relief hack: this job's whole purpose is
# reconciling to the *current* desired state, so a run still working toward an
# already-superseded state is wasted work regardless of whether it's queued or
# mid-sync.
concurrency:
group: showtime-${{ github.event.pull_request.number || github.event.inputs.pr_number }}
cancel-in-progress: true
# Common environment variables for all jobs (non-sensitive only)
env:
AWS_REGION: us-west-2
@@ -26,9 +39,21 @@ env:
GITHUB_REPO: ${{ github.event.repository.name }}
GITHUB_ACTOR: ${{ github.actor }}
permissions:
contents: read
jobs:
sync:
name: 🎪 Sync PR to desired state
# Inspect the changed label so removing the last Showtime label still syncs.
if: >-
github.event_name == 'workflow_dispatch' ||
startsWith(github.event.label.name, '🎪 ') ||
(
(github.event.action == 'synchronize' ||
github.event.action == 'closed') &&
contains(toJson(github.event.pull_request.labels.*.name), '"🎪 ')
)
runs-on: ubuntu-latest
timeout-minutes: 90
@@ -153,7 +178,7 @@ jobs:
- name: Checkout PR code (only if build needed)
if: steps.auth.outputs.authorized == 'true' && steps.check.outputs.build_needed == 'true'
uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
with:
ref: ${{ steps.check.outputs.target_sha }}
persist-credentials: false
@@ -164,7 +189,7 @@ jobs:
- name: Setup Docker Environment (only if build needed)
if: steps.auth.outputs.authorized == 'true' && steps.check.outputs.build_needed == 'true'
uses: ./.github/actions/setup-docker
uses: $/.github/actions/setup-docker
with:
dockerhub-user: ${{ secrets.DOCKERHUB_USER }}
dockerhub-token: ${{ secrets.DOCKERHUB_TOKEN }}

View File

@@ -11,6 +11,7 @@ on:
permissions:
contents: read
pull-requests: read
actions: read
# cancel previous workflow jobs for PRs
concurrency:
@@ -19,7 +20,7 @@ concurrency:
jobs:
test-load-examples:
runs-on: ubuntu-24.04
runs-on: ubuntu-26.04
env:
PYTHONPATH: ${{ github.workspace }}
SUPERSET_CONFIG: tests.integration_tests.superset_test_config
@@ -40,22 +41,32 @@ jobs:
ports:
- 16379:6379
steps:
- uses: Kesin11/actions-timeline@57fc93f20c6da7fbc14063c6d24a2a5627c799ad # v3.2.0
with:
expand-composite-actions: true
- name: "Checkout ${{ github.ref }} ( ${{ github.sha }} )"
uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
with:
persist-credentials: false
submodules: recursive
- name: Check for file changes
id: check
uses: ./.github/actions/change-detector/
uses: $/.github/actions/change-detector/
with:
token: ${{ secrets.GITHUB_TOKEN }}
- name: Setup Python
if: steps.check.outputs.python
uses: ./.github/actions/setup-backend/
uses: $/.github/actions/setup-backend/
- name: Setup Postgres
if: steps.check.outputs.python
uses: ./.github/actions/cached-dependencies
# cached-dependencies is a submodule (not a plain directory), and
# the $/ self-repository syntax resolves action files directly from
# the repository without performing a real (submodule-aware)
# checkout, so it can't see into a submodule's link. Keep this one
# on the workspace-relative ./ form, consistent with every other
# workflow in the repo that references this action.
uses: ./.github/actions/cached-dependencies # zizmor: ignore[self-repository] - $/ cannot resolve an action that lives in a submodule; ./ is required here
with:
run: setup-postgres
- name: superset init

View File

@@ -18,22 +18,13 @@ on:
workflow_dispatch: {}
# Serialize deploys: the action pushes to apache/superset-site without
# rebasing, so concurrent runs race on the final push and the loser fails
# with `! [rejected] asf-site -> asf-site (fetch first)`. Cancel any
# in-progress run as soon as a newer one starts — the destination repo
# isn't touched until the final push step, so canceling mid-build is safe,
# and the freshest content always wins.
concurrency:
group: docs-deploy-asf-site
cancel-in-progress: true
permissions:
contents: read
actions: read
jobs:
config:
runs-on: ubuntu-24.04
runs-on: ubuntu-26.04
outputs:
has-secrets: ${{ steps.check.outputs.has-secrets }}
steps:
@@ -47,36 +38,96 @@ jobs:
env:
SUPERSET_SITE_BUILD: ${{ (secrets.SUPERSET_SITE_BUILD != '' && secrets.SUPERSET_SITE_BUILD != '') || '' }}
# Master gets frequent, sometimes bursty pushes, and each one can trigger a
# deploy attempt. Rather than let every superseded attempt get force-killed
# by the build-deploy concurrency group below (which shows up as a
# `cancelled` — i.e. red/failing-looking — check on that commit), have each
# run check up front whether it's still building master's current tip and,
# if not, skip cleanly. Deliberately outside the docs-deploy-asf-site
# concurrency group so it runs immediately for every trigger without
# blocking or being blocked by anything.
check-freshness:
runs-on: ubuntu-26.04
outputs:
is-current: ${{ steps.check.outputs.is-current }}
steps:
# Sparse checkout: this job's only job is to be fast, so it fetches
# nothing but the freshness-check script itself.
- name: Checkout freshness-check script
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
with:
persist-credentials: false
sparse-checkout: |
.github/workflows/scripts
sparse-checkout-cone-mode: false
- name: "Check whether this is still master's current commit"
id: check
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
BUILD_SHA: ${{ github.event.workflow_run.head_sha || github.sha }}
EVENT_NAME: ${{ github.event_name }}
REPO: ${{ github.repository }}
OUTPUT_NAME: is-current
run: .github/workflows/scripts/check-docs-deploy-freshness.sh
build-deploy:
needs: config
needs: [config, check-freshness]
# Only the run for master's current tip proceeds; anything superseded
# already skipped at check-freshness above instead of landing here.
# For workflow_run triggers, only deploy when the triggering run originated
# from this repository (not a fork), ensuring the checked-out code and any
# local actions executed with deploy credentials are trusted.
if: >-
needs.config.outputs.has-secrets &&
needs.check-freshness.outputs.is-current == 'true' &&
(github.event_name != 'workflow_run' ||
github.event.workflow_run.head_repository.full_name == github.repository)
name: Build & Deploy
runs-on: ubuntu-24.04
runs-on: ubuntu-26.04
# Serialize deploys: the action pushes to apache/superset-site without
# rebasing, so concurrent runs race on the final push and the loser fails
# with `! [rejected] asf-site -> asf-site (fetch first)`. Queue instead of
# canceling: a run that already passed check-freshness can still be
# sitting in the queue for a runner when a newer run starts and finishes
# first. cancel-in-progress would let that stale, queued run kill the
# newer run's in-progress deploy the moment it's finally scheduled, and
# then skip itself at the re-check below — losing the deploy entirely.
# Queuing means the stale run just waits its turn and then no-ops at the
# re-check, so the fresher content that already deployed is never
# clobbered or lost. The check-freshness gate above means it should be
# rare for more than one run to reach this point, so the queue stays
# short in practice.
concurrency:
group: docs-deploy-asf-site
cancel-in-progress: false
steps:
- uses: Kesin11/actions-timeline@57fc93f20c6da7fbc14063c6d24a2a5627c799ad # v3.2.0
with:
expand-composite-actions: true
- name: "Checkout ${{ github.event.workflow_run.head_sha || github.sha }}"
uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
with:
ref: ${{ github.event.workflow_run.head_sha || github.sha }}
persist-credentials: false
submodules: recursive
- name: Set up Node.js
uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6
uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0
with:
node-version-file: "./docs/.nvmrc"
- name: Setup Python
uses: ./.github/actions/setup-backend/
- uses: actions/setup-java@1bcf9fb12cf4aa7d266a90ae39939e61372fe520 # v5.4.0
uses: $/.github/actions/setup-backend/
- uses: actions/setup-java@de7274f081f381c8f8158605e0321c36c376e2e6 # v6.0.1
with:
distribution: "zulu"
java-version: "21"
- name: Install Graphviz
run: sudo apt-get install -y graphviz
uses: awalsh128/cache-apt-pkgs-action@553a35bb8ebd9fcabcb1c9451aa4c98e1b4ca8a9 # v1.6.3
with:
packages: graphviz
version: 1.0
execute_install_scripts: true
- name: Compute Entity Relationship diagram (ERD)
env:
SUPERSET_SECRET_KEY: not-a-secret
@@ -90,7 +141,7 @@ jobs:
yarn install --check-cache
- name: Download database diagnostics (if triggered by integration tests)
if: github.event_name == 'workflow_run' && github.event.workflow_run.conclusion == 'success'
uses: dawidd6/action-download-artifact@b6e2e70617bc3265edd6dab6c906732b2f1ae151 # v21
uses: dawidd6/action-download-artifact@eab87c9830c39eff17e5a6eadb20bfb4bc880477 # v27
continue-on-error: true
with:
workflow: superset-python-integrationtest.yml
@@ -99,7 +150,7 @@ jobs:
path: docs/src/data/
- name: Try to download latest diagnostics (for push/dispatch triggers)
if: github.event_name != 'workflow_run'
uses: dawidd6/action-download-artifact@b6e2e70617bc3265edd6dab6c906732b2f1ae151 # v21
uses: dawidd6/action-download-artifact@eab87c9830c39eff17e5a6eadb20bfb4bc880477 # v27
continue-on-error: true
with:
workflow: superset-python-integrationtest.yml
@@ -121,8 +172,32 @@ jobs:
working-directory: docs
run: |
yarn build
# The check-freshness job above narrows the window but doesn't close it: an
# older run can observe is-current=true, then sit through this build while a
# newer run's own freshness check also passes and it deploys and finishes
# first. If this (stale) run then wins entry into the concurrency group, it
# would overwrite the newer content that already deployed. Re-check right
# before the one step that actually mutates superset-site, so a stale run
# skips deploying instead of clobbering a fresher one that already ran.
- name: "Re-check freshness immediately before deploying"
id: recheck-freshness
if: github.event_name != 'workflow_dispatch'
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
BUILD_SHA: ${{ github.event.workflow_run.head_sha || github.sha }}
REPO: ${{ github.repository }}
OUTPUT_NAME: still-current
run: .github/workflows/scripts/check-docs-deploy-freshness.sh
- name: deploy docs
uses: ./.github/actions/github-action-push-to-another-repository
if: github.event_name == 'workflow_dispatch' || steps.recheck-freshness.outputs.still-current == 'true'
# github-action-push-to-another-repository is a submodule (not a
# plain directory), and the $/ self-repository syntax resolves
# action files directly from the repository without performing a
# real (submodule-aware) checkout, so it can't see into a
# submodule's link. Keep this one on the workspace-relative ./
# form, consistent with every other workflow in the repo that
# references a submodule action.
uses: ./.github/actions/github-action-push-to-another-repository # zizmor: ignore[self-repository] - $/ cannot resolve an action that lives in a submodule; ./ is required here
env:
API_TOKEN_GITHUB: ${{ secrets.SUPERSET_SITE_BUILD }}
with:

View File

@@ -21,64 +21,79 @@ permissions:
contents: read
jobs:
linkinator:
# See docs here: https://github.com/marketplace/actions/linkinator
lychee:
# See docs here: https://github.com/lycheeverse/lychee-action
# Only run on pull_request, not workflow_run
if: github.event_name == 'pull_request'
name: Link Checking
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
with:
persist-credentials: false
# Do not bump this linkinator-action version without opening
# an ASF Infra ticket to allow the new version first!
- uses: JustinBeckwith/linkinator-action@af984b9f30f63e796ae2ea5be5e07cb587f1bbd9 # v2.3
# Restores the on-disk request cache (.lycheecache) lychee writes when
# `--cache` is set, so re-runs don't re-check every external link from
# scratch. Key never matches exactly (github.run_id is unique per run),
# so actions/cache always saves a fresh copy afterwards; restore-keys
# falls back to the most recent prior cache on lookup.
- uses: actions/cache@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6.1.0
with:
path: .lycheecache
key: lychee-cache-${{ github.run_id }}
restore-keys: lychee-cache-
# v2.8.0 and v2.9.0 are both on ASF Infra's action allowlist
# (apache/infrastructure-actions approved_patterns.yml) as of this
# writing. Do not bump past v2.9.0 without opening an Infra ticket
# to allow the new SHA first!
- uses: lycheeverse/lychee-action@e7477775783ea5526144ba13e8db5eec57747ce8 # v2.9.0
continue-on-error: true # This will make the job advisory (non-blocking, no red X)
with:
paths: "**/*.md, **/*.mdx"
linksToSkip: >-
^https://github.com/apache/(superset|incubator-superset)/(pull|issues)/\d+,
^https://github.com/apache/(superset|incubator-superset)/commit/[a-f0-9]+,
superset-frontend/.*CHANGELOG\.md,
http://localhost:8088/,
http://127.0.0.1:3000/,
http://localhost:9001/,
https://charts.bitnami.com/bitnami,
https://www.li.me/,
https://www.fanatics.com/,
https://tails.com/gb/,
https://www.techaudit.info/,
https://avetilearning.com/,
https://www.udemy.com/,
https://trustmedis.com/,
http://theiconic.com.au/,
https://dev.mysql.com/doc/refman/5.7/en/innodb-limits.html,
^https://img\.shields\.io/.*,
https://vkusvill.ru/,
https://www.linkedin.com/in/mark-thomas-b16751158/,
https://theiconic.com.au/,
https://wattbewerb.de/,
https://timbr.ai/,
https://opensource.org/license/apache-2-0,
https://www.plaidcloud.com/
fail: false
args: >-
--verbose --no-progress
--cache --max-cache-age 7d
--exclude '^https://github.com/apache/(superset|incubator-superset)/(pull|issues)/\d+'
--exclude '^https://github.com/apache/(superset|incubator-superset)/commit/[a-f0-9]+'
--exclude 'superset-frontend/.*CHANGELOG\.md'
--exclude 'http://localhost:8088/'
--exclude 'http://127.0.0.1:3000/'
--exclude 'http://localhost:9001/'
--exclude 'https://charts.bitnami.com/bitnami'
--exclude 'https://www.li.me/'
--exclude 'https://www.fanatics.com/'
--exclude 'https://tails.com/gb/'
--exclude 'https://www.techaudit.info/'
--exclude 'https://avetilearning.com/'
--exclude 'https://www.udemy.com/'
--exclude 'https://trustmedis.com/'
--exclude 'http://theiconic.com.au/'
--exclude 'https://dev.mysql.com/doc/refman/5.7/en/innodb-limits.html'
--exclude '^https://img\.shields\.io/.*'
--exclude 'https://vkusvill.ru/'
--exclude 'https://www.linkedin.com/in/mark-thomas-b16751158/'
--exclude 'https://theiconic.com.au/'
--exclude 'https://wattbewerb.de/'
--exclude 'https://timbr.ai/'
--exclude 'https://opensource.org/license/apache-2-0'
--exclude 'https://www.plaidcloud.com/'
'./**/*.md' './**/*.mdx'
build-on-pr:
# Build docs when PR changes docs/** (uses committed databases.json)
if: github.event_name == 'pull_request'
name: Build (PR trigger)
runs-on: ubuntu-24.04
runs-on: ubuntu-26.04
defaults:
run:
working-directory: docs
steps:
- name: "Checkout ${{ github.ref }} ( ${{ github.sha }} )"
uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
with:
persist-credentials: false
submodules: recursive
- name: Set up Node.js
uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6
uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0
with:
node-version-file: "./docs/.nvmrc"
- name: yarn install
@@ -106,26 +121,26 @@ jobs:
github.event.workflow_run.conclusion == 'success' &&
github.event.workflow_run.head_repository.full_name == github.repository
name: Build (after integration tests)
runs-on: ubuntu-24.04
runs-on: ubuntu-26.04
defaults:
run:
working-directory: docs
steps:
- name: "Checkout PR head: ${{ github.event.workflow_run.head_sha }}"
uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
with:
ref: ${{ github.event.workflow_run.head_sha }}
persist-credentials: false
submodules: recursive
- name: Set up Node.js
uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6
uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0
with:
node-version-file: "./docs/.nvmrc"
- name: yarn install
run: |
yarn install --check-cache
- name: Download database diagnostics from integration tests
uses: dawidd6/action-download-artifact@b6e2e70617bc3265edd6dab6c906732b2f1ae151 # v21
uses: dawidd6/action-download-artifact@eab87c9830c39eff17e5a6eadb20bfb4bc880477 # v27
with:
workflow: superset-python-integrationtest.yml
run_id: ${{ github.event.workflow_run.id }}

View File

@@ -9,10 +9,6 @@ on:
types: [synchronize, opened, reopened, ready_for_review]
workflow_dispatch:
inputs:
use_dashboard:
description: "Use Cypress Dashboard (true/false) [paid service - trigger manually when needed]. You MUST provide a branch and/or PR number below for this to work."
required: false
default: "false"
ref:
description: "The branch or tag to checkout"
required: false
@@ -26,9 +22,12 @@ concurrency:
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.run_id }}
cancel-in-progress: true
permissions:
contents: read
jobs:
changes:
runs-on: ubuntu-24.04
runs-on: ubuntu-26.04
timeout-minutes: 10
permissions:
contents: read
@@ -38,143 +37,22 @@ jobs:
frontend: ${{ steps.check.outputs.frontend }}
steps:
- name: Checkout
uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
with:
persist-credentials: false
- name: Check for file changes
id: check
uses: ./.github/actions/change-detector/
uses: $/.github/actions/change-detector/
with:
token: ${{ secrets.GITHUB_TOKEN }}
cypress-matrix:
needs: changes
if: (needs.changes.outputs.python == 'true' || needs.changes.outputs.frontend == 'true') && github.event.pull_request.draft == false
# Somehow one test flakes on 24.04 for unknown reasons, this is the only GHA left on 22.04
runs-on: ubuntu-22.04
timeout-minutes: 30
permissions:
contents: read
pull-requests: read
strategy:
# when one test fails, DO NOT cancel the other
# parallel_id, because this will kill Cypress processes
# leaving the Dashboard hanging ...
# https://github.com/cypress-io/github-action/issues/48
fail-fast: false
matrix:
parallel_id: [0, 1]
browser: ["chrome"]
app_root: ${{ github.event_name == 'push' && fromJSON('["", "/app/prefix"]') || fromJSON('[""]') }}
# The /app/prefix variant (push events only) is smoke-tested on a single
# shard rather than the full matrix, so exclude it from the other shards.
exclude:
- parallel_id: 1
app_root: "/app/prefix"
env:
SUPERSET_ENV: development
SUPERSET_CONFIG: tests.integration_tests.superset_test_config
SUPERSET__SQLALCHEMY_DATABASE_URI: postgresql+psycopg2://superset:superset@127.0.0.1:15432/superset
PYTHONPATH: ${{ github.workspace }}
REDIS_PORT: 16379
GITHUB_TOKEN: ${{ github.token }}
# Only use dashboard when explicitly requested via workflow_dispatch
USE_DASHBOARD: ${{ github.event.inputs.use_dashboard == 'true' || 'false' }}
services:
postgres:
image: postgres:17-alpine
env:
POSTGRES_USER: superset
POSTGRES_PASSWORD: superset
ports:
- 15432:5432
redis:
image: redis:7-alpine
ports:
- 16379:6379
steps:
# -------------------------------------------------------
# Conditional checkout based on context
- name: Checkout for push or pull_request event
if: github.event_name == 'push' || github.event_name == 'pull_request'
uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
with:
persist-credentials: false
submodules: recursive
ref: ${{ github.event_name == 'pull_request' && github.event.pull_request.head.sha || github.sha }}
- name: Checkout using ref (workflow_dispatch)
if: github.event_name == 'workflow_dispatch' && github.event.inputs.ref != ''
uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
with:
persist-credentials: false
ref: ${{ github.event.inputs.ref }}
submodules: recursive
- name: Checkout using PR ID (workflow_dispatch)
if: github.event_name == 'workflow_dispatch' && github.event.inputs.pr_id != ''
uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
with:
persist-credentials: false
ref: refs/pull/${{ github.event.inputs.pr_id }}/merge
submodules: recursive
# -------------------------------------------------------
- name: Setup Python
uses: ./.github/actions/setup-backend/
- name: Setup postgres
uses: ./.github/actions/cached-dependencies
with:
run: setup-postgres
- name: Import test data
uses: ./.github/actions/cached-dependencies
with:
run: testdata
- name: Setup Node.js
uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6
with:
node-version-file: "./superset-frontend/.nvmrc"
cache: "npm"
cache-dependency-path: "superset-frontend/package-lock.json"
- name: Install npm dependencies
uses: ./.github/actions/cached-dependencies
with:
run: npm-install
- name: Build javascript packages
uses: ./.github/actions/cached-dependencies
with:
run: build-instrumented-assets
- name: Install cypress
uses: ./.github/actions/cached-dependencies
with:
run: cypress-install
- name: Run Cypress
uses: ./.github/actions/cached-dependencies
env:
CYPRESS_BROWSER: ${{ matrix.browser }}
PARALLEL_ID: ${{ matrix.parallel_id }}
PARALLELISM: 2
CYPRESS_RECORD_KEY: ${{ secrets.CYPRESS_RECORD_KEY }}
NODE_OPTIONS: "--max-old-space-size=4096"
with:
run: cypress-run-all ${{ env.USE_DASHBOARD }} ${{ matrix.app_root }}
- name: Set safe app root
if: failure()
id: set-safe-app-root
env:
APP_ROOT: ${{ matrix.app_root }}
run: |
SAFE_APP_ROOT=${APP_ROOT//\//_}
echo "safe_app_root=$SAFE_APP_ROOT" >> $GITHUB_OUTPUT
- name: Upload Artifacts
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7
if: failure()
with:
path: ${{ github.workspace }}/superset-frontend/cypress-base/cypress/screenshots
name: cypress-artifact-${{ github.run_id }}-${{ github.job }}-${{ matrix.browser }}-${{ matrix.parallel_id }}--${{ steps.set-safe-app-root.outputs.safe_app_root }}
playwright-tests:
needs: changes
if: needs.changes.outputs.python == 'true' || needs.changes.outputs.frontend == 'true'
runs-on: ubuntu-22.04
timeout-minutes: 30
runs-on: ubuntu-26.04
# Soft-delete, Embedded and Mobile each add their own gunicorn boot +
# spec run on top of the Required step.
timeout-minutes: 40
permissions:
contents: read
pull-requests: read
@@ -182,7 +60,9 @@ jobs:
fail-fast: false
matrix:
browser: ["chromium"]
app_root: ${{ github.event_name == 'push' && fromJSON('["", "/app/prefix"]') || fromJSON('[""]') }}
# Subdirectory deployment (APPLICATION_ROOT) is a required-to-pass
# dimension, so it runs on every event.
app_root: ["", "/app/prefix"]
env:
SUPERSET_ENV: development
SUPERSET_CONFIG: tests.integration_tests.superset_test_config
@@ -192,79 +72,176 @@ jobs:
GITHUB_TOKEN: ${{ github.token }}
services:
postgres:
image: postgres:17-alpine
image: ghcr.io/apache/superset/ci/postgres:17-alpine
env:
POSTGRES_USER: superset
POSTGRES_PASSWORD: superset
ports:
- 15432:5432
redis:
image: redis:7-alpine
image: ghcr.io/apache/superset/ci/redis:7-alpine
ports:
- 16379:6379
steps:
# -------------------------------------------------------
# Conditional checkout based on context (same as Cypress workflow)
# Conditional checkout based on context
- name: Checkout for push or pull_request event
if: github.event_name == 'push' || github.event_name == 'pull_request'
uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
with:
persist-credentials: false
submodules: recursive
ref: ${{ github.event_name == 'pull_request' && github.event.pull_request.head.sha || github.sha }}
- name: Checkout using ref (workflow_dispatch)
if: github.event_name == 'workflow_dispatch' && github.event.inputs.ref != ''
uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
with:
persist-credentials: false
ref: ${{ github.event.inputs.ref }}
submodules: recursive
- name: Checkout using PR ID (workflow_dispatch)
if: github.event_name == 'workflow_dispatch' && github.event.inputs.pr_id != ''
uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
with:
persist-credentials: false
ref: refs/pull/${{ github.event.inputs.pr_id }}/merge
submodules: recursive
# -------------------------------------------------------
- name: Setup Python
uses: ./.github/actions/setup-backend/
uses: $/.github/actions/setup-backend/
- name: Setup postgres
uses: ./.github/actions/cached-dependencies
# cached-dependencies is a submodule (not a plain directory), and
# the $/ self-repository syntax resolves action files directly from
# the repository without performing a real (submodule-aware)
# checkout, so it can't see into a submodule's link. Keep this one
# on the workspace-relative ./ form, consistent with every other
# workflow in the repo that references this action.
uses: ./.github/actions/cached-dependencies # zizmor: ignore[self-repository] - $/ cannot resolve an action that lives in a submodule; ./ is required here
with:
run: setup-postgres
- name: Import test data
uses: ./.github/actions/cached-dependencies
# cached-dependencies is a submodule (not a plain directory), and
# the $/ self-repository syntax resolves action files directly from
# the repository without performing a real (submodule-aware)
# checkout, so it can't see into a submodule's link. Keep this one
# on the workspace-relative ./ form, consistent with every other
# workflow in the repo that references this action.
uses: ./.github/actions/cached-dependencies # zizmor: ignore[self-repository] - $/ cannot resolve an action that lives in a submodule; ./ is required here
with:
run: playwright_testdata
- name: Setup Node.js
uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6
uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0
with:
node-version-file: "./superset-frontend/.nvmrc"
cache: "npm"
cache-dependency-path: "superset-frontend/package-lock.json"
- name: Install npm dependencies
uses: ./.github/actions/cached-dependencies
# cached-dependencies is a submodule (not a plain directory), and
# the $/ self-repository syntax resolves action files directly from
# the repository without performing a real (submodule-aware)
# checkout, so it can't see into a submodule's link. Keep this one
# on the workspace-relative ./ form, consistent with every other
# workflow in the repo that references this action.
uses: ./.github/actions/cached-dependencies # zizmor: ignore[self-repository] - $/ cannot resolve an action that lives in a submodule; ./ is required here
with:
run: npm-install
- name: Build javascript packages
uses: ./.github/actions/cached-dependencies
# cached-dependencies is a submodule (not a plain directory), and
# the $/ self-repository syntax resolves action files directly from
# the repository without performing a real (submodule-aware)
# checkout, so it can't see into a submodule's link. Keep this one
# on the workspace-relative ./ form, consistent with every other
# workflow in the repo that references this action.
uses: ./.github/actions/cached-dependencies # zizmor: ignore[self-repository] - $/ cannot resolve an action that lives in a submodule; ./ is required here
with:
run: build-instrumented-assets
- name: Build embedded SDK
uses: ./.github/actions/cached-dependencies
# cached-dependencies is a submodule (not a plain directory), and
# the $/ self-repository syntax resolves action files directly from
# the repository without performing a real (submodule-aware)
# checkout, so it can't see into a submodule's link. Keep this one
# on the workspace-relative ./ form, consistent with every other
# workflow in the repo that references this action.
uses: ./.github/actions/cached-dependencies # zizmor: ignore[self-repository] - $/ cannot resolve an action that lives in a submodule; ./ is required here
with:
run: build-embedded-sdk
- name: Install Playwright
uses: ./.github/actions/cached-dependencies
# cached-dependencies is a submodule (not a plain directory), and
# the $/ self-repository syntax resolves action files directly from
# the repository without performing a real (submodule-aware)
# checkout, so it can't see into a submodule's link. Keep this one
# on the workspace-relative ./ form, consistent with every other
# workflow in the repo that references this action.
uses: ./.github/actions/cached-dependencies # zizmor: ignore[self-repository] - $/ cannot resolve an action that lives in a submodule; ./ is required here
with:
run: playwright-install
- name: Run Playwright (Required Tests)
uses: ./.github/actions/cached-dependencies
# cached-dependencies is a submodule (not a plain directory), and
# the $/ self-repository syntax resolves action files directly from
# the repository without performing a real (submodule-aware)
# checkout, so it can't see into a submodule's link. Keep this one
# on the workspace-relative ./ form, consistent with every other
# workflow in the repo that references this action.
uses: ./.github/actions/cached-dependencies # zizmor: ignore[self-repository] - $/ cannot resolve an action that lives in a submodule; ./ is required here
env:
NODE_OPTIONS: "--max-old-space-size=4096"
with:
run: playwright-run "${{ matrix.app_root }}"
- name: Run Playwright (Soft-delete Tests)
# cached-dependencies is a submodule (not a plain directory), and
# the $/ self-repository syntax resolves action files directly from
# the repository without performing a real (submodule-aware)
# checkout, so it can't see into a submodule's link. Keep this one
# on the workspace-relative ./ form, consistent with every other
# workflow in the repo that references this action.
uses: ./.github/actions/cached-dependencies # zizmor: ignore[self-repository] - $/ cannot resolve an action that lives in a submodule; ./ is required here
env:
NODE_OPTIONS: "--max-old-space-size=4096"
# Scoped to this step: each playwright-run boots its own gunicorn
# with the step's env, so the Required Tests server above keeps
# master's Flask configuration while this one runs with SOFT_DELETE
# on — the same isolation pattern as the Embedded Tests step below.
# Without a flag-on server the recently-archived specs skip
# themselves everywhere and ship zero executed E2E coverage; in the
# Required run above they are collected and skipped, which is
# expected.
SUPERSET_FEATURE_SOFT_DELETE: "true"
with:
run: playwright-run "${{ matrix.app_root }}" recently-archived/
- name: Run Playwright (Embedded Tests)
# cached-dependencies is a submodule (not a plain directory), and
# the $/ self-repository syntax resolves action files directly from
# the repository without performing a real (submodule-aware)
# checkout, so it can't see into a submodule's link. Keep this one
# on the workspace-relative ./ form, consistent with every other
# workflow in the repo that references this action.
uses: ./.github/actions/cached-dependencies # zizmor: ignore[self-repository] - $/ cannot resolve an action that lives in a submodule; ./ is required here
env:
NODE_OPTIONS: "--max-old-space-size=4096"
# Scoped to this step for the same reason as Soft-delete above:
# embedding is a real, required feature, so its Playwright coverage
# now gates merges instead of running only in shadow mode.
SUPERSET_FEATURE_EMBEDDED_SUPERSET: "true"
INCLUDE_EMBEDDED: "true"
with:
run: playwright-run "${{ matrix.app_root }}" embedded
- name: Run Playwright (Mobile Tests)
# cached-dependencies is a submodule (not a plain directory), and
# the $/ self-repository syntax resolves action files directly from
# the repository without performing a real (submodule-aware)
# checkout, so it can't see into a submodule's link. Keep this one
# on the workspace-relative ./ form, consistent with every other
# workflow in the repo that references this action.
uses: ./.github/actions/cached-dependencies # zizmor: ignore[self-repository] - $/ cannot resolve an action that lives in a submodule; ./ is required here
env:
NODE_OPTIONS: "--max-old-space-size=4096"
# Scoped to this step for the same reason as Soft-delete and
# Embedded above: the mobile consumption mode flag must not alter
# Flask's configuration for the other steps' servers.
SUPERSET_FEATURE_MOBILE_CONSUMPTION_MODE: "true"
INCLUDE_MOBILE: "true"
with:
run: playwright-run "${{ matrix.app_root }}" mobile/
- name: Set safe app root
if: failure()
id: set-safe-app-root
@@ -282,48 +259,195 @@ jobs:
${{ github.workspace }}/superset-frontend/test-results/
name: playwright-artifact-${{ github.run_id }}-${{ github.job }}-${{ matrix.browser }}--${{ steps.set-safe-app-root.outputs.safe_app_root }}
# Stable required-status-check anchors. cypress-matrix and playwright-tests
# are matrix jobs gated on change detection (python || frontend). On a PR
# that touches neither — e.g. a docs-only PR — they are skipped at the job
# level, which happens before matrix expansion, so the per-combination
# contexts (`cypress-matrix (0, chrome)`, `playwright-tests (chromium)`) are
# never produced and branch protection waits on them forever. These
# always-running jobs report a single stable context that passes when the
# underlying matrix job succeeded or was skipped, and fails only on a real
# failure. Require these in .asf.yaml instead of the matrix-expanded names.
# GAQ runs in its own job rather than as a step in playwright-tests above.
# A step with no explicit `if:` implicitly inherits `if: success()`, so
# when GAQ was a step after the other suites in that job, a failure in
# either of those unrelated suites skipped GAQ entirely rather than failing it
# -- silently leaving that commit with zero GAQ coverage instead of a visible
# red check. A separate job can't share that fate: it either runs and reports
# for itself, or it doesn't start (e.g. the environment itself never came up),
# which is the only case where "no GAQ result" is actually the right outcome.
playwright-tests-gaq:
needs: changes
if: needs.changes.outputs.python == 'true' || needs.changes.outputs.frontend == 'true'
runs-on: ubuntu-26.04
timeout-minutes: 30
continue-on-error: true
permissions:
contents: read
pull-requests: read
strategy:
fail-fast: false
matrix:
browser: ["chromium"]
app_root: ["", "/app/prefix"]
env:
SUPERSET_ENV: development
SUPERSET_CONFIG: tests.integration_tests.superset_test_config_gaq
SUPERSET__SQLALCHEMY_DATABASE_URI: postgresql+psycopg2://superset:superset@127.0.0.1:15432/superset
PYTHONPATH: ${{ github.workspace }}
REDIS_PORT: 16379
GITHUB_TOKEN: ${{ github.token }}
services:
postgres:
image: ghcr.io/apache/superset/ci/postgres:17-alpine
env:
POSTGRES_USER: superset
POSTGRES_PASSWORD: superset
ports:
- 15432:5432
redis:
image: ghcr.io/apache/superset/ci/redis:7-alpine
ports:
- 16379:6379
steps:
# -------------------------------------------------------
# Conditional checkout based on context
- name: Checkout for push or pull_request event
if: github.event_name == 'push' || github.event_name == 'pull_request'
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
with:
persist-credentials: false
submodules: recursive
ref: ${{ github.event_name == 'pull_request' && github.event.pull_request.head.sha || github.sha }}
- name: Checkout using ref (workflow_dispatch)
if: github.event_name == 'workflow_dispatch' && github.event.inputs.ref != ''
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
with:
persist-credentials: false
ref: ${{ github.event.inputs.ref }}
submodules: recursive
- name: Checkout using PR ID (workflow_dispatch)
if: github.event_name == 'workflow_dispatch' && github.event.inputs.pr_id != ''
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
with:
persist-credentials: false
ref: refs/pull/${{ github.event.inputs.pr_id }}/merge
submodules: recursive
# -------------------------------------------------------
- name: Setup Python
uses: $/.github/actions/setup-backend/
- name: Setup postgres
# cached-dependencies is a submodule (not a plain directory), and
# the $/ self-repository syntax resolves action files directly from
# the repository without performing a real (submodule-aware)
# checkout, so it can't see into a submodule's link. Keep this one
# on the workspace-relative ./ form, consistent with every other
# workflow in the repo that references this action.
uses: ./.github/actions/cached-dependencies # zizmor: ignore[self-repository] - $/ cannot resolve an action that lives in a submodule; ./ is required here
with:
run: setup-postgres
- name: Import test data
# cached-dependencies is a submodule (not a plain directory), and
# the $/ self-repository syntax resolves action files directly from
# the repository without performing a real (submodule-aware)
# checkout, so it can't see into a submodule's link. Keep this one
# on the workspace-relative ./ form, consistent with every other
# workflow in the repo that references this action.
uses: ./.github/actions/cached-dependencies # zizmor: ignore[self-repository] - $/ cannot resolve an action that lives in a submodule; ./ is required here
with:
run: playwright_testdata
- name: Setup Node.js
uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0
with:
node-version-file: "./superset-frontend/.nvmrc"
cache: "npm"
cache-dependency-path: "superset-frontend/package-lock.json"
- name: Install npm dependencies
# cached-dependencies is a submodule (not a plain directory), and
# the $/ self-repository syntax resolves action files directly from
# the repository without performing a real (submodule-aware)
# checkout, so it can't see into a submodule's link. Keep this one
# on the workspace-relative ./ form, consistent with every other
# workflow in the repo that references this action.
uses: ./.github/actions/cached-dependencies # zizmor: ignore[self-repository] - $/ cannot resolve an action that lives in a submodule; ./ is required here
with:
run: npm-install
- name: Build javascript packages
# cached-dependencies is a submodule (not a plain directory), and
# the $/ self-repository syntax resolves action files directly from
# the repository without performing a real (submodule-aware)
# checkout, so it can't see into a submodule's link. Keep this one
# on the workspace-relative ./ form, consistent with every other
# workflow in the repo that references this action.
uses: ./.github/actions/cached-dependencies # zizmor: ignore[self-repository] - $/ cannot resolve an action that lives in a submodule; ./ is required here
with:
run: build-instrumented-assets
- name: Install Playwright
# cached-dependencies is a submodule (not a plain directory), and
# the $/ self-repository syntax resolves action files directly from
# the repository without performing a real (submodule-aware)
# checkout, so it can't see into a submodule's link. Keep this one
# on the workspace-relative ./ form, consistent with every other
# workflow in the repo that references this action.
uses: ./.github/actions/cached-dependencies # zizmor: ignore[self-repository] - $/ cannot resolve an action that lives in a submodule; ./ is required here
with:
run: playwright-install
- name: Run Playwright (Global Async Queries Tests)
# cached-dependencies is a submodule (not a plain directory), and
# the $/ self-repository syntax resolves action files directly from
# the repository without performing a real (submodule-aware)
# checkout, so it can't see into a submodule's link. Keep this one
# on the workspace-relative ./ form, consistent with every other
# workflow in the repo that references this action.
uses: ./.github/actions/cached-dependencies # zizmor: ignore[self-repository] - $/ cannot resolve an action that lives in a submodule; ./ is required here
env:
NODE_OPTIONS: "--max-old-space-size=4096"
# Scoped to this step for the same reason as the Soft-delete, Embedded
# and Mobile steps in playwright-tests above: GLOBAL_ASYNC_QUERIES
# changes chart-data behaviour for every spec sharing a server.
#
# This suite has its own job, and is not required, because unlike the
# other flag-gated suites it needs a Celery worker: submissions are
# handed to Celery, so without one the API returns 202 and no job ever
# executes. Putting a background worker and its startup window on the
# required path would let a GAQ flake block PRs that have nothing to
# do with async queries.
#
# `playwright-run-gaq` starts the worker and sets INCLUDE_GAQ, which
# is what makes the chromium-gaq project exist at all.
SUPERSET_FEATURE_GLOBAL_ASYNC_QUERIES: "true"
with:
# No spec list: playwright-run-gaq selects --project=chromium-gaq, whose
# testMatch is the single definition of what the GAQ suite contains.
run: playwright-run-gaq "${{ matrix.app_root }}"
- name: Set safe app root
if: failure()
id: set-safe-app-root
env:
APP_ROOT: ${{ matrix.app_root }}
run: |
SAFE_APP_ROOT=${APP_ROOT//\//_}
echo "safe_app_root=$SAFE_APP_ROOT" >> $GITHUB_OUTPUT
- name: Upload Playwright Artifacts
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7
if: failure()
with:
path: |
${{ github.workspace }}/superset-frontend/playwright-results/
${{ github.workspace }}/superset-frontend/test-results/
name: playwright-gaq-artifact-${{ github.run_id }}-${{ github.job }}-${{ matrix.browser }}--${{ steps.set-safe-app-root.outputs.safe_app_root }}
# Stable required-status-check anchor. playwright-tests is a matrix job
# gated on change detection (python || frontend). On a PR that touches
# neither — e.g. a docs-only PR — it is skipped at the job level, which
# happens before matrix expansion, so the per-combination context
# (`playwright-tests (chromium)`) is never produced and branch protection
# waits on it forever. This always-running job reports a single stable
# context that passes when the underlying matrix job succeeded or was
# skipped, and fails only on a real failure. Require it in .asf.yaml instead
# of the matrix-expanded name.
#
# A matrix job reads as "skipped" in two distinct cases, and only the first
# is a legitimate pass: (a) change detection succeeded and gated the job off
# (docs-only PR); (b) the `changes` job itself failed or was cancelled, in
# which case GHA skips its dependents too. Accepting (b) would let a broken
# change-detector report a false green, so each anchor first requires
# change-detector report a false green, so the anchor first requires
# `changes` to have succeeded before honouring a skip.
cypress-matrix-required:
needs: [changes, cypress-matrix]
if: always()
runs-on: ubuntu-24.04
timeout-minutes: 5
permissions: {}
steps:
- name: Check cypress-matrix result
env:
CHANGES: ${{ needs.changes.result }}
RESULT: ${{ needs.cypress-matrix.result }}
run: |
if [ "$CHANGES" != "success" ]; then
echo "change detection did not succeed (result: $CHANGES); refusing to pass on a skipped matrix"
exit 1
fi
if [ "$RESULT" != "success" ] && [ "$RESULT" != "skipped" ]; then
echo "cypress-matrix did not pass (result: $RESULT)"
exit 1
fi
echo "cypress-matrix result: $RESULT (changes: $CHANGES)"
playwright-tests-required:
needs: [changes, playwright-tests]
if: always()
runs-on: ubuntu-24.04
runs-on: ubuntu-26.04
timeout-minutes: 5
permissions: {}
steps:
@@ -341,3 +465,14 @@ jobs:
exit 1
fi
echo "playwright-tests result: $RESULT (changes: $CHANGES)"
actions-timeline:
needs: [playwright-tests, playwright-tests-required]
if: always()
runs-on: ubuntu-slim
permissions:
actions: read
steps:
- uses: Kesin11/actions-timeline@57fc93f20c6da7fbc14063c6d24a2a5627c799ad # v3.2.0
with:
expand-composite-actions: true

View File

@@ -11,6 +11,7 @@ on:
permissions:
contents: read
pull-requests: read
actions: read
# cancel previous workflow jobs for PRs
concurrency:
@@ -19,32 +20,32 @@ concurrency:
jobs:
test-superset-extensions-cli-package:
runs-on: ubuntu-24.04
runs-on: ubuntu-26.04
timeout-minutes: 30
strategy:
matrix:
# Full version spread on push (master/release) + nightly; current only
# on PRs to cut runner cost (cross-version breaks are caught at merge).
python-version: ${{ github.event_name == 'pull_request' && fromJSON('["current"]') || fromJSON('["previous", "current", "next"]') }}
python-version: ${{ github.event_name == 'pull_request' && fromJSON('["current"]') || fromJSON('["current", "next"]') }}
defaults:
run:
working-directory: superset-extensions-cli
steps:
- name: "Checkout ${{ github.ref }} ( ${{ github.sha }} )"
uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
with:
persist-credentials: false
submodules: recursive
- name: Check for file changes
id: check
uses: ./.github/actions/change-detector/
uses: $/.github/actions/change-detector/
with:
token: ${{ secrets.GITHUB_TOKEN }}
- name: Setup Python
if: steps.check.outputs.superset-extensions-cli
uses: ./.github/actions/setup-backend/
uses: $/.github/actions/setup-backend/
with:
python-version: ${{ matrix.python-version }}
requirements-type: dev
@@ -56,7 +57,7 @@ jobs:
- name: Upload coverage reports to Codecov
if: steps.check.outputs.superset-extensions-cli
uses: codecov/codecov-action@fb8b3582c8e4def4969c97caa2f19720cb33a72f # v7.0.0
uses: codecov/codecov-action@303a32d7a59b442fa8d48b6a1cc6825c09c847a5 # v7.1.1
with:
file: ./coverage.xml
flags: superset-extensions-cli
@@ -69,3 +70,12 @@ jobs:
with:
name: superset-extensions-cli-coverage-html
path: htmlcov/
actions-timeline:
needs: test-superset-extensions-cli-package
if: always()
runs-on: ubuntu-slim
steps:
- uses: Kesin11/actions-timeline@57fc93f20c6da7fbc14063c6d24a2a5627c799ad # v3.2.0
with:
expand-composite-actions: true

View File

@@ -21,13 +21,19 @@ permissions:
jobs:
frontend-build:
runs-on: ubuntu-24.04
runs-on: ubuntu-26.04
timeout-minutes: 30
# The change detector reads the PR's file list, which needs
# `pull-requests: read`. Public repos serve that endpoint without it;
# private forks return 403.
permissions:
contents: read
pull-requests: read
outputs:
should-run: ${{ steps.check.outputs.frontend }}
steps:
- name: Checkout Code
uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
with:
persist-credentials: false
fetch-depth: 0
@@ -35,7 +41,7 @@ jobs:
- name: Check for File Changes
id: check
uses: ./.github/actions/change-detector/
uses: $/.github/actions/change-detector/
with:
token: ${{ secrets.GITHUB_TOKEN }}
@@ -51,7 +57,7 @@ jobs:
git show -s --format=raw HEAD
docker buildx build \
-t $TAG \
--cache-from=type=registry,ref=apache/superset-cache:3.10-slim-trixie \
--cache-from=type=registry,ref=apache/superset-cache:3.11-slim-trixie \
--target superset-node-ci \
.
@@ -74,7 +80,7 @@ jobs:
matrix:
shard: [1, 2, 3, 4, 5, 6, 7, 8]
fail-fast: false
runs-on: ubuntu-24.04
runs-on: ubuntu-26.04
timeout-minutes: 20
steps:
- name: Download Docker Image Artifact
@@ -91,6 +97,7 @@ jobs:
mkdir -p ${{ github.workspace }}/superset-frontend/coverage
docker run \
-v ${{ github.workspace }}/superset-frontend/coverage:/app/superset-frontend/coverage \
-e CI=true \
--rm $TAG \
bash -c \
"npm run test -- --coverage --shard=${{ matrix.shard }}/8 --coverageReporters=json"
@@ -104,13 +111,13 @@ jobs:
report-coverage:
needs: [sharded-jest-tests]
if: needs.frontend-build.outputs.should-run == 'true'
runs-on: ubuntu-24.04
runs-on: ubuntu-slim
timeout-minutes: 15
permissions:
id-token: write
steps:
- name: Checkout Code
uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
with:
persist-credentials: false
fetch-depth: 0
@@ -122,31 +129,19 @@ jobs:
pattern: coverage-artifacts-*
path: coverage/
- name: Reorganize test result reports
run: |
find coverage/
for i in {1..8}; do
mv coverage/coverage-artifacts-${i}/coverage-final.json coverage/coverage-shard-${i}.json
done
shell: bash
- name: Merge Code Coverage
run: npx nyc merge coverage/ merged-output/coverage-summary.json
- name: Upload Code Coverage
uses: codecov/codecov-action@fb8b3582c8e4def4969c97caa2f19720cb33a72f # v7.0.0
uses: codecov/codecov-action@303a32d7a59b442fa8d48b6a1cc6825c09c847a5 # v7.1.1
with:
flags: javascript
use_oidc: true
verbose: true
disable_search: true
files: merged-output/coverage-summary.json
directory: coverage
slug: apache/superset
lint-frontend:
needs: frontend-build
if: needs.frontend-build.outputs.should-run == 'true'
runs-on: ubuntu-24.04
runs-on: ubuntu-26.04
timeout-minutes: 20
steps:
- name: Download Docker Image Artifact
@@ -171,7 +166,7 @@ jobs:
validate-frontend:
needs: frontend-build
if: needs.frontend-build.outputs.should-run == 'true'
runs-on: ubuntu-24.04
runs-on: ubuntu-26.04
timeout-minutes: 20
steps:
- name: Download Docker Image Artifact
@@ -183,15 +178,15 @@ jobs:
run: |
zstd -d < docker-image.tar.zst | docker load
- name: Build Plugins Packages
- name: Validate dependency tree
run: |
docker run --rm $TAG bash -c \
"npm run plugins:build"
"npm ls --all --package-lock-only --depth=0 --json > /dev/null"
test-storybook:
needs: frontend-build
if: needs.frontend-build.outputs.should-run == 'true'
runs-on: ubuntu-24.04
runs-on: ubuntu-26.04
timeout-minutes: 25
steps:
- name: Download Docker Image Artifact
@@ -207,3 +202,111 @@ jobs:
run: |
docker run --rm $TAG bash -c \
"npm run build-storybook && npx playwright install-deps && npx playwright install chromium && npm run test-storybook:ci"
actions-timeline:
needs: [report-coverage, lint-frontend, validate-frontend, test-storybook]
if: always()
runs-on: ubuntu-slim
permissions:
actions: read
steps:
- uses: Kesin11/actions-timeline@57fc93f20c6da7fbc14063c6d24a2a5627c799ad # v3.2.0
with:
expand-composite-actions: true
# Compares a PR's own bundle size against the last nightly-recorded
# baseline (see frontend-bundle-size-nightly.yml, which owns actually
# persisting new baselines). PR-only: a push to master doesn't need this
# check re-run against itself, and re-persisting the baseline on every
# push to master -- which happens many times a day -- would burn a full
# production build for no benefit nightly refresh doesn't already cover.
bundle-size:
needs: frontend-build
if: needs.frontend-build.outputs.should-run == 'true' && github.event_name == 'pull_request'
runs-on: ubuntu-26.04
timeout-minutes: 15
permissions:
contents: read
pull-requests: write
steps:
- name: Checkout Code
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
with:
persist-credentials: false
ref: ${{ github.event_name == 'pull_request' && github.event.pull_request.head.sha || github.sha }}
- name: Download Docker Image Artifact
uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8
with:
name: docker-image
- name: Load Docker Image
run: |
zstd -d < docker-image.tar.zst | docker load
# webpack's persistent filesystem cache (superset-frontend/webpack.config.js)
# turns a warm production build into ~20s instead of several minutes,
# but GH-hosted runners are fresh VMs with nothing carried over between
# jobs -- without restoring it explicitly, every single PR would pay
# the full cold-build cost. Keyed on the same files webpack's own
# `buildDependencies` invalidates on, so a stale cache is never used.
- name: Restore webpack build cache
uses: actions/cache@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6.1.0
with:
path: superset-frontend/.temp_cache
key: >-
webpack-prod-cache-${{ hashFiles('superset-frontend/package-lock.json',
'superset-frontend/babel.config.js', 'superset-frontend/tsconfig.json',
'superset-frontend/webpack.config.js') }}
# Only ever pull the last recorded data point off the cache, keyed by
# run ID -- `restore-keys` prefix-matches the most recently created
# entry, which is always the latest nightly run. Absent before the
# first nightly run ever happens; benchmark-action starts a fresh
# history in that case.
- name: Restore bundle size history
uses: actions/cache/restore@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6.1.0
with:
path: bundle-size-history.json
key: bundle-size-history-${{ github.run_id }}
restore-keys: |
bundle-size-history-
- name: Build production bundle with stats
run: |
mkdir -p ${{ github.workspace }}/superset-frontend/bundle-stats
mkdir -p ${{ github.workspace }}/superset-frontend/.temp_cache
docker run \
-v ${{ github.workspace }}/superset-frontend/bundle-stats:/app/superset-frontend/bundle-stats \
-v ${{ github.workspace }}/superset-frontend/.temp_cache:/app/superset-frontend/.temp_cache \
--rm $TAG \
bash -c \
"npm i && BUNDLE_SIZE_STATS=true npm run build -- --json=bundle-stats/stats.json"
- name: Summarize bundle size
run: |
node superset-frontend/scripts/bundle-size-summary.js \
superset-frontend/bundle-stats/stats.json > bundle-size-summary.json
rm -rf superset-frontend/bundle-stats
# Comparison + alert only -- this job never persists. See
# frontend-bundle-size-nightly.yml for why.
#
# comment-on-alert is gated to same-repo PRs: on a fork PR,
# GITHUB_TOKEN is forced read-only regardless of the `permissions`
# block above, so once the alert threshold is crossed the action's
# `pulls.createReview` call 403s. That error isn't gated by
# fail-on-alert (which only governs the deliberate alert-threshold
# failure) -- it propagates and fails the job outright. Fork PRs
# still get the comparison via the job summary (summary-always).
- name: Compare bundle size against nightly baseline
uses: benchmark-action/github-action-benchmark@4322e5726e6334590d251fc4f92bec0efafc45dc # v1.22.2
with:
tool: customSmallerIsBetter
output-file-path: bundle-size-summary.json
external-data-json-path: bundle-size-history.json
github-token: ${{ secrets.GITHUB_TOKEN }}
comment-on-alert: ${{ github.event.pull_request.head.repo.full_name == github.repository }}
alert-threshold: "110%"
fail-on-alert: false
summary-always: true

View File

@@ -0,0 +1,74 @@
name: "Helm: lint and test charts"
on:
pull_request:
types: [opened, reopened, synchronize]
paths:
- "helm/**"
permissions:
contents: read
actions: read
# Serialize runs per PR without cancelling: when a first-time contributor's
# queued runs are approved together, cancel-in-progress lets an older run
# cancel a newer one, leaving a permanently-cancelled required check on the
# head SHA. Queued runs are cheap here, so let them all complete.
concurrency:
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.run_id }}
cancel-in-progress: false
jobs:
lint-test:
runs-on: ubuntu-slim
steps:
- uses: Kesin11/actions-timeline@57fc93f20c6da7fbc14063c6d24a2a5627c799ad # v3.2.0
with:
expand-composite-actions: true
- name: "Checkout ${{ github.ref }} ( ${{ github.sha }} )"
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
with:
persist-credentials: false
submodules: recursive
fetch-depth: 0
- name: Set up Helm
uses: azure/setup-helm@9bc31f4ebc9c6b171d7bfbaa5d006ae7abdb4310 # v5.0.1
with:
version: v3.21.3
- name: Setup Python
uses: $/.github/actions/setup-backend/
with:
install-superset: "false"
- name: Set up chart-testing
uses: helm/chart-testing-action@6ec842c01de15ebb84c8627d2744a0c2f2755c9f # v2.8.0
- name: Run chart-testing (list-changed)
id: list-changed
run: |
changed=$(ct list-changed --target-branch ${GITHUB_EVENT_REPOSITORY_DEFAULT_BRANCH} --print-config)
if [[ -n "$changed" ]]; then
echo "changed=true" >> $GITHUB_OUTPUT
fi
env:
CT_CHART_DIRS: helm
CT_SINCE: HEAD
GITHUB_EVENT_REPOSITORY_DEFAULT_BRANCH: ${{ github.event.repository.default_branch }}
- name: Run chart-testing (lint)
run: ct lint --target-branch ${GITHUB_EVENT_REPOSITORY_DEFAULT_BRANCH} --print-config
env:
CT_CHART_DIRS: helm
CT_LINT_CONF: lintconf.yaml
CT_SINCE: HEAD
CT_CHART_REPOS: bitnami=https://charts.bitnami.com/bitnami
GITHUB_EVENT_REPOSITORY_DEFAULT_BRANCH: ${{ github.event.repository.default_branch }}
- name: Set up helm-unittest
run: helm plugin install https://github.com/helm-unittest/helm-unittest --version v1.1.1
- name: Run helm-unittest
run: helm unittest helm/superset

View File

@@ -1,58 +0,0 @@
name: "Helm: lint and test charts"
on:
pull_request:
types: [opened, edited, reopened, synchronize]
paths:
- "helm/**"
permissions:
contents: read
# cancel previous workflow jobs for PRs
concurrency:
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.run_id }}
cancel-in-progress: true
jobs:
lint-test:
runs-on: ubuntu-24.04
steps:
- name: "Checkout ${{ github.ref }} ( ${{ github.sha }} )"
uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
with:
persist-credentials: false
submodules: recursive
fetch-depth: 0
- name: Set up Helm
uses: azure/setup-helm@9bc31f4ebc9c6b171d7bfbaa5d006ae7abdb4310 # v5.0.1
with:
version: v3.16.4
- name: Setup Python
uses: ./.github/actions/setup-backend/
with:
install-superset: "false"
- name: Set up chart-testing
uses: ./.github/actions/chart-testing-action
- name: Run chart-testing (list-changed)
id: list-changed
run: |
changed=$(ct list-changed --print-config)
if [[ -n "$changed" ]]; then
echo "changed=true" >> $GITHUB_OUTPUT
fi
env:
CT_CHART_DIRS: helm
CT_SINCE: HEAD
- name: Run chart-testing (lint)
run: ct lint --print-config
env:
CT_CHART_DIRS: helm
CT_LINT_CONF: lintconf.yaml
CT_SINCE: HEAD
CT_CHART_REPOS: bitnami=https://charts.bitnami.com/bitnami

View File

@@ -1,6 +1,9 @@
# This workflow automates the release process for Helm charts.
# The workflow creates a new branch for the release and opens a pull request against the 'gh-pages' branch,
# allowing the changes to be reviewed and merged manually.
# Each run force-recreates a single 'helm-publish' branch from the tip of 'gh-pages' and
# opens (or reuses) one pull request against 'gh-pages', allowing the changes to be
# reviewed and merged manually. Because chart-releaser rebuilds index.yaml from all
# published GitHub releases, the branch always contains every chart released since the
# last merge, and the PR can never go stale or conflict with gh-pages.
name: "Helm: release charts"
@@ -18,9 +21,18 @@ on:
required: false
default: "master"
# Serialize runs: concurrent runs would race on force-pushing the shared
# helm-publish branch while chart-releaser is mid-release.
concurrency:
group: helm-release
cancel-in-progress: false
permissions:
contents: read
jobs:
release:
runs-on: ubuntu-24.04
runs-on: ubuntu-26.04
permissions:
contents: write
pull-requests: write
@@ -29,7 +41,7 @@ jobs:
steps:
- name: Checkout code
uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
with:
ref: ${{ inputs.ref || github.ref_name }}
persist-credentials: true
@@ -57,9 +69,9 @@ jobs:
echo "DEBUG TAGS"
git show-ref --tags
- name: Create unique pages branch name
- name: Set pages branch name
id: vars
run: echo "branch_name=helm-publish-${GITHUB_SHA:0:7}" >> $GITHUB_ENV
run: echo "branch_name=helm-publish" >> $GITHUB_ENV
- name: Force recreate branch from gh-pages
env:
@@ -86,23 +98,23 @@ jobs:
# Return to the original branch
git checkout local_gha_temp
- name: Fetch/list all tags
run: |
git submodule update
cat .github/actions/chart-releaser-action/action.yml
- name: Run chart-releaser
uses: ./.github/actions/chart-releaser-action
uses: helm/chart-releaser-action@cae68fefc6b5f367a0275617c9f83181ba54714f # v1.7.0
with:
version: v1.6.0
charts_dir: helm
mark_as_latest: false
# A helm/** change without a Chart.yaml version bump repackages the
# already-released version; without this, cr aborts on the existing
# release tag (422 already_exists) instead of proceeding to rebuild
# the index, and the whole run fails.
skip_existing: true
pages_branch: ${{ env.branch_name }}
env:
CR_TOKEN: "${{ github.token }}"
CR_RELEASE_NAME_TEMPLATE: "superset-helm-chart-{{ .Version }}"
- name: Open Pull Request
- name: Open or reuse Pull Request
uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0
with:
script: |
@@ -113,15 +125,72 @@ jobs:
throw new Error("Branch name is not defined.");
}
const pr = await github.rest.pulls.create({
// The branch is force-recreated from gh-pages on every run, so an
// already-open PR for it now reflects this run's charts; opening
// another would both fail (422) and recreate the stale-PR pileup
// this fixed branch exists to avoid.
const { data: existing } = await github.rest.pulls.list({
owner,
repo,
title: `Helm chart release for ${branchName}`,
head: branchName,
base: "gh-pages", // Adjust if the target branch is different
body: `This PR releases Helm charts to the gh-pages branch.`,
state: "open",
head: `${owner}:${branchName}`,
base: "gh-pages",
});
core.info(`Pull request created: ${pr.data.html_url}`);
let current;
if (existing.length > 0) {
current = existing[0];
core.info(`Reusing existing pull request: ${current.html_url}`);
} else {
const { data: pr } = await github.rest.pulls.create({
owner,
repo,
title: "Helm chart release",
head: branchName,
base: "gh-pages", // Adjust if the target branch is different
body: [
"This PR releases Helm charts to the gh-pages branch.",
"",
"It is force-updated from the tip of `gh-pages` by every release run,",
"so it always contains every chart released since the last merge and",
"never needs to be closed as superseded.",
].join("\n"),
});
current = pr;
core.info(`Pull request created: ${current.html_url}`);
}
// Sweep release PRs left open by older runs (per-SHA helm-publish-*
// branches from the previous scheme). Their content is a subset of
// the evergreen PR, so close them with a pointer to it.
const { data: openPrs } = await github.rest.pulls.list({
owner,
repo,
state: "open",
base: "gh-pages",
per_page: 100,
});
for (const stale of openPrs) {
if (
stale.number !== current.number &&
stale.head.repo?.full_name === process.env.GITHUB_REPOSITORY &&
stale.head.ref.startsWith("helm-publish")
) {
await github.rest.issues.createComment({
owner,
repo,
issue_number: stale.number,
body: `Superseded by #${current.number}, which now carries all unreleased charts. Closing.`,
});
await github.rest.pulls.update({
owner,
repo,
pull_number: stale.number,
state: "closed",
});
core.info(`Closed superseded release PR #${stale.number}`);
}
}
env:
BRANCH_NAME: ${{ env.branch_name }}

View File

@@ -1,172 +0,0 @@
name: Playwright Experimental Tests
on:
push:
branches:
- "master"
- "[0-9].[0-9]*"
pull_request:
types: [synchronize, opened, reopened, ready_for_review]
workflow_dispatch:
inputs:
ref:
description: "The branch or tag to checkout"
required: false
default: ""
pr_id:
description: "The pull request ID to checkout"
required: false
default: ""
concurrency:
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.run_id }}
cancel-in-progress: true
jobs:
changes:
runs-on: ubuntu-24.04
timeout-minutes: 10
permissions:
contents: read
pull-requests: read
outputs:
python: ${{ steps.check.outputs.python }}
frontend: ${{ steps.check.outputs.frontend }}
steps:
- name: Checkout
uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
with:
persist-credentials: false
- name: Check for file changes
id: check
uses: ./.github/actions/change-detector/
with:
token: ${{ secrets.GITHUB_TOKEN }}
# NOTE: Required Playwright tests are in superset-e2e.yml (E2E / playwright-tests)
# This workflow contains only experimental tests that run in shadow mode
playwright-tests-experimental:
needs: changes
if: needs.changes.outputs.python == 'true' || needs.changes.outputs.frontend == 'true'
runs-on: ubuntu-22.04
timeout-minutes: 30
continue-on-error: true
permissions:
contents: read
pull-requests: read
strategy:
fail-fast: false
matrix:
browser: ["chromium"]
app_root: ["", "/app/prefix"]
env:
SUPERSET_ENV: development
SUPERSET_CONFIG: tests.integration_tests.superset_test_config
SUPERSET__SQLALCHEMY_DATABASE_URI: postgresql+psycopg2://superset:superset@127.0.0.1:15432/superset
PYTHONPATH: ${{ github.workspace }}
REDIS_PORT: 16379
GITHUB_TOKEN: ${{ github.token }}
services:
postgres:
image: postgres:17-alpine
env:
POSTGRES_USER: superset
POSTGRES_PASSWORD: superset
ports:
- 15432:5432
redis:
image: redis:7-alpine
ports:
- 16379:6379
steps:
# -------------------------------------------------------
# Conditional checkout based on context (same as Cypress workflow)
- name: Checkout for push or pull_request event
if: github.event_name == 'push' || github.event_name == 'pull_request'
uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
with:
persist-credentials: false
submodules: recursive
ref: ${{ github.event_name == 'pull_request' && github.event.pull_request.head.sha || github.sha }}
- name: Checkout using ref (workflow_dispatch)
if: github.event_name == 'workflow_dispatch' && github.event.inputs.ref != ''
uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
with:
persist-credentials: false
ref: ${{ github.event.inputs.ref }}
submodules: recursive
- name: Checkout using PR ID (workflow_dispatch)
if: github.event_name == 'workflow_dispatch' && github.event.inputs.pr_id != ''
uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
with:
persist-credentials: false
ref: refs/pull/${{ github.event.inputs.pr_id }}/merge
submodules: recursive
# -------------------------------------------------------
- name: Setup Python
uses: ./.github/actions/setup-backend/
- name: Setup postgres
uses: ./.github/actions/cached-dependencies
with:
run: setup-postgres
- name: Import test data
uses: ./.github/actions/cached-dependencies
with:
run: playwright_testdata
- name: Setup Node.js
uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6
with:
node-version-file: "./superset-frontend/.nvmrc"
cache: "npm"
cache-dependency-path: "superset-frontend/package-lock.json"
- name: Install npm dependencies
uses: ./.github/actions/cached-dependencies
with:
run: npm-install
- name: Build javascript packages
uses: ./.github/actions/cached-dependencies
with:
run: build-instrumented-assets
- name: Build embedded SDK
uses: ./.github/actions/cached-dependencies
with:
run: build-embedded-sdk
- name: Install Playwright
uses: ./.github/actions/cached-dependencies
with:
run: playwright-install
- name: Run Playwright (Experimental Tests)
uses: ./.github/actions/cached-dependencies
env:
NODE_OPTIONS: "--max-old-space-size=4096"
with:
run: playwright-run "${{ matrix.app_root }}" experimental/
- name: Run Playwright (Embedded Tests)
uses: ./.github/actions/cached-dependencies
env:
NODE_OPTIONS: "--max-old-space-size=4096"
# Scope embedded-only env vars to this step. Setting them at the job
# level enabled the EMBEDDED_SUPERSET feature flag inside Flask for
# the preceding "Required Tests" and "Experimental Tests" steps too,
# which loads extra handlers and destabilizes the werkzeug dev
# server under the 2-worker Playwright load. Required Tests should
# match master's Flask configuration.
SUPERSET_FEATURE_EMBEDDED_SUPERSET: "true"
INCLUDE_EMBEDDED: "true"
with:
run: playwright-run "${{ matrix.app_root }}" embedded
- name: Set safe app root
if: failure()
id: set-safe-app-root
run: |
APP_ROOT="${{ matrix.app_root }}"
SAFE_APP_ROOT=${APP_ROOT//\//_}
echo "safe_app_root=$SAFE_APP_ROOT" >> $GITHUB_OUTPUT
- name: Upload Playwright Artifacts
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7
if: failure()
with:
path: |
${{ github.workspace }}/superset-frontend/playwright-results/
${{ github.workspace }}/superset-frontend/test-results/
name: playwright-experimental-artifact-${{ github.run_id }}-${{ github.job }}-${{ matrix.browser }}--${{ steps.set-safe-app-root.outputs.safe_app_root }}

View File

@@ -20,7 +20,7 @@ concurrency:
jobs:
changes:
runs-on: ubuntu-24.04
runs-on: ubuntu-26.04
timeout-minutes: 10
permissions:
contents: read
@@ -29,19 +29,19 @@ jobs:
python: ${{ steps.check.outputs.python }}
steps:
- name: Checkout
uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
with:
persist-credentials: false
- name: Check for file changes
id: check
uses: ./.github/actions/change-detector/
uses: $/.github/actions/change-detector/
with:
token: ${{ secrets.GITHUB_TOKEN }}
test-mysql:
needs: changes
if: needs.changes.outputs.python == 'true'
runs-on: ubuntu-24.04
runs-on: ubuntu-26.04
timeout-minutes: 45
permissions:
id-token: write
@@ -53,9 +53,7 @@ jobs:
mysql+mysqldb://superset:superset@127.0.0.1:13306/superset?charset=utf8mb4&binary_prefix=true
services:
mysql:
image: mysql:8.0
# Authenticated pulls use our higher Docker Hub rate limit. Empty on
# fork PRs (secrets unavailable) -> runner falls back to anonymous.
image: ghcr.io/apache/superset/ci/mysql:8.0
env:
MYSQL_ROOT_PASSWORD: root
ports:
@@ -66,31 +64,43 @@ jobs:
--health-timeout=5s
--health-retries=5
redis:
image: redis:7-alpine
image: ghcr.io/apache/superset/ci/redis:7-alpine
options: --entrypoint redis-server
ports:
- 16379:6379
steps:
- name: "Checkout ${{ github.ref }} ( ${{ github.sha }} )"
uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
with:
persist-credentials: false
submodules: recursive
- name: Setup Python
uses: ./.github/actions/setup-backend/
uses: $/.github/actions/setup-backend/
- name: Setup MySQL
uses: ./.github/actions/cached-dependencies
# cached-dependencies is a git submodule (not a plain directory), and
# the $/ self-repository syntax resolves action files directly from
# the repository without performing a real (submodule-aware)
# checkout, so it can't see into a submodule's gitlink. Keep this one
# on the workspace-relative ./ form, consistent with every other
# workflow in the repo that references this action.
uses: ./.github/actions/cached-dependencies # zizmor: ignore[self-repository] - $/ cannot resolve an action that lives in a submodule; ./ is required here
with:
run: setup-mysql
- name: Start Celery worker
uses: ./.github/actions/cached-dependencies
# cached-dependencies is a git submodule (not a plain directory), and
# the $/ self-repository syntax resolves action files directly from
# the repository without performing a real (submodule-aware)
# checkout, so it can't see into a submodule's gitlink. Keep this one
# on the workspace-relative ./ form, consistent with every other
# workflow in the repo that references this action.
uses: ./.github/actions/cached-dependencies # zizmor: ignore[self-repository] - $/ cannot resolve an action that lives in a submodule; ./ is required here
with:
run: celery-worker
- name: Python integration tests (MySQL)
run: |
./scripts/python_tests.sh
- name: Upload code coverage
uses: codecov/codecov-action@fb8b3582c8e4def4969c97caa2f19720cb33a72f # v7.0.0
uses: codecov/codecov-action@303a32d7a59b442fa8d48b6a1cc6825c09c847a5 # v7.1.1
with:
flags: python,mysql
verbose: true
@@ -127,7 +137,7 @@ jobs:
test-postgres:
needs: changes
if: needs.changes.outputs.python == 'true'
runs-on: ubuntu-24.04
runs-on: ubuntu-26.04
timeout-minutes: 45
permissions:
id-token: write
@@ -135,7 +145,7 @@ jobs:
matrix:
# Full version spread on push (master/release) + nightly; current only
# on PRs to cut runner cost (cross-version breaks are caught at merge).
python-version: ${{ github.event_name == 'pull_request' && fromJSON('["current"]') || fromJSON('["current", "previous", "next"]') }}
python-version: ${{ github.event_name == 'pull_request' && fromJSON('["current"]') || fromJSON('["current", "next"]') }}
env:
PYTHONPATH: ${{ github.workspace }}
SUPERSET_CONFIG: tests.integration_tests.superset_test_config
@@ -143,7 +153,7 @@ jobs:
SUPERSET__SQLALCHEMY_DATABASE_URI: postgresql+psycopg2://superset:superset@127.0.0.1:15432/superset
services:
postgres:
image: postgres:17-alpine
image: ghcr.io/apache/superset/ci/postgres:17-alpine
env:
POSTGRES_USER: superset
POSTGRES_PASSWORD: superset
@@ -152,33 +162,45 @@ jobs:
# GitHub action runner's default installations
- 15432:5432
redis:
image: redis:7-alpine
image: ghcr.io/apache/superset/ci/redis:7-alpine
ports:
- 16379:6379
steps:
- name: "Checkout ${{ github.ref }} ( ${{ github.sha }} )"
uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
with:
persist-credentials: false
submodules: recursive
- name: Setup Python
uses: ./.github/actions/setup-backend/
uses: $/.github/actions/setup-backend/
with:
python-version: ${{ matrix.python-version }}
- name: Setup Postgres
uses: ./.github/actions/cached-dependencies
# cached-dependencies is a git submodule (not a plain directory), and
# the $/ self-repository syntax resolves action files directly from
# the repository without performing a real (submodule-aware)
# checkout, so it can't see into a submodule's gitlink. Keep this one
# on the workspace-relative ./ form, consistent with every other
# workflow in the repo that references this action.
uses: ./.github/actions/cached-dependencies # zizmor: ignore[self-repository] - $/ cannot resolve an action that lives in a submodule; ./ is required here
with:
run: |
setup-postgres
- name: Start Celery worker
uses: ./.github/actions/cached-dependencies
# cached-dependencies is a git submodule (not a plain directory), and
# the $/ self-repository syntax resolves action files directly from
# the repository without performing a real (submodule-aware)
# checkout, so it can't see into a submodule's gitlink. Keep this one
# on the workspace-relative ./ form, consistent with every other
# workflow in the repo that references this action.
uses: ./.github/actions/cached-dependencies # zizmor: ignore[self-repository] - $/ cannot resolve an action that lives in a submodule; ./ is required here
with:
run: celery-worker
- name: Python integration tests (PostgreSQL)
run: |
./scripts/python_tests.sh
- name: Upload code coverage
uses: codecov/codecov-action@fb8b3582c8e4def4969c97caa2f19720cb33a72f # v7.0.0
uses: codecov/codecov-action@303a32d7a59b442fa8d48b6a1cc6825c09c847a5 # v7.1.1
with:
flags: python,postgres
verbose: true
@@ -188,7 +210,7 @@ jobs:
test-sqlite:
needs: changes
if: needs.changes.outputs.python == 'true'
runs-on: ubuntu-24.04
runs-on: ubuntu-26.04
timeout-minutes: 45
permissions:
id-token: write
@@ -202,32 +224,44 @@ jobs:
sqlite:///${{ github.workspace }}/.temp/examples.db?check_same_thread=true
services:
redis:
image: redis:7-alpine
image: ghcr.io/apache/superset/ci/redis:7-alpine
ports:
- 16379:6379
steps:
- name: "Checkout ${{ github.ref }} ( ${{ github.sha }} )"
uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
with:
persist-credentials: false
submodules: recursive
- name: Setup Python
uses: ./.github/actions/setup-backend/
uses: $/.github/actions/setup-backend/
- name: Install dependencies
uses: ./.github/actions/cached-dependencies
# cached-dependencies is a git submodule (not a plain directory), and
# the $/ self-repository syntax resolves action files directly from
# the repository without performing a real (submodule-aware)
# checkout, so it can't see into a submodule's gitlink. Keep this one
# on the workspace-relative ./ form, consistent with every other
# workflow in the repo that references this action.
uses: ./.github/actions/cached-dependencies # zizmor: ignore[self-repository] - $/ cannot resolve an action that lives in a submodule; ./ is required here
with:
run: |
# sqlite needs this working directory
mkdir ${{ github.workspace }}/.temp
- name: Start Celery worker
uses: ./.github/actions/cached-dependencies
# cached-dependencies is a git submodule (not a plain directory), and
# the $/ self-repository syntax resolves action files directly from
# the repository without performing a real (submodule-aware)
# checkout, so it can't see into a submodule's gitlink. Keep this one
# on the workspace-relative ./ form, consistent with every other
# workflow in the repo that references this action.
uses: ./.github/actions/cached-dependencies # zizmor: ignore[self-repository] - $/ cannot resolve an action that lives in a submodule; ./ is required here
with:
run: celery-worker
- name: Python integration tests (SQLite)
run: |
./scripts/python_tests.sh
- name: Upload code coverage
uses: codecov/codecov-action@fb8b3582c8e4def4969c97caa2f19720cb33a72f # v7.0.0
uses: codecov/codecov-action@303a32d7a59b442fa8d48b6a1cc6825c09c847a5 # v7.1.1
with:
flags: python,sqlite
verbose: true
@@ -243,7 +277,7 @@ jobs:
test-postgres-required:
needs: [changes, test-postgres]
if: always()
runs-on: ubuntu-24.04
runs-on: ubuntu-26.04
timeout-minutes: 5
steps:
- name: Check test-postgres result
@@ -255,3 +289,14 @@ jobs:
exit 1
fi
echo "test-postgres result: $RESULT"
actions-timeline:
needs: [test-mysql, test-postgres, test-sqlite, test-postgres-required]
if: always()
runs-on: ubuntu-slim
permissions:
actions: read
steps:
- uses: Kesin11/actions-timeline@57fc93f20c6da7fbc14063c6d24a2a5627c799ad # v3.2.0
with:
expand-composite-actions: true

View File

@@ -14,9 +14,12 @@ concurrency:
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.run_id }}
cancel-in-progress: true
permissions:
contents: read
jobs:
changes:
runs-on: ubuntu-24.04
runs-on: ubuntu-26.04
timeout-minutes: 10
permissions:
contents: read
@@ -25,19 +28,19 @@ jobs:
python: ${{ steps.check.outputs.python }}
steps:
- name: Checkout
uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
with:
persist-credentials: false
- name: Check for file changes
id: check
uses: ./.github/actions/change-detector/
uses: $/.github/actions/change-detector/
with:
token: ${{ secrets.GITHUB_TOKEN }}
test-postgres-presto:
needs: changes
if: needs.changes.outputs.python == 'true'
runs-on: ubuntu-24.04
runs-on: ubuntu-26.04
timeout-minutes: 45
permissions:
id-token: write
@@ -49,7 +52,7 @@ jobs:
SUPERSET__SQLALCHEMY_EXAMPLES_URI: presto://localhost:15433/memory/default
services:
postgres:
image: postgres:17-alpine
image: ghcr.io/apache/superset/ci/postgres:17-alpine
env:
POSTGRES_USER: superset
POSTGRES_PASSWORD: superset
@@ -58,7 +61,7 @@ jobs:
# GitHub action runner's default installations
- 15432:5432
presto:
image: starburstdata/presto:350-e.6
image: ghcr.io/apache/superset/ci/presto:350-e.6
env:
POSTGRES_USER: superset
POSTGRES_PASSWORD: superset
@@ -67,30 +70,42 @@ jobs:
# GitHub action runner's default installations
- 15433:8080
redis:
image: redis:7-alpine
image: ghcr.io/apache/superset/ci/redis:7-alpine
ports:
- 16379:6379
steps:
- name: "Checkout ${{ github.ref }} ( ${{ github.sha }} )"
uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
with:
persist-credentials: false
submodules: recursive
- name: Setup Python
uses: ./.github/actions/setup-backend/
uses: $/.github/actions/setup-backend/
- name: Setup Postgres
uses: ./.github/actions/cached-dependencies
# cached-dependencies is a submodule (not a plain directory), and
# the $/ self-repository syntax resolves action files directly from
# the repository without performing a real (submodule-aware)
# checkout, so it can't see into a submodule's link. Keep this one
# on the workspace-relative ./ form, consistent with every other
# workflow in the repo that references this action.
uses: ./.github/actions/cached-dependencies # zizmor: ignore[self-repository] - $/ cannot resolve an action that lives in a submodule; ./ is required here
with:
run: setup-postgres
- name: Start Celery worker
uses: ./.github/actions/cached-dependencies
# cached-dependencies is a submodule (not a plain directory), and
# the $/ self-repository syntax resolves action files directly from
# the repository without performing a real (submodule-aware)
# checkout, so it can't see into a submodule's link. Keep this one
# on the workspace-relative ./ form, consistent with every other
# workflow in the repo that references this action.
uses: ./.github/actions/cached-dependencies # zizmor: ignore[self-repository] - $/ cannot resolve an action that lives in a submodule; ./ is required here
with:
run: celery-worker
- name: Python unit tests (PostgreSQL)
run: |
./scripts/python_tests.sh -m 'chart_data_flow or sql_json_flow'
- name: Upload code coverage
uses: codecov/codecov-action@fb8b3582c8e4def4969c97caa2f19720cb33a72f # v7.0.0
uses: codecov/codecov-action@303a32d7a59b442fa8d48b6a1cc6825c09c847a5 # v7.1.1
with:
flags: python,presto
verbose: true
@@ -100,7 +115,7 @@ jobs:
test-postgres-hive:
needs: changes
if: needs.changes.outputs.python == 'true'
runs-on: ubuntu-24.04
runs-on: ubuntu-26.04
timeout-minutes: 45
permissions:
id-token: write
@@ -113,7 +128,7 @@ jobs:
UPLOAD_FOLDER: /tmp/.superset/uploads/
services:
postgres:
image: postgres:17-alpine
image: ghcr.io/apache/superset/ci/postgres:17-alpine
env:
POSTGRES_USER: superset
POSTGRES_PASSWORD: superset
@@ -122,12 +137,12 @@ jobs:
# GitHub action runner's default installations
- 15432:5432
redis:
image: redis:7-alpine
image: ghcr.io/apache/superset/ci/redis:7-alpine
ports:
- 16379:6379
steps:
- name: "Checkout ${{ github.ref }} ( ${{ github.sha }} )"
uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
with:
persist-credentials: false
submodules: recursive
@@ -138,13 +153,25 @@ jobs:
- name: Start hadoop and hive
run: docker compose -f scripts/databases/hive/docker-compose.yml up -d
- name: Setup Python
uses: ./.github/actions/setup-backend/
uses: $/.github/actions/setup-backend/
- name: Setup Postgres
uses: ./.github/actions/cached-dependencies
# cached-dependencies is a submodule (not a plain directory), and
# the $/ self-repository syntax resolves action files directly from
# the repository without performing a real (submodule-aware)
# checkout, so it can't see into a submodule's link. Keep this one
# on the workspace-relative ./ form, consistent with every other
# workflow in the repo that references this action.
uses: ./.github/actions/cached-dependencies # zizmor: ignore[self-repository] - $/ cannot resolve an action that lives in a submodule; ./ is required here
with:
run: setup-postgres
- name: Start Celery worker
uses: ./.github/actions/cached-dependencies
# cached-dependencies is a submodule (not a plain directory), and
# the $/ self-repository syntax resolves action files directly from
# the repository without performing a real (submodule-aware)
# checkout, so it can't see into a submodule's link. Keep this one
# on the workspace-relative ./ form, consistent with every other
# workflow in the repo that references this action.
uses: ./.github/actions/cached-dependencies # zizmor: ignore[self-repository] - $/ cannot resolve an action that lives in a submodule; ./ is required here
with:
run: celery-worker
- name: Python unit tests (PostgreSQL)
@@ -152,9 +179,20 @@ jobs:
uv pip install --system -e .[hive]
./scripts/python_tests.sh -m 'chart_data_flow or sql_json_flow'
- name: Upload code coverage
uses: codecov/codecov-action@fb8b3582c8e4def4969c97caa2f19720cb33a72f # v7.0.0
uses: codecov/codecov-action@303a32d7a59b442fa8d48b6a1cc6825c09c847a5 # v7.1.1
with:
flags: python,hive
verbose: true
use_oidc: true
slug: apache/superset
actions-timeline:
needs: [test-postgres-presto, test-postgres-hive]
if: always()
runs-on: ubuntu-slim
permissions:
actions: read
steps:
- uses: Kesin11/actions-timeline@57fc93f20c6da7fbc14063c6d24a2a5627c799ad # v3.2.0
with:
expand-composite-actions: true

View File

@@ -0,0 +1,70 @@
name: Python Unit Test Results
on:
# zizmor: ignore[dangerous-triggers] - runs in base-branch context and only consumes artifacts uploaded by Python-Unit; never checks out PR code (see note below)
workflow_run:
workflows: ["Python-Unit"]
types: [completed]
# This workflow publishes a check run annotating failing Python unit tests
# inline on the PR diff, using JUnit XML uploaded by the Python-Unit workflow.
# It uses the workflow_run trigger so that it always runs in the base-branch
# context and can safely be granted write permissions, even for PRs from
# forks or Dependabot.
#
# IMPORTANT: This workflow must NEVER check out code from the PR branch. All
# data comes from artifacts uploaded by the Python-Unit workflow.
permissions:
contents: read
checks: write
issues: read
actions: read
jobs:
report:
runs-on: ubuntu-26.04
timeout-minutes: 10
if: >
github.event.workflow_run.conclusion == 'success' ||
github.event.workflow_run.conclusion == 'failure'
steps:
# Fails soft (continue-on-error) because the source unit-tests job is
# itself gated on change detection: a docs-only PR skips it entirely,
# so there is nothing to download or report on.
- name: Download JUnit results
id: download
continue-on-error: true
uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8
with:
# merge-multiple is intentionally omitted: each matrix leg's
# artifact (junit-results-current, junit-results-next) uses the
# same XML filenames, so merging them into one directory would let
# one Python version's results overwrite the other's. Downloading
# into per-artifact subdirectories keeps both, and the glob below
# is recursive so it still picks up every XML file.
pattern: "junit-results-*"
path: artifacts
run-id: ${{ github.event.workflow_run.id }}
github-token: ${{ secrets.GITHUB_TOKEN }}
- name: Download event file
id: download-event
if: steps.download.outcome == 'success'
continue-on-error: true
uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8
with:
name: "Event File"
path: event
run-id: ${{ github.event.workflow_run.id }}
github-token: ${{ secrets.GITHUB_TOKEN }}
- name: Publish test results
if: steps.download.outcome == 'success' && steps.download-event.outcome == 'success'
uses: EnricoMi/publish-unit-test-result-action@d0a4676d0e0b938bc201470d88276b7c74c712b3 # v2.24.0
with:
commit: ${{ github.event.workflow_run.head_sha }}
event_file: event/event.json
event_name: ${{ github.event.workflow_run.event }}
files: "artifacts/**/*.xml"
check_name: "Python Unit Test Results"
comment_mode: "off"

View File

@@ -21,7 +21,7 @@ concurrency:
jobs:
changes:
runs-on: ubuntu-24.04
runs-on: ubuntu-26.04
timeout-minutes: 10
permissions:
contents: read
@@ -30,59 +30,104 @@ jobs:
python: ${{ steps.check.outputs.python }}
steps:
- name: Checkout
uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
with:
persist-credentials: false
- name: Check for file changes
id: check
uses: ./.github/actions/change-detector/
uses: $/.github/actions/change-detector/
with:
token: ${{ secrets.GITHUB_TOKEN }}
unit-tests:
needs: changes
if: needs.changes.outputs.python == 'true'
runs-on: ubuntu-24.04
timeout-minutes: 30
runs-on: ubuntu-26.04
# Leave time for setup, the full suite, scoped coverage gates, and uploads.
timeout-minutes: 45
permissions:
id-token: write
strategy:
matrix:
# Full version spread on push (master/release) + nightly; current only
# on PRs to cut runner cost (cross-version breaks are caught at merge).
python-version: ${{ github.event_name == 'pull_request' && fromJSON('["current"]') || fromJSON('["previous", "current", "next"]') }}
# Just "current" here, on both push and PR — the "next" Python minor is
# exercised separately by the nightly canary (python-nightly-canary.yml)
# so cross-version breaks don't cost a runner on every push/PR.
python-version: ["current"]
env:
PYTHONPATH: ${{ github.workspace }}
steps:
- name: "Checkout ${{ github.ref }} ( ${{ github.sha }} )"
uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
with:
persist-credentials: false
submodules: recursive
- name: Setup Python
uses: ./.github/actions/setup-backend/
uses: $/.github/actions/setup-backend/
with:
python-version: ${{ matrix.python-version }}
# Runs in parallel via pytest-xdist: the serial suite had grown to
# ~27-28 min against this job's 30-minute timeout, so the trailing
# coverage/upload steps were being killed on ordinary runner variance
# even though every test passed. `--dist loadfile` keeps all tests from
# one file on one worker, which preserves module-scoped fixture state;
# pytest-cov combines the per-worker coverage data automatically.
# `--durations=0` makes `--durations-min` effective (the min flag only
# filters an enabled report) so the slow-file critical path under
# loadfile stays visible. `--maxfail` is a controller-level stop: tests
# already dispatched to workers finish, so the final failure count can
# slightly exceed it.
- name: Python unit tests
env:
SUPERSET_TESTENV: true
SUPERSET_SECRET_KEY: not-a-secret
run: |
pytest --durations-min=0.5 --cov-report= --cov=superset ./tests/common ./tests/unit_tests --cache-clear --maxfail=50
pytest -n auto --dist loadfile --durations=0 --durations-min=0.5 --cov-report= --cov=superset ./tests/common ./tests/unit_tests --cache-clear --maxfail=50 --junit-xml=test-results/junit-unit.xml
# COVERAGE_FILE keeps these scoped gates off the default .coverage that
# the step above wrote. pytest-cov starts a fresh data file per run, so
# without it the last gate replaces the full-suite data and the report
# uploaded below contains only that gate's subtree -- every other file
# then reads as uncovered, and patch coverage on an unrelated PR is 0%.
- name: Python 100% coverage unit tests
env:
SUPERSET_TESTENV: true
SUPERSET_SECRET_KEY: not-a-secret
run: |
pytest --durations-min=0.5 --cov=superset/sql/ ./tests/unit_tests/sql/ --cache-clear --cov-fail-under=100
pytest --durations-min=0.5 --cov=superset/semantic_layers/ ./tests/unit_tests/semantic_layers/ --cache-clear --cov-fail-under=100
COVERAGE_FILE="${RUNNER_TEMP}/.coverage.sql" pytest --durations-min=0.5 --cov=superset/sql/ ./tests/unit_tests/sql/ --cache-clear --cov-fail-under=100 --junit-xml=test-results/junit-sql-coverage.xml
COVERAGE_FILE="${RUNNER_TEMP}/.coverage.semantic_layers" pytest --durations-min=0.5 --cov=superset/semantic_layers/ ./tests/unit_tests/semantic_layers/ --cache-clear --cov-fail-under=100 --junit-xml=test-results/junit-semantic-layers-coverage.xml
- name: Upload code coverage
uses: codecov/codecov-action@fb8b3582c8e4def4969c97caa2f19720cb33a72f # v7.0.0
uses: codecov/codecov-action@303a32d7a59b442fa8d48b6a1cc6825c09c847a5 # v7.1.1
with:
flags: python,unit
verbose: true
use_oidc: true
slug: apache/superset
# Uploaded even when a pytest step above fails, since that is exactly
# when the JUnit results are needed downstream, to annotate the PR with
# the failing tests. Consumed by the "Python Unit Test Results" workflow
# via workflow_run (see that workflow for why it can't just be a step
# here: it needs to run with write permissions, which this PR-triggered
# job can't safely have on a fork PR).
- name: Upload JUnit test results
if: always()
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7
with:
name: junit-results-${{ matrix.python-version }}
path: test-results/
retention-days: 7
# Uploads the raw pull_request event payload so the "Python Unit Test
# Results" workflow (running via workflow_run, in base-branch context) can
# look up which PR/commit to annotate without checking out untrusted code.
event-file:
runs-on: ubuntu-26.04
timeout-minutes: 5
steps:
- name: Upload event file
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7
with:
name: Event File
path: ${{ github.event_path }}
retention-days: 7
# Stable required-status-check anchor. `unit-tests` is a matrix job gated on
# change detection, so on non-Python PRs it is skipped and never produces its
@@ -93,9 +138,16 @@ jobs:
unit-tests-required:
needs: [changes, unit-tests]
if: always()
runs-on: ubuntu-24.04
runs-on: ubuntu-slim
timeout-minutes: 5
permissions:
contents: read
actions: read
steps:
- uses: Kesin11/actions-timeline@57fc93f20c6da7fbc14063c6d24a2a5627c799ad # v3.2.0
with:
expand-composite-actions: true
- name: Check unit-tests result
env:
RESULT: ${{ needs.unit-tests.result }}

View File

@@ -20,7 +20,7 @@ permissions:
jobs:
post-comment:
runs-on: ubuntu-24.04
runs-on: ubuntu-slim
# Only act when the Translations workflow failed (which means a regression
# was detected — the workflow exits 1 on regression).
if: github.event.workflow_run.conclusion == 'failure'

View File

@@ -19,33 +19,39 @@ concurrency:
jobs:
frontend-check-translations:
runs-on: ubuntu-24.04
runs-on: ubuntu-26.04
permissions:
contents: read
pull-requests: read
steps:
- name: "Checkout ${{ github.ref }} ( ${{ github.sha }} )"
uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
with:
persist-credentials: false
submodules: recursive
- name: Check for file changes
id: check
uses: ./.github/actions/change-detector/
uses: $/.github/actions/change-detector/
with:
token: ${{ secrets.GITHUB_TOKEN }}
- name: Setup Node.js
if: steps.check.outputs.frontend
uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6
uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0
with:
node-version-file: "./superset-frontend/.nvmrc"
cache: "npm"
cache-dependency-path: "superset-frontend/package-lock.json"
- name: Install dependencies
if: steps.check.outputs.frontend
uses: ./.github/actions/cached-dependencies
# cached-dependencies is a git submodule (not a plain directory), and
# the $/ self-repository syntax resolves action files directly from
# the repository without performing a real (submodule-aware)
# checkout, so it can't see into a submodule's gitlink. Keep this one
# on the workspace-relative ./ form, consistent with every other
# workflow in the repo that references this action.
uses: ./.github/actions/cached-dependencies # zizmor: ignore[self-repository] - $/ cannot resolve an action that lives in a submodule; ./ is required here
with:
run: npm-install
- name: lint
@@ -54,31 +60,47 @@ jobs:
run: |
npm run build-translation
# This job id is a required status check in .asf.yaml; renaming it breaks
# branch protection for every PR until .asf.yaml is updated to match.
babel-extract:
runs-on: ubuntu-24.04
runs-on: ubuntu-26.04
permissions:
contents: read
pull-requests: read
steps:
- name: "Checkout ${{ github.ref }} ( ${{ github.sha }} )"
uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
with:
persist-credentials: false
submodules: recursive
- name: Check for file changes
id: check
uses: ./.github/actions/change-detector/
uses: $/.github/actions/change-detector/
with:
token: ${{ secrets.GITHUB_TOKEN }}
- name: Setup Python
if: steps.check.outputs.python == 'true' || steps.check.outputs.frontend == 'true'
uses: ./.github/actions/setup-backend/
uses: $/.github/actions/setup-backend/
# Guards superset/translations/messages.pot itself: a source string can
# only reach any .po catalog via this template, so a PR that adds or
# renames a translatable string without regenerating it makes that
# string untranslatable in every language and nothing else here catches
# that — the regression check below re-extracts from scratch on both
# sides of its own comparison and never looks at whether the committed
# template matches source.
- name: Check messages.pot matches a fresh extraction
if: steps.check.outputs.python == 'true' || steps.check.outputs.frontend == 'true'
run: python scripts/translations/check_pot_drift.py
- name: Install gettext tools
if: steps.check.outputs.python == 'true' || steps.check.outputs.frontend == 'true'
run: sudo apt-get update && sudo apt-get install -y gettext
uses: awalsh128/cache-apt-pkgs-action@553a35bb8ebd9fcabcb1c9451aa4c98e1b4ca8a9 # v1.6.3
with:
packages: gettext
version: 1.0
# Fetch the base ref so we can compare PR-introduced regressions
# against a fair baseline (also runs babel_update against the base
@@ -153,3 +175,14 @@ jobs:
- name: Fail if regression detected
if: steps.regression.outcome == 'failure'
run: exit 1
actions-timeline:
needs: [frontend-check-translations, babel-extract]
if: always()
runs-on: ubuntu-slim
permissions:
actions: read
steps:
- uses: Kesin11/actions-timeline@57fc93f20c6da7fbc14063c6d24a2a5627c799ad # v3.2.0
with:
expand-composite-actions: true

View File

@@ -21,29 +21,29 @@ concurrency:
jobs:
app-checks:
runs-on: ubuntu-24.04
runs-on: ubuntu-slim
timeout-minutes: 20
steps:
- name: "Checkout ${{ github.ref }} ( ${{ github.sha }} )"
uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
with:
persist-credentials: false
- name: Setup Node.js
uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0
uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0
with:
node-version-file: './superset-websocket/.nvmrc'
- name: Install dependencies
working-directory: ./superset-websocket
run: npm ci
- name: eslint
- name: lint
working-directory: ./superset-websocket
run: npm run eslint -- . --quiet
- name: typescript checks
run: npm run lint-check
- name: typescript check
working-directory: ./superset-websocket
run: npm run type
- name: prettier
- name: code format check
working-directory: ./superset-websocket
run: npm run prettier-check
run: npm run format-check
- name: unit tests
working-directory: ./superset-websocket
run: npm run test

View File

@@ -13,9 +13,12 @@ on:
required: true
type: string
permissions:
contents: read
jobs:
supersetbot:
runs-on: ubuntu-24.04
runs-on: ubuntu-26.04
if: >
github.event_name == 'workflow_dispatch' ||
(github.event_name == 'issue_comment' && contains(github.event.comment.body, '@supersetbot'))
@@ -38,12 +41,12 @@ jobs:
});
- name: "Checkout ( ${{ github.sha }} )"
uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
with:
persist-credentials: false
- name: Setup supersetbot
uses: ./.github/actions/setup-supersetbot/
uses: $/.github/actions/setup-supersetbot/
- name: Execute custom Node.js script
env:

View File

@@ -27,7 +27,7 @@ jobs:
# zizmor: ignore[artipacked] - required persisted credentials to push synced requirement changes back to remote
- name: Checkout source code
if: ${{ steps.dependabot-metadata.outputs.package-ecosystem == 'pip' }}
uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
with:
ref: ${{ github.event.pull_request.head.sha }}
persist-credentials: true
@@ -38,7 +38,7 @@ jobs:
- name: Login to Docker Hub
if: ${{ steps.dependabot-metadata.outputs.package-ecosystem == 'pip' }}
continue-on-error: true
uses: docker/login-action@650006c6eb7dba73a995cc03b0b2d7f5ca915bee # v4.2.0
uses: docker/login-action@dbcb813823bdd20940b903addbd779551569679f # v4.6.0
with:
username: ${{ secrets.DOCKERHUB_USER }}
password: ${{ secrets.DOCKERHUB_TOKEN }}

View File

@@ -24,15 +24,15 @@ on:
permissions:
contents: read
# Serialize with the scheduled Docker image refresh — both workflows push
# to the same Docker Hub tags and must not race on apache/superset:latest.
# Serialize release image publishes so concurrent manual runs cannot race on
# apache/superset:latest.
concurrency:
group: docker-publish-latest-release
cancel-in-progress: false
jobs:
config:
runs-on: ubuntu-24.04
runs-on: ubuntu-slim
outputs:
has-secrets: ${{ steps.check.outputs.has-secrets }}
steps:
@@ -50,23 +50,32 @@ jobs:
needs: config
if: needs.config.outputs.has-secrets
name: docker-release
runs-on: ubuntu-24.04
runs-on: ubuntu-26.04
permissions:
contents: write
strategy:
matrix:
build_preset:
["dev", "lean", "py310", "websocket", "dockerize", "py311", "py312"]
build_preset: ["superset", "dev", "lean", "py311", "py312"]
fail-fast: false
steps:
- name: "Checkout ${{ github.ref }} ( ${{ github.sha }} )"
uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
with:
persist-credentials: false
fetch-depth: 0
ref: master
# Preserved because the step below checks out the release ref, which
# can be an arbitrary historical commit/tag -- these helpers need to
# keep running with the version from master regardless.
- name: Preserve Docker flags helper
shell: bash
run: |
cp scripts/docker-build-extra-flags.sh "$RUNNER_TEMP/docker-build-extra-flags.sh"
cp scripts/docker_release_target.py "$RUNNER_TEMP/docker_release_target.py"
- name: Setup Docker Environment
uses: ./.github/actions/setup-docker
uses: $/.github/actions/setup-docker
with:
dockerhub-user: ${{ secrets.DOCKERHUB_USER }}
dockerhub-token: ${{ secrets.DOCKERHUB_TOKEN }}
@@ -75,19 +84,20 @@ jobs:
- name: Use Node.js 20
# zizmor: ignore[cache-poisoning] - node only runs the supersetbot CLI; no dependency cache is enabled
uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6
uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0
with:
node-version: 20
package-manager-cache: false
- name: Setup supersetbot
uses: ./.github/actions/setup-supersetbot/
uses: $/.github/actions/setup-supersetbot
- name: Execute custom Node.js script
env:
DOCKERHUB_USER: ${{ secrets.DOCKERHUB_USER }}
DOCKERHUB_TOKEN: ${{ secrets.DOCKERHUB_TOKEN }}
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
BUILD_PRESET: ${{ matrix.build_preset }}
INPUT_RELEASE: ${{ github.event.inputs.release }}
INPUT_FORCE_LATEST: ${{ github.event.inputs.force-latest }}
INPUT_GIT_REF: ${{ github.event.inputs.git-ref }}
@@ -104,13 +114,42 @@ jobs:
fi
git checkout "${INPUT_GIT_REF}"
EVENT="release"
else
git checkout "${GITHUB_EVENT_RELEASE_TAG_NAME}"
fi
# Preserve the checked-out release Dockerfile's browser default.
EXTRA_FLAGS="$(bash "$RUNNER_TEMP/docker-build-extra-flags.sh" "$BUILD_PRESET" "" release)"
supersetbot docker \
--push \
--preset ${{ matrix.build_preset }} \
# supersetbot's preset -> Dockerfile-target mapping tracks current
# master, but RELEASE above can be an arbitrary *historical* ref
# (this job just `git checkout`ed it), which can predate a preset's
# target stage -- see #44220. Ask supersetbot what it would
# actually run (--dry-run) and hand that, plus the Dockerfile this
# checkout now has, to docker_release_target.py (preserved from
# master above, same reasoning as the flags helper), which knows
# the one verified compatibility substitution and refuses to guess
# at anything else.
DRY_RUN_CMD="$(DOCKERHUB_TOKEN= supersetbot docker \
--preset "$BUILD_PRESET" \
--context "$EVENT" \
--context-ref "$RELEASE" $FORCE_LATEST \
--extra-flags "$EXTRA_FLAGS" \
--platform linux/amd64 \
--dry-run)"
TARGET_OVERRIDE="$(
printf '%s\n' "$DRY_RUN_CMD" |
python3 "$RUNNER_TEMP/docker_release_target.py" "$BUILD_PRESET"
)"
if [ -n "$TARGET_OVERRIDE" ]; then
EXTRA_FLAGS="$EXTRA_FLAGS $TARGET_OVERRIDE"
fi
DOCKERHUB_TOKEN= supersetbot docker \
--push \
--preset "$BUILD_PRESET" \
--context "$EVENT" \
--context-ref "$RELEASE" $FORCE_LATEST \
--extra-flags "$EXTRA_FLAGS" \
--platform "linux/arm64" \
--platform "linux/amd64"
@@ -120,26 +159,26 @@ jobs:
update-prs-with-release-info:
needs: config
if: needs.config.outputs.has-secrets
runs-on: ubuntu-24.04
runs-on: ubuntu-26.04
permissions:
contents: read
pull-requests: write
steps:
- name: "Checkout ${{ github.ref }} ( ${{ github.sha }} )"
uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
with:
persist-credentials: false
fetch-depth: 0
- name: Use Node.js 20
# zizmor: ignore[cache-poisoning] - node only runs the supersetbot CLI; no dependency cache is enabled
uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6
uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0
with:
node-version: 20
package-manager-cache: false
- name: Setup supersetbot
uses: ./.github/actions/setup-supersetbot/
uses: $/.github/actions/setup-supersetbot/
- name: Label the PRs with the right release-related labels
env:

View File

@@ -11,7 +11,7 @@ permissions:
jobs:
config:
runs-on: ubuntu-24.04
runs-on: ubuntu-slim
outputs:
has-secrets: ${{ steps.check.outputs.has-secrets }}
steps:
@@ -28,16 +28,16 @@ jobs:
process-and-upload:
needs: config
if: needs.config.outputs.has-secrets
runs-on: ubuntu-24.04
runs-on: ubuntu-slim
name: Generate Reports
steps:
- name: Checkout Repository
uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
with:
persist-credentials: false
- name: Set up Node.js
uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6
uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0
with:
node-version-file: "./superset-frontend/.nvmrc"

185
.github/workflows/testcontainers.yml vendored Normal file
View File

@@ -0,0 +1,185 @@
# db_engine_specs tests against real databases (testcontainers)
name: Testcontainers
# Spins up real Docker containers (see tests/testcontainers/ for the current
# dialect list) via testcontainers-python, which catches real dialect/driver
# regressions -- the kind mocked db_engine_specs unit tests structurally
# cannot, e.g. apache/superset#42899 (Trino emitting OFFSET before LIMIT).
# Runs on a nightly cron (catches drift from a driver's own releases, not
# just from Superset's changes) and on pull_request, scoped via `paths` to
# only PRs that actually touch this test suite or the workflow itself, so
# unrelated PRs across the repo are never affected.
#
# A matrix entry can set `nightly_only: true` to run only on the cron (or a
# manual workflow_dispatch), never on pull_request -- for a dialect whose
# image is too heavy (a multi-service cluster, a many-GB image, a slow
# licensed installer) to justify adding its wall-clock/resource cost to
# every PR that merely touches this suite. Omit the field entirely for a
# normal dialect; it isn't nightly-only by default.
permissions:
contents: read
on:
schedule:
- cron: "0 5 * * *"
workflow_dispatch: {}
pull_request:
paths:
- ".github/workflows/testcontainers.yml"
- "tests/testcontainers/**"
- "superset/db_engine_specs/**"
- "pyproject.toml"
- "requirements/development.in"
- "requirements/development.txt"
concurrency:
# Scoped by ref, not just workflow name -- otherwise every PR run and the
# nightly cron share one group, and starting the workflow on another PR
# (or the nightly firing mid-PR-run) cancels an unrelated in-progress run.
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
jobs:
compute-matrix:
# Filters out `nightly_only` dialects for a pull_request run *before* any
# testcontainers job is created for them, so a heavy dialect costs a PR
# nothing at all -- not even its checkout/setup/driver-install steps --
# rather than being merely skipped at the test step. A job-level `if:`
# can't reference `matrix` (only github/inputs/needs/vars are available
# there), so the filtering has to happen here, before the matrix exists,
# instead of on the testcontainers job itself.
runs-on: ubuntu-26.04
outputs:
include: ${{ steps.filter.outputs.include }}
steps:
- name: Filter nightly-only dialects
id: filter
env:
# One entry per dialect rather than one job for the whole suite: a
# single slow container would otherwise inflate the wall-clock
# time for every dialect, not just its own. Running in parallel
# means the suite's total time is bounded by the slowest dialect,
# not the sum of all of them. Db2's first-boot init is documented
# upstream as notably slow (a real instance bring-up, not just a
# process start) and untested locally here (no arm64 image), so
# it gets a wider timeout margin than the rest until real CI data
# says otherwise.
FULL_MATRIX: |
[
{"dialect": "cockroachdb", "timeout": 10},
{"dialect": "crate", "timeout": 10},
{"dialect": "trino", "timeout": 10},
{"dialect": "mssql", "timeout": 10},
{"dialect": "elasticsearch", "timeout": 10},
{"dialect": "opensearch", "timeout": 10},
{"dialect": "oracle", "timeout": 15},
{"dialect": "db2", "timeout": 25},
{"dialect": "mariadb", "timeout": 10},
{"dialect": "timescaledb", "timeout": 10},
{"dialect": "yugabytedb", "timeout": 10},
{"dialect": "monetdb", "timeout": 10},
{"dialect": "mongodb", "timeout": 10},
{"dialect": "postgres", "timeout": 10},
{"dialect": "mysql", "timeout": 10},
{"dialect": "clickhouse", "timeout": 10},
{"dialect": "starrocks", "timeout": 15},
{"dialect": "databend", "timeout": 10},
{"dialect": "risingwave", "timeout": 10},
{"dialect": "firebird", "timeout": 10},
{"dialect": "ydb", "timeout": 10},
{"dialect": "oceanbase", "timeout": 20, "nightly_only": true}
]
run: |
if [[ "${{ github.event_name }}" == "schedule" || "${{ github.event_name }}" == "workflow_dispatch" ]]; then
include="$(jq -c '.' <<<"$FULL_MATRIX")"
else
include="$(jq -c '[.[] | select(.nightly_only != true)]' <<<"$FULL_MATRIX")"
fi
echo "include=${include}" >> "$GITHUB_OUTPUT"
testcontainers:
needs: [compute-matrix]
runs-on: ubuntu-26.04
strategy:
fail-fast: false
matrix:
include: ${{ fromJson(needs.compute-matrix.outputs.include) }}
timeout-minutes: ${{ matrix.timeout }}
env:
PYTHONPATH: ${{ github.workspace }}
SUPERSET_TESTENV: true
SUPERSET_SECRET_KEY: not-a-secret
# This job's matrix installs exactly one dialect's testcontainers
# driver for exactly this job, so treat that driver as required: a
# broken/missing import should fail the job, not silently skip to a
# misleadingly green, zero-tests-run result. See _driver.py.
SUPERSET_TESTCONTAINERS_STRICT: true
steps:
- name: Checkout
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
with:
persist-credentials: false
- name: Setup Python
uses: $/.github/actions/setup-backend/
with:
python-version: current
- name: Install db2 driver (ibm-db-sa)
# ibm-db (the db2 DBAPI) ships no Linux arm64 wheel, so it's kept out
# of the baseline dev install (requirements/development.in) to avoid
# breaking the multi-platform dev Docker image build. Install it here
# instead, only for this leg of the matrix.
if: matrix.dialect == 'db2'
run: uv pip install --system -e .[db2]
- name: Install oceanbase driver (oceanbase_py)
# oceanbase_py pins sqlalchemy-utils>=0.38.3,<0.39, which conflicts
# outright with Superset's own sqlalchemy-utils==0.42.1 pin -- kept
# out of the baseline dev install for the same reason as db2 above.
# Installed as its own standalone package (not via `-e .[oceanbase]`)
# so --no-deps only skips *oceanbase_py's* dependencies -- applied
# to `-e .[oceanbase]` instead, --no-deps blocks pip from installing
# anything the extras marker pulls in, including oceanbase_py
# itself, which "succeeds" without actually installing it
# (confirmed on real CI: the install step reported success, but the
# module was still missing). This job only needs oceanbase_py's
# dialect module importable, not its sqlalchemy-utils dependency
# satisfied, since nothing here calls into it.
if: >-
matrix.dialect == 'oceanbase' &&
(matrix.nightly_only != true ||
github.event_name == 'schedule' ||
github.event_name == 'workflow_dispatch')
run: uv pip install --system --no-deps "oceanbase_py>=0.0.1.2"
- name: Install Firebird client library (libfbclient2)
# sqlalchemy-firebird's driver (firebird-driver) is a pure-Python
# ctypes wrapper (its wheel is py3-none-any) that dynamically loads
# the native Firebird client library from the host at import time
# -- it doesn't bundle that library itself, so it has to come from
# the system package manager, only for this leg of the matrix.
if: matrix.dialect == 'firebird'
run: |
sudo apt-get update
sudo apt-get install -y libfbclient2
- name: Run testcontainers db_engine_specs tests (${{ matrix.dialect }})
# nightly_only dialects are already excluded from the matrix itself
# on pull_request runs (see the compute-matrix job above), so this
# step needs no additional gating.
run: |
pytest --durations-min=2 -v -m testcontainers \
./tests/testcontainers/db_engine_specs/test_${{ matrix.dialect }}.py \
--junit-xml=test-results/junit-testcontainers-${{ matrix.dialect }}.xml
- name: Upload JUnit test results
if: always()
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7
with:
name: junit-results-testcontainers-${{ matrix.dialect }}
path: test-results/
retention-days: 7
actions-timeline:
needs: [testcontainers]
if: always()
runs-on: ubuntu-26.04
permissions:
actions: read
steps:
- uses: Kesin11/actions-timeline@57fc93f20c6da7fbc14063c6d24a2a5627c799ad # v3.2.0

View File

@@ -5,9 +5,12 @@ on:
pull_request_target:
types: [opened]
permissions:
contents: read
jobs:
welcome:
runs-on: ubuntu-24.04
runs-on: ubuntu-slim
if: github.event.pull_request.author_association == 'FIRST_TIME_CONTRIBUTOR'
permissions:
pull-requests: write

2
.gitignore vendored
View File

@@ -57,6 +57,7 @@ local_config.py
/superset_text.yml
superset.egg-info/
superset/bin/supersetc
superset/extensions/.reload_trigger
tmp
rat-results.txt
superset/app/
@@ -137,6 +138,7 @@ PROJECT.md
.aider*
.claude_rc*
.claude/settings.local.json
.claude/worktrees/
.env.local
oxc-custom-build/
*.code-workspace

15
.gitmodules vendored
View File

@@ -15,27 +15,12 @@
# limitations under the License.
#
[submodule ".github/actions/latest-tag"]
path = .github/actions/latest-tag
url = https://github.com/EndBug/latest-tag
[submodule ".github/actions/pr-lint-action"]
path = .github/actions/pr-lint-action
url = https://github.com/morrisoncole/pr-lint-action
[submodule ".github/actions/file-changes-action"]
path = .github/actions/file-changes-action
url = https://github.com/trilom/file-changes-action
[submodule ".github/actions/cached-dependencies"]
path = .github/actions/cached-dependencies
url = https://github.com/apache-superset/cached-dependencies
[submodule ".github/actions/comment-on-pr"]
path = .github/actions/comment-on-pr
url = https://github.com/unsplash/comment-on-pr
[submodule ".github/actions/chart-testing-action"]
path = .github/actions/chart-testing-action
url = https://github.com/helm/chart-testing-action
[submodule ".github/actions/chart-releaser-action"]
path = .github/actions/chart-releaser-action
url = https://github.com/helm/chart-releaser-action
[submodule ".github/actions/github-action-push-to-another-repository"]
path = .github/actions/github-action-push-to-another-repository
url = https://github.com/cpina/github-action-push-to-another-repository

39
.grype.yaml Normal file
View File

@@ -0,0 +1,39 @@
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements. See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership. The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied. See the License for the
# specific language governing permissions and limitations
# under the License.
# Grype config for the container image scan in .github/workflows/docker.yml
# (job: docker-build, step: "Scan built image for vulnerabilities").
#
# The image bundles this project's own dev build as the "apache-superset"
# package, installed from source with version "0.0.0.dev0" rather than a
# real released version. Grype cannot compare that placeholder against a
# fixed-version threshold, so it treats every historical apache-superset
# GHSA/CVE ever published as still unfixed -- 61 false positives confirmed
# locally against this exact package metadata, spanning every severity up
# to Critical. This excludes the paths where that self-referential package
# metadata lives inside the image so Grype does not attempt to match
# vulnerabilities against our own package at all; every other package in
# the image is unaffected and still scanned normally.
#
# Trade-off: a genuinely vulnerable dependency pinned in this project's own
# source (rather than an OS/Python package elsewhere in the image) is now
# invisible to this particular scan too, not just the false positives. That
# gap is covered by dependency scanning against the source tree itself
# (e.g. Dependabot), which this exclusion does not affect.
exclude:
- "**/apache_superset-*.dist-info/**"
- "**/apache_superset.egg-info/**"

View File

@@ -31,9 +31,10 @@ repos:
types-simplejson,
types-python-dateutil,
types-requests,
# types-redis 4.6.0.5 is failing mypy
# because of https://github.com/python/typeshed/pull/10531
types-redis==4.6.0.4,
# types-redis is intentionally absent: redis-py ships its own
# bundled types (py.typed, since 4.6+/5.x), while the stub
# package is unmaintained (frozen at the 4.6.0.x API surface).
# Installing the stub would shadow the accurate inline types.
types-pytz,
types-croniter,
types-PyYAML,
@@ -61,12 +62,21 @@ repos:
args: ["--markdown-linebreak-ext=md"]
- repo: local
hooks:
- id: prettier-frontend
name: prettier (frontend)
entry: bash -c 'cd superset-frontend && for file in "$@"; do npx prettier --write "${file#superset-frontend/}"; done'
- id: oxfmt-frontend
name: oxfmt (frontend)
entry: ./scripts/oxfmt.sh superset-frontend
language: system
pass_filenames: true
files: ^superset-frontend/.*\.(js|jsx|ts|tsx|css|scss|sass|json)$
- id: oxfmt-websocket
name: oxfmt (websocket)
entry: ./scripts/oxfmt.sh superset-websocket
language: system
pass_filenames: true
# JSON is excluded: superset-websocket/.oxfmtrc.json ignores *.json, so
# passing them here would only ever be a no-op (notably for the tracked
# package-lock.json).
files: ^superset-websocket/.*\.(js|ts)$
- repo: local
hooks:
- id: oxlint-frontend
@@ -81,18 +91,23 @@ repos:
language: system
pass_filenames: true
files: ^superset-frontend/.*\.(js|jsx|ts|tsx)$
- id: eslint-docs
name: eslint (docs)
entry: bash -c 'cd docs && FILES=$(printf "%s\n" "$@" | sed "s|^docs/||" | tr "\n" " ") && yarn eslint --fix --quiet $FILES'
- id: stylelint-frontend
name: stylelint (frontend css-in-js)
entry: ./scripts/stylelint.sh
language: system
pass_filenames: true
files: ^superset-frontend/.*\.(js|jsx|ts|tsx)$
- id: oxlint-docs
name: oxlint (docs)
entry: bash -c 'cd docs && FILES=$(printf "%s\n" "$@" | sed "s|^docs/||" | tr "\n" " ") && yarn lint --fix --quiet $FILES'
language: system
pass_filenames: true
files: ^docs/.*\.(js|jsx|ts|tsx)$
- id: type-checking-frontend
name: Type-Checking (Frontend)
entry: ./scripts/check-type.js package=superset-frontend excludeDeclarationDir=cypress-base
entry: ./scripts/check-type.js package=superset-frontend
language: system
files: ^superset-frontend\/.*\.(js|jsx|ts|tsx)$
exclude: ^superset-frontend/cypress-base\/
require_serial: true
# blacklist unsafe functions like make_url (see #19526)
- repo: https://github.com/skorokithakis/blacklist-pre-commit-hook
@@ -137,7 +152,7 @@ repos:
git fetch --no-recurse-submodules origin "$TARGET_BRANCH" 2>/dev/null || true
fi
BASE=$(git merge-base origin/"$TARGET_BRANCH" HEAD 2>/dev/null) || BASE="HEAD"
files=$(git diff --name-only --diff-filter=ACM "$BASE"..HEAD 2>/dev/null | grep '^superset/.*\.py$' || true)
files=$(git diff --name-only --diff-filter=ACM "$BASE"..HEAD 2>/dev/null | grep '^superset/.*\.py$' | grep -v '^superset/migrations/' || true)
if [ -n "$files" ]; then
pylint --rcfile=.pylintrc --load-plugins=superset.extensions.pylint --reports=no $files
else
@@ -162,7 +177,7 @@ repos:
name: zizmor (GHA security audit)
entry: zizmor
language: python
additional_dependencies: [zizmor==1.25.2]
additional_dependencies: [zizmor==1.30.0]
files: ^\.github/
types: [yaml]
pass_filenames: false

View File

@@ -7,9 +7,10 @@
.codecov.yml
.eslintrc
.eslintignore
.stylelintignore
.flake8
.nvmrc
.prettierrc
.npmrc
.rat-excludes
.swcrc
.*log
@@ -63,7 +64,6 @@ tsconfig.tsbuildinfo
.*yml
.*iml
.esprintrc
.prettierignore
generator-superset/*
temporary_superset_ui/*

View File

@@ -2,24 +2,31 @@
Apache Superset is a data visualization platform with Flask/Python backend and React/TypeScript frontend.
## ⚠️ CRITICAL: Always Run Pre-commit Before Pushing
## Run Pre-commit Before Pushing
**ALWAYS run `pre-commit run --all-files` before pushing commits.** CI will fail if pre-commit checks don't pass. This is non-negotiable.
Always run pre-commit against the files changed by the current branch before
pushing. This matches CI and keeps unrelated failures already present on
`master` from blocking otherwise independent work.
```bash
# Stage your changes first
git add .
# Run pre-commit on all files
pre-commit run --all-files
# Run pre-commit on staged files
pre-commit run
# If there are auto-fixes, stage them and commit
git add .
git commit --amend # or new commit
```
Use `pre-commit run --all-files` when auditing or repairing the repository-wide
baseline. If that check finds failures in files untouched by the current branch,
fix them in a separate branch rather than adding unrelated changes to the
current pull request.
Common pre-commit failures:
- **Formatting** - black, prettier, eslint will auto-fix
- **Formatting** - black, oxfmt, eslint will auto-fix
- **Type errors** - mypy failures need manual fixes
- **Linting** - ruff, pylint issues need manual fixes
@@ -37,8 +44,7 @@ Common pre-commit failures:
### Testing Strategy Migration
- **Prefer unit tests** over integration tests
- **Prefer integration tests** over end-to-end tests
- **Use Playwright for E2E tests** - Migrating from Cypress
- **Cypress is deprecated** - Will be removed once migration is completed
- **Use Playwright for E2E tests** - Cypress has been removed
- **Use Jest + React Testing Library** for component testing
- **Use `test()` instead of `describe()`** - Follow [avoid nesting when testing](https://kentcdodds.com/blog/avoid-nesting-when-youre-testing) principles
@@ -160,7 +166,7 @@ The Developer Portal auto-generates MDX documentation from Storybook stories. **
### Generator Location
- Script: `docs/scripts/generate-superset-components.mjs`
- Wrapper: `docs/src/components/StorybookWrapper.jsx`
- Output: `docs/developer_portal/components/`
- Output: `docs/developer_docs/components/`
## Architecture Patterns
@@ -195,18 +201,13 @@ The Developer Portal auto-generates MDX documentation from Storybook stories. **
npm run test # All tests
npm run test -- filename.test.tsx # Single file
# E2E Tests (Playwright - NEW)
# E2E Tests (Playwright)
npm run playwright:test # All Playwright tests
npm run playwright:ui # Interactive UI mode
npm run playwright:headed # See browser during tests
npx playwright test tests/auth/login.spec.ts # Single file
npm run playwright:debug tests/auth/login.spec.ts # Debug specific file
# E2E Tests (Cypress - DEPRECATED)
cd superset-frontend/cypress-base
npm run cypress-run-chrome # All Cypress tests (headless)
npm run cypress-debug # Interactive Cypress UI
# Backend
pytest # All tests
pytest tests/unit_tests/specific_test.py # Single file
@@ -263,7 +264,7 @@ git add . # Pre-commit only checks staged files
# Quick validation (faster than --all-files)
pre-commit run # Staged files only
pre-commit run mypy # Python type checking
pre-commit run prettier # Code formatting
pre-commit run format # Code formatting
pre-commit run eslint # Frontend linting
```
@@ -305,3 +306,10 @@ pre-commit run eslint # Frontend linting
---
**LLM Note**: This codebase is actively modernizing toward full TypeScript and type safety. Always run `pre-commit run` to validate changes. Follow the ongoing refactors section to avoid deprecated patterns.
## Active Technologies
- TypeScript (React 17-style functional components, Node 24 toolchain); Python 3.11+ + Redux chart store (`state.charts`), `@superset-ui/core/components` (`CodeSyntaxHighlighter`, `Loading`), `@apache-superset/core` (translation, theme, `Alert`), `src/components` `CopyToClipboard`; backend `QueryObjectValidationError` + `_get_query` result-type handler (sc-104912-semantic-view-show-sql)
- N/A — no persisted change; displays data already carried on the chart-data response (sc-104912-semantic-view-show-sql)
## Recent Changes
- sc-104912-semantic-view-show-sql: Added TypeScript (React 17-style functional components, Node 24 toolchain); Python 3.11+ + Redux chart store (`state.charts`), `@superset-ui/core/components` (`CodeSyntaxHighlighter`, `Loading`), `@apache-superset/core` (translation, theme, `Alert`), `src/components` `CopyToClipboard`; backend `QueryObjectValidationError` + `_get_query` result-type handler

View File

@@ -35,4 +35,4 @@ The Developer Portal includes comprehensive guides for:
- [Code Review Process](https://superset.apache.org/developer_portal/contributing/code-review)
- [Development How-tos](https://superset.apache.org/developer_portal/contributing/howtos)
Source for the Developer Portal documentation is [located here](https://github.com/apache/superset/tree/master/docs/developer_portal).
Source for the Developer Portal documentation is [located here](https://github.com/apache/superset/tree/master/docs/developer_docs).

View File

@@ -18,7 +18,7 @@
######################################################################
# Node stage to deal with static asset construction
######################################################################
ARG PY_VER=3.11.14-slim-trixie
ARG PY_VER=3.11-slim-trixie
# If BUILDPLATFORM is null, set it to 'amd64' (or leave as is otherwise).
ARG BUILDPLATFORM=${BUILDPLATFORM:-amd64}
@@ -104,6 +104,30 @@ RUN if [ "${BUILD_TRANSLATIONS}" = "true" ]; then \
rm -rf /app/superset/translations/*/*/*.[po,mo];
######################################################################
# superset-websocket builds the realtime WebSocket (Node) server that
# ships in the official image, launched via docker/entrypoints/run-websocket.sh
######################################################################
FROM node:24-trixie-slim AS superset-websocket
# Harden `npm ci` against transient npm-registry network blips (e.g. ECONNRESET).
ENV npm_config_fetch_retries=5 \
npm_config_fetch_retry_mintimeout=20000 \
npm_config_fetch_retry_maxtimeout=120000 \
npm_config_fetch_timeout=600000
WORKDIR /app/superset-websocket
# Install against the lockfile first (cached until it changes), then bundle the
# TypeScript server into a single self-contained CJS file (esbuild inlines every
# dependency), so the runtime image needs only the Node binary and dist/ — no
# node_modules to ship.
COPY superset-websocket/package.json superset-websocket/package-lock.json ./
RUN --mount=type=cache,target=/root/.npm npm ci
COPY superset-websocket/ ./
RUN npm run build
######################################################################
# Base python layer
######################################################################
@@ -171,17 +195,15 @@ RUN mkdir -p \
requirements \
&& touch superset/static/version_info.json
# Install Playwright and optionally setup headless browsers
# Optionally install Playwright and the headless Chromium used for screenshots
ENV PLAYWRIGHT_BROWSERS_PATH=/usr/local/share/playwright-browsers
ARG INCLUDE_CHROMIUM="false"
ARG INCLUDE_FIREFOX="false"
RUN --mount=type=cache,target=${SUPERSET_HOME}/.cache/uv \
if [ "${INCLUDE_CHROMIUM}" = "true" ] || [ "${INCLUDE_FIREFOX}" = "true" ]; then \
if [ "${INCLUDE_CHROMIUM}" = "true" ]; then \
uv pip install playwright && \
playwright install-deps && \
if [ "${INCLUDE_CHROMIUM}" = "true" ]; then playwright install chromium; fi && \
if [ "${INCLUDE_FIREFOX}" = "true" ]; then playwright install firefox; fi; \
playwright install chromium; \
else \
echo "Skipping browser installation"; \
fi
@@ -200,16 +222,50 @@ RUN /app/docker/apt-install.sh \
libsasl2-dev \
libsasl2-modules-gssapi-mit \
libpq-dev \
libecpg-dev \
libldap2-dev
# Create data directory for DuckDB examples database
# The database file will be created at runtime when examples are loaded from Parquet files
RUN mkdir -p /app/data && chown -R superset:superset /app/data
# Copy compiled things from previous stages
# --- Realtime WebSocket server (part of the official image) ---------------
# The realtime transport (superset-websocket) is a Node service, bundled by
# esbuild into a single self-contained file. Copy the Node runtime plus that
# bundle so every image built from this stage can launch it via an alternate
# entrypoint (docker/entrypoints/run-websocket.sh) rather than needing a separate
# image. This lives here rather than in a single downstream stage so the lean and
# dev images both ship it — docker-compose-non-dev.yml runs the websocket service
# from the dev target.
RUN /app/docker/apt-install.sh libstdc++6
COPY --from=superset-websocket /usr/local/bin/node /usr/local/bin/node
COPY --from=superset-websocket --chown=superset:superset \
/app/superset-websocket/dist /app/superset-websocket/dist
HEALTHCHECK CMD /app/docker/docker-healthcheck.sh
CMD ["/app/docker/entrypoints/run-server.sh"]
EXPOSE ${SUPERSET_PORT}
######################################################################
# Final lean image...
######################################################################
FROM python-common AS lean
# Install Python dependencies using docker/pip-install.sh.
# Requirements are installed *before* the application source is copied
# below so that source-only changes don't bust this (slow, network-bound)
# cache layer or defeat --cache-from.
COPY requirements/base.txt requirements/
# Copy superset-core package needed for editable install in base.txt
COPY superset-core superset-core
RUN --mount=type=cache,target=${SUPERSET_HOME}/.cache/uv \
/app/docker/pip-install.sh --requires-build-essential -r requirements/base.txt
# Copy compiled frontend assets and application source now that
# dependencies have been resolved and cached above.
COPY --from=superset-node /app/superset/static/assets superset/static/assets
# Copy service.worker.js optionall as it doesn't exist when DEV_MODE=true
# Copy service.worker.js optionally as it doesn't exist when DEV_MODE=true
COPY --from=superset-node /app/superset/static/service-worker.j[s] superset/static/service-worker.js
# TODO, when the next version comes out, use --exclude superset/translations
@@ -221,30 +277,52 @@ RUN rm superset/translations/*/*/*.po
COPY --from=superset-node /app/superset/translations superset/translations
COPY --from=python-translation-compiler /app/translations_mo superset/translations
HEALTHCHECK CMD /app/docker/docker-healthcheck.sh
CMD ["/app/docker/entrypoints/run-server.sh"]
EXPOSE ${SUPERSET_PORT}
######################################################################
# Final lean image...
######################################################################
FROM python-common AS lean
# Install Python dependencies using docker/pip-install.sh
COPY requirements/base.txt requirements/
# Copy superset-core package needed for editable install in base.txt
COPY superset-core superset-core
# Install the superset package itself. --no-deps because its dependencies
# were already installed from requirements/base.txt above, so this layer
# stays fast even though the source copy above changes on every edit.
RUN --mount=type=cache,target=${SUPERSET_HOME}/.cache/uv \
/app/docker/pip-install.sh --requires-build-essential -r requirements/base.txt
# Install the superset package
RUN --mount=type=cache,target=${SUPERSET_HOME}/.cache/uv \
uv pip install -e .
uv pip install -e . --no-deps
RUN python -m compileall /app/superset
USER superset
######################################################################
# Batteries-included default image: lean + common drivers, MCP and a
# headless Chromium. This is the image published under the plain tags
# (latest, master, <version>); the minimal image ships as `lean`.
######################################################################
FROM lean AS superset
USER root
# mysqlclient needs the MySQL client dev headers + pkg-config to build.
# python-common already installs the libs for postgres/sasl/ldap, so only
# the MySQL bits are added here — the minimal `lean` stage stays untouched.
RUN /app/docker/apt-install.sh \
pkg-config \
default-libmysqlclient-dev
# Bundle the common metadata/analytics drivers (postgres, mysql) and the
# MCP server dependencies (fastmcp) so the default image is usable without
# layering extra packages. Routed through pip-install.sh because mysqlclient
# is a source dist that needs a C compiler to build; the helper installs
# build-essential just for the build and purges it afterward (the lean base
# ships no compiler). The mysql client lib installed above stays, so the
# compiled extension can link against it at runtime.
RUN --mount=type=cache,target=${SUPERSET_HOME}/.cache/uv \
/app/docker/pip-install.sh --requires-build-essential .[postgres,mysql,fastmcp]
# Bundle Playwright + a headless Chromium so Alerts & Reports and thumbnail
# generation work out of the box. Installed directly (rather than via the
# INCLUDE_CHROMIUM build arg on python-common) because this stage builds
# FROM lean, which is already past that arg. Chromium ships for both
# linux/amd64 and linux/arm64, so this works on multi-platform builds.
RUN --mount=type=cache,target=${SUPERSET_HOME}/.cache/uv \
uv pip install playwright \
&& playwright install-deps \
&& playwright install chromium
USER superset
######################################################################
# Dev image...
######################################################################
@@ -256,22 +334,46 @@ RUN /app/docker/apt-install.sh \
pkg-config \
default-libmysqlclient-dev
# Copy development requirements and install them
# Copy development requirements and install them *before* the application
# source is copied below, so source-only edits don't bust this cache layer.
COPY requirements/*.txt requirements/
# Copy local packages needed for editable installs in development.txt
COPY superset-core superset-core
COPY superset-extensions-cli superset-extensions-cli
# Install Python dependencies using docker/pip-install.sh
# requirements/development.txt is generated by `uv pip compile` and embeds
# `-e .` (an editable install of this same package) as its first line. That
# self-reference needs the full superset/ source tree, which hasn't been
# copied in yet at this point, so it's stripped here; the real editable
# install of `.` runs below, once the source is present.
RUN --mount=type=cache,target=${SUPERSET_HOME}/.cache/uv \
/app/docker/pip-install.sh --requires-build-essential -r requirements/development.txt
# Install the superset package
RUN --mount=type=cache,target=${SUPERSET_HOME}/.cache/uv \
uv pip install -e .
grep -vxF -- "-e ." requirements/development.txt > requirements/development-deps.txt && \
/app/docker/pip-install.sh --requires-build-essential -r requirements/development-deps.txt
RUN uv pip install .[postgres]
RUN python -m compileall /app/superset
# Copy compiled frontend assets and application source now that
# dependencies have been resolved and cached above.
COPY --from=superset-node /app/superset/static/assets superset/static/assets
# Copy service.worker.js optionally as it doesn't exist when DEV_MODE=true
COPY --from=superset-node /app/superset/static/service-worker.j[s] superset/static/service-worker.js
# TODO, when the next version comes out, use --exclude superset/translations
COPY superset superset
# TODO in the meantime, remove the .po files
RUN rm superset/translations/*/*/*.po
# Merging translations from backend and frontend stages
COPY --from=superset-node /app/superset/translations superset/translations
COPY --from=python-translation-compiler /app/translations_mo superset/translations
# Install the superset package together with its postgres extra, using the
# same uv cache mount as the requirements install above. --no-deps because
# all dependencies (including the postgres extra's psycopg2-binary) are
# already installed from requirements/development.txt above.
# NOTE: source is bind-mounted over /app/superset in DEV_MODE, so a
# compileall pass here would be wasted work; unlike `lean`, `dev` skips it.
RUN --mount=type=cache,target=${SUPERSET_HOME}/.cache/uv \
uv pip install -e .[postgres] --no-deps
USER superset

View File

@@ -15,8 +15,8 @@
# limitations under the License.
#
# Python version installed; we need 3.10-3.11
PYTHON=`command -v python3.11 || command -v python3.10`
# Python version installed; we need 3.11-3.12
PYTHON=`command -v python3.11 || command -v python3.12`
.PHONY: install superset venv pre-commit up down logs ps nuke ports open
@@ -76,7 +76,7 @@ update-js:
venv:
# Create a virtual environment and activate it (recommended)
if ! [ -x "${PYTHON}" ]; then echo "You need Python 3.10 or 3.11 installed"; exit 1; fi
if ! [ -x "${PYTHON}" ]; then echo "You need Python 3.11 or 3.12 installed"; exit 1; fi
test -d venv || ${PYTHON} -m venv venv # setup a python3 virtualenv
. venv/bin/activate
@@ -95,7 +95,7 @@ py-format: pre-commit
pre-commit run black --all-files
js-format:
cd superset-frontend; npm run prettier
cd superset-frontend; npm run format
flask-app:
flask run -p 8088 --reload --debugger
@@ -103,14 +103,6 @@ flask-app:
node-app:
cd superset-frontend; npm run dev-server
build-cypress:
cd superset-frontend; npm run build-instrumented
cd superset-frontend/cypress-base; npm ci
open-cypress:
if ! [ $(port) ]; then cd superset-frontend/cypress-base; CYPRESS_BASE_URL=http://localhost:9000 npm run cypress open; fi
cd superset-frontend/cypress-base; CYPRESS_BASE_URL=http://localhost:$(port) npm run cypress open
report-celery-worker:
celery --app=superset.tasks.celery_app:app worker

View File

@@ -29,8 +29,10 @@ under the License.
[![Last Commit](https://img.shields.io/github/last-commit/apache/superset)](https://github.com/apache/superset/commits/master)
[![Open Issues](https://img.shields.io/github/issues/apache/superset)](https://github.com/apache/superset/issues)
[![Open PRs](https://img.shields.io/github/issues-pr/apache/superset)](https://github.com/apache/superset/pulls)
[![Get on Slack](https://img.shields.io/badge/slack-join-orange.svg)](http://bit.ly/join-superset-slack)
[![Get on Slack](https://img.shields.io/badge/slack-join-orange.svg)](https://bit.ly/join-superset-slack)
[![Documentation](https://img.shields.io/badge/docs-apache.org-blue.svg)](https://superset.apache.org)
[![Storybook](https://img.shields.io/badge/storybook-live-ff4785.svg)](https://superset-storybook.netlify.app)
[![Bundle Analyzer](https://img.shields.io/badge/bundle%20analyzer-nightly-8dd6f9.svg)](https://superset-bundle-analyzer.netlify.app)
<picture width="500">
<source
@@ -56,7 +58,7 @@ A modern, enterprise-ready business intelligence web application.
[**Why Superset?**](#why-superset) |
[**Supported Databases**](#supported-databases) |
[**Release Notes**](https://github.com/apache/superset/blob/master/RELEASING/README.md#release-notes-for-recent-releases) |
[**Release Notes**](https://github.com/apache/superset/releases) |
[**Get Involved**](#get-involved) |
[**Resources**](#resources) |
[**Organizations Using Superset**](https://superset.apache.org/inTheWild)
@@ -186,7 +188,7 @@ Try out Superset's [quickstart](https://superset.apache.org/docs/quickstart/) gu
## Get Involved
- Ask and answer questions on [StackOverflow](https://stackoverflow.com/questions/tagged/apache-superset) using the **apache-superset** tag
- [Join our community's Slack](http://bit.ly/join-superset-slack)
- [Join our community's Slack](https://bit.ly/join-superset-slack)
and please read our [Slack Community Guidelines](https://github.com/apache/superset/blob/master/CODE_OF_CONDUCT.md#slack-community-guidelines)
- [Join our dev@superset.apache.org Mailing list](https://lists.apache.org/list.html?dev@superset.apache.org). To join, simply send an email to [dev-subscribe@superset.apache.org](mailto:dev-subscribe@superset.apache.org)
- Follow us on social media:

View File

@@ -14,7 +14,7 @@
# See the License for the specific language governing permissions and
# limitations under the License.
#
FROM python:3.10-slim-trixie
FROM python:3.11-slim-trixie
RUN useradd --user-group --create-home --no-log-init --shell /bin/bash superset

View File

@@ -14,7 +14,7 @@
# See the License for the specific language governing permissions and
# limitations under the License.
#
FROM python:3.10-slim-trixie
FROM python:3.11-slim-trixie
RUN useradd --user-group --create-home --no-log-init --shell /bin/bash superset

View File

@@ -14,7 +14,7 @@
# See the License for the specific language governing permissions and
# limitations under the License.
#
FROM python:3.10-slim-trixie
FROM python:3.11-slim-trixie
ARG VERSION
RUN git clone --depth 1 --branch ${VERSION} https://github.com/apache/superset.git /superset

View File

@@ -14,7 +14,7 @@
# See the License for the specific language governing permissions and
# limitations under the License.
#
FROM python:3.10-slim-trixie
FROM python:3.11-slim-trixie
RUN apt-get update -y
RUN apt-get install -y \

View File

@@ -423,7 +423,7 @@ git push origin ${SUPERSET_VERSION}
### Publishing a Convenience Release to PyPI
Extract the release to the `/tmp` folder to build the PiPY release. Files in the `/tmp` folder will be automatically deleted by the OS.
Extract the release to the `/tmp` folder to build the PyPI release. Files in the `/tmp` folder will be automatically deleted by the OS.
```bash
mkdir -p /tmp/superset && cd /tmp/superset

View File

@@ -1,3 +1,5 @@
#!/usr/bin/env bash
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements. See the NOTICE file
# distributed with this work for additional information
@@ -15,8 +17,6 @@
# specific language governing permissions and limitations
# under the License.
#!/bin/bash
# Function to determine Python command
get_python_command() {
if command -v python3 &>/dev/null; then

View File

@@ -168,6 +168,11 @@ categories:
url: https://www.now.vn/
contributors: ["@davidkohcw"]
- name: Pattern
url: https://www.pattern.com
contributors: ["@alephys26", "@hladush", "@sanketjadhavSF"]
logo: pattern_logo.png
- name: Qunar
url: https://www.qunar.com/
contributors: ["@flametest"]
@@ -381,6 +386,11 @@ categories:
url: https://riadvice.tn
contributors: ["@riadvice"]
- name: Savantly
url: https://savantly.net/
logo: savantly.png
contributors: ["@jdbranham", "@Aleem89", "@savantwayne"]
- name: ScopeAI
url: https://www.getscopeai.com
contributors: ["@iloveluce"]
@@ -436,6 +446,11 @@ categories:
url: https://bestpair.info/
contributors: ["@stevensuting"]
- name: Veremes
url: https://www.veremes.com/
logo: veremes.svg
contributors: ["@verdier"]
- name: Virtuoso QA
url: https://www.virtuosoqa.com
@@ -619,14 +634,34 @@ categories:
- name: Symmetrics
url: https://www.symmetrics.fyi
Government:
Government / Public authority:
- name: Centre Régional Auvergnat de l'Information Géographique (France)
url: https://www.craig.fr/
logo: craig.png
- name: City of Ann Arbor, MI
url: https://www.a2gov.org/
contributors: ["@sfirke"]
- name: Métropole Européenne de Lille (France)
url: https://data.lillemetropole.fr/accueil/
logo: mel.jpg
- name: NRLM - Sarathi, India
url: https://pib.gov.in/PressReleasePage.aspx?PRID=1999586
- name: Région Bretagne (France)
url: https://geobretagne.fr/
logo: geobretagne.svg
- name: Région Hauts-de-France (France)
url: https://www.geo2france.fr/
logo: geo2france.png
- name: Rennes Métropole (France)
url: https://metropole.rennes.fr/
logo: rennes-ville-metropole_noir.svg
- name: RIS3 Strategy of CZ, MIT CR
url: https://www.ris3.cz/
contributors: ["@RIS3CZ"]
@@ -682,6 +717,10 @@ categories:
url: https://automattic.com/
contributors: ["@Khrol", "@Usiel"]
- name: CamptoCamp
url: https://camptocamp.com/
logo: camptocamp.svg
- name: Dropbox
url: https://www.dropbox.com/
contributors: ["@bkyryliuk"]
@@ -690,6 +729,10 @@ categories:
url: https://flowbird.com
contributors: ["@EmmanuelCbd"]
- name: geOrchestra
url: https://www.georchestra.org
logo: georchestra.svg
- name: GEOTAB
url: https://www.geotab.com
contributors: ["@JZ6"]
@@ -706,6 +749,10 @@ categories:
url: https://www.increff.com/
contributors: ["@ishansinghania"]
- name: jDev
url: https://jdev.fr/
logo: jDev.svg
- name: Let's Roam
url: https://www.letsroam.com/
@@ -716,6 +763,11 @@ categories:
url: https://1beat.com/
contributors: ["@GuyAttia"]
- name: pi-Geosolutions
url: https://www.pi-geosolutions.fr/
logo: pi-Geosolutions.png
contributors: ["@jeanpommier"]
- name: X
url: https://x.com/

View File

@@ -40,10 +40,6 @@ under the License.
| can read on Database |:heavy_check_mark:|:heavy_check_mark:|:heavy_check_mark:|O|:heavy_check_mark:|
| can write on Database |:heavy_check_mark:|O|O|O|O|
| can read on Query |:heavy_check_mark:|:heavy_check_mark:|:heavy_check_mark:|O|:heavy_check_mark:|
| can this form get on ResetPasswordView |:heavy_check_mark:|O|O|O|O|
| can this form post on ResetPasswordView |:heavy_check_mark:|O|O|O|O|
| can this form get on ResetMyPasswordView |:heavy_check_mark:|:heavy_check_mark:|:heavy_check_mark:|O|O|
| can this form post on ResetMyPasswordView |:heavy_check_mark:|:heavy_check_mark:|:heavy_check_mark:|O|O|
| can this form get on UserInfoEditView |:heavy_check_mark:|O|O|O|O|
| can this form post on UserInfoEditView |:heavy_check_mark:|O|O|O|O|
| can show on UserDBModelView |:heavy_check_mark:|O|O|O|O|
@@ -52,8 +48,6 @@ under the License.
| can add on UserDBModelView |:heavy_check_mark:|O|O|O|O|
| can list on UserDBModelView |:heavy_check_mark:|O|O|O|O|
| can userinfo on UserDBModelView |:heavy_check_mark:|:heavy_check_mark:|:heavy_check_mark:|O|O|
| resetmypassword on UserDBModelView |:heavy_check_mark:|:heavy_check_mark:|:heavy_check_mark:|O|O|
| resetpasswords on UserDBModelView |:heavy_check_mark:|O|O|O|O|
| userinfoedit on UserDBModelView |:heavy_check_mark:|O|O|O|O|
| can show on RoleModelView |:heavy_check_mark:|O|O|O|O|
| can edit on RoleModelView |:heavy_check_mark:|O|O|O|O|

View File

@@ -84,6 +84,20 @@ The `sql_lab` role is *additive*: it grants the SQL Lab permission set on top of
Deployments may grant or revoke individual view-menu permissions, which shifts the boundary for that deployment but does not redefine the model. Any custom role created by an operator inherits the same principle: its capabilities are whatever the operator has explicitly granted it. The Public principal follows the same rule: operators may grant the Public role read access to specific datasets or dashboards (typically for anonymous reporting use cases), which shifts the boundary for that deployment without redefining the model.
### Async Execution and Realtime Notifications
Asynchronous execution paths do not create a separate data-access capability. A background task is a continuation of an already-authorized action, such as reading chart data or executing SQL through SQL Lab. The initiating route, command, or scheduler must enforce the same route-level and object-level checks the synchronous path would enforce before it creates the task, and the worker must execute under the initiating principal's effective identity when row-level security, impersonation, embedded guest-token scope, or similar controls affect the result.
Task metadata is itself a request-scoped resource. Non-admin users and embedded guests may read or cancel only tasks they are subscribed to or that otherwise represent work they are entitled to observe; Admin may observe and manage tasks as part of the trusted operational boundary. A bug that lets a principal create, read, join, cancel, or receive task state for work outside the role and capability matrix is in scope.
Realtime transports, including WebSocket delivery backed by Redis or Valkey Pub/Sub, are notification mechanisms rather than authorization sources. WebSocket notification access is controlled by `can_read` on the `Realtime` resource. The broadcast scope is authenticated-global, not public: it reaches every authenticated realtime socket, and an anonymous request receives no realtime principal, no JWT cookie, and therefore no socket, so it never receives these messages (true anonymous/Public-role realtime is not offered and would require a separate, restricted model). Broadcast Pub/Sub messages, such as list-view entity-change events, must be context-free nudges; sensitive or authoritative state must not be published on the broadcast scope. Targeted Pub/Sub messages may carry task state only when the producer names routing keys derived from an authorized identity, such as a task subscriber's principal channel (or a per-tab channel derived from it); the producer validates every routing key against the task's own subscriber principals before publishing, and the websocket server forwards the payload only to sockets bound to those keys. Full data and result payloads must still be fetched through the normal protected REST API or cache-read path. Redis Streams used for task completion, dependency, and lock-release signalling are likewise coordination signals; the metastore or cache entry they wake a consumer to read remains the source of truth.
The realtime notification permission is distinct from the permission to read the underlying object. It controls whether a principal receives push notifications, not whether they may read the object once they call the protected REST API. Existing websocket connections are authorized by the JWT accepted at upgrade time; permission revocation after token minting is bounded by `WEBSOCKET_JWT_EXPIRATION_SECONDS` plus the websocket server's socket-check interval. Redis Streams are internal server-to-server coordination primitives and should not be directly exposed as an end-user subscription surface.
### Version History and Change Metadata
An entity's version history — its change-record activity stream, field-level before/after diffs, and the author identity and timestamps attached to each change — is not part of the base *Read data* capability. Reading it requires **object-level editorship** of the entity (owner, editor, or Admin), the same capability required to restore a version. A principal who can read an entity's current state but is not an editor of it — including an **embedded guest token** and any **view-only** (read-but-not-edit) role — is not entitled to its version history, change metadata, or author identity, and such requests are refused. Related-entity records in a cross-entity activity view remain silently filtered to the reader's own read access. A bug that discloses version history, change-record diffs, or author identity to a principal lacking object-level editorship is in scope.
### Vulnerability Scope
The test for whether a finding is in scope is a single question:

File diff suppressed because it is too large Load Diff

Some files were not shown because too many files have changed in this diff Show More