Commit Graph

18623 Commits

Author SHA1 Message Date
Elizabeth Thompson
976e0d9d3e fix(reports): fail-loud WARNING diagnostics and log-context tracing for tile readiness
Companion to the previous commit's positive per-tile readiness check,
carrying the rest of PR #42119's changes onto this base:

- Per-tile readiness timeout logs at WARNING (customer chart-loading
  issue, not a system fault -- matching #38130/#38441) with elapsed wait
  time, tile index/total, load_wait, and the identity + stuck-state of
  each unready chart holder (waiting_on_database / spinner_mounted /
  nothing_mounted), then re-raises so the report fails rather than
  shipping a blank or spinner tile. A per-tile DEBUG line logs readiness
  wait time for profiling.
- The deliberate readiness-timeout re-raise is tracked with an explicit
  flag rather than `except PlaywrightTimeout` at the outer level, since
  PlaywrightTimeout is aliased to bare Exception when playwright isn't
  installed and would otherwise swallow-or-propagate the wrong cases.
- Threads an optional log_context (e.g. "execution_id=<uuid>") from
  BaseReportState._get_screenshots through BaseScreenshot.get_screenshot
  and both WebDriverProxy implementations into take_tiled_screenshot,
  so timeout logs correlate back to the report run. Defaults to None
  for callers outside the report pipeline (thumbnails).

Backported from apache/superset#42119 (commits 37da786b52, f6feb70eca,
97d15485ad squashed) onto this branch's base; only the log lines this
change itself adds or touches carry the context suffix -- pre-existing
log lines on this base (f-string style) are left as-is.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-07-21 18:37:47 +00:00
Elizabeth Thompson
a9ff21b573 fix(reports): positive per-tile chart readiness check for tiled screenshots
`take_tiled_screenshot()` waited for the *absence* of `.loading` elements
visible in the viewport before capturing each tile. With
DashboardVirtualization on (default), a chart holder that has just scrolled
into view but hasn't fired its IntersectionObserver callback yet mounts
neither a spinner nor a chart, so the predicate passed vacuously and the
tile was captured blank. On top of that, a per-tile timeout was caught,
logged as a warning, and the tile was captured anyway -- delivering a
spinner screenshot to report recipients instead of failing the report.

Replace the absence-of-`.loading` predicate with a positive readiness
check: every chart holder (`data-test="dashboard-component-chart-holder"`)
intersecting the viewport must show a terminal state (a rendered chart via
`.slice_container`, or an error/empty state via `[role="alert"]` /
`.ant-empty` / `.missing-chart-container`) before a tile is captured. A
holder with nothing mounted no longer satisfies the wait.

A per-tile timeout is now logged at ERROR with the tile index, the
load_wait, and the identities of the still-unready chart holders, and
re-raises instead of being swallowed -- the report now fails
(ReportScheduleScreenshotFailedError) instead of silently shipping a
degraded screenshot.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-07-21 18:28:02 +00:00
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