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/10 16:10:33 UTC
(superset) branch claude/subdirectory-helpers-tdd updated (a488b8894d1 -> 9f916c973c0)
This is an automated email from the ASF dual-hosted git repository.
sadpandajoe pushed a change to branch claude/subdirectory-helpers-tdd
in repository https://gitbox.apache.org/repos/asf/superset.git
from a488b8894d1 fix(tags): apply ensureAppRoot to tag list asset links
add 7f452e40966 chore(deps): bump @ant-design/icons from 6.2.3 to 6.2.5 in /docs (#40792)
add 5a6306983e5 docs: add social media links to website footer and README (#38108)
add 4715cfd3725 chore(deps-dev): bump eslint-plugin-prettier from 5.5.5 to 5.5.6 in /docs (#40791)
add 2babb480818 chore(deps): bump ioredis from 5.10.1 to 5.11.0 in /superset-websocket (#40734)
add 3d7021fdf95 chore(deps): bump hot-shots from 14.3.1 to 15.0.0 in /superset-websocket (#40789)
add 151df43d9d0 fix(docker): prevent static asset 404s by waiting for webpack dev server (#38161)
add 6b0d7479399 fix: cache warmup using WebDriver for reliable authentication (#38449)
add 381b99ae84b fix(csv): respect CSV_EXPORT config for decimal separator and delimiter (#38170)
add b85a2cdab15 fix: ODPS (MaxCompute) data source table preview failed (#38174)
add 84aaaaa6b08 fix(mcp): filter sensitive database columns from list_databases loaded-metadata (#40771)
add ef7379c47e3 chore(mcp): remove low-value list/info tools that fail agent-native policy (#40690)
add 6348aa19173 chore(deps-dev): update taos-ws-py requirement from >=0.3.8 to >=0.6.9 (#40831)
add d3f07a7ba54 chore(deps-dev): update playwright requirement from <2,>=1.37.0 to >=1.60.0,<2 (#40829)
add 2463eb65b1c chore(deps-dev): bump python-ldap from 3.4.5 to 3.4.7 (#40827)
add 9da45363542 chore(deps-dev): update oceanbase-py requirement from >=0.0.1 to >=0.0.1.2 (#40824)
add 849f297e9d2 chore(deps-dev): update sqlalchemy-vertica-python requirement from <0.7,>=0.5.9 to >=0.6.3,<0.7 (#40826)
add 138e405cb60 chore(deps): bump xlsxwriter from 3.0.9 to 3.2.9 (#40825)
add c0a12f4cfb5 chore(deps-dev): update sqlalchemy-kusto requirement from <4,>=3.0.0 to >=3.1.2,<4 (#40828)
add 9bb700ff0df chore(deps-dev): bump concurrently from 9.2.1 to 10.0.0 in /superset-frontend (#40798)
add 5da63d716be fix(toasts): stop the toast overlay from covering controls behind it (#40805)
add 06f95f53623 refactor(explore): migrate Explore Controls from react-dnd to @dnd-kit (#37880)
add 21189ae130a fix(dashboard): update browser tab title when dashboard is renamed (#40730)
add 7c7ab88a602 feat(ListView): expose expandable prop (#40765)
add dc423b22b31 feat(embedded): support themeMode URL param for initial theme (#40760)
add a5fe47ee715 docs(footer): render social icons as uniform white (#40854)
add b4eda37fbf9 chore(deps-dev): bump baseline-browser-mapping from 2.10.32 to 2.10.33 in /superset-frontend (#40849)
add 983f2818b0e chore(deps-dev): bump @swc/plugin-emotion from 14.10.0 to 14.12.0 in /superset-frontend (#40848)
add c5d795c1f11 chore(deps): bump react-syntax-highlighter from 16.1.0 to 16.1.1 in /superset-frontend (#40847)
add 709fd52b0b3 chore(deps-dev): bump tsx from 4.22.3 to 4.22.4 in /superset-frontend (#40845)
add 534d2191ffe chore(deps): bump react-draggable from 4.5.0 to 4.6.0 in /superset-frontend (#40844)
add c6ecaf9642b chore(deps): bump js-yaml from 4.1.1 to 4.2.0 in /docs (#40843)
add 228ac0d5687 chore(deps): bump baseline-browser-mapping from 2.10.32 to 2.10.33 in /docs (#40842)
add ba6e9cc90fa chore(deps-dev): bump eslint from 10.4.0 to 10.4.1 in /superset-websocket (#40840)
add 507cf936877 test(dashboard): API-created dashboards should link charts from position_json (#32966) (#40816)
add 911bb9dcdac fix: harden ZIP safety checks (total-size cap, zero-division guard) and extension path matching (#40664)
add 580be2cf32d fix(extensions-cli): constrain backend include patterns to the backend directory (#40593)
add e9e92451120 test(mixed-chart): dashboard filters should reach both Mixed chart queries (#29519) (#40818)
add 8fdabc44f50 chore(deps): update react-draggable requirement from ^4.5.0 to ^4.6.0 in /superset-frontend/packages/superset-ui-core (#40841)
add 1e8438a478f test(dashboard): migrate favorite toggle Cypress spec to RTL (#40872)
add fe9818226d7 fix(viz): gate stacktrace behind SHOW_STACKTRACE and allowlist resample method (#40636)
add 8eda626466d fix: raise random_key entropy and add expiry to async query tokens (#40638)
add 837f41986d5 fix: reject default guest/async JWT secrets at startup (#40649)
add 3afbb48188b fix(uploads,dao): add zip-safety check to columnar reader and cap DAO page size (#40637)
add fb0e7fecafa ci: authenticate Docker Hub pulls for service containers (#40875)
add 1188cfef1d4 ci: make Docker-build npm ci resilient to transient network blips (#40874)
add c58408d76c4 fix(revert 40875): "ci: authenticate Docker Hub pulls for service containers" failed (#40879)
add d7ddf2023da fix(theme): SDK theme config overrides dashboard-level theme in embedded mode (#40763)
add 2f71771b561 fix(sqllab): prevent corrupted query state from blocking SQL Lab access (#40580)
add 56c856e802d fix(explore): require Update Chart for Matrixify dimension changes (#40851)
add 3259a4a781e fix(translation): update german translation for slider range (#40902)
add 443fd7bcee5 fix(assets): Support uploading tags using the assets import endpoint (#38343)
add 9105adc67b2 fix(mcp): return a generic message when a request is unauthenticated (#40861)
add a32b7b15234 fix(migrations): replay user_favorite_tag migration for 3.0.x upgraders (#38157)
add f70cd8b5b89 feat(embedded-sdk): add fetchGuestToken timeout and clean up refresh timer (#40870)
add 62084f4015e feat(websocket): improve operational logging and crash safety (#40868)
add 7b1e1e5668a fix(charts): route CSV result format through the escaping CSV writer (#40859)
add 95d46073cbe feat(websocket): add backpressure handling for slow consumers (#40857)
add b64dd4af4a1 fix(mcp): handle JWKS fetch network errors during token verification (#40869)
add 0133ebc9f26 feat(mcp): log successful JWT authentication events (#40864)
add 58d29e07797 chore(deps-dev): bump concurrently from 10.0.0 to 10.0.3 in /superset-frontend (#40897)
add 6681ab571d8 perf(websocket): yield to the event loop while processing large event batches (#40866)
add bf9ad4d2ba3 fix: set charset via content_type to avoid malformed Content-Type headers (#40658)
add 17fb7a7c757 chore(helm): bump app version to 6.1.0 (#40862)
add 7a3b8f49c7b chore(deps): bump actions/checkout from 6.0.2 to 6.0.3 (#40892)
add 6311e2c315e fix: use pd.to_numeric in df_metrics_to_num to handle string-encoded numerics from ClickHouse (#40190)
add f51736437d0 chore(deps): bump shell-quote from 1.8.3 to 1.8.4 in /docs (#40910)
add efa88b9b7f4 chore(deps-dev): bump eslint-import-resolver-typescript from 4.4.4 to 4.4.5 in /superset-frontend (#40899)
add 39490894389 chore(deps-dev): bump oxlint from 1.67.0 to 1.68.0 in /superset-frontend (#40898)
add 065578e48a5 fix(commands,api): enforce command validation, sanitize export filename/token, set cache TTLs (#40655)
add 336384bc673 chore(deps): bump react-map-gl from 8.1.0 to 8.1.1 in /superset-frontend (#40896)
add 8117488fd82 feat(websocket): add configurable per-channel and total connection limits (#40856)
add f9ba11961ad chore(deps-dev): bump @typescript-eslint/eslint-plugin from 8.60.0 to 8.60.1 in /superset-frontend (#40895)
add ff4783f1e43 chore(deps): bump github/codeql-action from 4.36.0 to 4.36.1 (#40894)
add 2d1b17d1ca8 chore(deps-dev): bump @typescript-eslint/parser from 8.60.0 to 8.60.1 in /docs (#40893)
add eeaa213475b chore(deps): update react requirement from ^19.2.6 to ^19.2.7 in /superset-frontend/plugins/legacy-plugin-chart-chord (#40890)
add 9b4aaaa0808 chore(deps-dev): bump @typescript-eslint/parser from 8.60.0 to 8.60.1 in /superset-websocket (#40889)
add ab0fa5c3c87 test(dashboard): add regression tests for certification field clearing (#40758)
add 76f334f252e fix(i18n): stop fuzzy-matching new strings so adding one doesn't fail babel-extract (#40909)
add c88438ad35d chore(deps-dev): bump typescript-eslint from 8.60.0 to 8.60.1 in /superset-websocket (#40887)
add 88ea96d4172 chore(deps-dev): bump typescript-eslint from 8.60.0 to 8.60.1 in /docs (#40891)
add a0cf7984098 fix(embedded): add Sec-Fetch-Dest defense-in-depth check on the embedded view (#40667)
add 568f34d6d8b fix(mcp): enforce audience, algorithm, issuer binding, and token scopes (strict mode) (#40653)
add 004101a7520 fix(rls): apply standard datasource access checks in RLS rule commands (#40650)
add 00e3682aaf1 fix(dashboard): URL-encode native_filters in permalink redirect (#40660)
add 543ad04ca05 chore(deps): bump pyarrow from 20.0.0 to 24.0.0 (#39756)
add d51753dfdcf chore(lint): convert reactify.tsx to function component (#39458)
add c0e78f39d7b fix: replace deprecated appbuilder.app with current_app (#40876)
add 1bfdb19e889 test(dashboard): RTL coverage for native filter modal and sidebar (#40778)
add 0a1e51f542a fix(schemas): tighten guest dataset fields, external_url protocols, ssh creds, prophet bounds (#40640)
add 08b8bdecbd4 fix(charts): tighten chart schema input validation (query_context JSON, prophet/rolling bounds) (#40634)
add 2b584113919 chore(deps): bump ag-grid-react from 35.3.0 to 35.3.1 in /superset-frontend (#40928)
add 3d1253c9925 build(major,dev-deps): upgrade Storybook from v8 to v10 (#40713)
add 9f916c973c0 Merge branch 'master' into claude/subdirectory-helpers-tdd
No new revisions were added by this update.
Summary of changes:
.github/dependabot.yml | 28 -
.github/workflows/bump-python-package.yml | 3 +-
.github/workflows/check-python-deps.yml | 2 +-
.github/workflows/check_db_migration_confict.yml | 2 +-
.github/workflows/claude.yml | 20 +-
.github/workflows/codeql-analysis.yml | 8 +-
.github/workflows/dependency-review.yml | 4 +-
.github/workflows/docker.yml | 8 +-
.github/workflows/embedded-sdk-release.yml | 6 +-
.github/workflows/embedded-sdk-test.yml | 6 +-
.github/workflows/generate-FOSSA-report.yml | 2 +-
.github/workflows/github-action-validator.yml | 5 +-
.github/workflows/issue_creation.yml | 3 +-
.github/workflows/latest-release-tag.yml | 46 +-
.github/workflows/license-check.yml | 6 +-
.github/workflows/pr-lint.yml | 5 +-
.github/workflows/pre-commit.yml | 10 +-
.github/workflows/release.yml | 4 +-
.github/workflows/showtime-trigger.yml | 6 +-
.github/workflows/superset-app-cli.yml | 2 +-
.github/workflows/superset-docs-deploy.yml | 8 +-
.github/workflows/superset-docs-verify.yml | 14 +-
.github/workflows/superset-e2e.yml | 38 +-
.github/workflows/superset-extensions-cli.yml | 2 +-
.github/workflows/superset-frontend.yml | 4 +-
.github/workflows/superset-helm-lint.yml | 4 +-
.github/workflows/superset-helm-release.yml | 2 +-
.github/workflows/superset-playwright.yml | 22 +-
.../workflows/superset-python-integrationtest.yml | 8 +-
.github/workflows/superset-python-presto-hive.yml | 6 +-
.github/workflows/superset-python-unittest.yml | 4 +-
.github/workflows/superset-translations.yml | 10 +-
.github/workflows/superset-websocket.yml | 2 +-
.github/workflows/supersetbot.yml | 4 +-
.github/workflows/tag-release.yml | 15 +-
.github/workflows/tech-debt.yml | 4 +-
Dockerfile | 7 +
README.md | 5 +
UPDATING.md | 18 +
docker-compose.yml | 25 +
docs/admin_docs/configuration/cache.mdx | 33 +
docs/docusaurus.config.ts | 17 +
docs/i18n/en/docusaurus-theme-classic/footer.json | 2 +-
docs/package.json | 12 +-
docs/src/styles/main.css | 52 +-
docs/static/img/community/reddit-symbol.svg | Bin 0 -> 1995 bytes
docs/static/img/community/slack-symbol.svg | Bin 0 -> 1911 bytes
docs/yarn.lock | 211 +-
helm/superset/Chart.yaml | 4 +-
helm/superset/README.md | 2 +-
pyproject.toml | 17 +-
requirements/base.in | 2 +-
requirements/base.txt | 4 +-
requirements/development.txt | 6 +-
scripts/translations/babel_update.sh | 13 +-
.../translations/check_translation_regression.py | 29 +-
superset-embedded-sdk/README.md | 116 +-
.../src/guestTokenRefresh.test.ts | 8 +
superset-embedded-sdk/src/guestTokenRefresh.ts | 1 +
superset-embedded-sdk/src/index.ts | 81 +-
.../src/withTimeout.test.ts | 28 +-
.../src/withTimeout.ts | 37 +-
.../src/superset_extensions_cli/cli.py | 24 +-
superset-extensions-cli/tests/test_cli_build.py | 150 +
superset-frontend/.storybook/{main.js => main.mjs} | 38 +-
superset-frontend/.storybook/preview.jsx | 6 +-
.../.storybook/shared/ResizableChartDemo.tsx | 2 +-
.../cypress/e2e/dashboard/actions.test.js | 67 -
.../cypress-base/cypress/e2e/dashboard/utils.ts | 12 -
superset-frontend/jest.config.js | 2 +-
superset-frontend/package-lock.json | 35271 ++++++++-----------
superset-frontend/package.json | 41 +-
.../packages/superset-core/src/theme/types.ts | 6 +
.../src/shared-controls/matrixifyControls.tsx | 1 -
.../packages/superset-ui-core/package.json | 8 +-
.../src/chart/components/reactify.tsx | 147 +-
.../AutoComplete/AutoComplete.stories.tsx | 2 +-
.../components/Breadcrumb/Breadcrumb.stories.tsx | 2 +-
.../components/CachedLabel/CachedLabel.stories.tsx | 4 +-
.../src/components/Checkbox/Checkbox.stories.tsx | 2 +-
.../components/EmptyState/EmptyState.stories.tsx | 2 +-
.../src/components/FaveStar/FaveStar.stories.tsx | 2 +-
.../src/components/Grid/Grid.stories.tsx | 2 +-
.../components/IconButton/IconButton.stories.tsx | 2 +-
.../src/components/Input/Input.stories.tsx | 2 +-
.../src/components/Label/Label.stories.tsx | 4 +-
.../src/components/Layout/Layout.stories.tsx | 2 +-
.../ListViewCard/ListViewCard.stories.tsx | 2 +-
.../src/components/Modal/Modal.tsx | 22 +-
.../superset-ui-core/src/components/Modal/types.ts | 2 +-
.../src/components/Radio/Radio.stories.tsx | 2 +-
.../SafeMarkdown/SafeMarkdown.stories.tsx | 2 +-
.../src/components/Skeleton/Skeleton.stories.tsx | 2 +-
.../src/components/Switch/Switch.stories.tsx | 2 +-
.../src/components/Table/Table.stories.tsx | 4 +-
.../ActionCell/ActionCell.stories.tsx | 2 +-
.../Table/cell-renderers/ActionCell/fixtures.ts | 2 +-
.../BooleanCell/BooleanCell.stories.tsx | 2 +-
.../ButtonCell/ButtonCell.stories.tsx | 4 +-
.../cell-renderers/NullCell/NullCell.stories.tsx | 2 +-
.../NumericCell/NumericCell.stories.tsx | 2 +-
.../cell-renderers/TimeCell/TimeCell.stories.tsx | 2 +-
.../src/components/Table/index.tsx | 2 +
.../TableCollection/TableCollection.stories.tsx | 2 +-
.../src/components/TableCollection/index.tsx | 5 +-
.../TimezoneSelector/TimezoneSelector.stories.tsx | 2 +-
.../src/components/Tree/Tree.stories.tsx | 2 +-
.../components/TreeSelect/TreeSelect.stories.tsx | 2 +-
.../components/Typography/Typography.stories.tsx | 2 +-
.../src/components/Upload/Upload.stories.tsx | 2 +-
.../test/chart/components/reactify.test.tsx | 89 +-
...ec.ts => mixed-chart-dashboard-filters.spec.ts} | 175 +-
.../plugins/legacy-plugin-chart-chord/package.json | 2 +-
.../plugin-chart-point-cluster-map/package.json | 2 +-
superset-frontend/spec/helpers/testing-library.tsx | 7 +
.../SqlLab/components/TabbedSqlEditors/index.tsx | 19 +-
.../src/components/CrudThemeProvider.test.tsx | 55 +
.../src/components/CrudThemeProvider.tsx | 19 +-
.../components/ErrorMessage/ErrorAlert.stories.tsx | 2 +-
.../src/components/ListView/ListView.tsx | 4 +
.../MessageToasts/ToastPresenter.test.tsx | 10 +
.../components/MessageToasts/ToastPresenter.tsx | 4 +-
.../RowCountLabel/RowCountLabel.stories.tsx | 4 +-
.../src/components/Tag/Tag.stories.tsx | 2 +-
.../src/components/TagsList/TagsList.stories.tsx | 2 +-
.../actions/dashboardState.certification.test.ts | 127 +
.../DashboardBuilder/DashboardWrapper.test.tsx | 53 +-
.../dashboard/components/Header/Header.test.tsx | 29 +
.../nativeFilters/FilterBar/FilterBar.test.tsx | 58 +
.../FiltersConfigModal/FiltersConfigModal.test.tsx | 149 +-
.../FiltersConfigModal/NativeFiltersModal.test.tsx | 28 +-
.../dashboard/containers/DashboardPage.test.tsx | 191 +-
.../src/dashboard/containers/DashboardPage.tsx | 24 +-
.../src/embedded/EmbeddedContextProviders.tsx | 5 +-
.../src/embedded/getInitialThemeMode.test.ts | 66 +
.../embedded/getInitialThemeMode.ts} | 27 +-
.../explore/components/ControlHeader.stories.tsx | 4 +-
.../DatasourcePanelDragOption.test.tsx | 16 +-
.../DatasourcePanelDragOption/index.tsx | 44 +-
.../ExploreContainer/ExploreContainer.test.tsx | 120 +-
.../ExploreContainer/ExploreDndContext.test.tsx | 125 +
.../ExploreContainer/ExploreDndContext.tsx | 244 +
.../explore/components/ExploreContainer/index.tsx | 81 +-
.../components/controls/ContourControl/index.tsx | 2 +
.../DndColumnMetricSelect.test.tsx | 273 +-
.../DndColumnSelect.test.tsx | 24 +-
.../DndColumnSelectControl/DndColumnSelect.tsx | 5 +
.../DndFilterSelect.test.tsx | 329 +-
.../DndColumnSelectControl/DndFilterSelect.tsx | 2 +
.../DndMetricSelect.test.tsx | 258 +-
.../DndColumnSelectControl/DndMetricSelect.tsx | 5 +
.../DndColumnSelectControl/DndSelectLabel.test.tsx | 9 +-
.../DndColumnSelectControl/DndSelectLabel.tsx | 83 +-
.../DndColumnSelectControl/OptionWrapper.test.tsx | 55 +-
.../DndColumnSelectControl/OptionWrapper.tsx | 90 +-
.../DndColumnSelectControl/dndTestUtils.ts | 120 +
.../AdhocFilterOption/AdhocFilterOption.test.tsx | 2 +-
.../OptionControls/OptionControls.test.tsx | 21 +-
.../components/controls/OptionControls/index.tsx | 109 +-
.../DatasetPanel/DatasetPanel.stories.tsx | 2 +-
.../components/Range/RangeFilterPlugin.stories.tsx | 2 +-
.../Select/SelectFilterPlugin.stories.tsx | 2 +-
superset-frontend/src/pages/SqlLab/index.tsx | 40 +-
superset-frontend/src/theme/ThemeController.ts | 15 +
superset-frontend/src/theme/ThemeProvider.tsx | 9 +-
.../src/theme/tests/ThemeController.test.ts | 18 +
.../src/theme/tests/ThemeProvider.test.tsx | 1 +
superset-websocket/Dockerfile | 14 +-
superset-websocket/package-lock.json | 381 +-
superset-websocket/package.json | 10 +-
superset-websocket/spec/index.test.ts | 312 +-
superset-websocket/src/config.ts | 41 +
superset-websocket/src/index.ts | 171 +-
superset-websocket/src/logger.ts | 1 +
superset/async_events/async_query_manager.py | 13 +-
superset/charts/api.py | 3 +-
superset/charts/client_processing.py | 13 +-
superset/charts/data/api.py | 9 +-
superset/charts/schemas.py | 66 +-
.../chart/data/create_async_job_command.py | 5 +
superset/commands/dashboard/create.py | 13 +-
superset/commands/dashboard/filter_state/create.py | 9 +-
.../commands/database/uploaders/columnar_reader.py | 45 +
superset/commands/explore/form_data/create.py | 11 +-
superset/commands/export/assets.py | 18 +-
superset/commands/security/create.py | 2 +
superset/commands/security/delete.py | 9 +-
superset/commands/security/exceptions.py | 10 +-
superset/commands/security/update.py | 2 +
superset/commands/security/utils.py | 42 +
superset/commands/streaming_export/base.py | 67 +-
superset/commands/temporary_cache/create.py | 1 +
superset/commands/temporary_cache/delete.py | 1 +
superset/commands/temporary_cache/update.py | 1 +
superset/common/utils/dataframe_utils.py | 10 +-
superset/config.py | 52 +-
superset/constants.py | 1 +
superset/daos/base.py | 15 +-
superset/daos/database.py | 75 +
superset/dashboards/api.py | 6 +-
superset/dashboards/schemas.py | 81 +-
superset/databases/api.py | 23 +-
superset/databases/schemas.py | 9 +-
superset/datasets/api.py | 4 +-
superset/db_engine_specs/__init__.py | 8 +
superset/db_engine_specs/base.py | 4 +
superset/db_engine_specs/odps.py | 201 +
superset/embedded/view.py | 14 +
superset/extensions/utils.py | 6 +-
superset/initialization/__init__.py | 53 +-
superset/key_value/utils.py | 31 +-
superset/mcp_service/action_log/schemas.py | 302 -
superset/mcp_service/action_log/tool/__init__.py | 24 -
.../action_log/tool/get_action_log_info.py | 97 -
.../action_log/tool/list_action_logs.py | 152 -
superset/mcp_service/app.py | 50 +-
superset/mcp_service/auth.py | 178 +-
superset/mcp_service/common/schema_discovery.py | 85 +-
superset/mcp_service/constants.py | 4 +-
superset/mcp_service/css_template/schemas.py | 280 -
superset/mcp_service/css_template/tool/__init__.py | 24 -
.../css_template/tool/get_css_template_info.py | 108 -
.../css_template/tool/list_css_templates.py | 150 -
superset/mcp_service/jwt_verifier.py | 135 +-
superset/mcp_service/mcp_core.py | 12 +
superset/mcp_service/plugin/dao.py | 23 -
superset/mcp_service/plugin/schemas.py | 213 -
superset/mcp_service/plugin/tool/__init__.py | 24 -
.../mcp_service/plugin/tool/get_plugin_info.py | 101 -
superset/mcp_service/plugin/tool/list_plugins.py | 123 -
superset/mcp_service/screenshot/webdriver_pool.py | 6 +-
superset/mcp_service/system/tool/get_schema.py | 55 +-
superset/mcp_service/theme/__init__.py | 16 -
superset/mcp_service/theme/schemas.py | 305 -
superset/mcp_service/theme/tool/__init__.py | 24 -
superset/mcp_service/theme/tool/get_theme_info.py | 116 -
superset/mcp_service/theme/tool/list_themes.py | 147 -
...ae2559c05_replay_user_favorite_tag_migration.py | 81 +
superset/models/sql_lab.py | 17 +-
superset/queries/saved_queries/api.py | 3 +-
superset/result_set.py | 34 +-
superset/row_level_security/api.py | 21 +-
superset/semantic_layers/mapper.py | 7 +-
superset/sql/parse.py | 28 +
superset/sql_lab.py | 13 +
superset/tasks/cache.py | 204 +-
superset/templates/superset/spa.html | 2 +-
superset/themes/api.py | 3 +-
superset/translations/ar/LC_MESSAGES/messages.po | 4 +
superset/translations/ca/LC_MESSAGES/messages.po | 4 +
superset/translations/cs/LC_MESSAGES/messages.po | 4 +
superset/translations/de/LC_MESSAGES/messages.po | 6 +-
superset/translations/en/LC_MESSAGES/messages.po | 4 +
superset/translations/es/LC_MESSAGES/messages.po | 4 +
superset/translations/fa/LC_MESSAGES/messages.po | 4 +
superset/translations/fi/LC_MESSAGES/messages.po | 4 +
superset/translations/fr/LC_MESSAGES/messages.po | 4 +
superset/translations/it/LC_MESSAGES/messages.po | 4 +
superset/translations/ja/LC_MESSAGES/messages.po | 4 +
superset/translations/ko/LC_MESSAGES/messages.po | 4 +
superset/translations/lv/LC_MESSAGES/messages.po | 4 +
superset/translations/messages.pot | 4 +
superset/translations/mi/LC_MESSAGES/messages.po | 4 +
superset/translations/nl/LC_MESSAGES/messages.po | 4 +
superset/translations/pl/LC_MESSAGES/messages.po | 4 +
superset/translations/pt/LC_MESSAGES/messages.po | 4 +
.../translations/pt_BR/LC_MESSAGES/messages.po | 4 +
superset/translations/ru/LC_MESSAGES/messages.po | 4 +
superset/translations/sk/LC_MESSAGES/messages.po | 4 +
superset/translations/sl/LC_MESSAGES/messages.po | 4 +
superset/translations/th/LC_MESSAGES/messages.po | 4 +
superset/translations/tr/LC_MESSAGES/messages.po | 4 +
superset/translations/uk/LC_MESSAGES/messages.po | 4 +
superset/translations/zh/LC_MESSAGES/messages.po | 4 +
.../translations/zh_TW/LC_MESSAGES/messages.po | 4 +
superset/utils/core.py | 38 +-
superset/utils/csv.py | 15 +-
superset/utils/schema.py | 34 +-
superset/utils/screenshots.py | 16 +-
superset/utils/webdriver.py | 94 +-
superset/views/base.py | 6 +-
superset/views/core.py | 11 +-
superset/viz.py | 62 +-
tests/integration_tests/charts/api_tests.py | 2 +-
tests/integration_tests/core_tests.py | 30 +-
tests/integration_tests/dashboards/api_tests.py | 76 +
.../db_engine_specs/base_engine_spec_tests.py | 7 +-
tests/integration_tests/embedded/test_view.py | 33 +
.../queries/saved_queries/api_tests.py | 39 +
tests/integration_tests/strategy_tests.py | 56 +-
tests/integration_tests/tasks/test_cache.py | 95 -
tests/integration_tests/tasks/test_utils.py | 77 -
tests/integration_tests/thumbnails_tests.py | 16 +-
.../async_events/async_query_manager_tests.py | 67 +
.../unit_tests/charts/data}/__init__.py | 0
.../charts/data/streaming_filename_test.py | 59 +
tests/unit_tests/charts/test_client_processing.py | 157 +
tests/unit_tests/charts/test_schemas.py | 221 +
.../chart/create_async_job_command_test.py | 51 +
.../commands/dashboard/filter_state_create_test.py | 72 +
.../commands/databases/columnar_reader_test.py | 85 +-
.../commands/explore/form_data/test_create.py | 39 +
tests/unit_tests/commands/export_test.py | 9 +
.../commands/importers/v1/assets_test.py | 6 +-
.../unit_tests/commands/security}/__init__.py | 0
tests/unit_tests/commands/security/rls_test.py | 196 +
.../sql_lab/streaming_export_command_test.py | 194 +
.../commands/temporary_cache_create_test.py | 63 +
tests/unit_tests/common/test_dataframe_utils.py | 25 +
tests/unit_tests/dao/base_dao_test.py | 51 +
tests/unit_tests/dashboards/schema_tests.py | 164 +
tests/unit_tests/databases/api_test.py | 12 +-
tests/unit_tests/databases/schema_tests.py | 31 +
tests/unit_tests/db_engine_specs/test_odps.py | 174 +
tests/unit_tests/extension_tests.py | 2 +-
tests/unit_tests/fixtures/assets_configs.py | 2 +
.../unit_tests/initialization}/__init__.py | 0
.../check_async_query_secret_test.py | 140 +
tests/unit_tests/key_value/utils_test.py | 45 +
.../unit_tests/mcp_service/action_log/__init__.py | 16 -
.../mcp_service/action_log/tool/__init__.py | 16 -
.../action_log/tool/test_action_log_tools.py | 401 -
.../mcp_service/css_template/__init__.py | 16 -
.../mcp_service/css_template/tool/__init__.py | 16 -
.../css_template/tool/test_css_template_tools.py | 280 -
.../database/tool/test_database_tools.py | 42 +
tests/unit_tests/mcp_service/plugin/__init__.py | 16 -
.../unit_tests/mcp_service/plugin/tool/__init__.py | 16 -
.../mcp_service/plugin/tool/test_plugin_tools.py | 172 -
.../mcp_service/system/tool/test_get_schema.py | 149 +-
.../mcp_service/system/tool/test_mcp_core.py | 76 +
tests/unit_tests/mcp_service/test_auth_api_key.py | 50 +
tests/unit_tests/mcp_service/test_auth_rbac.py | 135 +
.../mcp_service/test_auth_user_resolution.py | 92 +
tests/unit_tests/mcp_service/test_jwt_verifier.py | 302 +
.../mcp_service/test_mcp_tool_registration.py | 53 +-
tests/unit_tests/mcp_service/theme/__init__.py | 16 -
.../unit_tests/mcp_service/theme/tool/__init__.py | 16 -
.../mcp_service/theme/tool/test_theme_tools.py | 267 -
tests/unit_tests/result_set_test.py | 67 +-
tests/unit_tests/sql/parse_tests.py | 36 +
tests/unit_tests/sql_lab_test.py | 3 +
tests/unit_tests/tasks/test_cache.py | 136 +
tests/unit_tests/test_viz_get_df_payload.py | 133 +
tests/unit_tests/utils/csv_tests.py | 23 +
tests/unit_tests/utils/test_core.py | 55 +
346 files changed, 24212 insertions(+), 26290 deletions(-)
create mode 100644 docs/static/img/community/reddit-symbol.svg
create mode 100644 docs/static/img/community/slack-symbol.svg
copy superset-frontend/src/explore/components/controls/ColumnConfigControl/ColumnConfigConstants.test.tsx => superset-embedded-sdk/src/withTimeout.test.ts (56%)
copy superset-frontend/packages/superset-ui-core/test/currency-format/hasMixedCurrencies.test.ts => superset-embedded-sdk/src/withTimeout.ts (57%)
rename superset-frontend/.storybook/{main.js => main.mjs} (83%)
delete mode 100644 superset-frontend/cypress-base/cypress/e2e/dashboard/actions.test.js
copy superset-frontend/playwright/tests/dashboard/{clear-all-filters.spec.ts => mixed-chart-dashboard-filters.spec.ts} (55%)
create mode 100644 superset-frontend/src/dashboard/actions/dashboardState.certification.test.ts
create mode 100644 superset-frontend/src/embedded/getInitialThemeMode.test.ts
copy superset-frontend/{packages/superset-ui-core/src/hooks/useChangeEffect/useChangeEffect.ts => src/embedded/getInitialThemeMode.ts} (55%)
create mode 100644 superset-frontend/src/explore/components/ExploreContainer/ExploreDndContext.test.tsx
create mode 100644 superset-frontend/src/explore/components/ExploreContainer/ExploreDndContext.tsx
create mode 100644 superset-frontend/src/explore/components/controls/DndColumnSelectControl/dndTestUtils.ts
create mode 100644 superset/commands/security/utils.py
create mode 100644 superset/db_engine_specs/odps.py
delete mode 100644 superset/mcp_service/action_log/schemas.py
delete mode 100644 superset/mcp_service/action_log/tool/__init__.py
delete mode 100644 superset/mcp_service/action_log/tool/get_action_log_info.py
delete mode 100644 superset/mcp_service/action_log/tool/list_action_logs.py
delete mode 100644 superset/mcp_service/css_template/schemas.py
delete mode 100644 superset/mcp_service/css_template/tool/__init__.py
delete mode 100644 superset/mcp_service/css_template/tool/get_css_template_info.py
delete mode 100644 superset/mcp_service/css_template/tool/list_css_templates.py
delete mode 100644 superset/mcp_service/plugin/dao.py
delete mode 100644 superset/mcp_service/plugin/schemas.py
delete mode 100644 superset/mcp_service/plugin/tool/__init__.py
delete mode 100644 superset/mcp_service/plugin/tool/get_plugin_info.py
delete mode 100644 superset/mcp_service/plugin/tool/list_plugins.py
delete mode 100644 superset/mcp_service/theme/__init__.py
delete mode 100644 superset/mcp_service/theme/schemas.py
delete mode 100644 superset/mcp_service/theme/tool/__init__.py
delete mode 100644 superset/mcp_service/theme/tool/get_theme_info.py
delete mode 100644 superset/mcp_service/theme/tool/list_themes.py
create mode 100644 superset/migrations/versions/2026-04-22_19-00_31dae2559c05_replay_user_favorite_tag_migration.py
delete mode 100644 tests/integration_tests/tasks/test_cache.py
delete mode 100644 tests/integration_tests/tasks/test_utils.py
rename {superset/mcp_service/action_log => tests/unit_tests/charts/data}/__init__.py (100%)
create mode 100644 tests/unit_tests/charts/data/streaming_filename_test.py
create mode 100644 tests/unit_tests/commands/chart/create_async_job_command_test.py
create mode 100644 tests/unit_tests/commands/dashboard/filter_state_create_test.py
rename {superset/mcp_service/css_template => tests/unit_tests/commands/security}/__init__.py (100%)
create mode 100644 tests/unit_tests/commands/security/rls_test.py
create mode 100644 tests/unit_tests/commands/temporary_cache_create_test.py
create mode 100644 tests/unit_tests/dashboards/schema_tests.py
create mode 100644 tests/unit_tests/db_engine_specs/test_odps.py
rename {superset/mcp_service/plugin => tests/unit_tests/initialization}/__init__.py (100%)
create mode 100644 tests/unit_tests/initialization/check_async_query_secret_test.py
delete mode 100644 tests/unit_tests/mcp_service/action_log/__init__.py
delete mode 100644 tests/unit_tests/mcp_service/action_log/tool/__init__.py
delete mode 100644 tests/unit_tests/mcp_service/action_log/tool/test_action_log_tools.py
delete mode 100644 tests/unit_tests/mcp_service/css_template/__init__.py
delete mode 100644 tests/unit_tests/mcp_service/css_template/tool/__init__.py
delete mode 100644 tests/unit_tests/mcp_service/css_template/tool/test_css_template_tools.py
delete mode 100644 tests/unit_tests/mcp_service/plugin/__init__.py
delete mode 100644 tests/unit_tests/mcp_service/plugin/tool/__init__.py
delete mode 100644 tests/unit_tests/mcp_service/plugin/tool/test_plugin_tools.py
delete mode 100644 tests/unit_tests/mcp_service/theme/__init__.py
delete mode 100644 tests/unit_tests/mcp_service/theme/tool/__init__.py
delete mode 100644 tests/unit_tests/mcp_service/theme/tool/test_theme_tools.py
create mode 100644 tests/unit_tests/tasks/test_cache.py