You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@superset.apache.org by jl...@apache.org on 2026/06/05 16:54:06 UTC
(superset) branch claude/angry-bartik-10b01d updated (99ec152de05 -> 00029019d43)
This is an automated email from the ASF dual-hosted git repository.
sadpandajoe pushed a change to branch claude/angry-bartik-10b01d
in repository https://gitbox.apache.org/repos/asf/superset.git
discard 99ec152de05 refactor(reports): address review feedback on Slack v1 deprecation
discard dea61ae2eca docs(updating): rewrite slack v1 deprecation note in conventional one-liner style
discard 23f40b05d99 fix(reports): make Slack v2 backoff retries actually fire on transient errors
discard 1152b5ddbe8 test(reports): mock get_channels_with_search in slack token-callable test
discard 890d4c64efa chore(reports): deprecate Slack v1, default ALERT_REPORT_SLACK_V2 to True, harden v2 tests
add 316dd3db22b fix(dataset): sort by data type when clicking Datatype column header (#40411)
add a33fcb0eddc feat: add embedded dashboard E2E tests to Playwright CI (#39300)
add 041ecbc248c fix(embedded): resolve guest user permissions in user_view_menu_names (#39197)
add 5312d0adf81 feat(mcp): add list_reports and get_report_info tools (#40348)
add e1bc8e7ae8f chore(deps): bump uuid, qs, js-yaml, and @cypress/request in frontend lockfiles (#40561)
add dab628c13af fix(i18n): auto-add ASF license header in backfill_po.py (#40395)
add 97be689b5c4 fix(daos): lazy-import SoftDeleteMixin to fix pytest collection error (#40573)
add 1523d797ca6 chore(deps-dev): bump pyinstrument from 4.4.0 to 5.1.2 (#40377)
add 74d1c83ec52 ci: preserve PR translation updates during regression checks (#40581)
add 2b8e31bf688 ci(docs): skip Netlify docs preview on PRs that don't touch docs (#40590)
add bffc3fc58fa chore(deps-dev): bump @babel/eslint-parser from 7.28.6 to 7.29.7 in /superset-frontend (#40615)
add f77fa3ae39c chore(deps-dev): bump @babel/plugin-transform-runtime from 7.29.0 to 7.29.7 in /superset-frontend (#40614)
add efdfefeea26 chore(deps-dev): bump @typescript-eslint/eslint-plugin from 8.59.4 to 8.60.0 in /superset-frontend (#40613)
add aa8b474c58a chore(deps-dev): bump @babel/plugin-transform-export-namespace-from from 7.27.1 to 7.29.7 in /superset-frontend (#40611)
add a06eb8fc781 chore(deps): bump react-arborist from 3.7.0 to 3.8.0 in /superset-frontend (#40610)
add 8731974e5c4 chore(deps-dev): bump @babel/preset-react from 7.28.5 to 7.29.7 in /superset-frontend (#40609)
add ce602fc5a8a chore(deps-dev): bump @babel/types from 7.29.0 to 7.29.7 in /superset-frontend (#40608)
add 3f0fbbaac96 chore(deps-dev): update @babel/types requirement from ^7.29.0 to ^7.29.7 in /superset-frontend/plugins/plugin-chart-pivot-table (#40605)
add 8beea849528 chore(deps-dev): bump @typescript-eslint/parser from 8.59.4 to 8.60.0 in /docs (#40600)
add 70aa96458ac chore(deps-dev): bump @babel/cli from 7.28.6 to 7.29.7 in /superset-frontend (#40599)
add f04221a06ca chore(deps-dev): bump webpack from 5.107.1 to 5.107.2 in /docs (#40597)
add 986148d9244 chore(deps-dev): bump typescript-eslint from 8.59.4 to 8.60.0 in /superset-websocket (#40596)
add 94092d2f720 chore(deps-dev): bump @babel/preset-typescript from 7.28.5 to 7.29.7 in /superset-frontend (#40604)
add 41059c68bba chore(deps-dev): bump @babel/plugin-transform-modules-commonjs from 7.28.6 to 7.29.7 in /superset-frontend (#40603)
add 861e668f743 chore(deps-dev): bump @babel/preset-env from 7.29.5 to 7.29.7 in /superset-frontend (#40601)
add 41da35e9db0 chore(deps-dev): bump typescript-eslint from 8.59.4 to 8.60.0 in /docs (#40598)
add 365914f1c76 chore(deps-dev): bump @typescript-eslint/eslint-plugin from 8.59.4 to 8.60.0 in /superset-websocket (#40595)
add c29591b3b1b chore(deps): update @babel/runtime requirement from ^7.29.2 to ^7.29.7 in /superset-frontend/packages/superset-ui-core (#40606)
add a6d2c954803 chore(deps): migrate MCP service JWT errors from authlib.jose to joserfc (#40582)
add 817a35f445d fix(mcp): deny deactivated user accounts in MCP authentication (#40631)
add c6faa50338b fix(cli): encrypt sqlalchemy_uri password on import_datasources (#31983) (#40584)
add 2abbb64e6bc feat(gsheets): restore public/private sheet selector (#40466)
add e2ed9896399 fix(reports): skip permalink when dashboard state has no anchor or filters (#40530)
add 052e567f775 fix: guard dynamic dispatch and bound a regex quantifier (#40547)
add ca8855dc037 fix(mcp): generic auth errors, required token expiry, and safer auth logging (#40646)
add aba6ea536cc fix(dashboard): prevent "undefined undefined" owner names in properties modal (#40528)
add ddb647cd3ae fix(dashboard): clear undo history (#40569)
add 88abd41c8b8 fix(sql-lab): prevent crash when host shell lacks useAppDispatch export (#40591)
add 7275116f4cd fix(world-map): preserve bubbles and exclude only null metrics from color scale (#39926)
add fc0245bdb06 fix(charts): show non-filterable columns in metric section for table … (#39524)
add 699e741c69d fix(time-comparison): shift offset filter when X-axis is adhoc Custom SQL (#40586)
add d26a7aac3dd fix(dashboard): hide Edit button in embedded dashboards (#40687)
add 4996d7c277f fix: avoid warning spam when default spinner SVG is missing (#40481)
add 093b43c7a58 fix(exports,email,logs): csv formula escaping, subject CRLF stripping, UTC log pruning (#40645)
add 1632b235ae8 fix(sqllab): surface stacktrace in SQL Lab error responses (#28248) (#40585)
add 24422c83114 test(histogram): metric filters require aggregation in buildQuery (#30330) (#40617)
add 242c27a9743 test(presto): 401 Unauthorized must surface as CONNECTION_ACCESS_DENIED_ERROR (#33554) (#40618)
add 1b8099811b8 fix(chart-list): sort by changed_on instead of last_saved_at (#39984)
add d2d46169bf6 fix(explore): tighten popover title-to-tabs spacing to 12px (#40410)
add 19c2b67d09a fix(websocket): validate last_id query param format (#40626)
add 86fa5bb46f0 feat(table v2): agGridTableChart add row numer column (#39284)
add 4d2b10d916e chore(excel): strip document metadata from Excel exports (#40661)
add b97d3ef520b fix(api,sql): use json_response in Api.query and log dialect fallback (#40644)
add 00dd31494d1 fix: sanitize URL sinks and trim sensitive log fields (#40546)
add 616c2432780 fix(deps): revert joserfc JWT error migration — fastmcp still uses authlib (#40688)
add 49f3dbba733 fix(dashboard): address post-approval review feedback on #40528 (#40685)
add 8508af3201c chore(key_value): prune expired entries from the key-value store (#40663)
add a9df2c7e5ea fix(mcp): address post-approval review feedback on auth logging PR #40646 (#40684)
add 3e589436fa6 fix(reports): sanitize error text in email notification template (#40641)
add 6eaee211aad fix(sqllab): require dataset match for raw query access (#40409)
add 17d1a45bc94 feat(ydb): switch to native YDB sqlglot dialect (#40170)
add 8c62f533d7c fix(core): restrict allowed CSS properties in sanitized HTML (#40627)
add 6abee0289b8 fix(reports): guard SUCCESS-state report execution against duplicate sends and stuck WORKING state (#40657)
add 9af6746dbe1 fix(models): HTML-escape data-controlled values in dashboard_link and Slice.icons (#40639)
add a2a369cb5c8 fix(charts): sanitize tooltip HTML across nvd3, rose and partition plugins (#40502)
add 3bbb35e8a33 ci(bashlib): drop the dead bc-based NONCE (perf + reliability) (#40691)
add c54990c861b fix(plugin-chart-ag-grid-table): validate filter values/operators in state converter (#40623)
add ac522ded1c4 fix(ssh-tunnel): validate server_address format (SSRF defense-in-depth) (#40665)
add 0b9764aed56 fix(mcp): honor AUTH_ROLE_ADMIN and warn on permission-less protected tools (#40659)
add 12bef03f4af fix(jinja): apply consistent escaping to url_param values from request args (#40633)
add df21fe65718 chore(mcp): return a generic error from the webdriver pool-stats endpoint (#40559)
add fa41769a08a fix(embedded): enforce configured allowed domains for postMessage origin (#40629)
add b9dc9d722e6 fix(export): sanitize user-supplied CSV export filename (charts + SQL Lab) (#40632)
add 8e4a460cc71 fix(charts): apply DISALLOWED_SQL_FUNCTIONS gate to adhoc expressions (#40568)
add faa76f67412 fix(embedding): add optional dataset allowlist to guest tokens (#39302)
add 725f5ed2a90 fix(api): enforce per-object ownership validation in chart, dataset, and report commands (#39303)
add f7f50a79770 fix(sqllab): quote CTAS target identifiers and validate tmp_table_name format (#40245)
add cf08a5ebf75 feat(docker): add environment-based debugger control (#40327)
add 3191b0fdcd5 fix: apply dashboard access check in related_objects endpoints (#40333)
add 61b32d1b7d0 fix(chart): standardize dashboard validation across chart create/update (#40336)
add 56fd991efde fix(dataset): unify validation for stored and adhoc SQL expressions (#40392)
add 77c2bed5f72 fix(dashboards): narrow datasets payload to callers with read access (#40396)
add b8a2f925ee4 fix(views): enforce per-chart access check in legacy form_data endpoint (#40497)
add e3ba85b1a5e fix(redirect): normalize browser-stripped whitespace before protocol-relative check (#40566)
add c914df5a67c ci: harden CI against Docker Hub registry flakes (retries + auth) (#40700)
add accc94da516 fix(users): show 0 for null login_count and fail_login_count (#40281)
add e5ff6de790b chore: correct typos in config.py and models_test.py comments (#40706)
add cb2a56d16e0 chore: guard recursive merge keys and invoke subprocess without a shell (#40558)
add e5c7200551a ci: gate expensive test workflows at the job level (#40718)
add 001834470b8 fix(mcp): escape LIKE wildcards in MCP list tool search filters (#40682)
add f4dfb7f0266 fix(mcp): fall back to form_data spatial query for Deck.gl charts (#40339)
add fcb1e299ace fix(nvd3): sanitize generateMultiLineTooltipContent output (#40612)
add 6ea4e227856 refactor(nvd3): extract testable generateAnnotationTooltipContent helper (#40620)
add 80ea36c852f fix(db_engine_specs): escape schema name in regex; document safe filter pattern (#40642)
add c373da1bb91 ci: add cancel-in-progress concurrency to PR helper workflows (#40725)
add 80a5f6b787e fix(calendar): Fix day offset in Calendar Heatmap visualization (#34564)
add 2be2246a003 chore(deps-dev): bump gevent from 24.2.1 to 26.4.0 (#40378)
add 43fde2fb07e fix(charts): enforce DISALLOWED_SQL_FUNCTIONS and DISALLOWED_SQL_TABLES at chart-data execution (#40567)
add 6a125bf774b fix(jinja): expose dialect-escaped companion value on get_filters() (#40531)
add 9d1bc6b2ccb fix(i18n): don't flag intentional string deletions as translation regressions (#40716)
add cf5307d0c6f ci: reduce Cypress parallelism from 6 shards to 2 (#40717)
add 5ba60d51fd0 ci: gate CodeQL analysis at the job level for docs-only PRs (#40724)
add 41572dbf9df fix(chart): restrict owner lookup to users with write access (#39304)
add 696705794b1 ci: gate docker image builds at the job level (#40723)
add 966c243db6f ci: drop removed Cypress shards from required status checks (#40770)
add aa547da9607 fix: remove registration_hash in the registrations API (#40643)
add bdb081329fb feat(websocket): validate WebSocket upgrade Origin against an allowlist (#40625)
add ff5e43c8a09 ci: add timeout-minutes to compute-heavy workflow jobs (#40743)
add 8dcc7e7eec2 ci: stable required-check anchors for skippable matrix test jobs (#40772)
add ddb09f468d8 fix(plugin-chart-ag-grid-table): enforce numeric bounds for range (BETWEEN) filters (#40607)
add 23d18743bdb fix(deck.gl): strip all JS-executed form_data keys when JavaScript controls are disabled (#40602)
add c505c70c52e fix(databases): do not render existing encrypted field value in edit mode (#40628)
add 75d94ff466a fix(SafeMarkdown): block script-executing link protocols regardless of EscapeMarkdownHtml (#40622)
add cd5bdf11acc fix(playwright): de-flake list-view delete and bulk-export specs (#39980)
add 9a31362fa5e fix(reports): stamp email subject date at send time, not import time (#40693)
add 7d69f76127a fix(mcp): API key authentication for MCP — transport, validation, and RBAC (#39604)
add 6f97d9817e1 fix(database): preserve engine_information when creating database connection (#38107)
add 80a3df3550e ci: run full Python-version matrix on push, current-only on PRs (#40722)
add 3f94c9db2d5 chore(deps): bump query-string from 9.3.1 to 9.4.0 in /superset-frontend (#40742)
add cbd731e6614 chore(deps-dev): bump webpack from 5.107.1 to 5.107.2 in /superset-frontend (#40741)
add 09cd2c26cdc chore(deps): bump react-map-gl from 8.1.0 to 8.1.1 in /superset-frontend (#40740)
add 6662529306e chore(deps): bump react-syntax-highlighter from 16.1.0 to 16.1.1 in /superset-frontend (#40739)
add 0ad09d5cd0e chore(deps): bump dompurify from 3.4.8 to 3.4.7 in /superset-frontend/packages/superset-ui-core (#40737)
add ddeec68c88a chore(deps): bump dompurify from 3.4.5 to 3.4.7 in /superset-frontend/plugins/legacy-preset-chart-nvd3 (#40735)
add 0d1b702ce8d feat(extensions): static supply-chain controls — denylist + version policy (#40668)
add 7d323dc0ae3 fix(filters): Enable decimal values in Range filter slider (#34742)
add 639866625db fix(echarts): Show full labels in bar chart tooltips (#34759)
add f5f4a415981 chore(deps-dev): bump @babel/register from 7.29.3 to 7.29.7 in /superset-frontend (#40757)
add 937eff6d52c chore(deps-dev): bump oxlint from 1.66.0 to 1.67.0 in /superset-frontend (#40755)
add 04939c94cc4 chore(deps-dev): bump @babel/node from 7.29.0 to 7.29.7 in /superset-frontend (#40752)
add 94c1a1b1f20 chore(deps-dev): bump @babel/runtime-corejs3 from 7.29.2 to 7.29.7 in /superset-frontend (#40751)
add ccce0cab187 chore(deps): bump content-disposition from 2.0.0 to 2.0.1 in /superset-frontend (#40750)
add 56f14230ee3 chore(reports): deprecate Slack v1, default ALERT_REPORT_SLACK_V2 to True, harden v2 tests
add 217487b9de9 test(reports): mock get_channels_with_search in slack token-callable test
add c44bfb6db09 fix(reports): make Slack v2 backoff retries actually fire on transient errors
add 9e946431dc3 docs(updating): rewrite slack v1 deprecation note in conventional one-liner style
add 00029019d43 refactor(reports): address review feedback on Slack v1 deprecation
This update added new revisions after undoing existing revisions.
That is to say, some revisions that were in the old version of the
branch are not in the new version. This situation occurs
when a user --force pushes a change and generates a repository
containing something like this:
* -- * -- B -- O -- O -- O (99ec152de05)
\
N -- N -- N refs/heads/claude/angry-bartik-10b01d (00029019d43)
You should already have received notification emails for all of the O
revisions, and so the following emails describe only the N revisions
from the common base, B.
Any revisions marked "omit" are not gone; other references still
refer to them. Any revisions marked "discard" are gone forever.
No new revisions were added by this update.
Summary of changes:
.asf.yaml | 9 +-
.github/workflows/bashlib.sh | 20 +-
.github/workflows/check-python-deps.yml | 13 +
.github/workflows/codeql-analysis.yml | 35 +-
.github/workflows/docker.yml | 54 +-
.github/workflows/github-action-validator.yml | 5 +
.github/workflows/labeler.yml | 5 +
.github/workflows/pr-lint.yml | 5 +
.github/workflows/pre-commit.yml | 6 +-
.github/workflows/superset-e2e.yml | 65 +-
.github/workflows/superset-extensions-cli.yml | 5 +-
.github/workflows/superset-frontend.yml | 6 +
.github/workflows/superset-playwright.yml | 54 +-
.../workflows/superset-python-integrationtest.yml | 85 +-
.github/workflows/superset-python-presto-hive.yml | 50 +-
.github/workflows/superset-python-unittest.yml | 56 +-
.github/workflows/superset-translations.yml | 10 +-
.github/workflows/superset-websocket.yml | 1 +
SECURITY.md | 2 +-
UPDATING.md | 19 +
docker/docker-bootstrap.sh | 18 +-
.../pythonpath_dev/superset_config_docker_light.py | 31 +
docs/admin_docs/installation/pypi.mdx | 9 +-
.../version-6.1.0/installation/pypi.mdx | 9 +-
.../contributing/development-setup.md | 2 +
docs/netlify.toml | 14 +-
docs/package.json | 6 +-
docs/yarn.lock | 184 +--
pyproject.toml | 7 +-
requirements/base.txt | 2 +-
requirements/development.txt | 6 +-
scripts/translations/backfill_po.py | 33 +
.../translations/check_translation_regression.py | 181 ++-
scripts/uv-pip-compile.sh | 23 +-
superset-frontend/.eslintrc.js | 2 +-
superset-frontend/cypress-base/package-lock.json | 498 +++---
superset-frontend/cypress-base/package.json | 6 +
superset-frontend/package-lock.json | 1649 ++++++++++----------
superset-frontend/package.json | 38 +-
.../packages/superset-core/package.json | 8 +-
.../superset-core/src/theme/GlobalStyles.tsx | 15 +
.../src/operators/boxplotOperator.ts | 2 +-
.../packages/superset-ui-core/package.json | 7 +-
.../src/components/ListViewCard/index.tsx | 3 +-
.../src/components/SafeMarkdown/SafeMarkdown.tsx | 49 +-
.../TableCollection/TableCollection.test.tsx | 6 +
.../src/components/TableCollection/index.tsx | 26 +-
.../src/connection/SupersetClientClass.ts | 3 +-
.../superset-ui-core/src/utils/html.test.tsx | 29 +
.../packages/superset-ui-core/src/utils/html.tsx | 46 +-
.../test/components/SafeMarkdown.test.tsx | 58 +
.../superset-ui-core/test/utils/tooltip.test.ts | 21 +-
superset-frontend/playwright.config.ts | 24 +
.../playwright/components/ListView/BulkSelect.ts | 84 +-
.../playwright/components/ListView/index.ts | 1 +
.../playwright/components/core/EditableTabs.ts | 18 +-
.../components/modals/DeleteConfirmationModal.ts | 32 +-
.../components/modals/EditDatasetModal.ts | 17 +
.../playwright/embedded-app/index.html | 95 ++
.../playwright/helpers/api/dashboard.ts | 50 +-
.../playwright/helpers/api/embedded.ts | 133 ++
.../playwright/helpers/api/requests.ts | 112 +-
superset-frontend/playwright/helpers/navigation.ts | 57 +
.../playwright/pages/ChartCreationPage.ts | 3 +-
.../playwright/pages/ChartListPage.ts | 38 +-
.../playwright/pages/CreateDatasetPage.ts | 3 +-
.../playwright/pages/DashboardListPage.ts | 36 +-
.../playwright/pages/DashboardPage.ts | 5 +-
.../playwright/pages/DatasetListPage.ts | 42 +-
superset-frontend/playwright/pages/EmbeddedPage.ts | 172 ++
superset-frontend/playwright/pages/SqlLabPage.ts | 37 +-
.../playwright/tests/chart/chart-list.spec.ts | 103 +-
.../tests/dashboard/dashboard-list.spec.ts | 137 +-
.../playwright/tests/dataset/dataset-list.spec.ts | 128 +-
.../tests/embedded/embedded-dashboard.spec.ts | 362 +++++
superset-frontend/playwright/utils/constants.ts | 20 +-
.../legacy-plugin-chart-calendar/src/utils.ts | 4 +-
.../src/vendor/cal-heatmap.ts | 27 +-
.../test/utils.test.ts | 125 +-
.../legacy-plugin-chart-partition/src/Partition.ts | 3 +-
.../plugins/legacy-plugin-chart-rose/src/Rose.ts | 13 +-
.../legacy-plugin-chart-world-map/src/WorldMap.ts | 5 +-
.../test/WorldMap.test.ts | 57 +-
.../plugins/legacy-preset-chart-nvd3/package.json | 2 +-
.../plugins/legacy-preset-chart-nvd3/src/utils.ts | 55 +-
.../legacy-preset-chart-nvd3/test/utils.test.ts | 174 +++
.../src/AgGridTableChart.tsx | 4 +
.../plugin-chart-ag-grid-table/src/consts.ts | 2 +
.../src/controlPanel.tsx | 18 +-
.../src/stateConversion.ts | 30 +-
.../src/styles/index.tsx | 6 +
.../src/transformProps.ts | 2 +
.../plugin-chart-ag-grid-table/src/types.ts | 2 +
.../src/utils/agGridFilterConverter.ts | 33 +-
.../src/utils/useColDefs.ts | 69 +-
.../test/controlPanel.test.tsx | 71 +
.../test/stateConversion.test.ts | 73 +
.../test/utils/agGridFilterConverter.test.ts | 61 +
.../test/utils/useColDefs.test.ts | 240 +++
.../BigNumberWithTrendline/transformProps.test.ts | 4 +-
.../src/Histogram/buildQuery.ts | 15 +-
.../src/Timeseries/transformProps.ts | 6 +-
.../plugin-chart-echarts/src/components/Echart.tsx | 7 +-
.../test/Histogram/buildQuery.test.ts | 81 +
.../test/Timeseries/transformProps.test.ts | 97 ++
.../src/plugin/controls/columns.tsx | 8 +-
.../src/plugin/controls/metrics.tsx | 8 +-
.../plugins/plugin-chart-pivot-table/package.json | 2 +-
.../plugin-chart-point-cluster-map/package.json | 2 +-
.../plugin-chart-table/src/controlPanel.tsx | 6 +-
.../plugin-chart-table/test/controlPanel.test.tsx | 71 +
.../src/SqlLab/components/EditorAutoSync/index.tsx | 2 +-
.../src/SqlLab/components/EditorWrapper/index.tsx | 2 +-
.../SqlLab/components/EditorWrapper/useKeywords.ts | 2 +-
.../components/ExploreCtasResultsButton/index.tsx | 2 +-
.../src/SqlLab/components/PopEditorTab/index.tsx | 2 +-
.../SqlLab/components/QueryAutoRefresh/index.tsx | 2 +-
.../SqlLab/components/QueryLimitSelect/index.tsx | 2 +-
.../src/SqlLab/components/QueryTable/index.tsx | 2 +-
.../src/SqlLab/components/ResultSet/index.tsx | 5 +-
.../SqlLab/components/SaveDatasetModal/index.tsx | 9 +-
.../src/SqlLab/components/SouthPane/index.tsx | 2 +-
.../src/SqlLab/components/SqlEditor/index.tsx | 2 +-
.../SqlLab/components/SqlEditorLeftBar/index.tsx | 2 +-
.../SqlLab/components/SqlEditorTabHeader/index.tsx | 2 +-
.../SqlEditorTopBar/useDatabaseSelector.ts | 2 +-
.../src/SqlLab/components/TableElement/index.tsx | 2 +-
.../SqlLab/components/TableExploreTree/index.tsx | 2 +-
.../components/TableExploreTree/useTreeData.ts | 2 +-
.../src/SqlLab/components/TablePreview/index.tsx | 2 +-
.../index.tsx => SqlLab/hooks/useAppDispatch.ts} | 23 +-
.../types.ts => SqlLab/hooks/useAppSelector.ts} | 10 +-
.../DatasourceEditor/DatasourceEditor.tsx | 3 +-
.../src/components/GenericLink/index.tsx | 4 +-
.../src/components/ListView/ListView.test.tsx | 5 +-
.../src/components/ListView/ListView.tsx | 19 +-
superset-frontend/src/components/ListView/utils.ts | 22 +-
.../dashboard/components/Header/Header.test.tsx | 15 +
.../src/dashboard/components/Header/index.tsx | 3 +-
.../dashboard/components/PropertiesModal/index.tsx | 20 +-
.../PropertiesModal/sections/AccessSection.tsx | 6 +-
.../components/PropertiesModal/utils.test.ts | 90 ++
.../dashboard/components/PropertiesModal/utils.ts | 81 +
.../dashboard/containers/DashboardPage.test.tsx | 35 +
.../src/dashboard/containers/DashboardPage.tsx | 2 +
superset-frontend/src/embedded/index.tsx | 30 +-
.../src/embedded/originValidation.test.ts | 112 ++
superset-frontend/src/embedded/originValidation.ts | 91 ++
.../ExploreChartHeader/ExploreChartHeader.test.tsx | 53 +-
.../controls/CollectionControl/index.tsx | 4 +-
.../controls/ControlPopover/ControlPopover.tsx | 1 +
.../DatabaseConnectionForm.test.tsx | 85 +
.../DatabaseConnectionForm/EncryptedField.test.tsx | 210 ++-
.../DatabaseConnectionForm/EncryptedField.tsx | 80 +-
.../OAuth2ClientField.test.tsx | 82 +
.../DatabaseConnectionForm/OAuth2ClientField.tsx | 78 +-
.../DatabaseConnectionForm/TableCatalog.test.tsx | 87 ++
.../DatabaseConnectionForm/TableCatalog.tsx | 18 +-
.../DatabaseModal/DatabaseConnectionForm/index.tsx | 112 +-
.../databases/DatabaseModal/SqlAlchemyForm.tsx | 5 +-
.../databases/DatabaseModal/index.test.tsx | 153 ++
.../src/features/databases/DatabaseModal/index.tsx | 61 +-
.../src/features/databases/DatabaseModal/styles.ts | 11 +-
superset-frontend/src/features/databases/types.ts | 4 +
.../AddDataset/DatasetPanel/DatasetPanel.test.tsx | 23 +
.../AddDataset/DatasetPanel/DatasetPanel.tsx | 2 +-
.../components/Range/RangeFilterPlugin.test.tsx | 159 +-
.../filters/components/Range/RangeFilterPlugin.tsx | 26 +
superset-frontend/src/middleware/asyncEvent.ts | 7 +-
.../pages/ChartList/ChartList.listview.test.tsx | 5 +-
superset-frontend/src/pages/ChartList/index.tsx | 7 +-
.../src/pages/DashboardList/index.tsx | 3 +
superset-frontend/src/pages/DatasetList/index.tsx | 6 +
.../UserRegistrations/UserRegistrations.test.tsx | 7 +-
.../src/pages/UserRegistrations/index.tsx | 14 -
superset-frontend/src/pages/UsersList/index.tsx | 4 +-
superset-frontend/src/types/bootstrapTypes.ts | 3 +
superset-frontend/src/utils/getOwnerName.test.ts | 12 +
superset-frontend/src/utils/getOwnerName.ts | 5 +-
superset-frontend/src/utils/navigationUtils.ts | 11 +-
superset-websocket/README.md | 19 +
superset-websocket/config.example.json | 3 +-
superset-websocket/package-lock.json | 260 +--
superset-websocket/package.json | 6 +-
superset-websocket/spec/index.test.ts | 153 ++
superset-websocket/src/config.ts | 9 +-
superset-websocket/src/index.ts | 56 +-
superset/charts/api.py | 20 +-
superset/charts/data/api.py | 7 +
superset/commands/chart/create.py | 5 +
superset/commands/chart/fave.py | 8 +-
superset/commands/chart/unfave.py | 8 +-
superset/commands/chart/update.py | 21 +-
superset/commands/chart/warm_up_cache.py | 19 +-
superset/commands/dashboard/delete.py | 5 +-
superset/commands/dataset/create.py | 8 +
superset/commands/dataset/duplicate.py | 8 +-
superset/commands/dataset/importers/v0.py | 18 +-
superset/commands/dataset/update.py | 51 +-
superset/commands/dataset/warm_up_cache.py | 12 +-
superset/commands/logs/prune.py | 5 +-
superset/commands/report/base.py | 46 +-
superset/commands/report/execute.py | 83 +-
superset/commands/tag/create.py | 35 +
superset/commands/tag/delete.py | 40 +-
superset/commands/tag/utils.py | 17 +-
superset/config.py | 20 +-
superset/connectors/sqla/models.py | 75 +-
superset/constants.py | 2 +
superset/daos/base.py | 43 +-
superset/daos/dashboard.py | 2 +-
superset/daos/database.py | 3 +-
superset/daos/key_value.py | 32 +
superset/daos/report.py | 50 +-
superset/dashboards/api.py | 26 +-
superset/databases/api.py | 2 +
superset/databases/schemas.py | 18 +-
superset/datasets/api.py | 2 +
superset/db_engine_specs/base.py | 6 +-
superset/db_engine_specs/presto.py | 6 +
superset/db_engine_specs/ydb.py | 2 +-
superset/embedded/view.py | 4 +
superset/extensions/metadb.py | 11 +-
superset/extensions/utils.py | 79 +
superset/jinja_context.py | 67 +-
.../key_value/commands}/__init__.py | 0
superset/key_value/commands/prune.py | 143 ++
superset/mcp_service/app.py | 8 +
superset/mcp_service/auth.py | 306 ++--
superset/mcp_service/bin/superset-mcp.js | 4 +-
superset/mcp_service/chart/chart_helpers.py | 153 ++
superset/mcp_service/chart/tool/get_chart_data.py | 25 +-
superset/mcp_service/chart/validation/pipeline.py | 6 +-
superset/mcp_service/common/schema_discovery.py | 95 ++
superset/mcp_service/composite_token_verifier.py | 199 +++
superset/mcp_service/constants.py | 2 +-
superset/mcp_service/jwt_verifier.py | 61 +-
superset/mcp_service/mcp_config.py | 189 ++-
superset/mcp_service/mcp_core.py | 55 +-
superset/mcp_service/middleware.py | 11 +-
superset/mcp_service/privacy.py | 5 +-
.../mcp_service/report}/__init__.py | 0
superset/mcp_service/{theme => report}/schemas.py | 198 +--
.../mcp_service/{tag => report}/tool/__init__.py | 8 +-
.../tool/get_report_info.py} | 81 +-
superset/mcp_service/report/tool/list_reports.py | 172 ++
.../mcp_service/screenshot/webdriver_config.py | 16 +-
superset/mcp_service/server.py | 10 +-
superset/mcp_service/storage.py | 4 +-
superset/mcp_service/system/tool/get_schema.py | 38 +-
superset/mcp_service/utils/error_sanitization.py | 44 +-
superset/mcp_service/utils/permissions_utils.py | 19 +-
superset/models/dashboard.py | 13 +-
superset/models/helpers.py | 99 +-
superset/models/slice.py | 8 +-
superset/models/sql_lab.py | 10 +-
superset/reports/notifications/email.py | 24 +-
superset/security/api.py | 30 +-
superset/security/guest_token.py | 15 +-
superset/security/manager.py | 247 ++-
superset/sql/execution/celery_task.py | 6 +-
superset/sql/parse.py | 45 +-
superset/sql_lab.py | 6 +-
superset/sqllab/api.py | 8 +
superset/sqllab/schemas.py | 14 +-
superset/sqllab/validators.py | 6 +-
superset/tasks/scheduler.py | 16 +
.../templates/superset}/loading.svg | Bin
superset/translations/requirements.txt | 5 +-
superset/utils/core.py | 3 +
superset/utils/csv.py | 7 +-
superset/utils/excel.py | 24 +
superset/utils/link_redirect.py | 14 +-
superset/views/api.py | 21 +-
superset/views/base.py | 45 +-
superset/views/base_api.py | 14 +-
superset/views/datasource/utils.py | 17 +-
superset/views/datasource/views.py | 24 +
superset/views/sql_lab/schemas.py | 7 +-
superset/views/sql_lab/views.py | 53 +-
superset/views/users/api.py | 4 +
superset/views/utils.py | 19 +-
tests/integration_tests/celery_tests.py | 138 +-
tests/integration_tests/charts/api_tests.py | 54 +
tests/integration_tests/charts/commands_tests.py | 23 +-
tests/integration_tests/dao/base_dao_test.py | 69 +
tests/integration_tests/dashboards/api_tests.py | 26 +
tests/integration_tests/datasets/commands_tests.py | 20 +-
tests/integration_tests/embedded/test_view.py | 33 +
.../commands/execute_dashboard_report_tests.py | 4 +-
tests/integration_tests/security_tests.py | 250 +++
tests/integration_tests/sqllab_tests.py | 34 +-
tests/integration_tests/superset_test_config.py | 1 +
tests/integration_tests/tags/commands_tests.py | 4 +
tests/unit_tests/charts/test_chart_data_api.py | 31 +
.../commands/chart/test_access_checks.py | 147 ++
.../commands/chart/warm_up_cache_test.py | 6 +
tests/unit_tests/commands/dataset/test_create.py | 9 +-
.../unit_tests/commands/dataset/test_duplicate.py | 103 ++
.../commands/dataset/test_warm_up_cache.py | 115 ++
tests/unit_tests/commands/dataset/update_test.py | 160 ++
.../unit_tests/commands/logs}/__init__.py | 0
tests/unit_tests/commands/logs/prune_test.py | 54 +
tests/unit_tests/commands/report/execute_test.py | 128 +-
.../commands/report/test_create_recipients.py | 14 +-
.../common/test_query_context_processor.py | 95 ++
tests/unit_tests/connectors/sqla/models_test.py | 237 ++-
.../databases/commands/importers/v1/import_test.py | 150 ++
tests/unit_tests/databases/schema_tests.py | 15 +
tests/unit_tests/db_engine_specs/test_base.py | 56 +
tests/unit_tests/db_engine_specs/test_presto.py | 24 +
tests/unit_tests/extensions/test_utils.py | 96 ++
tests/unit_tests/jinja_context_test.py | 137 ++
tests/unit_tests/key_value/prune_test.py | 168 ++
.../mcp_service/chart/test_chart_helpers.py | 651 ++++++++
.../unit_tests/mcp_service/report}/__init__.py | 0
.../mcp_service/report/tool}/__init__.py | 0
.../mcp_service/report/tool/test_report_tools.py | 739 +++++++++
.../mcp_service/system/tool/test_get_schema.py | 53 +
.../mcp_service/system/tool/test_mcp_core.py | 12 +-
tests/unit_tests/mcp_service/test_auth_api_key.py | 366 +++--
tests/unit_tests/mcp_service/test_auth_rbac.py | 14 +-
.../mcp_service/test_auth_user_resolution.py | 74 +-
.../mcp_service/test_composite_token_verifier.py | 345 ++++
tests/unit_tests/mcp_service/test_jwt_verifier.py | 66 +-
tests/unit_tests/mcp_service/test_mcp_config.py | 213 +++
tests/unit_tests/mcp_service/test_mcp_server.py | 23 +
tests/unit_tests/mcp_service/test_middleware.py | 6 +-
.../mcp_service/test_tool_search_transform.py | 14 +-
.../mcp_service/utils/test_error_sanitization.py | 70 +
.../mcp_service/utils/test_permissions_utils.py | 37 +-
tests/unit_tests/models/dashboard_test.py | 52 +
tests/unit_tests/models/helpers_test.py | 144 ++
tests/unit_tests/models/slice_test.py | 25 +-
.../reports/notifications/email_tests.py | 56 +-
.../scripts/translations/backfill_po_test.py | 33 +
.../check_translation_regression_test.py | 179 +++
tests/unit_tests/security/manager_test.py | 72 +
.../security/test_granular_export_permissions.py | 11 +
.../security/test_guest_token_dataset_allowlist.py | 273 ++++
.../common => tests/unit_tests/server}/__init__.py | 0
.../server/test_gunicorn_gevent_smoke.py | 162 ++
tests/unit_tests/sql/execution/test_celery_task.py | 60 +
tests/unit_tests/sql/parse_tests.py | 68 +-
tests/unit_tests/sql_lab_execution_context.py | 3 +-
.../common => tests/unit_tests/sqllab}/__init__.py | 0
tests/unit_tests/sqllab/api_test.py | 64 +
tests/unit_tests/test_sqllab_error_stacktrace.py | 282 ++++
tests/unit_tests/utils/csv_tests.py | 40 +
tests/unit_tests/utils/excel_tests.py | 37 +-
tests/unit_tests/utils/profiler_test.py | 74 +
tests/unit_tests/utils/test_core.py | 41 +
tests/unit_tests/utils/test_link_redirect.py | 29 +
tests/unit_tests/views/test_base.py | 34 +
tests/unit_tests/views/test_base_theme_helpers.py | 56 +-
tests/unit_tests/views/test_utils.py | 48 +
356 files changed, 16353 insertions(+), 3147 deletions(-)
create mode 100644 superset-frontend/playwright/embedded-app/index.html
create mode 100644 superset-frontend/playwright/helpers/api/embedded.ts
create mode 100644 superset-frontend/playwright/helpers/navigation.ts
create mode 100644 superset-frontend/playwright/pages/EmbeddedPage.ts
create mode 100644 superset-frontend/playwright/tests/embedded/embedded-dashboard.spec.ts
create mode 100644 superset-frontend/plugins/plugin-chart-ag-grid-table/test/stateConversion.test.ts
create mode 100644 superset-frontend/plugins/plugin-chart-echarts/test/Histogram/buildQuery.test.ts
copy superset-frontend/src/{components/TimePicker/index.tsx => SqlLab/hooks/useAppDispatch.ts} (61%)
copy superset-frontend/src/{components/FacePile/types.ts => SqlLab/hooks/useAppSelector.ts} (73%)
create mode 100644 superset-frontend/src/dashboard/components/PropertiesModal/utils.test.ts
create mode 100644 superset-frontend/src/dashboard/components/PropertiesModal/utils.ts
create mode 100644 superset-frontend/src/embedded/originValidation.test.ts
create mode 100644 superset-frontend/src/embedded/originValidation.ts
create mode 100644 superset-frontend/src/features/databases/DatabaseModal/DatabaseConnectionForm/DatabaseConnectionForm.test.tsx
create mode 100644 superset-frontend/src/features/databases/DatabaseModal/DatabaseConnectionForm/TableCatalog.test.tsx
copy {superset-core/src/superset_core/common => superset/key_value/commands}/__init__.py (100%)
create mode 100644 superset/key_value/commands/prune.py
create mode 100644 superset/mcp_service/composite_token_verifier.py
copy {superset-core/src/superset_core/common => superset/mcp_service/report}/__init__.py (100%)
copy superset/mcp_service/{theme => report}/schemas.py (58%)
copy superset/mcp_service/{tag => report}/tool/__init__.py (86%)
copy superset/mcp_service/{query/tool/get_query_info.py => report/tool/get_report_info.py} (51%)
create mode 100644 superset/mcp_service/report/tool/list_reports.py
copy {superset-frontend/packages/superset-ui-core/src/components/assets/images => superset/templates/superset}/loading.svg (100%)
create mode 100644 tests/unit_tests/commands/chart/test_access_checks.py
create mode 100644 tests/unit_tests/commands/dataset/test_duplicate.py
create mode 100644 tests/unit_tests/commands/dataset/test_warm_up_cache.py
copy {superset-core/src/superset_core/common => tests/unit_tests/commands/logs}/__init__.py (100%)
create mode 100644 tests/unit_tests/commands/logs/prune_test.py
create mode 100644 tests/unit_tests/extensions/test_utils.py
create mode 100644 tests/unit_tests/key_value/prune_test.py
copy {superset-core/src/superset_core/common => tests/unit_tests/mcp_service/report}/__init__.py (100%)
copy {superset-core/src/superset_core/common => tests/unit_tests/mcp_service/report/tool}/__init__.py (100%)
create mode 100644 tests/unit_tests/mcp_service/report/tool/test_report_tools.py
create mode 100644 tests/unit_tests/mcp_service/test_composite_token_verifier.py
create mode 100644 tests/unit_tests/mcp_service/utils/test_error_sanitization.py
create mode 100644 tests/unit_tests/models/dashboard_test.py
create mode 100644 tests/unit_tests/scripts/translations/check_translation_regression_test.py
create mode 100644 tests/unit_tests/security/test_guest_token_dataset_allowlist.py
copy {superset-core/src/superset_core/common => tests/unit_tests/server}/__init__.py (100%)
create mode 100644 tests/unit_tests/server/test_gunicorn_gevent_smoke.py
copy {superset-core/src/superset_core/common => tests/unit_tests/sqllab}/__init__.py (100%)
create mode 100644 tests/unit_tests/sqllab/api_test.py
create mode 100644 tests/unit_tests/test_sqllab_error_stacktrace.py
create mode 100644 tests/unit_tests/utils/profiler_test.py
create mode 100644 tests/unit_tests/views/test_utils.py