Compare commits

..

1138 Commits

Author SHA1 Message Date
Peng Ren
aaaa071673 feat(database): SIP-195 Add MongoDB database engine support (#37368)
Co-authored-by: Peng Ren <ia250@cummins.com>
(cherry picked from commit 73d4332b51)
2026-07-20 13:30:17 -07:00
Mehmet Salih Yavuz
5538984135 fix(databases): reset import file entry after invalid file error (#42240)
(cherry picked from commit c1e660fac8)
2026-07-20 11:00:59 -07:00
Jean Massucatto
376d11e1f0 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>
(cherry picked from commit fe7d9b4724)
2026-07-18 13:17:37 -07:00
Amin Ghadersohi
4ffffb54e9 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>
(cherry picked from commit 73aa8ef280)
2026-07-17 19:20:49 -07:00
Joe Li
151fb74075 fix(charts): render time comparison without a time grain (#42054)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
(cherry picked from commit 157ef61fd8)
2026-07-17 11:29:42 -07:00
Joe Li
25a7461660 fix(dashboard): seed default active tab path at hydration (#42075)
(cherry picked from commit 20e6dfd37d)
2026-07-17 11:29:42 -07:00
Joe Li
2024f30f47 fix(alerts): remove double border on InputNumber fields in report modal (#42090)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
(cherry picked from commit 3b7647eb6e)
2026-07-17 11:29:42 -07:00
Evan Rusackas
5a77e7d871 fix(dashboard): prevent filter dropdown button from disappearing during layout recalculations (#38193)
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
Co-authored-by: Claude <claude@anthropic.com>
(cherry picked from commit 55bb75efe6)
2026-07-17 11:29:42 -07:00
Joe Li
fe68d20aee fix(components): keep table pagination working after sorting by a column (#969)
The antd Table onChange callback in TableCollection fires for pagination,
filter, and sort changes alike. With an active sorter, every page click
re-dispatched setSortBy with a new array instance; react-table's
usePagination (autoResetPage) resets pageIndex whenever the sortBy state
identity changes, which cancelled the navigation. Sorting a column in any
client-paginated TableView (e.g. the dashboard 'View as table' pane) made
the pagination controls unresponsive, and ListView/server pagination
triggered a spurious page-1 refetch.

Gate the sort dispatch on antd's extra.action so only genuine sorter
changes reach setSortBy.

Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
2026-07-17 11:29:42 -07:00
Joe Li
3aebd88087 ci(pre-commit): install helm-docs via go instead of untrusted brew tap (#973)
Homebrew rolled out an untrusted-tap security change on the GitHub runner
image that makes `brew install norwoodj/tap/helm-docs` fail with "Skipping
norwoodj/tap because it is not trusted", so the pre-commit workflow's
"Enable brew and helm-docs" step now exits non-zero before the hooks ever
run. This turned the "pre-commit checks" job red on every push regardless of
the diff.

Replace the brew tap install with `go install
github.com/norwoodj/helm-docs/cmd/helm-docs@v1.14.2`, matching apache/superset
upstream and keeping the binary version aligned with the helm-docs pre-commit
hook rev in .pre-commit-config.yaml.

Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-17 11:29:42 -07:00
yousoph
e415108bd9 fix(dashboard): block dependent filter from fetching until defaultToFirstItem parent selects (#40978)
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
(cherry picked from commit 8603048518)
2026-07-17 11:29:42 -07:00
yousoph
de1313922e fix(plugin-chart-echarts): clarify Tooltip sort by metric description for stacked charts (#42106)
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
(cherry picked from commit 2dfd08fdb3)
2026-07-17 11:29:42 -07:00
Mike Bridge
fc6b5c3c49 fix(charts): preserve time filter for expression axes (#42052)
Co-authored-by: Mike Bridge <michael.bridge@ext.preset.io>
(cherry picked from commit 90f9238f8a)
2026-07-17 11:29:42 -07:00
Amin Ghadersohi
4d46307576 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>
(cherry picked from commit cec9afb165)
2026-07-17 11:29:42 -07:00
Elizabeth Thompson
84ece5439c fix(plugin-chart-echarts): use echarts 5.6.0 i18n export path for locale import (#42055)
Co-authored-by: Claude <noreply@anthropic.com>
(cherry picked from commit beb9d53687)
2026-07-17 11:29:42 -07:00
Joe Li
05b33371ee fix(subdirectory): apply the application root to plain anchor links (#962)
Three link sites render plain anchors (Typography.Link href=...) rather than
router <Link to=...>, so they bypass the <Router basename> that prefixes the
rest of the app and produce broken links under a SUPERSET_APP_ROOT
subdirectory deployment:

- the delete-dataset modal's "Affected Dashboards" / "Affected Charts" lists
- the tag list page's dashboard, chart and query rows
- an empty dashboard tab's "create a new chart" link

Add a prefixAppRoot helper to pathUtils and apply it at those sites. It cannot
reuse ensureAppRoot: that helper skips paths that already start with the
application root, and the dashboard route is itself /superset/dashboard/<id>/,
so with an application root of /superset it no-ops and the link stays broken.
prefixAppRoot always prefixes, which is what these router-relative paths need,
and it reproduces exactly what <Link to={url}> already renders via the router
basename on the dashboard and chart list pages. Absolute and protocol-relative
URLs still pass through untouched.

Cover each site with subdirectory regression tests, including the colliding
/superset root, plus unit tests for the helper.

Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-17 11:29:42 -07:00
Amin Ghadersohi
7bb3a48d26 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>

(cherry picked from commit bd9ba24266)

[6.0 adaptation] Production schema aliases (chart/dashboard/dataset schemas.py)
applied to the 6.0 baseline. Two files needed adaptation because 6.0 predates
later MCP refactors:

- chart/schemas.py: kept the 6.0 base classes and added only
  `model_config = ConfigDict(populate_by_name=True)` to GenerateExploreLinkRequest
  and UpdateChartPreviewRequest. Dropped upstream's ChartRequestNormalizerMixin
  base (absent on 6.0 — would be F821); the model_config achieves the same
  populate-by-name behavior the aliases require.

- test_dashboard_schemas.py: kept TestRequestSchemaAliasChoices (exercises
  GetDashboardInfoRequest / ListDashboardsRequest / AddChartToDashboardRequest —
  all present on 6.0). Dropped upstream's TestDuplicateDashboardResponse (the
  Duplicate Dashboard feature is absent on 6.0).

dashboard/dataset schemas.py, chart/dataset tests, and the new dataset test
file applied clean. pytest: 184 passed (42 alias/canonical-resolution cases)
across all three schema test files.
2026-07-17 11:29:42 -07:00
Mehmet Salih Yavuz
7989bcea9e fix(dashboard): prevent native filter loss when saving chart customizations (#42032)
Co-authored-by: Enzo Martellucci <52219496+EnxDev@users.noreply.github.com>

(cherry picked from commit 76bb5f8e69)

[6.0 adaptation] Production sources (reducers/nativeFilters.ts, util/getRelatedCharts.ts,
actions/nativeFilters.ts, actions/chartCustomizationActions.ts) applied clean. Only the two
test files were ported to the 6.0 baseline:

- reducers/nativeFilters.test.ts: dropped 6.0's stale SET_NATIVE_FILTERS_CONFIG_COMPLETE
  tests that asserted the pre-fix "backend response is the source of truth / drop-on-omit"
  behavior; those directly contradict the landed merge-based reducer (which now preserves
  untouched filters and only removes ids in action.deletedIds). Kept #42032's canonical
  new-behavior set: removes deleted / removes all when all ids deleted / preserves untouched
  on omit / mixed Filter+ChartCustomization / adds+removes / merges+deletes.

- util/getRelatedCharts.test.ts: kept the undefined-filter guard test; excluded two
  master-baseline DatasourceType.SemanticView cases (SemanticView is absent on 6.0).

jest: 23/23 green across both files (nativeFilters.test.ts + getRelatedCharts.test.ts).
2026-07-17 11:29:42 -07:00
Antonio Rivero
257332aa71 fix(async-queries): back off polling when async event requests keep failing (#42012)
(cherry picked from commit 42523f8cc4)

6.0-release adaptation: asyncEvent.ts applied clean. asyncEvent.test.ts
ported to fetch-mock v11 (6.0 baseline): callHistory.calls() -> calls(),
clearHistory().removeRoutes() -> reset(). Excluded the reserved-job_id
prototype-pollution test.each block (master-baseline, not part of #42012).
2026-07-17 11:29:42 -07:00
yousoph
b957f5668c fix(explore): default Save As for new charts in save dialog (#41314)
Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
(cherry picked from commit 01cd215202)
2026-07-17 11:29:42 -07:00
Amin Ghadersohi
087648c0e9 fix(mcp): bind Big Number chart to a temporal column for dashboard time filters (#41895)
(cherry picked from commit bd61e09b4e)
2026-07-17 11:29:42 -07:00
Maxime Beauchemin
8f6fa85a7b fix(charts): fix time comparison crash when offsets share a numeric prefix (#39344)
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
(cherry picked from commit 0efcd54250)
2026-07-17 11:29:42 -07:00
yousoph
492b74c8f8 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>
(cherry picked from commit f5deda7864)
2026-07-17 11:29:42 -07:00
yousoph
73646e6c2c fix(oauth2): retrigger queries for unsaved charts and schema loading after OAuth2 redirect (#41101)
(cherry picked from commit 098b95560d)
2026-07-17 11:29:42 -07:00
yousoph
92588d67ab fix(native-filters): persist created/pasted default values in select filter (#40984)
Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-authored-by: Joe Li <joe@preset.io>
(cherry picked from commit e08c2c12da)
2026-07-17 11:29:42 -07:00
Enzo Martellucci
8459338f45 fix(chart-echarts): disable animation for report screenshots so time-shift lines render fully (#42003)
(cherry picked from commit 5dd060b714)
2026-07-17 11:29:42 -07:00
Mehmet Salih Yavuz
d907259be8 feat(mcp): add update_dataset_metric tool for editing saved dataset metrics (#40975)
(cherry picked from commit 2fac66d1a3)
2026-07-17 11:29:42 -07:00
Amin Ghadersohi
ff2ebcfdfb fix(mcp): make list-item truncation cap configurable in get_dashboard_info (#41698)
(cherry picked from commit 62ccdfacc2)
2026-07-14 11:50:37 -07:00
Enzo Martellucci
9ee3272399 fix(dashboard): deleted Display Control reappears after Apply Filters (#41999)
(cherry picked from commit 8f75f1a353)
2026-07-14 11:50:37 -07:00
Amin Ghadersohi
20a6cad0c9 fix(mcp): stop masking dashboard lookup DB errors as not-found (#41919)
(cherry picked from commit 873566c827)
2026-07-14 11:50:37 -07:00
Alexandru Soare
65bd436527 feat(ListView): cherry-picking for folders feature onto 6.0-release (#961)
* feat(ListView): expose expandable prop (#40765)

* feat(listview): Add headerContent prop and HomeOutlined icon (#41244)

* feat(Icons): adding Layout icon (#41853)
2026-07-14 11:50:37 -07:00
Amin Ghadersohi
a06173b66a feat(mcp): add get_dashboard_datasets tool (#40961)
(cherry picked from commit fd9c84be43)
2026-07-14 11:50:37 -07:00
amaannawab923
0576ac4b57 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>
(cherry picked from commit 9b508ebe0d)
2026-07-13 13:14:19 -07:00
yousoph
f723884808 fix(databases): update broken database documentation links to /user-docs namespace (#41557)
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
Co-authored-by: Đỗ Trọng Hải <41283691+hainenber@users.noreply.github.com>
Co-authored-by: Evan Rusackas <evan@preset.io>
(cherry picked from commit 033b7bc385)
2026-07-13 13:14:19 -07:00
yousoph
d703cc21ea feat(tags): add favorites filter to Tags list view (#41461)
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
(cherry picked from commit c0b0a2fdaf)
2026-07-13 13:14:19 -07:00
yousoph
a3285544b3 fix(tags): make favorite star toggle in Tags list view (#41460)
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
(cherry picked from commit d42076d541)
2026-07-07 16:19:15 -07:00
amaannawab923
9fb756a207 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>
(cherry picked from commit ffd0982942)
2026-07-07 08:33:38 -07:00
amaannawab923
e29a281071 fix(ag-grid): select cell on click instead of its text (#41392)
Co-authored-by: Enzo Martellucci <52219496+EnxDev@users.noreply.github.com>
Co-authored-by: Enzo Martellucci <enzomartellucci@gmail.com>
(cherry picked from commit 5e384f54d3)
2026-07-07 08:27:46 -07:00
Mehmet Salih Yavuz
e12c08b0ea fix(sqllab): preserve saved query description when editing (#41685)
(cherry picked from commit de5a233ccf)
2026-07-07 08:25:05 -07:00
amaannawab923
f94de107b4 fix(ag-grid): persist "None" value aggregation selection (#41386)
Co-authored-by: Enzo Martellucci <52219496+EnxDev@users.noreply.github.com>
Co-authored-by: Enzo Martellucci <enzomartellucci@gmail.com>
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
(cherry picked from commit fb496e158a)
2026-07-06 16:34:46 -07:00
yousoph
ca5e45458e fix(explore): prevent Results FilterInput from stealing focus during remount (#41100)
Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
(cherry picked from commit 19e94855a1)
2026-07-03 14:38:16 -07:00
Mike Bridge
fbf3667cfa fix(dao): SQL-faithful NULL and non-string handling in LIKE-family operators (#41653)
Co-authored-by: Mike Bridge <michael.bridge@ext.preset.io>
(cherry picked from commit be46d65e3b)
2026-07-03 14:25:47 -07:00
Joe Li
a870453816 fix(sqllab): preserve query history after tab migration (#41403)
(cherry picked from commit 7926c3a93a)
2026-07-03 14:22:22 -07:00
Joe Li
1d026a5322 fix(mixed-chart): preserve order_desc and series_limit_metric in buildQuery (#41401)
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
(cherry picked from commit 825b582815)
2026-07-03 14:20:28 -07:00
Kamil Gabryjelski
800f57d628 fix(plugin-chart-ag-grid-table): show correct percent-metric totals in summary row (#41247)
Signed-off-by: Kamil Gabryjelski <kamil.gabryjelski@gmail.com>
(cherry picked from commit 2d78a8733c)
2026-07-03 14:19:06 -07:00
Joe Li
0cc04ff8a2 fix(mcp): handle SSL connection drop during pre-call session teardown (#39917)
Manual port of apache/superset#39917 (commit 85935b0b) onto 6.0-release.
A clean cherry-pick does not apply because mcp_service/auth.py has diverged
structurally on this branch, but the vulnerable code path is present verbatim:
sync_wrapper calls db.session.remove() before user resolution on reused
thread-pool threads. If the thread-local DBAPI connection died between
requests (RDS SSL idle-timeout / max-connection-age), the implicit rollback
raises a DBAPIError and crashes the tool call.

Wrap the pre-call remove in _remove_session_safe(), which catches DBAPIError,
invalidates the dead connection so the pool discards it, and retries remove()
so the tool proceeds on a fresh connection. Ports the accompanying regression
test byte-for-byte behaviorally.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-02 14:21:40 -07:00
Mehmet Salih Yavuz
99a374adda fix(dashboard): show a not-found state for a deleted dashboard (#41686)
(cherry picked from commit 8bf3933972)
2026-07-02 12:37:13 -07:00
Amin Ghadersohi
c63ada38f2 feat(mcp): add tags + typed metadata fields to update_dashboard (#40957)
(cherry picked from commit c60d8bb656)
2026-07-02 12:25:24 -07:00
Greg Neighbors
9cd2a0d7b8 feat(mcp): dashboard layout, theme, and CSS control + update_dashboard tool (#40399)
Co-authored-by: gkneighb <26003+gkneighb@users.noreply.github.com>
Co-authored-by: Greg Neighbors <gregneighbors@Gregs-MacBook-Air-2.local>
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: Evan Rusackas <evan@rusackas.com>
(cherry picked from commit d8bcc66472)
2026-07-02 12:11:12 -07:00
Mehmet Salih Yavuz
39a5abe515 fix(sqllab): reject blank saved query and dataset names (#41624)
Co-authored-by: Enzo Martellucci <52219496+EnxDev@users.noreply.github.com>
(cherry picked from commit a48ca9ce72)
2026-07-02 11:38:48 -07:00
Mehmet Salih Yavuz
c3d323f5c5 fix(sqllab): filter results table when typing in the search box (#41625)
(cherry picked from commit a919dda2ac)
2026-07-02 11:32:24 -07:00
Jean Massucatto
4969a91d56 fix(dashboard): pre-filter time grain for display controls (#40000)
Co-authored-by: Joe Li <joe@preset.io>
(cherry picked from commit e58ce1cf39)
2026-07-02 11:27:32 -07:00
Mehmet Salih Yavuz
721ec5fcc7 fix(sqllab): truncate long tab names in the overflow ("...") dropdown (#41585)
(cherry picked from commit b7d5de8e52)
2026-07-02 11:23:20 -07:00
Amin Ghadersohi
eb8a8aebf5 fix(mcp): escape LIKE wildcards in find_users to prevent user enumeration (#41593)
(cherry picked from commit 7f4cac63c9)
2026-07-02 11:06:44 -07:00
Amin Ghadersohi
aab1c0483e chore(mcp): remove low-value list/info tools that fail agent-native policy (#40690)
(cherry picked from commit ef7379c47e)

Adapted for 6.0-release: on this branch only the css_template and theme MCP
tool groups exist, so this pick removes those two groups (their list/get tools,
schemas, and unit tests) along with their docstring and get_schema references.
The plugin, action_log, and task-management tool groups the upstream change
also touched do not exist on 6.0 and were left untouched.
2026-07-02 10:35:18 -07:00
jesperct
214065ac0e fix(explore): stop metric edits from bleeding across metrics with duplicate optionNames (#41208)
Adapted for 6.0-release: the dedupeAdhocMetricOptionName helper and its
wiring were ported onto this branch's pre-TS-migration files
(AdhocMetric.js, MetricsControl.jsx) with type annotations stripped, and
onto DndMetricSelect.tsx whose coerceMetrics lacked the master type
casts. Behavior matches upstream: duplicate optionNames are regenerated
on load so editing one metric no longer overwrites another.

Co-authored-by: Evan Rusackas <evan@rusackas.com>
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
(cherry picked from commit 0c12114ea9)
2026-07-02 10:22:40 -07:00
Joe Li
2df6091bb3 fix(dashboard): suppress favorite status error toast on 404 (#41402)
Adapted for 6.0-release: ported onto dashboardState.js/.test.js (still
pre-TS-migration on this branch) and onto the guard-less catch block,
preserving 6.0's existing "toast on any non-404 error" behavior while
swallowing the 404 case. The upstream currentId guard is a separate
change not present on this branch and is intentionally not included.

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
(cherry picked from commit 797e497f4b)
2026-07-02 10:17:31 -07:00
yousoph
634d2ee2cb fix(explore): enable free-text entry for temporal D3 format selector in Table chart (#41194)
Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
(cherry picked from commit 105b896038)
2026-07-02 10:12:02 -07:00
jesperct
5bffda9a49 fix(sqllab): quote autocomplete table names that need it (#41199)
(cherry picked from commit 15626a047c)
2026-06-30 23:22:08 -07:00
Elizabeth Thompson
074cafc9dd fix(screenshots): catch empty-bytes tiled result and set ERROR on falsy image (#41097)
Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
(cherry picked from commit 134919ea36)
2026-06-30 21:41:27 -07:00
yousoph
fdef6d33ee fix(bigquery): quote dotted STRUCT columns per-segment in drill to detail (#41462)
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
(cherry picked from commit b8b23d6219)
2026-06-30 16:22:45 -07:00
Elizabeth Thompson
5cd2031618 fix(reports): pre-commit tab permalinks before state machine transaction (#41096)
Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
(cherry picked from commit e15dc5735f)
2026-06-30 16:18:18 -07:00
Maxime Beauchemin
8b6cc68954 feat(mcp): resolve call_tool proxy name and capture error_type in logging (#38915)
Co-authored-by: Amin Ghadersohi <amin.ghadersohi@gmail.com>
(cherry picked from commit b6f545e61e)
2026-06-30 12:25:20 -07:00
Maxime Beauchemin
527e729a9a fix(table): ensure dimensions appear before metrics in column order (#39346)
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
(cherry picked from commit 4f19bc4c5f)
2026-06-29 11:45:20 -07:00
Amin Ghadersohi
56b5133721 fix(mcp): make search_tools query optional to fix null content on tool discovery (#40906)
(cherry picked from commit 820e3d18d3)
2026-06-26 20:48:41 -07:00
Alexandru Soare
57948b865d feat(security): Add extension hooks for custom access control, ownership, and asset lifecycle (#40707)
(cherry picked from commit 6d08e79259)
2026-06-26 15:59:54 -07:00
Mehmet Salih Yavuz
d0c3bc89a9 feat(explore): add full-range option for time-shift comparison (#41334)
(cherry picked from commit 9a11c15a33)
2026-06-26 15:59:54 -07:00
yousoph
1bef0b1d31 fix(pandas-postprocessing): handle prophet errors and validate minimum data points for forecast (#41180)
Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
(cherry picked from commit f6ce105450)
2026-06-26 15:59:54 -07:00
yousoph
605ed6294d fix(sql_lab): serialize dict/list cell values as valid JSON strings (#41099)
Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
(cherry picked from commit 1d0866556f)
2026-06-26 15:59:54 -07:00
Enzo Martellucci
d2a5b43548 fix(big-number): respect extra_form_data.time_compare in Big Number with Time Comparison (#41342)
(cherry picked from commit 3ff90bd532)
2026-06-26 15:59:54 -07:00
yousoph
f73adb5a89 fix(sql-lab): normalize tabViewId in QUERY_EDITOR_SET_SQL reducer (#40983)
Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
(cherry picked from commit c1f4062af6)
2026-06-26 15:59:54 -07:00
yousoph
b6d496532b fix(explore): pre-populate SaveModal dashboard from chart metadata (#41181)
Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
(cherry picked from commit 133473d0f4)
2026-06-26 15:59:54 -07:00
yousoph
111644cdc2 fix(dashboard): normalize legacy currentState to filterState in native_filters URL param (#40929)
Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
(cherry picked from commit f70a2eac89)
2026-06-25 14:10:25 -07:00
Amin Ghadersohi
1465350ae2 fix(dashboards): remove thumbnail_url from list API to reduce cache cost (#38567)
(cherry picked from commit eebe1a1a5b)
2026-06-25 14:04:17 -07:00
Amin Ghadersohi
cd4f86c82c fix(bigquery): set default dataset from schema in adjust_engine_params (#40776)
(cherry picked from commit c1b5d05f83)
2026-06-25 14:00:02 -07:00
Amin Ghadersohi
62bf3a0c43 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>
(cherry picked from commit 4b96b91b53)
2026-06-25 13:58:39 -07:00
Vitor Avila
be41e026f1 fix(chart API): Consider time grain filters with the filters_dashboard_id param (#41290)
(cherry picked from commit 3b46a5f121)
2026-06-22 21:02:01 -07:00
Geidō
268f1aee39 fix(dashboard): required filters reliably apply default + Apply enables on change (#40470)
(cherry picked from commit 01ed81785e)
2026-06-22 08:25:08 -07:00
Alexandru Soare
0a8f166c6f fix(matrixify): Set singular metric field for pie and other single-me… (#40852)
(cherry picked from commit 378473a6fe)
2026-06-22 08:21:27 -07:00
Vitor Avila
a363c81887 fix(chart API): apply dashboard filters by live scope, not stale chartsInScope (#41214)
(cherry picked from commit 334b13c3d9)
2026-06-19 12:33:44 -07:00
Vitor Avila
34ee189094 fix(chart): preserve SQL_QUERY_MUTATOR line comments structure (#41215)
(cherry picked from commit 9e130e5927)
2026-06-19 12:30:00 -07:00
Vitor Avila
57a4fd096f fix(chart API): Do not duplicate Jinja-applied filters with filters_dashboard_id (#41131)
(cherry picked from commit b4e3452bfd)
2026-06-19 12:26:44 -07:00
Evan Rusackas
4fb3c6cc8d fix(dashboard): replace chartsInScope references at import time (#38171)
Co-authored-by: Rémy Dubois <remy.dubois@komodohealth.com>
Co-authored-by: Claude Code <noreply@anthropic.com>
(cherry picked from commit 19d01521bf)
2026-06-19 12:20:52 -07:00
Richard Fogaca Nienkotter
ff0d8d8055 fix(embedded): skip CSRF token fetch for guest streaming chart exports (#41004)
(cherry picked from commit a1bc3c67ed)
2026-06-18 12:29:28 -07:00
jesperct
89c57aa0cc fix(explore): drop inherit/custom time shifts when switching to a viz that can't honor them (#40865)
(cherry picked from commit 188c84f1cd)
2026-06-18 12:25:23 -07:00
jesperct
bae6e6a646 fix(charts): apply datetime format to unaggregated temporal columns (#41060)
(cherry picked from commit ef82da8458)
2026-06-17 16:36:33 -07:00
jesperct
5caad5201a fix(plugin-chart-handlebars): follow the app theme in Customize code editors (#40952)
(cherry picked from commit 2d2a8f3ab0)
2026-06-17 16:27:56 -07:00
Joao Amaral
de4d0f6d94 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>
(cherry picked from commit 750518cf6f)
2026-06-17 08:15:55 -07:00
Hugh A. Miles II
e6db576381 feat(dashboard): add Rison-encoded URL filter support (#39795)
Co-authored-by: Claude Opus 4.7 <noreply@anthropic.com>
(cherry picked from commit 9a79588d35)
2026-06-12 10:47:55 -07:00
Alexandru Soare
01ef788f9b fix(explore): require Update Chart for Matrixify dimension changes (#40851)
(cherry picked from commit 56c856e802)
2026-06-12 09:45:10 -07:00
Elizabeth Thompson
226726fbf4 fix: replace deprecated appbuilder.app with current_app (#40876)
Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
(cherry picked from commit c0e78f39d7)
2026-06-12 09:45:10 -07:00
Elizabeth Thompson
827fb467ca fix: use Series.iloc for positional access in generate_join_column (#40936)
(cherry picked from commit b0d7880ac0)
2026-06-12 09:45:10 -07:00
Geidō
6f6aa37df3 fix(deps): cap paramiko <4.0 to keep SSH tunneling working (#40973)
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Co-authored-by: Mehmet Salih Yavuz <salih.yavuz@proton.me>
(cherry picked from commit 74845eaf0b)
2026-06-12 09:45:10 -07:00
Mehmet Salih Yavuz
bf0f73df02 fix(theme): SDK theme config overrides dashboard-level theme in embedded mode (#40763)
(cherry picked from commit d7ddf2023d)
2026-06-12 09:45:10 -07:00
jesperct
89e5815b66 fix(dashboard): update browser tab title when dashboard is renamed (#40730)
Co-authored-by: Enzo Martellucci <52219496+EnxDev@users.noreply.github.com>
(cherry picked from commit 21189ae130)
2026-06-12 09:45:10 -07:00
Daniel Vaz Gaspar
03f350a479 fix(sqllab): prevent corrupted query state from blocking SQL Lab access (#40580)
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-authored-by: Joe Li <joe@preset.io>
2026-06-12 09:45:10 -07:00
chaselynisabella
4136be1f30 feat(path): support metric-based color scales & line width by metric (#39165)
(cherry picked from commit ac035083d7)
2026-06-05 19:31:31 -07:00
yousoph
dbfafa83aa fix(dashboard): prevent divider display controls from reverting on second save (#40696)
Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
(cherry picked from commit e956f82224)
2026-06-05 18:41:30 -07:00
jesperct
5125ae0fd8 fix(dashboard): sort Dynamic Group By display values alphabetically (#40220)
(cherry picked from commit 8119204857)
2026-06-05 17:54:29 -07:00
Richard Fogaca Nienkotter
8cfe2ae02a fix(embedded): add guest token to streaming exports (#40712)
Co-authored-by: Amin Ghadersohi <amin.ghadersohi@gmail.com>
(cherry picked from commit 601f9c2b8c)
2026-06-05 17:51:36 -07:00
Amin Ghadersohi
9e45088364 fix(mcp): add select_columns lean defaults to get_dashboard_info, get_chart_info, get_dataset_info (#40473)
Co-authored-by: Claude Opus 4.7 <noreply@anthropic.com>
Co-authored-by: Richard Fogaça <richardfogaca@gmail.com>
(cherry picked from commit aa4092ba68)
2026-06-05 17:50:15 -07:00
Maxime Beauchemin
5e46e58453 fix(table): fix cross-filter not clearing on second click in Interactive Table (#39253)
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
(cherry picked from commit c2d96e0dce)
2026-06-05 17:48:21 -07:00
Amin Ghadersohi
f7429845d5 fix(mcp): API key authentication for MCP — transport, validation, and RBAC (#39604)
(cherry picked from commit 7d69f76127)
2026-06-05 17:44:00 -07:00
Amin Ghadersohi
9a72a03608 fix(mcp): fall back to form_data spatial query for Deck.gl charts (#40339)
(cherry picked from commit f4dfb7f026)
2026-06-05 17:35:32 -07:00
Amin Ghadersohi
54fc66b7cf fix(mcp): escape LIKE wildcards in MCP list tool search filters (#40682)
(cherry picked from commit 001834470b)
2026-06-05 17:34:22 -07:00
Kamil Gabryjelski
b40738fd10 feat(gsheets): restore public/private sheet selector (#40466)
Co-authored-by: Claude Opus 4.7 <noreply@anthropic.com>
(cherry picked from commit 2abbb64e6b)
2026-06-05 17:33:05 -07:00
Amin Ghadersohi
59af59405b chore(deps): migrate MCP service JWT errors from authlib.jose to joserfc (#40582)
(cherry picked from commit a6d2c95480)
2026-06-05 17:27:44 -07:00
Amin Ghadersohi
2ead15894e feat(mcp): add list_reports and get_report_info tools (#40348)
Co-authored-by: Richard Fogaça <richardfogaca@gmail.com>
(cherry picked from commit 5312d0adf8)
2026-06-05 17:24:35 -07:00
Amin Ghadersohi
b84377cdfd feat(mcp): add list_tags and get_tag_info MCP tools (#40349)
Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
(cherry picked from commit 8d8eeb3505)
2026-06-05 17:12:45 -07:00
Amin Ghadersohi
5f0e9a5377 feat(mcp): add list and get tools for saved queries and query history (#40346)
Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
(cherry picked from commit a69bbcb044)
2026-06-05 17:10:32 -07:00
Amin Ghadersohi
22327a9a0a feat(mcp): add list and get tools for CSS templates and themes (#40343)
(cherry picked from commit d350792d43)
2026-06-05 17:07:42 -07:00
Amin Ghadersohi
385b84f572 feat(mcp): add list and get tools for annotation layers and annotations (#40342)
(cherry picked from commit f614863ed7)
2026-06-05 17:02:25 -07:00
Mehmet Salih Yavuz
e23a3eae1a feat(mcp): add get_dashboard_layout companion tool (#40328)
(cherry picked from commit 8853ab5c75)
2026-06-05 16:59:16 -07:00
Elizabeth Thompson
4e315fd769 fix(roles): resolve HTTP 429 errors on role management page (#39465)
Adapted for 6.0-release: only the fetchOptions.ts concurrency throttle (429
fix) applies. The RoleListEditModal.tsx/test.tsx changes (414 fix) depend on
the AsyncSelect architecture introduced in #38387, which is not present on
6.0; in 6.0 the modal receives permissions/groups as props from the parent
list page rather than fetching them itself with id-IN filters, so the 414
URL-length code path does not exist here.

Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
(cherry picked from commit f037449b75)
2026-06-05 16:57:06 -07:00
Gabriel Torres Ruiz
610d1c5998 feat(mcp): support custom SQL metrics in generate_chart and update_chart (#40448)
(cherry picked from commit e68251fa70)
2026-06-05 16:53:09 -07:00
Amin Ghadersohi
98ee054613 feat(mcp): browser hello page with working middleware and config-driven content (#40471)
Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
(cherry picked from commit 0dc58d1042)
2026-06-05 16:49:56 -07:00
Amin Ghadersohi
abc4dfb01c fix(mcp): return error when target_tab not found in add_chart_to_existing_dashboard (#40124)
(cherry picked from commit e041f25385)
2026-06-05 16:48:48 -07:00
Amin Ghadersohi
c814025522 fix(mcp): prevent encoding error on tools/list when middleware raises (#40446)
(cherry picked from commit 952a6f3a23)
2026-06-05 16:46:29 -07:00
Joe Li
b9cdea4b95 fix(select): replace cached options with search results in AsyncSelect (#40039)
Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
(cherry picked from commit 3b4892c48c)
2026-06-05 16:45:32 -07:00
Amin Ghadersohi
227a97ce73 feat(mcp): add series_limit to generate_chart XY config (#40307)
Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
(cherry picked from commit 5966bb1c1e)
2026-06-05 16:44:27 -07:00
Amin Ghadersohi
8247e67d58 fix(mcp): hide write tools from users without write permissions (#40098)
Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
(cherry picked from commit e25d708197)
2026-06-05 16:42:55 -07:00
SkinnyPigeon
9ee01c54f4 feat: Allow specific mcp tools to be disabled (#39835)
(cherry picked from commit 70419e9d8f)
2026-06-05 16:39:29 -07:00
Beto Dealmeida
93265c1ac7 chore: bump shillelagh to 1.4.4 (#39870)
(cherry picked from commit 76955017eb)
2026-06-05 16:35:49 -07:00
Richard Fogaca Nienkotter
febab1e24d fix(mcp): default chart previews to ascii (#39719)
(cherry picked from commit d0abb66fdf)
2026-06-05 16:34:34 -07:00
Amin Ghadersohi
0e12a92930 fix(mcp): correct method name in API key auth (extract_api_key_from_request) (#39437)
(cherry picked from commit 7c4f87615b)
2026-06-05 16:31:35 -07:00
Amin Ghadersohi
c9d505eaa8 fix(mcp): unwrap ToolResult payload before truncation in ResponseSizeGuardMiddleware (#39578)
Co-authored-by: Elizabeth Thompson <eschutho@gmail.com>
(cherry picked from commit b1b6a057d8)
2026-06-05 16:30:33 -07:00
Gabriel Torres Ruiz
e357c10a44 fix(mcp): clear stale query_context in update_chart so filters and row_limit are applied (#39413)
(cherry picked from commit 919daabe54)
2026-06-05 16:28:59 -07:00
Maxime Beauchemin
020ce9ca8e fix(table): use column label instead of SQL expression for orderby in downloads (#39332)
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
(cherry picked from commit b3e88db87e)
2026-06-05 15:54:52 -07:00
Richard Fogaca Nienkotter
301b5901f2 fix(dashboard): apply dynamic groupby display controls to scoped charts (#39356)
(cherry picked from commit c3a0f2749b)
2026-06-05 15:21:25 -07:00
Richard Fogaca Nienkotter
b63f86765c fix(heatmap): skip orderby for value-based axis sorts (#39290)
Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
(cherry picked from commit c971ea3ec6)
2026-06-05 14:42:26 -07:00
Maxime Beauchemin
8e6c0f05b8 fix(SqlLab): improve SQL diff modal — responsive width, padding, tabs, and copy button (#39246)
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
(cherry picked from commit 450701ecec)
2026-06-05 13:46:42 -07:00
Evan Rusackas
0f45af3d98 fix(dashboard-import): remap chartsInScope on import (#26338) (#40140)
Co-authored-by: Claude Code <noreply@anthropic.com>
Co-authored-by: Claude <claude@anthropic.com>
(cherry picked from commit 4a9aecda4a)
2026-06-05 11:54:42 -07:00
Mafi
fa702ac47b fix(dashboard): use datasetUuid instead of datasetId in display controls export/import (SC-104655) (#40008)
Co-authored-by: Matt Fitzgerald <matt.fitzgerald@preset.io>
Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
(cherry picked from commit 144dae7c43)
2026-06-05 11:33:17 -07:00
Elizabeth Thompson
3c83e2e18f fix(reports): add per-tile animation wait to prevent partial ECharts renders in tiled screenshots (#40694)
Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
(cherry picked from commit 42367afb25)
2026-06-05 09:16:03 -07:00
Vitor Avila
896c36a14b fix(dashboard-filter): Consider dashboard filters to charts not declared in the dashboard position (#40774)
(cherry picked from commit 7406098708)
2026-06-04 14:27:52 -07:00
Jean Massucatto
2f2da14c58 fix(charts): show non-filterable columns in metric section for table … (#39524)
(cherry picked from commit fc0245bdb0)
2026-06-04 14:25:51 -07:00
Mehmet Salih Yavuz
15d4adb6b6 fix(reports): skip permalink when dashboard state has no anchor or filters (#40530)
(cherry picked from commit e2ed989639)
2026-06-03 15:47:38 -07:00
Jean Massucatto
cdbc89408a fix(explore): tighten popover title-to-tabs spacing to 12px (#40410)
(cherry picked from commit d2d46169bf)
2026-06-03 15:47:38 -07:00
Jean Massucatto
e0b9397b28 fix(chart-list): sort by changed_on instead of last_saved_at (#39984)
(cherry picked from commit 1b8099811b)
2026-06-03 15:47:38 -07:00
jesperct
a1395b3f3e fix(time-comparison): shift offset filter when X-axis is adhoc Custom SQL (#40586)
(cherry picked from commit 699e741c69)
2026-06-03 15:47:38 -07:00
Jean Massucatto
4b0fcb88b7 fix(world-map): preserve bubbles and exclude only null metrics from color scale (#39926)
(cherry picked from commit 7275116f4c)
2026-06-03 15:47:38 -07:00
Jean Massucatto
5824083248 fix(dashboard): clear undo history (#40569)
(cherry picked from commit ddb647cd3a)
2026-06-03 15:47:38 -07:00
Jean Massucatto
2d74122302 fix(dataset): sort by data type when clicking Datatype column header (#40411)
(cherry picked from commit 316dd3db22)
2026-06-03 15:47:38 -07:00
jesperct
5c3f4bc27e fix(dashboard): preserve user selection when Dynamic Group By overlaps base (#40031)
(cherry picked from commit d52e28c564)
2026-06-03 15:47:38 -07:00
jesperct
8de0b923da fix(dataset): validate catalog against allow_multi_catalog on import (#40376)
(cherry picked from commit a2eda11a81)
2026-06-03 15:47:38 -07:00
jesperct
8caa35c2cf fix(chart-echarts): drop white textBorder from Funnel segment labels (#40468)
(cherry picked from commit c73106b7a2)
2026-06-03 15:47:38 -07:00
Maxime Beauchemin
c53e38e566 fix(list-view): preserve user name in filter pill after navigation (#39505)
Co-authored-by: Joe Li <joe@preset.io>
Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
(cherry picked from commit a273fe4d62)
2026-06-03 15:47:38 -07:00
Kamil Gabryjelski
33027be139 fix(mcp): Improve validation errors and field aliases to reduce failed LLM tool calls (#38625)
(cherry picked from commit d91b96814e)
2026-06-03 15:47:38 -07:00
Richard Fogaca Nienkotter
e2c746a9a5 fix(mcp): return requested update chart previews (#40077)
(cherry picked from commit fa06989ed7)
2026-06-03 15:47:38 -07:00
Alexandru Soare
f759506366 feat(mcp): make form_data_key optional in update_chart_preview (#39680)
(cherry picked from commit 33585b0480)
2026-06-03 09:13:54 -07:00
Alexandru Soare
9ea64571dd chore(mcp): Simplify chart preview response (#40020)
(cherry picked from commit b64561f3a3)
2026-06-03 09:13:54 -07:00
Mehmet Salih Yavuz
4349e7c97b fix(mcp): use name URL param so AI-generated SQL Lab titles render (#40288)
(cherry picked from commit 8ab4695ba3)
2026-06-03 09:13:54 -07:00
Alexandru Soare
894d64cdd9 fix(preview): fix chart preview bugs (#40063)
(cherry picked from commit 558ff4452b)
2026-06-03 09:13:54 -07:00
Mehmet Salih Yavuz
e8e9fa9e61 feat(mcp): make config optional in generate_explore_link (#39559)
(cherry picked from commit 4c3f65ef0b)
2026-06-03 09:13:54 -07:00
Mehmet Salih Yavuz
4b0bd34372 feat(mcp): include applied dashboard filters in get_chart_info (#39620)
Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
(cherry picked from commit 53d8e5bdfa)
2026-06-03 09:13:54 -07:00
Mehmet Salih Yavuz
7ce69aecdf fix(mcp): eager-load dataset.metrics to prevent Excel export DetachedInstanceError (#39483)
Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
(cherry picked from commit 2f95d288dd)
2026-06-03 09:13:54 -07:00
Mehmet Salih Yavuz
cd64365399 feat(mcp): add find_users tool and owner filter columns for listings (#39679)
Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
(cherry picked from commit d1d07112aa)
2026-06-03 09:13:54 -07:00
Alexandru Soare
a88648a793 fix(recommandation): Fix chart recommandation (#39886)
(cherry picked from commit e3711bec39)
2026-06-03 09:13:54 -07:00
Mehmet Salih Yavuz
741693e2f5 feat(mcp): chart formatting options across all supported chart types (#39887)
(cherry picked from commit ce9cab098f)
2026-06-03 09:13:54 -07:00
Alexandru Soare
82050eac85 fix(mcp): Skip misleading trend analysis for categorical ASCII charts (#39761)
(cherry picked from commit fb276b08dd)
2026-06-03 09:13:54 -07:00
Alexandru Soare
41d4d46b55 fix(mcp): raise right error (#39964)
(cherry picked from commit 6e8b3bf976)
2026-06-03 09:13:54 -07:00
Alexandru Soare
ad42f8a8b4 feat(mcp): Add mcp_call_id to tool responses for server log correlation (#39776)
(cherry picked from commit 55024e8f4d)
2026-06-03 09:13:54 -07:00
Alexandru Soare
68adc2cb41 fix(mcp): Block destructive DDL (DROP, TRUNCATE, ALTER) in execute_sql (#39621)
(cherry picked from commit b98bd2a07a)
2026-06-03 09:13:54 -07:00
Alexandru Soare
7e47e27ff0 fix(mcp): changed_on_humanized null in write tool responses (generate_dashboard, generate_chart) (#39488)
(cherry picked from commit 0a3a35018c)
2026-06-02 14:25:36 -07:00
Alexandru Soare
575f1cc9cb chore(mcp): Standardize error response shapes across chart tools (#39905)
(cherry picked from commit 966e97989b)
2026-06-02 14:24:55 -07:00
Jean Massucatto
9e96ac04bb fix(explore): hide value input for unary filter operators (#39924)
(cherry picked from commit 965ec47296)
2026-06-01 16:29:57 -07:00
Abdul Rehman
b90d74bce0 fix(frontend): handle null/undefined path in ensureAppRoot (#39940)
Co-authored-by: Đỗ Trọng Hải <41283691+hainenber@users.noreply.github.com>
(cherry picked from commit 816794b198)
2026-06-01 11:22:35 -07:00
Martyn Gigg
d7a9d99ac0 fix(superset-frontend): Fixes for broken functionality when an application root is defined (#36058)
(cherry picked from commit e4f649e49c)
2026-06-01 11:19:22 -07:00
Joe Li
e976a30937 fix(export): URL prefix handling for subdirectory deployments (#36771)
Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
(cherry picked from commit 22cfc4536b)
2026-06-01 11:14:14 -07:00
Joe Li
9f96751d93 test(playwright): convert and create new dataset list playwright tests (#36196)
Co-authored-by: Claude <noreply@anthropic.com>
(cherry picked from commit d0361cb881)
2026-06-01 11:00:33 -07:00
Evan Rusackas
f8314ba725 fix(sqla): pass catalog and schema to get_sqla_engine in values_for_column (#38681)
Co-authored-by: Superset Dev <dev@superset.apache.org>
Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-authored-by: Claude <claude@anthropic.com>
(cherry picked from commit 26ef4b7ed3)
2026-05-22 15:14:47 -07:00
Elizabeth Thompson
c952010683 fix(reports): guard null dashboard height in Playwright screenshots (#40179)
(cherry picked from commit f187a8e1c4)
2026-05-22 15:14:47 -07:00
Jean Massucatto
5f03a3a80b fix(explore): prevent unnecessary scrollbars during chart rendering (#39291)
(cherry picked from commit 054aeb3bae)
2026-05-22 15:14:47 -07:00
Richard Fogaca Nienkotter
51d76fdf9e fix(mcp): apply cached adhoc filters to chart retrieval (#40099)
(cherry picked from commit 8fa5a75c70)
2026-05-22 15:14:47 -07:00
Amin Ghadersohi
b46ee47661 fix(mcp): database filter columns, timeseries SQL, and unsaved chart datasource name (#39636)
Completes the earlier partial backport of #39636 (commit 9039d1460c)
which only applied the database/schemas.py + test_database_tools.py
chunks and dropped the get_chart_sql.py + test_get_chart_sql.py chunks
entirely. The dropped chunks introduce the `_resolve_engine` and
`_resolve_datasource_name` helpers used by #40099.

(cherry picked from commit 7774ec7e3c)
2026-05-22 15:14:47 -07:00
Maxime Beauchemin
8af0ff7e3b fix(table): fall back to datasource columns for conditional formatting when query results are empty (#39345)
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
Co-authored-by: Joe Li <joe@preset.io>

Adapted for 6.0-release:
- Dropped the `allColumns` block and ENTIRE_ROW formatting option;
  ObjectFormattingEnum.ENTIRE_ROW was introduced in master-only PR
  #35897 (feat: add formatting column and formatting object to
  conditional formatting table) which is not on 6.0-release.
- The customer-visible fix (fallback to datasource columns when query
  results are empty) is preserved for 6.0's existing numericColumns
  control surface.
- Test file: dropped the two `allColumns`/ENTIRE_ROW assertions and
  the dedicated ENTIRE_ROW test for the same reason.

(cherry picked from commit a60860c969)
2026-05-22 12:08:30 -07:00
Amin Ghadersohi
0dbdf00587 fix(mcp): improve not-found errors to suggest corresponding list_* tools (#39919)
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
(cherry picked from commit 460992d89b)
2026-05-22 12:08:30 -07:00
Sandesh Devaraju
2fed392839 fix(mcp): JSON-serialize order_by_cols and support sort direction (#39952)
Co-authored-by: Amin Ghadersohi <amin.ghadersohi@gmail.com>
(cherry picked from commit 823eb905d3)
2026-05-22 12:08:30 -07:00
Richard Fogaca Nienkotter
7f501aab42 fix(mcp): expose table chart type labels in chart responses (#40060)
(cherry picked from commit 2a1dcb79e3)
2026-05-22 12:08:30 -07:00
Amin Ghadersohi
aef0d65b3f fix(mcp): clarify request wrapper in list_datasets, list_charts, list_dashboards (#39920)
(cherry picked from commit cfb0b6e811)
2026-05-22 12:08:30 -07:00
Amin Ghadersohi
cd341db6d8 fix(mcp): add default request parameter to list_charts and list_dashboards (#39730)
(cherry picked from commit 957b298ae1)
2026-05-22 10:37:55 -07:00
Mafi
0cab4885bc fix(sqllab): execute prequeries on streaming connection to fix PostgreSQL CSV export (#40194)
Co-authored-by: Matt Fitzgerald <matt.fitzgerald@preset.io>
Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
(cherry picked from commit b66c104fde)
2026-05-22 10:37:55 -07:00
jesperct
6e38cc4c80 fix(echarts): preserve dataZoom range across setOption(notMerge) (#40173)
(cherry picked from commit 5bb54cc96b)
2026-05-22 10:37:55 -07:00
Richard Fogaca Nienkotter
123d563eb1 feat(mcp): add data boundary instruction to harden against prompt injection (#40080)
(cherry picked from commit c59ab8bffd)
2026-05-21 14:58:34 -07:00
Mafi
464398f37b fix(mixed-timeseries): preserve all-NaN metric columns after pivot when Jinja evaluates to NULL (#40005)
Co-authored-by: Matt Fitzgerald <matt.fitzgerald@preset.io>
Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
(cherry picked from commit 01224007da)
2026-05-21 14:58:23 -07:00
Jean Massucatto
f62211a0ca fix(sqllab): handle scientific notation in big number JSON responses (#39994)
(cherry picked from commit e6179036ec)
2026-05-21 14:57:55 -07:00
Amin Ghadersohi
a888e9957a fix(mcp): ASCII chart crashes with NaN when dataset contains null values (#39916)
(cherry picked from commit 547660dcc4)
2026-05-21 14:56:53 -07:00
Richard Fogaca Nienkotter
f3628fa653 fix(explore): preserve preview chart name on save (#39908)
(cherry picked from commit 8c80caefa3)
2026-05-21 14:56:29 -07:00
Elizabeth Thompson
680bd7e444 fix(reports): narrow spinner checks to viewport and tighten exception handling (#39895)
Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
(cherry picked from commit 8d2b655c22)
2026-05-21 14:56:21 -07:00
Elizabeth Thompson
7d28006505 fix(mcp): exclude self-referencing filter columns from get_schema output (#39826)
Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-authored-by: Amin Ghadersohi <amin.ghadersohi@gmail.com>
(cherry picked from commit ef0efb7493)
2026-05-21 14:55:51 -07:00
Elizabeth Thompson
1bb32b70cb fix(export): fix double app-root prefix in chart/drill-detail export URLs (#39710)
Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
(cherry picked from commit 958d4aa3de)
2026-05-20 18:09:13 -07:00
Mehmet Salih Yavuz
46ef48971b fix: chart rendering race condition and homepage connection reset (#40065)
Co-authored-by: Geidō <60598000+geido@users.noreply.github.com>
(cherry picked from commit a62bf2b0bb)
2026-05-20 11:58:28 -07:00
Mehmet Salih Yavuz
4745484c7c fix(rls): prevent double-apply when converting physical dataset to virtual (#39725)
Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
(cherry picked from commit 8b0e63b58c)
2026-05-20 11:51:41 -07:00
Mehmet Salih Yavuz
ae25eede48 fix(dashboard): Clear All filters now stages changes until Apply (#39778)
Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Co-authored-by: Enzo Martellucci <52219496+EnxDev@users.noreply.github.com>
(cherry picked from commit 245fffca79)
2026-05-20 11:50:04 -07:00
Mehmet Salih Yavuz
d5cd674740 fix(dashboard): row limit warning missing for non-table charts (#39911)
(cherry picked from commit 372b50e19d)
2026-05-20 11:45:48 -07:00
Mehmet Salih Yavuz
94cfefeaa6 fix(table): consolidate visual column options under Visual formatting section (#39856)
(cherry picked from commit 69fbbfd7ce)
2026-05-20 11:43:34 -07:00
Enzo Martellucci
debc7da93b fix(embedded-sdk): grant fullscreen and clipboard-write by default (#39943)
(cherry picked from commit d3784879c2)
2026-05-20 11:42:31 -07:00
Richard Fogaca Nienkotter
7344426aea fix(dashboard): match auto-refresh paused-dot outline to icon color (#39909)
(cherry picked from commit 8088c5d1de)
2026-05-20 11:42:02 -07:00
Joe Li
c9618cc73a fix(dashboard): restore top-level tab drop target for dashboards with content (#39423)
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
(cherry picked from commit d7fa9301cc)
2026-05-19 17:04:44 -07:00
jesperct
7672dce4aa fix(echarts): suppress phantom x-axis label at axis edge when no time grain (#39972)
(cherry picked from commit 5393fdfabf)
2026-05-19 15:12:17 -07:00
Vitor Avila
cf2f4c0438 fix(OAuth2): Re-query the OAuth2 token to avoid stale reference (#40071)
(cherry picked from commit d40a5cad5d)
2026-05-19 15:12:17 -07:00
Beto Dealmeida
eeedcaf47b fix: OAuth2 exception should be 403 (#40074)
(cherry picked from commit 736a51c13f)
2026-05-19 15:12:17 -07:00
Vitor Avila
1666be2b95 fix(OAuth2): Support OAuth2 exception with legacy endpoint (#39897)
(cherry picked from commit 3745e37182)
2026-05-19 15:12:17 -07:00
Vitor Avila
b900cc53b7 fix(GSheets OAuth2): Re-add UnauthenticatedError (#39785)
(cherry picked from commit 3f550f166f)
2026-05-19 15:12:17 -07:00
Vitor Avila
05e68c3187 fix(db oauth2): Improve OAuth2 flow (#39499)
(cherry picked from commit 191337e08d)
2026-05-19 14:06:43 -07:00
Beto Dealmeida
b968978ad5 fix(oauth2): silence lock acquisition errors on token refresh (#39463)
Co-authored-by: Beto Dealmeida <beto@preset.io>
(cherry picked from commit 5fb89b865d)
2026-05-19 14:03:39 -07:00
jesperct
3543be247f fix(AlertReportModal): TypeError when pasting text into the Alerts content form search field (#39298)
Co-authored-by: codeant-ai-for-open-source[bot] <244253245+codeant-ai-for-open-source[bot]@users.noreply.github.com>
(cherry picked from commit 6cebba49ca)
2026-05-18 22:12:43 -07:00
Maxime Beauchemin
fa2fbb2c00 fix(importexport): honor overwrite flag on /api/v1/assets/import (#39502)
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
(cherry picked from commit d90d3a2dea)
2026-05-18 14:05:41 -07:00
Maxime Beauchemin
0ba574d3f2 fix(sqllab): include template_params when overwriting a dataset (#39501)
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
(cherry picked from commit 6ee4d694bc)
2026-05-18 14:04:10 -07:00
Maxime Beauchemin
2e4b7accc4 fix(trino/presto): use equality for boolean filters to support computed columns (#39500)
(cherry picked from commit d023fe1703)
2026-05-18 14:03:47 -07:00
Jean Massucatto
3c56ad9bc8 fix(table): restore dropdown arrow visibility on paginated table page… (#39305)
(cherry picked from commit 9c3c8dcc0b)
2026-05-18 14:03:06 -07:00
Jean Massucatto
c2079726cd fix(chart): use categorical axis for bar charts with numeric x-axis (#39141)
Co-authored-by: Enzo Martellucci <52219496+EnxDev@users.noreply.github.com>
(cherry picked from commit 171414f165)
2026-05-18 14:02:18 -07:00
Maxime Beauchemin
91678ca2cd fix(import): import tags during CLI native asset import (#39495)
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
(cherry picked from commit c4cf03f899)
2026-05-18 14:01:44 -07:00
jesperct
271b3fecee fix(time-comparison): use chart row_limit instead of instance config in offset queries (#39490)
(cherry picked from commit d8dd2d99b3)
2026-05-18 10:58:47 -07:00
Gabriel Torres Ruiz
60f1d01f25 feat(mcp): add create_virtual_dataset tool to save SQL queries as datasets (#39279)
(cherry picked from commit 18d6feb499)
2026-05-18 10:56:33 -07:00
Amin Ghadersohi
dc5afb132a fix(mcp): use tiktoken for response-size-guard token estimation (#39912)
(cherry picked from commit 9b520312a1)
2026-05-18 10:14:31 -07:00
Amin Ghadersohi
d7fdb8a979 fix(mcp): validate column refs in generate_explore_link, update_chart_preview, and update_chart (#39797)
(cherry picked from commit 4a21a5365f)
(cherry picked from commit 7230edcb69869a342e80ca28d76ae1aec3612b80)
2026-05-17 21:37:15 -07:00
Richard Fogaca Nienkotter
4ad3053c7f fix(mcp): warn on invalid chart preview form data key (#39891)
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
(cherry picked from commit 9459bc7bf4)
2026-05-17 21:37:04 -07:00
Joe Li
b03b060533 fix(explore): add matrixify_enable guard to prevent stale validators on pre-revamp charts (#38765)
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
(cherry picked from commit 4b17ac2629)
2026-05-17 19:42:45 -07:00
jesperct
bd8801cd5f test(plugin-chart-echarts): regression guards for temporal x-axis labels on timeseries charts (#39208)
(cherry picked from commit 5b5f23d127)
2026-05-17 18:08:11 -07:00
Amin Ghadersohi
a4a85b09d1 fix(mcp): point get_dataset_info url to explore view instead of legacy tablemodelview edit (#39838)
(cherry picked from commit 673634f7af)
2026-05-16 23:09:18 -07:00
Amin Ghadersohi
53c2d1a31d feat(mcp): warn when execute_sql template_params used with templating disabled (#39858)
(cherry picked from commit 28239c18d4)
2026-05-16 22:39:51 -07:00
Enzo Martellucci
4bfaeb8f10 feat(mcp): add generate_bug_report tool with PII sanitization (#39595)
Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
(cherry picked from commit e4fe08ab9e)
2026-05-15 20:10:15 -07:00
Enzo Martellucci
fa9ecaa243 fix(mcp): fall back to title match when dashboard slug lookup misses (#39567)
Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
(cherry picked from commit e3e834bbf7)
2026-05-15 20:09:55 -07:00
Richard Fogaca Nienkotter
8ba59e7351 fix(mcp): sanitize read path output for LLM context (#39738)
(cherry picked from commit c2b9272f4c)
2026-05-15 19:37:31 -07:00
Amin Ghadersohi
9af36ae61c feat(mcp): add get_chart_sql tool and expose chart filters in get_chart_info (#38700)
(cherry picked from commit 6948e73ec7)
2026-05-15 19:26:05 -07:00
Kamil Gabryjelski
65a03dd29a fix(mcp): Support form_data_key without chart identifier for unsaved charts (#38628)
(cherry picked from commit af5e05db2e)
2026-05-15 19:19:06 -07:00
Amin Ghadersohi
0b37b8211b chore(mcp): extract shared chart helpers and ASCII rendering into separate modules (#39438)
(cherry picked from commit e6853894ab)
2026-05-15 14:31:59 -07:00
Gabriel Torres Ruiz
9b94dde8fe fix(mcp): prevent LLM from creating new dashboard instead of adding chart to existing one (#39353)
(cherry picked from commit c289731212)
2026-05-15 11:33:39 -07:00
Maxime Beauchemin
ef6c89dab5 fix(dataset-editor): fix SQL expression editor extra spaces and height expansion (#39248)
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
(cherry picked from commit 0aa8cace1b)
2026-05-15 10:49:01 -07:00
Maxime Beauchemin
9342573737 fix(tags): fix Bulk tag modal dropdown clipping and stale tag cache (#39210)
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
(cherry picked from commit d915e4f3ff)
2026-05-15 09:14:38 -07:00
Amin Ghadersohi
2e502a4019 fix(mcp): add description and certification fields to default list tool columns (#39017)
(cherry picked from commit 7be2acb2f3)
2026-05-14 21:02:44 -07:00
Joe Li
cc35510e3e fix(frontend): preserve absolute and protocol-relative URLs in ensureAppRoot (#38316)
Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
(cherry picked from commit 6c359733e1)
2026-05-14 16:49:37 -07:00
Elizabeth Thompson
ab722c903e fix(dashboard): prevent duplicate subdirectory prefix when toggling fullscreen (#39534)
Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
(cherry picked from commit 86ba63b072)
2026-05-14 16:49:16 -07:00
Mafi
084a2018e4 fix(plugin-chart-ag-grid-table): use display text for filter and sort on HTML cells (#39885)
Co-authored-by: Richard Fogaca Nienkotter <63572350+richardfogaca@users.noreply.github.com>
(cherry picked from commit 187bb416e7)
2026-05-14 16:48:24 -07:00
Amin Ghadersohi
052ed7cacc feat(mcp): add query_dataset tool to query datasets using semantic layer (#39727)
(cherry picked from commit f29d82b3b1)
2026-05-12 14:50:26 -07:00
Joe Li
d66d39fd1a feat(explore): add CSV/XLS download to drill-to-detail modal (#37109)
Adds CSV and XLSX download buttons plus an explicit reload control to the
drill-to-detail and drill-by modals. Adds a shared DownloadDropdown
component used by both modals.

Backport of #37109 from master to 6.0-release. Adapted for 6.0-release:
- All @apache-superset/core/* imports collapsed back to @superset-ui/core
  (the namespace refactor is master-only).
- canCopyClipboard from usePermissions is master-only; gated the new
  copy-disabled tooltip on canDownload instead until canCopyClipboard
  is ported.
- TabularDataRow type is master-only (utils/common is still .js); inlined
  as Record<string, unknown>[].
- The Explore pane Results/Samples tabs receive onDownloadCSV/
  onDownloadXLSX/onReload as optional props but the row-limit selector
  changes from master are intentionally omitted (master moved that area
  toward a different pattern that is not present on 6.0-release).
- Backend FRONTEND_CONF_KEYS gains ROW_LIMIT so the new drill download
  payload can read it from common.conf.

(cherry picked from commits fa31ec8, 967fa7b, 9ba8fda, b39419c, b74cc05,
15be40b, d8c8849, 6e1f03b, ca0e9cf, 76cdc1f)

Co-Authored-By: alex-poor <alex@karo.co.nz>
2026-05-11 11:34:59 -07:00
yousoph
012ea6dd59 fix(dashboards): sc 104687 chart name revert (#761) 2026-05-11 00:00:35 -07:00
Amin Ghadersohi
5d88ea00fa fix(mcp): rename _FastMCPValidationFilter to public symbol (#39722)
(cherry picked from commit 09c7e1fc08)
(cherry picked from commit bf1eb3d57e4d10a6c0a5ad15e8cab498c49b006f)
2026-05-08 15:46:58 -07:00
Enzo Martellucci
baf1ba6b09 fix(reports): keep body sized so standalone screenshots don't time out (#39944)
(cherry picked from commit b5186d1c65)
2026-05-08 14:28:16 -07:00
Amin Ghadersohi
9039d1460c fix(mcp): database filter columns, timeseries SQL, and unsaved chart datasource name (#39636)
(cherry picked from commit 7774ec7e3c)
2026-05-08 12:59:05 -07:00
Mehmet Salih Yavuz
c23bd3e8b9 fix(mcp): surface structured errors for generate_chart validation failures (#39484)
Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
(cherry picked from commit 3f28f5d012)
2026-05-08 12:55:26 -07:00
Beto Dealmeida
73db5fa5f4 feat(sqlglot): Vertica dialect (#39969)
(cherry picked from commit 4311a15eb2)
2026-05-08 11:49:22 -07:00
jesperct
6597bcecb8 fix(colors): reassign colliding series when dashboard locks shared dimension color (#39297)
Co-authored-by: codeant-ai-for-open-source[bot] <244253245+codeant-ai-for-open-source[bot]@users.noreply.github.com>
(cherry picked from commit 9e91ae8cff)
2026-05-08 11:48:54 -07:00
Vitor Avila
fe1ab92778 fix: OpenSearch dialect identifier delimiters (#39953)
(cherry picked from commit ad5e3170dd)
2026-05-08 11:39:36 -07:00
Maxime Beauchemin
b35fc63485 fix(ui): remove makeUrl() double-prefix bugs under subdirectory deployment (#39503)
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
Co-authored-by: Vitor Avila <96086495+Vitor-Avila@users.noreply.github.com>
(cherry picked from commit aa710672ed)
2026-05-08 11:39:36 -07:00
Amin Ghadersohi
327782d236 fix(mcp): classify user errors as WARNING, system errors as ERROR (#39634)
Co-authored-by: Elizabeth Thompson <eschutho@gmail.com>
Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
(cherry picked from commit 6947881ba7)
2026-05-08 11:39:36 -07:00
Mehmet Salih Yavuz
64c1286f42 fix(plugin-chart-handlebars): preserve template on explore open (#39442)
Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
(cherry picked from commit cf587caca7)
2026-05-08 11:39:36 -07:00
Enzo Martellucci
683d21580a fix(mcp): surface XSS sanitization in chart/dashboard names instead of silently stripping (#39491)
(cherry picked from commit d7941ccfec)
2026-05-08 11:39:36 -07:00
Enzo Martellucci
1e33a5d2ec fix(mcp): surface validation errors in generate_chart instead of empty response (#39522)
Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
(cherry picked from commit dae79a6cba)
2026-05-08 11:39:36 -07:00
Amin Ghadersohi
8b581d1345 chore(mcp): remove dead parse_request decorator and utility code (#39498)
(cherry picked from commit 29806780dc)
2026-05-08 11:39:36 -07:00
Kamil Gabryjelski
2f8440f496 fix(big-number): use correct default font size for subtitle/subheader (#39493)
(cherry picked from commit bf7ec853fa)
2026-05-08 11:39:36 -07:00
Amin Ghadersohi
d3cead1a69 fix(mcp): default XY chart x-axis to dataset primary datetime column (#39421)
Co-authored-by: codeant-ai-for-open-source[bot] <244253245+codeant-ai-for-open-source[bot]@users.noreply.github.com>
(cherry picked from commit 5cff657812)
2026-05-08 11:39:36 -07:00
Gabriel Torres Ruiz
d37b592d3b fix(mcp): support explicit query_mode in TableChartConfig (#39412)
(cherry picked from commit 2e0d482ccf)
2026-05-08 11:39:36 -07:00
Gabriel Torres Ruiz
ef826a9a50 fix(mcp): replace inputSchema with parameters_hint in search_tools results by default (#39411)
(cherry picked from commit e5b3a9c25d)
2026-05-08 11:39:36 -07:00
Amin Ghadersohi
51d4a98d0a fix(mcp): always push fresh app context per tool call to prevent g.user race (#39385)
(cherry picked from commit e7b9fb277e)
2026-05-08 11:39:35 -07:00
Amin Ghadersohi
3de3155838 fix(mcp): update instructions to use correct request wrapper and identifier params (#39392)
(cherry picked from commit 838ee870d0)
2026-05-08 11:39:35 -07:00
Amin Ghadersohi
0afcfc37a2 fix(mcp): batch fix for execute_sql crashes, null timestamps, and deck.gl errors (#38977)
(cherry picked from commit daefedebcd)
2026-05-08 11:39:35 -07:00
Kamil Gabryjelski
fc8f01c188 fix(explore): migrate from window.history to React Router history API (#38887)
(cherry picked from commit fc705d94e3)
2026-05-08 11:39:35 -07:00
Amin Ghadersohi
dcb5c21815 fix(mcp): honor target_tab parameter when adding charts to tabbed dashboards (#38409)
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
(cherry picked from commit 3bb9704cd5)
2026-05-07 23:13:20 -07:00
Amin Ghadersohi
a6b4623fe2 fix(mcp): improve default chart names with descriptive format (#38406)
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
(cherry picked from commit 0cfd760a36)
2026-05-07 23:06:14 -07:00
bdonovan1
351e08d487 fix(sqla): parenthesize calculated column expressions in WHERE clause (#39793)
Co-authored-by: Brian Donovan <briand@netflix.com>
Co-authored-by: Vitor Avila <96086495+Vitor-Avila@users.noreply.github.com>
(cherry picked from commit 5b5dd01028)
2026-05-07 11:15:30 -07:00
Alexandru Soare
0008a0606d fix(sql): quote identifiers in transpile_to_dialect to fix case-sensitive column filters (#39521)
(cherry picked from commit adfbbf1433)

Adapted: also lifts a small infrastructure slice from #37311 (commit
87bbd54d0a) — namely the source_engine
parameter and source_dialect logic on transpile_to_dialect, plus its
three accompanying unit tests. #37311 itself is a feature PR
(import-time virtual-dataset transpilation) that is not desired on
6.0-release; only the plumbing this fix relies on is included.

The source_engine plumbing is required because #39521's call site
passes source_engine=engine to make validate() idempotent on its
second pass: the second invocation re-parses already-transpiled output
that may contain dialect-specific quoting (e.g. MySQL/BigQuery
backticks) which the generic Dialect cannot handle. Without it, the
fix would introduce a new regression on those engines.

Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-06 14:42:18 -07:00
Enzo Martellucci
5b6a622c3f fix(reports): preserve urlParams in multi-tab report fan-out (#39884)
(cherry picked from commit 9aaa12c7d4)
2026-05-06 14:00:15 -07:00
Enzo Martellucci
b73900a89e fix(echarts): increase default axis title margins to prevent label overlap (#39447)
(cherry picked from commit 1903b919d6)
2026-05-06 12:00:38 -07:00
Beto Dealmeida
c520f6ec21 fix(clickhouse): prevent expensive table scan (#39867)
(cherry picked from commit 5325b87e73)
2026-05-06 11:49:41 -07:00
Joe Li
68050c4720 fix(theme): set color-scheme on html to fix dark mode scrollbars (#39704)
Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
(cherry picked from commit 7bee2afa8e)

Adapted: source path superset-frontend/packages/superset-core/src/theme/GlobalStyles.tsx
remapped to superset-frontend/packages/superset-ui-core/... — the superset-core
package rename (#38448) is not present on 6.0-release.
2026-05-06 11:47:57 -07:00
Geidō
8cb56acdc1 fix(dashboard): prevent duplicate screenshot downloads (#39525)
Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
(cherry picked from commit 4fcb3144ff)
2026-05-06 11:11:46 -07:00
Elizabeth Thompson
bae1342956 fix(mcp): clear stale thread-local DB session in sync tool wrapper (#39798)
Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
(cherry picked from commit 98eaaaa6d6)
2026-05-01 11:12:10 -07:00
Elizabeth Thompson
1e40128f6f fix(reports): poll for spinner absence instead of snapshotting loading elements (#39579)
Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
(cherry picked from commit f0d521dfc2)
2026-04-30 14:41:56 -07:00
Vitor Avila
4f5152b17d fix: Enforce per-user caching on legacy API endpoint (#39789)
(cherry picked from commit 86eb6176d1)
2026-04-30 14:09:24 -07:00
Brian Schreder
9cd3e54a17 feat(dashboard): pre-filter time grain (#38922)
(cherry picked from commit a222dab781)
2026-04-30 12:32:33 -07:00
Daniel Vaz Gaspar
bd720d57fb fix(mysql): fallback to pymysql when MySQLdb is not installed in get_datatype() (#39729)
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-30 11:02:59 -07:00
Elizabeth Thompson
be13d5001c feat(mcp): restore self-lookup via created_by_me flag (#39638)
Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
(cherry picked from commit 8d17c34068)
2026-04-30 11:02:59 -07:00
Richard Fogaca Nienkotter
04e7b705e2 fix(mcp): redact dashboard data model metadata (#39632)
(cherry picked from commit 57e563b177)
2026-04-30 11:02:59 -07:00
Richard Fogaca Nienkotter
8254f3b1f9 fix(mcp): protect data-model metadata from dashboard viewers (#39599)
Co-authored-by: Elizabeth Thompson <eschutho@gmail.com>
Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
(cherry picked from commit d79eb5842a)
2026-04-30 10:58:56 -07:00
Richard Fogaca Nienkotter
ac86bcc518 fix(mcp): hide user directory metadata from responses (#39576)
Co-authored-by: Elizabeth Thompson <eschutho@gmail.com>
Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
(cherry picked from commit 0d50fd676b)
2026-04-29 15:51:11 -07:00
Amin Ghadersohi
7599b3d92e fix(mcp): restore typed ChartConfig in tool schemas for LLM visibility (#39732)
(cherry picked from commit 4b42f82f13)
2026-04-29 11:59:50 -07:00
Daniel Vaz Gaspar
c202f7637e fix(docs): correct broken link to security documentation (#722)
The networking-settings page linked to /docs/security/securing_superset
which doesn't exist. The correct path is /docs/security/security.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-29 09:13:08 -07:00
Daniel Vaz Gaspar
be77acec4d chore(deps): bump pillow from 12.1.1 to 12.2.0 (#39590) 2026-04-29 09:12:55 -07:00
Joe Li
44c00a5173 refactor(chart): replace word cloud sort_by_series migration with code defaults (#39575)
Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
(cherry picked from commit 39f12786a2)
2026-04-29 09:12:55 -07:00
bdonovan1
be4991a286 fix(chart): word cloud secondary sort prevents Druid TopN optimization when sort_by_metric enabled (#39073)
Co-authored-by: Brian Donovan <briand@netflix.com>
(cherry picked from commit 78fb09695b)
2026-04-29 09:12:55 -07:00
Declan Zhao
1f0c4be92f feat(user_info): include Groups in user data payload when include_perms is True and show Groups on user_info page (#39450)
(cherry picked from commit 4ee3a0fc07)
2026-04-29 09:12:55 -07:00
Richard Fogaca Nienkotter
7af0c218a5 fix(dashboard): preserve dynamic group by column order (#39333)
(cherry picked from commit 0f417f0040)
2026-04-29 09:12:55 -07:00
Maxime Beauchemin
83d2cfb539 fix(charts): set g.form_data for metric() Jinja macro on GET chart data endpoint (#39347)
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
(cherry picked from commit 151d7d76da)
2026-04-29 09:12:55 -07:00
Amin Ghadersohi
ea91ae1d03 fix(mcp): sanitize chart config errors and accept field name aliases (#39606)
(cherry picked from commit ad20285dd6)
2026-04-29 09:12:55 -07:00
Amin Ghadersohi
5a6cd8f6db fix(mcp): resolve $ref by inlining definitions in compact schema (#39562)
(cherry picked from commit 012bf52c8c)
2026-04-29 09:12:55 -07:00
Maxime Beauchemin
ef887b9a8c fix(dashboard): apply full transitive ancestor chain for dependent filters (#39504)
(cherry picked from commit 18d89f25ce)
2026-04-29 09:12:55 -07:00
Damian Pendrak
aca0518fb3 fix(deckgl): UI fixes on deck.gl exclude layers (#38958)
(cherry picked from commit 230b25dd72)
2026-04-29 09:12:55 -07:00
Alexandru Soare
11f41f3e8a fix(mcp): Add defensive validator for ColumnInfo.is_nullable (#39365)
(cherry picked from commit 0857611a4e)
2026-04-29 09:12:55 -07:00
Geidō
68918706ea fix(dataset): calculated columns in virtual datasets fail when used as dynamic aggregation filter dimensions (#39004)
Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
(cherry picked from commit 51ea2c297d)
2026-04-29 09:12:55 -07:00
Mehmet Salih Yavuz
67c6956af1 feat(mcp): add a preview flow to mcp chart updates (#39383)
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
(cherry picked from commit 69f062b804)
2026-04-29 09:12:55 -07:00
Mehmet Salih Yavuz
dd3d543e09 fix(SelectFilter): auto clear search input (#39157)
(cherry picked from commit 7c76fd3d81)
2026-04-29 09:12:55 -07:00
Alexandru Soare
25f6866bdd feat(filters): Adding empty state for filter modal (#38909)
(cherry picked from commit 411f769896)
2026-04-29 09:12:55 -07:00
Alexandru Soare
b88bd7d301 fix(MCP): fix MCP logs (#39159)
(cherry picked from commit ffcc6e8b63)
2026-04-29 09:12:55 -07:00
Mike Bridge
db81802b8c fix(dashboard): allow filter list to scroll in filter config modal sidebar (#39203)
Co-authored-by: Mike Bridge <michael.bridge@ext.preset.io>
(cherry picked from commit 7a243d329e)
2026-04-29 09:12:55 -07:00
Daniel Vaz Gaspar
f6f60266fb chore(deps): bump yaml from 1.10.2 to 1.10.3 in /superset-frontend (#697)
Fixes Uncontrolled Recursion vulnerability in yaml 1.x.
Updates 3 nested entries (storybook, babel-plugin-macros, superset-ui-demo).

Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-29 09:12:55 -07:00
Daniel Vaz Gaspar
aff4204c05 chore(deps): bump prismjs from 1.29.0 to 1.30.0 in /superset-frontend (#698)
Fixes Arbitrary Code Injection vulnerability in prismjs.

Note: refractor 3.6.0 pins prismjs ~1.27.0 — that nested entry requires
a refractor upgrade to fix (addressed separately).

Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-29 09:12:55 -07:00
Daniel Vaz Gaspar
bbfbc92590 chore(deps): bump mdast-util-to-hast from 13.2.0 to 13.2.1 in /superset-frontend (#694)
Fixes Improperly Controlled Modification of Object Attributes vulnerability.

Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-29 09:12:55 -07:00
Daniel Vaz Gaspar
4026e52d27 chore(deps): bump jws from 4.0.0 to 4.0.1 in /superset-frontend (#695)
Fixes Improper Verification of Cryptographic Signature vulnerability.

Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-29 09:12:55 -07:00
Daniel Vaz Gaspar
2cb1ad79d7 chore(deps): bump ajv from 6.12.6 to 6.14.0 and 8.17.1 to 8.18.0 in /superset-frontend (#693)
Fixes ReDoS vulnerability (CVE) in ajv 8.17.1. Also bumps nested ajv 6.x
entries to 6.14.0 to match upstream.

Upstream: 577b965a60

Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-29 09:12:55 -07:00
Daniel Vaz Gaspar
eff77319e9 chore(deps-dev): bump copy-webpack-plugin to 14.0.0 and css-minimizer-webpack-plugin to 8.0.0 (#690)
Bumps copy-webpack-plugin 13.0.0→14.0.0 and css-minimizer-webpack-plugin
7.0.2→8.0.0 to resolve serialize-javascript 6.0.2→7.0.5 (CVE-2026-34043,
BDSA-2020-4569 CVSS 8.1, tagged Zero-click RCE).

Note: webpack's bundled terser-webpack-plugin still pulls serialize-javascript
6.0.2 as a transitive dep — requires webpack upgrade to fully resolve.

Cherry-picked from upstream apache/superset commits 361afff798, a2c23a2a58.

Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-29 09:12:55 -07:00
Daniel Vaz Gaspar
f024995424 fix(security): add UserSAMLModelView to USER_MODEL_VIEWS (#39568)
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-29 09:12:55 -07:00
Daniel Vaz Gaspar
2f2418258a chore(deps): bump js-yaml from 3.14.1 to 3.14.2 and 4.1.0 to 4.1.1 in /superset-frontend (#687)
Bumps root js-yaml 3.14.1→3.14.2 and nested js-yaml 4.1.0→4.1.1
to address prototype pollution vulnerability (CVE-2025-64718, CVSS 9.8).
Lerna's exact-pinned 4.1.0 entries are left as-is since they require
that exact version.

Cherry-picked from upstream apache/superset commit 362b5e3b89.

Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-29 09:12:55 -07:00
Vitor Avila
8e754a1fc9 fix(OpenSearch): OpenSearch dialect for sqlglot (#39538) 2026-04-29 09:12:55 -07:00
Daniel Vaz Gaspar
40724b2e2d chore(deps): bump lodash-es from 4.17.23 to 4.18.1 in /superset-frontend (#686)
Bumps lodash-es to ^4.18.1 in generator-superset to address prototype
pollution and arbitrary code injection vulnerabilities.

Cherry-picked from upstream apache/superset commit a9ced5c881.

Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-29 09:12:55 -07:00
Daniel Vaz Gaspar
806ee595df chore(deps): bump dompurify from 3.3.3 to 3.4.0 in /superset-frontend (#685)
Bumps dompurify to ^3.4.0 in superset-ui-core and legacy-preset-chart-nvd3
to address 3 known vulnerabilities (CVEs). Removes stale nested lock entries
so both workspace packages resolve to the hoisted 3.4.0.

Cherry-picked from upstream apache/superset commit 03725d1aaa.

Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-29 09:12:55 -07:00
Deadman
e436c6bf05 feat(api): Add filter_dashboard_id parameter to apply dashboard filters to chart/data endpoint (#38638)
Co-authored-by: Matthew Deadman <matthewdeadman@Matthews-MacBook-Pro-2.local>
Co-authored-by: Matthew Deadman <matthewdeadman@matthews-mbp-2.lan>
Co-authored-by: codeant-ai-for-open-source[bot] <244253245+codeant-ai-for-open-source[bot]@users.noreply.github.com>
2026-04-29 09:07:50 -07:00
Joe Li
5888707fc3 chore: package bumps (#39014) 2026-04-21 17:44:50 +01:00
dependabot[bot]
393047d201 chore(deps): bump pillow from 11.3.0 to 12.1.1 (#37935)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-04-21 17:01:20 +01:00
Joe Li
b1004af91d fix(dashboard): restore groupby in buildExistingColumnsSet and guard null customization config (#39416)
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-authored-by: Richard Fogaça <richardfogaca@gmail.com>
(cherry picked from commit d3de16c5f5)
2026-04-20 16:10:13 -07:00
dependabot[bot]
e85830bfea chore(deps): bump markdown-to-jsx from 9.7.13 to 9.7.15 in /superset-frontend (#39217)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
(cherry picked from commit 0d91f5e982)
2026-04-20 14:49:20 -07:00
dependabot[bot]
c7aa7946c0 chore(deps): bump markdown-to-jsx from 9.7.6 to 9.7.8 in /superset-frontend (#38507)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
(cherry picked from commit 5f99d613a0)
2026-04-20 14:49:20 -07:00
dependabot[bot]
08adb0bcdc chore(deps): bump markdown-to-jsx from 9.7.4 to 9.7.6 in /superset-frontend (#38225)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
(cherry picked from commit 4809903bb8)
2026-04-20 14:49:20 -07:00
dependabot[bot]
e7940d2df9 chore(deps): bump markdown-to-jsx from 9.7.3 to 9.7.4 in /superset-frontend (#37959)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
(cherry picked from commit ffd7f10320)
2026-04-20 14:49:20 -07:00
dependabot[bot]
3f929c643c chore(deps): bump markdown-to-jsx from 9.7.2 to 9.7.3 in /superset-frontend (#37730)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
(cherry picked from commit 1c35c3f6d0)
2026-04-20 14:49:20 -07:00
dependabot[bot]
c59576b288 chore(deps): bump markdown-to-jsx from 9.6.1 to 9.7.2 in /superset-frontend (#37691)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
(cherry picked from commit 27889651b3)
2026-04-20 14:49:20 -07:00
dependabot[bot]
0171080b2a chore(deps): bump markdown-to-jsx from 9.6.0 to 9.6.1 in /superset-frontend (#37420)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
(cherry picked from commit 09b5af5945)
2026-04-20 14:49:20 -07:00
dependabot[bot]
0df13f512a chore(deps): bump lodash from 4.17.23 to 4.18.1 in /superset-frontend (#39043)
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>
(cherry picked from commit c372f5980c)
2026-04-20 14:49:20 -07:00
dependabot[bot]
61e8aeb2d8 chore(deps): bump dompurify from 3.3.2 to 3.3.3 in /superset-frontend (#38592)
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>
(cherry picked from commit f4a57a13bc)
2026-04-20 14:49:20 -07:00
dependabot[bot]
212da53fa4 chore(deps): bump dompurify from 3.3.1 to 3.3.2 in /superset-frontend (#38455)
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@preset.io>
(cherry picked from commit d752be5f74)
2026-04-20 14:49:20 -07:00
Amin Ghadersohi
a618135e6d fix(mcp): handle OAuth-authenticated databases in execute_sql (#39166) 2026-04-20 10:52:44 +01:00
Amin Ghadersohi
d60ba0d93b fix(mcp): compress chart config schemas to reduce search_tools token usage (#39018) 2026-04-20 10:52:30 +01:00
Joe Li
99d1ba9bcc revert: remove accidental hideTab guard from 6.0-release (#672)
The hideTab guard was unintentionally brought into 6.0-release during
the cherry-pick of #38809 (conflict resolution picked up the master
version which included #38846). Since hideTab was never intended for
6.0-release, remove the guard to restore the pre-regression behavior
where tabs always render and activeTabs populates correctly.

Fixes: SC-104110

Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-17 18:34:20 -07:00
Joe Li
ea970d5e5b fix(deckgl): complete scatterplot categorical color fix (#658)
* fix(deckgl): complete cherry-pick of scatterplot categorical color fix (#35537)

The original cherry-pick of apache/superset#35537 was incomplete — it
included CategoricalDeckGLContainer.tsx and controlPanel.ts but missed
buildQuery.ts and transformProps.ts. Those files still referenced
`category_name` while the UI control (deckGLCategoricalColor) saves to
`dimension`, causing the categorical column to never be included in the
query and cat_color to never be populated on data points.

Renames category_name → dimension in buildQuery.ts and transformProps.ts
to match the control panel field name, completing the fix.

[sc-99443]

* fix: update tests and fix sliceId typo in CategoricalDeckGLContainer

Addresses code review feedback:

1. buildQuery.test.ts: rename category_name → dimension in test data
   to match the interface change, preventing test failure

2. transformProps.test.ts: rename category_name → dimension in test
   data and update test name to reflect the current field name

3. CategoricalDeckGLContainer.tsx line 71: fix fd.sliceId → fd.slice_id
   (snake_case). This code path in getCategories() was previously
   unreachable because fd.dimension was always falsy. Now that the
   fix makes it live, the colorFn seed must use the correct field
   to match the rendering path at line 182.

* test: add negative-case regression guards for dimension field

Adds two tests that would have caught the original category_name vs
dimension mismatch:

1. buildQuery: when dimension is absent, no extra column is added
   to the query (only spatial columns remain)

2. transformProps: when dimension is absent, cat_color is not set
   on scatter points (stays undefined)

These guard against future regressions where the form field name
diverges from what buildQuery/transformProps read.
2026-04-17 18:34:10 -07:00
Amin Ghadersohi
2dbc887fab fix(mcp): surface OAuth auth URL when execute_sql hits OAuth-protected database (#670)
The cherry-pick of apache/superset#39166 onto 6.0-release (commit
3cda699864) dropped the changes to
superset/mcp_service/sql_lab/tool/execute_sql.py. As a result,
OAuth2RedirectError raised during SQL execution falls through to
ExecuteSqlCore._handle_execution_error, which only calls str(e) and
drops the authorization URL stored in ex.error.extra["url"].

Clients see error_type=OAUTH2_REDIRECT but no URL in the error body
("You don't have permission to access the data."), so the end user
has no way to start the OAuth flow.

Fix: handle OAuth2RedirectError and OAuth2Error explicitly in
_handle_execution_error and use build_oauth2_redirect_message to
extract the URL from extra, mirroring the behavior already present on
master in execute_sql.py.

[sc-102144]
2026-04-16 18:32:34 -03:00
Joe Li
63f8c6203f Revert "fix(pivot-table): safely cast numeric strings to numbers for date formatting (#38953)"
This reverts commit ff7685de52.
2026-04-16 09:58:19 -07:00
dependabot[bot]
418c3ee49d chore(deps): bump cryptography from 44.0.3 to 46.0.5 (#37912)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
(cherry picked from commit dc995328a8)
2026-04-14 21:17:56 -07:00
Daniel Vaz Gaspar
114de77ee9 fix(deps): bump Python dependencies to fix 7 security vulnerabilities (#38447)
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
(cherry picked from commit 5c4bf0f6ea)
2026-04-14 12:14:07 -07:00
Alexandru Soare
2aee9517d2 fix(explore): Prevent error toast when navigating away from Explore page (#39065)
(cherry picked from commit 66a9e2e16e)
2026-04-14 09:48:00 -07:00
Alexandru Soare
10562ae344 fix(popup): Dropdown popup width doesn't match input width when tags collapse in oneLine mode (#39136)
(cherry picked from commit c2a35e2eea)
2026-04-14 09:43:57 -07:00
Alexandru Soare
e7107b0f5c fix(select): select all button cutoff (#39005)
(cherry picked from commit 5138aa2c11)
2026-04-14 09:43:52 -07:00
Alexandru Soare
ee2ae515bd fix(dashboard): Ensure screenshot downloads always generate fresh images/pdfs (#38880)
(cherry picked from commit 1462ac9282)
2026-04-13 16:39:24 -07:00
Amin Ghadersohi
b5fd6197fa feat(mcp): add get_chart_type_schema tool for on-demand schema discovery (#39142)
(cherry picked from commit 5f9fc31ae2)
2026-04-13 16:39:24 -07:00
Amin Ghadersohi
e4a0453b2e feat(mcp): add Big Number chart type support to MCP service (#38403)
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
(cherry picked from commit 4245720851)
2026-04-13 15:31:02 -07:00
Kamil Gabryjelski
476fc81fc7 fix(mcp): Created dashboard should be in draft state by default (#39011)
(cherry picked from commit 135e0f8099)
2026-04-13 15:30:50 -07:00
Geidō
782502cd14 fix(reports): log exception traceback in _get_csv_data (#39069)
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
(cherry picked from commit 25eea295f6)
2026-04-13 15:30:38 -07:00
Michael S. Molina
850d4b655b fix(echarts): fix stacked horizontal bar chart clipping and duplicate x-axis labels (#39012)
(cherry picked from commit 022342839a)
2026-04-13 10:16:50 -07:00
Michael S. Molina
3818e57fac fix(dataset-editor): improve modal layout and fix Settings tab horizontal scroll (#39009)
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
Co-authored-by: codeant-ai-for-open-source[bot] <244253245+codeant-ai-for-open-source[bot]@users.noreply.github.com>
(cherry picked from commit 38f0dc74f7)
2026-04-13 10:16:50 -07:00
Amin Ghadersohi
54f98293a4 fix(mcp): handle table chart raw mode in query builders and sanitize dashboard titles (#38990)
(cherry picked from commit 0bae05d4a9)
2026-04-13 10:16:50 -07:00
Amin Ghadersohi
36cf1845a4 fix(mcp): fix dashboard owners Pydantic crash and preserve chart preview filters (#38987)
(cherry picked from commit 190f1a59c5)
2026-04-13 10:16:50 -07:00
Michael S. Molina
02789bc723 fix(query): pass datasource table to template processor for schema-aware Jinja rendering (#38984)
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
(cherry picked from commit 94d8735d4b)
2026-04-13 10:16:50 -07:00
Amin Ghadersohi
81db93122f fix(mcp): handle stale SSL connections, heatmap duplicate labels, and session rollback (#39015)
(cherry picked from commit b3a402d936)
2026-04-13 10:16:50 -07:00
JUST.in DO IT
7965fc7862 fix(dashboard): remove opacity on filter dropdown (#39074)
(cherry picked from commit c7d175b842)
2026-04-13 10:16:50 -07:00
Amin Ghadersohi
2540109ccf fix(mcp): improve execute_sql response-too-large error to suggest limit parameter (#39003)
(cherry picked from commit 851bbeea48)
2026-04-13 10:16:50 -07:00
Amin Ghadersohi
98aecb6248 fix(mcp): compress chart config schemas to reduce search_tools token usage (#39018)
(cherry picked from commit bf9aff19b5)
2026-04-13 10:16:50 -07:00
SBIN2010
8f0d01ca96 feat: Add currencies controls in country map (#39016)
(cherry picked from commit b05764d070)
2026-04-13 10:16:50 -07:00
Amin Ghadersohi
c982f0eb05 fix(mcp): add dynamic response truncation for oversized info tool responses (#39107)
(cherry picked from commit 83ad1eca26)
2026-04-13 10:16:50 -07:00
Amin Ghadersohi
6f6fb14e1a fix(mcp): remove JWT ValueError g.user fallback in auth layer (#39106)
(cherry picked from commit 92747246fc)
2026-04-13 10:16:50 -07:00
Amin Ghadersohi
a93b0842bf fix(mcp): fix form_data null, dataset URL, ASCII preview, and chart rename (#39109)
(cherry picked from commit 7380a59ab8)
2026-04-13 10:16:50 -07:00
Maxime Beauchemin
1757ec5338 feat(mcp): add database connection listing and info tools (#39111)
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
Co-authored-by: Amin Ghadersohi <amin.ghadersohi@gmail.com>
(cherry picked from commit a62be684a0)
2026-04-13 10:16:49 -07:00
Sam Firke
5c64c2fe3e fix(SQL Lab): handle columns without names (#38986)
(cherry picked from commit 12eb40db01)
2026-04-13 10:16:49 -07:00
Maxime Beauchemin
aae9d4a251 fix(explore): handle boolean false values correctly in control rendering (#39172)
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
(cherry picked from commit 6ba9096870)
2026-04-13 10:16:49 -07:00
Amin Ghadersohi
e9c4d537b3 fix(mcp): resolve null fields in list_datasets, list_databases, and save_sql_query (#39206)
(cherry picked from commit 1bde6f3bfd)
2026-04-13 10:16:49 -07:00
Maxime Beauchemin
954bb4c4b7 fix(frontend): fix loading spinner positioning in Save modal and filters panel (#39205)
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
Co-authored-by: yousoph <sophieyou12@gmail.com>
(cherry picked from commit d63308ca37)
2026-04-13 10:16:49 -07:00
Maxime Beauchemin
14f676e036 fix(ace-editor): style bracket matching to blend with theme (#39182)
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
(cherry picked from commit b8b2bdedf9)
2026-04-13 10:16:49 -07:00
Luiz Otavio
ffb66ad5bf fix: add template_processor so Jinja gets rendered before SQLGlot parse (#39207)
(cherry picked from commit 2e80f2a473)
2026-04-13 10:16:49 -07:00
Maxime Beauchemin
938e6db229 fix(sqllab): use monospace font for SQL in database error messages (#39181)
Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
(cherry picked from commit ed659958f3)
2026-04-13 10:16:49 -07:00
Maxime Beauchemin
2ddfb4bd54 fix(plugin-chart-handlebars): improve CSS sanitization tooltip and hide when not needed (#39180)
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
(cherry picked from commit 36de05fe36)
2026-04-13 10:16:49 -07:00
Maxime Beauchemin
f06a0c22ff fix(sqllab): demote "Save as new" button from primary to secondary (#39179)
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
(cherry picked from commit 140f0001f2)
2026-04-13 10:16:49 -07:00
Michael S. Molina
41e19876c3 fix(explore): Unnecessary scroll bars appearing on charts in Explore (#39160)
Co-authored-by: Đỗ Trọng Hải <41283691+hainenber@users.noreply.github.com>
(cherry picked from commit 3a3a6536b7)
2026-04-13 10:16:49 -07:00
Alexandru Soare
31e2b33b03 fix(filterReports): _generate_native_filter() crashes on null/empty filterValues (#38954)
(cherry picked from commit 4f695e1b4d)
2026-04-13 10:16:49 -07:00
Maxime Beauchemin
2113e9d28e fix(explore): constrain Edit Dataset modal height to prevent footer cutoff (#39211)
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
(cherry picked from commit bad5a35fce)
2026-04-13 10:16:49 -07:00
Mehmet Salih Yavuz
7e63aac9ff fix(AlertsReports): untie filters from alerts reports tabs flag (#38722)
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
(cherry picked from commit 5263abdc60)
2026-04-13 10:16:49 -07:00
Enzo Martellucci
12b4dc4a4a fix(reports): escape SQL LIKE wildcards in find_by_extra_metadata (#38738)
Co-authored-by: Mehmet Salih Yavuz <salih.yavuz@proton.me>
(cherry picked from commit 6649f35a0d)
2026-04-13 10:16:49 -07:00
Amin Ghadersohi
3cda699864 fix(mcp): handle OAuth-authenticated databases in execute_sql (#39166)
(cherry picked from commit 68067d7f44)
2026-04-13 10:16:49 -07:00
Vitor Avila
ece8b8ff5b fix: Drill to Detail for Embedded (#39214)
Co-authored-by: Maxime Beauchemin <maximebeauchemin@gmail.com>
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
(cherry picked from commit c7955a38ef)
2026-04-13 10:16:49 -07:00
Shaitan
8ffa2216b6 fix(sql-lab): apply access check in SqlExecutionResultsCommand (#38952)
Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
(cherry picked from commit f49310b8ff)
2026-04-13 10:16:49 -07:00
Amin Ghadersohi
af097d7857 fix(mcp): wire up compact schema serialization for search_tools results (#39229)
(cherry picked from commit e17cf3c808)
2026-04-13 10:16:49 -07:00
Amin Ghadersohi
4f7e78d088 fix(mcp): strip json_metadata and position_json from get_dashboard_info response (#39101)
(cherry picked from commit 680cef0ee0)
2026-04-13 10:16:48 -07:00
Joe Li
ff7685de52 fix(pivot-table): safely cast numeric strings to numbers for date formatting (#38953)
Manual adaptation of apache/superset#38953 for 6.0-release where
TableRenderers is .jsx (not .tsx). Adds convertToNumberIfNumeric()
helper and wraps dateFormatters calls to handle numeric timestamp
strings correctly.

(cherry picked from commit f1cd1ae710)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-13 10:16:48 -07:00
Kamil Gabryjelski
98cee6eafa feat(mcp): support saved metrics from datasets in chart generation (#38955)
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
(cherry picked from commit 15bab227bb)
2026-04-13 10:16:48 -07:00
Amin Ghadersohi
3cde64f1ed fix(mcp): validate dataset exists in generate_explore_link before generating URL (#38951)
(cherry picked from commit 89f7e5e7ba)
2026-04-13 10:16:48 -07:00
Amin Ghadersohi
636bd9c77a fix(mcp): prevent PendingRollbackError from poisoned sessions after SSL drops (#38934)
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
(cherry picked from commit d331a043a3)
2026-04-13 10:16:48 -07:00
Amin Ghadersohi
3a82b4d931 fix(mcp): prevent GRID_ID injection into ROOT_ID on tabbed dashboards (#38890)
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
(cherry picked from commit aa1a69555b)
2026-04-13 10:16:48 -07:00
Amin Ghadersohi
90830f2780 fix(mcp): remove @parse_request decorator for cleaner tool schemas (#38918)
(cherry picked from commit d1903afc69)
2026-04-13 10:16:48 -07:00
Amin Ghadersohi
799f18a626 fix(mcp): prevent stale g.user from causing user impersonation across tool calls (#38747)
(cherry picked from commit 38fdfb4ca2)
2026-04-13 10:16:48 -07:00
Gabriel Torres Ruiz
4f06107761 fix(ag-grid): jpeg export of ag-grid tables (#38781)
(cherry picked from commit 69c8eef78e)
2026-04-13 10:16:48 -07:00
Maxime Beauchemin
9554280795 refactor(plugins): replace react-icons with antd icons, remove 83MB dependency (#39184)
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
(cherry picked from commit 63cceb6a79)
2026-04-13 10:16:48 -07:00
venkateshwaran shanmugham
ae1387ed41 fix: implement native browser fullscreen for dashboard charts (#38819)
Signed-off-by: Venkateshwaran Shanmugham <venkateshwaracholan@gmail.com>
Co-authored-by: Michael S. Molina <70410625+michael-s-molina@users.noreply.github.com>
Co-authored-by: Mehmet Salih Yavuz <salih.yavuz@proton.me>
Co-authored-by: Richard Fogaça <richardfogaca@gmail.com>
Co-authored-by: Richard Fogaca Nienkotter <63572350+richardfogaca@users.noreply.github.com>
(cherry picked from commit e39dd1afce)
2026-04-13 10:16:48 -07:00
Enzo Martellucci
deb64d2595 fix(table): cross-filtering breaks after renaming column labels via Custom SQL (#38858)
(cherry picked from commit aba7e6dae4)
2026-04-13 10:16:48 -07:00
Maxime Beauchemin
a2176c30a8 fix(explore): add left-indentation to control panel hierarchy (#39177)
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
(cherry picked from commit a64609f4f3)
2026-04-13 10:16:48 -07:00
Mike Bridge
65660bfa99 fix(dashboard): Vertical filter bar gradient is extending past the filter bar area (#39204)
Co-authored-by: Mike Bridge <michael.bridge@ext.preset.io>
(cherry picked from commit 8bcc90c766)
2026-04-13 10:16:48 -07:00
Richard Fogaca Nienkotter
78507c97de fix(echarts): prevent tooltip crash during dashboard auto-refresh (#39277)
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
(cherry picked from commit e9911fbac4)
2026-04-13 10:16:48 -07:00
Đỗ Trọng Hải
d4e59a205c fix(AlteredSliceTag): not display undefined filter value for chart change record (#38883)
Signed-off-by: hainenber <dotronghai96@gmail.com>
(cherry picked from commit 11f2140c37)
2026-04-13 10:16:48 -07:00
Daniel Vaz Gaspar
aa41f8d48c feat: role/user CRUD events and login/logout tracking in the action log (#39121)
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-10 15:25:19 -07:00
Elizabeth Thompson
b36300201f fix(reports): propagate PlaywrightTimeout so execution transitions to ERROR state (#39176)
Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
(cherry picked from commit 587fe4af63)
2026-04-09 14:57:58 -07:00
Michael S. Molina
45d2a35ad2 chore(deps): Upgrade sqlglot from 27.15.2 to 28.10.0 (#37841)
(cherry picked from commit c41942a38a)
2026-04-09 14:57:58 -07:00
Enzo Martellucci
8768c51e02 fix(charts): add X Axis Number Format control for numeric X-axis columns (#38809)
Co-authored-by: codeant-ai-for-open-source[bot] <244253245+codeant-ai-for-open-source[bot]@users.noreply.github.com>
(cherry picked from commit e0a0a22542)
2026-04-09 14:57:58 -07:00
Enzo Martellucci
e7efb67f3e fix(echarts): adapt y-axis ticks and padding for compact timeseries charts (#38673)
(cherry picked from commit f0b20dc445)
2026-04-08 14:54:39 -07:00
Enzo Martellucci
c87cefbb56 fix(select): ensure filter dropdown matches input field width (#38886)
(cherry picked from commit 41d401a879)
2026-04-08 14:43:15 -07:00
Amin Ghadersohi
1a819812f8 fix(mcp): enforce MAX_PAGE_SIZE limit on list tools to prevent oversized responses (#38959)
(cherry picked from commit 2c9cf0bd55)
2026-04-01 10:50:34 -07:00
Amin Ghadersohi
e2f50f7dab fix(mcp): resolve chatbot tool call flakiness with URL and instruction fixes (#38532)
(cherry picked from commit 6ef4794778)
2026-03-30 15:57:47 -07:00
Richard Fogaca Nienkotter
c5d51ed944 fix(dataset): add missing currency_code_column to DatasetPostSchema (#38853)
(cherry picked from commit 9c288d66b5)
2026-03-30 14:39:16 -07:00
Mehmet Salih Yavuz
ed6e4566c3 fix(Timeseries): dedup x axis labels (#38733)
(cherry picked from commit f832f9b0d5)
2026-03-30 11:41:38 -07:00
Enzo Martellucci
0c2d789a89 fix(reports): PUT with empty recipients list does not persist the change (#38711)
(cherry picked from commit 40387d5daa)
2026-03-27 15:14:01 -07:00
Alexandru Soare
acfc93c893 refactor(passwords): accept passwords via YAML file (#38059)
Co-authored-by: Mehmet Salih Yavuz <salih.yavuz@proton.me>
(cherry picked from commit 5c782397bb)
2026-03-27 15:13:41 -07:00
Alexandru Soare
680c0afd59 fix(report): raise warning when filter type not recognized (#38676)
(cherry picked from commit 37c4a36fdb)
2026-03-27 14:53:36 -07:00
Mehmet Salih Yavuz
d0448991bd fix(MainNav): display all menu items on smaller screens (#38732)
(cherry picked from commit fdcb942f3c)
2026-03-27 14:53:36 -07:00
Beto Dealmeida
13cf98e91f feat: prevent Postgres connection to Redshift (#38693)
(cherry picked from commit 5d9f53ff0c)
2026-03-27 14:53:36 -07:00
Amin Ghadersohi
86d52d1d97 fix(mcp): add try/except around DAO re-fetch to handle session errors in multi-tenant (#38859)
(cherry picked from commit 6dc3d7ad9f)
2026-03-27 14:53:36 -07:00
Beto Dealmeida
31df4f273b fix: type probing (#38889)
(cherry picked from commit 8983edea66)
2026-03-27 14:53:36 -07:00
Enzo Martellucci
6eb942c014 fix(sqla): parenthesize extras where/having clauses in query generation (#38183)
Co-authored-by: Diego Pucci <diegopucci.me@gmail.com>
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
(cherry picked from commit c7a1f57487)
2026-03-27 14:53:36 -07:00
Alexandru Soare
c6bb30de1d fix(keys): Unsafe dict access in get_native_filters_params() crashes execution (#38272)
(cherry picked from commit 89d1b80ce7)
2026-03-27 09:31:34 -07:00
Joe Li
fe5094c350 fix(models): correct TabState.latest_query_id column type to match FK target (#38837)
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
(cherry picked from commit 4b26f8c712)
2026-03-26 13:34:31 -07:00
Amin Ghadersohi
6df97feb98 feat(api-keys): add API key authentication via FAB SecurityManager (#37973)
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
Co-authored-by: Kamil Gabryjelski <kamil.gabryjelski@gmail.com>
(cherry picked from commit 811dcb3715)
2026-03-25 19:24:50 -07:00
Amin Ghadersohi
45ec9f2cb5 fix(mcp): add permission checks to generate_dashboard and update_chart tools (#38845)
(cherry picked from commit 23a5e95884)
2026-03-25 19:24:50 -07:00
Kamil Gabryjelski
87559699d7 fix(mcp): detect unknown chart config fields and suggest correct ones (#38848)
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
(cherry picked from commit 16f5a2a41a)
2026-03-25 19:24:50 -07:00
Amin Ghadersohi
8dd1088c34 fix(mcp): fix generate_dashboard cross-session SQLAlchemy error (#38827)
(cherry picked from commit 09594b32f9)
2026-03-25 19:24:50 -07:00
Amin Ghadersohi
59dcbe1850 fix(mcp): convert adhoc filters to QueryObject format before query compilation (#38774)
(cherry picked from commit 44c2c765ae)
2026-03-25 19:24:50 -07:00
Amin Ghadersohi
5f6604b874 fix(mcp): normalize call_tool proxy arguments to prevent encoding TypeError (#38775)
(cherry picked from commit 0d5721910e)
2026-03-25 19:24:50 -07:00
Kamil Gabryjelski
29285560cc fix(mcp): fix detached Slice instance error in chart/dashboard serialization (#38767)
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
(cherry picked from commit 1d72480c17)
2026-03-25 19:24:50 -07:00
Amin Ghadersohi
3cc27a8b06 feat(mcp): Add tool annotations for MCP directory compliance (#38641)
(cherry picked from commit 1c8224f4c6)
2026-03-25 19:24:50 -07:00
Amin Ghadersohi
f17351c5e2 feat(mcp): add Handlebars chart type support to MCP service (#38402)
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
(cherry picked from commit c596df9294)
2026-03-25 19:24:50 -07:00
Kamil Gabryjelski
847143d9e6 fix(mcp): Chart schema followups - DRY extraction, template fix, alias and test gaps (#38746)
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
(cherry picked from commit 211f29b723)
2026-03-25 19:24:50 -07:00
Kamil Gabryjelski
3411a435c8 fix: Add aliases and groupby list to chart schemas (#38740)
(cherry picked from commit 14b1b456e1)
2026-03-25 19:24:50 -07:00
Kamil Gabryjelski
fd16e3b870 fix: Row limit support for chart mcp tools (#38717)
(cherry picked from commit a314e5b35e)
2026-03-25 19:24:49 -07:00
Amin Ghadersohi
d33cd49e84 fix(mcp): expose individual tool parameters when MCP_PARSE_REQUEST_ENABLED=False (#38714)
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
(cherry picked from commit e02ca8871d)
2026-03-25 19:24:49 -07:00
Kamil Gabryjelski
f6c23692bf fix(mcp): use correct permission class for save_sql_query tool (#38764)
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
(cherry picked from commit 5e5c05362c)
2026-03-25 15:36:06 -07:00
Amin Ghadersohi
2c36fb6860 fix(mcp): return all statement results for multi-statement SQL queries (#38388)
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
(cherry picked from commit b6c3b3ef46)
2026-03-25 11:16:24 -07:00
Mehmet Salih Yavuz
7ab7e501f0 fix(Matrixify): readd matrixify_enable guard missing (#38759)
(cherry picked from commit 7222327992)
2026-03-24 15:43:40 -07:00
Amin Ghadersohi
4a04cefef4 fix(mcp): prevent encoding errors and fix tool bugs on MCP client transports (#38786)
(cherry picked from commit ed3c5280a9)
2026-03-24 15:39:33 -07:00
Amin Ghadersohi
b56d6a4628 fix(mcp): fix dashboard slug null and execute_sql encoding error (#38710)
(cherry picked from commit c2a21915ff)
2026-03-24 15:29:07 -07:00
Alexandru Soare
8440925b24 fix(button): Theming configurations for button elements is not consistent (#38604)
(cherry picked from commit 82a74c88aa)
2026-03-24 13:01:40 -07:00
Mehmet Salih Yavuz
a23acd9253 feat(theming): Custom label tokens (#38679)
(cherry picked from commit 86a260e39b)
2026-03-24 13:01:40 -07:00
Enzo Martellucci
ae46f586bc fix(reports): validate nativeFilters on report create/update and deactivate on dashboard filter deletion (#38715)
(cherry picked from commit e088979fbe)
2026-03-23 16:49:13 -07:00
Mehmet Salih Yavuz
76a81dd59b fix(AlertsReports): validate anchor_list is a list (#38723)
(cherry picked from commit 100ad7d9ee)
2026-03-23 16:49:08 -07:00
Enzo Martellucci
5b82fb60f6 feat(themes): add JSON formatting to theme modal editor (#38739)
(cherry picked from commit cbb2b2f3c2)
2026-03-23 16:46:51 -07:00
Mehmet Salih Yavuz
051fbd386a chore(Reports): remove unused and incorrect field (#38724)
(cherry picked from commit 44179199ba)
2026-03-23 16:44:22 -07:00
Levis Mbote
b557a467db fix(explore): display actual data type instead of "column" in column tooltip (#38554)
(cherry picked from commit e67bc5bee5)
2026-03-23 16:44:17 -07:00
Mehmet Salih Yavuz
5f54389754 fix(DropdownContainer): add fresh to avoid stale data (#38702)
(cherry picked from commit cc34d19d24)
2026-03-23 15:31:16 -07:00
Amin Ghadersohi
f0c542dcd7 feat(mcp): add BM25 tool search transform to reduce initial context size (#38562)
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
(cherry picked from commit 97a66f7a64)
2026-03-22 11:44:35 -07:00
Joe Li
654bcd6b3f fix(dashboard): use inline theme data to prevent 403 for non-admin users (#38384)
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
(cherry picked from commit 03de7e1ec6)
2026-03-20 11:36:09 -07:00
Levis Mbote
5e1a89644e fix(dashboard): correct tab underline width for newly added dashboard tabs. (#38524)
(cherry picked from commit ee233d16d6)
2026-03-20 10:39:55 -07:00
Levis Mbote
7a7840ec83 fix(theme): ensure colorLink follows colorPrimary when not explicitly set (#38517)
(cherry picked from commit 65f13f773e)
2026-03-20 09:34:35 -07:00
Amin Ghadersohi
cc76855755 fix(mcp): replace uuid with url and changed_on_humanized in default list columns (#38566)
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
(cherry picked from commit fc156d0014)
2026-03-20 09:34:35 -07:00
Levis Mbote
7848a8c33e fix(theme): persist local theme id so "Local" tag remains after navigation (#38527)
(cherry picked from commit b754f2d173)
2026-03-20 09:34:35 -07:00
Levis Mbote
46deb48d1b fix(timeseries-table): enable proper column sorting in timeseries-table chart (#38579)
(cherry picked from commit 6b9dd23e3a)
2026-03-20 09:34:34 -07:00
Alexandru Soare
fd9e0c076c fix(firebolt): Firebolt SQL entered with EXCLUDE is rewritten to EXCEPT (#38742)
(cherry picked from commit 6465450b64)
2026-03-20 09:34:34 -07:00
Amin Ghadersohi
289602d160 fix(mcp): fix crashes in list tools, dataset info, chart preview, and add owner/favorite filters (#38277)
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
(cherry picked from commit d5cf77cd60)
2026-03-20 09:34:34 -07:00
Amin Ghadersohi
a26f76fcb0 feat(mcp): add save_sql_query tool for SQL Lab saved queries (#38414)
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
(cherry picked from commit 48220fb33f)
2026-03-18 12:56:12 -07:00
Beto Dealmeida
a8d7481c92 feat: apply RLS conservatively (#38683)
(cherry picked from commit a854fa60a2)
2026-03-17 09:23:50 -07:00
Amin Ghadersohi
43567f2172 fix(mcp): wrap LoggingMiddleware.on_message event_logger in try/except (#38560)
(cherry picked from commit 6d7cfac8b2)
2026-03-17 09:17:35 -07:00
Joe Li
29416f48cc fix(embedded): default to light theme instead of system preference (#38644)
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
(cherry picked from commit aa5adb0fce)
2026-03-16 09:48:08 -07:00
Mehmet Salih Yavuz
d896d48f24 feat(matrixify): Revamp control panel (#38519)
(cherry picked from commit ed622e254a)
2026-03-14 09:50:36 -07:00
Enzo Martellucci
26ff84377f fix(explore/dashboard): fix CSV/Excel downloads for legacy chart types (#38513)
Co-authored-by: Diego Pucci <diegopucci.me@gmail.com>
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
Co-authored-by: codeant-ai-for-open-source[bot] <244253245+codeant-ai-for-open-source[bot]@users.noreply.github.com>
(cherry picked from commit 9516d1a306)
2026-03-14 09:09:55 -07:00
Amin Ghadersohi
48de355979 feat(mcp): add extra_form_data param to get_chart_data for dashboard filters (#38531)
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
(cherry picked from commit f458e2d484)
2026-03-13 23:20:24 -07:00
Amin Ghadersohi
f6e2c7c730 fix(mcp): extract role names as strings in UserInfo serialization (#38612)
(cherry picked from commit d4f1f8db00)
2026-03-13 23:19:42 -07:00
Amin Ghadersohi
c0d21dc0c2 feat(mcp): implement RBAC permission checking for MCP tools (#38407)
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
(cherry picked from commit 7943af359c)
2026-03-13 23:11:32 -07:00
Amin Ghadersohi
c9ee19fdad feat(mcp): auto-generate dashboard title from chart names when omitted (#38410)
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
(cherry picked from commit eb77452857)
2026-03-13 16:24:39 -07:00
Alexandru Soare
e6a3262c2d fix(matrixify): Matrixify to not override slice id (#38515)
Co-authored-by: Evan Rusackas <evan@preset.io>
(cherry picked from commit 27197faba9)
2026-03-13 15:22:37 -07:00
Rafael Benitez
b5906a36c1 fix(world-map): add fallback fill color when colorFn returns null (#38602)
Adapted from master commit ba7271b to WorldMap.js (JS) on 6.0-release.

- Accepted: null-safe extents, fallback colorFn, ?? theme.colorBorder
- Accepted: 3 new tests adapted for 6.0-release test structure
- Rejected: TypeScript conversion (file is .js on this branch)

(cherry picked from commit ba7271b4d8)

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-13 15:21:36 -07:00
Alexandru Soare
3954ace76c fix(timeshiftcolor): Time shift color to match the original color (#38473)
(cherry picked from commit f6106cd26f)
2026-03-13 15:11:20 -07:00
Enzo Martellucci
de8ff8e27a fix(deckgl): polygon chart not rendering when boundary column contains nested geometry JSON (#38595)
(cherry picked from commit 32a64d02c7)
2026-03-13 15:06:26 -07:00
Mehmet Salih Yavuz
8d24548b52 fix: add parent_slice_id for multilayer charts to embed (#38243)
(cherry picked from commit 95f61bd223)
2026-03-13 12:07:18 -07:00
Mehmet Salih Yavuz
c383a3bbe7 fix: add embedded box sizing rule for layout (#38351)
Co-authored-by: Joe Li <joe@preset.io>
(cherry picked from commit 7f476a79b3)
2026-03-13 08:59:09 -07:00
Daniel Gaspar
5fed167e11 feat(auth): add SAML login support to frontend (#38606)
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-13 11:06:32 +00:00
Alexandru Soare
7f7eb90dc4 fix(bug): Error when adding a filter using custom sql (#38246)
(cherry picked from commit 880cab58c3)
2026-03-12 21:41:17 -07:00
Yuriy Krasilnikov
3857fae5ab fix(embedded): prevent double RLS application in virtual datasets (#37395)
(cherry picked from commit 09e9c6a522)
2026-03-12 14:54:59 -07:00
Amin Ghadersohi
2011d7497b fix(charts): set reasonable default y-axis title margin to prevent label overlap (#38389)
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
(cherry picked from commit fe7f220c21)
2026-03-11 18:10:33 -07:00
Amin Ghadersohi
089e39defa feat(mcp): add horizontal bar chart orientation support to generate_chart (#38390)
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
(cherry picked from commit 6342c4f338)
2026-03-11 18:09:45 -07:00
Amin Ghadersohi
182f086a61 fix(mcp): add guardrails to prevent LLM artifact generation (#38391)
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
(cherry picked from commit 5fa70bdbd8)
2026-03-11 17:45:22 -07:00
Amin Ghadersohi
6be0727015 fix(mcp): add missing command.validate() to MCP chart data tools (#38521)
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
(cherry picked from commit 2a876e8b86)
2026-03-11 17:42:08 -07:00
Đỗ Trọng Hải
410418e616 fix(plugin/cal-heatmap): properly color tooltip's text for both dark/light theme (#38010)
(cherry picked from commit a30492f55e)
2026-03-11 17:33:29 -07:00
yousoph
e2ac463087 fix(dashboard): prevent Apply button from disabling when required filters are auto-applied (#38479)
Co-authored-by: Kamil Gabryjelski <kamil.gabryjelski@gmail.com>
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
(cherry picked from commit 62cebc8a0e)
2026-03-11 16:17:57 -07:00
Amin Ghadersohi
0e42f18746 fix(mcp): improve prompts, resources, and instructions clarity (#37389)
(cherry picked from commit 1ee14c5993)
2026-03-11 15:24:58 -07:00
Vitor Avila
397433786d feat: support for import/export masked_encrypted_extra (frontend) (#38078)
(cherry picked from commit d9a91f99db)
2026-03-11 14:34:43 -07:00
Vitor Avila
88480c5ea4 feat: support for import/export masked_encrypted_extra (backend) (#38077)
(cherry picked from commit 8c9efe5659)
2026-03-11 14:05:09 -07:00
Vitor Avila
780607c1e6 feat: Labels for encrypted fields (#38075)
(cherry picked from commit 228b598409)
2026-03-10 21:52:41 -07:00
Amin Ghadersohi
9fcb6f401d feat(mcp): add pie, pivot table, and mixed timeseries chart creation support (#38375) 2026-03-10 16:55:32 -07:00
Amin Ghadersohi
d1a4352a82 feat(mcp): add compile check to validate chart queries before returning (#38408)
(cherry picked from commit 3609cd9544)
2026-03-10 16:45:43 -07:00
Amin Ghadersohi
bce38fcda3 fix(mcp): suppress third-party deprecation warnings from client responses (#38401)
(cherry picked from commit 7d2efd8c1a)
2026-03-10 14:55:20 -07:00
Amin Ghadersohi
4f55739936 fix(mcp): use broad Exception in outermost tool-level handlers (#38254)
(cherry picked from commit abf0b7cf4b)
2026-03-10 14:37:48 -07:00
Amin Ghadersohi
3df5816400 fix(mcp): add eager loading to get_info tools to prevent N+1 query timeouts (#38129)
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
(cherry picked from commit c54b21ef98)
2026-03-10 14:04:30 -07:00
Amin Ghadersohi
55802de557 feat(mcp): support unsaved state in Explore and Dashboard tools (#37183)
Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
(cherry picked from commit 3084907931)
2026-03-10 13:52:17 -07:00
Amin Ghadersohi
7e0535eade fix(mcp): fix dashboard chart placement with proper COLUMN layout and tab support (#37970)
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
(cherry picked from commit 6e94a6c21a)
2026-03-10 13:24:18 -07:00
Gabriel Torres Ruiz
ee5b64fcef fix(dashboard): ensure clear all respects required filter validation (#37681)
(cherry picked from commit bc99b710bd)
2026-03-09 13:51:45 -07:00
yousoph
a10ca5614d fix(charts): revert: improve negative stacked bar label positioning and accessibility (#37405) (#38484)
Co-authored-by: Kamil Gabryjelski <kamil.gabryjelski@gmail.com>
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
(cherry picked from commit 9983e255f8)
2026-03-09 11:57:14 -07:00
yousoph
ac059ef879 fix(heatmap): correct tooltip display to show axis values instead of indices (#38487)
(cherry picked from commit 577654cd02)
2026-03-09 11:52:12 -07:00
Gabriel Torres Ruiz
2077439423 fix(theme): prevent background color flash on page load (#38399)
(cherry picked from commit dca41f9a7b)
2026-03-09 10:32:11 -07:00
Beto Dealmeida
443fa69686 feat(alerts/reports): external URL warning (#35021)
(cherry picked from commit 03ad1789f0)
2026-03-09 10:17:13 -07:00
Vitor Avila
3895c754ba feat: Support OAuth2 single-use refresh tokens (#38364)
(cherry picked from commit fa34609952)
2026-03-09 10:16:32 -07:00
Amin Ghadersohi
f5d6a73da1 fix: silence deprecation warnings causing noisy production logs (#38128)
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
(cherry picked from commit 01d5245cd2)
2026-03-08 20:31:51 -07:00
Amin Ghadersohi
80bb47a15b fix(screenshots): downgrade screenshot timeout logs from ERROR to WARNING (#38130)
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
(cherry picked from commit 985c3d12a1)
2026-03-08 20:31:20 -07:00
Amin Ghadersohi
a4d7521a40 feat(mcp): add user roles to MCP response and permission-aware instructions (#38367)
(cherry picked from commit db7665c0bc)
2026-03-08 20:28:09 -07:00
Vitor Avila
ecafff68a6 fix: more DB OAuth2 fixes (#37398)
(cherry picked from commit 6043e7e7e3)
2026-03-08 18:00:26 -07:00
Antonio Rivero
660efb4f66 chore(playwright): Using warning for timeouts (#38441)
(cherry picked from commit 20cc3345d8)
2026-03-07 23:06:57 -08:00
Enzo Martellucci
aef92c5dd7 fix(dashboard): fix multiple drag-and-drop and edit mode issues (#37891)
(cherry picked from commit f0416eff78)
2026-03-07 18:25:57 -08:00
Alexandru Soare
340789892d fix(bugs): fixing bugs for world map chart (#38030)
(cherry picked from commit 7743183401)
2026-03-07 18:25:31 -08:00
Joe Li
5f13ad81e8 fix(echarts): adaptive formatting labels (#38017) 2026-03-06 09:42:22 -08:00
Joe Li
d44c5ebc08 fix(alerts): fix error toast when editing report with saved tab selection (#38198)
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
(cherry picked from commit 939e4194c6)
2026-03-06 09:42:22 -08:00
Alexandru Soare
25fb18c5e8 fix(componentParent): Newly created tabs don't show up in Scoping tab (#37807)
(cherry picked from commit 761cee2d85)
2026-03-04 22:21:01 -08:00
Enzo Martellucci
60c56a5125 fix(explore): prevent TypeError when chart dimension returns empty string (#38276)
(cherry picked from commit 016417f793)
2026-03-04 21:34:31 -08:00
Mehmet Salih Yavuz
da4d0c3399 fix(Select): select all buttons to inherit font (#38313)
(cherry picked from commit ac2914486f)
2026-03-04 21:30:34 -08:00
Vitor Avila
98f6db917f chore: Support specifying app_root via superset_config.py (#38284)
(cherry picked from commit 6fe69fc81c)
2026-03-04 21:27:27 -08:00
Joe Li
d3250bc7ea fix(reports): validate database field on PUT report schedule (#38084)
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
(cherry picked from commit 5eb35a4795)
2026-03-04 21:26:19 -08:00
Amin Ghadersohi
457a3407c2 feat(mcp): add detailed JWT error messages and default auth factory fallback (#37972)
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
(cherry picked from commit ae99b19422)
2026-03-01 10:39:16 -08:00
Amin Ghadersohi
813cc00f95 feat(mcp): add response size guard to prevent oversized responses (#37200)
(cherry picked from commit cc1128a404)
2026-03-01 10:38:47 -08:00
Amin Ghadersohi
aceb2de180 fix(mcp): normalize column names to fix time series filter prompt issue (#37187)
Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
(cherry picked from commit a1312a86e8)
2026-03-01 10:38:14 -08:00
Amin Ghadersohi
3cbb208b4f feat(mcp): dynamic feature availability via menus and feature flags (#37964)
(cherry picked from commit 1cd35bb102)
2026-03-01 10:37:51 -08:00
Kamil Gabryjelski
26271c8c35 fix: Warning toasts when user drops folder item outside of dnd context (#38304)
(cherry picked from commit 1d141b2948)
2026-03-01 00:54:22 -08:00
Mehmet Salih Yavuz
0376806615 fix(Dataset Folders): improve search-collapse (#38188)
(cherry picked from commit 7f280f5de9)
2026-03-01 00:54:22 -08:00
Joe Li
78b159169b feat(folders-editor): drag entire folder block as single unit (#38122)
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
(cherry picked from commit 63f1d9eb98)
2026-03-01 00:54:22 -08:00
Joe Li
4fc7e43ad2 fix(folders): remove stale column/metric refs from folders on delete (#38302)
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
(cherry picked from commit 5e890a8cf7)
2026-03-01 00:54:22 -08:00
Kamil Gabryjelski
ceeac7039e fix(folders): expand collapsed folders on Select All and add selection counter (#38270)
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
(cherry picked from commit 11dfda11d3)
2026-02-28 23:43:42 -08:00
Kamil Gabryjelski
9b8e501b1d feat: Persist default folders location when repositioned in folders editor (#38105)
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
(cherry picked from commit 660357c76b)
2026-02-28 23:33:54 -08:00
Kamil Gabryjelski
d0ebe47868 fix: Badge count in folders editor (#38100)
(cherry picked from commit 86c8fa5cd7)
2026-02-28 23:33:54 -08:00
Kamil Gabryjelski
95e2575cf6 fix(dataset-modal): show warning toast when dropping items outside folders (#38257)
Co-authored-by: Claude Opus 4 <noreply@anthropic.com>
(cherry picked from commit 2ecfb3406c)
2026-02-28 23:33:54 -08:00
Kamil Gabryjelski
7079a12938 fix(dataset-modal): prevent shift-select from selecting search-hidden items (#38255)
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
(cherry picked from commit 7f72c747f5)
2026-02-28 23:33:54 -08:00
Kamil Gabryjelski
fc53623c6d fix(dataset-modal): fix drag overlay shift caused by modal transform containing block (#38274)
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
(cherry picked from commit 8a053bbe07)
2026-02-28 23:33:54 -08:00
Kamil Gabryjelski
f8b0c37d45 fix(dataset-modal): include nested folders when dragging all their children (#38275)
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
(cherry picked from commit 0827ec3811)
2026-02-28 23:33:54 -08:00
Kamil Gabryjelski
56973bf76a fix(button): use colorLink token for link-style buttons (#38121)
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
(cherry picked from commit 7937246575)
2026-02-28 23:33:54 -08:00
Kamil Gabryjelski
44ea2dddc2 fix(dataset-modal): fix folders tab scrollbar by establishing proper flex chain (#38123)
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
(cherry picked from commit e30a9caba5)
2026-02-28 23:33:54 -08:00
Kamil Gabryjelski
a3fbf90cd3 fix: Warning toast copy in folders editor (#38099)
(cherry picked from commit e12140beb6)
2026-02-28 23:33:54 -08:00
Kamil Gabryjelski
fd9ebdecae fix: Search in folders editor with verbose names (#38101)
(cherry picked from commit f049d3e34a)
2026-02-28 23:33:54 -08:00
Kamil Gabryjelski
c645c6b6cd feat: Larger folder drag area in folders editor (#38102)
(cherry picked from commit b7a3224f04)
2026-02-28 23:33:54 -08:00
Kamil Gabryjelski
d8d7e674c2 feat: Dataset folders editor (#36239)
(cherry picked from commit a6a66ca483)
(cherry picked from commit 3cb90d7cc093d03403598397e6aadd69be47e9b0)
2026-02-28 23:33:54 -08:00
Joe Li
05f564754f feat: auto refresh dashboard (#37459) 2026-02-28 23:33:54 -08:00
Joe Li
44579ae8a6 fix(crud): reorder table actions + improve react memoization + improve hooks (#37897)
(cherry picked from commit 6fdaa8e9b3)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-28 23:33:54 -08:00
Joe Li
eb63e4b74f feat(embedded): add feature flag to disable logout button in embedded contexts (#37537)
(cherry picked from commit e06427d1ef)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-28 23:33:54 -08:00
Joe Li
c0932f79a3 fix(mcp): validate chart datasets and narrow exception handlers (#38119)
(cherry picked from commit eef4d95c22)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-28 23:33:53 -08:00
Joe Li
e272c186f6 perf(security): cache RLS filters per-request to avoid repeated DB queries (#38110)
(cherry picked from commit 3e3c9686de)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-28 23:33:53 -08:00
Joe Li
ee9e19b9bf feat(oauth2): add PKCE support for database OAuth2 authentication (#37067)
(cherry picked from commit 5d20dc57d7)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-28 23:33:53 -08:00
Joe Li
6490cfbd6b feat(themes): add enhanced validation and error handling with fallback mechanisms (#37378)
(cherry picked from commit 0d5ddb3674)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-28 11:23:27 -08:00
Joe Li
a003dceff4 perf(dashboard): skip thumbnail_url computing on single dashboard endpoint (#38015)
(cherry picked from commit f5a5a804e2)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-28 11:23:23 -08:00
Joe Li
6995d7c2ad fix(alerts): show friendly filter names in report edit modal (#38054)
(cherry picked from commit 6a61baf5be)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-28 11:23:12 -08:00
Joe Li
f656b90e71 fix(chart): make chart error banners non-dismissible (#38014)
(cherry picked from commit c1c012fb52)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-27 20:29:24 -08:00
Joe Li
3fb3694b21 fix(save-chart): fix info icon alignment in save chart modal (#37708)
(cherry picked from commit bbafae5f62)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-27 20:29:24 -08:00
Vitor Avila
1d8d25e5ba fix: Allow non-owners to fave/unfave charts (#38095) 2026-02-27 20:29:24 -08:00
JUST.in DO IT
960da53633 fix(world-map): reset hover highlight on mouse out (#37716)
Co-authored-by: Arunodoy18 <arunodoy630@gmail.com>
(cherry picked from commit a04571fa20)
2026-02-27 20:29:21 -08:00
Enzo Martellucci
5f6cc13b53 fix(alert-modal): show the add filter button on firefox (#38093)
(cherry picked from commit 26053a8b5d)
2026-02-27 20:28:50 -08:00
Enzo Martellucci
87b936f93b fix(chart): prevent x-axis date labels from disappearing when rotated (#37755)
(cherry picked from commit 5a134170a0)
2026-02-27 20:28:50 -08:00
Mehmet Salih Yavuz
0d155c4b64 fix(GAQ): don't use async queries when cache timeout is -1 (#38089)
(cherry picked from commit e4a7cd30c3)
2026-02-27 20:28:50 -08:00
Vitor Avila
9f8c2964a2 fix: Include app_root in next param (#37942)
(cherry picked from commit 9ec56f5f02)
2026-02-27 20:28:50 -08:00
Felipe López
2df50370e3 fix(charts): missing globalOpacity prop with mapbox (#37168)
(cherry picked from commit 319a131ec9)
2026-02-27 20:28:49 -08:00
Felipe López
a1ce95b14d fix(charts): numerical column for the Point Radius field in mapbox (#36962)
(cherry picked from commit 675a4c7a66)
2026-02-27 20:28:47 -08:00
Elizabeth Thompson
a1a4ca0238 refactor(db): use Dialect instead of Engine in select_star to avoid SSH tunnels (#35540)
Co-authored-by: Claude <noreply@anthropic.com>
(cherry picked from commit e9b494163b)
2026-02-23 11:39:59 -08:00
Gabriel Torres Ruiz
221bbd6d41 test(native-filters): add unit tests for requiredFirst filter logic (#37640)
(cherry picked from commit 75fa474fce)
2026-02-23 11:38:24 -08:00
yousoph
922857f0eb fix(dashboard): update chart customization UI text to "Display controls" (#37462)
Co-authored-by: Maxime Beauchemin <maximebeauchemin@gmail.com>
Co-authored-by: Claude <noreply@anthropic.com>
(cherry picked from commit 5fa6925522)
2026-02-23 11:20:12 -08:00
Joe Li
055f4cd081 fix(chart-customizations): support migration of dynamic group by (#37176)
(cherry picked from commit 1a77e17179)

Adapted:
- hydrate.ts → hydrate.js: removed TypeScript type assertions, kept JS-compatible imports

Accepted:
- Legacy chart customization format migration (migrateChartCustomization utility)
- LEGACY_GROUPBY_PREFIX support in filter state management
- Dashboard.ts type additions for legacy format
- 490-line test suite

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-23 11:19:54 -08:00
Damian Pendrak
2e29c23f9c fix(deckgl): remove dataset field from Deck.gl Layer Visibility Display controls (#37611)
(cherry picked from commit 22ac5e02b6)
2026-02-23 11:18:56 -08:00
Damian Pendrak
256ad817bc feat(dashboard): chart customizations modal and plugins (#36062) 2026-02-23 11:16:59 -08:00
Amin Ghadersohi
1b876feaff fix(mcp): Remove unsupported thumbnail/preview URLs and internal fields from MCP schemas (#38109)
(cherry picked from commit 2a3567d2f1)
2026-02-23 09:08:27 -05:00
Damian Pendrak
b1fd97f969 feat(matrixify): add single metric constraint (#37169)
(cherry picked from commit 5a777c0f45)
2026-02-21 16:13:33 -08:00
Jamile Celento
f4d50fc98f fix(echarts): formula annotations not rendering with dataset-level columns label (#37522)
(cherry picked from commit 080f629ea2)
2026-02-21 10:06:13 -08:00
Jean Massucatto
d70c5d61cd fix(echarts-timeseries-combined-labels): combine annotation labels for events at same timestamp (#37164)
(cherry picked from commit 0c0d915391)
2026-02-20 21:58:03 -08:00
Vanessa Giannoni
719d9d827e feat(charts): improve negative stacked bar label positioning and accessibility (#37405)
(cherry picked from commit 77148277b9)
2026-02-20 21:55:32 -08:00
Luis Sánchez
d1e9baba41 feat(timeseries): remove stream style for bar charts (#37532)
(cherry picked from commit 5f0001affc)
2026-02-20 21:45:53 -08:00
Vanessa Giannoni
b327c5843a fix(table): preserve time grain aggregation when temporal column casing changes (#37893)
(cherry picked from commit f4acce5727)
2026-02-20 21:45:53 -08:00
Jamile Celento
d9f78dd754 fix(native-filters): respect filter scope in nested tabs by prioritizing chartsInScope (#37139)
Cherry-pick from 23fec55e3d.

- Accepted: Core fix to prioritize chartsInScope over rootPath in
  useIsFilterInScope; state.test.ts with 6 nested tab tests;
  getChartIdsInFilterScope.test.ts with comprehensive scope tests
- Adapted: Removed isChartCustomization branch (not present on
  6.0-release); kept 6.0-release types (Filter | Divider)
- Rejected: isChartCustomization logic (depends on chart customizations
  feature not present on 6.0-release)

(cherry picked from commit 23fec55e3d)
2026-02-20 21:45:50 -08:00
Enzo Martellucci
9c1daeac81 fix(charts): improve error display for failed charts in dashboards (#37939)
Cherry-pick frontend changes only from b565128fe7.

- Accepted: Chart.tsx fix to show backend API errors instead of infinite
  loading spinner when datasource is placeholder; ErrorContainer wrapper
  for scrollable error display; Chart.test.tsx with test coverage
- Adapted: Removed chartRenderingSucceeded from test mock (not in
  6.0-release Actions type)
- Rejected: gsheets.py needs_oauth2() changes (method doesn't exist on
  6.0-release); test_gsheets.py test for missing method

(cherry picked from commit b565128fe7)
2026-02-20 21:23:07 -08:00
Amin Ghadersohi
292242cf70 fix(thumbnails): stabilize digest by sorting datasources and charts (#38079)
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
(cherry picked from commit 1ecff6fe5c)
2026-02-20 15:49:44 -08:00
Amin Ghadersohi
9bff2932df feat(mcp): add LIKE, ILIKE, IN, NOT IN filter operators to MCP chart tools (#38071)
(cherry picked from commit 9f8b212ccc)
2026-02-20 10:24:27 -05:00
Alexandru Soare
599b4e9299 fix(scatter): Fix ad-hoc metric for pointsize (#37669)
(cherry picked from commit 2b411b32ba)
2026-02-18 11:17:21 -08:00
Enzo Martellucci
5be6d41457 fix: Prevent table rows from overlapping pagination in table view (#37174)
Co-authored-by: Diego Pucci <diegopucci.me@gmail.com>
(cherry picked from commit c59d0a73d4)
2026-02-18 11:07:52 -08:00
Alexandru Soare
d8b5d45979 fix(sql): fix sql suggestions (#37699)
(cherry picked from commit ae8d671fea)
2026-02-18 11:00:06 -08:00
Mehmet Salih Yavuz
a1c96bbce5 fix(explore): Don't show unsaved changes modal on new charts (#37714)
(cherry picked from commit 69c679be20)
2026-02-18 10:16:25 -08:00
Enzo Martellucci
1758b00d70 fix(native-filters): align refresh icon with default value field (#37802)
(cherry picked from commit b012b63e5b)
2026-02-18 10:15:41 -08:00
Mehmet Salih Yavuz
5e9eae0c10 fix(charts): Force refresh uses async mode when GAQ is enabled (#37845)
(cherry picked from commit 7b21979fa3)
2026-02-18 10:15:03 -08:00
Amin Ghadersohi
553d5938a8 feat(mcp): expose current user identity in get_instance_info and add created_by_fk filter (#37967)
(cherry picked from commit f7218e7a19)
2026-02-18 09:17:02 -08:00
Amin Ghadersohi
465537c249 fix(mcp): use last data-bearing statement in execute_sql response (#37968)
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-18 09:16:49 -08:00
Amin Ghadersohi
77b32b3f82 fix(mcp): handle more chart types in get_chart_data fallback query construction (#37969)
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
(cherry picked from commit 5cd829f13c)
2026-02-18 09:16:30 -08:00
dependabot[bot]
b100abb338 chore(deps): bump react-error-boundary from 6.0.0 to 6.1.0 in /superset-frontend (#37206)
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>
(cherry picked from commit 6453980d8d)
2026-02-17 23:43:59 -08:00
dependabot[bot]
4f7fca981d chore(deps): bump markdown-to-jsx from 7.7.4 to 9.6.0 in /superset-frontend (#37354)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
(cherry picked from commit 7c69ec7f24)
2026-02-17 23:16:08 -08:00
dependabot[bot]
8b5a649d66 chore(deps): bump min-document from 2.19.0 to 2.19.1 in /superset-frontend (#36046)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
(cherry picked from commit e915d7d1d0)
2026-02-17 23:11:28 -08:00
dependabot[bot]
92a6c6fb7c chore(deps): bump brace-expansion in /superset-frontend (#34744)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
(cherry picked from commit 691926f0e1)
2026-02-17 23:07:44 -08:00
dependabot[bot]
079ffaedd4 chore(deps): bump qs from 6.14.1 to 6.14.2 in /superset-frontend (#37936)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
(cherry picked from commit 5300f65a74)
2026-02-17 23:04:03 -08:00
dependabot[bot]
698059b524 chore(deps): update dompurify requirement from ^3.3.0 to ^3.3.1 in /superset-frontend/plugins/legacy-preset-chart-nvd3 (#36471)
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.5 <noreply@anthropic.com>
(cherry picked from commit 955953b467)
2026-02-17 23:04:03 -08:00
dependabot[bot]
f3a4870b76 chore(deps): update dompurify requirement from ^3.2.4 to ^3.3.1 in /superset-frontend/packages/superset-ui-core (#36513)
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>
(cherry picked from commit 46e21c3003)
2026-02-17 23:04:03 -08:00
dependabot[bot]
0b61bf224e chore(deps): bump lodash-es from 4.17.22 to 4.17.23 in /superset-frontend (#37347)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
(cherry picked from commit b576665f9a)
2026-02-17 23:04:03 -08:00
dependabot[bot]
17c7b27891 chore(deps): bump lodash from 4.17.21 to 4.17.23 in /superset-frontend (#37348)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
(cherry picked from commit 3a811d680d)
2026-02-17 23:04:03 -08:00
Nancy Chauhan
60e6fa2672 fix(security): update jspdf to 4.0.0 to address CVE-2025-68428 (#37553)
(cherry picked from commit 8fd3401077)
2026-02-17 23:04:03 -08:00
Đỗ Trọng Hải
eef2d9781c feat(deps): significant npm audit fix to trim off inadvertently runtime dep from upstream libraries (#37220)
Signed-off-by: hainenber <dotronghai96@gmail.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
(cherry picked from commit a1d65c7529)
2026-02-17 23:04:03 -08:00
Jamile Celento
a3f3c0c3c6 fix(native-filters): update TEMPORAL_RANGE filter subject when Time Column filter is applied (#36985)
(cherry picked from commit 2dfc770b0f)
2026-02-17 23:04:03 -08:00
Vanessa Giannoni
21188ccb01 fix(timeseries): restore ECharts tooltip after closing drill menu (#37284)
(cherry picked from commit 6b7b23ed78)
2026-02-17 23:04:03 -08:00
Jonathan Alberth Quispe Fuentes
d8b89468ad fix(roles): optimize user fetching and resolve N+1 query issue (#37235)
(cherry picked from commit 88ce1425e2)
2026-02-17 23:04:03 -08:00
Luis Sánchez
843fd75eaa fix(FiltersBadge): world map wont show filter icon after refresh page (#37260)
(cherry picked from commit 88a14f2ba0)
2026-02-17 23:03:42 -08:00
Jamile Celento
c60cafe755 fix(table): only show increase/decrease color options when time comparison enabled (#37362)
(cherry picked from commit 3347b9bf6c)
2026-02-12 19:29:08 -08:00
Vinícius Borges Alencar
8bb9e9629a refactor(charts): filter saved metrics by key and label (#37136)
(cherry picked from commit 82d6076804)
2026-02-12 16:11:20 -08:00
Vanessa Giannoni
0dca0294d8 fix(explore): remove extra spacing when Advanced Analytics section is hidden (#37456)
(cherry picked from commit 7110fc9cde)
2026-02-12 16:11:20 -08:00
Jean Massucatto
5f6a07e2dd fix(select): prevent bulk action buttons from being cut off in filters (#37453)
(cherry picked from commit abf90de0ca)
2026-02-12 16:11:19 -08:00
Amin Ghadersohi
7535753e05 fix(mcp): Add database_name as valid filter column for list_datasets (#37865)
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
(cherry picked from commit 3f64c25712)
2026-02-12 16:11:19 -08:00
Amin Ghadersohi
94e4cb68e1 feat(mcp): add event_logger instrumentation to MCP tools (#37859)
(cherry picked from commit 4dfece9ee5)
(cherry picked from commit adfe91c9167c2d5cbd98d0a28f6e945d3fb81244)
2026-02-12 16:11:19 -08:00
Kamil Gabryjelski
82d8293f86 fix: Unreachable drop zones within tabs in dashbboard editor (#37904) 2026-02-12 16:05:31 -08:00
Kamil Gabryjelski
0f36680719 perf: fix N+1 query in Slice.datasource property (#37899) 2026-02-11 19:04:16 +01:00
Kamil Gabryjelski
cd65864b15 perf: fix N+1 query in chart list API when thumbnail_url is requested (#37895) 2026-02-11 19:03:57 +01:00
Kamil Gabryjelski
d6616410d5 fix(native-filters): Filters with select first value not restored correctly from url (#37855) 2026-02-10 16:22:49 -08:00
Amin Ghadersohi
b5cbbe86b7 fix(security): Add table blocklist and fix MCP SQL validation bypass (#37411)
(cherry picked from commit 15b3c96f8e)
2026-02-10 16:21:57 -08:00
Kamil Gabryjelski
a219f6cbe6 fix: Vertical lines in the middle of Treemap categories (#37808) 2026-02-10 16:37:27 +01:00
Alexandru Soare
4f0680c32e fix(dashboard): Prevent fatal error when database connection is unavailable (#37576)
(cherry picked from commit 9ea5ded988)
2026-02-09 09:27:25 -08:00
Amin Ghadersohi
f8dd7d8783 fix(mcp): remove html.escape to fix ampersand display in chart titles (#37186)
Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
(cherry picked from commit 01ac966b83)
2026-02-06 09:30:51 -05:00
Amin Ghadersohi
93d371a94c fix(mcp): include x_axis column in query context for series charts with group_by (#37639)
(cherry picked from commit 47db185e3b)
2026-02-05 14:03:19 -05:00
Amin Ghadersohi
9756610269 fix(mcp): prevent DATE_TRUNC on non-temporal columns in chart generation (#37433)
(cherry picked from commit 4147d877fc)
2026-02-05 12:40:57 -05:00
Amin Ghadersohi
d6f0b845fd fix(mcp): treat runtime validation warnings as informational, not errors (#37214)
Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
(cherry picked from commit a9dca529c1)
2026-02-05 12:40:35 -05:00
Amin Ghadersohi
837d25579a chore(mcp): remove unused MCP_SERVICE feature flag (#37618)
(cherry picked from commit 5914e83436)
2026-02-03 10:35:32 -05:00
Amin Ghadersohi
cc7fb79596 feat(mcp): add config toggle to disable parse_request decorator (#37617)
Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
(cherry picked from commit 0b5e4dd5de)
2026-02-03 10:34:58 -05:00
Beto Dealmeida
86caadf861 feat: Add PWA file handler for CSV/XLS/Parquet uploads (#36191)
Cherry-picked from master (f2b6c39) with adaptations:
- Changed import path from @apache-superset/core to @superset-ui/core
- Removed ReactRefreshWebpackPlugin (not in 6.0-release)
- Fixed button type attribute in test file

Co-authored-by: Beto Dealmeida <roberto@dealmeida.net>
Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-02 21:25:32 -08:00
Luis Sánchez
357ab7597e chore(charts): echarts left padding too big and automation of title (#36993)
(cherry picked from commit 91131d5996)
2026-02-02 21:25:32 -08:00
Ramiro Aquino Romero
4688b7aa8c fix: charts row limit warning is missing for server (#37112)
(cherry picked from commit f60c82e4a6)
2026-02-02 16:29:25 -08:00
Jonathan Alberth Quispe Fuentes
f0214b1818 fix: Heatmap does not render correctly on normalization (#37208)
(cherry picked from commit 4a7cdccdad)
2026-02-02 16:29:12 -08:00
Jean Massucatto
32386ecfc5 fix(redshift): normalize table names to lowercase for CSV uploads (#37019)
(cherry picked from commit e8363cf606)
2026-02-02 16:28:49 -08:00
Pedro Rodrigues
eda6cad773 fix: big number drill to details column data (#37068)
(cherry picked from commit 2cce0308d4)
2026-02-02 16:12:23 -08:00
Felipe López
854538c858 fix(charts): Table chart shows an error on row limit (#37218) 2026-02-02 16:06:19 -08:00
Beto Dealmeida
4c1e8cc51c feat: AWS Cross-Account IAM Authentication for Aurora (#37585)
(cherry picked from commit 05c2354997)
2026-02-02 16:04:01 -08:00
Alejandro Solares
738919ea5e chore(deps): bump dependencies to address security vulnerabilities (#37552)
(cherry picked from commit d6029f5c8a)
2026-02-02 15:59:05 -08:00
Jean Massucatto
01c4300f17 fix(themes): correct action icons size and restore missing tooltips (#37409)
(cherry picked from commit 5a99588f57)
2026-02-02 15:57:41 -08:00
Jean Massucatto
d006b5fda7 fix(deckgl): change deck gl Path default line width unit to meters (#37248) 2026-02-02 15:42:38 -08:00
Mehmet Salih Yavuz
44ef12f5dc fix(Multilayer): preserve dashboard context for embedded (#37495)
(cherry picked from commit 1501af06fe)
2026-02-02 10:23:58 -08:00
Ramiro Aquino Romero
3ff12813c1 feat(deckgl): add auto zoom option in deck gl multi layer (#37221) 2026-01-31 11:31:22 -08:00
Gabriel Torres Ruiz
b0b044e653 fix(dashboard): catch DatasourceNotFound in get_datasets to prevent 404 (#37503)
(cherry picked from commit 06e4f4ff4c)
2026-01-30 12:17:18 -08:00
Amin Ghadersohi
ffb0519e74 fix(mcp): tools not listed when JWT auth is enabled (#37377)
(cherry picked from commit 6663709a23)
2026-01-30 13:55:50 -05:00
yousoph
cf3ab011e3 fix(matrixify): Rename Tag from 'Matrixify' to 'Matrixified' (#37402)
Co-authored-by: Claude <noreply@anthropic.com>
(cherry picked from commit bb5be6cf54)
2026-01-29 22:08:22 -08:00
Ramiro Aquino Romero
f10b2f8584 fix: display correct icon for Multi Chart in quick switcher (#37256) 2026-01-29 11:17:58 -08:00
Kamil Gabryjelski
be20fe9db7 fix(mcp): Instance not bound to session error (#37548) 2026-01-29 11:17:58 -08:00
Vanessa Giannoni
887aca2f1b fix(ag-grid-table): preserve time grain aggregation when temporal column casing changes (#36990)
(cherry picked from commit a7e7cc30a9)
2026-01-29 11:17:58 -08:00
Vanessa Giannoni
0fb95136b8 feat(dashboard): show dataset column labels in View as table (#37140)
(cherry picked from commit 2ec3aaaeea)
2026-01-29 11:17:58 -08:00
Reynold Morel
381950124e fix(dashboard): resolve dropdown popup positioning (#36963)
(cherry picked from commit 43653d1fa1)
2026-01-29 11:17:58 -08:00
Vanessa Giannoni
01495d485d fix(dashboard-filters): prevent clearing all filters when editing a native filter (#37253)
(cherry picked from commit ec2509a8b4)
2026-01-29 11:17:58 -08:00
Amin Ghadersohi
1ef94be726 fix(mcp): always filter list responses by columns_requested (#37505) 2026-01-28 14:39:57 +01:00
Daniel Vaz Gaspar
8fad912835 feat(cache): use configurable hash algorithm for flask-caching (#37361)
(cherry picked from commit 290bcc1dbb)
2026-01-26 12:40:53 -08:00
Amin Ghadersohi
f309668127 chore(deps): bump fastmcp from 2.14.0 to 2.14.3 (#37410)
(cherry picked from commit 0ecc69d2f1)
2026-01-26 12:40:53 -08:00
Reynold Morel
c0c0ee484a fix(chart): implement geohash decoding (#37027)
(cherry picked from commit b99fc582e4)
2026-01-26 12:40:53 -08:00
SBIN2010
55e31e74cb feat(tree chart): add initial tree depth to tree chart (#35425)
(cherry picked from commit 21f85a4145)
2026-01-26 12:40:53 -08:00
Alex Yang
e5e2c2a5dd feat: Floating Point Formatting for Scatter Point Chart (#35915)
Co-authored-by: Vincent <vincent.trung4@gmail.com>
(cherry picked from commit 001b6cb801)
2026-01-26 12:40:53 -08:00
Daniel Vaz Gaspar
8c15e72de6 fix: variable shadowing in test_connection command (#37397)
(cherry picked from commit f2b54e882d)
2026-01-26 12:40:53 -08:00
dependabot[bot]
d395f5b368 chore(deps): bump @deck.gl/layers from 9.1.13 to 9.2.2 in /superset-frontend (#35743)
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.5 <noreply@anthropic.com>
(cherry picked from commit f2e677c150)
2026-01-26 12:40:53 -08:00
Gabriel Torres Ruiz
0802c6804c fix(theme): migrate APP_NAME to brandAppName theme token with backward compatibility (#37370)
Co-authored-by: Rafael Benitez <rebenitez1802@gmail.com>
Co-authored-by: Claude <noreply@anthropic.com>
Co-authored-by: Beto Dealmeida <roberto@dealmeida.net>
Co-authored-by: codeant-ai-for-open-source[bot] <244253245+codeant-ai-for-open-source[bot]@users.noreply.github.com>
2026-01-26 12:40:53 -08:00
Vitor Avila
3c37bb01ea fix: DB OAuth2 fixes (#37350)
(cherry picked from commit cc972cad5a)
2026-01-26 12:40:53 -08:00
Vitor Avila
fa30a74e8e feat: Handle OAuth2 dance with TableSelector (#37315) 2026-01-26 12:40:53 -08:00
Enzo Martellucci
6214278106 fix(echarts): restore dashed line style for time comparison series (#37135)
(cherry picked from commit 3fa5bb4138)
2026-01-26 12:40:52 -08:00
Amin Ghadersohi
872319d415 feat(mcp): add stacked bar/area chart support (#37188)
Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
(cherry picked from commit 0fedfe03d5)
2026-01-26 12:40:52 -08:00
Jean Massucatto
5606d5d2e3 perf(date_parser): bound regex quantifiers for deterministic parsing performance (#36983)
Cherry-picked from master commit 459b4cb23d

Accepted:
- Bounded \s+ to \s{1,5} and \s* to \s{0,5} in time_range_lookup regexes
- Added tests for bounded whitespace validation

Adapted:
- Preserved 6.0-release "first/1st of" patterns between modified sections
- Kept existing tests for "first of" expressions

Original author: Jean Massucatto <massucattoj@gmail.com>
2026-01-26 12:40:52 -08:00
Luis Sánchez
a9a03db940 refactor(TimezoneSelector): Enhance timezone selection logic and improve performance (#36486) 2026-01-26 12:40:52 -08:00
Mehmet Salih Yavuz
676c73f6d5 feat(Matrixify): add matrixify tag to list view and explore (#37247) 2026-01-26 12:40:52 -08:00
Richard Fogaca Nienkotter
68c7750f35 feat: Dynamic currency (#36416) 2026-01-26 12:40:52 -08:00
Alexandru Soare
6315380029 fix(transpile_query): Fix export_as_csv error: "transpile_to_dialect": ['Unknown field.'] (#37249)
(cherry picked from commit 2187fb4ab4)
2026-01-26 12:40:52 -08:00
Amin Ghadersohi
cf83ef89eb feat(mcp): add time_grain parameter to XY chart generation (#37182)
Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
(cherry picked from commit e1fa374517)
2026-01-26 12:40:52 -08:00
amaannawab923
f61003756b feat(ag-grid-table): Enable Time Shift feature for AG Grid Table (#37072)
(cherry picked from commit 39238ef8a9)
2026-01-26 12:40:52 -08:00
Amin Ghadersohi
265209a9e4 feat(mcp): Add Redis EventStore support for multi-pod deployments (#37216)
Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
(cherry picked from commit 50d0508a92)
2026-01-26 12:40:52 -08:00
Amin Ghadersohi
1e678737c7 fix(mcp): Remove screenshot URL functionality from MCP chart tools (#37228)
Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
(cherry picked from commit 2d20079a88)
2026-01-26 12:40:52 -08:00
Amin Ghadersohi
ad9b3f6182 feat(mcp): Add support for AG Grid Interactive Table (ag-grid-table) viz_type (#37191)
Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
(cherry picked from commit fe16c828cf)
2026-01-26 12:40:52 -08:00
Amin Ghadersohi
531d8512a8 fix(sqllab): show virtual dataset banner only when isDataset param is true (#37184)
(cherry picked from commit 6e1718910f)
2026-01-26 12:40:52 -08:00
Amin Ghadersohi
152f9ddbe0 fix(mcp): restore select_columns filtering in list tools (#37213)
Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
(cherry picked from commit 896947c787)
2026-01-26 12:40:52 -08:00
Alexandru Soare
b5f3892b8c feat(dates): adding handling for first of (#37098)
(cherry picked from commit 8f35cc93673a56ba499510fbefabf9e4a46d8b6f)
2026-01-26 12:40:52 -08:00
SBIN2010
bcd0fc13e2 feat: add tab select with save chart to dashboard (#36332)
Co-authored-by: Evan Rusackas <evan@preset.io>
Co-authored-by: Enzo Martellucci <enzomartellucci@gmail.com>
(cherry picked from commit c30edaf075)
2026-01-26 12:40:52 -08:00
Alexandru Soare
1f03ba0683 fix(data-zoom): Data-zoom not rendered properly in Matrixify (#37134)
(cherry picked from commit 9555798d37)
2026-01-26 12:40:52 -08:00
Mehmet Salih Yavuz
88a14f309a chore(Matrixify): disable matrixify for incompatible viz types (#37163)
(cherry picked from commit 95c14b1fc1)
2026-01-26 12:40:52 -08:00
Enzo Martellucci
5d58c8a55e fix(charts): properly parse error responses in StatefulChart (#37130)
(cherry picked from commit 23b91d22ef)
2026-01-26 12:40:51 -08:00
Amin Ghadersohi
104440115e refactor(mcp): simplify single metric chart type check (#37215)
Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
(cherry picked from commit 2bcb66c2fc)
2026-01-26 12:40:51 -08:00
Amin Ghadersohi
c6c5d43073 fix(mcp): Handle big_number charts and make semantic warnings non-blocking (#37142)
Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
(cherry picked from commit d0783da3e5)
2026-01-26 12:40:51 -08:00
Amin Ghadersohi
65eb3bbfa9 fix(mcp): push Flask app context in mcp_auth_hook for tool execution (#37190)
(cherry picked from commit 4532ccf638)
2026-01-26 12:40:51 -08:00
Declan Zhao
4e2afa81d3 fix(prune_logs): improve performance by using id column only for ordering log records when max_rows_per_run is provided (#37138)
(cherry picked from commit 137ebdee39)
2026-01-26 12:40:51 -08:00
Elizabeth Thompson
cd2d61f95f fix(table chart): time comparison totals returning null (#37111)
Co-authored-by: Claude <noreply@anthropic.com>
(cherry picked from commit a272253243)
2026-01-26 12:40:51 -08:00
Mehmet Salih Yavuz
f435c44189 fix(Matrixify): Do not clear values when saving (#37090)
(cherry picked from commit e053418c97)
2026-01-26 12:40:51 -08:00
Alexandru Soare
435c01c5a3 fix(datasets): ui bug fixes (#37058)
(cherry picked from commit fc67569cd4)
2026-01-26 12:40:51 -08:00
Enzo Martellucci
26b8925600 fix(explore): dispatch NumberControl value on blur to allow field clearing (#37007)
(cherry picked from commit 5f58241795)
2026-01-26 12:40:51 -08:00
Luis Sánchez
66ec7f1e3d chore(chart): rollback legend top alignment to the right (#36994)
(cherry picked from commit dcdcf88969)
2026-01-26 12:40:51 -08:00
amaannawab923
a078221a24 feat(ag-grid): Server Side Filtering for Column Level Filters (#35683)
(cherry picked from commit 4f444ae1d2)
2026-01-26 12:40:51 -08:00
Michael S. Molina
e07d12b1bb feat(embedded-sdk): Add resolvePermalinkUrl callback for custom permalink URLs (#36924)
(cherry picked from commit 53dddf4db2)
2026-01-26 12:40:51 -08:00
Beto Dealmeida
f04f638506 chore: remove deprecated function (#37021)
(cherry picked from commit 14c0cad0ba)
2026-01-26 12:40:51 -08:00
Amin Ghadersohi
8c6b7b455b fix(mypy): add overrides for superset-core local dev consistency (#36907)
Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
(cherry picked from commit f895250cf9)
2026-01-26 12:40:51 -08:00
Amin Ghadersohi
e85033c0ff fix(mcp): resolve startup failures from circular DAO imports (#37023)
(cherry picked from commit ecefba5bf7)
2026-01-26 12:40:51 -08:00
Enzo Martellucci
9093761713 refactor(db-engine-specs): use standard OAuth 2.0 params in base class (#37010)
(cherry picked from commit ea90d1f141)
2026-01-26 12:40:51 -08:00
Daniel Vaz Gaspar
211cd7a219 chore: bump flask-cors to 6.0.2 (#36640)
(cherry picked from commit f48322c17d)
2026-01-26 12:40:51 -08:00
Amin Ghadersohi
513297ebc6 fix(mcp): remove unused ctx parameter from health_check tool (#36992)
(cherry picked from commit 85cf46dc1c)
2026-01-26 12:40:51 -08:00
Amin Ghadersohi
be3097c206 feat(mcp): change save_chart default to False for preview-first workflow (#36935)
Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
(cherry picked from commit 047360641a)
2026-01-26 12:40:51 -08:00
Daniel Vaz Gaspar
f34e7687b1 fix: streaming export losing g context (#36950)
Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
(cherry picked from commit a6d85dccf8)
2026-01-26 12:40:51 -08:00
Amin Ghadersohi
fe7be94604 fix(mcp): use chart.query_context for get_chart_data like the API does (#36937)
Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
(cherry picked from commit 64ee48f147)
2026-01-26 12:40:51 -08:00
Amin Ghadersohi
519deb99e1 feat(mcp): add unified get_schema tool for schema discovery (#36458)
Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
(cherry picked from commit 84279acd2f)
2026-01-26 12:40:51 -08:00
Enzo Martellucci
c5f26c30b7 fix(alert-report-modal): enhance dashboard filters behavior and visibility (#36380)
(cherry picked from commit e1c022344e)
2026-01-26 12:40:50 -08:00
Mehmet Salih Yavuz
67e36b5195 fix(deck.gl): Fix Scatterplot chart error when using fixed point size (#36890)
Co-authored-by: Claude <noreply@anthropic.com>
2026-01-26 12:40:50 -08:00
Geidō
9ea4cbb15f fix: Query history view button in SqlLab (#36540) 2026-01-26 12:40:50 -08:00
Enzo Martellucci
39355ee10d fix(dashboard): resolve tab reorder state sync issues (#36855)
(cherry picked from commit e112d863bf)
2026-01-26 12:40:50 -08:00
Beto Dealmeida
ef08904e25 fix: apply EXCLUDE_USERS_FROM_LISTS to /api/v1/security/users/ (#36742)
Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
(cherry picked from commit ecb4e483df)
2026-01-26 12:40:50 -08:00
Alexandru Soare
75d881909f fix(margin): Fixing margin issues (#36479)
(cherry picked from commit 54eb6317ef)
2026-01-26 12:40:50 -08:00
Kamil Gabryjelski
ea8e813fc5 chore: Close playwright browser gracefully (#36537)
(cherry picked from commit f3407d7a56)
2026-01-26 12:40:50 -08:00
Joshua Daniel
d675b3ef57 feat(chart): support icons and text in the deck.gl Geojson visualization (#36201)
Co-authored-by: Joshua Daniel <jdaniel@gflenv.com>
(cherry picked from commit 5e0ee40762)
2026-01-26 12:40:50 -08:00
Luis Sánchez
7d8f310ca6 fix(SearchFilter): prevent unintended autocomplete on search input (#36209)
(cherry picked from commit c9ec173647)
2026-01-26 12:40:50 -08:00
Vitor Avila
b92d08e4f9 fix: store form_data as dict during viz type migration (#36680)
(cherry picked from commit d14f502126)
2026-01-26 12:40:50 -08:00
Vitor Avila
d52ce3999a fix: Support datetime_format during import (#36679)
(cherry picked from commit 821b259805)
2026-01-26 12:40:50 -08:00
Chad Rossouw
f63a74ea42 feat(database): add cloudflare d1 support (#36348)
Co-authored-by: danielalyoshin <daniel.alyoshin@gmail.com>
Co-authored-by: Shreyas Rao <raoshreyas2004@gmail.com>
Co-authored-by: Murphy Lee <murphylee2004@gmail.com>
(cherry picked from commit e5579ed939)
2026-01-26 12:40:50 -08:00
Amin Ghadersohi
3ddf4cbd42 chore(deps): upgrade fastmcp from 2.13.x to 2.14.0 (#36594)
(cherry picked from commit a1b5b92265)
2026-01-26 12:40:50 -08:00
Amin Ghadersohi
7aa8b372b7 chore(deps): upgrade redis from 4.x to 5.x (#36593)
(cherry picked from commit 92c63a54e4)
2026-01-26 12:40:50 -08:00
Amin Ghadersohi
879a92ee83 feat(mcp): add datasource field to generate_explore_link form_data (#36543)
Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
(cherry picked from commit e5b7e38a30)
2026-01-26 12:40:50 -08:00
Amin Ghadersohi
56a2631ccd feat(mcp): return form_data and form_data_key in generate_chart and generate_explore_link responses (#36539)
(cherry picked from commit a588668899)
2026-01-26 12:40:50 -08:00
Daniel Vaz Gaspar
3c2004e588 feat: add option for hash algorithms (#35621)
Co-authored-by: Ville Brofeldt <33317356+villebro@users.noreply.github.com>
(cherry picked from commit bb22eb1ca8)
2026-01-26 12:40:50 -08:00
Gabriel Torres Ruiz
13b5b3f8d1 feat(theming): add per-theme custom font URL support (#36317) 2026-01-26 12:40:50 -08:00
Daniel Vaz Gaspar
35421ad840 fix: core mcp injection and ephemeral envs (#36440)
(cherry picked from commit 1d9c93a793)
2026-01-26 12:40:50 -08:00
Mehmet Salih Yavuz
6c41ff14ea fix(SaveModal): Update chart state when saving in explore (#36441)
(cherry picked from commit fb2826f92e)
2026-01-26 12:40:49 -08:00
Alexandru Soare
6244cc38b1 feat(state): remove chart state when navigation away from the dashboard (#36421)
(cherry picked from commit 8c603a6f8b)
2026-01-26 12:40:49 -08:00
Mohammad Al-Qasem
3ae4e3d3df feat(table): Gradient Toggle (#36280)
Co-authored-by: Claude <noreply@anthropic.com>
2026-01-26 12:40:49 -08:00
Beto Dealmeida
e49c5db85a chore: improve types (#36367)
(cherry picked from commit 482c674a0f)
2026-01-26 12:40:49 -08:00
Beto Dealmeida
bb7d4ca123 feat: Explorable protocol (#36245)
(cherry picked from commit 16e6452b8c)
2026-01-26 12:40:49 -08:00
Edison Liem
edd9345227 feat(dashboard): implement boolean conditional formatting (#36338)
Co-authored-by: Morris <morrisho215215@gmail.com>
(cherry picked from commit eabb5bdf7d)
2026-01-26 12:40:49 -08:00
Antonio Rivero
a5afc48768 fix(dashboards): Use same decorators as FAB (#36423)
(cherry picked from commit 4a249a0745)
2026-01-26 12:40:49 -08:00
Daniel Vaz Gaspar
41b46ccb6b chore: bump urllib3 to 2.6.0 (#36526)
Co-authored-by: codeant-ai-for-open-source[bot] <244253245+codeant-ai-for-open-source[bot]@users.noreply.github.com>
2026-01-26 12:40:49 -08:00
Antonio Rivero
713de8f1dc feat(mcp): Caching uses in-memory store by default when no external store is configured (#36527) 2026-01-26 12:40:49 -08:00
Antonio Rivero
5db29c0f70 feat(mcp): Add ResponseCachingMiddleware and Storage (#36497) 2026-01-26 12:40:49 -08:00
Amin Ghadersohi
5b38b9baf4 fix(mcp): Use config-based URL for MCP service instead of request auto-detection (#36460)
(cherry picked from commit 8d7c83419c)
2026-01-26 12:40:49 -08:00
Declan Zhao
9601d8113c feat(prune_logs): add optional max_rows_per_run param (#36313)
(cherry picked from commit d121cfdbda)
2026-01-26 12:40:49 -08:00
Beto Dealmeida
62d07a9916 chore: cleanup ssh tunnel (#34388)
(cherry picked from commit c458f99dd4)
2026-01-26 12:40:49 -08:00
Kaito Watanabe
f94170598c feat: show search filtered total (#36083)
(cherry picked from commit 6e0960c3f5)
2026-01-26 12:40:49 -08:00
Amin Ghadersohi
fa6e28598a feat(mcp): add tool tags for Tool Search optimization (#36405)
(cherry picked from commit 5c91ab91fb)
2026-01-26 12:40:49 -08:00
Mehmet Salih Yavuz
683b9a0f05 fix(SaveModal): reset chart state when saving and going to a dashboard (#36402)
(cherry picked from commit b40467c7e2)
2026-01-26 12:40:49 -08:00
Beto Dealmeida
1bf0639f40 feat: DB2 dialect for sqlglot (#36365)
(cherry picked from commit e4cb84bc02)
2026-01-26 12:40:49 -08:00
Beto Dealmeida
fea90d8a67 fix: normalize totals cache keys for async hits (#36274)
(cherry picked from commit 775d1ba061)
2026-01-26 12:40:49 -08:00
Vitor Avila
b14e107fca fix: Do no aggregate results for CSV downloads from AG Grid raw records table (#36247)
(cherry picked from commit 9fc7a83320)
2026-01-26 12:40:49 -08:00
Mehmet Salih Yavuz
ddb16032de fix(timeshift): Add a more reliable strategy for correct temporal col (#36309)
Co-authored-by: Claude <noreply@anthropic.com>
(cherry picked from commit a754258fad)
2026-01-26 12:40:49 -08:00
Gabriel Torres Ruiz
a7d6afa295 fix(deckgl): use DatasourceType enum in polygon transformProps test + some TS issues (#36336)
(cherry picked from commit a745fd49fa)
2026-01-26 12:40:48 -08:00
Damian Pendrak
dfe04f8fd4 fix(deckgl): polygon elevation fixed value (#35266)
(cherry picked from commit de7f41a888)
2026-01-26 12:40:48 -08:00
Amin Ghadersohi
b1a00163db refactor(mcp): use dynamic APP_NAME instead of hardcoded Superset branding (#36371)
(cherry picked from commit 2c6bed27aa)
2026-01-26 12:40:48 -08:00
Enzo Martellucci
f2a26236aa feat(alert-report-modal): Use extensions registry for DateFilterControl in AlertReportModal (#36376)
(cherry picked from commit 51798edb23)
2026-01-26 12:40:48 -08:00
Alexandru Soare
6f887bbaf0 feat(embed): get charts payload (#36237)
Co-authored-by: Vitor Avila <vitorfragadeavila@gmail.com>
Co-authored-by: Mehmet Salih Yavuz <salih.yavuz@proton.me>
(cherry picked from commit 341ae994c5)
2026-01-26 12:40:48 -08:00
Amin Ghadersohi
2a55db95a1 fix(mcp): access wrapped function in dataset tool tests (#36295)
(cherry picked from commit 2af5a5adb0)
2026-01-26 12:40:48 -08:00
Amin Ghadersohi
e5def29e63 feat(mcp): implement selective column serialization for list tools (#36035) 2026-01-26 12:40:48 -08:00
Amin Ghadersohi
1674628881 fix(mcp-service): improve MCP tool parameter clarity and validation (#36137)
Co-authored-by: Rafael Benitez <rafael.benitez@contractors.food52.com>
(cherry picked from commit f98939103b)
2026-01-26 12:40:48 -08:00
Amin Ghadersohi
685d4cc891 build: Add pytest-asyncio to enable async MCP service tests (#36251)
(cherry picked from commit ab36bd3965)
2026-01-26 12:40:48 -08:00
Amin Ghadersohi
50326c23a9 feat(datasets): add datetime format detection to dataset columns (#36150)
Co-authored-by: Claude Code <claude@anthropic.com>
(cherry picked from commit 06a8f4df02)
2026-01-26 12:40:48 -08:00
Beto Dealmeida
fab1f03527 fix: double computation of contribution_totals (#36226)
(cherry picked from commit aca18fff99)
2026-01-26 12:40:48 -08:00
Beto Dealmeida
c01b041e40 fix: cache key generation (#36225)
(cherry picked from commit 0c87034b17)
2026-01-26 12:40:48 -08:00
Antonio Rivero
83bc43898e feat(dashboards): Add config to filter implicit tags in list API (#36246)
(cherry picked from commit c966dd4f9e)
2026-01-26 12:40:48 -08:00
amaannawab923
e08749b9bb feat(ag-grid): add SQLGlot-based SQL escaping for where and having filter clauses (#36136)
(cherry picked from commit 186693b840)
2026-01-26 12:40:48 -08:00
Beto Dealmeida
3d7fb83bef refactor: refactor get_query_result (#36057)
(cherry picked from commit a2267d869b)
2026-01-26 12:40:48 -08:00
Amin Ghadersohi
13c70c7ee3 fix(mcp): Allow MCP tools to accept string or object request formats (#36271)
(cherry picked from commit cf88551a56)
2026-01-26 12:40:48 -08:00
Amin Ghadersohi
3b81e5699e feat(mcp): Add flexible input parsing to handle double-serialized requests (#36249) 2026-01-26 12:40:48 -08:00
Alexandru Soare
32eddb6b1f feat(Tabs): Rearange tabs when editing dashboard (#35156)
(cherry picked from commit 71c015c579)
2026-01-26 12:40:48 -08:00
Amin Ghadersohi
e1d0a9f5f0 fix(security): enable AUTH_RATE_LIMITED to work correctly (#36195)
Co-authored-by: Joe Li <joe@preset.io>
(cherry picked from commit 92d8139136)
2026-01-26 12:40:48 -08:00
amaannawab923
734eff9caf feat(streaming): Streaming CSV uploads for over 100k records for constant memory usage (#35478)
(cherry picked from commit 35f156a1e1)
2026-01-26 12:40:47 -08:00
Amin Ghadersohi
20f1bb0367 docs(mcp): add comprehensive architecture, security, and production deployment documentation (#36017)
(cherry picked from commit 66afdfd119)
2026-01-26 12:40:47 -08:00
Enzo Martellucci
cf92127702 chore(DatabaseModal): simplify collapsible logic for extra extension section (#36118)
(cherry picked from commit 53b9045943)
2026-01-26 12:40:47 -08:00
Richard Fogaca Nienkotter
7614fbabbf feat(dashboard): "embed code" option on dashboard share tab (#33163)
Co-authored-by: richardfn <richard.fogaca@appsilon.com>
Co-authored-by: Enzo Martellucci <52219496+EnxDev@users.noreply.github.com>
(cherry picked from commit 80ec241108)
2026-01-26 12:40:47 -08:00
Gabriel Torres Ruiz
72173554fe fix(csv-upload): log detailed errors during chunk concatenation for debugging (#36108)
(cherry picked from commit 9d06a5888f)
2026-01-26 12:40:47 -08:00
Beto Dealmeida
dc14cb34fa chore: annotate important types (#36034)
Co-authored-by: Claude <noreply@anthropic.com>
(cherry picked from commit fb7d0e0e3d)
2026-01-26 12:40:47 -08:00
Gabriel Torres Ruiz
c5fdf86230 feat(embedded): add setThemeMode API for dynamic theme switching (#36125)
(cherry picked from commit 282f4e5de2)
2026-01-26 12:40:47 -08:00
Kamil Gabryjelski
822fc672f3 perf: Fix dashboard performance issues (#36119)
(cherry picked from commit 6723a58780)
2026-01-26 12:40:47 -08:00
Amin Ghadersohi
cff983c91e fix: pin setuptools <81 to prevent pkg_resources removal (#36104)
(cherry picked from commit 519990e2fb)
2026-01-26 12:40:47 -08:00
Enzo Martellucci
216763d05d fix: Use total count to filter datasets (#36135)
Co-authored-by: Diego Pucci <diegopucci.me@gmail.com>
(cherry picked from commit 962faa2196)
2026-01-26 12:40:47 -08:00
Amin Ghadersohi
28a3c5f5b9 feat(mcp): add configurable branding for MCP service (#36033)
(cherry picked from commit dad469297c)
2026-01-26 12:40:47 -08:00
Enzo Martellucci
5611f81ec3 style(database-modal): vertically align the button and the InfoTooltip icon (#36087)
(cherry picked from commit f8933c2743)
2026-01-26 12:40:47 -08:00
Daniel Vaz Gaspar
0fd66328df chore: bump FAB to 5.0.2 (#36086)
(cherry picked from commit b051f779e6)
2026-01-26 12:40:47 -08:00
Antonio Rivero
b8abe9531e chore(logs): Add is_cached in sync AND async results (#36102)
(cherry picked from commit 60f29ba6fb)
2026-01-26 12:40:47 -08:00
Amin Ghadersohi
462b634a31 fix(mcp): simplify health_check tool and refactor system utils (#36063)
(cherry picked from commit c244e7f847)
2026-01-26 12:40:47 -08:00
Mehmet Salih Yavuz
e11e61b5ea feat(frontend): add dataset cache clearing utilities and integration (#35264)
Co-authored-by: Claude <noreply@anthropic.com>
Co-authored-by: Geidō <60598000+geido@users.noreply.github.com>
(cherry picked from commit 0b535b792e)
2026-01-26 12:40:47 -08:00
Richard Fogaca Nienkotter
8eba7a7860 fix(dashboard): prevent validation error in properties modal when ope… (#36045)
(cherry picked from commit 9be61a1245)
2026-01-26 12:40:47 -08:00
Joe Li
e506cf4bfa fix(tests): fix flakey tests with PropertiesModal.test.tsx, FiltersConfigModal.test.tsx and ChartList.listview.test.tsx (#36037)
Co-authored-by: Claude <noreply@anthropic.com>
(cherry picked from commit 0a5144fc1d)
2026-01-26 12:40:47 -08:00
Joe Li
e1c9285467 feat(playwright): Remove Cypress auth tests in favor of Playwright auth tests (#35938)
Co-authored-by: Claude <noreply@anthropic.com>
(cherry picked from commit 64ca080bb8)
2026-01-26 12:40:47 -08:00
Amin Ghadersohi
e0d4f9dc27 fix(mcp-service): ensure Flask app context in auth hook and resolve Pydantic warnings (#36013)
(cherry picked from commit 9605a4a9cb)
2026-01-26 12:40:47 -08:00
Richard Fogaca Nienkotter
1ea68dd451 style(sqllab): restore Template Parameters modal styling (#35965)
(cherry picked from commit ae63f64771)
2026-01-26 12:40:46 -08:00
Amin Ghadersohi
00ac662977 chore(mcp-service): upgrade fastmcp from 2.10.6 to 2.13.0.2 (#36014)
(cherry picked from commit 3167a0dbc0)
2026-01-26 12:40:46 -08:00
Amin Ghadersohi
f59110cf28 refactor(mcp): shorten tool name from get_superset_instance_info to get_instance_info (#36032)
(cherry picked from commit d2550a525b)
2026-01-26 12:40:46 -08:00
Gabriel Torres Ruiz
e27e26debe fix(UI): spacings + UI fixes (#36010)
(cherry picked from commit c11be72ead)
2026-01-26 12:40:46 -08:00
Amin Ghadersohi
e74ee8ee69 test: revert unrelated flaky test fix from MCP PR (#36015)
(cherry picked from commit f5f5913a29)
2026-01-26 12:40:46 -08:00
Antonio Rivero
b003d1bdd7 chore(logs): Use correct log level and remove duplicates for get_query (#36023)
(cherry picked from commit 3765c31163)
2026-01-26 12:40:46 -08:00
Enzo Martellucci
c41b061063 fix(ui): bump AntD to 5.26.0 to fix Splitter drag menu issue (#35782)
(cherry picked from commit 84a1abd357)
2026-01-26 12:40:46 -08:00
Antonio Rivero
549dd41388 feat(logs): Add is_cached as part of ChartDataRestApi.data actions (#36001)
(cherry picked from commit a1d4dff99d)
2026-01-26 12:40:46 -08:00
Rafael Benitez
1d6d1ca1a7 fix(dataset): sync columns checkbox not responding to clicks in virtual dataset modal (#35650)
(cherry picked from commit 46db8b7803)
2026-01-26 12:40:46 -08:00
Amin Ghadersohi
beff839b5b feat(mcp): MCP service implementation (PRs 3-9 consolidated) (#35877)
(cherry picked from commit fee4e7d8e2)
2026-01-26 12:40:46 -08:00
Amin Ghadersohi
46069a2269 fix(mcp): remove hardcoded admin username fallbacks (#35875)
(cherry picked from commit 7733265fa2)
2026-01-26 12:40:45 -08:00
Amin Ghadersohi
68e8ba7732 feat(mcp): PR2 - Add chart listing and info tools with core infrastructure (#35835)
(cherry picked from commit e1455057e7)
2026-01-26 12:40:45 -08:00
Amin Ghadersohi
aceb2f52f6 feat(mcp): PR1 - Add MCP service scaffold for Apache Superset (#35163)
(cherry picked from commit cc6a5dc29a)
2026-01-26 12:40:45 -08:00
Vitor Avila
e3fa444d1e chore: Docs and config improvements for Docker setup (#35896)
(cherry picked from commit 0a95f74f11)
2026-01-26 12:40:45 -08:00
Gabriel Torres Ruiz
0b6a5c5183 refactor(explore): improve focus management in adhoc filter editor (#35801) 2026-01-26 12:40:45 -08:00
Amin Ghadersohi
9e65482384 refactor(explore): extract session ID retrieval into overridable method (#35779)
(cherry picked from commit 6f50ddf710)
2026-01-26 12:40:45 -08:00
SBIN2010
72b9ee5d09 feat: show total in waterfall chart (#35876)
(cherry picked from commit 48ee0821d3)
2026-01-26 12:40:45 -08:00
Alexandru Soare
3d7ae46f7c feat(Chart): Save Chart State globally (#35343)
(cherry picked from commit 99b61143f6)
2026-01-26 12:40:45 -08:00
SBIN2010
9edf84304a feat: conditional formatting improvements add flag toAllRow and toTextColor in tables (#34762)
(cherry picked from commit 514d56d1ae)
2026-01-26 12:40:45 -08:00
Joe Li
b18351c9ed fix(frontend): resolve race condition in DatasetUsageTab pagination s… (#35691)
Co-authored-by: Claude <noreply@anthropic.com>
(cherry picked from commit 79918a7939)
2026-01-26 12:40:45 -08:00
Geidō
bea413d2a2 fix(Themes): Local label inconsistent behaviors (#35663)
(cherry picked from commit fcfafebb29)
2026-01-26 12:40:45 -08:00
SkinnyPigeon
1cd27bf27f feat(reports): allow custom na values (#35481)
Co-authored-by: bito-code-review[bot] <188872107+bito-code-review[bot]@users.noreply.github.com>
Co-authored-by: Beto Dealmeida <roberto@dealmeida.net>
(cherry picked from commit 58758de93d)
2026-01-26 12:40:45 -08:00
Elizabeth Thompson
f79ac23776 test(tasks): Add tests for log_task_failure signal handler (#35721)
Co-authored-by: Claude <noreply@anthropic.com>
(cherry picked from commit 1b6d57c3f3)
2026-01-26 12:40:45 -08:00
Elizabeth Thompson
d90ff786d6 test: add comprehensive unhappy path tests for export (#35718)
(cherry picked from commit 0b3fe3d60c)
2026-01-26 12:40:45 -08:00
Richard Fogaca Nienkotter
504234f575 feat: use in deck.gl custom tooltip instead of SafeMarkdown (#35665)
(cherry picked from commit 8c125d2553)
2026-01-26 12:40:45 -08:00
Joe Li
de0b1c2156 refactor(frontend): convert DatasourceEditor tests to TypeScript (#35606)
Co-authored-by: Claude <noreply@anthropic.com>
(cherry picked from commit 4ddc3f14ed)
2026-01-26 12:40:45 -08:00
Quentin Leroy
6d7b050792 fix(config.py): reset HTML_SANITIZATION to True by default (#35603)
(cherry picked from commit 09772eeda0)
2026-01-26 12:40:45 -08:00
Gabriel Torres Ruiz
a1ec378a12 fix(theming): solve modal dark theme issues + styling and code improvements (#35539)
(cherry picked from commit e6bd03fe98)
2026-01-26 12:40:44 -08:00
Joe Li
773b6938d0 test(frontend): remove 3 duplicate JSX test files (#35590)
Co-authored-by: Claude <noreply@anthropic.com>
(cherry picked from commit 35b5f8dcdc)
2026-01-26 12:40:44 -08:00
Levis Mbote
6910aa23f8 feat(dashboard): chart customization/dynamic group by in dashboards (#33831)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: GitHub Action <action@github.com>
Co-authored-by: amaannawab923 <amaannawab923@gmail.com>
(cherry picked from commit 97518544ee)
2026-01-26 12:40:44 -08:00
Elizabeth Thompson
fe94f65d1f fix(export): replace iframe with fetch to avoid CSP frame-src violations (#35584)
Co-authored-by: Claude <noreply@anthropic.com>
(cherry picked from commit 3dcf85caef)
2026-01-26 12:40:44 -08:00
Gabriel Torres Ruiz
664881ff5f fix(theme-crud): add unsaved changes modal (#35254)
(cherry picked from commit a90928766b)
2026-01-26 12:40:44 -08:00
Elizabeth Thompson
5052e35aea fix(modals): use Modal.useModal hook for proper dark mode theming (#35198)
Co-authored-by: Claude <noreply@anthropic.com>
(cherry picked from commit 8bb911bc91)
2026-01-26 12:40:44 -08:00
Kamil Gabryjelski
f86c2f15ae fix(explore): Remove query autotrigger (#35418)
(cherry picked from commit 0364933e8b)
2026-01-26 12:40:44 -08:00
Damian Pendrak
03995adc4d feat(db): custom database error messages (#34674)
(cherry picked from commit 19db0353a9)
2026-01-26 12:40:44 -08:00
Kamil Gabryjelski
163573e8c9 fix: Broken splitter in sql lab and some minor visual fixes (#35416)
(cherry picked from commit 88e5581d04)
2026-01-26 12:40:44 -08:00
Gabriel Torres Ruiz
d495df5934 feat(theming): add base theme config (#35220)
(cherry picked from commit 220480b627)
2026-01-26 12:40:44 -08:00
Joe Li
f6e3b87621 fix: resolve 6.0 release migration chain conflicts
This commit consolidates migration fixes to resolve conflicts between
4.2-release and 6.0-release branches:

- Correct merge migration to prevent KeyError d482d51c15ca
- Resolve multiple heads with 3-way merge migration
- Complete migration chain linkage to 4.2-release HEAD
- Restore 4.2-release migration chain compatibility

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
(cherry picked from commit 84e5cfef51211403f8d54ea8a79bffb4d4a53796)
(cherry picked from commit 912c2d2b1fbf035f9d5786c5d4cc34d8c93d8b75)
(cherry picked from commit 51da0e61c16d4a037b6650848208ae359e37ef7e)
2026-01-26 12:40:44 -08:00
JUST.in DO IT
e4b246cc03 chore(sqllab): remove unused json param (#35065)
(cherry picked from commit 0defcb604b)
2026-01-26 12:40:44 -08:00
Mehmet Salih Yavuz
96dc6aba33 fix(PropertiesModal): do not show validation errors while loading (#35215)
(cherry picked from commit cb88d886c7)
2026-01-26 12:40:44 -08:00
Rafael Benitez
85eaa90367 feat(themes): Adding SupersetText support to Themes Modal (#35248)
(cherry picked from commit 4b71adaa9c)
2026-01-26 12:40:44 -08:00
Mehmet Salih Yavuz
9ef9b9b827 chore(effect): add eslint plugin to reduce rerenders (#35223)
(cherry picked from commit 5fbda3af40)
2026-01-26 12:40:44 -08:00
Amin Ghadersohi
0f188a96f6 fix: Enable Playwright migration with graceful Selenium fallback (#35063)
Co-authored-by: Claude <noreply@anthropic.com>
(cherry picked from commit fe7f8062f3)
2026-01-26 12:40:43 -08:00
Damian Pendrak
00e446623f refactor(deckgl): update deck.gl charts to use new api (#34859)
(cherry picked from commit dce74014da)
2026-01-26 12:40:43 -08:00
Alexandru Soare
60975a767a feat(database): Adding per-user caching option in Security tab (#34842)
(cherry picked from commit 5901320933)
2026-01-26 12:40:43 -08:00
Mehmet Salih Yavuz
4baacf5694 chore(matrixify): Remove leftover option (#35195)
(cherry picked from commit 38297edc6b)
2026-01-26 12:40:43 -08:00
Kamil Gabryjelski
dbf99d99f9 chore: Bump ag grid to 34.2.0 (#35193)
(cherry picked from commit a889ae75fc)
2026-01-26 12:40:43 -08:00
Mehmet Salih Yavuz
b09afd03e0 feat(TimeTable): add other sparkline type options (#35180)
(cherry picked from commit b60be9655f)
2026-01-26 12:40:43 -08:00
Joe Li
738b4468c8 fix(tests): migrate Cypress control tests to React Testing Library (#35181)
Co-authored-by: Claude <noreply@anthropic.com>
(cherry picked from commit 127f6b3d66)
2026-01-26 12:40:43 -08:00
Joe Li
8469bf3dc8 feat(playwright): Add Playwright CI Integration for Cypress Migration (SIP-178) (#35110)
Co-authored-by: Claude <noreply@anthropic.com>
(cherry picked from commit 1187902e68)
2026-01-26 12:40:43 -08:00
Maxime Beauchemin
94ee1cc214 feat(matrixify): replace single toggle with separate horizontal/vertical layout controls (#35067)
Co-authored-by: Claude <noreply@anthropic.com>
Co-authored-by: Mehmet Salih Yavuz <salih.yavuz@proton.me>
(cherry picked from commit ad3eff9e90)
2026-01-26 12:40:43 -08:00
SBIN2010
c2048065ac feat(waterfall): add changes label series and grouping customize settings (#34847)
(cherry picked from commit 3e554674ff)
2026-01-26 12:40:43 -08:00
Amin Ghadersohi
89a36f74ef feat: Add BaseDAO improvements and test reorganization (#35018)
Co-authored-by: bito-code-review[bot] <188872107+bito-code-review[bot]@users.noreply.github.com>
Co-authored-by: Claude <noreply@anthropic.com>
(cherry picked from commit dced2f8564)
2026-01-26 12:40:43 -08:00
Maxime Beauchemin
d35efe3a76 feat: add optional garbage collection after requests (#35061)
Co-authored-by: Claude <noreply@anthropic.com>
(cherry picked from commit d0cc6f115b)
2026-01-26 12:40:43 -08:00
Hugh A. Miles II
1dc5b5bdb5 feat: Add Dashboard Filter Support for Alert Reports (#32196)
Co-authored-by: Elizabeth Thompson <eschutho@gmail.com>
Co-authored-by: Hugh A Miles II <hugh@Mac.home>
(cherry picked from commit 966e231f94)
2026-01-26 12:40:43 -08:00
Richard Fogaca Nienkotter
5663fb7fa9 feat(custom-tooltip): custom tooltip on deck.gl charts (#34276)
(cherry picked from commit a66737cb05)
2026-01-26 12:40:43 -08:00
Elizabeth Thompson
eaba081497 feat: Add comprehensive dark mode support for chart thumbnails and examples (#35111)
Co-authored-by: Claude <noreply@anthropic.com>
(cherry picked from commit 7d0a472d1e)
2026-01-26 12:40:42 -08:00
Maxime Beauchemin
6888fa1e1b feat: Add ECharts options overrides to theme system (#34876)
Co-authored-by: Claude <noreply@anthropic.com>
(cherry picked from commit c2534f9155)
2026-01-26 12:40:42 -08:00
Rafael Benitez
faa74d377d fix(DashboardEditor): CSS template selector UI in dashboard properties modal restored (#35106)
(cherry picked from commit dea9068647)
2026-01-26 12:40:42 -08:00
SBIN2010
491377e4c1 feat(BoxPlot): add chart data zoom (#35097)
(cherry picked from commit 454ed1883f)
2026-01-26 12:40:42 -08:00
Devanjan Banerjee
ecaadac531 feat(Timeseries & MixedTimeseries): Force selected timegrain on timeseries intervals when the x-axis is of timestamp type (#34595)
(cherry picked from commit eb4351af83)
2026-01-26 12:40:42 -08:00
Mehmet Salih Yavuz
d6c21acdd8 feat(embedded): Change function signature of setupExtensions (#35062)
Co-authored-by: Michael S. Molina <70410625+michael-s-molina@users.noreply.github.com>
(cherry picked from commit 7a20a65a4d)
2026-01-26 12:40:42 -08:00
Gabriel Torres Ruiz
c335bcb9a0 feat(dataset): create usage tab for dataset (#34707)
(cherry picked from commit 2f64343186)
2026-01-26 12:40:42 -08:00
Amin Ghadersohi
6d4b17fcf1 fix(utils): Suppress pandas date parsing warnings in normalize_dttm_col (#35042)
(cherry picked from commit 15e4e8df94)
2026-01-26 12:40:42 -08:00
Elizabeth Thompson
cf18465e0d fix(utils): ensure webdriver timeout compatibility with urllib3 2.x (#34440)
(cherry picked from commit 385471c34d)
2026-01-26 12:40:42 -08:00
Beto Dealmeida
33363cc8b7 feat: allow create metric and add to folder in single request (#34993)
(cherry picked from commit 4e969d19d1)
2026-01-26 12:40:41 -08:00
Vitor Avila
3ebd40559c feat: Use dashboard name for screenshot download (#34988)
(cherry picked from commit ce74ae095d)
2026-01-26 12:40:41 -08:00
SBIN2010
5c5627c5a2 feat: add sort legend to legend section (#34911)
(cherry picked from commit 9424538bb1)
2026-01-26 12:40:41 -08:00
Maxime Beauchemin
1ea5e5af44 feat: add customizable brand spinners with theme integration (#34764)
Co-authored-by: Claude <noreply@anthropic.com>
Co-authored-by: Evan Rusackas <evan@preset.io>
(cherry picked from commit b0d3f0f0d4)
2026-01-26 12:40:41 -08:00
Danylo Korostil
2be38e4441 feat(api): dataset read API uuid support (#34836)
(cherry picked from commit 077724c2d2)
2026-01-26 12:40:41 -08:00
SBIN2010
ac8aa6bb03 feat(pie): add sort legend (#34323)
(cherry picked from commit dc7a8844eb)
2026-01-26 12:40:41 -08:00
Vitor Avila
a0956a25f4 fix: Chart execution for Databricks (#34906)
(cherry picked from commit 54f071138c)
2026-01-26 12:40:41 -08:00
Kamil Gabryjelski
ef6f34eaa6 perf: Use react-router to toggle fullscreen mode on dashboard (#34857)
(cherry picked from commit ce3b93d8a0)
2026-01-26 12:40:41 -08:00
Beto Dealmeida
ab1a49fb07 feat(bigquery): show materialized views (#34766)
(cherry picked from commit cb24737825)
2026-01-26 12:40:41 -08:00
Maxime Beauchemin
4bc83507e6 feat: refactor modals to use consistent design patterns (#34711)
Co-authored-by: Claude <noreply@anthropic.com>
(cherry picked from commit e8e1466185)
2026-01-26 12:40:41 -08:00
JUST.in DO IT
3259836e0b feat(sqllab): introduce splitter for adjusting sidebar and query panel (#34767)
(cherry picked from commit 63bb1d55a4)
2026-01-26 12:40:41 -08:00
Elizabeth Thompson
d31d307d22 chore: catch sqlalchemy error (#34768)
(cherry picked from commit 009b99bfbb)
2026-01-26 12:40:40 -08:00
Maxime Beauchemin
82f4769ea0 feat(validation): Add SQL expression validation in popovers (#34642)
Co-authored-by: Claude <noreply@anthropic.com>
(cherry picked from commit 4683a0827d)
2026-01-26 12:40:40 -08:00
Beto Dealmeida
109fc05151 feat: improve perf of CSV uploads (#34603)
(cherry picked from commit a82e310600)
2026-01-26 12:40:40 -08:00
Maxime Beauchemin
c37a91b5cb feat(matrixify): implement matrix of any charts as core Superset feature (#34526)
Co-authored-by: Claude <noreply@anthropic.com>
(cherry picked from commit e6c8343fd0)
2026-01-26 12:40:40 -08:00
SBIN2010
36e8211306 feat: conditional formatting improvements in tables (#34330)
(cherry picked from commit 852adaa6cc)
2026-01-26 12:40:40 -08:00
Joe Li
e73229e138 test(dashboard): strengthen fontWeightStrong assertion for markdown bold (#35872)
Co-authored-by: Claude <noreply@anthropic.com>
(cherry picked from commit 2db19008fb)
2026-01-26 12:40:29 -08:00
Enzo Martellucci
3a38eb5483 fix(view-in-sqllab): unable to open virtual dataset after discarding chart edits (#35931)
(cherry picked from commit 392b880b52)
2026-01-26 12:40:29 -08:00
Joe Li
61db201a16 test(useThemeMenuItems): fix race conditions by awaiting all userEvent calls (#35918)
Co-authored-by: Claude <noreply@anthropic.com>
(cherry picked from commit 5224347c39)
2026-01-26 12:40:29 -08:00
Rafael Benitez
1dd37ed8c8 fix: pin remark-gfm to v3.0.1 for compatibility with react-markdown v8 (#36388)
Co-authored-by: Claude <noreply@anthropic.com>
(cherry picked from commit daec330127)
2026-01-26 12:40:29 -08:00
Joe Li
5796871919 fix(time-range-modal): time range modal for out of scope filter is not displayed correctly (#36996)
Cherry-picked from 54919c9 with adaptation for 6.0 branch:

Accepted:
- FilterControls.tsx: Fix for overflowedByIndex calculation that now considers
  filterBarOrientation - out-of-scope filters in vertical mode are in a Collapse
  panel and should not be marked as overflowed
- DateFilterLabel.test.tsx: New tests for isOverflowingFilterBar prop behavior

Rejected:
- FilterControls.test.tsx: Incompatible with 6.0 - uses ChartCustomizationType,
  ChartCustomizationDivider, and props that don't exist in this branch version

Original commit: 54919c942a

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-23 13:43:15 -08:00
Jean Massucatto
054040be85 fix(dataset-editor): add missing Data type label in calculated columns tab (#37165)
(cherry picked from commit 04c5517206)
2026-01-23 13:38:06 -08:00
Gabriel Torres Ruiz
c3a7048c10 fix(sqllab): add colorEditorSelection token for visible text selection (#36932) 2026-01-22 11:50:54 -08:00
Ramiro Aquino Romero
6b8409baf0 fix(api): nan is not properly handled for athena connections (#37071)
(cherry picked from commit fadab21493)
2026-01-22 11:07:10 -08:00
Rafael Benitez
0773e25383 fix: pin remark-gfm to v3.0.1 for compatibility with react-markdown v8 (#36388)
Co-authored-by: Claude <noreply@anthropic.com>
(cherry picked from commit daec330127)
2026-01-21 13:58:59 -08:00
Luis Sánchez
da63984a21 fix(chart): Horizontal bar chart value labels cut off (#36989) 2026-01-21 13:38:00 -08:00
Ramiro Aquino Romero
444f49c6cf fix(delete-filter): deleted native filters are still shown until [sc-96553] (#37012) 2026-01-20 10:58:39 -08:00
Luis Sánchez
9f359f9124 fix(timeseries): x-axis last month was hidden (#37181)
(cherry picked from commit f4597be341)
2026-01-19 11:41:57 -08:00
Jamile Celento
cfa0f03e88 fix(native-filters): enable Apply button when selecting Boolean FALSE value (#37017)
(cherry picked from commit 4393db57d9)
2026-01-19 09:32:10 -08:00
Geidō
682599d7de fix(Dashboard): Auto-apply filters with default values when extraForm… (#36927)
(cherry picked from commit 2900258e05)
2026-01-19 09:31:02 -08:00
Jean Massucatto
b4b900adce fix(calendar-heatmap): correct month display across timezones (#37064)
(cherry picked from commit 2e29e33dd8)
2026-01-19 08:43:26 -08:00
tiya-9975
1a8bea4072 fix(sunburst): make Show Total text theme-aware (#37177)
Co-authored-by: DarshCode123 <darshjain193@gmail.com>
Co-authored-by: SBIN2010 <Sbin2010@mail.ru>
(cherry picked from commit f984dca5cc)
2026-01-19 08:38:44 -08:00
Yousuf Ansari
82e172dd3e fix(mixed-timeseries): prevent duplicate legend entries (#37217)
(cherry picked from commit a77c2d550c)
2026-01-19 08:37:44 -08:00
Brandon Sovran
261944713c fix: Implement SIP-40 error styles for GAQ (#36596)
(cherry picked from commit 0f56e3b9ae)
2026-01-16 16:03:45 -08:00
Pedro Rodrigues
0d7947c7fc feat: add droppable area to tab empty state (#37210)
(cherry picked from commit 4b1d92e575)
2026-01-16 15:48:26 -08:00
Kamil Gabryjelski
bb7e56d8cc fix: HTML detection in tables (#37171)
(cherry picked from commit 54f19856de)
2026-01-16 10:42:52 -08:00
Kamil Gabryjelski
e643a47deb fix: Move head_custom_extra above csrf token input (#37173)
(cherry picked from commit ab8df1ab34)
2026-01-16 10:42:21 -08:00
Mehmet Salih Yavuz
2083622f18 fix(controls): Only initialize categorical control on numeric x axis (#37115)
(cherry picked from commit 6eb4db6930)
2026-01-15 16:55:26 -08:00
Reynold Morel
98c8ffa0df fix(dashboard): revert cell hover and active colors to grayscale (#36991)
(cherry picked from commit 0404c99e39)
2026-01-14 15:38:15 -08:00
Jonathan Alberth Quispe Fuentes
b183f04fa5 fix(table): keep d3-format semantics when applying currency formatting (#37039)
(cherry picked from commit ad3812edd7)
2026-01-13 11:01:33 -08:00
Damian Pendrak
3fcebdb1cb fix(deckgl): remove visibility condition in deckgl stroke color (#37029)
(cherry picked from commit 2a38ce001e)
2026-01-12 14:36:13 -08:00
ankitajhanwar2001
81149348f1 fix(sqlglot): use Athena dialect for awsathena parsing (#36747)
(cherry picked from commit d8f7ae83ee)
2026-01-12 14:36:13 -08:00
Amin Ghadersohi
7566a551ed fix(models): prevent SQLAlchemy and_() deprecation warning (#37020)
Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
(cherry picked from commit 911d72c957)
2026-01-12 14:36:13 -08:00
Mehmet Salih Yavuz
e5192481c6 fix(reports): Use authenticated user as recipient for chart/dashboard reports (#36981)
(cherry picked from commit 4f5789abfe)
2026-01-12 14:36:13 -08:00
Mehmet Salih Yavuz
aa3b497262 fix(Tabs): prevent infinite rerenders with nested tabs (#37018)
(cherry picked from commit 0294c30c9e)
2026-01-12 14:35:43 -08:00
Levis Mbote
e67e602892 fix: handle undefined template variables safely in query rendering. (#35009)
(cherry picked from commit dfdf8e75d8)
2026-01-07 10:54:23 -08:00
Gabriel Torres Ruiz
fe9202ee0b fix(alerts): wrong alert trigger with custom query (#35871)
(cherry picked from commit 5edaed2e5b)
2026-01-07 10:53:46 -08:00
Evan Rusackas
c4fd5759af fix(security): enforce datasource access control in get_samples() (#36550)
Co-authored-by: Claude <noreply@anthropic.com>
(cherry picked from commit 861e5cd013)
2026-01-07 10:52:24 -08:00
amaannawab923
977ff44851 fix(ag-grid): Ag Grid Date Filter timezone correction (#36270)
(cherry picked from commit d7d94ba640)
2026-01-07 10:51:51 -08:00
Joe Li
d3ba4c7b21 fix(dashboard): prevent table chart infinite reload loop (#36686)
Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
(cherry picked from commit c026ae2ce7)
2026-01-06 14:37:40 -08:00
Felipe López
16f1bb5b88 fix(SQLLab): remove error icon displayed when writing Jinja SQL even when the script is correct (#36422)
(cherry picked from commit cedc35e39f)
2026-01-06 11:51:55 -08:00
JUST.in DO IT
68c03f501c fix(trino): update query progress using cursor stats (#36872)
(cherry picked from commit 12a266fd2f)
2026-01-06 09:58:58 -08:00
Enzo Martellucci
cdb0317be8 fix(plugin-chart-table): remove column misalignment when no scrollbars are present (#36891)
(cherry picked from commit 740ddc03e2)
2026-01-05 11:59:00 -08:00
innovark
d3eec7772a fix(RightMenu): fix inconsistent icon alignment in RightMenu items (#36532)
(cherry picked from commit d07a452e9b)
2026-01-05 11:57:55 -08:00
innovark
0022644b84 fix(SavedQueries): unify query card actions styling across all home page cards (#36671)
(cherry picked from commit e5489bd30f)
2026-01-05 11:57:26 -08:00
Levis Mbote
7702515c53 fix(logout): clicking logout displays an error notification "invalid username or password" (#36490) 2026-01-05 11:56:26 -08:00
Luis Sánchez
6042099296 fix(TableChart): render cell bars for columns with NULL values (#36819) 2026-01-05 11:50:32 -08:00
Mehmet Salih Yavuz
0503983d59 fix: Clear database form errors (#36854) 2026-01-05 11:37:13 -08:00
Enzo Martellucci
668026eeac fix: SqlLab error when collapsing the left panel preview (#36858)
Co-authored-by: Diego Pucci <diegopucci.me@gmail.com>
2026-01-05 11:24:46 -08:00
Enzo Martellucci
3d644e6918 fix(chart-creation): use exact match when loading dataset from URL parameter (#36831)
(cherry picked from commit fe5d5fdae6)
2026-01-05 08:47:01 -08:00
Levis Mbote
747b4c0125 fix: fix error with dashboard filters when global async queries is enabled and user navigates quickly (#36639) 2026-01-05 08:45:54 -08:00
Mehmet Salih Yavuz
fee1f16bfe fix(TableCollection): only apply highlight class when defined (#36809)
(cherry picked from commit 28c802fb6c)
2025-12-29 13:11:06 -08:00
Enzo Martellucci
3b15ff3d83 fix: UI cut off (#36531)
Co-authored-by: Diego Pucci <diegopucci.me@gmail.com>
(cherry picked from commit 32c98d02d3)
2025-12-29 13:11:05 -08:00
Vitor Avila
9e9e8ce056 fix: Use is_active for guest users (#36716)
(cherry picked from commit 737a5162e4)
2025-12-17 13:35:28 -08:00
Yousuf Ansari
cc428c7a5c fix(echarts): use scroll legend for horizontal layouts to prevent overlap (#36306)
(cherry picked from commit 33a425bbbc)
2025-12-17 12:01:25 -08:00
SBIN2010
8a92092d7e fix: removed dashboard from main page in "All" tab, refreshes dashboard list (#35945) 2025-12-17 12:00:00 -08:00
Evan Rusackas
cffaffd769 fix(dashboard): import with overwrite flag replaces charts instead of merging (#36551)
Co-authored-by: Claude <noreply@anthropic.com>
(cherry picked from commit 52c711b0bc)
2025-12-17 11:20:47 -08:00
Evan Rusackas
c5c72bbad7 fix(sql): handle backtick-quoted identifiers with base dialect (#36545)
Co-authored-by: Claude <noreply@anthropic.com>
(cherry picked from commit c7a4d4f2cc)
2025-12-16 15:25:27 -08:00
Alexandru Soare
4588d84929 fix(tab): Fix tabs in column not clickable (#36528)
(cherry picked from commit 8b1c41a012)
2025-12-16 15:24:35 -08:00
Evan Rusackas
844c3e1279 fix(api): Fix JWT authentication for /api/v1/me endpoints (#36410)
Co-authored-by: Claude <noreply@anthropic.com>
(cherry picked from commit 1f5df7407f)
2025-12-16 15:22:35 -08:00
Elizabeth Thompson
8e70875d6b fix: add subdirectory deployment support for app icon and reports urls (#35098)
Co-authored-by: Claude <noreply@anthropic.com>
Co-authored-by: Daniel Gaspar <danielvazgaspar@gmail.com>
(cherry picked from commit b35b1d7633)
2025-12-15 14:17:22 -08:00
Luis Sánchez
03e5001e0e fix(SqlLab): enhance SQL formatting with Jinja template support. (#36277)
(cherry picked from commit e7c060466d)
2025-12-15 10:09:51 -08:00
Risheit Munshi
cbd27802a8 fix(chart): Display better hover text for country map charts (#36323)
Co-authored-by: askinner1 <144823527+askinner1@users.noreply.github.com>
Co-authored-by: codeant-ai-for-open-source[bot] <244253245+codeant-ai-for-open-source[bot]@users.noreply.github.com>
(cherry picked from commit 67cf287c03)
2025-12-15 09:59:53 -08:00
Shunki
df28ce4deb fix(roles): Add missing SQLLab permissions for estimate and format (#36263)
(cherry picked from commit 440cbc4c1f)
2025-12-15 09:17:06 -08:00
Sam Firke
1236a8582e fix(heatmap): y-axis sorts in order (#36302)
Co-authored-by: Evan Rusackas <evan@preset.io>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
(cherry picked from commit 3345eb32c5)
2025-12-08 15:42:23 -08:00
Enzo Martellucci
b1c57c1fc8 fix(Gauge): clearing previously set min and max values in a gauge chart sets the data labels to 0 (#36425)
Co-authored-by: Diego Pucci <diegopucci.me@gmail.com>
(cherry picked from commit 236e000398)
2025-12-08 15:41:30 -08:00
Elizabeth Thompson
66a7a0a690 fix(reports): simplify logging to focus on timing metrics (#36227)
Co-authored-by: Claude <noreply@anthropic.com>
Co-authored-by: Vitor Avila <vitorfragadeavila@gmail.com>
(cherry picked from commit c36ac53445)
2025-12-08 15:41:30 -08:00
Gabriel Torres Ruiz
3ce1687725 fix(echarts): pass vizType to enable theme overrides in all chart types (#36389)
(cherry picked from commit 1d8d30e5bb)
2025-12-08 15:30:04 -08:00
yousoph
3e42dd8511 fix: button text capitalization (#36444) 2025-12-08 13:48:10 -08:00
Joe Li
6a1c30e5e7 chore: update changelog for 6.0.0rc4 2025-12-04 10:55:36 -08:00
Felipe López
e763c96381 fix(SQLLab): most recent queries at the top in Query History without refreshing the page (#36359)
(cherry picked from commit 62d86aba14)
2025-12-03 10:17:30 -08:00
Beto Dealmeida
0753fd4c45 fix: is_column_reference check (#36382)
(cherry picked from commit d05ab91d11)
2025-12-02 13:15:39 -08:00
om pharate
3a537498f6 feat(controlPanel): add integer validation for rows per page setting (#36289)
(cherry picked from commit 01f032017f)
2025-12-01 14:46:28 -08:00
Daniel Vaz Gaspar
8f061d0c0a fix(log): remove unwanted info from logs REST API (#36269)
(cherry picked from commit bae716fa83)
2025-11-25 16:07:35 -08:00
Daniel Vaz Gaspar
e0e52086cd fix: remove unwanted info from tags REST API (#36266)
(cherry picked from commit cd36845d56)
2025-11-25 08:41:39 -08:00
Enzo Martellucci
2a21ef6dc9 fix: Columns bleeding into other cells (#36134)
Co-authored-by: Diego Pucci <diegopucci.me@gmail.com>
Co-authored-by: Geidō <60598000+geido@users.noreply.github.com>
(cherry picked from commit 062e4a2922)
2025-11-25 08:41:01 -08:00
Enzo Martellucci
72fbaa6677 fix: Table chart types headers are offset from the columns in the table (#36190)
Co-authored-by: Diego Pucci <diegopucci.me@gmail.com>
(cherry picked from commit ab8352ee66)
2025-11-25 08:40:15 -08:00
Enzo Martellucci
6d49d1e182 fix: Extra controls width for Area Chart on dashboards (#36133)
Co-authored-by: Diego Pucci <diegopucci.me@gmail.com>
(cherry picked from commit cac6ffcd3c)
2025-11-25 08:39:46 -08:00
Elizabeth Thompson
5b51c7e89e fix(screenshots): Only cache thumbnails when image generation succeeds (#36126)
Co-authored-by: Claude <noreply@anthropic.com>
(cherry picked from commit 08c1d03479)
2025-11-25 08:38:39 -08:00
Beto Dealmeida
74f455f076 fix: adhoc column quoting (#36215)
(cherry picked from commit e303537e0c)
2025-11-21 13:43:04 -08:00
Daniel Vaz Gaspar
a911a50680 fix(sqllab): validate results backend writes and enhance 410 diagnostics (#36222)
(cherry picked from commit 348b19cb4c)
2025-11-21 11:18:33 -08:00
Enzo Martellucci
5b820699e8 fix(dashboard): adjust vertical spacing for numerical range filter to prevent overlaps (#36167)
(cherry picked from commit 6d359161bb)
2025-11-20 09:25:55 -08:00
Joe Li
c3308f4447 chore: update changelog for 6.0.0rc3 2025-11-19 16:07:14 -08:00
Beto Dealmeida
9cfd35d43a chore: bump duckdb et al. (#36171)
(cherry picked from commit 53207302f9)
2025-11-19 13:55:45 -08:00
Evan Rusackas
785a6d0237 chore(docs): config Kapa to use logo from the repo (#36177)
(cherry picked from commit cdbd5bf4f9)
2025-11-19 13:48:28 -08:00
Richard Fogaca Nienkotter
71be38f003 fix(dashboard): ensure charts re-render when visibility state changes (#36011)
(cherry picked from commit 4582f0e8d2)
2025-11-19 13:47:44 -08:00
Enzo Martellucci
f3db80bfee fix(datasets): prevent viewport overflow in dataset creation page (#36166)
(cherry picked from commit a268232ed6)
2025-11-18 14:23:20 -08:00
SBIN2010
6cc46750b9 fix: role list edit modal height (#36123)
(cherry picked from commit 43e9e1ec36)
2025-11-18 11:00:58 -08:00
Richard Fogaca Nienkotter
c9a7f2d02e fix(cache): apply dashboard filters to non-legacy visualizations (#36109)
(cherry picked from commit 8315804c85)
2025-11-18 11:00:20 -08:00
Richard Fogaca Nienkotter
3c5868c412 fix: 'save and go to dashboard' option was disabled after changing the chart type (#36122)
(cherry picked from commit a9fd600c52)
2025-11-18 10:59:13 -08:00
PolinaFam
4112fecc93 fix(translations): Fix Russian translations for EmptyState (#34055)
Co-authored-by: Polina Fam <pfam@ptsecurity.com>
(cherry picked from commit fb325a8f24)
2025-11-18 10:51:03 -08:00
Yuvraj Singh Chauhan
ea1ab05e8d fix(tags): ensure tag creation is compatible with MySQL by avoiding Markup objects (#36075)
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
(cherry picked from commit 28bdec2c79)
2025-11-18 10:49:04 -08:00
Beto Dealmeida
0e3092dd56 fix(datasets): prevent double time filter application in virtual datasets (#35890)
Co-authored-by: Claude <noreply@anthropic.com>
(cherry picked from commit 3b226038ba)
2025-11-18 10:48:18 -08:00
Gabriel Torres Ruiz
91814f3dfe fix(navbar): some styling + components inconsistencies (#36120)
(cherry picked from commit 9bff64824b)
2025-11-17 15:06:20 -08:00
Yong Le He
c9501fddb8 fix(dashboard): ensure world map chart uses correct country code format in crossfilter (#35919)
(cherry picked from commit fb8eb2a5c3)
2025-11-17 11:38:21 -08:00
Levis Mbote
fe58baa23c fix: fix crossfilter persisting after removal (#35998)
(cherry picked from commit 85413f2a65)
2025-11-17 11:35:58 -08:00
SBIN2010
19ebeea030 fix: opacity color formating (#36101) 2025-11-14 15:53:42 -08:00
Joe Li
18ed2290bc fix(table-chart): fix missing table header IDs (#35968)
Co-authored-by: Claude <noreply@anthropic.com>
2025-11-14 15:53:24 -08:00
Richard Fogaca Nienkotter
79ec265a30 fix: save button was enabled even no changes were made to the dashboard (#35817) 2025-11-14 14:24:47 -08:00
Janani Gurram
aab835a096 fix(histogram): add NULL handling for histogram (#35693)
Co-authored-by: Rachel Pan <r.pan@mail.utoronto.ca>
Co-authored-by: Rachel Pan <panrrachel@gmail.com>
Co-authored-by: Janani Gurram <68124448+JG-ctrl@users.noreply.github.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
(cherry picked from commit c955a5dc08)
2025-11-14 13:58:38 -08:00
Beto Dealmeida
b19372fe16 fix: RLS in virtual datasets (#36061)
(cherry picked from commit f3e620cd0f)
2025-11-14 13:58:26 -08:00
Enzo Martellucci
a083e189e2 fix(ace-editor-popover): main AntD popover closes when clicking autocomplete suggestions in Ace Editor (#35986)
(cherry picked from commit 9ef87e75d5)
2025-11-14 12:51:52 -08:00
Richard Fogaca Nienkotter
0f5918dbd9 fix(chart): align legend with chart grid in List mode for Top/Bottom orientations (#36077)
(cherry picked from commit 37d58a476c)
2025-11-14 12:24:03 -08:00
Richard Fogaca Nienkotter
3a54cade44 fix(dashboard): prevent tab content cutoff and excessive whitespace in empty tabs (#35834)
(cherry picked from commit 78f9debdd4)
2025-11-14 12:13:55 -08:00
Mehmet Salih Yavuz
cbdbc2c295 fix(dashboard): refresh tabs as they load when dashboard is refreshed (#35265)
(cherry picked from commit 74a590cb76)
2025-11-14 12:12:17 -08:00
Richard Fogaca Nienkotter
548480bd8e fix(explore): re-apply filters when 'Group remaining as Others' is enabled (#35937)
(cherry picked from commit 4a04d46118)
2025-11-13 22:12:28 -08:00
Vitor Avila
6179eb9ef4 fix: Use singlestoredb dialect for sqlglot (#36096)
(cherry picked from commit 6701d0ae0c)
2025-11-13 22:10:06 -08:00
Gabriel Torres Ruiz
15c4ee63b2 fix(navbar): Minor fixes in navbar spacings (#36091)
(cherry picked from commit 4515d18ddd)
2025-11-13 22:09:32 -08:00
Mehmet Salih Yavuz
89a36ea131 fix(sql): quote column names with spaces to prevent SQLGlot parsing errors (#35553)
(cherry picked from commit 306f4c14cf)
2025-11-13 22:08:42 -08:00
Levis Mbote
2d0017033c fix: fix tabs overflow in dashboards (#35984)
(cherry picked from commit bb2e2a5ed6)
2025-11-13 21:21:11 -08:00
Richard Fogaca Nienkotter
1a4ae81058 fix(dashboard): dashboard filter was incorrectly showing as out of scope (#35886)
Co-authored-by: Mehmet Salih Yavuz <salih.yavuz@proton.me>
(cherry picked from commit a45c0528da)
2025-11-13 19:41:20 -08:00
Richard Fogaca Nienkotter
c9d8baf9a1 fix(dashboard): align filter bar elements vertically in horizontal mode (#36036)
(cherry picked from commit d123249bd2)
2025-11-12 10:53:18 -08:00
Richard Fogaca Nienkotter
a2fcb64ef3 fix(sqllab): prevent unwanted tab switching when autocompleting table names on SQL Lab (#35992)
(cherry picked from commit 9fbfcf0ccd)
2025-11-12 10:42:01 -08:00
Richard Fogaca Nienkotter
8a84b17270 fix: saved query preview modal not highlighting active rows (#35866)
(cherry picked from commit 4376476ec4)
2025-11-12 10:41:06 -08:00
Mehmet Salih Yavuz
992cb83088 fix(permalink): exclude edit mode from dashboard permalink (#35889)
(cherry picked from commit e2e831e322)
2025-11-12 10:40:15 -08:00
Joe Li
8c43578b70 fix(explore): show validation errors in View Query modal (#35969)
Co-authored-by: Claude <noreply@anthropic.com>
(cherry picked from commit 21d585d586)
2025-11-11 17:19:26 -08:00
Kamil Gabryjelski
933ec0a918 fix: Flakiness around scrolling during taking tiled screenshots with Playwright (#36051)
(cherry picked from commit 63dfd95aa2)
2025-11-10 11:56:32 -08:00
Mehmet Salih Yavuz
70117eb55f fix(date_parser): add check for time range timeshifts (#36039)
(cherry picked from commit c9f65cf1c2)
2025-11-10 10:08:45 -08:00
Elizabeth Thompson
8c22e61ef1 fix(reports): improve error handling for report schedule execution (#35800)
Co-authored-by: Claude <noreply@anthropic.com>
(cherry picked from commit c42e3c6837)
2025-11-10 10:08:39 -08:00
Elizabeth Thompson
bed186b32f fix(filters): preserve backend metric-based sorting (#35152)
Co-authored-by: Claude <noreply@anthropic.com>
(cherry picked from commit 909bd877c9)
2025-11-07 12:06:02 -08:00
Vedant Prajapati
a52cfef8b1 fix(echarts): Series style hidden for line charts (#33677)
Co-authored-by: Vedant Prajapati <vedantprajapati@geotab.com>
Co-authored-by: Claude <noreply@anthropic.com>
(cherry picked from commit 258512fef2)
2025-11-07 12:04:11 -08:00
Kamil Gabryjelski
3b7a52d1eb fix: Ensure that Playwright tile height is always positive (#36027)
(cherry picked from commit 728bc2c632)
2025-11-07 12:03:10 -08:00
amaannawab923
d8c8430ed7 fix(Context-Menu): Fixing Context Menu for Table Chart with Html Content (#33791)
(cherry picked from commit 0307c71945)
2025-11-07 12:02:20 -08:00
Gabriel Torres Ruiz
bc3f146eaf fix(UI): spacings + UI fixes (#36010)
(cherry picked from commit c11be72ead)
2025-11-07 11:18:29 -08:00
Mehmet Salih Yavuz
1245a1e26a fix(SelectFilterPlugin): clear all clears all filters including dependent ones (#35303)
(cherry picked from commit af37e12de4)
2025-11-06 19:42:21 -08:00
Enzo Martellucci
446136b46c fix(view-in-sqllab): unable to open virtual dataset after discarding chart edits (#35931)
(cherry picked from commit 392b880b52)
2025-11-06 18:05:12 -08:00
ethan-l-geotab
33e53143e6 fix(chart list): Facepile shows correct users when saving chart properties (#33392)
(cherry picked from commit 14f20e644e)
2025-11-06 17:23:56 -08:00
Enzo Martellucci
706a04be7f fix(DatabaseModal): prevent errors when pasting text into supported database select (#35916)
(cherry picked from commit 1f960d5761)
2025-11-06 17:23:23 -08:00
Mehmet Salih Yavuz
2c86d1ae9c fix(explore): Overwriting a chart updates the form_data_key (#35888)
(cherry picked from commit 3f49938b79)
2025-11-06 16:04:45 -08:00
Mehmet Salih Yavuz
8bc1f98033 fix(TimeTable): Match calculations between filtered and non filtered states (#35619)
(cherry picked from commit 04231c86db)
2025-11-06 16:00:21 -08:00
Rafael Benitez
f7ebdd71e7 fix(dashboard): fix dataset search in filter config modal (#35488)
Co-authored-by: Claude <noreply@anthropic.com>
(cherry picked from commit 53687ae659)
2025-11-06 14:23:45 -08:00
Mehmet Salih Yavuz
c48b5ad65e fix(DatasourceEditor): preserve calculated column order when editing sql (#35790)
(cherry picked from commit 7265567561)
2025-11-04 11:59:56 -08:00
Joe Li
8e4efe2cc2 test(useThemeMenuItems): fix race conditions by awaiting all userEvent calls (#35918)
Co-authored-by: Claude <noreply@anthropic.com>
(cherry picked from commit 5224347c39)
2025-11-03 10:42:29 -08:00
Richard Fogaca Nienkotter
e818d0b11f fix(sqllab): align refresh buttons with select input fields (#35917)
(cherry picked from commit 27011d0239)
2025-11-03 10:42:03 -08:00
Joe Li
e0a4b98351 fix(explore): formatting the SQL in "View Query" pop-up doesn't format (#35898)
Co-authored-by: Claude <noreply@anthropic.com>
(cherry picked from commit be3690c22b)
2025-11-03 10:41:36 -08:00
Yuvraj Singh Chauhan
131359c78f fix(db2): update time grain expressions for DAY to use DATE function (#35848)
(cherry picked from commit 30d584afd1)
2025-10-31 09:52:37 -07:00
Ville Brofeldt
6267856b0d fix: set pandas 2.1 as requirement (#35912)
(cherry picked from commit f6f15f58ee)
2025-10-31 09:48:04 -07:00
Beto Dealmeida
ce21b04621 chore: bump shillelagh to 1.4.3 (#35895)
(cherry picked from commit 5fc934d859)
2025-10-30 12:30:15 -07:00
SBIN2010
1fdb3210f9 fix: displaying cell bars in table (#35885)
(cherry picked from commit dd857a2c7a)
2025-10-30 11:55:11 -07:00
Amin Ghadersohi
e21cb9a6d9 fix: add utc=True to pd.to_datetime for timezone-aware datetimes (#35587)
(cherry picked from commit 5c57c9c0b2)
2025-10-29 10:52:38 -07:00
Elizabeth Thompson
3f6f53569f fix(reports): Add celery task execution ID to email notification logs (#35807)
Co-authored-by: Claude <noreply@anthropic.com>
(cherry picked from commit 61c68f7b8f)
2025-10-29 10:51:43 -07:00
Mehmet Salih Yavuz
87f36d2b2f fix(echarts): fix time shift color matching functionality (#35826)
Co-authored-by: Claude <noreply@anthropic.com>
(cherry picked from commit 5218b4eea2)
2025-10-29 10:51:06 -07:00
innovark
36c14f81f3 fix: update Russian translations (#35750)
(cherry picked from commit 61758c07d2)
2025-10-28 13:34:26 -07:00
Joe Li
e5ee7a0a15 fix(theme): add fontWeightStrong to allowedAntdTokens to fix bold markdown rendering (#35821)
Co-authored-by: Claude <noreply@anthropic.com>
(cherry picked from commit bf830b2dd5)
2025-10-28 13:33:41 -07:00
Martyn Gigg
78a53484fc fix(sqllab): Fix CSV export button href in SQL Lab when application root is defined (#35118)
(cherry picked from commit 6704c0aaec)
2025-10-28 12:55:36 -07:00
Mehmet Salih Yavuz
5ecd067ed3 fix(SqlLab): South pane visual changes (#35601)
(cherry picked from commit 6e60a00d69)
2025-10-28 11:39:24 -07:00
ngokturkkarli
78983a6f25 fix(native-filters): prevent circular dependencies and improve dependency handling (#35317)
(cherry picked from commit 0bf34d4d6f)
2025-10-28 10:49:54 -07:00
Levis Mbote
4d996cec5e fix(database-modal): fix issue where commas could not be typed into DB configuration. (#35289)
(cherry picked from commit 19473af401)
2025-10-28 10:48:34 -07:00
Daniel Vaz Gaspar
41ac8d8d9c fix: unpin holidays and prophet (#35771)
Co-authored-by: Claude <noreply@anthropic.com>
(cherry picked from commit 51aad52e6c)
2025-10-28 10:47:02 -07:00
Elizabeth Thompson
d1feafb400 fix(dashboard): handle invalid thumbnail BytesIO objects gracefully (#35808)
Co-authored-by: Claude <noreply@anthropic.com>
(cherry picked from commit 7c9720e22b)
2025-10-28 10:45:05 -07:00
Marcos Amorim
877997ceda fix(alerts): improve Slack API rate limiting for large workspaces (#35622)
(cherry picked from commit c3b8c96db6)
2025-10-28 10:44:07 -07:00
Joe Li
26177314db docs(db_engine_specs): restructure feature table for GitHub rendering (#35809)
Co-authored-by: Claude <noreply@anthropic.com>
(cherry picked from commit 93cb60b24e)
2025-10-28 10:42:28 -07:00
Gabriel Torres Ruiz
a3aef76427 fix(ag-grid): fix conditional formatting theme colors and module extensibility (#35605)
(cherry picked from commit 5e4a80e5d0)
2025-10-23 16:26:54 -07:00
Richard Fogaca Nienkotter
fc222eefb7 fix: edit dataset modal visual fixes (#35799)
(cherry picked from commit 1234533c67)
2025-10-23 11:01:48 -07:00
Mehmet Salih Yavuz
36bacf2ae4 fix(ThemeController): replace fetch with SupersetClient for proper auth (#35794)
(cherry picked from commit 7f0c0aea94)
2025-10-22 11:47:27 -07:00
Mehmet Salih Yavuz
bda2d8c145 fix(security): Add active property to guest user (#35454)
(cherry picked from commit 98fba1eefe)
2025-10-22 11:45:44 -07:00
Geidō
a30b212a37 fix(Actions): Improper spacing (#35724)
(cherry picked from commit bad03b1e76)
2025-10-21 14:32:26 -07:00
Erkka Tahvanainen
b07011872b fix(playwright): Download dashboard correctly (#35484)
Co-authored-by: Erkka Tahvanainen <erkka.tahvanainen@confidently.fi>
(cherry picked from commit d089a96163)
2025-10-20 15:52:31 -07:00
yousoph
23b02963b6 fix(charts): update axis title labels to sentence case (#35694)
Co-authored-by: Claude <noreply@anthropic.com>
(cherry picked from commit 9ab0a0179d)
2025-10-17 13:29:02 -07:00
Sam Firke
80fce9a662 fix(auth): redirect anonymous attempts to view dashboard with next (#35345) 2025-10-17 12:53:08 -07:00
Beto Dealmeida
3bfd4efa21 fix(dataset): render default URL description properly in settings (#35669)
Co-authored-by: Claude <noreply@anthropic.com>
(cherry picked from commit f405174fcf)
2025-10-16 16:50:46 -07:00
Gabriel Torres Ruiz
151633a1fd fix(theme-crud): enable overwrite confirmation UI for theme imports (#35558)
(cherry picked from commit de1dd53186)
2025-10-15 18:23:00 -07:00
Gabriel Torres Ruiz
fe7823cc10 fix(table-chart): fix page size label visibility and improve header control wrapping (#35648)
(cherry picked from commit 58672dfab6)
2025-10-15 18:22:44 -07:00
Rafael Benitez
f7a64f05c5 fix(theme): align "Clear local theme" option with other theme menu items (#35651)
(cherry picked from commit 4b5629d1c8)
2025-10-15 18:22:30 -07:00
Elizabeth Thompson
35861f7ec0 fix: Log Celery task failures with a signal handler (#35595)
Co-authored-by: Claude <noreply@anthropic.com>
(cherry picked from commit ccc0e3dbb2)
2025-10-15 16:06:57 -07:00
innovark
7abe5c379e fix(d3-format): call setupFormatters synchronously to apply D3 format… (#35529)
(cherry picked from commit c38ba1daa8)
2025-10-14 14:22:24 -07:00
Damian Pendrak
36f23a003f fix(deckgl): scatterplot fix categorical color (#35537) 2025-10-14 14:19:36 -07:00
Luiz Otavio
412d9c8cbc fix(csv upload): Correctly casting to string numbers with floating points (e+) (#35586)
(cherry picked from commit 17ebbdd966)
2025-10-10 14:32:26 -07:00
Elizabeth Thompson
c799f5cedd fix(alerts): log execution_id instead of report schedule name in query timing (#35592)
Co-authored-by: Claude <noreply@anthropic.com>
(cherry picked from commit e437ae1f2f)
2025-10-10 12:30:56 -07:00
Mehmet Salih Yavuz
1d6d12cfb4 fix(tables): Dark mode scrollbar styles for webkit (#35338)
(cherry picked from commit 412587ad41)
2025-10-10 12:26:03 -07:00
Mehmet Salih Yavuz
b41ad89474 fix(Alerts): Correct icon sizes (#35572)
(cherry picked from commit 5a15c632ad)
2025-10-09 09:38:41 -07:00
Daniel Vaz Gaspar
52993e68e1 fix: dataset update with invalid SQL query (#35543)
(cherry picked from commit 50a5854b25)
2025-10-08 17:13:41 -07:00
Gabriel Torres Ruiz
2a474e017a fix(charts): fix legend theming and hollow symbols in dark mode (#35123)
(cherry picked from commit 7fd5a7668b)
2025-10-08 15:08:16 -07:00
Rafael Benitez
8d4a1cfc05 fix(chart): Fixes BigNumber gradient appearing blackish in light mode (#35527)
(cherry picked from commit f7b9d7a64b)
2025-10-07 10:56:17 -07:00
Mehmet Salih Yavuz
6c82d480a7 fix(explore): Include chart canvases in the screenshot (#35491)
(cherry picked from commit 89932fa0b2)
2025-10-07 10:55:47 -07:00
Daniel Vaz Gaspar
f6b050d270 fix: update chart with dashboards validation (#35523)
(cherry picked from commit 9d50f1b8a2)
2025-10-07 10:35:43 -07:00
Amin Ghadersohi
22c8551d64 fix(webdriver): add missing options object to WebDriver initialization (#35504)
(cherry picked from commit 77c3146829)
2025-10-06 13:43:08 -07:00
Vitor Avila
37e280f5bd fix: Support metric macro for embedded users (#35508)
Co-authored-by: Beto Dealmeida <roberto@dealmeida.net>
(cherry picked from commit 4545d55d30)
2025-10-06 13:42:40 -07:00
Rafael Benitez
bc1fda5a4a fix(explore): correct search icon in dashboard submenu (#35489)
(cherry picked from commit a7b158c7fa)
2025-10-06 13:42:07 -07:00
Mehmet Salih Yavuz
0a6b3de884 fix(Select): Prevent closing the select when clicking on a tag (#35487)
(cherry picked from commit d39c55e941)
2025-10-06 13:39:57 -07:00
Elizabeth Thompson
012765cd0b fix(loading): improve loading screen theming for dark mode support (#35129)
Co-authored-by: Claude <noreply@anthropic.com>
2025-10-06 11:44:32 -07:00
Tran Ngoc Tuan
b633bc5577 fix(security-manager): switch from deprecated get_session to session attribute (#35290)
(cherry picked from commit 04b1a45416)
2025-10-03 16:33:53 -07:00
Beto Dealmeida
d5fa2d86f0 fix(sqlglot): adhoc expressions (#35482)
(cherry picked from commit 139b5ae20c)
2025-10-03 11:28:20 -07:00
Mehmet Salih Yavuz
8dbbbbf136 fix(dashboard): Navigate to new dashboard when saved as a new one (#35339)
(cherry picked from commit 891f826143)
2025-10-03 11:27:41 -07:00
Mehmet Salih Yavuz
e61a0dd619 fix(theming): CRUD view padding (#35321)
(cherry picked from commit 0e2fb1d1a3)
2025-10-03 11:26:00 -07:00
amaannawab923
24a84a23f2 fix(ag-grid-table): remove enterprise features to use community version (#35453)
(cherry picked from commit 96170e43c0)
2025-10-03 11:25:32 -07:00
Beto Dealmeida
e4cbc5db4c fix(cache): ensure SQL is sanitized before cache key generation (#35419)
(cherry picked from commit 62dc5c0306)
2025-10-02 10:59:44 -07:00
Beto Dealmeida
e0e8d1d177 fix(pinot): more functions (#35451)
(cherry picked from commit 3202ff4b3f)
2025-10-02 10:57:56 -07:00
Gabriel Torres Ruiz
b47dc64cd5 fix(dashboard): exit markdown edit mode when clicking outside of element (#35336)
(cherry picked from commit 553204e613)
2025-10-02 10:57:35 -07:00
Rafael Benitez
61bf39f0d5 fix(dataset): sort by database in Dataset and Saved queries Issue (#35277)
(cherry picked from commit fe8348c03a)
2025-10-02 10:57:19 -07:00
Beto Dealmeida
efbfcd737d fix(pinot): SUBSTR function (#35427)
(cherry picked from commit 30021f8ede)
2025-10-02 10:57:00 -07:00
Beto Dealmeida
4c60bd1392 fix(pinot): DATE_SUB function (#35426)
(cherry picked from commit f3349388d0)
2025-10-02 10:56:46 -07:00
Antonio Rivero
6420d06fc0 fix(slice): Fix using isdigit when id passed as int (#35452)
(cherry picked from commit 449a89c214)
2025-10-02 10:56:23 -07:00
Beto Dealmeida
51396f0b94 fix(pinot): DATE_ADD function (#35424)
(cherry picked from commit 5428376662)
2025-10-02 10:56:08 -07:00
Beto Dealmeida
6bb13ef3b4 fix(pinot): dialect date truncation (#35420)
Co-authored-by: bito-code-review[bot] <188872107+bito-code-review[bot]@users.noreply.github.com>
(cherry picked from commit aa97d2fe03)
2025-10-01 13:15:17 -07:00
Beto Dealmeida
b842eeb893 fix: table quoting in DBs with supports_cross_catalog_queries=True (#35350)
(cherry picked from commit 13a164dd63)
2025-10-01 13:14:35 -07:00
Rafael Benitez
50e2a06306 fix(explore): close unsaved changes modal when discarding changes (#35307)
(cherry picked from commit d8688cf8b1)
2025-10-01 13:14:08 -07:00
Geidō
e80f44716c fix(SqlLab): Hit tableschemaview with a valid queryEditorId (#35341)
(cherry picked from commit a66c230058)
2025-10-01 13:13:29 -07:00
Beto Dealmeida
94d10af733 fix(pinot): restrict types in dialect (#35337)
(cherry picked from commit bf88d9bb1c)
2025-09-30 13:52:42 -07:00
Beto Dealmeida
8d49999af6 fix: adhoc orderby in explore (#35342)
(cherry picked from commit d51b35f61b)
2025-09-30 13:52:30 -07:00
Beto Dealmeida
927c94306e feat: sqlglot dialect for Pinot (#35333)
(cherry picked from commit 4e093a8e2a)
2025-09-30 10:55:26 -07:00
Mehmet Salih Yavuz
5074ee0af8 fix(doris): Don't set supports_cross_catalog_queries to true (#35332)
Co-authored-by: Beto Dealmeida <roberto@dealmeida.net>
(cherry picked from commit ef78d2af06)
2025-09-30 10:12:35 -07:00
Geidō
7ba76a85f4 fix: AceEditor Autocomplete Highlight (#35316)
(cherry picked from commit 90f281f585)
2025-09-29 16:14:53 -07:00
Elizabeth Thompson
d9646dedd9 fix(DatasourceModal): replace imperative modal updates with declarative state (#35256)
Co-authored-by: Claude <noreply@anthropic.com>
(cherry picked from commit 82e2bc6181)
2025-09-29 14:17:28 -07:00
Gabriel Torres Ruiz
ac582322b8 fix(sqllab): fix blank bottom section in SQL Lab left panel (#35309)
(cherry picked from commit 784ff82847)
2025-09-29 09:45:29 -07:00
Mehmet Salih Yavuz
d2d99d4698 fix(DateFilterControl): remove modal overlay style to fix z-index issues (#35292)
(cherry picked from commit 027b25e6b8)
2025-09-29 09:42:26 -07:00
SBIN2010
76d13176a1 fix(table): New ad-hoc columns retain the name of previous columns (#35274)
(cherry picked from commit b652fab042)
2025-09-29 09:42:01 -07:00
Geidō
f6209e1ca9 fix: Cosmetic issues (#35122) 2025-09-25 16:34:27 -07:00
Mehmet Salih Yavuz
97649d7290 fix(BuilderComponentPane): navigation tabs padding (#35213)
(cherry picked from commit 7a9dbfe879)
2025-09-25 10:38:10 -07:00
Giulio Piccolo
df0f6f6ec3 fix(deck.gl): ensure min/max values are included in polygon map legend breakpoints (#35033)
Co-authored-by: bito-code-review[bot] <188872107+bito-code-review[bot]@users.noreply.github.com>
(cherry picked from commit 0de78d8203)
2025-09-25 10:38:00 -07:00
Beto Dealmeida
0a89b306e5 fix(SQL Lab): syncTable on new tabs (#35216)
(cherry picked from commit 94686ddfbe)
2025-09-24 14:10:52 -07:00
SBIN2010
7263133c52 fix(Mixed Chart): Tooltip incorrectly displays numbers with optional Y-axis format and showQueryIdentifiers set to true (#35224)
(cherry picked from commit ec322dfd8d)
2025-09-24 14:10:37 -07:00
Elizabeth Thompson
a4e3d21176 fix(dashboard): update header border to use colorBorder token (#35199)
Co-authored-by: Claude <noreply@anthropic.com>
(cherry picked from commit b6f6b75348)
2025-09-24 13:44:06 -07:00
Mehmet Salih Yavuz
485ff97b0f fix(ConditionalFormattingControl): icon color in dark mode (#35243)
(cherry picked from commit c601341520)
2025-09-23 12:01:22 -07:00
Levis Mbote
1621c70b68 fix(table-chart): fix cell bar visibility in dark theme (#35211)
(cherry picked from commit ce55cc7dd7)
2025-09-23 12:00:51 -07:00
Gabriel Torres Ruiz
13b7bbe9a4 feat(bug): defensive code to avoid accesing attribute of a NoneType object (#35219)
(cherry picked from commit 48e1b1ff2c)
2025-09-23 12:00:17 -07:00
Joe Li
886f525545 chore: Adds RC2 data to CHANGELOG.md 2025-09-22 12:30:01 -07:00
Beto Dealmeida
b76a0e1d2d chore: bump sqlglot to 27.15.2 (#35176)
(cherry picked from commit 5ec8f9d886)
2025-09-22 10:23:01 -07:00
Mehmet Salih Yavuz
542efcdb11 fix(SQLPopover): Use correct component (#35212)
(cherry picked from commit 076e477fd4)
2025-09-22 10:22:49 -07:00
SBIN2010
0ac7464649 fix: bug in tooltip timeseries chart in calculated total with annotation layer (#35179)
(cherry picked from commit 1e4bc6ee78)
2025-09-21 18:30:22 -07:00
Pat Buxton
e5bb8bf0ff fix: Bump pandas to 2.1.4 for python 3.12 (#34999)
(cherry picked from commit db178cf527)
2025-09-21 18:30:12 -07:00
SBIN2010
8306b66515 fix(Funnel): onInit overridden row_limit to default value on save chart (#35076)
(cherry picked from commit 23bb4f88c0)
2025-09-21 18:29:59 -07:00
Levis Mbote
9a0dc23755 fix(gantt-chart): fix Y-axis label visibility in dark theme (#35189)
(cherry picked from commit 4130b92966)
2025-09-21 18:29:28 -07:00
marun
5561f529f2 fix(CrudThemeProvider): Optimized theme loading logic (#35155)
(cherry picked from commit 1bf112a57a)
2025-09-21 18:29:03 -07:00
marun
b0ceb2a162 fix(embedded): resolve theme context error in Loading component (#35168)
Co-authored-by: Claude <noreply@anthropic.com>
(cherry picked from commit 1f530d45cb)
2025-09-21 18:28:36 -07:00
Maxime Beauchemin
7fde43b476 fix(viz): resolve dark mode compatibility issues in BigNumber and Heatmap (#35151)
Co-authored-by: Claude <noreply@anthropic.com>
(cherry picked from commit 05c6a1bf20)
2025-09-16 13:49:36 -07:00
SBIN2010
99519cd4ce fix: import bug template params (#35144)
(cherry picked from commit c193d6d6a1)
2025-09-16 13:49:05 -07:00
Joe Li
9525742b56 fix(deck.gl): restore legend display for Polygon charts with linear palette and fixed color schemes (#35142)
Co-authored-by: Claude <noreply@anthropic.com>
(cherry picked from commit fb840b8e71)
2025-09-16 13:48:25 -07:00
Elizabeth Thompson
ad7acecbf2 fix: Remove emotion-rgba from dependencies and codebase (#35124)
(cherry picked from commit 19ddcb7e5c)
2025-09-15 12:00:14 -07:00
Gabriel Torres Ruiz
a423f8ecda fix(ListView): implement AntD pagination for ListView component (#35057)
(cherry picked from commit 36daa2dc3f)
2025-09-12 18:56:26 -07:00
Mehmet Salih Yavuz
1265b3d3e5 fix(theming): Lighter text colors on dark mode (#35114)
(cherry picked from commit 95333e34b1)
2025-09-12 17:09:19 -07:00
Daniel Vaz Gaspar
b2fd9e2fb1 fix: Bump FAB to 5.X (#33055)
Co-authored-by: Joe Li <joe@preset.io>
(cherry picked from commit a9fb853e3e)
2025-09-12 17:07:53 -07:00
Michael S. Molina
f3163e1c27 fix: SQL Lab tab events (#35105)
(cherry picked from commit e729b2dbb4)
2025-09-12 16:18:10 -07:00
SBIN2010
8c1fdcb179 fix: page size options 'all' correct in table and remove PAGE_SIZE_OPTIONS in handlebars (#35095)
(cherry picked from commit 06261f262b)
2025-09-12 15:43:06 -07:00
Priyanshu Kumar
eb2b4bfc30 fix(pie): fixes pie chart other click error (#35086)
(cherry picked from commit b42060c880)
2025-09-12 15:42:54 -07:00
Gabriel Torres Ruiz
5baee67df7 fix(theming): replace error color with bolt icon for local themes (#35090)
(cherry picked from commit 7bf16d805d)
2025-09-12 15:42:44 -07:00
Rafael Benitez
e8562bc641 fix(templates): Restores templates files accidentally removed (#35094)
(cherry picked from commit 529adebe1b)
2025-09-12 15:41:52 -07:00
Rafael Benitez
dedc10065e fix(settingsMenu): Version (#35096)
(cherry picked from commit 5a2411fa64)
2025-09-12 15:40:53 -07:00
LisaHusband
4dedfac238 fix(drill-to-detail): ensure axis label filters map to original column names (#34694)
Co-authored-by: bito-code-review[bot] <188872107+bito-code-review[bot]@users.noreply.github.com>
(cherry picked from commit a7d349a5c6)
2025-09-10 10:05:24 -07:00
Mehmet Salih Yavuz
2c870e8528 fix(timeshifts): Add missing feature flag to enum (#35072)
(cherry picked from commit 912ed2ba80)
2025-09-10 10:04:45 -07:00
Nicolas
baee1ab82b fix(Table Chart): render null dates properly (#34558)
(cherry picked from commit 65376c7baf)
2025-09-10 10:04:05 -07:00
SBIN2010
a8cf0981fa fix(table): table search input placeholder (#35064)
(cherry picked from commit c5f220a9ff)
2025-09-09 10:08:09 -07:00
catpineapple
8768a3f55a fix(tests): one of integration test in TestSqlaTableModel does not support MySQL "concat" (#35007)
Co-authored-by: Mehmet Salih Yavuz <salih.yavuz@proton.me>
(cherry picked from commit 9efb80dbf4)
2025-09-08 14:12:21 -07:00
Luiz Otavio
cf1902a4cc fix: Upload CSV as Dataset (#34763)
(cherry picked from commit 1c2b9db4f0)
2025-09-08 14:12:10 -07:00
Gabriel Torres Ruiz
d94c92db01 fix(dashboard): normalize spacings and background colors (#35001)
(cherry picked from commit 0fce5ecfa5)
2025-09-08 12:01:18 -07:00
Rafael Benitez
acec8743c0 fix(theming): Icons in ExecutionLogList and Country map chart tooltip theme consistency (#34828)
(cherry picked from commit bef1f4d045)
2025-09-08 12:01:06 -07:00
SBIN2010
9918670315 fix: mixed timeseries chart add legend margin (#35036)
(cherry picked from commit 5a3182ce21)
2025-09-08 11:55:31 -07:00
Damian Pendrak
997e000f6b fix(chart): change "No query." to "Query cannot be loaded" in Multi Layer Deck.gl Chart (#34973)
(cherry picked from commit c65cb284e6)
2025-09-05 11:17:17 -07:00
JUST.in DO IT
428c97a1d6 fix(echarts): rename time series shifted for isTimeComparisonValue (#35022)
(cherry picked from commit bc54b7970a)
2025-09-05 11:15:50 -07:00
SBIN2010
7996359719 fix: display legend mixed timeseries chart (#35005)
(cherry picked from commit 031fb4b5a8)
2025-09-05 11:04:15 -07:00
Evan Rusackas
444b98b95e fix(sql): Add Impala dialect support to sqlglot parser (#34662)
Co-authored-by: Claude <noreply@anthropic.com>
Co-authored-by: Joe Li <joe@preset.io>
(cherry picked from commit 7fb7ac8bef)
2025-09-04 16:25:30 -07:00
Mehmet Salih Yavuz
b51eda51ce fix(theming): more visual bugs (#34987)
(cherry picked from commit 569a7b33a5)
2025-09-04 16:25:10 -07:00
Mehmet Salih Yavuz
8a3dcadf87 fix(RoleListEditModal): display user's other properties in table (#35017)
(cherry picked from commit 59df0d6f15)
2025-09-04 16:22:36 -07:00
catpineapple
07fd60fe20 fix: doris genericDataType modify (#35011)
(cherry picked from commit 2e51d02806)
2025-09-04 16:20:40 -07:00
sha174n
06ada5472e fix(deps): expand pyarrow version range to <19 (#34870)
(cherry picked from commit 8406a827dd)
2025-09-03 22:39:53 -07:00
Joe Li
22826ba876 fix(tests): resolve AlertReportModal checkmark test failures (#34995) 2025-09-03 22:29:11 -07:00
JUST.in DO IT
dbe0845dc0 fix(ui-core): Invalid postTransform process (#34874)
(cherry picked from commit 448a28545b)
2025-09-03 18:12:41 -07:00
JUST.in DO IT
0c045127e4 fix(sqllab): autocomplete and delete tabs (#34781)
(cherry picked from commit cefd046ea0)
2025-09-03 18:09:12 -07:00
Gabriel Torres Ruiz
f69bdf5475 fix(error-handling): jinja2 error handling improvements (#34803) 2025-09-03 17:52:08 -07:00
Vitor Avila
d5a523db25 fix(databricks): string escaper v2 (#34991)
(cherry picked from commit 0de5b28716)
2025-09-03 11:40:44 -07:00
Evan Rusackas
38b456bc8a fix(charts): Handle virtual dataset names without schema prefix correctly (#34760)
Co-authored-by: Claude <noreply@anthropic.com>
(cherry picked from commit b5ae402c12)
2025-09-02 13:41:41 -07:00
Evan Rusackas
e1efc87fdc fix(echarts): Display NULL values in categorical x-axis for bar charts (#34761)
Co-authored-by: Claude <noreply@anthropic.com>
(cherry picked from commit 682cdcc3e0)
2025-09-02 13:41:09 -07:00
Mehmet Salih Yavuz
e84bdfaa6d fix(ChartCreation): Translate chart description (#34918)
(cherry picked from commit 5dba59b6a4)
2025-09-02 13:40:35 -07:00
Daniel Vaz Gaspar
930038d763 chore: bump FAB to 4.8.1 (#34838)
(cherry picked from commit 54af1cb2c8)
2025-09-02 13:37:46 -07:00
Daniel Vaz Gaspar
d30cd5dc2a fix: playwright feature flag evaluation (#34978)
(cherry picked from commit b2f8803486)
2025-09-02 11:23:27 -07:00
Gabriel Torres Ruiz
714a03e007 fix(TimeTable): use type-only export for TableChartProps to resolve webpack warnings (#34989)
(cherry picked from commit 744fa1f54c)
2025-09-02 11:22:43 -07:00
Gabriel Torres Ruiz
026e016720 fix(dashboard): table charts render correctly after tab switch and refresh (#34975)
(cherry picked from commit 6a4b1df3a2)
2025-09-02 11:22:01 -07:00
Beto Dealmeida
5442521e18 fix: Athena quoting (#34895)
(cherry picked from commit fad3cb3162)
2025-09-02 10:11:58 -07:00
Maxime Beauchemin
b8426b92c7 fix: revert mistake setting TALISMAN_ENABLED=False (#34909)
(cherry picked from commit bc9ec6ac63)
2025-09-02 10:10:03 -07:00
Gabriel Torres Ruiz
2f086475f8 fix(theming): fix TimeTable chart issues (#34868)
(cherry picked from commit d183969744)
2025-09-02 10:03:36 -07:00
Maxime Beauchemin
1c95ea5ab8 fix: complete theme management system import/export (#34850)
Co-authored-by: Claude <noreply@anthropic.com>
(cherry picked from commit 4695be5cc5)
2025-09-02 10:03:08 -07:00
Kamil Gabryjelski
a3a2c494cc fix: Improve table layout and column sizing (#34887)
Co-authored-by: Claude <noreply@anthropic.com>
(cherry picked from commit 175835138c)
2025-09-02 10:02:35 -07:00
Sam Firke
d6cc324798 fix(drilling): drill by pagination works with MSSQL data source, cont. (#34724)
(cherry picked from commit c5a84c0985)
2025-09-02 10:00:40 -07:00
Kamil Gabryjelski
5756d25a7c fix: Filter bar orientation submenu should not be highlighted (#34900)
(cherry picked from commit e463743fcf)
2025-08-29 10:28:36 -07:00
Joe Li
b16d6ed224 fix(ConfirmStatusChange): remove deprecated event.persist() to fix headless browser crashes (#34864)
Co-authored-by: Claude <noreply@anthropic.com>
(cherry picked from commit ebfb14c353)
2025-08-28 09:52:25 -07:00
Joe Li
18e8b064de fix(tests): Improve MessageChannel mocking to prevent worker force exits (#34878)
Co-authored-by: Claude <noreply@anthropic.com>
(cherry picked from commit 7946ec003f)
2025-08-28 09:52:03 -07:00
Kamil Gabryjelski
0c0dfc0601 fix: SelectControl default sort numeric choices by value (#34858)
(cherry picked from commit 665a11f821)
2025-08-28 09:51:15 -07:00
Kamil Gabryjelski
c80b8fea85 fix: Undefined error when viewing query in Explore + visual fixes (#34869)
(cherry picked from commit 5566eb8dd6)
2025-08-28 09:50:37 -07:00
Joe Li
160a8fe16c fix(tests): Mock MessageChannel to prevent Jest hanging from rc-overflow (#34871)
Co-authored-by: Claude <noreply@anthropic.com>
(cherry picked from commit 836540e8c9)
2025-08-27 23:19:01 -07:00
Kamil Gabryjelski
fc80861f47 fix: Remove the underline from the right section of main menu (#34855)
(cherry picked from commit b74a244950)
2025-08-27 12:01:38 -07:00
Kamil Gabryjelski
7169d9f2bd fix: DB icon sizes in database add modal (#34854)
(cherry picked from commit ab58b0a8a3)
2025-08-27 12:00:55 -07:00
Kamil Gabryjelski
37347525e7 fix(dashboard): Anchor link positions (#34843)
(cherry picked from commit 97b35a4640)
2025-08-27 12:00:10 -07:00
JUST.in DO IT
b6aa68dbfc fix(sqllab): Missing executed sql value in the result table (#34846)
(cherry picked from commit b89b0bdf5d)
2025-08-27 11:58:49 -07:00
Vitor Avila
e4f371b126 fix: Avoid dataset drill request if no perm (#34665)
(cherry picked from commit 9c9588cce6)
2025-08-27 11:58:18 -07:00
Vitor Avila
d0d816047c fix: Add dataset ID to file name on exports (#34782)
(cherry picked from commit 471d9fe737)
2025-08-27 11:57:07 -07:00
Rafael Benitez
2e28e22596 fix(theming): explore chart type style fixes, nav right menu spacing fixed (#34795)
(cherry picked from commit b381992a75)
2025-08-25 10:24:11 -07:00
Beto Dealmeida
a475d68693 fix: make get_image() always return BytesIO (#34801)
(cherry picked from commit 1204507d68)
2025-08-25 10:23:57 -07:00
Kamil Gabryjelski
dfd36f5a54 chore: Add instruction for LLMs to use antd theme tokens (#34800)
(cherry picked from commit c7779578f9)
2025-08-25 10:23:40 -07:00
Kamil Gabryjelski
ea5ebd2ec9 fix: Unexpected overflow ellipsis dots after status icon in Dashboard list (#34798)
(cherry picked from commit b225432c55)
2025-08-25 10:23:27 -07:00
Kamil Gabryjelski
d454a22f1c fix(echarts): Series labels hard to read in dark mode (#34815)
(cherry picked from commit 547f297171)
2025-08-25 10:23:14 -07:00
Joe Li
d01934d9d8 fix(Icons): Add missing data-test and aria-label attributes to custom icons (#34809)
Co-authored-by: Claude <noreply@anthropic.com>
(cherry picked from commit 5c3c2599db)
2025-08-25 10:22:58 -07:00
Michael S. Molina
25775504b9 fix: User-provided Jinja template parameters causing SQL parsing errors (#34802)
(cherry picked from commit e1234b2264)
2025-08-23 11:17:15 -07:00
JUST.in DO IT
4cc6984ebf fix: customize column description limit size in db_engine_spec (#34808)
(cherry picked from commit 75af53dc3d)
2025-08-23 11:16:43 -07:00
Mehmet Salih Yavuz
548d9e6f7b fix(DetailsPanel): Applied filters colors (#34790)
(cherry picked from commit 2b2cc96f11)
2025-08-23 11:15:57 -07:00
Kamil Gabryjelski
1adaf20ccb fix(native-filters): Low contrast of empty state in dark mode (#34812)
(cherry picked from commit 59c01e016d)
2025-08-23 11:15:20 -07:00
Kamil Gabryjelski
7e9658fad6 fix: Low contrast in viz creator selected tag in dark mode (#34811)
(cherry picked from commit 3895b8b127)
2025-08-23 11:14:53 -07:00
Kamil Gabryjelski
5ff6679804 fix: Remove border around textarea in dashboard edit mode (#34814)
(cherry picked from commit da8c0f94e6)
2025-08-23 11:14:25 -07:00
Kamil Gabryjelski
0899496ca5 fix: Misaligned global controls in Table chart (#34799)
(cherry picked from commit 6908a733a0)
2025-08-23 11:13:35 -07:00
Gabriel Torres Ruiz
e2a469c32d fix(dashboard): enable undo/redo buttons for layout changes (#34777)
(cherry picked from commit ff1f7b64e2)
2025-08-23 11:11:46 -07:00
Maxime Beauchemin
2ffc1b95ba fix: Check migration status before initializing database-dependent features (#34679)
Co-authored-by: Claude <noreply@anthropic.com>
(cherry picked from commit c568d463b9)
2025-08-21 14:05:27 -07:00
Tomáš Karela Procházka
3b3aa1e302 fix: default value in run-server.sh (#34719)
(cherry picked from commit 179a6f2cfe)
2025-08-21 14:04:59 -07:00
Elizabeth Thompson
958b29acbc fix: catch no table error (#32640)
(cherry picked from commit 695a20d009)
2025-08-21 14:04:08 -07:00
Mehmet Salih Yavuz
f0cfd17dc5 fix(PivotExcelExport): select correct chart for export (#34793)
(cherry picked from commit e908775fb2)
2025-08-21 14:03:38 -07:00
Joe Li
ebfddb2b39 fix(tests): make SingleStore test_adjust_engine_params version-agnostic (#34780)
Co-authored-by: Claude <noreply@anthropic.com>
(cherry picked from commit af05396227)
2025-08-21 09:43:34 -07:00
amaannawab923
e10b6e8ae9 fix(webpack): Bump webpack dev-server to handle Errors on Firefox where error object is not defined (#34791)
(cherry picked from commit 277f03c207)
2025-08-21 09:42:35 -07:00
Evan Rusackas
18d4acdee9 fix(sqllab): Fix save query modal closing prematurely on new tabs (#34765)
Co-authored-by: Claude <noreply@anthropic.com>
(cherry picked from commit 48699a7194)
2025-08-21 09:41:48 -07:00
PolinaFam
c199213e8e fix(translations): Fix translation of time-related strings like "7 seconds ago", "a minute ago", etc (#34051)
Co-authored-by: Polina Fam <pfam@ptsecurity.com>
(cherry picked from commit b45141b2a1)
2025-08-21 09:40:38 -07:00
Joe Li
91834bbede fix: Fix TypeError in Slice.get() method when using filter_by() with BinaryExpression (#34769)
Co-authored-by: Claude <noreply@anthropic.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
(cherry picked from commit 9de1706baa)
2025-08-20 11:24:12 -07:00
Evan Rusackas
7253c79959 fix(duckdb): Add support for DuckDB-specific numeric types (#34743)
Co-authored-by: Claude <noreply@anthropic.com>
(cherry picked from commit a42185cd3b)
2025-08-20 11:04:06 -07:00
JUST.in DO IT
04738c716c fix(sqllab): Invisible grid table due to the invalid height (#34683)
(cherry picked from commit 89eb7b207c)
2025-08-20 11:03:42 -07:00
Michael S. Molina
928dbe43e0 fix: Users can't skip column sync when saving virtual datasets (#34757)
(cherry picked from commit f99022b242)
2025-08-19 09:51:22 -07:00
JUST.in DO IT
3f597a6551 fix(sqllab): Reduce flushing caused by ID updates (#34720)
(cherry picked from commit f8b9e3ace4)
2025-08-19 09:50:52 -07:00
JUST.in DO IT
3661482eb3 chore(saved_query): Copy link to clipboard before redirect to edit (#34567) (#34758)
(cherry picked from commit 9cbe5a90b8)
2025-08-19 09:50:25 -07:00
Mehmet Salih Yavuz
9443fe8b78 fix(RightMenu): Move RightMenu carets to the right side (#34756)
(cherry picked from commit f7fe617f4c)
2025-08-19 09:50:02 -07:00
Kamil Gabryjelski
453241eb33 fix: Highlight outline of numerical range and time range filters (#34705)
(cherry picked from commit 6969f2cf7a)
2025-08-19 09:49:32 -07:00
Joe Li
a5f7d236ac chore: Adds RC1 data to CHANGELOG.md and UPDATING.md 2025-08-18 14:38:54 -07:00
2632 changed files with 219604 additions and 84822 deletions

View File

@@ -1,10 +0,0 @@
# JavaScript to TypeScript Migration Command
## Usage
```
/js-to-ts <core-filename>
```
- `<core-filename>` - Path to CORE file relative to `superset-frontend/` (e.g., `src/utils/common.js`, `src/middleware/loggerMiddleware.js`)
## Agent Instructions
**See:** [../projects/js-to-ts/AGENT.md](../projects/js-to-ts/AGENT.md) for complete migration guide.

View File

@@ -1,684 +0,0 @@
# JavaScript to TypeScript Migration Agent Guide
**Complete technical reference for converting JavaScript/JSX files to TypeScript/TSX in Apache Superset frontend.**
**Agent Role:** Atomic migration unit - migrate the core file + ALL related tests/mocks as one cohesive unit. Use `git mv` to preserve history, NO `git commit`. NO global import changes. Report results upon completion.
---
## 🎯 Migration Principles
1. **Atomic migration units** - Core file + all related tests/mocks migrate together
2. **Zero `any` types** - Use proper TypeScript throughout
3. **Leverage existing types** - Reuse established definitions
4. **Type inheritance** - Derivatives extend base component types
5. **Strategic placement** - File types for maximum discoverability
6. **Surgical improvements** - Enhance existing types during migration
---
## Step 0: Dependency Check (MANDATORY)
**Command:**
```bash
grep -E "from '\.\./.*\.jsx?'|from '\./.*\.jsx?'|from 'src/.*\.jsx?'" superset-frontend/{filename}
```
**Decision:**
- ✅ No matches → Proceed with atomic migration (core + tests + mocks)
- ❌ Matches found → EXIT with dependency report (see format below)
---
## Step 1: Identify Related Files (REQUIRED)
**Atomic Migration Scope:**
For core file `src/utils/example.js`, also migrate:
- `src/utils/example.test.js` / `src/utils/example.test.jsx`
- `src/utils/example.spec.js` / `src/utils/example.spec.jsx`
- `src/utils/__mocks__/example.js`
- Any other related test/mock files found by pattern matching
**Find all related test and mock files:**
```bash
# Pattern-based search for related files
basename=$(basename {filename} .js)
dirname=$(dirname superset-frontend/{filename})
# Find test files
find "$dirname" -name "${basename}.test.js" -o -name "${basename}.test.jsx"
find "$dirname" -name "${basename}.spec.js" -o -name "${basename}.spec.jsx"
# Find mock files
find "$dirname" -name "__mocks__/${basename}.js"
find "$dirname" -name "${basename}.mock.js"
```
**Migration Requirement:** All discovered related files MUST be migrated together as one atomic unit.
**Test File Creation:** If NO test files exist for the core file, CREATE a minimal test file using the following pattern:
- Location: Same directory as core file
- Name: `{basename}.test.ts` (e.g., `DebouncedMessageQueue.test.ts`)
- Content: Basic test structure importing and testing the main functionality
- Use proper TypeScript types in test file
---
## 🗺️ Type Reference Map
### From `@superset-ui/core`
```typescript
// Data & Query
QueryFormData, QueryData, JsonObject, AnnotationData, AdhocMetric
LatestQueryFormData, GenericDataType, DatasourceType, ExtraFormData
DataMaskStateWithId, NativeFilterScope, NativeFiltersState, NativeFilterTarget
// UI & Theme
FeatureFlagMap, LanguagePack, ColorSchemeConfig, SequentialSchemeConfig
```
### From `@superset-ui/chart-controls`
```typescript
Dataset, ColumnMeta, ControlStateMapping
```
### From Local Types (`src/types/`)
```typescript
// Authentication
User, UserWithPermissionsAndRoles, BootstrapUser, PermissionsAndRoles
// Dashboard
Dashboard, DashboardState, DashboardInfo, DashboardLayout, LayoutItem
ComponentType, ChartConfiguration, ActiveFilters
// Charts
Chart, ChartState, ChartStatus, ChartLinkedDashboard, Slice, SaveActionType
// Data
Datasource, Database, Owner, Role
// UI Components
TagType, FavoriteStatus, Filter, ImportResourceName
```
### From Domain Types
```typescript
// src/dashboard/types.ts
RootState, ChartsState, DatasourcesState, FilterBarOrientation
ChartCrossFiltersConfig, ActiveTabs, MenuKeys
// src/explore/types.ts
ExplorePageInitialData, ExplorePageState, ExploreResponsePayload, OptionSortType
// src/SqlLab/types.ts
[SQL Lab specific types]
```
---
## 🏗️ Type Organization Strategy
### Type Placement Hierarchy
1. **Component-Colocated** (90% of cases)
```typescript
// Same file as component
interface MyComponentProps {
title: string;
onClick: () => void;
}
```
2. **Feature-Shared**
```typescript
// src/[domain]/components/[Feature]/types.ts
export interface FilterConfiguration {
filterId: string;
targets: NativeFilterTarget[];
}
```
3. **Domain-Wide**
```typescript
// src/[domain]/types.ts
export interface ExploreFormData extends QueryFormData {
viz_type: string;
}
```
4. **Global**
```typescript
// src/types/[TypeName].ts
export interface ApiResponse<T> {
result: T;
count?: number;
}
```
### Type Discovery Commands
```bash
# Search existing types before creating
find superset-frontend/src -name "types.ts" -exec grep -l "[TypeConcept]" {} \;
grep -r "interface.*Props\|type.*Props" superset-frontend/src/
```
### Derivative Component Patterns
**Rule:** Components that extend others should extend their type interfaces.
```typescript
// ✅ Base component type
interface SelectProps {
value: string | number;
options: SelectOption[];
onChange: (value: string | number) => void;
disabled?: boolean;
}
// ✅ Derivative extends base
interface ChartSelectProps extends SelectProps {
charts: Chart[];
onChartSelect: (chart: Chart) => void;
}
// ✅ Derivative with modified props
interface DatabaseSelectProps extends Omit<SelectProps, 'value' | 'onChange'> {
value: number; // Narrowed type
onChange: (databaseId: number) => void; // Specific signature
}
```
**Common Patterns:**
- **Extension:** `extends BaseProps` - adds new props
- **Omission:** `Omit<BaseProps, 'prop'>` - removes props
- **Modification:** `Omit<BaseProps, 'prop'> & { prop: NewType }` - changes prop type
- **Restriction:** Override with narrower types (union → specific)
---
## 📋 Migration Recipe
### Step 2: File Conversion
```bash
# Use git mv to preserve history
git mv component.js component.ts
git mv Component.jsx Component.tsx
```
### Step 3: Import & Type Setup
```typescript
// Import order (enforced by linting)
import { FC, ReactNode } from 'react';
import { JsonObject, QueryFormData } from '@superset-ui/core';
import { Dataset } from '@superset-ui/chart-controls';
import type { Dashboard } from 'src/types/Dashboard';
```
### Step 4: Function & Component Typing
```typescript
// Functions with proper parameter/return types
export function processData(
data: Dataset[],
config: JsonObject
): ProcessedData[] {
// implementation
}
// Component props with inheritance
interface ComponentProps extends BaseProps {
data: Chart[];
onSelect: (id: number) => void;
}
const Component: FC<ComponentProps> = ({ data, onSelect }) => {
// implementation
};
```
### Step 5: State & Redux Typing
```typescript
// Hooks with specific types
const [data, setData] = useState<Chart[]>([]);
const [selected, setSelected] = useState<number | null>(null);
// Redux with existing RootState
const mapStateToProps = (state: RootState) => ({
charts: state.charts,
user: state.user,
});
```
---
## 🧠 Type Debugging Strategies (Real-World Learnings)
### The Evolution of Type Approaches
When you hit type errors, follow this debugging evolution:
#### 1. ❌ Idealized Union Types (First Attempt)
```typescript
// Looks clean but doesn't match reality
type DatasourceInput = Datasource | QueryEditor;
```
**Problem**: Real calling sites pass variations, not exact types.
#### 2. ❌ Overly Precise Types (Second Attempt)
```typescript
// Tried to match exact calling signatures
type DatasourceInput =
| IDatasource // From DatasourcePanel
| (QueryEditor & { columns: ColumnMeta[] }); // From SaveQuery
```
**Problem**: Too rigid, doesn't handle legacy variations.
#### 3. ✅ Flexible Interface (Final Solution)
```typescript
// Captures what the function actually needs
interface DatasourceInput {
name?: string | null; // Allow null for compatibility
datasource_name?: string | null; // Legacy variations
columns?: any[]; // Multiple column types accepted
database?: { id?: number };
// ... other optional properties
}
```
**Success**: Works with all calling sites, focuses on function needs.
### Type Debugging Process
1. **Start with compilation errors** - they show exact mismatches
2. **Examine actual usage** - look at calling sites, not idealized types
3. **Build flexible interfaces** - capture what functions need, not rigid contracts
4. **Iterate based on downstream validation** - let calling sites guide your types
---
## 🚨 Anti-Patterns to Avoid
```typescript
// ❌ Never use any
const obj: any = {};
// ✅ Use proper types
const obj: Record<string, JsonObject> = {};
// ❌ Don't recreate base component props
interface ChartSelectProps {
value: string; // Duplicated from SelectProps
onChange: () => void; // Duplicated from SelectProps
charts: Chart[]; // New prop
}
// ✅ Inherit and extend
interface ChartSelectProps extends SelectProps {
charts: Chart[]; // Only new props
}
// ❌ Don't create ad-hoc type variations
interface UserInfo {
name: string;
email: string;
}
// ✅ Extend existing types (DRY principle)
import { User } from 'src/types/bootstrapTypes';
type UserDisplayInfo = Pick<User, 'firstName' | 'lastName' | 'email'>;
// ❌ Don't create overly rigid unions
type StrictInput = ExactTypeA | ExactTypeB;
// ✅ Create flexible interfaces for function parameters
interface FlexibleInput {
// Focus on what the function actually needs
commonProperty: string;
optionalVariations?: any; // Allow for legacy variations
}
```
## 📍 DRY Type Guidelines (WHERE TYPES BELONG)
### Type Placement Rules
**CRITICAL**: Type variations must live close to where they belong, not scattered across files.
#### ✅ Proper Type Organization
```typescript
// ❌ Don't create one-off interfaces in utility files
// src/utils/datasourceUtils.ts
interface DatasourceInput { /* custom interface */ } // Wrong!
// ✅ Use existing types or extend them in their proper domain
// src/utils/datasourceUtils.ts
import { IDatasource } from 'src/explore/components/DatasourcePanel';
import { QueryEditor } from 'src/SqlLab/types';
// Create flexible interface that references existing types
interface FlexibleDatasourceInput {
// Properties that actually exist across variations
}
```
#### Type Location Hierarchy
1. **Domain Types**: `src/{domain}/types.ts` (dashboard, explore, SqlLab)
2. **Component Types**: Co-located with components
3. **Global Types**: `src/types/` directory
4. **Utility Types**: Only when they truly don't belong elsewhere
#### ✅ DRY Type Patterns
```typescript
// ✅ Extend existing domain types
interface SaveQueryData extends Pick<QueryEditor, 'sql' | 'dbId' | 'catalog'> {
columns: ColumnMeta[]; // Add what's needed
}
// ✅ Create flexible interfaces for cross-domain utilities
interface CrossDomainInput {
// Common properties that exist across different source types
name?: string | null; // Accommodate legacy null values
// Only include properties the function actually uses
}
```
---
## 🎯 PropTypes Auto-Generation (Elegant Approach)
**IMPORTANT**: Superset has `babel-plugin-typescript-to-proptypes` configured to automatically generate PropTypes from TypeScript interfaces. Use this instead of manual PropTypes duplication!
### ❌ Manual PropTypes Duplication (Avoid This)
```typescript
export interface MyComponentProps {
title: string;
count?: number;
}
// 8+ lines of manual PropTypes duplication 😱
const propTypes = PropTypes.shape({
title: PropTypes.string.isRequired,
count: PropTypes.number,
});
export default propTypes;
```
### ✅ Auto-Generated PropTypes (Use This)
```typescript
import { InferProps } from 'prop-types';
export interface MyComponentProps {
title: string;
count?: number;
}
// Single validator function - babel plugin auto-generates PropTypes! ✨
export default function MyComponentValidator(props: MyComponentProps) {
return null; // PropTypes auto-assigned by babel-plugin-typescript-to-proptypes
}
// Optional: For consumers needing PropTypes type inference
export type MyComponentPropsInferred = InferProps<typeof MyComponentValidator>;
```
### Migration Pattern for Type-Only Files
**When migrating type-only files with manual PropTypes:**
1. **Keep the TypeScript interfaces** (single source of truth)
2. **Replace manual PropTypes** with validator function
3. **Remove PropTypes imports** and manual shape definitions
4. **Add InferProps import** if type inference needed
**Example Migration:**
```typescript
// Before: 25+ lines with manual PropTypes duplication
export interface AdhocFilterType { /* ... */ }
const adhocFilterTypePropTypes = PropTypes.oneOfType([...]);
// After: 3 lines with auto-generation
export interface AdhocFilterType { /* ... */ }
export default function AdhocFilterValidator(props: { filter: AdhocFilterType }) {
return null; // Auto-generated PropTypes by babel plugin
}
```
### Component PropTypes Pattern
**For React components, the babel plugin works automatically:**
```typescript
interface ComponentProps {
title: string;
onClick: () => void;
}
const MyComponent: FC<ComponentProps> = ({ title, onClick }) => {
// Component implementation
};
// PropTypes automatically generated by babel plugin - no manual work needed!
export default MyComponent;
```
### Auto-Generation Benefits
- ✅ **Single source of truth**: TypeScript interfaces drive PropTypes
- ✅ **No duplication**: Eliminate 15-20 lines of manual PropTypes code
- ✅ **Automatic updates**: Changes to TypeScript automatically update PropTypes
- ✅ **Type safety**: Compile-time checking ensures PropTypes match interfaces
- ✅ **Backward compatibility**: Existing JavaScript components continue working
### Babel Plugin Configuration
The plugin is already configured in `babel.config.js`:
```javascript
['babel-plugin-typescript-to-proptypes', { loose: true }]
```
**No additional setup required** - just use TypeScript interfaces and the plugin handles the rest!
---
## 🧪 Test File Migration Patterns
### Test File Priority
- **Always migrate test files** alongside production files
- **Test files are often leaf nodes** - good starting candidates
- **Create tests if missing** - Leverage new TypeScript types for better test coverage
### Test-Specific Type Patterns
```typescript
// Mock interfaces for testing
interface MockStore {
getState: () => Partial<RootState>; // Partial allows minimal mocking
}
// Type-safe mocking for complex objects
const mockDashboardInfo: Partial<DashboardInfo> as DashboardInfo = {
id: 123,
json_metadata: '{}',
};
// Sinon stub typing
let postStub: sinon.SinonStub;
beforeEach(() => {
postStub = sinon.stub(SupersetClient, 'post');
});
// Use stub reference instead of original method
expect(postStub.callCount).toBe(1);
expect(postStub.getCall(0).args[0].endpoint).toMatch('/api/');
```
### Test Migration Recipe
1. **Migrate production file first** (if both need migration)
2. **Update test imports** to point to `.ts/.tsx` files
3. **Add proper mock typing** using `Partial<T> as T` pattern
4. **Fix stub typing** - Use stub references, not original methods
5. **Verify all tests pass** with TypeScript compilation
---
## 🔧 Type Conflict Resolution
### Multiple Type Definitions Issue
**Problem**: Same type name defined in multiple files causes compilation errors.
**Example**: `DashboardInfo` defined in both:
- `src/dashboard/reducers/types.ts` (minimal)
- `src/dashboard/components/Header/types.ts` (different shape)
- `src/dashboard/types.ts` (complete - used by RootState)
### Resolution Strategy
1. **Identify the authoritative type**:
```bash
# Find which type is used by RootState/main interfaces
grep -r "DashboardInfo" src/dashboard/types.ts
```
2. **Use import from authoritative source**:
```typescript
// ✅ Import from main domain types
import { RootState, DashboardInfo } from 'src/dashboard/types';
// ❌ Don't import from component-specific files
import { DashboardInfo } from 'src/dashboard/components/Header/types';
```
3. **Mock complex types in tests**:
```typescript
// For testing - provide minimal required fields
const mockInfo: Partial<DashboardInfo> as DashboardInfo = {
id: 123,
json_metadata: '{}',
// Only provide fields actually used in test
};
```
### Type Hierarchy Discovery Commands
```bash
# Find all definitions of a type
grep -r "interface.*TypeName\|type.*TypeName" src/
# Find import usage patterns
grep -r "import.*TypeName" src/
# Check what RootState uses
grep -A 10 -B 10 "TypeName" src/*/types.ts
```
---
## Agent Constraints (CRITICAL)
1. **Use git mv** - Run `git mv file.js file.ts` to preserve git history, but NO `git commit`
2. **NO global import changes** - Don't update imports across codebase
3. **Type files OK** - Can modify existing type files to improve/align types
4. **Single-File TypeScript Validation** (CRITICAL) - tsc has known issues with multi-file compilation:
- **Core Issue**: TypeScript's `tsc` has documented problems validating multiple files simultaneously in complex projects
- **Solution**: ALWAYS validate files one at a time using individual `tsc` calls
- **Command Pattern**: `cd superset-frontend && npx tscw --noEmit --allowJs --composite false --project tsconfig.json {single-file-path}`
- **Why**: Multi-file validation can produce false positives, miss real errors, and conflict during parallel agent execution
5. **Downstream Impact Validation** (CRITICAL) - Your migration affects calling sites:
- **Find downstream files**: `find superset-frontend/src -name "*.tsx" -o -name "*.ts" | xargs grep -l "your-core-filename" 2>/dev/null || echo "No files found"`
- **Validate each downstream file individually**: `cd superset-frontend && npx tscw --noEmit --allowJs --composite false --project tsconfig.json {each-downstream-file}`
- **Fix type mismatches** you introduced in calling sites
- **NEVER ignore downstream errors** - they indicate your types don't match reality
6. **Avoid Project-Wide Validation During Migration**:
- **NEVER use `npm run type`** during parallel agent execution - produces unreliable results
- **Single-file validation is authoritative** - trust individual file checks over project-wide scans
6. **ESLint validation** - Run `npm run eslint -- --fix {file}` for each migrated file to auto-fix formatting/linting issues
6. Zero `any` types - use proper TypeScript types
7. Search existing types before creating new ones
8. Follow patterns from this guide
---
## Success Report Format
```
SUCCESS: Atomic Migration of {core-filename}
## Files Migrated (Atomic Unit)
- Core: {core-filename} → {core-filename.ts/tsx}
- Tests: {list-of-test-files} → {list-of-test-files.ts/tsx} OR "CREATED: {basename}.test.ts"
- Mocks: {list-of-mock-files} → {list-of-mock-files.ts}
- Type files modified: {list-of-type-files}
## Types Created/Improved
- {TypeName}: {location} ({scope}) - {rationale}
- {ExistingType}: enhanced in {location} - {improvement-description}
## Documentation Recommendations
- ADD_TO_DIRECTORY: {TypeName} - {reason}
- NO_DOCUMENTATION: {TypeName} - {reason}
## Quality Validation
- **Single-File TypeScript Validation**: ✅ PASS - Core files individually validated
- Core file: `npx tscw --noEmit --allowJs --composite false --project tsconfig.json {core-file}`
- Test files: `npx tscw --noEmit --allowJs --composite false --project tsconfig.json {test-file}` (if exists)
- **Downstream Impact Check**: ✅ PASS - Found {N} files importing this module, all validate individually
- Downstream files: {list-of-files-that-import-your-module}
- Individual validation: `npx tscw --noEmit --allowJs --composite false --project tsconfig.json {each-downstream-file}`
- **ESLint validation**: ✅ PASS (using `npm run eslint -- --fix {files}` to auto-fix formatting)
- **Zero any types**: ✅ PASS
- **Local imports resolved**: ✅ PASS
- **Functionality preserved**: ✅ PASS
- **Tests pass** (if test file): ✅ PASS
- **Follow-up action required**: {YES/NO}
## Validation Strategy Notes
- **Single-file approach used**: Avoided multi-file tsc validation due to known TypeScript compilation issues
- **Project-wide validation skipped**: `npm run type` not used during parallel migration to prevent false positives
## Migration Learnings
- Type conflicts encountered: {describe any multiple type definitions}
- Mock patterns used: {describe test mocking approaches}
- Import hierarchy decisions: {note authoritative type sources used}
- PropTypes strategy: {AUTO_GENERATED via babel plugin | MANUAL_DUPLICATION_REMOVED | N/A}
## Improvement Suggestions for Documentation
- AGENT.md enhancement: {suggest additions to migration guide}
- Common pattern identified: {note reusable patterns for future migrations}
```
---
## Dependency Block Report Format
```
DEPENDENCY_BLOCK: Cannot migrate {filename}
## Blocking Dependencies
- {path}: {type} - {usage} - {priority}
## Impact Analysis
- Estimated types: {number}
- Expected locations: {list}
- Cross-domain: {YES/NO}
## Recommended Order
{ordered-list}
```
---
## 📚 Quick Reference
**Type Utilities:**
- `Record<K, V>` - Object with specific key/value types
- `Partial<T>` - All properties optional
- `Pick<T, K>` - Subset of properties
- `Omit<T, K>` - Exclude specific properties
- `NonNullable<T>` - Exclude null/undefined
**Event Types:**
- `MouseEvent<HTMLButtonElement>`
- `ChangeEvent<HTMLInputElement>`
- `FormEvent<HTMLFormElement>`
**React Types:**
- `FC<Props>` - Functional component
- `ReactNode` - Any renderable content
- `CSSProperties` - Style objects
---
**Remember:** Every type should add value and clarity. The goal is meaningful type safety that catches bugs and improves developer experience.

View File

@@ -1,199 +0,0 @@
# JS-to-TS Coordinator Workflow
**Role:** Strategic migration coordination - select leaf-node files, trigger agents, review results, handle integration, manage dependencies.
---
## 1. Core File Selection Strategy
**Target ONLY Core Files**: Coordinators identify core files (production code), agents handle related tests/mocks atomically.
**File Analysis Commands**:
```bash
# Find CORE files with no JS/JSX dependencies (exclude tests/mocks) - SIZE PRIORITIZED
find superset-frontend/src -name "*.js" -o -name "*.jsx" | grep -v "test\|spec\|mock" | xargs wc -l | sort -n | head -20
# Alternative: Get file sizes in lines with paths
find superset-frontend/src -name "*.js" -o -name "*.jsx" | grep -v "test\|spec\|mock" | while read file; do
lines=$(wc -l < "$file")
echo "$lines $file"
done | sort -n | head -20
# Check dependencies for core files only (start with smallest)
for file in <core-files-sorted-by-size>; do
echo "=== $file ($(wc -l < "$file") lines) ==="
grep -E "from '\.\./.*\.jsx?'|from '\./.*\.jsx?'|from 'src/.*\.jsx?'" "$file" || echo "✅ LEAF CANDIDATE"
done
# Identify heavily imported files (migrate last)
grep -r "from.*utils/common" superset-frontend/src/ | wc -l
# Quick leaf analysis with size priority
find superset-frontend/src -name "*.js" -o -name "*.jsx" | grep -v "test\|spec\|mock" | head -30 | while read file; do
deps=$(grep -E "from '\.\./.*\.jsx?'|from '\./.*\.jsx?'|from 'src/.*\.jsx?'" "$file" | wc -l)
lines=$(wc -l < "$file")
if [ "$deps" -eq 0 ]; then
echo "✅ LEAF: $lines lines - $file"
fi
done | sort -n
```
**Priority Order** (Smallest files first for easier wins):
1. **Small leaf files** (<50 lines) - No JS/JSX imports, quick TypeScript conversion
2. **Medium leaf files** (50-200 lines) - Self-contained utilities and helpers
3. **Small dependency files** (<100 lines) - Import only already-migrated files
4. **Larger components** (200+ lines) - Complex but well-contained functionality
5. **Core foundational files** (utils/common.js, controls.jsx) - migrate last regardless of size
**Size-First Benefits**:
- Faster completion builds momentum
- Earlier validation of migration patterns
- Easier rollback if issues arise
- Better success rate for agent learning
**Migration Unit**: Each agent call migrates:
- 1 core file (primary target)
- All related `*.test.js/jsx` files
- All related `*.mock.js` files
- All related `__mocks__/` files
---
## 2. Task Creation & Agent Control
### Task Triggering
When triggering the `/js-to-ts` command:
- **Task Title**: Use the core filename as the task title (e.g., "DebouncedMessageQueue.js migration", "hostNamesConfig.js migration")
- **Task Description**: Include the full relative path to help agent locate the file
- **Reference**: Point agent to [AGENT.md](./AGENT.md) for technical instructions
### Post-Processing Workflow
After each agent completes:
1. **Review Agent Report**: Always read and analyze the complete agent report
2. **Share Summary**: Provide user with key highlights from agent's work:
- Files migrated (core + tests/mocks)
- Types created or improved
- Any validation issues or coordinator actions needed
3. **Quality Assessment**: Evaluate agent's TypeScript implementation against criteria:
-**Type Usage**: Proper types used, no `any` types
-**Type Filing**: Types placed in correct hierarchy (component → feature → domain → global)
-**Side Effects**: No unintended changes to other files
-**Import Alignment**: Proper .ts/.tsx import extensions
4. **Integration Decision**:
- **COMMIT**: If agent work is complete and high quality
- **FIX & COMMIT**: If minor issues need coordinator fixes
- **ROLLBACK**: If major issues require complete rework
5. **Next Action**: Ask user preference - commit this work or trigger next migration
---
## 3. Integration Decision Framework
**Automatic Integration** ✅:
- `npm run type` passes without errors
- Agent created clean TypeScript with proper types
- Types appropriately filed in hierarchy
**Coordinator Integration** (Fix Side-Effects) 🔧:
- `npm run type` fails BUT agent's work is high quality
- Good type usage, proper patterns, well-organized
- Side-effects are manageable TypeScript compilation errors
- **Coordinator Action**: Integrate the change, then fix global compilation issues
**Rollback Only** ❌:
- Agent introduced `any` types or poor type choices
- Types poorly organized or conflicting with existing patterns
- Fundamental approach issues requiring complete rework
**Integration Process**:
1. **Review**: Agent already used `git mv` to preserve history
2. **Fix Side-Effects**: Update dependent files with proper import extensions
3. **Resolve Types**: Fix any cascading type issues across codebase
4. **Validate**: Ensure `npm run type` passes after fixes
---
## 4. Common Integration Patterns
**Common Side-Effects (Expect These)**:
- **Type import conflicts**: Multiple definitions of same type name
- **Mock object typing**: Tests need complete type satisfaction
- **Stub method references**: Use stub vars instead of original methods
**Coordinator Fixes (Standard Process)**:
1. **Import Resolution**:
```bash
# Find authoritative type source
grep -r "TypeName" src/*/types.ts
# Import from domain types (src/dashboard/types.ts) not component types
```
2. **Test Mock Completion**:
```typescript
// Use Partial<T> as T pattern for minimal mocking
const mockDashboard: Partial<DashboardInfo> as DashboardInfo = {
id: 123,
json_metadata: '{}',
};
```
3. **Stub Reference Fixes**:
```typescript
// ✅ Use stub variable
expect(postStub.callCount).toBe(1);
// ❌ Don't use original method
expect(SupersetClient.post.callCount).toBe(1);
```
4. **Validation Commands**:
```bash
npm run type # TypeScript compilation
npm test -- filename # Test functionality
git status # Should show rename, not add/delete
```
---
## 5. File Categories for Planning
### Leaf Files (Start Here)
**Self-contained files with minimal JS/JSX dependencies**:
- Test files (80 files) - Usually only import the file being tested
- Utility files without internal dependencies
- Components importing only external libraries
### Heavily Imported Files (Migrate Last)
**Core files that many others depend on**:
- `utils/common.js` - Core utility functions
- `utils/reducerUtils.js` - Redux helpers
- `@superset-ui/core` equivalent files
- Major state management files (`explore/store.js`, `dashboard/actions/`)
### Complex Components (Middle Priority)
**Large files requiring careful type analysis**:
- `components/Datasource/DatasourceEditor.jsx` (1,809 lines)
- `explore/components/controls/AnnotationLayerControl/AnnotationLayer.jsx` (1,031 lines)
- `explore/components/ExploreViewContainer/index.jsx` (911 lines)
---
## 6. Success Metrics & Continuous Improvement
**Per-File Gates**:
- ✅ `npm run type` passes after each migration
- ✅ Zero `any` types introduced
- ✅ All imports properly typed
- ✅ Types filed in correct hierarchy
**Linear Scheduling**:
When agents report `DEPENDENCY_BLOCK`:
- Queue dependencies in linear order
- Process one file at a time to avoid conflicts
- Handle cascading type changes between files
**After Each Migration**:
1. **Update guides** with new patterns discovered
2. **Document coordinator fixes** that become common
3. **Enhance agent instructions** based on recurring issues
4. **Track success metrics** - automatic vs coordinator integration rates

View File

@@ -1,76 +0,0 @@
# JavaScript to TypeScript Migration Project
Progressive migration of 219 JS/JSX files to TypeScript in Apache Superset frontend.
## 📁 Project Documentation
- **[AGENT.md](./AGENT.md)** - Complete technical migration guide for agents (includes type reference, patterns, validation)
- **[COORDINATOR.md](./COORDINATOR.md)** - Strategic workflow for coordinators (file selection, task management, integration)
## 🎯 Quick Start
**For Agents:** Read [AGENT.md](./AGENT.md) for complete migration instructions
**For Coordinators:** Read [COORDINATOR.md](./COORDINATOR.md) for workflow and [AGENT.md](./AGENT.md) for supervision
**Command:** `/js-to-ts <filename>` - See [../../commands/js-to-ts.md](../../commands/js-to-ts.md)
## 📊 Migration Progress
**Scope**: 219 files total (112 JS + 107 JSX)
- Production files: 139 (63%)
- Test files: 80 (37%)
**Strategy**: Leaf-first migration with dependency-aware coordination
### Completed Migrations ✅
1. **roundDecimal** - `plugins/legacy-plugin-chart-map-box/src/utils/roundDecimal.js`
- Migrated core + test files
- Added proper TypeScript function signature with optional precision parameter
- All tests pass
2. **timeGrainSqlaAnimationOverrides** - `src/explore/controlPanels/timeGrainSqlaAnimationOverrides.js`
- Migrated to TypeScript with ControlPanelState and Dataset types
- Added TimeGrainOverrideState interface for return type
- Used type guards for safe property access
3. **DebouncedMessageQueue** - `src/utils/DebouncedMessageQueue.js`
- Migrated to TypeScript with proper generics
- Created DebouncedMessageQueueOptions interface
- **CREATED test file** with 4 comprehensive test cases
- Excellent class property typing with private/readonly modifiers
**Files Migrated**: 3/219 (1.4%)
**Tests Created**: 2 (roundDecimal had existing, DebouncedMessageQueue created)
### Next Candidates (Leaf Nodes) 🎯
**Identified leaf files with no JS/JSX dependencies:**
- `src/utils/hostNamesConfig.js` - Domain configuration utility
- `src/explore/controlPanels/Separator.js` - Control panel configuration
- `src/middleware/loggerMiddleware.js` - Logging middleware
**Migration Quality**: All completed migrations have:
- ✅ Zero `any` types
- ✅ Proper TypeScript compilation
- ✅ ESLint validation passed
- ✅ Test coverage (created where missing)
---
## 📈 Success Metrics
**Per-File Gates**:
-`npm run type` passes after each migration
- ✅ Zero `any` types introduced
- ✅ All imports properly typed
- ✅ Types filed in correct hierarchy
**Overall Progress**:
- **Automatic Integration Rate**: 100% (3/3 migrations required no coordinator fixes)
- **Test Coverage**: Improved (1 new test file created)
- **Type Safety**: Enhanced with proper interfaces and generics
---
*This is a claudette-managed progressive refactor. All documentation and coordination resources are organized under `.claude/projects/js-to-ts/`*

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.13-bookworm AS base
# Install system dependencies that Superset needs
# This layer will be cached across Codespace sessions

12
.github/CODEOWNERS vendored
View File

@@ -20,7 +20,7 @@
# Notify PMC members of changes to GitHub Actions
/.github/ @villebro @geido @eschutho @rusackas @betodealmeida @nytai @mistercrunch @craig-rueda @kgabryje @dpgaspar @sadpandajoe
/.github/ @villebro @geido @eschutho @rusackas @betodealmeida @nytai @mistercrunch @craig-rueda @kgabryje @dpgaspar
# Notify PMC members of changes to required GitHub Actions
@@ -30,13 +30,3 @@
**/*.geojson @villebro @rusackas
/superset-frontend/plugins/legacy-plugin-chart-country-map/ @villebro @rusackas
# Notify PMC members of changes to extension-related files
/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

View File

@@ -1,27 +1,24 @@
name: Change Detector
description: Detects file changes for pull request and push events
name: 'Change Detector'
description: 'Detects file changes for pull request and push events'
inputs:
token:
description: GitHub token for authentication
description: 'GitHub token for authentication'
required: true
outputs:
python:
description: Whether Python-related files were changed
description: 'Whether Python-related files were changed'
value: ${{ steps.change-detector.outputs.python }}
frontend:
description: Whether frontend-related files were changed
description: 'Whether frontend-related files were changed'
value: ${{ steps.change-detector.outputs.frontend }}
docker:
description: Whether docker-related files were changed
description: 'Whether docker-related files were changed'
value: ${{ steps.change-detector.outputs.docker }}
docs:
description: Whether docs-related files were changed
description: 'Whether docs-related files were changed'
value: ${{ steps.change-detector.outputs.docs }}
superset-extensions-cli:
description: Whether superset-extensions-cli package-related files were changed
value: ${{ steps.change-detector.outputs.superset-extensions-cli }}
runs:
using: composite
using: 'composite'
steps:
- name: Detect file changes
id: change-detector

View File

@@ -1 +1 @@
../AGENTS.md
../LLMS.md

View File

@@ -5,20 +5,23 @@ updates:
- package-ecosystem: "github-actions"
directory: "/"
schedule:
interval: "daily"
interval: "monthly"
- package-ecosystem: "npm"
ignore:
# not until React >= 18.0.0
- dependency-name: "storybook"
- dependency-name: "@storybook*"
# remark-gfm v4+ requires react-markdown v9+, which needs React 18
- dependency-name: "remark-gfm"
- dependency-name: "react-markdown"
# 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"
directory: "/superset-frontend/"
schedule:
interval: "daily"
interval: "monthly"
labels:
- npm
- dependabot
@@ -40,21 +43,21 @@ updates:
- package-ecosystem: "npm"
directory: ".github/actions"
schedule:
interval: "daily"
interval: "monthly"
open-pull-requests-limit: 10
versioning-strategy: increase
- package-ecosystem: "npm"
directory: "/docs/"
schedule:
interval: "daily"
interval: "monthly"
open-pull-requests-limit: 10
versioning-strategy: increase
- package-ecosystem: "npm"
directory: "/superset-websocket/"
schedule:
interval: "daily"
interval: "monthly"
labels:
- npm
- dependabot
@@ -63,7 +66,7 @@ updates:
- package-ecosystem: "npm"
directory: "/superset-websocket/utils/client-ws-app/"
schedule:
interval: "daily"
interval: "monthly"
labels:
- npm
- dependabot
@@ -75,7 +78,7 @@ updates:
- package-ecosystem: "npm"
directory: "/superset-frontend/plugins/legacy-plugin-chart-calendar/"
schedule:
interval: "daily"
interval: "monthly"
labels:
- npm
- dependabot
@@ -85,7 +88,7 @@ updates:
- package-ecosystem: "npm"
directory: "/superset-frontend/plugins/legacy-plugin-chart-histogram/"
schedule:
interval: "daily"
interval: "monthly"
labels:
- npm
- dependabot
@@ -95,7 +98,7 @@ updates:
- package-ecosystem: "npm"
directory: "/superset-frontend/plugins/legacy-plugin-chart-partition/"
schedule:
interval: "daily"
interval: "monthly"
labels:
- npm
- dependabot
@@ -105,7 +108,7 @@ updates:
- package-ecosystem: "npm"
directory: "/superset-frontend/plugins/legacy-plugin-chart-world-map/"
schedule:
interval: "daily"
interval: "monthly"
labels:
- npm
- dependabot
@@ -115,7 +118,7 @@ updates:
- package-ecosystem: "npm"
directory: "/superset-frontend/plugins/plugin-chart-pivot-table/"
schedule:
interval: "daily"
interval: "monthly"
labels:
- npm
- dependabot
@@ -125,7 +128,7 @@ updates:
- package-ecosystem: "npm"
directory: "/superset-frontend/plugins/legacy-plugin-chart-chord/"
schedule:
interval: "daily"
interval: "monthly"
labels:
- npm
- dependabot
@@ -135,7 +138,7 @@ updates:
- package-ecosystem: "npm"
directory: "/superset-frontend/plugins/legacy-plugin-chart-horizon/"
schedule:
interval: "daily"
interval: "monthly"
labels:
- npm
- dependabot
@@ -145,7 +148,7 @@ updates:
- package-ecosystem: "npm"
directory: "/superset-frontend/plugins/legacy-plugin-chart-rose/"
schedule:
interval: "daily"
interval: "monthly"
labels:
- npm
- dependabot
@@ -155,7 +158,7 @@ updates:
- package-ecosystem: "npm"
directory: "/superset-frontend/plugins/legacy-preset-chart-deckgl/"
schedule:
interval: "daily"
interval: "monthly"
labels:
- npm
- dependabot
@@ -165,7 +168,7 @@ updates:
- package-ecosystem: "npm"
directory: "/superset-frontend/plugins/plugin-chart-table/"
schedule:
interval: "daily"
interval: "monthly"
labels:
- npm
- dependabot
@@ -175,7 +178,7 @@ updates:
- package-ecosystem: "npm"
directory: "/superset-frontend/plugins/legacy-plugin-chart-country-map/"
schedule:
interval: "daily"
interval: "monthly"
labels:
- npm
- dependabot
@@ -185,7 +188,7 @@ updates:
- package-ecosystem: "npm"
directory: "/superset-frontend/plugins/legacy-plugin-chart-map-box/"
schedule:
interval: "daily"
interval: "monthly"
labels:
- npm
- dependabot
@@ -195,7 +198,7 @@ updates:
- package-ecosystem: "npm"
directory: "/superset-frontend/plugins/legacy-plugin-chart-sankey/"
schedule:
interval: "daily"
interval: "monthly"
labels:
- npm
- dependabot
@@ -205,7 +208,7 @@ updates:
- package-ecosystem: "npm"
directory: "/superset-frontend/plugins/legacy-preset-chart-nvd3/"
schedule:
interval: "daily"
interval: "monthly"
labels:
- npm
- dependabot
@@ -215,7 +218,7 @@ updates:
- package-ecosystem: "npm"
directory: "/superset-frontend/plugins/plugin-chart-word-cloud/"
schedule:
interval: "daily"
interval: "monthly"
labels:
- npm
- dependabot
@@ -225,7 +228,7 @@ updates:
- package-ecosystem: "npm"
directory: "/superset-frontend/plugins/legacy-plugin-chart-event-flow/"
schedule:
interval: "daily"
interval: "monthly"
labels:
- npm
- dependabot
@@ -235,7 +238,7 @@ updates:
- package-ecosystem: "npm"
directory: "/superset-frontend/plugins/legacy-plugin-chart-paired-t-test/"
schedule:
interval: "daily"
interval: "monthly"
labels:
- npm
- dependabot
@@ -245,7 +248,7 @@ updates:
- package-ecosystem: "npm"
directory: "/superset-frontend/plugins/legacy-plugin-chart-sankey-loop/"
schedule:
interval: "daily"
interval: "monthly"
labels:
- npm
- dependabot
@@ -255,7 +258,7 @@ updates:
- package-ecosystem: "npm"
directory: "/superset-frontend/plugins/plugin-chart-echarts/"
schedule:
interval: "daily"
interval: "monthly"
labels:
- npm
- dependabot
@@ -265,7 +268,7 @@ updates:
- package-ecosystem: "npm"
directory: "/superset-frontend/plugins/preset-chart-xy/"
schedule:
interval: "daily"
interval: "monthly"
labels:
- npm
- dependabot
@@ -275,7 +278,7 @@ updates:
- package-ecosystem: "npm"
directory: "/superset-frontend/plugins/legacy-plugin-chart-heatmap/"
schedule:
interval: "daily"
interval: "monthly"
labels:
- npm
- dependabot
@@ -285,7 +288,7 @@ updates:
- package-ecosystem: "npm"
directory: "/superset-frontend/plugins/legacy-plugin-chart-parallel-coordinates/"
schedule:
interval: "daily"
interval: "monthly"
labels:
- npm
- dependabot
@@ -295,7 +298,7 @@ updates:
- package-ecosystem: "npm"
directory: "/superset-frontend/plugins/legacy-plugin-chart-sunburst/"
schedule:
interval: "daily"
interval: "monthly"
labels:
- npm
- dependabot
@@ -305,7 +308,7 @@ updates:
- package-ecosystem: "npm"
directory: "/superset-frontend/plugins/plugin-chart-handlebars/"
schedule:
interval: "daily"
interval: "monthly"
labels:
- npm
- dependabot
@@ -315,7 +318,7 @@ updates:
- package-ecosystem: "npm"
directory: "/superset-frontend/packages/generator-superset/"
schedule:
interval: "daily"
interval: "monthly"
labels:
- npm
- dependabot
@@ -325,7 +328,7 @@ updates:
- package-ecosystem: "npm"
directory: "/superset-frontend/packages/superset-ui-chart-controls/"
schedule:
interval: "daily"
interval: "monthly"
labels:
- npm
- dependabot
@@ -339,7 +342,7 @@ updates:
- dependency-name: "react-markdown"
- dependency-name: "remark-gfm"
schedule:
interval: "daily"
interval: "monthly"
labels:
- npm
- dependabot
@@ -349,7 +352,7 @@ updates:
- package-ecosystem: "npm"
directory: "/superset-frontend/packages/superset-ui-demo/"
schedule:
interval: "daily"
interval: "monthly"
labels:
- npm
- dependabot
@@ -359,7 +362,7 @@ updates:
- package-ecosystem: "npm"
directory: "/superset-frontend/packages/superset-ui-switchboard/"
schedule:
interval: "daily"
interval: "monthly"
labels:
- npm
- dependabot

View File

@@ -117,6 +117,19 @@ testdata() {
say "::endgroup::"
}
playwright_testdata() {
cd "$GITHUB_WORKSPACE"
say "::group::Load all examples for Playwright tests"
# must specify PYTHONPATH to make `tests.superset_test_config` importable
export PYTHONPATH="$GITHUB_WORKSPACE"
pip install -e .
superset db upgrade
superset load_test_users
superset load_examples
superset init
say "::endgroup::"
}
celery-worker() {
cd "$GITHUB_WORKSPACE"
say "::group::Start Celery worker"

View File

@@ -32,7 +32,7 @@ jobs:
steps:
- name: "Checkout ${{ github.ref }} ( ${{ github.sha }} )"
uses: actions/checkout@v5
uses: actions/checkout@v4
with:
persist-credentials: true
ref: master
@@ -41,7 +41,7 @@ jobs:
uses: ./.github/actions/setup-supersetbot/
- name: Set up Python ${{ inputs.python-version }}
uses: actions/setup-python@v6
uses: actions/setup-python@v5
with:
python-version: "3.10"

View File

@@ -31,7 +31,7 @@ jobs:
- name: "Checkout ${{ github.ref }} ( ${{ github.sha }} )"
if: steps.check_queued.outputs.count >= 20
uses: actions/checkout@v5
uses: actions/checkout@v4
- name: Cancel duplicate workflow runs
if: steps.check_queued.outputs.count >= 20

View File

@@ -18,7 +18,7 @@ jobs:
runs-on: ubuntu-22.04
steps:
- name: "Checkout ${{ github.ref }} ( ${{ github.sha }} )"
uses: actions/checkout@v5
uses: actions/checkout@v4
with:
persist-credentials: false
submodules: recursive

View File

@@ -25,9 +25,9 @@ jobs:
pull-requests: write
steps:
- name: "Checkout ${{ github.ref }} ( ${{ github.sha }} )"
uses: actions/checkout@v5
uses: actions/checkout@v4
- name: Check and notify
uses: actions/github-script@v8
uses: actions/github-script@v7
with:
github-token: ${{ github.token }}
script: |

View File

@@ -44,7 +44,7 @@ jobs:
pull-requests: write
steps:
- name: Comment access denied
uses: actions/github-script@v8
uses: actions/github-script@v7
with:
script: |
const message = `👋 Hi @${{ github.event.comment.user.login || github.event.review.user.login || github.event.issue.user.login }}!
@@ -71,7 +71,7 @@ jobs:
id-token: write
steps:
- name: Checkout repository
uses: actions/checkout@v5
uses: actions/checkout@v4
with:
fetch-depth: 1

View File

@@ -31,7 +31,7 @@ jobs:
steps:
- name: Checkout repository
uses: actions/checkout@v5
uses: actions/checkout@v4
- name: Check for file changes
id: check
@@ -41,7 +41,7 @@ jobs:
# Initializes the CodeQL tools for scanning.
- name: Initialize CodeQL
uses: github/codeql-action/init@v4
uses: github/codeql-action/init@v3
with:
languages: ${{ matrix.language }}
# If you wish to specify custom queries, you can do so here or in a config file.
@@ -53,6 +53,6 @@ jobs:
- name: Perform CodeQL Analysis
if: steps.check.outputs.python || steps.check.outputs.frontend
uses: github/codeql-action/analyze@v4
uses: github/codeql-action/analyze@v3
with:
category: "/language:${{matrix.language}}"

View File

@@ -27,7 +27,7 @@ jobs:
runs-on: ubuntu-24.04
steps:
- name: "Checkout Repository"
uses: actions/checkout@v5
uses: actions/checkout@v4
- name: "Dependency Review"
uses: actions/dependency-review-action@v4
continue-on-error: true
@@ -53,7 +53,7 @@ jobs:
runs-on: ubuntu-22.04
steps:
- name: "Checkout Repository"
uses: actions/checkout@v5
uses: actions/checkout@v4
- name: Setup Python
uses: ./.github/actions/setup-backend/

View File

@@ -22,7 +22,7 @@ jobs:
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 '["dev", "lean"]'; else echo '["dev", "lean", "py310", "websocket", "dockerize", "py311"]'; fi)
echo "matrix_config=${MATRIX_CONFIG}" >> $GITHUB_OUTPUT
echo $GITHUB_OUTPUT
@@ -42,7 +42,7 @@ jobs:
steps:
- name: "Checkout ${{ github.ref }} ( ${{ github.sha }} )"
uses: actions/checkout@v5
uses: actions/checkout@v4
with:
persist-credentials: false
@@ -102,7 +102,7 @@ jobs:
docker history $IMAGE_TAG
- name: docker-compose sanity check
if: (steps.check.outputs.python || steps.check.outputs.frontend || steps.check.outputs.docker) && matrix.build_preset == 'dev'
if: (steps.check.outputs.python || steps.check.outputs.frontend || steps.check.outputs.docker) && (matrix.build_preset == 'dev' || matrix.build_preset == 'lean')
shell: bash
run: |
export SUPERSET_BUILD_TARGET=${{ matrix.build_preset }}
@@ -117,7 +117,7 @@ jobs:
runs-on: ubuntu-24.04
steps:
- name: "Checkout ${{ github.ref }} ( ${{ github.sha }} )"
uses: actions/checkout@v5
uses: actions/checkout@v4
with:
persist-credentials: false
- name: Check for file changes

View File

@@ -28,8 +28,8 @@ jobs:
run:
working-directory: superset-embedded-sdk
steps:
- uses: actions/checkout@v5
- uses: actions/setup-node@v5
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version-file: './superset-embedded-sdk/.nvmrc'
registry-url: 'https://registry.npmjs.org'

View File

@@ -18,8 +18,8 @@ jobs:
run:
working-directory: superset-embedded-sdk
steps:
- uses: actions/checkout@v5
- uses: actions/setup-node@v5
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version-file: './superset-embedded-sdk/.nvmrc'
registry-url: 'https://registry.npmjs.org'

View File

@@ -1,10 +1,4 @@
name: Cleanup ephemeral envs (PR close) [DEPRECATED]
# ⚠️ DEPRECATION NOTICE ⚠️
# This workflow is deprecated and will be removed in a future version.
# The new Superset Showtime workflow handles cleanup automatically.
# See .github/workflows/showtime.yml and showtime-cleanup.yml for replacements.
# Migration guide: https://github.com/mistercrunch/superset-showtime
name: Cleanup ephemeral envs (PR close)
on:
pull_request_target:
@@ -33,7 +27,7 @@ jobs:
pull-requests: write
steps:
- name: Configure AWS credentials
uses: aws-actions/configure-aws-credentials@v5
uses: aws-actions/configure-aws-credentials@v4
with:
aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
@@ -69,7 +63,7 @@ jobs:
- name: Comment (success)
if: steps.describe-services.outputs.active == 'true'
uses: actions/github-script@v8
uses: actions/github-script@v7
with:
github-token: ${{github.token}}
script: |
@@ -77,5 +71,5 @@ jobs:
issue_number: ${{ github.event.number }},
owner: context.repo.owner,
repo: context.repo.repo,
body: '⚠️ **DEPRECATED WORKFLOW** - Ephemeral environment shutdown and build artifacts deleted. Please migrate to the new Superset Showtime system for future PRs.'
body: 'Ephemeral environment shutdown and build artifacts deleted.'
})

View File

@@ -1,12 +1,4 @@
name: Ephemeral env workflow [DEPRECATED]
# ⚠️ DEPRECATION NOTICE ⚠️
# This workflow is deprecated and will be removed in a future version.
# Please use the new Superset Showtime workflow instead:
# - Use label "🎪 trigger-start" instead of "testenv-up"
# - Showtime provides better reliability and easier management
# - See .github/workflows/showtime.yml for the replacement
# - Migration guide: https://github.com/mistercrunch/superset-showtime
name: Ephemeral env workflow
# Example manual trigger:
# gh workflow run ephemeral-env.yml --ref fix_ephemerals --field label_name="testenv-up" --field issue_number=666
@@ -63,7 +55,7 @@ jobs:
- name: Get event SHA
id: get-sha
if: steps.eval-label.outputs.result == 'up'
uses: actions/github-script@v8
uses: actions/github-script@v7
with:
github-token: ${{ secrets.GITHUB_TOKEN }}
script: |
@@ -94,7 +86,7 @@ jobs:
core.setOutput("sha", prSha);
- name: Looking for feature flags in PR description
uses: actions/github-script@v8
uses: actions/github-script@v7
id: eval-feature-flags
if: steps.eval-label.outputs.result == 'up'
with:
@@ -116,7 +108,7 @@ jobs:
return results;
- name: Reply with confirmation comment
uses: actions/github-script@v8
uses: actions/github-script@v7
if: steps.eval-label.outputs.result == 'up'
with:
github-token: ${{ secrets.GITHUB_TOKEN }}
@@ -134,11 +126,8 @@ jobs:
throw new Error("Issue number is not available.");
}
const body = `⚠️ **DEPRECATED WORKFLOW** ⚠️\n\n@${user} This workflow is deprecated! Please use the new **Superset Showtime** system instead:\n\n` +
`- Replace "testenv-up" label with "🎪 trigger-start"\n` +
`- Better reliability and easier management\n` +
`- See https://github.com/mistercrunch/superset-showtime for details\n\n` +
`Processing your ephemeral environment request [here](${workflowUrl}). Action: **${action}**.` +
const body = `@${user} Processing your ephemeral environment request [here](${workflowUrl}).` +
` Action: **${action}**.` +
` More information on [how to use or configure ephemeral environments]` +
`(https://superset.apache.org/docs/contributing/howtos/#github-ephemeral-environments)`;
@@ -160,7 +149,7 @@ jobs:
runs-on: ubuntu-24.04
steps:
- name: "Checkout ${{ github.ref }} ( ${{ needs.ephemeral-env-label.outputs.sha }} : ${{steps.get-sha.outputs.sha}} )"
uses: actions/checkout@v5
uses: actions/checkout@v4
with:
ref: ${{ needs.ephemeral-env-label.outputs.sha }}
persist-credentials: false
@@ -189,7 +178,7 @@ jobs:
--extra-flags "--build-arg INCLUDE_CHROMIUM=false"
- name: Configure AWS credentials
uses: aws-actions/configure-aws-credentials@v5
uses: aws-actions/configure-aws-credentials@v4
with:
aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
@@ -220,12 +209,12 @@ jobs:
pull-requests: write
steps:
- uses: actions/checkout@v5
- uses: actions/checkout@v4
with:
persist-credentials: false
- name: Configure AWS credentials
uses: aws-actions/configure-aws-credentials@v5
uses: aws-actions/configure-aws-credentials@v4
with:
aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
@@ -248,7 +237,7 @@ jobs:
- name: Fail on missing container image
if: steps.check-image.outcome == 'failure'
uses: actions/github-script@v8
uses: actions/github-script@v7
with:
github-token: ${{ github.token }}
script: |
@@ -318,7 +307,7 @@ jobs:
echo "ip=$(aws ec2 describe-network-interfaces --network-interface-ids ${{ steps.get-eni.outputs.eni }} | jq -r '.NetworkInterfaces | first | .Association.PublicIp')" >> $GITHUB_OUTPUT
- name: Comment (success)
if: ${{ success() }}
uses: actions/github-script@v8
uses: actions/github-script@v7
with:
github-token: ${{github.token}}
script: |
@@ -331,7 +320,7 @@ jobs:
});
- name: Comment (failure)
if: ${{ failure() }}
uses: actions/github-script@v8
uses: actions/github-script@v7
with:
github-token: ${{github.token}}
script: |

View File

@@ -27,12 +27,12 @@ jobs:
runs-on: ubuntu-24.04
steps:
- name: "Checkout ${{ github.ref }} ( ${{ github.sha }} )"
uses: actions/checkout@v5
uses: actions/checkout@v4
with:
persist-credentials: false
submodules: recursive
- name: Setup Java
uses: actions/setup-java@v5
uses: actions/setup-java@v4
with:
distribution: "temurin"
java-version: "11"

View File

@@ -14,10 +14,10 @@ jobs:
runs-on: ubuntu-24.04
steps:
- name: Checkout Repository
uses: actions/checkout@v5
uses: actions/checkout@v4
- name: Set up Node.js
uses: actions/setup-node@v5
uses: actions/setup-node@v4
with:
node-version: '20'

View File

@@ -17,7 +17,7 @@ jobs:
steps:
- name: "Checkout ${{ github.ref }} ( ${{ github.sha }} )"
uses: actions/checkout@v5
uses: actions/checkout@v4
with:
persist-credentials: false

View File

@@ -9,7 +9,7 @@ jobs:
pull-requests: write
runs-on: ubuntu-24.04
steps:
- uses: actions/labeler@v6
- uses: actions/labeler@v5
with:
sync-labels: true

View File

@@ -12,7 +12,7 @@ jobs:
steps:
- name: "Checkout ${{ github.ref }} ( ${{ github.sha }} )"
uses: actions/checkout@v5
uses: actions/checkout@v4
with:
persist-credentials: false
submodules: recursive

View File

@@ -15,12 +15,12 @@ jobs:
runs-on: ubuntu-24.04
steps:
- name: "Checkout ${{ github.ref }} ( ${{ github.sha }} )"
uses: actions/checkout@v5
uses: actions/checkout@v4
with:
persist-credentials: false
submodules: recursive
- name: Setup Java
uses: actions/setup-java@v5
uses: actions/setup-java@v4
with:
distribution: 'temurin'
java-version: '11'

View File

@@ -14,7 +14,7 @@ jobs:
runs-on: ubuntu-24.04
steps:
- name: Check for 'hold' label
uses: actions/github-script@v8
uses: actions/github-script@v7
with:
github-token: ${{secrets.GITHUB_TOKEN}}
script: |

View File

@@ -16,7 +16,7 @@ jobs:
pull-requests: write
steps:
- name: "Checkout ${{ github.ref }} ( ${{ github.sha }} )"
uses: actions/checkout@v5
uses: actions/checkout@v4
with:
persist-credentials: false
submodules: recursive

View File

@@ -21,7 +21,7 @@ jobs:
python-version: ["current", "previous", "next"]
steps:
- name: "Checkout ${{ github.ref }} ( ${{ github.sha }} )"
uses: actions/checkout@v5
uses: actions/checkout@v4
with:
persist-credentials: false
submodules: recursive
@@ -29,17 +29,18 @@ jobs:
uses: ./.github/actions/setup-backend/
with:
python-version: ${{ matrix.python-version }}
- name: Enable brew and helm-docs
# Add brew to the path - see https://github.com/actions/runner-images/issues/6283
run: |
echo "/home/linuxbrew/.linuxbrew/bin:/home/linuxbrew/.linuxbrew/sbin" >> $GITHUB_PATH
eval "$(/home/linuxbrew/.linuxbrew/bin/brew shellenv)"
echo "HOMEBREW_PREFIX=$HOMEBREW_PREFIX" >>"${GITHUB_ENV}"
echo "HOMEBREW_CELLAR=$HOMEBREW_CELLAR" >>"${GITHUB_ENV}"
echo "HOMEBREW_REPOSITORY=$HOMEBREW_REPOSITORY" >>"${GITHUB_ENV}"
brew install norwoodj/tap/helm-docs
- name: Setup Go
uses: actions/setup-go@v5
- name: Install helm-docs
# Previously `brew install norwoodj/tap/helm-docs`, but Homebrew now
# refuses to install from untrusted third-party taps ("Skipping
# norwoodj/tap because it is not trusted"), which breaks CI. Install the
# pinned binary directly with Go instead — this matches apache/superset
# upstream and keeps the version aligned with the helm-docs pre-commit
# hook rev in .pre-commit-config.yaml.
run: go install github.com/norwoodj/helm-docs/cmd/helm-docs@v1.14.2
- name: Setup Node.js
uses: actions/setup-node@v5
uses: actions/setup-node@v4
with:
node-version: '20'

View File

@@ -27,7 +27,7 @@ jobs:
pull-requests: write
steps:
- name: "Checkout ${{ github.ref }} ( ${{ github.sha }} )"
uses: actions/checkout@v5
uses: actions/checkout@v4
with:
persist-credentials: false
submodules: recursive

View File

@@ -26,7 +26,7 @@ jobs:
name: Bump version and publish package(s)
runs-on: ubuntu-24.04
steps:
- uses: actions/checkout@v5
- uses: actions/checkout@v4
with:
# pulls all commits (needed for lerna / semantic release to correctly version)
fetch-depth: 0
@@ -42,7 +42,7 @@ jobs:
- name: Install Node.js
if: env.HAS_TAGS
uses: actions/setup-node@v5
uses: actions/setup-node@v4
with:
node-version-file: './superset-frontend/.nvmrc'

View File

@@ -1,50 +0,0 @@
name: 🎪 Showtime Cleanup
# Scheduled cleanup of expired environments
on:
schedule:
- cron: '0 */6 * * *' # Every 6 hours
# Manual trigger for testing
workflow_dispatch:
inputs:
max_age_hours:
description: 'Maximum age in hours before cleanup'
required: false
default: '48'
type: string
# Common environment variables
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
AWS_REGION: ${{ vars.AWS_REGION || 'us-west-2' }}
GITHUB_ORG: ${{ github.repository_owner }}
GITHUB_REPO: ${{ github.event.repository.name }}
jobs:
cleanup-expired:
name: Clean up expired showtime environments
runs-on: ubuntu-latest
permissions:
contents: read
pull-requests: write
steps:
- name: Install Superset Showtime
run: pip install superset-showtime
- name: Cleanup expired environments
run: |
MAX_AGE="${{ github.event.inputs.max_age_hours || '48' }}"
# Validate max_age is numeric
if [[ ! "$MAX_AGE" =~ ^[0-9]+$ ]]; then
echo "❌ Invalid max_age_hours format: $MAX_AGE (must be numeric)"
exit 1
fi
echo "Cleaning up environments older than ${MAX_AGE}h"
python -m showtime cleanup --older-than "${MAX_AGE}h"

View File

@@ -1,179 +0,0 @@
name: 🎪 Superset Showtime
# Ultra-simple: just sync on any PR state change
on:
pull_request_target:
types: [labeled, unlabeled, synchronize, closed]
# Manual testing
workflow_dispatch:
inputs:
pr_number:
description: 'PR number to sync'
required: true
type: number
sha:
description: 'Specific SHA to deploy (optional, defaults to latest)'
required: false
type: string
# Common environment variables for all jobs (non-sensitive only)
env:
AWS_REGION: us-west-2
GITHUB_ORG: ${{ github.repository_owner }}
GITHUB_REPO: ${{ github.event.repository.name }}
GITHUB_ACTOR: ${{ github.actor }}
jobs:
sync:
name: 🎪 Sync PR to desired state
runs-on: ubuntu-latest
timeout-minutes: 90
permissions:
contents: read
pull-requests: write
steps:
- name: Security Check - Authorize Maintainers Only
id: auth
uses: actions/github-script@v8
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
script: |
const actor = context.actor;
console.log(`🔍 Checking authorization for ${actor}`);
// Early exit for workflow_dispatch - assume authorized since it's manually triggered
if (context.eventName === 'workflow_dispatch') {
console.log(`✅ Workflow dispatch event - assuming authorized for ${actor}`);
core.setOutput('authorized', 'true');
return;
}
const { data: permission } = await github.rest.repos.getCollaboratorPermissionLevel({
owner: context.repo.owner,
repo: context.repo.repo,
username: actor
});
console.log(`📊 Permission level for ${actor}: ${permission.permission}`);
const authorized = ['write', 'admin'].includes(permission.permission);
// If this is a synchronize event from unauthorized user, check if Showtime is active and set blocked label
if (!authorized && context.eventName === 'pull_request_target' && context.payload.action === 'synchronize') {
console.log(`🔒 Synchronize event detected - checking if Showtime is active`);
// Check if PR has any circus tent labels (Showtime is in use)
const { data: issue } = await github.rest.issues.get({
owner: context.repo.owner,
repo: context.repo.repo,
issue_number: context.payload.pull_request.number
});
const hasCircusLabels = issue.labels.some(label => label.name.startsWith('🎪 '));
if (hasCircusLabels) {
console.log(`🎪 Circus labels found - setting blocked label to prevent auto-deployment`);
await github.rest.issues.addLabels({
owner: context.repo.owner,
repo: context.repo.repo,
issue_number: context.payload.pull_request.number,
labels: ['🎪 🔒 showtime-blocked']
});
console.log(`✅ Blocked label set - Showtime will detect and skip operations`);
} else {
console.log(` No circus labels found - Showtime not in use, skipping block`);
}
}
if (!authorized) {
console.log(`🚨 Unauthorized user ${actor} - skipping all operations`);
core.setOutput('authorized', 'false');
return;
}
console.log(`✅ Authorized maintainer: ${actor}`);
core.setOutput('authorized', 'true');
- name: Install Superset Showtime
if: steps.auth.outputs.authorized == 'true'
run: |
echo "::notice::Maintainer ${{ github.actor }} triggered deploy for PR ${{ github.event.pull_request.number || github.event.inputs.pr_number }}"
pip install --upgrade superset-showtime
showtime version
- name: Check what actions are needed
if: steps.auth.outputs.authorized == 'true'
id: check
env:
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
# Bulletproof PR number extraction
if [[ -n "${{ github.event.pull_request.number }}" ]]; then
PR_NUM="${{ github.event.pull_request.number }}"
elif [[ -n "${{ github.event.inputs.pr_number }}" ]]; then
PR_NUM="${{ github.event.inputs.pr_number }}"
else
echo "❌ No PR number found in event or inputs"
exit 1
fi
echo "Using PR number: $PR_NUM"
# Run sync check-only with optional SHA override
if [[ -n "${{ github.event.inputs.sha }}" ]]; then
OUTPUT=$(python -m showtime sync $PR_NUM --check-only --sha "${{ github.event.inputs.sha }}")
else
OUTPUT=$(python -m showtime sync $PR_NUM --check-only)
fi
echo "$OUTPUT"
# Extract the outputs we need for conditional steps
BUILD=$(echo "$OUTPUT" | grep "build_needed=" | cut -d'=' -f2)
SYNC=$(echo "$OUTPUT" | grep "sync_needed=" | cut -d'=' -f2)
PR_NUM_OUT=$(echo "$OUTPUT" | grep "pr_number=" | cut -d'=' -f2)
TARGET_SHA=$(echo "$OUTPUT" | grep "target_sha=" | cut -d'=' -f2)
echo "build_needed=$BUILD" >> $GITHUB_OUTPUT
echo "sync_needed=$SYNC" >> $GITHUB_OUTPUT
echo "pr_number=$PR_NUM_OUT" >> $GITHUB_OUTPUT
echo "target_sha=$TARGET_SHA" >> $GITHUB_OUTPUT
- name: Checkout PR code (only if build needed)
if: steps.auth.outputs.authorized == 'true' && steps.check.outputs.build_needed == 'true'
uses: actions/checkout@v5
with:
ref: ${{ steps.check.outputs.target_sha }}
persist-credentials: false
- 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
with:
dockerhub-user: ${{ secrets.DOCKERHUB_USER }}
dockerhub-token: ${{ secrets.DOCKERHUB_TOKEN }}
build: "true"
install-docker-compose: "false"
- name: Execute sync (handles everything)
if: steps.auth.outputs.authorized == 'true' && steps.check.outputs.sync_needed == 'true'
env:
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
DOCKERHUB_USER: ${{ secrets.DOCKERHUB_USER }}
DOCKERHUB_TOKEN: ${{ secrets.DOCKERHUB_TOKEN }}
run: |
PR_NUM="${{ steps.check.outputs.pr_number }}"
TARGET_SHA="${{ steps.check.outputs.target_sha }}"
if [[ -n "$TARGET_SHA" ]]; then
python -m showtime sync $PR_NUM --sha "$TARGET_SHA"
else
python -m showtime sync $PR_NUM
fi

View File

@@ -51,7 +51,7 @@ jobs:
- 16379:6379
steps:
- name: "Checkout ${{ github.ref }} ( ${{ github.sha }} )"
uses: actions/checkout@v5
uses: actions/checkout@v4
with:
persist-credentials: false
submodules: recursive
@@ -63,7 +63,7 @@ jobs:
with:
run: testdata
- name: Setup Node.js
uses: actions/setup-node@v5
uses: actions/setup-node@v4
with:
node-version-file: './superset-frontend/.nvmrc'
- name: Install npm dependencies

View File

@@ -30,13 +30,13 @@ jobs:
runs-on: ubuntu-24.04
steps:
- name: "Checkout ${{ github.ref }} ( ${{ github.sha }} )"
uses: actions/checkout@v5
uses: actions/checkout@v4
with:
persist-credentials: false
submodules: recursive
ref: master
- name: Set up Node.js
uses: actions/setup-node@v5
uses: actions/setup-node@v4
with:
node-version-file: './superset-frontend/.nvmrc'
- name: Install eyes-storybook dependencies

View File

@@ -1,4 +1,4 @@
name: Superset App CLI tests
name: Superset CLI tests
on:
push:
@@ -37,7 +37,7 @@ jobs:
- 16379:6379
steps:
- name: "Checkout ${{ github.ref }} ( ${{ github.sha }} )"
uses: actions/checkout@v5
uses: actions/checkout@v4
with:
persist-credentials: false
submodules: recursive

View File

@@ -31,17 +31,17 @@ jobs:
runs-on: ubuntu-24.04
steps:
- name: "Checkout ${{ github.ref }} ( ${{ github.sha }} )"
uses: actions/checkout@v5
uses: actions/checkout@v4
with:
persist-credentials: false
submodules: recursive
- name: Set up Node.js
uses: actions/setup-node@v5
uses: actions/setup-node@v4
with:
node-version-file: './docs/.nvmrc'
- name: Setup Python
uses: ./.github/actions/setup-backend/
- uses: actions/setup-java@v5
- uses: actions/setup-java@v4
with:
distribution: 'zulu'
java-version: '21'

View File

@@ -18,17 +18,15 @@ jobs:
name: Link Checking
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v5
- uses: actions/checkout@v4
# Do not bump this linkinator-action version without opening
# an ASF Infra ticket to allow the new version first!
- uses: JustinBeckwith/linkinator-action@3d5ba091319fa7b0ac14703761eebb7d100e6f6d # v1.11.0
- uses: JustinBeckwith/linkinator-action@v1.11.0
continue-on-error: true # This will make the job advisory (non-blocking, no red X)
with:
paths: "**/*.md, **/*.mdx"
paths: "**/*.md, **/*.mdx, !superset-frontend/CHANGELOG.md"
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,
^https://github.com/apache/(superset|incubator-superset)/(pull|issue)/\d+,
http://localhost:8088/,
http://127.0.0.1:3000/,
http://localhost:9001/,
@@ -43,12 +41,12 @@ jobs:
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://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/
build-deploy:
name: Build & Deploy
@@ -58,12 +56,12 @@ jobs:
working-directory: docs
steps:
- name: "Checkout ${{ github.ref }} ( ${{ github.sha }} )"
uses: actions/checkout@v5
uses: actions/checkout@v4
with:
persist-credentials: false
submodules: recursive
- name: Set up Node.js
uses: actions/setup-node@v5
uses: actions/setup-node@v4
with:
node-version-file: './docs/.nvmrc'
- name: yarn install

View File

@@ -69,21 +69,21 @@ jobs:
# 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@v5
uses: actions/checkout@v4
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@v5
uses: actions/checkout@v4
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@v5
uses: actions/checkout@v4
with:
persist-credentials: false
ref: refs/pull/${{ github.event.inputs.pr_id }}/merge
@@ -109,7 +109,7 @@ jobs:
run: testdata
- name: Setup Node.js
if: steps.check.outputs.python || steps.check.outputs.frontend
uses: actions/setup-node@v5
uses: actions/setup-node@v4
with:
node-version-file: './superset-frontend/.nvmrc'
- name: Install npm dependencies
@@ -223,7 +223,7 @@ jobs:
if: steps.check.outputs.python || steps.check.outputs.frontend
uses: ./.github/actions/cached-dependencies
with:
run: testdata
run: playwright_testdata
- name: Setup Node.js
if: steps.check.outputs.python || steps.check.outputs.frontend
uses: actions/setup-node@v5

View File

@@ -1,64 +0,0 @@
name: Superset Extensions CLI Package Tests
on:
push:
branches:
- "master"
- "[0-9].[0-9]*"
pull_request:
types: [synchronize, opened, reopened, ready_for_review]
# cancel previous workflow jobs for PRs
concurrency:
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.run_id }}
cancel-in-progress: true
jobs:
test-superset-extensions-cli-package:
runs-on: ubuntu-24.04
strategy:
matrix:
python-version: ["previous", "current", "next"]
defaults:
run:
working-directory: superset-extensions-cli
steps:
- name: "Checkout ${{ github.ref }} ( ${{ github.sha }} )"
uses: actions/checkout@v5
with:
persist-credentials: false
submodules: recursive
- name: Check for file changes
id: check
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/
with:
python-version: ${{ matrix.python-version }}
requirements-type: dev
- name: Run pytest with coverage
if: steps.check.outputs.superset-extensions-cli
run: |
pytest --cov=superset_extensions_cli --cov-report=xml --cov-report=term-missing --cov-report=html -v --tb=short
- name: Upload coverage reports to Codecov
if: steps.check.outputs.superset-extensions-cli
uses: codecov/codecov-action@v5
with:
file: ./coverage.xml
flags: superset-extensions-cli
name: superset-extensions-cli-coverage
fail_ci_if_error: false
- name: Upload HTML coverage report
if: steps.check.outputs.superset-extensions-cli
uses: actions/upload-artifact@v4
with:
name: superset-extensions-cli-coverage-html
path: htmlcov/

View File

@@ -23,7 +23,7 @@ jobs:
should-run: ${{ steps.check.outputs.frontend }}
steps:
- name: Checkout Code
uses: actions/checkout@v5
uses: actions/checkout@v4
with:
persist-credentials: false
fetch-depth: 0
@@ -47,7 +47,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.10-slim-bookworm \
--target superset-node-ci \
.
@@ -73,7 +73,7 @@ jobs:
runs-on: ubuntu-24.04
steps:
- name: Download Docker Image Artifact
uses: actions/download-artifact@v5
uses: actions/download-artifact@v4
with:
name: docker-image
@@ -101,7 +101,7 @@ jobs:
runs-on: ubuntu-24.04
steps:
- name: Download Coverage Artifacts
uses: actions/download-artifact@v5
uses: actions/download-artifact@v4
with:
pattern: coverage-artifacts-*
path: coverage/
@@ -127,7 +127,7 @@ jobs:
runs-on: ubuntu-24.04
steps:
- name: Download Docker Image Artifact
uses: actions/download-artifact@v5
uses: actions/download-artifact@v4
with:
name: docker-image
@@ -135,15 +135,15 @@ jobs:
run: |
docker load < docker-image.tar.gz
- name: lint
- name: eslint
run: |
docker run --rm $TAG bash -c \
"npm i && npm run lint"
"npm i && npm run eslint -- . --quiet"
- name: tsc
run: |
docker run --rm $TAG bash -c \
"npm i && npm run plugins:build && npm run type"
"npm run type"
validate-frontend:
needs: frontend-build
@@ -151,7 +151,7 @@ jobs:
runs-on: ubuntu-24.04
steps:
- name: Download Docker Image Artifact
uses: actions/download-artifact@v5
uses: actions/download-artifact@v4
with:
name: docker-image

View File

@@ -16,7 +16,7 @@ jobs:
runs-on: ubuntu-24.04
steps:
- name: "Checkout ${{ github.ref }} ( ${{ github.sha }} )"
uses: actions/checkout@v5
uses: actions/checkout@v4
with:
persist-credentials: false
submodules: recursive

View File

@@ -29,7 +29,7 @@ jobs:
steps:
- name: Checkout code
uses: actions/checkout@v5
uses: actions/checkout@v4
with:
ref: ${{ inputs.ref || github.ref_name }}
persist-credentials: true
@@ -101,7 +101,7 @@ jobs:
CR_RELEASE_NAME_TEMPLATE: "superset-helm-chart-{{ .Version }}"
- name: Open Pull Request
uses: actions/github-script@v8
uses: actions/github-script@v7
with:
script: |
const branchName = '${{ env.branch_name }}';

View File

@@ -97,10 +97,10 @@ jobs:
if: steps.check.outputs.python || steps.check.outputs.frontend
uses: ./.github/actions/cached-dependencies
with:
run: testdata
run: playwright_testdata
- name: Setup Node.js
if: steps.check.outputs.python || steps.check.outputs.frontend
uses: actions/setup-node@v5
uses: actions/setup-node@v4
with:
node-version-file: './superset-frontend/.nvmrc'
- name: Install npm dependencies

View File

@@ -41,7 +41,7 @@ jobs:
- 16379:6379
steps:
- name: "Checkout ${{ github.ref }} ( ${{ github.sha }} )"
uses: actions/checkout@v5
uses: actions/checkout@v4
with:
persist-credentials: false
submodules: recursive
@@ -99,7 +99,7 @@ jobs:
- 16379:6379
steps:
- name: "Checkout ${{ github.ref }} ( ${{ github.sha }} )"
uses: actions/checkout@v5
uses: actions/checkout@v4
with:
persist-credentials: false
submodules: recursive
@@ -152,7 +152,7 @@ jobs:
- 16379:6379
steps:
- name: "Checkout ${{ github.ref }} ( ${{ github.sha }} )"
uses: actions/checkout@v5
uses: actions/checkout@v4
with:
persist-credentials: false
submodules: recursive

View File

@@ -48,7 +48,7 @@ jobs:
- 16379:6379
steps:
- name: "Checkout ${{ github.ref }} ( ${{ github.sha }} )"
uses: actions/checkout@v5
uses: actions/checkout@v4
with:
persist-credentials: false
submodules: recursive
@@ -108,7 +108,7 @@ jobs:
- 16379:6379
steps:
- name: "Checkout ${{ github.ref }} ( ${{ github.sha }} )"
uses: actions/checkout@v5
uses: actions/checkout@v4
with:
persist-credentials: false
submodules: recursive

View File

@@ -24,7 +24,7 @@ jobs:
PYTHONPATH: ${{ github.workspace }}
steps:
- name: "Checkout ${{ github.ref }} ( ${{ github.sha }} )"
uses: actions/checkout@v5
uses: actions/checkout@v4
with:
persist-credentials: false
submodules: recursive

View File

@@ -18,7 +18,7 @@ jobs:
runs-on: ubuntu-24.04
steps:
- name: "Checkout ${{ github.ref }} ( ${{ github.sha }} )"
uses: actions/checkout@v5
uses: actions/checkout@v4
with:
persist-credentials: false
submodules: recursive
@@ -31,7 +31,7 @@ jobs:
- name: Setup Node.js
if: steps.check.outputs.frontend
uses: actions/setup-node@v5
uses: actions/setup-node@v4
with:
node-version-file: './superset-frontend/.nvmrc'
- name: Install dependencies
@@ -49,7 +49,7 @@ jobs:
runs-on: ubuntu-24.04
steps:
- name: "Checkout ${{ github.ref }} ( ${{ github.sha }} )"
uses: actions/checkout@v5
uses: actions/checkout@v4
with:
persist-credentials: false
submodules: recursive

View File

@@ -21,7 +21,7 @@ jobs:
runs-on: ubuntu-24.04
steps:
- name: "Checkout ${{ github.ref }} ( ${{ github.sha }} )"
uses: actions/checkout@v5
uses: actions/checkout@v4
with:
persist-credentials: false
- name: Install dependencies

View File

@@ -26,7 +26,7 @@ jobs:
steps:
- name: Quickly add thumbs up!
if: github.event_name == 'issue_comment' && contains(github.event.comment.body, '@supersetbot')
uses: actions/github-script@v8
uses: actions/github-script@v7
with:
script: |
const [owner, repo] = process.env.GITHUB_REPOSITORY.split('/')
@@ -38,7 +38,7 @@ jobs:
});
- name: "Checkout ( ${{ github.sha }} )"
uses: actions/checkout@v5
uses: actions/checkout@v4
with:
persist-credentials: false

View File

@@ -42,12 +42,12 @@ jobs:
runs-on: ubuntu-24.04
strategy:
matrix:
build_preset: ["dev", "lean", "py310", "websocket", "dockerize", "py311", "py312"]
build_preset: ["dev", "lean", "py310", "websocket", "dockerize", "py311"]
fail-fast: false
steps:
- name: "Checkout ${{ github.ref }} ( ${{ github.sha }} )"
uses: actions/checkout@v5
uses: actions/checkout@v4
with:
fetch-depth: 0
@@ -60,7 +60,7 @@ jobs:
build: "true"
- name: Use Node.js 20
uses: actions/setup-node@v5
uses: actions/setup-node@v4
with:
node-version: 20
@@ -107,12 +107,12 @@ jobs:
steps:
- name: "Checkout ${{ github.ref }} ( ${{ github.sha }} )"
uses: actions/checkout@v5
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Use Node.js 20
uses: actions/setup-node@v5
uses: actions/setup-node@v4
with:
node-version: 20

View File

@@ -27,10 +27,10 @@ jobs:
name: Generate Reports
steps:
- name: Checkout Repository
uses: actions/checkout@v5
uses: actions/checkout@v4
- name: Set up Node.js
uses: actions/setup-node@v5
uses: actions/setup-node@v4
with:
node-version-file: './superset-frontend/.nvmrc'

View File

@@ -12,7 +12,7 @@ jobs:
steps:
- name: Welcome Message
uses: actions/first-interaction@v3
uses: actions/first-interaction@v2
continue-on-error: true
with:
repo-token: ${{ github.token }}

7
.gitignore vendored
View File

@@ -33,7 +33,6 @@ cover
.env
.envrc
.idea
.roo
.mypy_cache
.python-version
.tox
@@ -44,7 +43,7 @@ _modules
_static
build
app.db
*.egg-info/
apache_superset.egg-info/
changelog.sh
dist
dump.rdb
@@ -61,6 +60,7 @@ tmp
rat-results.txt
superset/app/
superset-websocket/config.json
*.log
# Node.js, webpack artifacts, storybook
*.entry.js
@@ -136,5 +136,6 @@ CLAUDE.local.md
PROJECT.md
.aider*
.claude_rc*
.claude/settings.local.json
.env.local
oxc-custom-build/
*.code-workspace

View File

@@ -23,10 +23,9 @@ repos:
rev: v1.15.0
hooks:
- id: mypy
name: mypy (main)
args: [--check-untyped-defs]
exclude: ^superset-extensions-cli/
additional_dependencies: [
types-cachetools,
types-simplejson,
types-python-dateutil,
types-requests,
@@ -40,10 +39,6 @@ repos:
types-paramiko,
types-Markdown,
]
- id: mypy
name: mypy (superset-extensions-cli)
args: [--check-untyped-defs]
files: ^superset-extensions-cli/
- repo: https://github.com/pre-commit/pre-commit-hooks
rev: v5.0.0
hooks:
@@ -60,39 +55,25 @@ 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'
language: system
pass_filenames: true
files: ^superset-frontend/.*\.(js|jsx|ts|tsx|css|scss|sass|json)$
- repo: local
hooks:
- id: oxlint-frontend
name: oxlint (frontend)
entry: ./scripts/oxlint.sh
language: system
pass_filenames: true
files: ^superset-frontend/.*\.(js|jsx|ts|tsx)$
- id: custom-rules-frontend
name: custom rules (frontend)
entry: ./scripts/check-custom-rules.sh
language: system
pass_filenames: true
files: ^superset-frontend/.*\.(js|jsx|ts|tsx)$
- id: eslint-docs
name: eslint (docs)
entry: bash -c 'cd docs && FILES=$(echo "$@" | sed "s|docs/||g") && yarn eslint --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
language: system
files: ^superset-frontend\/.*\.(js|jsx|ts|tsx)$
exclude: ^superset-frontend/cypress-base\/
require_serial: true
- id: eslint-frontend
name: eslint (frontend)
entry: ./scripts/eslint.sh
language: system
pass_filenames: true
files: ^superset-frontend/.*\.(js|jsx|ts|tsx)$
- id: eslint-docs
name: eslint (docs)
entry: bash -c 'cd docs && FILES=$(echo "$@" | sed "s|docs/||g") && yarn eslint --fix --ext .js,.jsx,.ts,.tsx --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
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
rev: e2f070289d8eddcaec0b580d3bde29437e7c8221
@@ -114,24 +95,21 @@ repos:
args: [--fix]
- repo: local
hooks:
- id: pylint
name: pylint with custom Superset plugins
entry: bash
language: system
types: [python]
exclude: ^(tests/|superset/migrations/|scripts/|RELEASING/|docker/)
args:
- -c
- |
TARGET_BRANCH=${GITHUB_BASE_REF:-master}
# Only fetch if we're not in CI (CI already has all refs)
if [ -z "$CI" ]; then
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)
if [ -n "$files" ]; then
pylint --rcfile=.pylintrc --load-plugins=superset.extensions.pylint --reports=no $files
else
echo "No Python files to lint."
fi
- id: pylint
name: pylint with custom Superset plugins
entry: bash
language: system
types: [python]
exclude: ^(tests/|superset/migrations/|scripts/|RELEASING/|docker/)
args:
- -c
- |
TARGET_BRANCH=${GITHUB_BASE_REF:-master}
git fetch origin "$TARGET_BRANCH"
BASE=$(git merge-base origin/"$TARGET_BRANCH" HEAD)
files=$(git diff --name-only --diff-filter=ACM "$BASE"..HEAD | grep '^superset/.*\.py$' || true)
if [ -n "$files" ]; then
pylint --rcfile=.pylintrc --load-plugins=superset.extensions.pylint --reports=no $files
else
echo "No Python files to lint."
fi

View File

@@ -53,7 +53,7 @@ extension-pkg-whitelist=pyarrow
[MESSAGES CONTROL]
disable=all
enable=json-import,disallowed-sql-import,consider-using-transaction
enable=disallowed-sql-import,consider-using-transaction
[REPORTS]

View File

@@ -11,7 +11,6 @@
.nvmrc
.prettierrc
.rat-excludes
.swcrc
.*log
.*pyc
.*lock
@@ -33,8 +32,6 @@ apache_superset.egg-info
# json and csv in general cannot have comments
.*json
.*csv
# jinja templates often need to be as-is
.*j2
# Generated doc files
env/*
docs/.htaccess*
@@ -83,7 +80,6 @@ intro_header.txt
# for LLMs
llm-context.md
AGENTS.md
LLMS.md
CLAUDE.md
CURSOR.md

View File

@@ -47,5 +47,5 @@ under the License.
- [4.1.1](./CHANGELOG/4.1.1.md)
- [4.1.2](./CHANGELOG/4.1.2.md)
- [4.1.3](./CHANGELOG/4.1.3.md)
- [4.1.4](./CHANGELOG/4.1.4.md)
- [5.0.0](./CHANGELOG/5.0.0.md)
- [6.0.0](./CHANGELOG/6.0.0.md)

View File

@@ -1,33 +0,0 @@
<!--
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.
-->
## Change Log
### 4.1.4 (Thu Jul 24 08:30:04 2025 -0300)
**Database Migrations**
**Features**
**Fixes**
- [#34289](https://github.com/apache/superset/pull/34289) fix: Saved queries list break if one query can't be parsed (@michael-s-molina)
- [#33059](https://github.com/apache/superset/pull/33059) fix: Adds missing __init__ file to commands/logs (@michael-s-molina)
**Others**
- [#32236](https://github.com/apache/superset/pull/32236) chore(deps): bump cryptography from 43.0.3 to 44.0.1 (@dependabot[bot])

1062
CHANGELOG/6.0.0.md Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -1 +1 @@
AGENTS.md
LLMS.md

View File

@@ -5,7 +5,7 @@
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
with the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
@@ -16,23 +16,9 @@
specific language governing permissions and limitations
under the License.
-->
# Contributing to Apache Superset
Contributions are welcome and are greatly appreciated! Every
little bit helps, and credit will always be given.
## Developer Portal
All developer and contribution documentation has moved to the Apache Superset Developer Portal:
**[📚 View the Developer Portal →](https://superset.apache.org/developer_portal/)**
The Developer Portal includes comprehensive guides for:
- [Contributing Overview](https://superset.apache.org/developer_portal/contributing/overview)
- [Development Setup](https://superset.apache.org/developer_portal/contributing/development-setup)
- [Submitting Pull Requests](https://superset.apache.org/developer_portal/contributing/submitting-pr)
- [Contribution Guidelines](https://superset.apache.org/developer_portal/contributing/guidelines)
- [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).
All matters related to contributions have moved to [this section of
the official Superset documentation](https://superset.apache.org/docs/contributing/). Source for the documentation is
[located here](https://github.com/apache/superset/tree/master/docs/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.13-slim-bookworm
# If BUILDPLATFORM is null, set it to 'amd64' (or leave as is otherwise).
ARG BUILDPLATFORM=${BUILDPLATFORM:-amd64}
@@ -26,13 +26,10 @@ ARG BUILDPLATFORM=${BUILDPLATFORM:-amd64}
# Include translations in the final build
ARG BUILD_TRANSLATIONS="false"
# Build arg to pre-populate examples DuckDB file
ARG LOAD_EXAMPLES_DUCKDB="false"
######################################################################
# superset-node-ci used as a base for building frontend assets and CI
######################################################################
FROM --platform=${BUILDPLATFORM} node:20-trixie-slim AS superset-node-ci
FROM --platform=${BUILDPLATFORM} node:20-bookworm-slim AS superset-node-ci
ARG BUILD_TRANSLATIONS
ENV BUILD_TRANSLATIONS=${BUILD_TRANSLATIONS}
ARG DEV_MODE="false" # Skip frontend build in dev mode
@@ -67,7 +64,7 @@ RUN --mount=type=bind,source=./superset-frontend/package.json,target=./package.j
--mount=type=bind,source=./superset-frontend/package-lock.json,target=./package-lock.json \
--mount=type=cache,target=/root/.cache \
--mount=type=cache,target=/root/.npm \
if [ "${DEV_MODE}" = "false" ]; then \
if [ "$DEV_MODE" = "false" ]; then \
npm ci; \
else \
echo "Skipping 'npm ci' in dev mode"; \
@@ -83,7 +80,7 @@ FROM superset-node-ci AS superset-node
# Build the frontend if not in dev mode
RUN --mount=type=cache,target=/root/.npm \
if [ "${DEV_MODE}" = "false" ]; then \
if [ "$DEV_MODE" = "false" ]; then \
echo "Running 'npm run ${BUILD_CMD}'"; \
npm run ${BUILD_CMD}; \
else \
@@ -94,10 +91,11 @@ RUN --mount=type=cache,target=/root/.npm \
COPY superset/translations /app/superset/translations
# Build translations if enabled, then cleanup localization files
RUN if [ "${BUILD_TRANSLATIONS}" = "true" ]; then \
RUN if [ "$BUILD_TRANSLATIONS" = "true" ]; then \
npm run build-translation; \
fi; \
rm -rf /app/superset/translations/*/*/*.[po,mo];
rm -rf /app/superset/translations/*/*/*.po; \
rm -rf /app/superset/translations/*/*/*.mo;
######################################################################
@@ -108,15 +106,15 @@ FROM python:${PY_VER} AS python-base
ARG SUPERSET_HOME="/app/superset_home"
ENV SUPERSET_HOME=${SUPERSET_HOME}
RUN mkdir -p ${SUPERSET_HOME}
RUN mkdir -p $SUPERSET_HOME
RUN useradd --user-group -d ${SUPERSET_HOME} -m --no-log-init --shell /bin/bash superset \
&& chmod -R 1777 ${SUPERSET_HOME} \
&& chown -R superset:superset ${SUPERSET_HOME}
&& chmod -R 1777 $SUPERSET_HOME \
&& chown -R superset:superset $SUPERSET_HOME
# Some bash scripts needed throughout the layers
COPY --chmod=755 docker/*.sh /app/docker/
RUN pip install --no-cache-dir --upgrade uv
COPY --from=ghcr.io/astral-sh/uv:latest /uv /usr/local/bin/uv
# Using uv as it's faster/simpler than pip
RUN uv venv /app/.venv
@@ -136,19 +134,17 @@ RUN --mount=type=cache,target=/root/.cache/uv \
. /app/.venv/bin/activate && /app/docker/pip-install.sh --requires-build-essential -r requirements/translations.txt
COPY superset/translations/ /app/translations_mo/
RUN if [ "${BUILD_TRANSLATIONS}" = "true" ]; then \
RUN if [ "$BUILD_TRANSLATIONS" = "true" ]; then \
pybabel compile -d /app/translations_mo | true; \
fi; \
rm -f /app/translations_mo/*/*/*.[po,json]
rm -f /app/translations_mo/*/*/*.po; \
rm -f /app/translations_mo/*/*/*.json;
######################################################################
# Python APP common layer
######################################################################
FROM python-base AS python-common
# Re-declare build arg to receive it in this stage
ARG LOAD_EXAMPLES_DUCKDB
ENV SUPERSET_HOME="/app/superset_home" \
HOME="/app/superset_home" \
SUPERSET_ENV="production" \
@@ -176,11 +172,11 @@ 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" ] || [ "$INCLUDE_FIREFOX" = "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; \
if [ "$INCLUDE_CHROMIUM" = "true" ]; then playwright install chromium; fi && \
if [ "$INCLUDE_FIREFOX" = "true" ]; then playwright install firefox; fi; \
else \
echo "Skipping browser installation"; \
fi
@@ -202,18 +198,6 @@ RUN /app/docker/apt-install.sh \
libecpg-dev \
libldap2-dev
# Pre-load examples DuckDB file if requested
RUN if [ "$LOAD_EXAMPLES_DUCKDB" = "true" ]; then \
mkdir -p /app/data && \
echo "Downloading pre-built examples.duckdb..." && \
curl -L -o /app/data/examples.duckdb \
"https://raw.githubusercontent.com/apache-superset/examples-data/master/examples.duckdb" && \
chown -R superset:superset /app/data; \
else \
mkdir -p /app/data && \
chown -R superset:superset /app/data; \
fi
# Copy compiled things from previous stages
COPY --from=superset-node /app/superset/static/assets superset/static/assets
@@ -237,10 +221,6 @@ 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
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
@@ -263,11 +243,6 @@ RUN /app/docker/apt-install.sh \
# Copy development requirements and install them
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
RUN --mount=type=cache,target=${SUPERSET_HOME}/.cache/uv \
/app/docker/pip-install.sh --requires-build-essential -r requirements/development.txt
@@ -285,15 +260,6 @@ USER superset
######################################################################
FROM lean AS ci
USER root
RUN uv pip install .[postgres,duckdb]
USER superset
CMD ["/app/docker/entrypoints/docker-ci.sh"]
######################################################################
# Showtime image - lean + DuckDB for examples database
######################################################################
FROM lean AS showtime
USER root
RUN uv pip install .[duckdb]
RUN uv pip install .[postgres]
USER superset
CMD ["/app/docker/entrypoints/docker-ci.sh"]

View File

@@ -1 +1 @@
AGENTS.md
LLMS.md

2
GPT.md
View File

@@ -1 +1 @@
AGENTS.md
LLMS.md

View File

@@ -1,121 +0,0 @@
<!--
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.
-->
# Superset Frontend Linting Architecture
## Overview
We use a hybrid linting approach combining OXC (fast, standard rules) with custom AST-based checks for Superset-specific patterns.
## Components
### 1. Primary Linter: OXC
- **What**: Oxidation Compiler's linter (oxlint)
- **Handles**: 95% of linting rules (standard ESLint rules, TypeScript, React, etc.)
- **Speed**: ~50-100x faster than ESLint
- **Config**: `oxlint.json`
### 2. Custom Rule Checker
- **What**: Node.js AST-based script
- **Handles**: Superset-specific rules:
- No literal colors (use theme)
- No FontAwesome icons (use Icons component)
- No template vars in i18n
- **Speed**: Fast enough for pre-commit
- **Script**: `scripts/check-custom-rules.js`
## Developer Workflow
### Local Development
```bash
# Fast linting (OXC only)
npm run lint
# Full linting (OXC + custom rules)
npm run lint:full
# Auto-fix what's possible
npm run lint-fix
```
### Pre-commit
1. OXC runs first (via `scripts/oxlint.sh`)
2. Custom rules check runs second (lightweight, AST-based)
3. Both must pass for commit to succeed
### CI Pipeline
```yaml
- name: Lint with OXC
run: npm run lint
- name: Check custom rules
run: npm run check:custom-rules
```
## Why This Architecture?
### ✅ Pros
1. **No binary distribution issues** - ASF compatible
2. **Fast performance** - OXC for bulk, lightweight script for custom
3. **Maintainable** - Custom rules in JavaScript, not Rust
4. **Flexible** - Can evolve as OXC adds plugin support
5. **Cacheable** - Both OXC and Node.js are standard tools
### ❌ Cons
1. **Two tools** - Slightly more complex than single linter
2. **Duplicate parsing** - Files parsed twice (once by each tool)
### 🔄 Migration Path
When OXC supports JavaScript plugins:
1. Convert `check-custom-rules.js` to OXC plugin format
2. Consolidate back to single tool
3. Keep same rules and developer experience
## Implementation Checklist
- [x] OXC for standard linting
- [x] Pre-commit integration
- [ ] Custom rules script
- [ ] Combine in npm scripts
- [ ] Update CI pipeline
- [ ] Developer documentation
## Performance Targets
| Operation | Target Time | Current |
|-----------|------------|---------|
| Pre-commit (changed files) | <2s | ✅ 1.5s |
| Full lint (all files) | <10s | ✅ 8s |
| Custom rules check | <5s | 🔄 TBD |
## Caching Strategy
### Local Development
- OXC: Built-in incremental checking
- Custom rules: Use file hash cache (similar to pytest cache)
### CI
- Cache `node_modules` (includes oxlint binary)
- Cache custom rules results by commit hash
- Skip unchanged files using git diff
## Future Improvements
1. **When OXC adds plugin support**: Migrate custom rules to OXC plugins
2. **Consider Biome**: Another Rust-based linter with plugin support
3. **AST sharing**: Investigate sharing AST between tools to avoid double parsing

View File

@@ -68,11 +68,7 @@ superset/
### Apache License Headers
- **New files require ASF license headers** - When creating new code files, include the standard Apache Software Foundation license header
- **LLM instruction files are excluded** - Files like AGENTS.md, CLAUDE.md, etc. are in `.rat-excludes` to avoid header token overhead
### Code Comments
- **Avoid time-specific language** - Don't use words like "now", "currently", "today" in code comments as they become outdated
- **Write timeless comments** - Comments should remain accurate regardless of when they're read
- **LLM instruction files are excluded** - Files like LLMS.md, CLAUDE.md, etc. are in `.rat-excludes` to avoid header token overhead
## Documentation Requirements
@@ -153,19 +149,6 @@ curl -f http://localhost:8088/health || echo "❌ Setup required - see https://s
- **Use negation operator**: `~Model.field` instead of `== False` to avoid ruff E712 errors
- **Example**: `~Model.is_active` instead of `Model.is_active == False`
## Pull Request Guidelines
**When creating pull requests:**
1. **Read the current PR template**: Always check `.github/PULL_REQUEST_TEMPLATE.md` for the latest format
2. **Use the template sections**: Include all sections from the template (SUMMARY, BEFORE/AFTER, TESTING INSTRUCTIONS, ADDITIONAL INFORMATION)
3. **Follow PR title conventions**: Use [Conventional Commits](https://www.conventionalcommits.org/en/v1.0.0/)
- Format: `type(scope): description`
- Example: `fix(dashboard): load charts correctly`
- Types: `fix`, `feat`, `docs`, `style`, `refactor`, `perf`, `test`, `chore`
**Important**: Always reference the actual template file at `.github/PULL_REQUEST_TEMPLATE.md` instead of using cached content, as the template may be updated over time.
## Pre-commit Validation
**Use pre-commit hooks for quality validation:**

View File

@@ -91,7 +91,7 @@ js-format:
cd superset-frontend; npm run prettier
flask-app:
flask run -p 8088 --reload --debugger
flask run -p 8088 --with-threads --reload --debugger
node-app:
cd superset-frontend; npm run dev-server

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.10-slim-bookworm
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.10-slim-bookworm
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.10-slim-bookworm
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.10-slim-bookworm
RUN apt-get update -y
RUN apt-get install -y \

View File

@@ -469,10 +469,6 @@ an account first if you don't have one, and reference your username
while requesting access to push packages.
```bash
# Run this first to make sure you are uploading the right version.
# Pypi does not allow you to delete or retract once uplaoded.
twine check dist/*
twine upload dist/*
```
@@ -522,8 +518,6 @@ takes the version (ie `3.1.1`), the git reference (any SHA, tag or branch
reference), and whether to force the `latest` Docker tag on the
generated images.
**NOTE:** If the docker image isn't built, you'll need to run this [GH action](https://github.com/apache/superset/actions/workflows/tag-release.yml) where you provide it the tag sha.
### Npm Release
You might want to publish the latest @superset-ui release to npm

View File

@@ -22,8 +22,137 @@ under the License.
This file documents any backwards-incompatible changes in Superset and
assists people when migrating to a new version.
## 6.0.0
## Next
### `thumbnail_url` removed from dashboard list API response
The `thumbnail_url` field has been removed from `GET /api/v1/dashboard/` list responses. External consumers relying on this field must now construct the thumbnail URL client-side using `id` and `changed_on_utc`:
```
/api/v1/dashboard/{id}/thumbnail/{changed_on_utc}/
```
The thumbnail endpoint redirects to the current digest URL regardless of whether the supplied digest is exact. If the image is not yet cached, that digest URL may return `202` and trigger async generation. Using `changed_on_utc` as the digest is sufficient for cache-busting purposes.
### Dataset import validates catalog against the target connection
Importing a dataset now validates the `catalog` field against the target database connection. When the connection has multi-catalog disabled (`allow_multi_catalog` off) and the dataset's catalog is not the connection's default catalog, the import fails instead of silently persisting the non-default catalog. This matches the validation already enforced on the dataset update path and prevents imported datasets from querying an unintended database.
If you relied on importing datasets with a non-default catalog, enable "Allow changing catalogs" on the target connection, or set the dataset's catalog to the connection's default before importing.
### Dynamic Group By respects the sort toggle for display values
The Dynamic Group By chart customization now orders its display values according to the "Sort display control values" toggle: ascending (AZ), descending (ZA), or the dataset's source order when the toggle is unset. Previously the dropdown always sorted alphabetically. Existing dashboards where the toggle was never set will show options in source order instead of AZ; open the customization and enable the toggle to restore alphabetical ordering.
### MCP Tool Observability
MCP (Model Context Protocol) tools now include enhanced observability instrumentation for monitoring and debugging:
**Two-layer instrumentation:**
1. **Middleware layer** (`LoggingMiddleware`): Automatically logs all MCP tool calls with `duration_ms` and `success` status in the audit log (Action Log UI, logs table)
2. **Sub-operation tracking**: All 19 MCP tools include granular `event_logger.log_context()` blocks for tracking individual operations like validation, database writes, and query execution
**Action naming convention:**
- Tool-level logs: `mcp_tool_call` (via middleware)
- Sub-operation logs: `mcp.{tool_name}.{operation}` (e.g., `mcp.generate_chart.validation`, `mcp.execute_sql.query_execution`)
**Querying MCP logs:**
```sql
-- Top slowest MCP operations
SELECT action, COUNT(*) as calls, AVG(duration_ms) as avg_ms
FROM logs
WHERE action LIKE 'mcp.%'
GROUP BY action
ORDER BY avg_ms DESC
LIMIT 20;
-- MCP tool success rate
SELECT
json_extract(curated_payload, '$.tool') as tool,
COUNT(*) as total_calls,
SUM(CASE WHEN json_extract(curated_payload, '$.success') = 'true' THEN 1 ELSE 0 END) as successful,
ROUND(100.0 * SUM(CASE WHEN json_extract(curated_payload, '$.success') = 'true' THEN 1 ELSE 0 END) / COUNT(*), 2) as success_rate
FROM logs
WHERE action = 'mcp_tool_call'
GROUP BY tool
ORDER BY total_calls DESC;
```
**Security note:** Sensitive parameters (passwords, API keys, tokens) are automatically redacted in logs as `[REDACTED]`.
### Signal Cache Backend
A new `SIGNAL_CACHE_CONFIG` configuration provides a unified Redis-based backend for real-time coordination features in Superset. This backend enables:
- **Pub/sub messaging** for real-time event notifications between workers
- **Atomic distributed locking** using Redis SET NX EX (more performant than database-backed locks)
- **Event-based coordination** for background task management
The signal cache is used by the Global Task Framework (GTF) for abort notifications and task completion signaling, and will eventually replace `GLOBAL_ASYNC_QUERIES_CACHE_BACKEND` as the standard signaling backend. Configuring this is recommended for Redis enabled production deployments.
Example configuration in `superset_config.py`:
```python
SIGNAL_CACHE_CONFIG = {
"CACHE_TYPE": "RedisCache",
"CACHE_KEY_PREFIX": "signal_",
"CACHE_REDIS_URL": "redis://localhost:6379/1",
"CACHE_DEFAULT_TIMEOUT": 300,
}
```
See `superset/config.py` for complete configuration options.
### WebSocket config for GAQ with Docker
[35896](https://github.com/apache/superset/pull/35896) and [37624](https://github.com/apache/superset/pull/37624) updated documentation on how to run and configure Superset with Docker. Specifically for the WebSocket configuration, a new `docker/superset-websocket/config.example.json` was added to the repo, so that users could copy it to create a `docker/superset-websocket/config.json` file. The existing `docker/superset-websocket/config.json` was removed and git-ignored, so if you're using GAQ / WebSocket make sure to:
- Stash/backup your existing `config.json` file, to re-apply it after (will get git-ignored going forward)
- Update the `volumes` configuration for the `superset-websocket` service in your `docker-compose.override.yml` file, to include the `docker/superset-websocket/config.json` file. For example:
``` yaml
services:
superset-websocket:
volumes:
- ./superset-websocket:/home/superset-websocket
- /home/superset-websocket/node_modules
- /home/superset-websocket/dist
- ./docker/superset-websocket/config.json:/home/superset-websocket/config.json:ro
```
### Example Data Loading Improvements
#### New Directory Structure
Examples are now organized by name with data and configs co-located:
```
superset/examples/
├── _shared/ # Shared database & metadata configs
├── birth_names/ # Each example is self-contained
│ ├── data.parquet # Dataset (Parquet format)
│ ├── dataset.yaml # Dataset metadata
│ ├── dashboard.yaml # Dashboard config (optional)
│ └── charts/ # Chart configs (optional)
└── ...
```
#### Simplified Parquet-based Loading
- Auto-discovery: create `superset/examples/my_dataset/data.parquet` to add a new example
- Parquet is an Apache project format: compressed (~27% smaller), self-describing schema
- YAML configs define datasets, charts, and dashboards declaratively
- Removed Python-based data generation from individual example files
#### Test Data Reorganization
- Moved `big_data.py` to `superset/cli/test_loaders.py` - better reflects its purpose as a test utility
- Fixed inverted logic for `--load-test-data` flag (now correctly includes .test.yaml files when flag is set)
- Clarified CLI flags:
- `--force` / `-f`: Force reload even if tables exist
- `--only-metadata` / `-m`: Create table metadata without loading data
- `--load-test-data` / `-t`: Include test dashboards and .test.yaml configs
- `--load-big-data` / `-b`: Generate synthetic stress-test data
#### Bug Fixes
- Fixed numpy array serialization for PostgreSQL (converts complex types to JSON strings)
- Fixed KeyError for `allow_csv_upload` field in database configs (now optional with default)
- Fixed test data loading logic that was incorrectly filtering files
### MCP Service
The MCP (Model Context Protocol) service enables AI assistants and automation tools to interact programmatically with Superset.
@@ -124,6 +253,7 @@ See `superset/mcp_service/PRODUCTION.md` for deployment guides.
---
- [35621](https://github.com/apache/superset/pull/35621): The default hash algorithm has changed from MD5 to SHA-256 for improved security and FedRAMP compliance. This affects cache keys for thumbnails, dashboard digests, chart digests, and filter option names. Existing cached data will be invalidated upon upgrade. To opt out of this change and maintain backward compatibility, set `HASH_ALGORITHM = "md5"` in your `superset_config.py`.
- [33055](https://github.com/apache/superset/pull/33055): Upgrades Flask-AppBuilder to 5.0.0. The AUTH_OID authentication type has been deprecated and is no longer available as an option in Flask-AppBuilder. OpenID (OID) is considered a deprecated authentication protocol - if you are using AUTH_OID, you will need to migrate to an alternative authentication method such as OAuth, LDAP, or database authentication before upgrading.
- [35062](https://github.com/apache/superset/pull/35062): Changed the function signature of `setupExtensions` to `setupCodeOverrides` with options as arguments.
- [34871](https://github.com/apache/superset/pull/34871): Fixed Jest test hanging issue from Ant Design v5 upgrade. MessageChannel is now mocked in test environment to prevent rc-overflow from causing Jest to hang. Test environment only - no production impact.
@@ -142,10 +272,63 @@ Note: Pillow is now a required dependency (previously optional) to support image
- [33116](https://github.com/apache/superset/pull/33116) In Echarts Series charts (e.g. Line, Area, Bar, etc.) charts, the `x_axis_sort_series` and `x_axis_sort_series_ascending` form data items have been renamed with `x_axis_sort` and `x_axis_sort_asc`.
There's a migration added that can potentially affect a significant number of existing charts.
- [32317](https://github.com/apache/superset/pull/32317) The horizontal filter bar feature is now out of testing/beta development and its feature flag `HORIZONTAL_FILTER_BAR` has been removed.
- [31590](https://github.com/apache/superset/pull/31590) Marks the beginning of intricate work around supporting dynamic Theming, and breaks support for [THEME_OVERRIDES](https://github.com/apache/superset/blob/732de4ac7fae88e29b7f123b6cbb2d7cd411b0e4/superset/config.py#L671) in favor of a new theming system based on AntD V5. Likely this will be in disrepair until settling over the 5.x lifecycle.
- [31590](https://github.com/apache/superset/pull/31590) Marks the begining of intricate work around supporting dynamic Theming, and breaks support for [THEME_OVERRIDES](https://github.com/apache/superset/blob/732de4ac7fae88e29b7f123b6cbb2d7cd411b0e4/superset/config.py#L671) in favor of a new theming system based on AntD V5. Likely this will be in disrepair until settling over the 5.x lifecycle.
- [32432](https://github.com/apache/superset/pull/31260) Moves the List Roles FAB view to the frontend and requires `FAB_ADD_SECURITY_API` to be enabled in the configuration and `superset init` to be executed.
- [34319](https://github.com/apache/superset/pull/34319) Drill to Detail and Drill By is now supported in Embedded mode, and also with the `DASHBOARD_RBAC` FF. If you don't want to expose these features in Embedded / `DASHBOARD_RBAC`, make sure the roles used for Embedded / `DASHBOARD_RBAC`don't have the required permissions to perform D2D actions.
### Breaking Changes
#### APP_NAME no longer controls frontend branding
The `APP_NAME` configuration variable no longer controls the browser window/tab title or other frontend branding. Application names should now be configured using the theme system with the `brandAppName` token. The `APP_NAME` config is still used for backend contexts (MCP service, logs, etc.) and serves as a fallback if `brandAppName` is not set.
**Before (5.x):**
```python
APP_NAME = "My Custom App"
```
**After (6.0):**
```python
# Option 1: Use theme system (recommended)
THEME_DEFAULT = {
"token": {
"brandAppName": "My Custom App", # Window titles
"brandLogoAlt": "My Custom App", # Logo alt text
"brandLogoUrl": "/static/assets/images/custom_logo.png"
}
}
# Option 2: Temporary fallback
# Keep APP_NAME for now (will be used as fallback for brandAppName)
APP_NAME = "My Custom App"
# But you should migrate to THEME_DEFAULT.token.brandAppName
```
**Note:** For dark mode, set the same tokens in `THEME_DARK` configuration.
#### CUSTOM_FONT_URLS removed
The `CUSTOM_FONT_URLS` configuration option has been removed. Use the new per-theme `fontUrls` token in `THEME_DEFAULT` or database-managed themes instead.
**Before (5.x):**
```python
CUSTOM_FONT_URLS = [
"https://fonts.example.com/myfont.css",
]
```
**After (6.0):**
```python
THEME_DEFAULT = {
"token": {
"fontUrls": [
"https://fonts.example.com/myfont.css",
],
# ... other tokens
}
}
```
## 5.0.0
- [31976](https://github.com/apache/superset/pull/31976) Removed the `DISABLE_LEGACY_DATASOURCE_EDITOR` feature flag. The previous value of the feature flag was `True` and now the feature is permanently removed.

View File

@@ -28,7 +28,6 @@ x-superset-image: &superset-image apachesuperset.docker.scarf.sh/apache/superset
x-superset-volumes:
&superset-volumes # /app/pythonpath_docker will be appended to the PYTHONPATH in the final container
- ./docker:/app/docker
- ./superset-core:/app/superset-core
- superset_home:/app/superset_home
services:

View File

@@ -67,18 +67,16 @@ x-superset-volumes: &superset-volumes
- ./superset-frontend:/app/superset-frontend
- superset_home_light:/app/superset_home
- ./tests:/app/tests
- ./extensions:/app/extensions
x-common-build: &common-build
context: .
target: ${SUPERSET_BUILD_TARGET:-dev} # can use `dev` (default) or `lean`
cache_from:
- apache/superset-cache:3.10-slim-trixie
- apache/superset-cache:3.10-slim-bookworm
args:
DEV_MODE: "true"
INCLUDE_CHROMIUM: ${INCLUDE_CHROMIUM:-false}
INCLUDE_FIREFOX: ${INCLUDE_FIREFOX:-false}
BUILD_TRANSLATIONS: ${BUILD_TRANSLATIONS:-false}
LOAD_EXAMPLES_DUCKDB: ${LOAD_EXAMPLES_DUCKDB:-true}
services:
db-light:
@@ -93,7 +91,9 @@ services:
- db_home_light:/var/lib/postgresql/data
- ./docker/docker-entrypoint-initdb.d:/docker-entrypoint-initdb.d
environment:
# Override database name to avoid conflicts
POSTGRES_DB: superset_light
# Increase max connections for test runs
command: postgres -c max_connections=200
superset-light:
@@ -106,6 +106,7 @@ services:
<<: *common-build
command: ["/app/docker/docker-bootstrap.sh", "app"]
restart: unless-stopped
# No host port mapping - accessed via webpack dev server proxy
extra_hosts:
- "host.docker.internal:host-gateway"
user: *superset-user
@@ -114,10 +115,15 @@ services:
condition: service_completed_successfully
volumes: *superset-volumes
environment:
# Override DB connection for light service
DATABASE_HOST: db-light
DATABASE_DB: superset_light
POSTGRES_DB: superset_light
SUPERSET__SQLALCHEMY_EXAMPLES_URI: "duckdb:////app/data/examples.duckdb"
EXAMPLES_HOST: db-light
EXAMPLES_DB: superset_light
EXAMPLES_USER: superset
EXAMPLES_PASSWORD: superset
# Use light-specific config that disables Redis
SUPERSET_CONFIG_PATH: /app/docker/pythonpath_dev/superset_config_docker_light.py
GITHUB_HEAD_REF: ${GITHUB_HEAD_REF:-}
GITHUB_SHA: ${GITHUB_SHA:-}
@@ -131,16 +137,21 @@ services:
required: true
- path: docker/.env-local # optional override
required: false
user: *superset-user
depends_on:
db-light:
condition: service_started
user: *superset-user
volumes: *superset-volumes
environment:
# Override DB connection for light service
DATABASE_HOST: db-light
DATABASE_DB: superset_light
POSTGRES_DB: superset_light
SUPERSET__SQLALCHEMY_EXAMPLES_URI: "duckdb:////app/data/examples.duckdb"
EXAMPLES_HOST: db-light
EXAMPLES_DB: superset_light
EXAMPLES_USER: superset
EXAMPLES_PASSWORD: superset
# Use light-specific config that disables Redis
SUPERSET_CONFIG_PATH: /app/docker/pythonpath_dev/superset_config_docker_light.py
healthcheck:
disable: true
@@ -163,11 +174,8 @@ services:
SCARF_ANALYTICS: "${SCARF_ANALYTICS:-}"
# configuring the dev-server to use the host.docker.internal to connect to the backend
superset: "http://superset-light:8088"
# Webpack dev server configuration
WEBPACK_DEVSERVER_HOST: "${WEBPACK_DEVSERVER_HOST:-127.0.0.1}"
WEBPACK_DEVSERVER_PORT: "${WEBPACK_DEVSERVER_PORT:-9000}"
ports:
- "${NODE_PORT:-9001}:9000" # Parameterized port, accessible on all interfaces
- "127.0.0.1:${NODE_PORT:-9001}:9000" # Parameterized port
command: ["/app/docker/docker-frontend.sh"]
env_file:
- path: docker/.env # default
@@ -193,12 +201,15 @@ services:
user: *superset-user
volumes: *superset-volumes
environment:
# Test-specific database configuration
DATABASE_HOST: db-light
DATABASE_DB: test
POSTGRES_DB: test
# Point to test database
SUPERSET__SQLALCHEMY_DATABASE_URI: postgresql+psycopg2://superset:superset@db-light:5432/test
SUPERSET__SQLALCHEMY_EXAMPLES_URI: "duckdb:////app/data/examples.duckdb"
# Use the light test config that doesn't require Redis
SUPERSET_CONFIG: superset_test_config_light
# Python path includes test directory
PYTHONPATH: /app/pythonpath:/app/docker/pythonpath_dev:/app
volumes:

View File

@@ -33,7 +33,7 @@ x-common-build: &common-build
context: .
target: dev
cache_from:
- apache/superset-cache:3.10-slim-trixie
- apache/superset-cache:3.10-slim-bookworm
services:
redis:

View File

@@ -29,22 +29,19 @@ x-superset-volumes: &superset-volumes
# /app/pythonpath_docker will be appended to the PYTHONPATH in the final container
- ./docker:/app/docker
- ./superset:/app/superset
- ./superset-core:/app/superset-core
- ./superset-frontend:/app/superset-frontend
- superset_home:/app/superset_home
- ./tests:/app/tests
- superset_data:/app/data
x-common-build: &common-build
context: .
target: ${SUPERSET_BUILD_TARGET:-dev} # can use `dev` (default) or `lean`
cache_from:
- apache/superset-cache:3.10-slim-trixie
- apache/superset-cache:3.10-slim-bookworm
args:
DEV_MODE: "true"
INCLUDE_CHROMIUM: ${INCLUDE_CHROMIUM:-false}
INCLUDE_FIREFOX: ${INCLUDE_FIREFOX:-false}
BUILD_TRANSLATIONS: ${BUILD_TRANSLATIONS:-false}
LOAD_EXAMPLES_DUCKDB: ${LOAD_EXAMPLES_DUCKDB:-true}
services:
nginx:
@@ -110,8 +107,6 @@ services:
superset-init:
condition: service_completed_successfully
volumes: *superset-volumes
environment:
SUPERSET__SQLALCHEMY_EXAMPLES_URI: "duckdb:////app/data/examples.duckdb"
superset-websocket:
container_name: superset_websocket
@@ -163,8 +158,6 @@ services:
condition: service_started
user: *superset-user
volumes: *superset-volumes
environment:
SUPERSET__SQLALCHEMY_EXAMPLES_URI: "duckdb:////app/data/examples.duckdb"
healthcheck:
disable: true
@@ -276,5 +269,3 @@ volumes:
external: false
redis:
external: false
superset_data:
external: false

View File

@@ -18,7 +18,7 @@
set -euo pipefail
# Ensure this script is run as root
if [[ ${EUID} -ne 0 ]]; then
if [[ $EUID -ne 0 ]]; then
echo "This script must be run as root" >&2
exit 1
fi
@@ -42,7 +42,7 @@ echo -e "${GREEN}Installing packages: $@${RESET}"
apt-get install -yqq --no-install-recommends "$@"
echo -e "${GREEN}Autoremoving unnecessary packages...${RESET}"
apt-get autoremove -yqq --purge
apt-get autoremove -y
echo -e "${GREEN}Cleaning up package cache and metadata...${RESET}"
apt-get clean

View File

@@ -21,15 +21,8 @@ set -eo pipefail
# Make python interactive
if [ "$DEV_MODE" == "true" ]; then
if [ "$(whoami)" = "root" ] && command -v uv > /dev/null 2>&1; then
# Always ensure superset-core is available
echo "Installing superset-core in editable mode"
uv pip install --no-deps -e /app/superset-core
# Only reinstall the main app for non-worker processes
if [ "$1" != "worker" ] && [ "$1" != "beat" ]; then
echo "Reinstalling the app in editable mode"
uv pip install -e .
fi
echo "Reinstalling the app in editable mode"
uv pip install -e .
fi
fi
REQUIREMENTS_LOCAL="/app/docker/requirements-local.txt"
@@ -41,8 +34,7 @@ if [ "$CYPRESS_CONFIG" == "true" ]; then
export SUPERSET__SQLALCHEMY_DATABASE_URI=postgresql+psycopg2://superset:superset@db:5432/superset_cypress
PORT=8081
fi
# Skip postgres requirements installation for workers to avoid conflicts
if [[ "$DATABASE_DIALECT" == postgres* ]] && [ "$(whoami)" = "root" ] && [ "$1" != "worker" ] && [ "$1" != "beat" ]; then
if [[ "$DATABASE_DIALECT" == postgres* ]] && [ "$(whoami)" = "root" ]; then
# older images may not have the postgres dev requirements installed
echo "Installing postgres requirements"
if command -v uv > /dev/null 2>&1; then
@@ -80,7 +72,7 @@ case "${1}" in
;;
app)
echo "Starting web app (using development server)..."
flask run -p $PORT --reload --debugger --without-threads --host=0.0.0.0 --exclude-patterns "*/node_modules/*:*/.venv/*:*/build/*:*/__pycache__/*"
flask run -p $PORT --with-threads --reload --debugger --host=0.0.0.0
;;
app-gunicorn)
echo "Starting web app..."

View File

@@ -69,8 +69,6 @@ echo_step "3" "Complete" "Setting up roles and perms"
if [ "$SUPERSET_LOAD_EXAMPLES" = "yes" ]; then
# Load some data to play with
echo_step "4" "Starting" "Loading examples"
# If Cypress run which consumes superset_test_config load required data for tests
if [ "$CYPRESS_CONFIG" == "true" ]; then
superset load_examples --load-test-data

View File

@@ -38,14 +38,14 @@ for arg in "$@"; do
done
# Install build-essential if required
if ${REQUIRES_BUILD_ESSENTIAL}; then
if $REQUIRES_BUILD_ESSENTIAL; then
echo "Installing build-essential for package builds..."
apt-get update -qq \
&& apt-get install -yqq --no-install-recommends build-essential
fi
# Choose whether to use pip cache
if ${USE_CACHE}; then
if $USE_CACHE; then
echo "Using pip cache..."
uv pip install "${ARGS[@]}"
else
@@ -54,7 +54,7 @@ else
fi
# Remove build-essential if it was installed
if ${REQUIRES_BUILD_ESSENTIAL}; then
if $REQUIRES_BUILD_ESSENTIAL; then
echo "Removing build-essential to keep the image lean..."
apt-get autoremove -yqq --purge build-essential \
&& apt-get clean \

View File

@@ -49,18 +49,12 @@ SQLALCHEMY_DATABASE_URI = (
f"{DATABASE_HOST}:{DATABASE_PORT}/{DATABASE_DB}"
)
# Use environment variable if set, otherwise construct from components
# This MUST take precedence over any other configuration
SQLALCHEMY_EXAMPLES_URI = os.getenv(
"SUPERSET__SQLALCHEMY_EXAMPLES_URI",
(
f"{DATABASE_DIALECT}://"
f"{EXAMPLES_USER}:{EXAMPLES_PASSWORD}@"
f"{EXAMPLES_HOST}:{EXAMPLES_PORT}/{EXAMPLES_DB}"
),
SQLALCHEMY_EXAMPLES_URI = (
f"{DATABASE_DIALECT}://"
f"{EXAMPLES_USER}:{EXAMPLES_PASSWORD}@"
f"{EXAMPLES_HOST}:{EXAMPLES_PORT}/{EXAMPLES_DB}"
)
REDIS_HOST = os.getenv("REDIS_HOST", "redis")
REDIS_PORT = os.getenv("REDIS_PORT", "6379")
REDIS_CELERY_DB = os.getenv("REDIS_CELERY_DB", "0")
@@ -105,15 +99,7 @@ class CeleryConfig:
CELERY_CONFIG = CeleryConfig
# Extensions configuration
# For local development, point to the extensions directory
# Note: If running in Docker, this path needs to be accessible from inside the container
EXTENSIONS_PATH = os.getenv("EXTENSIONS_PATH", "/app/extensions")
FEATURE_FLAGS = {
"ALERT_REPORTS": True,
"ENABLE_EXTENSIONS": True,
}
FEATURE_FLAGS = {"ALERT_REPORTS": True, "DATASET_FOLDERS": True}
ALERT_REPORTS_NOTIFICATION_DRY_RUN = True
WEBDRIVER_BASEURL = f"http://superset_app{os.environ.get('SUPERSET_APP_ROOT', '/')}/" # When using docker compose baseurl should be http://superset_nginx{ENV{BASEPATH}}/ # noqa: E501
# The base URL for the email report hyperlinks.
@@ -146,7 +132,7 @@ try:
from superset_config_docker import * # noqa: F403
logger.info(
"Loaded your Docker configuration at [%s]", superset_config_docker.__file__
f"Loaded your Docker configuration at [{superset_config_docker.__file__}]"
)
except ImportError:
logger.info("Using default Docker config...")

View File

@@ -1,642 +0,0 @@
<!--
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.
-->
# LLM Context Guide for Apache Superset Documentation
This guide helps LLMs work with the Apache Superset documentation site built with Docusaurus 3.
## 📍 Current Directory Context
You are currently in the `/docs` subdirectory of the Apache Superset repository. When referencing files from the main codebase, use `../` to access the parent directory.
```
/Users/evan_1/GitHub/superset/ # Main repository root
├── superset/ # Python backend code
├── superset-frontend/ # React/TypeScript frontend
└── docs/ # Documentation site (YOU ARE HERE)
├── docs/ # Main documentation content
├── developer_portal/ # Developer guides (currently disabled)
├── components/ # Component playground (currently disabled)
└── docusaurus.config.ts # Site configuration
```
## 🚀 Quick Commands
```bash
# Development
yarn start # Start dev server on http://localhost:3000
yarn stop # Stop running dev server
yarn build # Build production site
yarn serve # Serve built site locally
# Version Management (USE THESE, NOT docusaurus commands)
yarn version:add:docs <version> # Add new docs version
yarn version:add:developer_portal <version> # Add developer portal version
yarn version:add:components <version> # Add components version
yarn version:remove:docs <version> # Remove docs version
yarn version:remove:developer_portal <version> # Remove developer portal version
yarn version:remove:components <version> # Remove components version
# Quality Checks
yarn typecheck # TypeScript validation
yarn eslint # Lint TypeScript/JavaScript files
```
## 📁 Documentation Structure
### Main Documentation (`/docs`)
The primary documentation lives in `/docs` with this structure:
```
docs/
├── intro.md # Auto-generated from ../README.md
├── quickstart.mdx # Getting started guide
├── api.mdx # API reference with Swagger UI
├── faq.mdx # Frequently asked questions
├── installation/ # Installation guides
│ ├── installation-methods.mdx
│ ├── docker-compose.mdx
│ ├── docker-builds.mdx
│ ├── kubernetes.mdx
│ ├── pypi.mdx
│ └── architecture.mdx
├── configuration/ # Configuration guides
│ ├── configuring-superset.mdx
│ ├── alerts-reports.mdx
│ ├── caching.mdx
│ ├── databases.mdx
│ └── [more config docs]
├── using-superset/ # User guides
│ ├── creating-your-first-dashboard.md
│ ├── exploring-data.mdx
│ └── [more user docs]
├── contributing/ # Contributor guides
│ ├── development.mdx
│ ├── testing-locally.mdx
│ └── [more contributor docs]
└── security/ # Security documentation
├── security.mdx
└── [security guides]
```
### Developer Portal (`/developer_portal`) - Currently Disabled
When enabled, contains developer-focused content:
- API documentation
- Architecture guides
- CLI tools
- Code examples
### Component Playground (`/components`) - Currently Disabled
When enabled, provides interactive component examples for UI development.
## 📝 Documentation Standards
### File Types
- **`.md` files**: Basic Markdown documents
- **`.mdx` files**: Markdown with JSX - can include React components
- **`.tsx` files in `/src`**: Custom React components and pages
### Frontmatter Structure
Every documentation page should have frontmatter:
```yaml
---
title: Page Title
description: Brief description for SEO
sidebar_position: 1 # Optional: controls order in sidebar
---
```
### MDX Component Usage
MDX files can import and use React components:
```mdx
import Tabs from '@theme/Tabs';
import TabItem from '@theme/TabItem';
<Tabs>
<TabItem value="npm" label="npm" default>
```bash
npm install superset
```
</TabItem>
<TabItem value="yarn" label="yarn">
```bash
yarn add superset
```
</TabItem>
</Tabs>
```
### Code Blocks
Use triple backticks with language identifiers:
````markdown
```python
def hello_world():
print("Hello, Superset!")
```
```sql title="Example Query"
SELECT * FROM users WHERE active = true;
```
```bash
# Installation command
pip install apache-superset
```
````
### Admonitions
Docusaurus supports various admonition types:
```markdown
:::note
This is a note
:::
:::tip
This is a tip
:::
:::warning
This is a warning
:::
:::danger
This is a danger warning
:::
:::info
This is an info box
:::
```
## 🔄 Version Management
### Version Configuration
Versions are managed through `versions-config.json`:
```json
{
"docs": {
"disabled": false,
"lastVersion": "6.0.0", // Default version shown
"includeCurrentVersion": true, // Show "Next" version
"onlyIncludeVersions": ["current", "6.0.0"],
"versions": {
"current": {
"label": "Next",
"path": "",
"banner": "unreleased" // Shows warning banner
},
"6.0.0": {
"label": "6.0.0",
"path": "6.0.0",
"banner": "none"
}
}
}
}
```
### Creating New Versions
**IMPORTANT**: Always use the custom scripts, NOT native Docusaurus commands:
```bash
# ✅ CORRECT - Updates both Docusaurus and versions-config.json
yarn version:add:docs 6.1.0
# ❌ WRONG - Only updates Docusaurus, breaks version dropdown
yarn docusaurus docs:version 6.1.0
```
### Version Files Created
When versioning, these files are created:
- `versioned_docs/version-X.X.X/` - Snapshot of current docs
- `versioned_sidebars/version-X.X.X-sidebars.json` - Sidebar config
- `versions.json` - List of all versions
## 🎨 Styling and Theming
### Custom CSS
Add custom styles in `/src/css/custom.css`:
```css
:root {
--ifm-color-primary: #20a7c9;
--ifm-code-font-size: 95%;
}
```
### Custom Components
Create React components in `/src/components/`:
```tsx
// src/components/FeatureCard.tsx
import React from 'react';
export default function FeatureCard({title, description}) {
return (
<div className="card">
<h3>{title}</h3>
<p>{description}</p>
</div>
);
}
```
Use in MDX:
```mdx
import FeatureCard from '@site/src/components/FeatureCard';
<FeatureCard
title="Fast"
description="Lightning fast queries"
/>
```
## 📦 Key Dependencies
- **Docusaurus 3.8.1**: Static site generator
- **React 18.3**: UI framework
- **Ant Design 5.26**: Component library
- **@superset-ui/core**: Superset UI components
- **Swagger UI React**: API documentation
- **Prism**: Syntax highlighting
## 🔗 Linking Strategies
### Internal Links
Use relative paths for internal documentation:
```markdown
[Installation Guide](./installation/docker-compose)
[Configuration](../configuration/configuring-superset)
```
### External Links
Always use full URLs:
```markdown
[Apache Superset GitHub](https://github.com/apache/superset)
```
### Linking to Code
Reference code in the main repository:
```markdown
See the [main configuration file](https://github.com/apache/superset/blob/master/superset/config.py)
```
## 🛠️ Common Documentation Tasks
### Adding a New Guide
1. Create the `.mdx` file in the appropriate directory
2. Add frontmatter with title and description
3. Update sidebar if needed (for manual sidebar configs)
### Adding API Documentation
The API docs use Swagger UI embedded in `/docs/api.mdx`:
```mdx
import SwaggerUI from "swagger-ui-react";
import "swagger-ui-react/swagger-ui.css";
<SwaggerUI url="/api/v1/openapi.json" />
```
### Adding Interactive Examples
Use MDX to create interactive documentation:
```mdx
import CodeBlock from '@theme/CodeBlock';
import MyComponentExample from '!!raw-loader!../examples/MyComponent.tsx';
<CodeBlock language="tsx">{MyComponentExample}</CodeBlock>
```
## 📋 Documentation Checklist
When creating or updating documentation:
- [ ] Clear, descriptive title in frontmatter
- [ ] Description for SEO in frontmatter
- [ ] Proper heading hierarchy (h1 -> h2 -> h3)
- [ ] Code examples with language identifiers
- [ ] Links verified (internal and external)
- [ ] Images have alt text
- [ ] Admonitions used for important notes
- [ ] Tested locally with `yarn start`
- [ ] No broken links (check with `yarn build`)
## 🔍 Searching and Navigation
### Sidebar Configuration
Sidebars are configured in `/sidebars.js`:
```javascript
module.exports = {
CustomSidebar: [
{
type: 'doc',
label: 'Introduction',
id: 'intro',
},
{
type: 'category',
label: 'Installation',
items: [
{
type: 'autogenerated',
dirName: 'installation',
},
],
},
],
};
```
### Search
Docusaurus includes Algolia DocSearch integration configured in `docusaurus.config.ts`.
## 🚫 Common Pitfalls to Avoid
1. **Never use `yarn docusaurus docs:version`** - Use `yarn version:add:docs` instead
2. **Don't edit versioned docs directly** - Edit current docs and create new version
3. **Avoid absolute paths in links** - Use relative paths for maintainability
4. **Don't forget frontmatter** - Every doc needs title and description
5. **Test builds locally** - Run `yarn build` before committing
## 🔧 Troubleshooting
### Dev Server Issues
```bash
yarn stop # Kill any running servers
yarn clear # Clear cache
yarn start # Restart
```
### Build Failures
```bash
# Check for broken links
yarn build
# TypeScript issues
yarn typecheck
# Linting issues
yarn eslint
```
### Version Issues
If versions don't appear in dropdown:
1. Check `versions-config.json` includes the version
2. Verify version files exist in `versioned_docs/`
3. Restart dev server
## 📚 Resources
- [Docusaurus Documentation](https://docusaurus.io/docs)
- [MDX Documentation](https://mdxjs.com/)
- [Superset Contributing Guide](../CONTRIBUTING.md)
- [Main Superset Documentation](https://superset.apache.org/docs/intro)
## 📖 Real Examples and Patterns
### Example: Configuration Documentation Pattern
From `docs/configuration/configuring-superset.mdx`:
```mdx
---
title: Configuring Superset
hide_title: true
sidebar_position: 1
version: 1
---
# Configuring Superset
## superset_config.py
Superset exposes hundreds of configurable parameters through its
[config.py module](https://github.com/apache/superset/blob/master/superset/config.py).
```bash
export SUPERSET_CONFIG_PATH=/app/superset_config.py
```
```
**Key patterns:**
- Links to source code for reference
- Code blocks with bash/python examples
- Environment variable documentation
- Step-by-step configuration instructions
### Example: Tutorial Documentation Pattern
From `docs/using-superset/creating-your-first-dashboard.mdx`:
```mdx
import useBaseUrl from "@docusaurus/useBaseUrl";
## Creating Your First Dashboard
:::tip
In addition to this site, [Preset.io](http://preset.io/) maintains an updated set of end-user
documentation at [docs.preset.io](https://docs.preset.io/).
:::
### Connecting to a new database
<img src={useBaseUrl("/img/tutorial/tutorial_01_add_database_connection.png")} width="600" />
```
**Key patterns:**
- Import Docusaurus hooks for dynamic URLs
- Use of admonitions (:::tip) for helpful information
- Screenshots with useBaseUrl for proper path resolution
- Clear section hierarchy with ### subheadings
- Step-by-step visual guides
### Example: API Documentation Pattern
From `docs/api.mdx`:
```mdx
import SwaggerUI from "swagger-ui-react";
import "swagger-ui-react/swagger-ui.css";
## API Documentation
<SwaggerUI url="/api/v1/openapi.json" />
```
**Key patterns:**
- Embedding interactive Swagger UI
- Importing necessary CSS
- Direct API spec integration
### Common Image Patterns
```mdx
// For images in static folder
import useBaseUrl from "@docusaurus/useBaseUrl";
<img src={useBaseUrl("/img/feature-screenshot.png")} width="600" />
// With caption
<figure>
<img src={useBaseUrl("/img/dashboard.png")} alt="Dashboard view" />
<figcaption>Superset Dashboard Interface</figcaption>
</figure>
```
### Multi-Tab Code Examples
```mdx
import Tabs from '@theme/Tabs';
import TabItem from '@theme/TabItem';
<Tabs
defaultValue="docker"
values={[
{label: 'Docker', value: 'docker'},
{label: 'Kubernetes', value: 'k8s'},
{label: 'PyPI', value: 'pypi'},
]}>
<TabItem value="docker">
```bash
docker-compose up
```
</TabItem>
<TabItem value="k8s">
```bash
kubectl apply -f superset.yaml
```
</TabItem>
<TabItem value="pypi">
```bash
pip install apache-superset
```
</TabItem>
</Tabs>
```
### Configuration File Examples
```mdx
```python title="superset_config.py"
# Database connection example
SQLALCHEMY_DATABASE_URI = 'postgresql://user:password@localhost/superset'
# Security configuration
SECRET_KEY = 'YOUR_SECRET_KEY_HERE'
WTF_CSRF_ENABLED = True
# Feature flags
FEATURE_FLAGS = {
'ENABLE_TEMPLATE_PROCESSING': True,
'DASHBOARD_NATIVE_FILTERS': True,
}
```
```
### Cross-Referencing Pattern
```mdx
For detailed configuration options, see:
- [Configuring Superset](./configuration/configuring-superset)
- [Database Connections](./configuration/databases)
- [Security Settings](./security/security)
External resources:
- [SQLAlchemy Documentation](https://docs.sqlalchemy.org/)
- [Flask Configuration](https://flask.palletsprojects.com/config/)
```
### Writing Installation Guides
```mdx
## Prerequisites
:::warning
Ensure you have Python 3.9+ and Node.js 16+ installed before proceeding.
:::
## Installation Steps
1. **Clone the repository**
```bash
git clone https://github.com/apache/superset.git
cd superset
```
2. **Install Python dependencies**
```bash
pip install -e .
```
3. **Initialize the database**
```bash
superset db upgrade
superset init
```
:::tip Success Check
Navigate to http://localhost:8088 and login with admin/admin
:::
```
### Documenting API Endpoints
```mdx
## Chart API
### GET /api/v1/chart/
Returns a list of charts.
**Parameters:**
- `page` (optional): Page number
- `page_size` (optional): Number of items per page
**Example Request:**
```bash
curl -X GET "http://localhost:8088/api/v1/chart/" \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN"
```
**Example Response:**
```json
{
"count": 42,
"result": [
{
"id": 1,
"slice_name": "Sales Dashboard",
"viz_type": "line"
}
]
}
```
```
---
**Note**: This documentation site serves as the primary resource for Superset users, administrators, and contributors. Always prioritize clarity, accuracy, and completeness when creating or updating documentation.

View File

@@ -21,183 +21,3 @@ This is the public documentation site for Superset, built using
[Docusaurus 3](https://docusaurus.io/). See
[CONTRIBUTING.md](../CONTRIBUTING.md#documentation) for documentation on
contributing to documentation.
## Version Management
The Superset documentation site uses Docusaurus versioning with three independent versioned sections:
- **Main Documentation** (`/docs/`) - Core Superset documentation
- **Developer Portal** (`/developer_portal/`) - Developer guides and tutorials
- **Component Playground** (`/components/`) - Interactive component examples (currently disabled)
Each section maintains its own version history and can be versioned independently.
### Creating a New Version
To create a new version for any section, use the Docusaurus version command with the appropriate plugin ID or use our automated scripts:
#### Using Automated Scripts (Required)
**⚠️ Important:** Always use these custom commands instead of the native Docusaurus commands. These scripts ensure that both the Docusaurus versioning system AND the `versions-config.json` file are updated correctly.
```bash
# Main Documentation
yarn version:add:docs 1.2.0
# Developer Portal
yarn version:add:developer_portal 1.2.0
# Component Playground (when enabled)
yarn version:add:components 1.2.0
```
**Do NOT use** the native Docusaurus commands directly (`yarn docusaurus docs:version`), as they will:
- ❌ Create version files but NOT update `versions-config.json`
- ❌ Cause versions to not appear in dropdown menus
- ❌ Require manual fixes to synchronize the configuration
### Managing Versions
#### With Automated Scripts
The automated scripts handle all configuration updates automatically. No manual editing required!
#### Manual Configuration
If creating versions manually, you'll need to:
1. **Update `versions-config.json`** (or `docusaurus.config.ts` if not using dynamic config):
- Add version to `onlyIncludeVersions` array
- Add version metadata to `versions` object
- Update `lastVersion` if needed
2. **Files Created by Versioning**:
When a new version is created, Docusaurus generates:
- **Versioned docs folder**: `[section]_versioned_docs/version-X.X.X/`
- **Versioned sidebars**: `[section]_versioned_sidebars/version-X.X.X-sidebars.json`
- **Versions list**: `[section]_versions.json`
Note: For main docs, the prefix is omitted (e.g., `versioned_docs/` instead of `docs_versioned_docs/`)
3. **Important**: After adding a version, restart the development server to see changes:
```bash
yarn stop
yarn start
```
### Removing a Version
#### Using Automated Scripts (Recommended)
```bash
# Main Documentation
yarn version:remove:docs 1.0.0
# Developer Portal
yarn version:remove:developer_portal 1.0.0
# Component Playground
yarn version:remove:components 1.0.0
```
#### Manual Removal
To manually remove a version:
1. **Delete the version folder** from the appropriate location:
- Main docs: `versioned_docs/version-X.X.X/` (no prefix for main)
- Developer Portal: `developer_portal_versioned_docs/version-X.X.X/`
- Components: `components_versioned_docs/version-X.X.X/`
2. **Delete the version metadata file**:
- Main docs: `versioned_sidebars/version-X.X.X-sidebars.json` (no prefix)
- Developer Portal: `developer_portal_versioned_sidebars/version-X.X.X-sidebars.json`
- Components: `components_versioned_sidebars/version-X.X.X-sidebars.json`
3. **Update the versions list file**:
- Main docs: `versions.json`
- Developer Portal: `developer_portal_versions.json`
- Components: `components_versions.json`
4. **Update configuration**:
- If using dynamic config: Update `versions-config.json`
- If using static config: Update `docusaurus.config.ts`
5. **Restart the server** to see changes
### Version Configuration Examples
#### Main Documentation (default plugin)
```typescript
docs: {
includeCurrentVersion: true,
lastVersion: 'current', // Makes /docs/ show Next version
onlyIncludeVersions: ['current', '1.1.0', '1.0.0'],
versions: {
current: {
label: 'Next',
path: '', // Empty path for default routing
banner: 'unreleased',
},
'1.1.0': {
label: '1.1.0',
path: '1.1.0',
banner: 'none',
},
},
}
```
#### Developer Portal & Components (custom plugins)
```typescript
{
id: 'developer_portal',
path: 'developer_portal',
routeBasePath: 'developer_portal',
includeCurrentVersion: true,
lastVersion: '1.1.0', // Default version
onlyIncludeVersions: ['current', '1.1.0', '1.0.0'],
versions: {
current: {
label: 'Next',
path: 'next',
banner: 'unreleased',
},
'1.1.0': {
label: '1.1.0',
path: '1.1.0',
banner: 'none',
},
},
}
```
### Best Practices
1. **Version naming**: Use semantic versioning (e.g., 1.0.0, 1.1.0, 2.0.0)
2. **Version banners**: Use `'unreleased'` for development versions, `'none'` for stable releases
3. **Limit displayed versions**: Use `onlyIncludeVersions` to show only relevant versions
4. **Test locally**: Always test version changes locally before deploying
5. **Independent versioning**: Each section can have different version numbers and release cycles
### Troubleshooting
#### Version Not Showing After Creation
If you accidentally used `yarn docusaurus docs:version` instead of `yarn version:add`:
1. **Problem**: The version files were created but `versions-config.json` wasn't updated
2. **Solution**: Either:
- Revert the changes: `git restore versions.json && rm -rf versioned_docs/ versioned_sidebars/`
- Then use the correct command: `yarn version:add:docs <version>`
For other issues:
- **Restart the server**: Changes to version configuration require a server restart
- **Check config file**: Ensure `versions-config.json` includes the new version
- **Verify files exist**: Check that versioned docs folder was created
#### Broken Links in Versioned Documentation
When creating a new version, links in the documentation are preserved as-is. Common issues:
- **Cross-section links**: Links between sections (e.g., from developer_portal to docs) need to be version-aware
- **Absolute vs relative paths**: Use relative paths within the same section
- **Version-specific URLs**: Update hardcoded URLs to use version variables
To fix broken links:
1. Use `type: 'doc'` with `docId` for version-aware navigation in navbar
2. Use relative paths within the same documentation section
3. Test all versions after creation to identify broken links

View File

@@ -1,105 +0,0 @@
<!--
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.
-->
---
title: Bar Chart
sidebar_position: 1
---
# Bar Chart Component
The Bar Chart component is used to visualize categorical data with rectangular bars.
## Props
| Prop | Type | Default | Description |
|------|------|---------|-------------|
| `data` | `array` | `[]` | Array of data objects to visualize |
| `width` | `number` | `800` | Width of the chart in pixels |
| `height` | `number` | `600` | Height of the chart in pixels |
| `xField` | `string` | - | Field name for x-axis values |
| `yField` | `string` | - | Field name for y-axis values |
| `colorField` | `string` | - | Field name for color encoding |
| `colorScheme` | `string` | `'supersetColors'` | Color scheme to use |
| `showLegend` | `boolean` | `true` | Whether to show the legend |
| `showGrid` | `boolean` | `true` | Whether to show grid lines |
| `labelPosition` | `string` | `'top'` | Position of bar labels: 'top', 'middle', 'bottom' |
## Examples
### Basic Bar Chart
```jsx
import { BarChart } from '@superset-ui/chart-components';
const data = [
{ category: 'A', value: 10 },
{ category: 'B', value: 20 },
{ category: 'C', value: 15 },
{ category: 'D', value: 25 },
];
function Example() {
return (
<BarChart
data={data}
width={800}
height={400}
xField="category"
yField="value"
colorScheme="supersetColors"
/>
);
}
```
### Grouped Bar Chart
```jsx
import { BarChart } from '@superset-ui/chart-components';
const data = [
{ category: 'A', group: 'Group 1', value: 10 },
{ category: 'A', group: 'Group 2', value: 15 },
{ category: 'B', group: 'Group 1', value: 20 },
{ category: 'B', group: 'Group 2', value: 25 },
{ category: 'C', group: 'Group 1', value: 15 },
{ category: 'C', group: 'Group 2', value: 10 },
];
function Example() {
return (
<BarChart
data={data}
width={800}
height={400}
xField="category"
yField="value"
colorField="group"
colorScheme="supersetColors"
/>
);
}
```
## Best Practices
- Use bar charts when comparing quantities across categories
- Sort bars by value for better readability, unless there's a natural order to the categories
- Use consistent colors for the same categories across different charts
- Consider using horizontal bar charts when category labels are long

View File

@@ -1,59 +0,0 @@
<!--
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.
-->
---
title: Component Library
sidebar_position: 1
---
# Superset Component Library
Welcome to the Apache Superset Component Library documentation. This section provides comprehensive documentation for all the UI components, chart components, and layout components used in Superset.
## What is the Component Library?
The Component Library is a collection of reusable UI components that are used to build the Superset user interface. These components are designed to be consistent, accessible, and easy to use.
## Component Categories
The Component Library is organized into the following categories:
### UI Components
Basic UI components like buttons, inputs, dropdowns, and other form elements.
### Chart Components
Visualization components used to render different types of charts and graphs.
### Layout Components
Components used for page layout, such as containers, grids, and navigation elements.
## Versioning
The Component Library documentation follows its own versioning scheme, independent from the main Superset documentation. This allows us to update the component documentation as the components evolve, without affecting the main documentation.
## Getting Started
Browse the sidebar to explore the different components available in the library. Each component documentation includes:
- Component description and purpose
- Props and configuration options
- Usage examples
- Best practices

View File

@@ -1,113 +0,0 @@
<!--
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.
-->
---
title: Grid
sidebar_position: 1
---
# Grid Component
The Grid component provides a flexible layout system for arranging content in rows and columns.
## Props
| Prop | Type | Default | Description |
|------|------|---------|-------------|
| `gutter` | `number` or `[number, number]` | `0` | Grid spacing between items, can be a single number or [horizontal, vertical] |
| `columns` | `number` | `12` | Number of columns in the grid |
| `justify` | `string` | `'start'` | Horizontal alignment: 'start', 'center', 'end', 'space-between', 'space-around' |
| `align` | `string` | `'top'` | Vertical alignment: 'top', 'middle', 'bottom' |
| `wrap` | `boolean` | `true` | Whether to wrap items when they overflow |
### Row Props
| Prop | Type | Default | Description |
|------|------|---------|-------------|
| `gutter` | `number` or `[number, number]` | `0` | Spacing between items in the row |
| `justify` | `string` | `'start'` | Horizontal alignment for this row |
| `align` | `string` | `'top'` | Vertical alignment for this row |
### Col Props
| Prop | Type | Default | Description |
|------|------|---------|-------------|
| `span` | `number` | - | Number of columns the grid item spans |
| `offset` | `number` | `0` | Number of columns the grid item is offset |
| `xs`, `sm`, `md`, `lg`, `xl` | `number` or `object` | - | Responsive props for different screen sizes |
## Examples
### Basic Grid
```jsx
import { Grid, Row, Col } from '@superset-ui/core';
function Example() {
return (
<Grid>
<Row gutter={16}>
<Col span={8}>
<div>Column 1</div>
</Col>
<Col span={8}>
<div>Column 2</div>
</Col>
<Col span={8}>
<div>Column 3</div>
</Col>
</Row>
</Grid>
);
}
```
### Responsive Grid
```jsx
import { Grid, Row, Col } from '@superset-ui/core';
function Example() {
return (
<Grid>
<Row gutter={[16, 24]}>
<Col xs={24} sm={12} md={8} lg={6}>
<div>Responsive Column 1</div>
</Col>
<Col xs={24} sm={12} md={8} lg={6}>
<div>Responsive Column 2</div>
</Col>
<Col xs={24} sm={12} md={8} lg={6}>
<div>Responsive Column 3</div>
</Col>
<Col xs={24} sm={12} md={8} lg={6}>
<div>Responsive Column 4</div>
</Col>
</Row>
</Grid>
);
}
```
## Best Practices
- Use the Grid system for complex layouts that need to be responsive
- Specify column widths for different screen sizes to ensure proper responsive behavior
- Use gutters to create appropriate spacing between grid items
- Keep the grid structure consistent throughout your application
- Consider using the grid system for dashboard layouts to ensure consistent spacing and alignment

View File

@@ -1,35 +0,0 @@
<!--
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.
-->
---
title: Test
---
import { StoryExample } from '../src/components/StorybookWrapper';
# Test
This is a test using our custom StorybookWrapper component.
<StoryExample
component={() => (
<div style={{ padding: '10px', background: '#f0f0f0', borderRadius: '4px' }}>
This is a simple example component
</div>
)}
/>

View File

@@ -1,146 +0,0 @@
<!--
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.
-->
---
title: Button Component
sidebar_position: 1
---
import { StoryExample, StoryWithControls } from '../../src/components/StorybookWrapper';
import { Button } from '../../../superset-frontend/packages/superset-ui-core/src/components/Button';
# Button Component
The Button component is a fundamental UI element used throughout Superset for user interactions.
## Basic Usage
The default button with primary styling:
<StoryExample
component={() => (
<Button buttonStyle="primary" onClick={() => console.log('Clicked!')}>
Click Me
</Button>
)}
/>
## Interactive Example
<StoryWithControls
component={({ buttonStyle, buttonSize, label, disabled }) => (
<Button
buttonStyle={buttonStyle}
buttonSize={buttonSize}
disabled={disabled}
onClick={() => console.log('Clicked!')}
>
{label}
</Button>
)}
props={{
buttonStyle: 'primary',
buttonSize: 'default',
label: 'Click Me',
disabled: false
}}
controls={[
{
name: 'buttonStyle',
label: 'Button Style',
type: 'select',
options: ['primary', 'secondary', 'tertiary', 'success', 'warning', 'danger', 'default', 'link', 'dashed']
},
{
name: 'buttonSize',
label: 'Button Size',
type: 'select',
options: ['default', 'small', 'xsmall']
},
{
name: 'label',
label: 'Button Text',
type: 'text'
},
{
name: 'disabled',
label: 'Disabled',
type: 'boolean'
}
]}
/>
## Props
| Prop | Type | Default | Description |
|------|------|---------|-------------|
| `buttonStyle` | `'primary' \| 'secondary' \| 'tertiary' \| 'success' \| 'warning' \| 'danger' \| 'default' \| 'link' \| 'dashed'` | `'default'` | Button style |
| `buttonSize` | `'default' \| 'small' \| 'xsmall'` | `'default'` | Button size |
| `disabled` | `boolean` | `false` | Whether the button is disabled |
| `cta` | `boolean` | `false` | Whether the button is a call-to-action button |
| `tooltip` | `ReactNode` | - | Tooltip content |
| `placement` | `TooltipProps['placement']` | - | Tooltip placement |
| `onClick` | `function` | - | Callback when button is clicked |
| `href` | `string` | - | Turns button into an anchor link |
| `target` | `string` | - | Target attribute for anchor links |
## Usage
```jsx
import Button from 'src/components/Button';
function MyComponent() {
return (
<Button
buttonStyle="primary"
onClick={() => console.log('Button clicked')}
>
Click Me
</Button>
);
}
```
## Button Styles
Superset provides a variety of button styles for different purposes:
- **Primary**: Used for primary actions
- **Secondary**: Used for secondary actions
- **Tertiary**: Used for less important actions
- **Success**: Used for successful or confirming actions
- **Warning**: Used for actions that require caution
- **Danger**: Used for destructive actions
- **Link**: Used for navigation
- **Dashed**: Used for adding new items or features
## Button Sizes
Buttons come in three sizes:
- **Default**: Standard size for most use cases
- **Small**: Compact size for tight spaces
- **XSmall**: Extra small size for very limited spaces
## Best Practices
- Use primary buttons for the main action in a form or page
- Use secondary buttons for alternative actions
- Use danger buttons for destructive actions
- Limit the number of primary buttons on a page to avoid confusion
- Use consistent button styles throughout your application
- Add tooltips to buttons when their purpose might not be immediately clear

View File

@@ -1 +0,0 @@
[]

View File

@@ -1 +0,0 @@
[]

View File

@@ -1,339 +0,0 @@
---
title: Code Review Process
sidebar_position: 4
---
<!--
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.
-->
# Code Review Process
Understand how code reviews work in Apache Superset and how to participate effectively.
## Overview
Code review is a critical part of maintaining code quality and sharing knowledge across the team. Every change to Superset goes through peer review before merging.
## For Authors
### Preparing for Review
#### Before Requesting Review
- [ ] Self-review your changes
- [ ] Ensure CI checks pass
- [ ] Add comprehensive tests
- [ ] Update documentation
- [ ] Fill out PR template completely
- [ ] Add screenshots for UI changes
#### Self-Review Checklist
```bash
# View your changes
git diff upstream/master
# Check for common issues:
# - Commented out code
# - Debug statements (console.log, print)
# - TODO comments that should be addressed
# - Hardcoded values that should be configurable
# - Missing error handling
# - Performance implications
```
### Requesting Review
#### Auto-Assignment
GitHub will automatically request reviews based on CODEOWNERS file.
#### Manual Assignment
For specific expertise, request additional reviewers:
- Frontend changes: Tag frontend experts
- Backend changes: Tag backend experts
- Security changes: Tag security team
- Database changes: Tag database experts
#### Review Request Message
```markdown
@reviewer This PR implements [feature]. Could you please review:
1. The approach taken in [file]
2. Performance implications of [change]
3. Security considerations for [feature]
Thanks!
```
### Responding to Feedback
#### Best Practices
- **Be receptive**: Reviews improve code quality
- **Ask questions**: Clarify if feedback is unclear
- **Explain decisions**: Share context for your choices
- **Update promptly**: Address feedback in timely manner
#### Comment Responses
```markdown
# Acknowledging
"Good catch! Fixed in [commit hash]"
# Explaining
"I chose this approach because [reason]. Would you prefer [alternative]?"
# Questioning
"Could you elaborate on [concern]? I'm not sure I understand the issue."
# Disagreeing respectfully
"I see your point, but I think [current approach] because [reason]. What do you think?"
```
## For Reviewers
### Review Responsibilities
#### What to Review
1. **Correctness**: Does the code do what it claims?
2. **Design**: Is the approach appropriate?
3. **Clarity**: Is the code readable and maintainable?
4. **Testing**: Are tests comprehensive?
5. **Performance**: Any performance concerns?
6. **Security**: Any security issues?
7. **Documentation**: Is it well documented?
### Review Checklist
#### Functionality
- [ ] Feature works as described
- [ ] Edge cases are handled
- [ ] Error handling is appropriate
- [ ] Backwards compatibility maintained
#### Code Quality
- [ ] Follows project conventions
- [ ] No code duplication
- [ ] Clear variable/function names
- [ ] Appropriate abstraction levels
- [ ] SOLID principles followed
#### Testing
- [ ] Unit tests for business logic
- [ ] Integration tests for APIs
- [ ] E2E tests for critical paths
- [ ] Tests are maintainable
- [ ] Good test coverage
#### Security
- [ ] Input validation
- [ ] SQL injection prevention
- [ ] XSS prevention
- [ ] CSRF protection
- [ ] Authentication/authorization checks
- [ ] No sensitive data in logs
#### Performance
- [ ] Database queries optimized
- [ ] No N+1 queries
- [ ] Appropriate caching
- [ ] Frontend bundle size impact
- [ ] Memory usage considerations
### Providing Feedback
#### Effective Comments
```python
# ✅ Good: Specific and actionable
"This query could cause N+1 problems. Consider using
`select_related('user')` to fetch users in a single query."
# ❌ Bad: Vague
"This doesn't look right."
```
```typescript
// ✅ Good: Suggests improvement
"Consider using useMemo here to prevent unnecessary
re-renders when dependencies haven't changed."
// ❌ Bad: Just criticism
"This is inefficient."
```
#### Comment Types
**Use GitHub's comment types:**
- **Comment**: General feedback or questions
- **Approve**: Changes look good
- **Request Changes**: Must be addressed before merge
**Prefix conventions:**
- `nit:` Minor issue (non-blocking)
- `suggestion:` Recommended improvement
- `question:` Seeking clarification
- `blocker:` Must be fixed
- `praise:` Highlighting good work
#### Examples
```markdown
nit: Consider renaming `getData` to `fetchUserData` for clarity
suggestion: This could be simplified using Array.reduce()
question: Is this intentionally not handling the error case?
blocker: This SQL is vulnerable to injection. Please use parameterized queries.
praise: Excellent test coverage! 👍
```
## Review Process
### Timeline
#### Expected Response Times
- **Initial review**: Within 2-3 business days
- **Follow-up review**: Within 1-2 business days
- **Critical fixes**: ASAP (tag in Slack)
#### Escalation
If no response after 3 days:
1. Ping reviewer in PR comments
2. Ask in #development Slack channel
3. Tag @apache/superset-committers
### Approval Requirements
#### Minimum Requirements
- **1 approval** from a committer for minor changes
- **2 approvals** for significant features
- **3 approvals** for breaking changes
#### Special Cases
- **Security changes**: Require security team review
- **API changes**: Require API team review
- **Database migrations**: Require database expert review
- **UI/UX changes**: Require design review
### Merge Process
#### Who Can Merge
- Committers with write access
- After all requirements met
- CI checks must pass
#### Merge Methods
- **Squash and merge**: Default for feature PRs
- **Rebase and merge**: For clean history
- **Create merge commit**: Rarely used
#### Merge Checklist
- [ ] All CI checks green
- [ ] Required approvals obtained
- [ ] No unresolved conversations
- [ ] PR title follows conventions
- [ ] Milestone set (if applicable)
## Review Etiquette
### Do's
- ✅ Be kind and constructive
- ✅ Acknowledge time and effort
- ✅ Provide specific examples
- ✅ Suggest solutions
- ✅ Praise good work
- ✅ Consider cultural differences
- ✅ Focus on the code, not the person
### Don'ts
- ❌ Use harsh or dismissive language
- ❌ Bikeshed on minor preferences
- ❌ Review when tired or frustrated
- ❌ Make personal attacks
- ❌ Ignore the PR description
- ❌ Demand perfection
## Becoming a Reviewer
### Path to Reviewer
1. **Contribute regularly**: Submit quality PRs
2. **Participate in discussions**: Share knowledge
3. **Review others' code**: Start with comments
4. **Build expertise**: Focus on specific areas
5. **Get nominated**: By existing committers
### Reviewer Expectations
- Review PRs in your area of expertise
- Respond within reasonable time
- Mentor new contributors
- Maintain high standards
- Stay current with best practices
## Advanced Topics
### Reviewing Large PRs
#### Strategy
1. **Request splitting**: Ask to break into smaller PRs
2. **Review in phases**:
- Architecture/approach first
- Implementation details second
- Tests and docs last
3. **Use draft reviews**: Save comments and submit together
### Cross-Team Reviews
#### When Needed
- Changes affecting multiple teams
- Shared components/libraries
- API contract changes
- Database schema changes
### Performance Reviews
#### Tools
```python
# Backend performance
import cProfile
import pstats
# Profile the code
cProfile.run('function_to_profile()', 'stats.prof')
stats = pstats.Stats('stats.prof')
stats.sort_stats('cumulative').print_stats(10)
```
```typescript
// Frontend performance
// Use React DevTools Profiler
// Chrome DevTools Performance tab
// Lighthouse audits
```
## Resources
### Internal
- [Coding Guidelines](../guidelines/design-guidelines)
- [Testing Guide](../testing/overview)
- [Extension Architecture](../extensions/architecture)
### External
- [Google's Code Review Guide](https://google.github.io/eng-practices/review/)
- [Best Practices for Code Review](https://smartbear.com/learn/code-review/best-practices-for-peer-code-review/)
- [The Art of Readable Code](https://www.oreilly.com/library/view/the-art-of/9781449318482/)
Next: [Reporting issues effectively](./issue-reporting)

File diff suppressed because it is too large Load Diff

View File

@@ -1,415 +0,0 @@
---
title: Contribution Guidelines
sidebar_position: 4
---
<!--
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.
-->
# Contribution Guidelines
## Pull Request Guidelines
A philosophy we would like to strongly encourage is
> Before creating a PR, create an issue.
The purpose is to separate problem from possible solutions.
**Bug fixes:** If you're only fixing a small bug, it's fine to submit a pull request right away but we highly recommend filing an issue detailing what you're fixing. This is helpful in case we don't accept that specific fix but want to keep track of the issue. Please keep in mind that the project maintainers reserve the rights to accept or reject incoming PRs, so it is better to separate the issue and the code to fix it from each other. In some cases, project maintainers may request you to create a separate issue from PR before proceeding.
**Refactor:** For small refactors, it can be a standalone PR itself detailing what you are refactoring and why. If there are concerns, project maintainers may request you to create a `#SIP` for the PR before proceeding.
**Feature/Large changes:** If you intend to change the public API, or make any non-trivial changes to the implementation, we require you to file a new issue as `#SIP` (Superset Improvement Proposal). This lets us reach an agreement on your proposal before you put significant effort into it. You are welcome to submit a PR along with the SIP (sometimes necessary for demonstration), but we will not review/merge the code until the SIP is approved.
In general, small PRs are always easier to review than large PRs. The best practice is to break your work into smaller independent PRs and refer to the same issue. This will greatly reduce turnaround time.
If you wish to share your work which is not ready to merge yet, create a [Draft PR](https://github.blog/2019-02-14-introducing-draft-pull-requests/). This will enable maintainers and the CI runner to prioritize mature PR's.
Finally, never submit a PR that will put master branch in broken state. If the PR is part of multiple PRs to complete a large feature and cannot work on its own, you can create a feature branch and merge all related PRs into the feature branch before creating a PR from feature branch to master.
### Protocol
#### Authoring
- Fill in all sections of the PR template.
- Title the PR with one of the following semantic prefixes (inspired by [Karma](http://karma-runner.github.io/0.10/dev/git-commit-msg.html])):
- `feat` (new feature)
- `fix` (bug fix)
- `docs` (changes to the documentation)
- `style` (formatting, missing semi colons, etc; no application logic change)
- `refactor` (refactoring code)
- `test` (adding missing tests, refactoring tests; no application logic change)
- `chore` (updating tasks etc; no application logic change)
- `perf` (performance-related change)
- `build` (build tooling, Docker configuration change)
- `ci` (test runner, GitHub Actions workflow changes)
- `other` (changes that don't correspond to the above -- should be rare!)
- Examples:
- `feat: export charts as ZIP files`
- `perf(api): improve API info performance`
- `fix(chart-api): cached-indicator always shows value is cached`
- Add prefix `[WIP]` to title if not ready for review (WIP = work-in-progress). We recommend creating a PR with `[WIP]` first and remove it once you have passed CI test and read through your code changes at least once.
- If you believe your PR contributes a potentially breaking change, put a `!` after the semantic prefix but before the colon in the PR title, like so: `feat!: Added foo functionality to bar`
- **Screenshots/GIFs:** Changes to user interface require before/after screenshots, or GIF for interactions
- Recommended capture tools ([Kap](https://getkap.co/), [LICEcap](https://www.cockos.com/licecap/), [Skitch](https://download.cnet.com/Skitch/3000-13455_4-189876.html))
- If no screenshot is provided, the committers will mark the PR with `need:screenshot` label and will not review until screenshot is provided.
- **Dependencies:** Be careful about adding new dependency and avoid unnecessary dependencies.
- For Python, include it in `pyproject.toml` denoting any specific restrictions and
in `requirements.txt` pinned to a specific version which ensures that the application
build is deterministic.
- For TypeScript/JavaScript, include new libraries in `package.json`
- **Tests:** The pull request should include tests, either as doctests, unit tests, or both. Make sure to resolve all errors and test failures. See [Testing](./howtos#testing) for how to run tests.
- **Documentation:** If the pull request adds functionality, the docs should be updated as part of the same PR.
- **CI:** Reviewers will not review the code until all CI tests are passed. Sometimes there can be flaky tests. You can close and open PR to re-run CI test. Please report if the issue persists. After the CI fix has been deployed to `master`, please rebase your PR.
- **Code coverage:** Please ensure that code coverage does not decrease.
- Remove `[WIP]` when ready for review. Please note that it may be merged soon after approved so please make sure the PR is ready to merge and do not expect more time for post-approval edits.
- If the PR was not ready for review and inactive for > 30 days, we will close it due to inactivity. The author is welcome to re-open and update.
#### Reviewing
- Use constructive tone when writing reviews.
- If there are changes required, state clearly what needs to be done before the PR can be approved.
- If you are asked to update your pull request with some changes there's no need to create a new one. Push your changes to the same branch.
- The committers reserve the right to reject any PR and in some cases may request the author to file an issue.
#### Test Environments
- Members of the Apache GitHub org can launch an ephemeral test environment directly on a pull request by creating a comment containing (only) the command `/testenv up`.
- Note that org membership must be public in order for this validation to function properly.
- Feature flags may be set for a test environment by specifying the flag name (prefixed with `FEATURE_`) and value after the command.
- Format: `/testenv up FEATURE_<feature flag name>=true|false`
- Example: `/testenv up FEATURE_DASHBOARD_NATIVE_FILTERS=true`
- Multiple feature flags may be set in single command, separated by whitespace
- A comment will be created by the workflow script with the address and login information for the ephemeral environment.
- Test environments may be created once the Docker build CI workflow for the PR has completed successfully.
- Test environments do not currently update automatically when new commits are added to a pull request.
- Test environments do not currently support async workers, though this is planned.
- Running test environments will be shutdown upon closing the pull request.
You can also access per-PR ephemeral environment directly using the following URL pattern:
`https://pr-{PR_NUMBER}.superset.apache.org`
#### Merging
- At least one approval is required for merging a PR.
- PR is usually left open for at least 24 hours before merging.
- After the PR is merged, [close the corresponding issue(s)](https://help.github.com/articles/closing-issues-using-keywords/).
#### Post-merge Responsibility
- Project maintainers may contact the PR author if new issues are introduced by the PR.
- Project maintainers may revert your changes if a critical issue is found, such as breaking master branch CI.
## Managing Issues and PRs
To handle issues and PRs that are coming in, committers read issues/PRs and flag them with labels to categorize and help contributors spot where to take actions, as contributors usually have different expertises.
Triaging goals
- **For issues:** Categorize, screen issues, flag required actions from authors.
- **For PRs:** Categorize, flag required actions from authors. If PR is ready for review, flag required actions from reviewers.
First, add **Category labels (a.k.a. hash labels)**. Every issue/PR must have one hash label (except spam entry). Labels that begin with `#` defines issue/PR type:
| Label | for Issue | for PR |
| --------------- | ----------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- |
| `#bug` | Bug report | Bug fix |
| `#code-quality` | Describe problem with code, architecture or productivity | Refactor, tests, tooling |
| `#feature` | New feature request | New feature implementation |
| `#refine` | Propose improvement such as adjusting padding or refining UI style, excluding new features, bug fixes, and refactoring. | Implementation of improvement such as adjusting padding or refining UI style, excluding new features, bug fixes, and refactoring. |
| `#doc` | Documentation | Documentation |
| `#question` | Troubleshooting: Installation, Running locally, Ask how to do something. Can be changed to `#bug` later. | N/A |
| `#SIP` | Superset Improvement Proposal | N/A |
| `#ASF` | Tasks related to Apache Software Foundation policy | Tasks related to Apache Software Foundation policy |
Then add other types of labels as appropriate.
- **Descriptive labels (a.k.a. dot labels):** These labels that begin with `.` describe the details of the issue/PR, such as `.ui`, `.js`, `.install`, `.backend`, etc. Each issue/PR can have zero or more dot labels.
- **Need labels:** These labels have pattern `need:xxx`, which describe the work required to progress, such as `need:rebase`, `need:update`, `need:screenshot`.
- **Risk labels:** These labels have pattern `risk:xxx`, which describe the potential risk on adopting the work, such as `risk:db-migration`. The intention was to better understand the impact and create awareness for PRs that need more rigorous testing.
- **Status labels:** These labels describe the status (`abandoned`, `wontfix`, `cant-reproduce`, etc.) Issue/PRs that are rejected or closed without completion should have one or more status labels.
- **Version labels:** These have the pattern `vx.x` such as `v0.28`. Version labels on issues describe the version the bug was reported on. Version labels on PR describe the first release that will include the PR.
Committers may also update title to reflect the issue/PR content if the author-provided title is not descriptive enough.
If the PR passes CI tests and does not have any `need:` labels, it is ready for review, add label `review` and/or `design-review`.
If an issue/PR has been inactive for at least 30 days, it will be closed. If it does not have any status label, add `inactive`.
When creating a PR, if you're aiming to have it included in a specific release, please tag it with the version label. For example, to have a PR considered for inclusion in Superset 1.1 use the label `v1.1`.
## Revert Guidelines
Reverting changes that are causing issues in the master branch is a normal and expected part of the development process. In an open source community, the ramifications of a change cannot always be fully understood. With that in mind, here are some considerations to keep in mind when considering a revert:
- **Availability of the PR author:** If the original PR author or the engineer who merged the code is highly available and can provide a fix in a reasonable time frame, this would counter-indicate reverting.
- **Severity of the issue:** How severe is the problem on master? Is it keeping the project from moving forward? Is there user impact? What percentage of users will experience a problem?
- **Size of the change being reverted:** Reverting a single small PR is a much lower-risk proposition than reverting a massive, multi-PR change.
- **Age of the change being reverted:** Reverting a recently-merged PR will be more acceptable than reverting an older PR. A bug discovered in an older PR is unlikely to be causing widespread serious issues.
- **Risk inherent in reverting:** Will the reversion break critical functionality? Is the medicine more dangerous than the disease?
- **Difficulty of crafting a fix:** In the case of issues with a clear solution, it may be preferable to implement and merge a fix rather than a revert.
Should you decide that reverting is desirable, it is the responsibility of the Contributor performing the revert to:
- **Contact the interested parties:** The PR's author and the engineer who merged the work should both be contacted and informed of the revert.
- **Provide concise reproduction steps:** Ensure that the issue can be clearly understood and duplicated by the original author of the PR.
- **Put the revert through code review:** The revert must be approved by another committer.
**Revert liberally to keep `master` stable**:
- Build failures
- Test failures
- Critical bugs in production
- Security vulnerabilities
**How to revert**:
1. Use GitHub's revert button when possible
2. Create a PR with clear explanation
3. Tag the original author
4. Work with them on a fix
## Design Guidelines
### Capitalization Guidelines
#### Sentence case
Use sentence-case capitalization for everything in the UI (except these **).
Sentence case is predominantly lowercase. Capitalize only the initial character of the first word, and other words that require capitalization, like:
- **Proper nouns.** Objects in the product _are not_ considered proper nouns e.g. dashboards, charts, saved queries etc. Proprietary feature names eg. SQL Lab, Preset Manager _are_ considered proper nouns
- **Acronyms** (e.g. CSS, HTML)
- When referring to **UI labels that are themselves capitalized** from sentence case (e.g. page titles - Dashboards page, Charts page, Saved queries page, etc.)
- User input that is reflected in the UI. E.g. a user-named a dashboard tab
**Sentence case vs. Title case:**
Title case: "A Dog Takes a Walk in Paris"
Sentence case: "A dog takes a walk in Paris"
**Why sentence case?**
- It's generally accepted as the quickest to read
- It's the easiest form to distinguish between common and proper nouns
**Good examples:**
- "Select a database"
- "Create new chart"
- "View all dashboards"
**Bad examples:**
- "Select a Database"
- "Create New Chart"
- "View All Dashboards"
#### How to refer to UI elements
When writing about a UI element, use the same capitalization as used in the UI.
For example, if an input field is labeled "Name" then you refer to this as the "Name input field". Similarly, if a button has the label "Save" in it, then it is correct to refer to the "Save button".
Where a product page is titled "Settings", you refer to this in writing as follows:
"Edit your personal information on the Settings page".
Often a product page will have the same title as the objects it contains. In this case, refer to the page as it appears in the UI, and the objects as common nouns:
- Upload a dashboard on the Dashboards page
- Go to Dashboards
- View dashboard
- View all dashboards
- Upload CSS templates on the CSS templates page
- Queries that you save will appear on the Saved queries page
- Create custom queries in SQL Lab then create dashboards
When writing about UI elements:
- Use **bold** for clickable elements: "Click **Save**"
- Use quotes for text fields: 'Enter "My Dashboard" in the name field'
- Be specific about element types: button, link, dropdown, etc.
#### **Exceptions to sentence case
Only use title case for:
- Product names (Apache Superset)
- Proper nouns
- Acronyms (SQL, API, CSV)
- Input labels, buttons and UI tabs are all caps
- User input values (e.g. column names, SQL Lab tab names) should be in their original case
## Programming Language Conventions
### Python
We use:
- **[Ruff](https://docs.astral.sh/ruff/)** for linting and formatting
- **[Mypy](http://mypy-lang.org/)** for type checking
Python code should:
- Follow PEP 8
- Use type hints for all new code
- Use descriptive variable names
- Include docstrings for modules, classes, and functions
- Handle exceptions appropriately
- Avoid global variables
Parameters in the `config.py` (which are accessible via the Flask app.config dictionary) are
assumed to always be defined and thus should be accessed directly via,
```python
blueprints = app.config["BLUEPRINTS"]
```
rather than,
```python
blueprints = app.config.get("BLUEPRINTS")
```
or similar as the later will cause typing issues. The former is of type `List[Callable]`
whereas the later is of type `Optional[List[Callable]]`.
#### Typing / Type Hints
All new Python code should include type hints:
To ensure clarity, consistency, all readability, _all_ new functions should use
[type hints](https://docs.python.org/3/library/typing.html) and include a
docstring.
Note per [PEP-484](https://www.python.org/dev/peps/pep-0484/#exceptions) no
syntax for listing explicitly raised exceptions is proposed and thus the
recommendation is to put this information in a docstring, i.e.,
```python
import math
from typing import List, Optional, Dict, Any, Union
def sqrt(x: Union[float, int]) -> Union[float, int]:
"""
Return the square root of x.
:param x: A number
:returns: The square root of the given number
:raises ValueError: If the number is negative
"""
return math.sqrt(x)
def process_data(
data: List[Dict[str, Any]],
filter_empty: bool = True
) -> Optional[Dict[str, Any]]:
"""
Process a list of data dictionaries.
Args:
data: List of dictionaries containing data
filter_empty: Whether to filter empty entries
Returns:
Processed data dictionary or None if no valid data
"""
if not data:
return None
# Process data...
return processed_data
```
Use `mypy` to check types:
```bash
mypy superset
```
### TypeScript
We use:
- **ESLint** for linting
- **Prettier** for formatting
- **TypeScript** strict mode
TypeScript is fully supported and is the recommended language for writing all new frontend
components. When modifying existing functions/components, migrating to TypeScript is
appreciated, but not required. Examples of migrating functions/components to TypeScript can be
found in [#9162](https://github.com/apache/superset/pull/9162) and [#9180](https://github.com/apache/superset/pull/9180).
TypeScript code should:
- Avoid `any` types - use proper TypeScript types
- Use functional components with hooks for React
- Include JSDoc comments for complex functions
- Use consistent naming conventions
- Handle errors appropriately
Example:
```typescript
interface User {
id: number;
name: string;
email?: string;
}
export function processUser(user: User): string {
// Avoid using 'any'
const { name, email } = user;
return email ? `${name} <${email}>` : name;
}
```
## Additional Guidelines
### Commit Messages
- Use clear, descriptive commit messages
- Start with a verb in imperative mood
- Reference issue numbers when applicable
Good: "Fix dashboard filter bug when dataset is deleted"
Bad: "Fixed stuff"
### Code Review Etiquette
- Be respectful and constructive
- Focus on the code, not the person
- Provide specific suggestions for improvement
- Acknowledge good work
- Be open to different approaches
### Documentation
- Update docs for any user-facing changes
- Include code examples where helpful
- Keep language clear and concise
- Test documentation changes locally
### Security
- Never commit secrets or credentials
- Validate all user input
- Use parameterized queries for SQL
- Follow OWASP guidelines
- Report security issues privately to private@superset.apache.org
## Questions?
If you have questions about these guidelines, ask in:
- [Slack #development](https://apache-superset.slack.com)
- [GitHub Discussions](https://github.com/apache/superset/discussions)

View File

@@ -1,528 +0,0 @@
---
title: Development How-tos
sidebar_position: 7
---
<!--
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.
-->
# Development How-tos
This guide contains specific instructions for common development tasks in Superset.
## Contributing to Documentation
The documentation site is built using [Docusaurus](https://docusaurus.io/). All documentation lives in the `docs` folder, written in Markdown format.
### Local Development
To set up your local environment for documentation development:
```bash
cd docs
npm install
npm run start
```
The site will be available at http://localhost:3000
### Build
To create a production build:
```bash
npm run build
npm run serve # Test the build locally
```
### Deployment
Documentation is automatically deployed when changes are merged to master.
## Creating Visualization Plugins
Visualization plugins allow you to add custom chart types to Superset. They are built as npm packages that integrate with the Superset frontend.
### Prerequisites
- Node.js 18+
- npm or yarn
- A local Superset development environment
### Creating a simple Hello World viz plugin
1. **Install the Superset Yeoman generator**:
```bash
npm install -g @superset-ui/generator-superset
```
2. **Create a new plugin**:
```bash
mkdir superset-plugin-chart-hello-world
cd superset-plugin-chart-hello-world
yo @superset-ui/superset
```
3. **Follow the prompts**:
- Package name: `superset-plugin-chart-hello-world`
- Chart type: Choose your preferred type
- Include storybook: Yes (recommended for development)
4. **Develop your plugin**:
The generator creates a complete plugin structure with TypeScript, React components, and build configuration.
5. **Test your plugin locally**:
```bash
npm run dev
```
6. **Link to your local Superset**:
```bash
npm link
# In your Superset frontend directory:
npm link superset-plugin-chart-hello-world
```
7. **Import and register in Superset**:
Edit `superset-frontend/src/visualizations/presets/MainPreset.js` to include your plugin.
## Testing
### Python Testing
Run Python tests using pytest:
```bash
# Run all tests
pytest
# Run specific test file
pytest tests/unit_tests/test_specific.py
# Run with coverage
pytest --cov=superset
# Run only unit tests
pytest tests/unit_tests
# Run only integration tests
pytest tests/integration_tests
```
#### Testing with local Presto connections
To test against Presto:
```bash
# Start Presto locally using Docker
docker run -p 8080:8080 \
--name presto \
-d prestodb/presto
# Configure in superset_config.py
SQLALCHEMY_DATABASE_URI = 'presto://localhost:8080/hive/default'
```
### Frontend Testing
Run frontend tests using Jest:
```bash
cd superset-frontend
# Run all tests
npm run test
# Run with coverage
npm run test -- --coverage
# Run in watch mode
npm run test -- --watch
# Run specific test file
npm run test -- MyComponent.test.tsx
```
### E2E Integration Testing
We support both Playwright (recommended) and Cypress for end-to-end testing.
#### Playwright (Recommended - NEW)
Playwright is our new E2E testing framework, gradually replacing Cypress.
```bash
# Navigate to frontend directory
cd superset-frontend
# Run all Playwright tests
npm run playwright:test
# or: npx playwright test
# Run with interactive UI for debugging
npm run playwright:ui
# or: npx playwright test --ui
# Run in headed mode (see browser)
npm run playwright:headed
# or: npx playwright test --headed
# Run specific test file
npx playwright test tests/auth/login.spec.ts
# Run with debug mode (step through tests)
npm run playwright:debug tests/auth/login.spec.ts
# or: npx playwright test --debug tests/auth/login.spec.ts
# Generate test report
npm run playwright:report
```
#### Cypress (DEPRECATED - will be removed)
Cypress is being phased out in favor of Playwright but is still available:
```bash
# Set base URL for Cypress
export CYPRESS_BASE_URL='http://localhost:8088'
export CYPRESS_DATABASE=test
export CYPRESS_USERNAME=admin
export CYPRESS_PASSWORD=admin
# Navigate to Cypress directory
cd superset-frontend/cypress-base
# Run interactively
npm run cypress-debug
# Run headless (like CI)
npm run cypress-run-chrome
# Run specific file
npm run cypress-run-chrome -- --spec "cypress/e2e/dashboard/dashboard.test.ts"
```
### Debugging Server App
For debugging the Flask backend:
#### Using PyCharm/IntelliJ
1. Create a new Python configuration
2. Set script path to `superset/app.py`
3. Set environment variables:
- `FLASK_ENV=development`
- `SUPERSET_CONFIG_PATH=/path/to/superset_config.py`
4. Set breakpoints and run in debug mode
#### Using VS Code
1. Add to `.vscode/launch.json`:
```json
{
"version": "0.2.0",
"configurations": [
{
"name": "Python: Flask",
"type": "python",
"request": "launch",
"module": "flask",
"env": {
"FLASK_APP": "superset/app.py",
"FLASK_ENV": "development"
},
"args": ["run", "--no-debugger", "--no-reload"],
"jinja": true
}
]
}
```
2. Set breakpoints and press F5 to debug
### Storybook
Storybook is used for developing and testing UI components in isolation:
```bash
cd superset-frontend
# Start Storybook
npm run storybook
# Build static Storybook
npm run build-storybook
```
Access Storybook at http://localhost:6006
## Contributing Translations
Superset uses Flask-Babel for internationalization.
### Enabling language selection
Edit `superset_config.py`:
```python
LANGUAGES = {
'en': {'flag': 'us', 'name': 'English'},
'fr': {'flag': 'fr', 'name': 'French'},
'zh': {'flag': 'cn', 'name': 'Chinese'},
}
```
### Creating a new language dictionary
```bash
# Initialize a new language
pybabel init -i superset/translations/messages.pot -d superset/translations -l de
```
### Extracting new strings for translation
```bash
# Extract Python strings
pybabel extract -F babel.cfg -o superset/translations/messages.pot -k lazy_gettext superset
# Extract JavaScript strings
npm run build-translation
```
### Updating language files
```bash
# Update all language files with new strings
pybabel update -i superset/translations/messages.pot -d superset/translations
```
### Applying translations
```bash
# Frontend
cd superset-frontend
npm run build-translation
# Backend
pybabel compile -d superset/translations
```
## Linting
### Python
We use Ruff for Python linting and formatting:
```bash
# Auto-format using ruff
ruff format .
# Lint check with ruff
ruff check .
# Lint fix with ruff
ruff check --fix .
```
Pre-commit hooks run automatically on `git commit` if installed.
### TypeScript
We use ESLint and Prettier for TypeScript:
```bash
cd superset-frontend
# Run eslint checks
npm run lint
# Run tsc (typescript) checks
npm run type
# Fix lint issues
npm run lint-fix
# Format with Prettier
npm run prettier
```
## GitHub Ephemeral Environments
For every PR, an ephemeral environment is automatically deployed for testing.
Access pattern: `https://pr-{PR_NUMBER}.superset.apache.org`
Features:
- Automatically deployed on PR creation/update
- Includes sample data
- Destroyed when PR is closed
- Useful for UI/UX review
## Tips and Tricks
### Using Docker for Development
```bash
# Rebuild specific service
docker compose build superset
# View logs
docker compose logs -f superset
# Execute commands in container
docker compose exec superset bash
# Reset database
docker compose down -v
docker compose up
```
### Hot Reloading
**Frontend**: Webpack dev server provides hot module replacement automatically.
**Backend**: Use Flask debug mode:
```bash
FLASK_ENV=development superset run -p 8088 --with-threads --reload
```
### Performance Profiling
For Python profiling:
```python
# In superset_config.py
PROFILING = True
```
For React profiling:
- Use React DevTools Profiler
- Enable performance marks in Chrome DevTools
### Database Migrations
```bash
# Create a new migration
superset db migrate -m "Description of changes"
# Apply migrations
superset db upgrade
# Downgrade
superset db downgrade
```
### Useful Aliases
Add to your shell profile:
```bash
alias sdev='FLASK_ENV=development superset run -p 8088 --with-threads --reload'
alias stest='pytest tests/unit_tests'
alias slint='pre-commit run --all-files'
alias sfront='cd superset-frontend && npm run dev-server'
```
## Common Issues and Solutions
### Node/npm Issues
```bash
# Clear npm cache
npm cache clean --force
# Reinstall dependencies
rm -rf node_modules package-lock.json
npm install
```
### Python Environment Issues
```bash
# Recreate virtual environment
deactivate
rm -rf venv
python3 -m venv venv
source venv/bin/activate
pip install -r requirements/development.txt
pip install -e .
```
### Database Issues
```bash
# Reset local database
superset db downgrade -r base
superset db upgrade
superset init
```
### Port Already in Use
```bash
# Find process using port
lsof -i :8088
# Kill process
kill -9 [PID]
```
## Reporting Security Vulnerabilities
Please report security vulnerabilities to **private@superset.apache.org**.
In the event a community member discovers a security flaw in Superset, it is important to follow the [Apache Security Guidelines](https://www.apache.org/security/committers.html) and release a fix as quickly as possible before public disclosure. Reporting security vulnerabilities through the usual GitHub Issues channel is not ideal as it will publicize the flaw before a fix can be applied.
## SQL Lab Async Configuration
It's possible to configure a local database to operate in `async` mode, to work on `async` related features.
To do this, you'll need to:
- Add an additional database entry. We recommend you copy the connection string from the database labeled `main`, and then enable `SQL Lab` and the features you want to use. Don't forget to check the `Async` box
- Configure a results backend, here's a local `FileSystemCache` example, not recommended for production, but perfect for testing (stores cache in `/tmp`)
```python
from flask_caching.backends.filesystemcache import FileSystemCache
RESULTS_BACKEND = FileSystemCache('/tmp/sqllab')
```
- Start up a celery worker
```bash
celery --app=superset.tasks.celery_app:app worker -O fair
```
Note that:
- for changes that affect the worker logic, you'll have to restart the `celery worker` process for the changes to be reflected.
- The message queue used is a `sqlite` database using the `SQLAlchemy` experimental broker. Ok for testing, but not recommended in production
- In some cases, you may want to create a context that is more aligned to your production environment, and use the similar broker as well as results backend configuration
## Async Chart Queries
It's possible to configure database queries for charts to operate in `async` mode. This is especially useful for dashboards with many charts that may otherwise be affected by browser connection limits. To enable async queries for dashboards and Explore, the following dependencies are required:
- Redis 5.0+ (the feature utilizes [Redis Streams](https://redis.io/topics/streams-intro))
- Cache backends enabled via the `CACHE_CONFIG` and `DATA_CACHE_CONFIG` config settings
- Celery workers configured and running to process async tasks
## Need Help?
- Check the [FAQ](https://superset.apache.org/docs/frequently-asked-questions)
- Ask in [Slack](https://apache-superset.slack.com)
- Search [GitHub Issues](https://github.com/apache/superset/issues)
- Post in [GitHub Discussions](https://github.com/apache/superset/discussions)

View File

@@ -1,418 +0,0 @@
---
title: Issue Reporting
sidebar_position: 5
---
<!--
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.
-->
# Issue Reporting
Learn how to effectively report bugs and request features for Apache Superset.
## Before Opening an Issue
### Pre-Issue Checklist
1. **Search Existing Issues**
```
Search: https://github.com/apache/superset/issues
- Use keywords from your error message
- Check both open and closed issues
- Look for similar problems
```
2. **Check Documentation**
- [User Documentation](https://superset.apache.org/docs/intro)
- [FAQ](https://superset.apache.org/docs/frequently-asked-questions)
- [Configuration Guide](https://superset.apache.org/docs/configuration/configuring-superset)
3. **Verify Version**
```bash
# Check Superset version
superset version
# Try latest version
pip install --upgrade apache-superset
```
4. **Reproduce Consistently**
- Can you reproduce the issue?
- Does it happen every time?
- What specific actions trigger it?
## Bug Reports
### Bug Report Template
```markdown
### Bug Description
A clear and concise description of the bug.
### How to Reproduce
1. Go to '...'
2. Click on '...'
3. Scroll down to '...'
4. See error
### Expected Behavior
What you expected to happen.
### Actual Behavior
What actually happened. Include error messages.
### Screenshots/Videos
If applicable, add screenshots or recordings.
### Environment
- Superset version: [e.g., 3.0.0]
- Python version: [e.g., 3.9.7]
- Node version: [e.g., 18.17.0]
- Database: [e.g., PostgreSQL 14]
- Browser: [e.g., Chrome 120]
- OS: [e.g., Ubuntu 22.04]
### Additional Context
- Using Docker: Yes/No
- Configuration overrides:
- Feature flags enabled:
- Authentication method:
```
### What Makes a Good Bug Report
#### ✅ Good Example
```markdown
### Bug Description
When filtering a dashboard with a date range filter, charts using
SQL Lab datasets don't update, while charts using regular datasets do.
### How to Reproduce
1. Create a dashboard with 2 charts:
- Chart A: Uses a SQL Lab virtual dataset
- Chart B: Uses a regular table dataset
2. Add a date range filter (last 30 days)
3. Apply the filter
4. Chart B updates, Chart A shows no change
### Expected Behavior
Both charts should filter to show last 30 days of data.
### Actual Behavior
Only Chart B updates. Chart A still shows all data.
No error messages in browser console or server logs.
### Screenshots
[Dashboard before filter]: attachment1.png
[Dashboard after filter]: attachment2.png
[Network tab showing requests]: attachment3.png
### Environment
- Superset version: 3.0.0
- Python version: 3.9.16
- Database: PostgreSQL 14.9
- Browser: Chrome 120.0.6099.71
- OS: macOS 14.2
```
#### ❌ Poor Example
```markdown
Dashboard filters don't work. Please fix.
```
### Required Information
#### Error Messages
```python
# Include full error traceback
Traceback (most recent call last):
File "...", line X, in function
error details
SupersetException: Detailed error message
```
#### Logs
```bash
# Backend logs
docker logs superset_app 2>&1 | tail -100
# Or from development
tail -f ~/.superset/superset.log
```
#### Browser Console
```javascript
// Include JavaScript errors
// Chrome: F12 → Console tab
// Include network errors
// Chrome: F12 → Network tab
```
#### Configuration
```python
# Relevant config from superset_config.py
FEATURE_FLAGS = {
"ENABLE_TEMPLATE_PROCESSING": True,
# ... other flags
}
```
## Feature Requests
### Feature Request Template
```markdown
### Is your feature request related to a problem?
A clear description of the problem you're trying to solve.
### Describe the solution you'd like
A clear description of what you want to happen.
### Describe alternatives you've considered
Other solutions or features you've considered.
### Additional context
Any other context, mockups, or examples.
### Are you willing to contribute?
- [ ] Yes, I can implement this feature
- [ ] Yes, I can help test
- [ ] No, but I can provide feedback
```
### Good Feature Requests Include
1. **Clear Use Case**
```markdown
As a [type of user], I want [feature] so that [benefit].
Example:
As a data analyst, I want to schedule dashboard screenshots
so that I can automatically send reports to stakeholders.
```
2. **Mockups/Designs**
- UI mockups
- Workflow diagrams
- API specifications
3. **Impact Analysis**
- Who benefits?
- How many users affected?
- Performance implications?
## Security Issues
### 🔴 IMPORTANT: Security Vulnerabilities
**DO NOT** create public issues for security vulnerabilities!
Instead:
1. Email: security@apache.org
2. Subject: `[Superset] Security Vulnerability`
3. Include:
- Description of vulnerability
- Steps to reproduce
- Potential impact
- Suggested fix (if any)
### Security Issue Template
```markdown
Send to: security@apache.org
### Vulnerability Description
[Describe the security issue]
### Type
- [ ] SQL Injection
- [ ] XSS
- [ ] CSRF
- [ ] Authentication Bypass
- [ ] Information Disclosure
- [ ] Other: [specify]
### Affected Versions
[List affected versions]
### Steps to Reproduce
[Detailed steps - be specific]
### Impact
[What can an attacker do?]
### Suggested Fix
[If you have suggestions]
```
## Issue Labels
### Priority Labels
- `P0`: Critical - System unusable
- `P1`: High - Major feature broken
- `P2`: Medium - Important but workaround exists
- `P3`: Low - Nice to have
### Type Labels
- `bug`: Something isn't working
- `feature`: New feature request
- `enhancement`: Improvement to existing feature
- `documentation`: Documentation improvements
- `question`: Question about usage
### Component Labels
- `dashboard`: Dashboard functionality
- `sqllab`: SQL Lab
- `explore`: Chart builder
- `visualization`: Chart types
- `api`: REST API
- `security`: Security related
### Status Labels
- `needs-triage`: Awaiting review
- `confirmed`: Bug confirmed
- `in-progress`: Being worked on
- `blocked`: Blocked by dependency
- `stale`: No activity for 30+ days
## Issue Lifecycle
### 1. Creation
- User creates issue with template
- Auto-labeled as `needs-triage`
### 2. Triage
- Maintainer reviews within 7 days
- Labels applied (priority, type, component)
- Questions asked if needed
### 3. Confirmation
- Bug reproduced or feature discussed
- Label changed to `confirmed`
- Assigned to milestone if applicable
### 4. Development
- Contributor claims issue
- Label changed to `in-progress`
- PR linked to issue
### 5. Resolution
- PR merged
- Issue auto-closed
- Or manually closed with explanation
## Following Up
### If No Response
After 7 days without response:
```markdown
@apache/superset-committers This issue hasn't been triaged yet.
Could someone please take a look?
```
### Providing Updates
```markdown
Update: I found that this only happens when [condition].
Here's additional debugging information: [details]
```
### Issue Staleness
- Bot marks stale after 30 days of inactivity
- Closes after 7 more days without activity
- To keep open: Comment with updates
## Tips for Success
### Do's
- ✅ Search before creating
- ✅ Use templates
- ✅ Provide complete information
- ✅ Include screenshots/videos
- ✅ Be responsive to questions
- ✅ Test with latest version
- ✅ One issue per report
### Don'ts
- ❌ "+1" or "me too" comments (use reactions)
- ❌ Multiple issues in one report
- ❌ Vague descriptions
- ❌ Screenshots of text (copy/paste instead)
- ❌ Private/sensitive data in reports
- ❌ Demanding immediate fixes
## Useful Commands
### Gathering System Info
```bash
# Full environment info
python -c "
import sys
import superset
import sqlalchemy
import pandas
import numpy
print(f'Python: {sys.version}')
print(f'Superset: {superset.__version__}')
print(f'SQLAlchemy: {sqlalchemy.__version__}')
print(f'Pandas: {pandas.__version__}')
print(f'NumPy: {numpy.__version__}')
"
# Database versions
superset shell
>>> from superset import db
>>> print(db.engine.dialect.server_version_info)
```
### Creating Minimal Reproductions
```python
# Create test script
# minimal_repro.py
from superset import create_app
app = create_app()
with app.app_context():
# Your reproduction code here
pass
```
## Getting Help
### Before Creating an Issue
1. **Slack**: Ask in #troubleshooting
2. **GitHub Discussions**: Search/ask questions
3. **Stack Overflow**: Tag `apache-superset`
4. **Mailing List**: user@superset.apache.org
### Issue Not a Bug?
Consider:
- **Feature Request**: Use feature request template
- **Question**: Use GitHub Discussions
- **Configuration Help**: Ask in Slack
- **Development Help**: See [Contributing Guide](./overview)
Next: [Understanding the release process](./release-process)

View File

@@ -1,166 +0,0 @@
---
title: Overview
sidebar_position: 1
---
<!--
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.
-->
# Contributing
Superset is an [Apache Software foundation](https://www.apache.org/theapacheway/index.html) project.
The core contributors (or committers) to Superset communicate primarily in the following channels (which can be joined by anyone):
- [Mailing list](https://lists.apache.org/list.html?dev@superset.apache.org)
- [Apache Superset Slack community](http://bit.ly/join-superset-slack)
- [GitHub issues](https://github.com/apache/superset/issues)
- [GitHub pull requests](https://github.com/apache/superset/pulls)
- [GitHub discussions](https://github.com/apache/superset/discussions)
- [Superset Community Calendar](https://superset.apache.org/community)
More references:
- [Superset Wiki (code guidelines and additional resources)](https://github.com/apache/superset/wiki)
## Orientation
Here's a list of repositories that contain Superset-related packages:
- [apache/superset](https://github.com/apache/superset)
is the main repository containing the `apache_superset` Python package
distributed on
[pypi](https://pypi.org/project/apache_superset/). This repository
also includes Superset's main TypeScript/JavaScript bundles and react apps under
the [superset-frontend](https://github.com/apache/superset/tree/master/superset-frontend)
folder.
- [github.com/apache-superset](https://github.com/apache-superset) is the
GitHub organization under which we manage Superset-related
small tools, forks and Superset-related experimental ideas.
## Types of Contributions
### Report Bug
The best way to report a bug is to file an issue on GitHub. Please include:
- Your operating system name and version.
- Superset version.
- Detailed steps to reproduce the bug.
- Any details about your local setup that might be helpful in troubleshooting.
When posting Python stack traces, please quote them using
[Markdown blocks](https://help.github.com/articles/creating-and-highlighting-code-blocks/).
_Please note that feature requests opened as GitHub Issues will be moved to Discussions._
### Submit Ideas or Feature Requests
The best way is to start an ["Ideas" Discussion thread](https://github.com/apache/superset/discussions/categories/ideas) on GitHub:
- Explain in detail how it would work.
- Keep the scope as narrow as possible, to make it easier to implement.
- Remember that this is a volunteer-driven project, and that your contributions are as welcome as anyone's :)
To propose large features or major changes to codebase, and help usher in those changes, please create a **Superset Improvement Proposal (SIP)**. See template from [SIP-0](https://github.com/apache/superset/issues/5602)
### Fix Bugs
Look through the GitHub issues. Issues tagged with `#bug` are
open to whoever wants to implement them.
### Implement Features
Look through the GitHub issues. Issues tagged with
`#feature` are open to whoever wants to implement them.
### Improve Documentation
Superset could always use better documentation,
whether as part of the official Superset docs,
in docstrings, `docs/*.rst` or even on the web as blog posts or
articles. See [Documentation](./howtos#contributing-to-documentation) for more details.
### Add Translations
If you are proficient in a non-English language, you can help translate
text strings from Superset's UI. You can jump into the existing
language dictionaries at
`superset/translations/<language_code>/LC_MESSAGES/messages.po`, or
even create a dictionary for a new language altogether.
See [Translating](./howtos#contributing-translations) for more details.
### Ask Questions
There is a dedicated [`apache-superset` tag](https://stackoverflow.com/questions/tagged/apache-superset) on [StackOverflow](https://stackoverflow.com/). Please use it when asking questions.
## Types of Contributors
Following the project governance model of the Apache Software Foundation (ASF), Apache Superset has a specific set of contributor roles:
### PMC Member
A Project Management Committee (PMC) member is a person who has been elected by the PMC to help manage the project. PMC members are responsible for the overall health of the project, including community development, release management, and project governance. PMC members are also responsible for the technical direction of the project.
For more information about Apache Project PMCs, please refer to https://www.apache.org/foundation/governance/pmcs.html
### Committer
A committer is a person who has been elected by the PMC to have write access (commit access) to the code repository. They can modify the code, documentation, and website and accept contributions from others.
The official list of committers and PMC members can be found [here](https://projects.apache.org/committee.html?superset).
### Contributor
A contributor is a person who has contributed to the project in any way, including but not limited to code, tests, documentation, issues, and discussions.
> You can also review the Superset project's guidelines for PMC member promotion here: https://github.com/apache/superset/wiki/Guidelines-for-promoting-Superset-Committers-to-the-Superset-PMC
### Security Team
The security team is a selected subset of PMC members, committers and non-committers who are responsible for handling security issues.
New members of the security team are selected by the PMC members in a vote. You can request to be added to the team by sending a message to private@superset.apache.org. However, the team should be small and focused on solving security issues, so the requests will be evaluated on a case-by-case basis and the team size will be kept relatively small, limited to only actively security-focused contributors.
This security team must follow the [ASF vulnerability handling process](https://apache.org/security/committers.html#asf-project-security-for-committers).
Each new security issue is tracked as a JIRA ticket on the [ASF's JIRA Superset security project](https://issues.apache.org/jira/secure/RapidBoard.jspa?rapidView=588&projectKey=SUPERSETSEC)
Security team members must:
- Have an [ICLA](https://www.apache.org/licenses/contributor-agreements.html) signed with Apache Software Foundation.
- Not reveal information about pending and unfixed security issues to anyone (including their employers) unless specifically authorised by the security team members, e.g., if the security team agrees that diagnosing and solving an issue requires the involvement of external experts.
A release manager, the contributor overseeing the release of a specific version of Apache Superset, is by default a member of the security team. However, they are not expected to be active in assessing, discussing, and fixing security issues.
Security team members should also follow these general expectations:
- Actively participate in assessing, discussing, fixing, and releasing security issues in Superset.
- Avoid discussing security fixes in public forums. Pull request (PR) descriptions should not contain any information about security issues. The corresponding JIRA ticket should contain a link to the PR.
- Security team members who contribute to a fix may be listed as remediation developers in the CVE report, along with their job affiliation (if they choose to include it).
## Getting Started
Ready to contribute? Here's how to get started:
1. **[Set up your environment](./development-setup)** - Get Superset running locally
2. **[Find something to work on](#types-of-contributions)** - Pick an issue or feature
3. **[Submit your contribution](./submitting-pr)** - Create a pull request
4. **[Follow guidelines](./guidelines)** - Ensure code quality
Welcome to the Apache Superset community! 🚀

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