This is an automated email from the ASF dual-hosted git repository.
hughhhh pushed a change to branch hughhhh/dashboard-export-spec-review
in repository https://gitbox.apache.org/repos/asf/superset.git
from 6c0c8450e4f Merge remote-tracking branch 'origin/master' into
hughhhh/dashboard-export-spec-review
add ea5950558bb feat(dashboard): add vertical alignment guides and height
indicator when resizing charts (#41079)
add 74c3f3b66bd feat(theme): make default theme changeable through
config.py (#41007)
add 227b3a48c11 fix(chart-data): return 403 for SupersetSecurityException
in chart data API (#41865)
add 3dd5e69714f chore(deps-dev): bump @types/node from 26.0.1 to 26.1.0 in
/superset-websocket (#41887)
add 30e1ab3203c chore(deps): bump docker/login-action from 4.2.0 to 4.3.0
(#41901)
add a4418a27c5c chore(deps): bump github/codeql-action/analyze from 4.36.2
to 4.36.3 (#41900)
add c1d4401d292 chore(deps): bump github/codeql-action/init from 4.36.2 to
4.36.3 (#41899)
add afc7dbeff23 chore(deps-dev): update teradatasql requirement from
>=16.20.0.23 to >=20.0.0.62 (#41886)
add 1fd43ffe52c feat(mcp): scope embedded-guest data reads to the token's
dashboards (#41753)
add baff395d983 feat(mcp): add list_themes, get_theme_info, and
create_theme tools (#41497)
add bea5f8d4a44 fix(dashboard): stagger manual refresh to prevent worker
saturation (#40512)
add 43bfc85941c fix(db): validate schema and table cache timeout to reject
negative values (#38490)
add 2380d576d54 fix(cli): avoid DetachedInstanceError in
compute-thumbnails (#41530)
add 1bfb7c60e7c fix(ci): repair stale mock target breaking Python-Unit on
master (#41911)
add a899e1db414 feat(versioning): entity-version base infrastructure
(gated off, dark launch) (#41176)
add 0ff52d46e07 fix(docs): correct broken In the Wild logo for Région
Hauts-de-France (#41918)
add ea76d0d785e chore(deps): bump cookie from 1.1.1 to 2.0.1 in
/superset-websocket (#41874)
add be600f78fc6 chore(deps): upgrade ag-grid to 36.0.0 (#41882)
add 597c9c6fea6 fix: do not require recaptcha public key for LDAP
authentication (#37009)
add e2ba378b699 fix(sqllab): redirect legacy /superset/sql/<db_id>/ deep
links (#41759)
add 38707866c02 chore(deps-dev): bump baseline-browser-mapping from
2.10.40 to 2.10.41 in /superset-frontend (#41929)
add 169c05f8ce8 chore(deps-dev): bump tsx from 4.22.4 to 4.22.5 in
/superset-frontend (#41928)
add 2a3d65f61a6 chore(deps): bump docker/login-action from 4.3.0 to 4.4.0
(#41927)
add 1ddc3e45d77 chore(deps): bump @deck.gl/mapbox from 9.3.5 to 9.3.6 in
/superset-frontend (#41926)
add 1631d52b650 fix(CollectionControl): a11y drag handle and vertical axis
lock (#39863)
add 2112fbd3798 feat(subjects): add read-only Subject REST API and DAO
(#41897)
add a6ce2fd76b0 fix(mcp): patch list_metrics DAOs via module object to
avoid Python 3.10 mock resolution bug (#41881)
add 5b8e94de267 feat(semantic layers): dashboard filters (#40475)
add bd61e09b4ea fix(mcp): bind Big Number chart to a temporal column for
dashboard time filters (#41895)
add bc80d138fdc chore(deps): bump slack-sdk from 3.42.0 to 3.43.0 (#41893)
add 35712ff9770 fix(sqllab): show truncated table list warning (#41617)
add 4dde4d2c706 fix(versioning): make baseline capture atomic (#41941)
add 38181521912 fix(mcp): user/role tools demanded a permission FAB never
registers (#41858)
add 51ce2b11ad3 chore(deps-dev): update impyla requirement from
<0.23,>0.16.2 to >=0.24.0,<0.25 (#41951)
add 7a752d1c228 fix(dashboard): restore arrow key navigation in modal
inputs opened from dropdown (#37978)
add 5c12f216d51 feat(mcp): add delete_chart and delete_dashboard tools
(#41472)
add 678fcba8b48 feat(helm): Superset 6 structured config schema with
deprecation path (#41777)
add b641008da6a fix(versioning): preserve complete multi-flush history
(#41940)
add df209cedbf8 chore(deps-dev): update sqlalchemy-firebird requirement
from <2.2,>=0.7.0 to >=0.8.0,<2.2 (#41950)
add e8521471820 test: add edge-case tests for datetime_to_epoch function
(#39404)
add a03cabffa77 perf(csv): avoid regex in CSV value escaping (#40195)
add 0ecf34d80e1 fix(a11y): add aria-label to ViewportControl text inputs
(#41931)
add b237aefb1ea fix(a11y): add aria-label to RightMenu documentation and
bug-report icon links (#41903)
add f5deda78641 fix(dataset): copy catalog field when duplicating a
BigQuery dataset (#41106)
add 189f258e0ce fix(drill): coerce temporal drill filter values (#40180)
add 5e6b29d1a32 chore(deps-dev): bump sqlalchemy-hana from 0.4.0 to 3.0.3
(#41953)
add 49dc0acd827 fix(pre-commit): prettier hook drops first file and never
batches (#41944)
add b8c0171976d test(rls): assert related/subjects honors search filter
for roles (#31466) (#41969)
add 958d1ab256a test(rls): assert dataset search returns all mask matches
(#29707) (#41968)
add 13c5a324027 fix(tests): correct stale TYPE_CHECKING import path in
base_data_loader (#41972)
add a1d1d69f5ea ci: enforce SQLAlchemy 2.0 deprecation warnings in
unit-test CI (#41915)
add 2a18a556b09 chore(frontend): lint Emotion CSS-in-JS with Stylelint
(#41871)
add db1912c6d98 chore(deps): bump cachetools from 6.2.1 to 7.1.4 (#41947)
add 0ca51d9796a fix(Database Connection Form): Added validation to db
credential input (#37919)
add e403d9b0742 chore(lint): convert legacy plugin chart components to
function components (#39452)
add 12f28ce2354 chore(deps): bump holidays from 0.82 to 0.99 (#41949)
add 98c3ec7a718 chore(deps): bump sqlglot from 30.8.0 to 30.12.0 (#41948)
add d380663e710 chore(deps-dev): bump syntaqlite from 0.4.2 to 0.6.0
(#41952)
add c0e5f5226d4 fix(explore): let chart owners overwrite when owners come
through as objects (#41352)
add c762b75ddc5 chore(lint): upgrade no-unused-vars rule from warn to
error (#41132)
add 8f339545adb chore(deps-dev): bump baseline-browser-mapping from
2.10.41 to 2.10.42 in /superset-frontend (#41993)
add 73925922a9a chore(deps): bump react-arborist from 3.12.0 to 3.13.2 in
/superset-frontend (#41992)
add bb5d7dbb17b chore(deps): bump immer from 11.1.9 to 11.1.11 in
/superset-frontend (#41991)
add 9180ace1ddc chore(deps): bump actions/labeler from 6.1.0 to 6.2.0
(#41988)
add 96bf1a1e4cd chore(deps): bump caniuse-lite from 1.0.30001800 to
1.0.30001802 in /docs (#41987)
add 0cf217cdea5 chore(deps-dev): bump vitest from 4.1.9 to 4.1.10 in
/superset-websocket (#41986)
add f7b7bad9a88 chore(deps-dev): bump tsx from 4.22.5 to 4.23.0 in
/superset-frontend (#41985)
add 1c7a3f395f4 chore(deps): bump fs-extra from 11.3.2 to 11.3.6 in
/superset-frontend (#41990)
add 3c6982252b2 chore(deps-dev): bump webpack from 5.108.3 to 5.108.4 in
/superset-frontend (#41989)
add 029d49539bc fix(event-log): match embedded routes precisely in logger
middleware (#41942)
add 2fac66d1a30 feat(mcp): add update_dataset_metric tool for editing
saved dataset metrics (#40975)
add 8f75f1a353d fix(dashboard): deleted Display Control reappears after
Apply Filters (#41999)
add c8d61d7d1d8 Merge remote-tracking branch 'origin/master' into
hughhhh/dashboard-export-spec-review
No new revisions were added by this update.
Summary of changes:
.github/workflows/check-python-deps.yml | 2 +-
.github/workflows/codeql-analysis.yml | 4 +-
.github/workflows/labeler.yml | 2 +-
.github/workflows/superset-python-unittest.yml | 6 +
...sync-requirements-for-python-dep-upgrade-pr.yml | 2 +-
.pre-commit-config.yaml | 8 +-
.rat-excludes | 1 +
RESOURCES/INTHEWILD.yaml | 2 +-
UPDATING.md | 11 +
docs/docs/faq.mdx | 17 +
docs/package.json | 2 +-
docs/yarn.lock | 8 +-
helm/superset/Chart.yaml | 2 +-
helm/superset/README.md | 59 +-
helm/superset/UPGRADING.md | 161 +++
helm/superset/templates/NOTES.txt | 6 +
helm/superset/templates/_helpers.tpl | 641 ++++++++++-
helm/superset/templates/deployment-beat.yaml | 10 +-
helm/superset/templates/deployment-flower.yaml | 5 +-
helm/superset/templates/deployment-worker.yaml | 10 +-
helm/superset/templates/deployment-ws.yaml | 3 +
helm/superset/templates/deployment.yaml | 12 +-
helm/superset/templates/secret-env.yaml | 36 +-
.../superset/templates/secret-superset-config.yaml | 4 +-
helm/superset/tests/checksum_test.yaml | 132 +++
helm/superset/tests/config_test.yaml | 94 ++
.../superset/tests/deprecation_test.yaml | 23 +-
helm/superset/tests/initscript_test.yaml | 63 ++
helm/superset/tests/secret_env_test.yaml | 71 ++
.../superset/tests/serviceaccount_test.yaml | 44 +-
.../superset/tests/values_defaults_test.yaml | 24 +-
helm/superset/values.schema.json | 140 +++
helm/superset/values.yaml | 148 ++-
pyproject.toml | 21 +-
requirements/base.txt | 11 +-
requirements/development.txt | 15 +-
scripts/{check-custom-rules.sh => stylelint.sh} | 9 +-
superset-core/src/superset_core/common/daos.py | 54 +-
superset-core/src/superset_core/common/models.py | 62 ++
.../src/superset_core/semantic_layers/types.py | 2 +-
superset-frontend/.storybook/preview.jsx | 2 +-
superset-frontend/.stylelintignore | 9 +
superset-frontend/oxlint.json | 9 +-
superset-frontend/package-lock.json | 996 ++++++++++++++++--
superset-frontend/package.json | 21 +-
.../superset-core/src/theme/GlobalStyles.tsx | 8 +-
.../packages/superset-ui-core/package.json | 4 +-
.../components/Matrixify/MatrixifyGridCell.tsx | 2 +-
.../components/Matrixify/MatrixifyGridRenderer.tsx | 3 +-
.../src/components/AsyncAceEditor/index.tsx | 1 -
.../DropdownContainer/DropdownContainer.tsx | 4 +-
.../src/components/Form/LabeledErrorBoundInput.tsx | 8 +
.../superset-ui-core/src/components/Form/types.ts | 5 +
.../src/components/Icons/Icons.stories.tsx | 6 +-
.../src/components/Label/index.tsx | 2 +-
.../src/components/Modal/Modal.tsx | 4 +-
.../components/ModalTrigger/ModalTrigger.test.tsx | 42 +-
.../src/components/ModalTrigger/index.tsx | 20 +-
.../src/components/TimezoneSelector/index.tsx | 2 +-
.../superset-ui-core/src/query/types/Dashboard.ts | 2 +
.../tests/dashboard/delete-display-control.spec.ts | 263 +++++
.../legacy-plugin-chart-calendar/src/Calendar.ts | 2 +-
.../src/CountryMap.ts | 2 +-
.../src/HorizonChart.tsx | 101 +-
.../legacy-plugin-chart-horizon/src/HorizonRow.tsx | 268 +++--
.../test/HorizonChart.test.tsx | 51 +
.../test/HorizonRow.test.tsx | 102 ++
.../src/PairedTTest.tsx | 77 +-
.../src/TTestTable.tsx | 545 +++++-----
.../test/TTestTable.test.tsx | 365 +++++++
.../src/AgGridTableChart.tsx | 1 -
.../src/renderers/NumericCellRenderer.tsx | 16 +-
.../src/styles/index.tsx | 1 -
.../src/utils/useColDefs.ts | 4 +-
.../test/AgGridTableChart.test.tsx | 18 +-
.../src/BigNumber/BigNumberViz.tsx | 4 -
.../src/Timeseries/Regular/Bar/controlPanel.tsx | 9 +-
.../src/PivotTableChart.tsx | 84 +-
.../test/PivotTableChart.test.tsx | 370 +++++++
.../plugins/plugin-chart-table/src/TableChart.tsx | 36 +-
.../plugin-chart-table/test/TableChart.test.tsx | 49 +
.../src/chart/WordCloud.tsx | 273 ++---
.../test/WordCloud.test.tsx | 161 +++
.../plugins/preset-chart-deckgl/package.json | 2 +-
.../src/SqlLab/SqlLabGlobalStyles.tsx | 10 +-
.../src/SqlLab/components/EditorWrapper/index.tsx | 4 +-
.../src/SqlLab/components/ResultSet/index.tsx | 1 -
.../TableExploreTree/TreeNodeRenderer.tsx | 1 -
.../src/components/Chart/ChartRenderer.tsx | 1 -
.../Datasource/FoldersEditor/TreeItem.styles.ts | 2 +-
.../DatasourceEditor/DatasourceEditor.tsx | 9 -
.../ErrorMessage/FrontendNetworkErrorMessage.tsx | 1 -
.../FilterableTable/FilterableTable.test.tsx | 55 +-
.../src/components/GridTable/index.tsx | 1 -
.../src/components/MessageToasts/Toast.tsx | 2 +-
.../components/Modal/CollapsibleModalSection.tsx | 2 -
.../src/components/Modal/ModalFormField.tsx | 4 -
.../src/components/Modal/StandardModal.tsx | 6 -
.../src/components/ResizableSidebar/index.tsx | 2 +-
.../TableSelector/TableSelector.test.tsx | 40 +-
.../src/components/TableSelector/index.tsx | 6 +
.../src/components/Tag/utils.test.tsx | 2 +-
superset-frontend/src/core/sqlLab/models.ts | 4 +-
.../src/dashboard/actions/dashboardState.test.ts | 44 +
.../components/AddSliceCard/AddSliceCard.tsx | 2 +-
.../src/dashboard/components/Dashboard.tsx | 4 -
.../DashboardBuilder/DashboardBuilder.tsx | 4 +-
.../dashboard/components/DashboardGrid.test.tsx | 36 +
.../src/dashboard/components/DashboardGrid.tsx | 65 +-
.../dashboard/components/FiltersBadge/Styles.tsx | 1 -
.../src/dashboard/components/Header/index.tsx | 2 +-
.../Header/useHeaderAutoRefresh.test.tsx | 154 +++
.../components/Header/useHeaderAutoRefresh.ts | 31 +-
.../src/dashboard/components/SaveModal.tsx | 8 +-
.../components/filterscope/FilterScopeSelector.tsx | 2 +-
.../gridComponents/Divider/Divider.test.tsx | 2 +-
.../gridComponents/TabsRenderer/TabsRenderer.tsx | 2 -
.../src/dashboard/components/menu/HoverMenu.tsx | 2 +-
.../useFilterConfigModal.tsx | 4 +-
.../FilterControls/FilterControlShared.tsx | 4 +-
.../FilterBar/FilterControls/FilterControls.tsx | 2 +-
.../FilterBar/FilterControls/FilterValue.tsx | 9 +-
.../nativeFilters/FilterBar/Vertical.tsx | 4 +-
.../components/nativeFilters/FilterBar/index.tsx | 13 +-
.../FiltersConfigForm/ColumnSelect.tsx | 92 +-
.../FiltersConfigForm/DatasetSelect.test.tsx | 45 +
.../FiltersConfigForm/DatasetSelect.tsx | 102 +-
.../FiltersConfigForm/FiltersConfigForm.tsx | 196 +++-
.../FiltersConfigForm/RemovedFilter.tsx | 2 +-
.../FiltersConfigForm/getControlItemsMap.tsx | 4 +
.../FiltersConfigForm/utils.test.ts | 76 +-
.../FiltersConfigModal/FiltersConfigForm/utils.ts | 91 +-
.../hooks/useCustomizationOperations.ts | 2 +-
.../hooks/useFilterOperations.ts | 2 +-
.../transformers/buildTarget.test.ts | 74 ++
.../FiltersConfigModal/transformers/buildTarget.ts | 61 ++
.../transformers/customizationTransformer.ts | 13 +-
.../transformers/filterTransformer.ts | 16 +-
.../nativeFilters/FiltersConfigModal/types.ts | 3 +
.../nativeFilters/FiltersConfigModal/utils.ts | 10 +-
.../dashboard/components/nativeFilters/utils.ts | 6 +-
.../components/resizable/ResizableContainer.tsx | 155 ++-
.../src/dashboard/reducers/dashboardInfo.test.ts | 24 +-
.../src/dashboard/reducers/dashboardInfo.ts | 1 +
superset-frontend/src/dashboard/types.ts | 3 +
.../util/charts/getFormDataWithExtraFilters.ts | 17 +-
superset-frontend/src/dashboard/util/constants.ts | 1 +
.../util/getFormDataWithExtraFilters.test.ts | 43 +
.../src/dashboard/util/getRelatedCharts.test.ts | 65 +-
.../src/dashboard/util/getRelatedCharts.ts | 17 +-
.../explore/components/ControlPanelsContainer.tsx | 8 +-
.../explore/components/DataTableControl/index.tsx | 2 +-
.../DataTablesPane/components/SamplesPane.tsx | 1 -
.../DatasourcePanelDragOption/index.tsx | 2 +-
.../src/explore/components/ExploreAlert.tsx | 2 +-
.../components/ExploreViewContainer/index.tsx | 7 +-
.../src/explore/components/SaveModal.test.tsx | 21 +
.../src/explore/components/SaveModal.tsx | 22 +-
.../CollectionControl/CollectionControl.test.tsx | 8 +
.../controls/CollectionControl/index.tsx | 35 +-
.../controls/DatasourceControl/index.tsx | 1 -
.../FilterControl/AdhocFilterEditPopover/index.tsx | 2 +-
.../components/controls/TextControl/index.tsx | 7 +-
.../components/controls/ViewportControl.tsx | 1 +
.../controls/VizTypeControl/VizTypeGallery.tsx | 2 +-
.../components/controls/VizTypeControl/index.tsx | 1 -
.../src/features/alerts/AlertReportModal.tsx | 2 +-
.../alerts/components/NotificationMethod.tsx | 2 +-
.../src/features/allEntities/AllEntitiesTable.tsx | 2 +-
.../src/features/annotations/AnnotationModal.tsx | 2 +-
.../DatabaseConnectionForm/EncryptedField.test.tsx | 142 ++-
.../DatabaseConnectionForm/EncryptedField.tsx | 73 +-
.../databases/DatabaseModal/ExtraOptions.test.tsx | 68 ++
.../databases/DatabaseModal/ExtraOptions.tsx | 36 +-
.../databases/DatabaseModal/index.test.tsx | 67 +-
.../src/features/databases/DatabaseModal/index.tsx | 16 +-
.../src/features/databases/DatabaseModal/styles.ts | 31 +-
.../databases/UploadDataModel/ColumnsPreview.tsx | 4 +-
.../features/databases/UploadDataModel/index.tsx | 4 +-
.../features/datasets/DatasetSelectLabel/index.tsx | 24 +-
superset-frontend/src/features/home/RightMenu.tsx | 2 +
.../src/features/home/SavedQueries.tsx | 1 -
.../src/features/roles/RoleListEditModal.test.tsx | 2 +-
.../src/features/semanticLayers/label.ts | 12 +
.../src/features/tags/BulkTagModal.tsx | 2 +-
superset-frontend/src/features/tags/TagModal.tsx | 2 +-
.../src/features/userInfo/UserInfoModal.tsx | 2 +-
superset-frontend/src/features/users/utils.ts | 2 +-
superset-frontend/src/middleware/logger.test.ts | 25 +
.../src/middleware/loggerMiddleware.ts | 11 +-
superset-frontend/src/pages/AllEntities/index.tsx | 4 +-
.../pages/ChartList/ChartList.permissions.test.tsx | 6 +-
.../DashboardList.permissions.test.tsx | 7 +-
superset-frontend/src/pages/GroupsList/index.tsx | 2 +-
superset-frontend/src/pages/UsersList/index.tsx | 2 +-
superset-frontend/src/setup/setupCodeOverrides.ts | 4 +-
superset-frontend/src/theme/ThemeController.ts | 35 +-
.../src/theme/tests/ThemeController.test.ts | 95 ++
superset-frontend/src/types/bootstrapTypes.ts | 3 +
.../src/visualizations/TimeTable/TimeTable.tsx | 2 +-
...t-runner-jest.config.js => stylelint.config.js} | 27 +-
superset-websocket/package-lock.json | 272 ++---
superset-websocket/package.json | 9 +-
superset-websocket/src/index.ts | 4 +-
superset/charts/api.py | 192 +++-
superset/charts/data/api.py | 10 +
superset/charts/filters.py | 11 +-
superset/cli/thumbnails.py | 30 +-
superset/commands/dashboard/copy.py | 13 +
.../commands/dashboard/importers/v1/__init__.py | 62 +-
superset/commands/dashboard/update.py | 42 +-
superset/commands/dataset/duplicate.py | 73 +-
superset/commands/importers/v1/__init__.py | 13 +
superset/commands/importers/v1/assets.py | 44 +-
superset/commands/importers/v1/utils.py | 32 +
superset/config.py | 38 +-
superset/connectors/sqla/models.py | 46 +-
superset/constants.py | 2 +
superset/core/api/core_api_injection.py | 16 +-
superset/daos/dataset.py | 209 ++--
superset/daos/{security.py => subject.py} | 11 +-
superset/daos/version.py | 69 ++
superset/dashboards/api.py | 179 +++-
superset/databases/schemas.py | 70 +-
superset/datasets/api.py | 234 ++++-
superset/extensions/__init__.py | 25 +
superset/initialization/__init__.py | 242 ++++-
superset/mcp_service/CLAUDE.md | 11 +-
superset/mcp_service/SECURITY.md | 8 +-
superset/mcp_service/app.py | 20 +-
superset/mcp_service/auth.py | 114 +-
superset/mcp_service/chart/chart_utils.py | 112 +-
superset/mcp_service/chart/plugins/big_number.py | 2 +-
superset/mcp_service/chart/schemas.py | 52 +-
superset/mcp_service/chart/tool/__init__.py | 2 +
superset/mcp_service/chart/tool/delete_chart.py | 186 ++++
superset/mcp_service/chart/tool/get_chart_data.py | 62 +-
superset/mcp_service/chart/tool/get_chart_info.py | 9 +-
.../mcp_service/chart/tool/get_chart_preview.py | 19 +-
superset/mcp_service/chart/tool/get_chart_sql.py | 10 +
superset/mcp_service/dashboard/schemas.py | 44 +
superset/mcp_service/dashboard/tool/__init__.py | 2 +
.../mcp_service/dashboard/tool/delete_dashboard.py | 235 +++++
superset/mcp_service/dataset/dataset_utils.py | 50 +
superset/mcp_service/dataset/schemas.py | 151 +++
superset/mcp_service/dataset/tool/__init__.py | 2 +
superset/mcp_service/dataset/tool/query_dataset.py | 30 +-
.../dataset/tool/update_dataset_metric.py | 294 ++++++
superset/mcp_service/guest_scope.py | 72 ++
superset/mcp_service/mcp_config.py | 24 +-
superset/mcp_service/privacy.py | 5 +
.../mcp_service/rls/tool/get_rls_filter_info.py | 10 +
superset/mcp_service/rls/tool/list_rls_filters.py | 10 +
superset/mcp_service/role/tool/get_role_info.py | 4 +
superset/mcp_service/role/tool/list_roles.py | 4 +
.../mcp_service/theme}/__init__.py | 5 +-
superset/mcp_service/{tag => theme}/schemas.py | 158 ++-
.../{database => theme}/tool/__init__.py | 10 +-
superset/mcp_service/theme/tool/create_theme.py | 159 +++
.../tool/get_theme_info.py} | 65 +-
.../list_tags.py => theme/tool/list_themes.py} | 104 +-
superset/mcp_service/user/tool/get_user_info.py | 4 +
superset/mcp_service/user/tool/list_users.py | 4 +
superset/middleware/legacy_prefix_redirect.py | 42 +-
...-28_19-50_56cd24c07170_add_versioning_tables.py | 574 ++++++++++
...3_12-00_8f3a1b2c4d5e_shadow_live_row_indexes.py | 180 ++++
superset/models/dashboard.py | 27 +
superset/models/helpers.py | 123 ++-
superset/models/slice.py | 37 +
superset/security/manager.py | 5 +
superset/semantic_layers/api.py | 9 +-
superset/semantic_layers/mapper.py | 15 +-
superset/sql/dialects/firebolt.py | 5 +-
superset/subjects/api.py | 123 +++
superset/subjects/filters.py | 22 +
superset/subjects/schemas.py | 14 +
superset/subjects/sync.py | 71 +-
superset/subjects/views.py | 50 -
superset/utils/csv.py | 48 +-
superset/utils/filters.py | 53 +-
.../common => superset/versioning}/__init__.py | 0
superset/versioning/api_helpers.py | 219 ++++
superset/versioning/baseline/__init__.py | 69 ++
superset/versioning/baseline/children.py | 212 ++++
superset/versioning/baseline/collection.py | 153 +++
superset/versioning/baseline/dirty.py | 243 +++++
superset/versioning/baseline/insertion.py | 150 +++
superset/versioning/baseline/listener.py | 132 +++
superset/versioning/baseline/shadow.py | 92 ++
superset/versioning/changes/__init__.py | 76 ++
superset/versioning/changes/listener.py | 433 ++++++++
superset/versioning/changes/shadow_queries.py | 323 ++++++
superset/versioning/changes/state.py | 233 ++++
superset/versioning/changes/table.py | 90 ++
superset/versioning/diff.py | 1111 ++++++++++++++++++++
superset/versioning/etag.py | 78 ++
superset/versioning/factory.py | 312 ++++++
superset/versioning/queries.py | 518 +++++++++
superset/versioning/schemas.py | 152 +++
superset/versioning/utils.py | 50 +
superset/views/base.py | 7 +-
.../example_data/data_loading/base_data_loader.py | 2 +-
.../dashboards/superset_factory_util.py | 16 +-
.../security/row_level_security_tests.py | 107 ++
.../integration_tests/subjects}/__init__.py | 0
tests/integration_tests/subjects/api_tests.py | 142 +++
tests/integration_tests/superset_test_config.py | 8 +
.../integration_tests/versioning}/__init__.py | 0
.../versioning/capture_disabled_tests.py | 171 +++
tests/integration_tests/versioning/conftest.py | 94 ++
.../versioning/snapshot_projection_tests.py | 70 ++
.../versioning/transaction_correctness_tests.py | 224 ++++
.../versioning/versions_api_tests.py | 458 ++++++++
tests/unit_tests/charts/test_filters.py | 180 ++++
tests/unit_tests/cli/thumbnails_test.py | 79 ++
.../unit_tests/commands/dataset/test_duplicate.py | 13 +
tests/unit_tests/dao/dataset_test.py | 65 ++
tests/unit_tests/dao/subject_test.py | 61 ++
.../databases/commands/importers/v1/import_test.py | 6 +-
tests/unit_tests/databases/schema_tests.py | 273 ++++-
tests/unit_tests/examples/generic_loader_test.py | 4 +-
tests/unit_tests/initialization_test.py | 98 ++
.../mcp_service/chart/test_big_number_chart.py | 121 +++
.../mcp_service/chart/test_chart_utils.py | 84 +-
.../mcp_service/chart/tool/test_delete_chart.py | 229 ++++
.../mcp_service/chart/tool/test_get_chart_data.py | 31 +-
.../mcp_service/chart/tool/test_get_chart_info.py | 19 +
.../chart/tool/test_get_chart_preview.py | 36 +-
.../mcp_service/chart/tool/test_get_chart_sql.py | 18 +
.../mcp_service/chart/tool/test_list_charts.py | 1 +
.../dashboard/tool/test_delete_dashboard.py | 254 +++++
.../mcp_service/dataset/tool/test_query_dataset.py | 32 +-
.../dataset/tool/test_update_dataset_metric.py | 541 ++++++++++
.../mcp_service/rls/tool/test_rls_tools.py | 28 +
.../semantic_layer/tool/test_list_metrics.py | 40 +-
.../system/tool/test_get_current_user.py | 1 +
tests/unit_tests/mcp_service/test_auth_rbac.py | 66 ++
tests/unit_tests/mcp_service/test_guest_scope.py | 121 +++
.../mcp_service/test_guest_token_auth.py | 182 +++-
tests/unit_tests/mcp_service/test_privacy.py | 45 +
.../unit_tests/mcp_service/theme}/__init__.py | 0
.../unit_tests/mcp_service/theme/tool}/__init__.py | 0
.../mcp_service/theme/tool/test_create_theme.py | 260 +++++
.../mcp_service/theme/tool/test_get_theme_info.py | 133 +++
.../mcp_service/theme/tool/test_list_themes.py | 128 +++
.../middleware/test_legacy_prefix_redirect.py | 75 +-
tests/unit_tests/models/helpers_test.py | 264 ++++-
tests/unit_tests/security/manager_test.py | 37 +
tests/unit_tests/semantic_layers/api_test.py | 3 +
tests/unit_tests/semantic_layers/mapper_test.py | 22 +
tests/unit_tests/utils/csv_tests.py | 3 +
tests/unit_tests/utils/filters_test.py | 119 ++-
tests/unit_tests/utils/test_date_parsing.py | 91 ++
tests/unit_tests/versioning/test_diff_caps.py | 218 ++++
tests/unit_tests/versioning/test_listener.py | 204 ++++
tests/unit_tests/views/test_bootstrap_auth.py | 21 +
356 files changed, 21640 insertions(+), 2303 deletions(-)
create mode 100644 helm/superset/UPGRADING.md
create mode 100644 helm/superset/tests/checksum_test.yaml
create mode 100644 helm/superset/tests/config_test.yaml
copy MANIFEST.in => helm/superset/tests/deprecation_test.yaml (66%)
create mode 100644 helm/superset/tests/initscript_test.yaml
create mode 100644 helm/superset/tests/secret_env_test.yaml
copy .dockerignore => helm/superset/tests/serviceaccount_test.yaml (63%)
copy docker/entrypoints/docker-ci.sh =>
helm/superset/tests/values_defaults_test.yaml (71%)
mode change 100755 => 100644
create mode 100644 helm/superset/values.schema.json
copy scripts/{check-custom-rules.sh => stylelint.sh} (81%)
create mode 100644 superset-frontend/.stylelintignore
create mode 100644
superset-frontend/playwright/tests/dashboard/delete-display-control.spec.ts
create mode 100644
superset-frontend/plugins/legacy-plugin-chart-horizon/test/HorizonChart.test.tsx
create mode 100644
superset-frontend/plugins/legacy-plugin-chart-horizon/test/HorizonRow.test.tsx
create mode 100644
superset-frontend/plugins/legacy-plugin-chart-paired-t-test/test/TTestTable.test.tsx
create mode 100644
superset-frontend/plugins/plugin-chart-pivot-table/test/PivotTableChart.test.tsx
create mode 100644
superset-frontend/plugins/plugin-chart-word-cloud/test/WordCloud.test.tsx
create mode 100644
superset-frontend/src/dashboard/components/Header/useHeaderAutoRefresh.test.tsx
create mode 100644
superset-frontend/src/dashboard/components/nativeFilters/FiltersConfigModal/transformers/buildTarget.test.ts
create mode 100644
superset-frontend/src/dashboard/components/nativeFilters/FiltersConfigModal/transformers/buildTarget.ts
copy superset-frontend/{test-runner-jest.config.js => stylelint.config.js}
(65%)
copy superset/daos/{security.py => subject.py} (73%)
create mode 100644 superset/daos/version.py
create mode 100644 superset/mcp_service/chart/tool/delete_chart.py
create mode 100644 superset/mcp_service/dashboard/tool/delete_dashboard.py
create mode 100644 superset/mcp_service/dataset/dataset_utils.py
create mode 100644 superset/mcp_service/dataset/tool/update_dataset_metric.py
create mode 100644 superset/mcp_service/guest_scope.py
copy {superset-core/src/superset_core =>
superset/mcp_service/theme}/__init__.py (86%)
copy superset/mcp_service/{tag => theme}/schemas.py (56%)
copy superset/mcp_service/{database => theme}/tool/__init__.py (81%)
create mode 100644 superset/mcp_service/theme/tool/create_theme.py
copy superset/mcp_service/{tag/tool/get_tag_info.py =>
theme/tool/get_theme_info.py} (55%)
copy superset/mcp_service/{tag/tool/list_tags.py => theme/tool/list_themes.py}
(56%)
create mode 100644
superset/migrations/versions/2026-05-28_19-50_56cd24c07170_add_versioning_tables.py
create mode 100644
superset/migrations/versions/2026-06-03_12-00_8f3a1b2c4d5e_shadow_live_row_indexes.py
create mode 100644 superset/subjects/api.py
delete mode 100644 superset/subjects/views.py
copy {superset-core/src/superset_core/common =>
superset/versioning}/__init__.py (100%)
create mode 100644 superset/versioning/api_helpers.py
create mode 100644 superset/versioning/baseline/__init__.py
create mode 100644 superset/versioning/baseline/children.py
create mode 100644 superset/versioning/baseline/collection.py
create mode 100644 superset/versioning/baseline/dirty.py
create mode 100644 superset/versioning/baseline/insertion.py
create mode 100644 superset/versioning/baseline/listener.py
create mode 100644 superset/versioning/baseline/shadow.py
create mode 100644 superset/versioning/changes/__init__.py
create mode 100644 superset/versioning/changes/listener.py
create mode 100644 superset/versioning/changes/shadow_queries.py
create mode 100644 superset/versioning/changes/state.py
create mode 100644 superset/versioning/changes/table.py
create mode 100644 superset/versioning/diff.py
create mode 100644 superset/versioning/etag.py
create mode 100644 superset/versioning/factory.py
create mode 100644 superset/versioning/queries.py
create mode 100644 superset/versioning/schemas.py
create mode 100644 superset/versioning/utils.py
copy {superset-core/src/superset_core/common =>
tests/integration_tests/subjects}/__init__.py (100%)
create mode 100644 tests/integration_tests/subjects/api_tests.py
copy {superset-core/src/superset_core/common =>
tests/integration_tests/versioning}/__init__.py (100%)
create mode 100644 tests/integration_tests/versioning/capture_disabled_tests.py
create mode 100644 tests/integration_tests/versioning/conftest.py
create mode 100644
tests/integration_tests/versioning/snapshot_projection_tests.py
create mode 100644
tests/integration_tests/versioning/transaction_correctness_tests.py
create mode 100644 tests/integration_tests/versioning/versions_api_tests.py
create mode 100644 tests/unit_tests/charts/test_filters.py
create mode 100644 tests/unit_tests/cli/thumbnails_test.py
create mode 100644 tests/unit_tests/dao/subject_test.py
create mode 100644 tests/unit_tests/mcp_service/chart/tool/test_delete_chart.py
create mode 100644
tests/unit_tests/mcp_service/dashboard/tool/test_delete_dashboard.py
create mode 100644
tests/unit_tests/mcp_service/dataset/tool/test_update_dataset_metric.py
create mode 100644 tests/unit_tests/mcp_service/test_guest_scope.py
copy {superset-core/src/superset_core/common =>
tests/unit_tests/mcp_service/theme}/__init__.py (100%)
copy {superset-core/src/superset_core/common =>
tests/unit_tests/mcp_service/theme/tool}/__init__.py (100%)
create mode 100644 tests/unit_tests/mcp_service/theme/tool/test_create_theme.py
create mode 100644
tests/unit_tests/mcp_service/theme/tool/test_get_theme_info.py
create mode 100644 tests/unit_tests/mcp_service/theme/tool/test_list_themes.py
create mode 100644 tests/unit_tests/versioning/test_diff_caps.py
create mode 100644 tests/unit_tests/versioning/test_listener.py