Hugh A. Miles II
2d7ea4cebb
Merge branch 'master' into hughhhh/dashboard-export-spec-review
2026-06-20 23:13:23 -04:00
Jean Dupuis
b2e5f80db2
fix(sql): preserve multi-arg DISTINCT in sanitize_clause and format ( #39340 )
2026-06-19 13:02:50 -07:00
Vitor Avila
334b13c3d9
fix(chart API): apply dashboard filters by live scope, not stale chartsInScope ( #41214 )
2026-06-19 15:22:54 -03:00
Vitor Avila
9e130e5927
fix(chart): preserve SQL_QUERY_MUTATOR line comments structure ( #41215 )
2026-06-19 15:07:24 -03:00
André Meyer
141f045104
test: add unit tests for get_current_user (superset/tasks/utils.py) ( #40878 )
...
Co-authored-by: Evan Rusackas <evan@preset.io >
2026-06-19 10:09:53 -07:00
dependabot[bot]
919bd35028
chore(deps): bump marshmallow from 3.26.2 to 4.3.0 ( #39751 )
...
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 Sonnet 4.6 <noreply@anthropic.com >
Co-authored-by: Amin Ghadersohi <amin.ghadersohi@gmail.com >
2026-06-19 10:02:35 -07:00
Amin Ghadersohi
1467006427
fix(mcp): generate durable explore permalink URL instead of ephemeral form_data_key ( #40773 )
2026-06-19 08:50:11 -07:00
Furkan Emre Güngör
9d3efb0aab
fix(csv): apply CSV_EXPORT encoding explicitly, Werkzeug 3 removed Response.charset ( #40801 )
2026-06-19 08:49:27 -07:00
Grégoire Gailly
cc9c20fcb6
feat(dashboard): Edit dashboard description from ui (and api) and show tooltip on dashboard list view ( #36071 )
2026-06-19 08:49:14 -07:00
Hugh A Miles II
712e1de330
Merge remote-tracking branch 'origin/master' into hughhhh/dashboard-export-spec-review
...
# Conflicts:
# superset/charts/data/api.py
# superset/charts/data/dashboard_filter_context.py
2026-06-18 22:23:03 -04:00
Elizabeth Thompson
0c9ece65bb
fix(reports): require user in get_screenshot, simplify Selenium lifecycle, and fail on tiled screenshot error ( #41080 )
...
Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-06-18 15:46:17 -07:00
Elizabeth Thompson
7040388ad1
fix(query_object_factory): normalize deprecated query fields before constructing QueryObject ( #41204 )
2026-06-18 15:02:07 -07:00
Abdul Rehman
76e2418f1e
fix(mcp): add safeguards to ensure all MCP tools are wrapped with mcp_auth_hook ( #40412 )
...
Co-authored-by: Evan Rusackas <evan@preset.io >
2026-06-18 10:27:53 -07:00
Vitor Avila
b4e3452bfd
fix(chart API): Do not duplicate Jinja-applied filters with filters_dashboard_id ( #41131 )
2026-06-18 14:25:54 -03:00
Hugh A Miles II
73e33cc60b
Merge remote-tracking branch 'origin/master' into hughhhh/dashboard-export-spec-review
...
# Conflicts:
# UPDATING.md
2026-06-18 11:03:58 -04:00
Durgaprasad M L
7e98410743
fix(theme): embedded method overrides dashboard level config ( #40777 )
...
Co-authored-by: Mehmet Salih Yavuz <salih.yavuz@proton.me >
2026-06-17 18:33:04 -07:00
Hans Yu
883b7a286d
refactor: update SQLAlchemy select() syntax to 2.0 ( #40276 )
2026-06-17 17:50:32 -07:00
jesperct
ef82da8458
fix(charts): apply datetime format to unaggregated temporal columns ( #41060 )
2026-06-17 14:56:09 -07:00
Hugh A Miles II
667252a3fe
Merge remote-tracking branch 'origin/master' into hughhhh/dashboard-export-spec-review
...
# Conflicts:
# UPDATING.md
2026-06-17 09:22:10 -07:00
Amin Ghadersohi
eebe1a1a5b
fix(dashboards): remove thumbnail_url from list API to reduce cache cost ( #38567 )
2026-06-17 09:35:21 -06:00
Joao Amaral
750518cf6f
fix(celery): check app context before session removal in teardown ( #37574 )
...
Co-authored-by: codeant-ai-for-open-source[bot] <244253245+codeant-ai-for-open-source[bot]@users.noreply.github.com>
Co-authored-by: Đỗ Trọng Hải <41283691+hainenber@users.noreply.github.com >
Co-authored-by: Daniel Vaz Gaspar <danielvazgaspar@gmail.com >
Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com >
Co-authored-by: Elizabeth Thompson <eschutho@gmail.com >
2026-06-17 10:44:27 -03:00
Xie Yanbo
a27ec1923e
chore(export): Added ability to export chart YAML files with Unicode characters, fix #20331 ( #28008 )
...
Co-authored-by: Evan Rusackas <evan@preset.io >
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-17 07:55:19 +01:00
Hugh A Miles II
a8c1148aad
fix(dashboard): tolerate empty export_xlsx body + green up CI
...
- export_xlsx: use request.get_json(silent=True) so a POST with no JSON
content-type no longer raises 415/500 (returns 400/404/501 as intended).
- api_tests: register the FAB-generated can_export_xlsx permission in
test_info_security_dashboard; replace the gamma test (Gamma has can_export)
with a deterministic 404-for-inaccessible-dashboard check.
- type-annotate dict literals in the filter-context tests (mypy var-annotated).
- move MenuWrapperWithProps above first use (oxlint no-use-before-define).
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com >
2026-06-16 16:30:23 -07:00
Hugh A Miles II
161c4d81d7
Merge remote-tracking branch 'origin/master' into hughhhh/dashboard-export-spec-review
...
# Conflicts:
# UPDATING.md
# superset-frontend/package-lock.json
2026-06-16 15:59:03 -07:00
Shaitan
6a1091d576
fix(sql): broaden mutating-statement detection in SQL Lab parser ( #40421 )
...
Co-authored-by: Claude Opus 4.7 <noreply@anthropic.com >
Co-authored-by: sha174n <pedro.sousa@preset.io >
2026-06-16 15:07:34 -07:00
Hugh A Miles II
cea084898c
feat(dashboard): POST export_xlsx endpoint
...
Add POST /api/v1/dashboard/<pk>/export_xlsx/ which validates the request and
enqueues the async Excel export task, returning 202 with a job id. Gated on the
Dashboard can_export permission (@permission_name("export")); returns 501 when
EXCEL_EXPORT_S3_BUCKET is unset, 404 for inaccessible/missing dashboards,
403 on object-level access denial, and 400 for guest/no-email users or empty
dashboards. The job id is used as the Celery task id for correlation. Adds the
request/response marshmallow schemas and integration tests.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com >
2026-06-16 14:48:34 -07:00
Hugh A Miles II
7df440538a
feat(export): export_dashboard_excel celery task
...
Add the async task that exports a dashboard's chart data to a multi-sheet xlsx.
Running as the requesting user, it walks charts in layout order, re-runs each
saved query context with the live filter state applied, streams results into a
constant-memory workbook, uploads to S3, and emails a pre-signed link. Charts
with no/invalid query context or a failing query are skipped and listed in the
email; all-skipped dashboards get a summary sheet. On failure (incl. soft
timeout) it emails the user and always cleans up the temp file. Registers the
task in CeleryConfig.imports. Adds unit tests for happy path, skips, summary,
upload failure, and timeout.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com >
2026-06-16 14:48:34 -07:00
Hugh A Miles II
3730d22456
feat(export): dashboard excel export email builder
...
Add email rendering/delivery for dashboard Excel exports: success and failure
HTML bodies (inline styles only, no logo, matching report-notification emails),
subject lines prefixed with EMAIL_REPORTS_SUBJECT_PREFIX, and a send wrapper
over send_email_smtp. Dashboard titles and chart names are HTML-escaped to
prevent injection. Adds unit tests.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com >
2026-06-16 14:48:34 -07:00
Hugh A Miles II
dbea4b6c87
feat(export): S3 upload + presigned URL utility
...
Add superset.utils.s3 with upload_file_to_s3() (boto3 managed multipart) and
generate_presigned_url(). Credentials/region come from the standard boto3 chain;
operators can override client construction via EXCEL_EXPORT_S3_CLIENT_KWARGS
(e.g. endpoint_url for MinIO/LocalStack). Adds unit tests with mocked boto3.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com >
2026-06-16 14:48:34 -07:00
Elizabeth Thompson
f1ae683923
fix(deps): replace deprecated np.NaN with np.nan ( #41118 )
...
Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-06-16 14:19:08 -07:00
Bob Jo
257dafeec5
fix(query): don't mutate ad-hoc ORDER BY expressions when building queries ( #40993 )
...
Co-authored-by: Claude Fable 5 <noreply@anthropic.com >
2026-06-16 13:03:39 -04:00
Alexandru Soare
6d08e79259
feat(security): Add extension hooks for custom access control, ownership, and asset lifecycle ( #40707 )
2026-06-16 15:25:03 +03:00
Amin Ghadersohi
7cb4990403
feat(mcp): add create_dataset tool to register physical tables as datasets ( #40340 )
...
Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-06-15 23:25:29 -04:00
Amin Ghadersohi
c1b5d05f83
fix(bigquery): set default dataset from schema in adjust_engine_params ( #40776 )
2026-06-15 18:37:06 -04:00
Evan Rusackas
e16bb29faf
fix(embedded): allow guests to apply a Time Grain native filter ( #32768 ) ( #41017 )
...
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Claude Fable 5 <noreply@anthropic.com >
2026-06-15 15:22:21 -07:00
Elizabeth Thompson
09b4bc51a3
fix(charts): rename deprecated query object fields in schema before QueryObject construction ( #41056 )
2026-06-15 14:45:41 -07:00
Evan Rusackas
379435b7eb
feat(ssh_tunnel): add opt-in server host key verification ( #40673 )
...
Co-authored-by: Claude Code <noreply@anthropic.com >
2026-06-15 12:17:14 -07:00
Amin Ghadersohi
4b96b91b53
feat(mcp): add aggregation field to BigNumberChartConfig for Big Number with Trendline ( #40775 )
...
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com >
2026-06-15 14:40:37 -04:00
Minh Vu
bf5daf0a1e
fix(mcp): redirect stdio click echo without recursion ( #40814 )
2026-06-15 10:10:40 -07:00
Joe Li
b656b1d477
fix(reports): escape LIKE wildcards in text filter and preserve typed screenshot width ( #40980 )
...
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-15 09:59:40 -07:00
Amin Ghadersohi
820e3d18d3
fix(mcp): make search_tools query optional to fix null content on tool discovery ( #40906 )
2026-06-15 11:32:40 -04:00
Evan Rusackas
9d2f625e55
feat(encrypt): selectable encryption engine + AES-GCM re-encryption migrator ( #40654 )
...
Co-authored-by: Claude Code <noreply@anthropic.com >
2026-06-15 08:10:08 -07:00
Kim Jeong Ju
9ec9c8658b
fix(query_context_processor): apply CSV encoding to follow the encoding settings of 'CSV_EXPORT' ( #34806 )
...
Co-authored-by: Jeong Ju, Kim <haje01@webzen.com >
Co-authored-by: Evan <evan@preset.io >
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com >
2026-06-14 08:55:25 -07:00
Evan Rusackas
9f81565625
feat(uploads): add optional max file size for data uploads ( #40860 )
2026-06-14 19:46:48 +07:00
Nitish Agarwal
c934498696
fix(dashboard): do not add importer as owner when overwriting existing dashboard ( #38615 )
...
Co-authored-by: Evan <evan@preset.io >
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com >
2026-06-14 05:10:03 -07:00
Cezar
df0668eda5
feat(api): return uuid in POST response for dataset, chart, and dashboard ( #37806 )
...
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-06-13 16:53:08 -07:00
Evan Rusackas
d120b1c250
feat(security): enforce password complexity policy (min length + common-password blocklist) ( #40670 )
...
Co-authored-by: Claude Code <noreply@anthropic.com >
2026-06-13 16:31:23 -07:00
Yuvraj Singh Chauhan
3c6239363b
fix(db): preserve percent encoding in database passwords ( #36783 )
...
Co-authored-by: Evan <evan@preset.io >
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com >
2026-06-13 13:52:00 -07:00
Shaitan
5fb13f102a
fix(network): validate target hostname in outbound requests ( #39301 )
...
Signed-off-by: dependabot[bot] <support@github.com >
Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com >
Co-authored-by: Evan Rusackas <evan@preset.io >
Co-authored-by: Arpit Jain <3242828+arpitjain099@users.noreply.github.com >
Co-authored-by: Mafi <matt.fitzgerald@gmail.com >
Co-authored-by: Matt Fitzgerald <matt.fitzgerald@preset.io >
Co-authored-by: Richard Fogaca Nienkotter <63572350+richardfogaca@users.noreply.github.com >
Co-authored-by: Superset Dev <dev@superset.apache.org >
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: sadpandajoe <jcli38@gmail.com >
Co-authored-by: JUST.in DO IT <justin.park@airbnb.com >
Co-authored-by: Michael S. Molina <70410625+michael-s-molina@users.noreply.github.com >
Co-authored-by: sha174n <pedro.sousa@preset.io >
2026-06-13 20:26:58 +01:00
Shaitan
aa3d2b9e81
fix(dashboard): validate native-filter data requests against filter targets ( #40979 )
...
Co-authored-by: sha174n <pedro.sousa@preset.io >
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-13 19:02:28 +01:00