You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@superset.apache.org by ru...@apache.org on 2026/07/08 18:31:53 UTC
(superset) branch remove-legacy-viz-pipeline updated (955d1c6a85a -> 9a4fc22875f)
This is an automated email from the ASF dual-hosted git repository.
rusackas pushed a change to branch remove-legacy-viz-pipeline
in repository https://gitbox.apache.org/repos/asf/superset.git
omit 955d1c6a85a fix: format Multi.tsx and update Multi.color.test.tsx for registry-based layer loading
omit ec1fcaa742f fix: repair stale package-lock.json and alembic migration branch
omit 291afbf39f8 fix: restore OAuth2RedirectError import after rebase
omit e3f8985b8b7 docs: add UPDATING.md entries for the legacy viz pipeline removal and drop the working trackers
omit 8f7033474a0 chore(viz)!: remove explore_json endpoints, viz.py and the legacy chart data pipeline (#41750)
omit 833cbdb53e6 chore(viz): drop the legacy- prefix from migrated chart plugin packages (#41751)
omit 0308f0364d4 chore(viz): update SCOPE tracker — all charts migrated, phases 2-3 in review
omit f71a1cb927f feat(compare): migrate compare charts to echarts_timeseries_line and drop the legacy plugin (#41738)
omit 13d5b16af36 feat(deck-multi): migrate deck_multi chart to the v1 chart data API (#41730)
omit 353c568f41e feat(bubble): migrate saved bubble charts to bubble_v2 and drop the legacy plugin (#41728)
omit 752825e0ec2 fix(legacy-viz): restore line-engine default ordering for horizon and rose (#41732)
omit d860ab5a36b feat(partition): migrate partition chart to v1 chart data API (#41729)
omit 24c3b4aabfe chore(viz): update SCOPE tracker after tier 2 completion
omit 34c0a699d75 feat(time-pivot): migrate time_pivot chart to v1 chart data API (#41727)
omit 272c155526c feat(rose): migrate rose chart to v1 chart data API (#41726)
omit b7583c5f740 feat(horizon): migrate horizon chart to v1 chart data API (#41725)
omit ec043991f2a chore(viz): update SCOPE tracker after tier 1-2 merges
omit 3b8047f8272 feat(time-table): migrate time_table chart to v1 chart data API (#41723)
omit 1596402681c feat(world-map): migrate world_map chart to v1 chart data API (#41720)
omit 913d2eda911 feat(calendar): migrate cal_heatmap chart to v1 chart data API (#41724)
omit a1e3e4c6d35 feat(paired-t-test): migrate paired_ttest chart to v1 chart data API (#41721)
omit cb6f1508a13 feat(chord): migrate chord chart to v1 chart data API (#41719)
omit 6610d582577 chore(viz): update SCOPE tracker after phase 0 + tier 1 merges
omit 52d27132310 feat(bullet): migrate bullet chart to v1 chart data API (#41718)
omit 93767fa0d83 feat(parallel-coordinates): migrate para chart to v1 chart data API (#41716)
omit 3e9dbaa936b feat(country-map): migrate country_map chart to v1 chart data API (#41717)
omit cbff207ce8e chore(viz): phase 0 — remove orphaned viz.py classes and nvd3 BoxPlot leftovers (#41715)
omit f3bf978d4f6 chore(viz): add SCOPE/UPDATES trackers for legacy viz pipeline removal
add 2a77c0156af fix(frontend/setup): sanitize returned client error message when shown as HTML content (#41768)
add 17ae25b8d4d fix(explore): resolve adhoc Custom SQL dimension in Bubble chart (#41861)
add ef10501e6b2 feat(table v2): add tooltip to table header (#39287)
add f1c0a461fda chore(deps): bump react-markdown from 9.0.7 to 10.1.0 in /superset-frontend/packages/superset-ui-core (#41805)
add 6b1311a6c7c fix(sqllab): correct verticalalign CSS typo in SqlEditorTabHeader icon styles (#41052)
add 0d9533fdf8f fix(reports): export server-paginated table row limits (#41103)
add 7b95d8b17c9 feat(alerts): add user lookup for email recipients (#41338)
add 050acc6c308 fix(databend): support configuring Databend via individual parameters (#41513)
add c253b68d7bc fix(chart): fix Chart Time Grain option not working if Dataset is not saved (#38766)
add ddca50c8209 fix(ui): improve getPopupContainer to avoid double scrollbar without breaking modal behavior (#38792)
add 98fc8576131 feat(cache): warm up native filter option queries (#41531)
add 866f8c51ee2 fix(sqllab): invalid height in ResultTable (#37408)
add e49945fc2fb fix(table charts v1 & v2): pagination, translation and search by (#36881)
add 96171552890 fix(utils): urls preserve query params (#35936)
add 3fa000ba0bc fix(chart): allow custom date format for week range in Big Number with Trendline (#35752)
add 0efcd54250a fix(charts): fix time comparison crash when offsets share a numeric prefix (#39344)
add f6d03e4a687 fix(clickhouse): time filters use server timezone for toDateTime literals (#41579)
add 206155f986c fix(explore): apply per-datasource access check on the legacy explore view (#41425)
add f74de0eb6c3 fix: Show metric in the default tooltip of deck.gl GeoJson Polygon chart (#41341)
add 2dab31c1301 fix(mcp): serialize FAB role permissions (#41404)
add 01cd2152027 fix(explore): default Save As for new charts in save dialog (#41314)
add 3b1abf82608 feat(Icons): adding Layout icon (#41853)
add 211bcbc6353 chore(deps-dev): bump @swc/plugin-emotion from 14.14.0 to 14.14.1 in /superset-frontend (#41875)
add d81b135a04c fix(explore): render DragOverlay so dragged metric/column is visible (#41879)
add 8a599d70b43 fix(explore): admin creating new chart crashes on save (#41880)
add 49ed2063815 fix(a11y): add aria-label to dependency-list remove icon (#41878)
add deefe897f15 chore(frontend): remove orphaned eslint-plugin-cypress devDependency (#41866)
add dc5c5af4671 docs: Add geOrchestra project and pi-geosolutions to In the Wild (#41801)
add e333135a0d4 feat(i18n): expose the six newly backfilled locales (#41827)
add 001d6c9692c fix(semantic-layers): apply time-comparison offset to `TEMPORAL_RANGE` filters (#41556)
add 34d4966f8b1 fix(dataset): resolve duplicate virtual dataset validation error (#37932)
add 01e872c1056 refactor: remove the deprecated AVOID_COLORS_COLLISION feature flag (#41800)
add 33f0fc93edf feat: introduce Subject model and entity editors/viewers (#38831)
add 83716cb8c0d build(websocket): migrate to ESM (#41680)
add 2c8cdbbd9b2 chore(dependabot): unify npm Dependabot config used for multi-workspace `superset-frontend` (#41586)
add 82a6931be7f chore(viz): add SCOPE/UPDATES trackers for legacy viz pipeline removal
add 0fc1d3bf576 chore(viz): phase 0 — remove orphaned viz.py classes and nvd3 BoxPlot leftovers (#41715)
add 1221adbc54b feat(country-map): migrate country_map chart to v1 chart data API (#41717)
add 066c143bdf1 feat(parallel-coordinates): migrate para chart to v1 chart data API (#41716)
add 14c72530edd feat(bullet): migrate bullet chart to v1 chart data API (#41718)
add f3c65e802da chore(viz): update SCOPE tracker after phase 0 + tier 1 merges
add 9a55c98c5a2 feat(chord): migrate chord chart to v1 chart data API (#41719)
add 0239b4b074d feat(paired-t-test): migrate paired_ttest chart to v1 chart data API (#41721)
add f6a1742e96f feat(calendar): migrate cal_heatmap chart to v1 chart data API (#41724)
add 6918a5d9c46 feat(world-map): migrate world_map chart to v1 chart data API (#41720)
add 2dba62f4012 feat(time-table): migrate time_table chart to v1 chart data API (#41723)
add dd3ff3ea4b8 chore(viz): update SCOPE tracker after tier 1-2 merges
add ea818e33fda feat(horizon): migrate horizon chart to v1 chart data API (#41725)
add 7902b6a8eba feat(rose): migrate rose chart to v1 chart data API (#41726)
add 794ea82e328 feat(time-pivot): migrate time_pivot chart to v1 chart data API (#41727)
add 281caba3191 chore(viz): update SCOPE tracker after tier 2 completion
add c14a574f7a6 feat(partition): migrate partition chart to v1 chart data API (#41729)
add c1b2e2ff4ff fix(legacy-viz): restore line-engine default ordering for horizon and rose (#41732)
add d732ddb144b feat(bubble): migrate saved bubble charts to bubble_v2 and drop the legacy plugin (#41728)
add b195f4796f4 feat(deck-multi): migrate deck_multi chart to the v1 chart data API (#41730)
add 75d750f5fb1 feat(compare): migrate compare charts to echarts_timeseries_line and drop the legacy plugin (#41738)
add 51eb4ce4e86 chore(viz): update SCOPE tracker — all charts migrated, phases 2-3 in review
add b9467f5ad70 chore(viz): drop the legacy- prefix from migrated chart plugin packages (#41751)
add 6ef48bdef1e chore(viz)!: remove explore_json endpoints, viz.py and the legacy chart data pipeline (#41750)
add 63de8b9cce4 docs: add UPDATING.md entries for the legacy viz pipeline removal and drop the working trackers
add eb79e9de040 fix: restore OAuth2RedirectError import after rebase
add f922ebf0995 fix: repair stale package-lock.json and alembic migration branch
add 9a4fc22875f fix: format Multi.tsx and update Multi.color.test.tsx for registry-based layer loading
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 (955d1c6a85a)
\
N -- N -- N refs/heads/remove-legacy-viz-pipeline (9a4fc22875f)
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:
.github/dependabot.yml | 277 --
RESOURCES/INTHEWILD.yaml | 39 +-
UPDATING.md | 99 +-
docs/admin_docs/configuration/alerts-reports.mdx | 6 +-
docs/admin_docs/configuration/cache.mdx | 12 +-
.../configuration/networking-settings.mdx | 6 +-
docs/admin_docs/security/securing_superset.mdx | 2 +-
docs/admin_docs/security/security.mdx | 155 +-
.../components/design-system/metadatabar.mdx | 16 +-
.../guidelines/backend-style-guidelines.md | 10 +-
.../guidelines/backend/dao-style-guidelines.md | 8 +-
docs/developer_docs/testing/backend-testing.md | 2 +-
.../creating-your-first-dashboard.mdx | 8 +-
docs/static/feature-flags.json | 21 +-
docs/static/img/logos/camptocamp.svg | Bin 0 -> 14528 bytes
docs/static/img/logos/craig.png | Bin 0 -> 40696 bytes
docs/static/img/logos/geo2france.png | Bin 0 -> 4687 bytes
docs/static/img/logos/geobretagne.svg | Bin 0 -> 7203 bytes
docs/static/img/logos/georchestra.svg | Bin 0 -> 12615 bytes
docs/static/img/logos/jDev.svg | Bin 0 -> 26135 bytes
docs/static/img/logos/mel.jpg | Bin 0 -> 27292 bytes
docs/static/img/logos/pi-Geosolutions.png | Bin 0 -> 22032 bytes
.../img/logos/rennes-ville-metropole_noir.svg | Bin 0 -> 4242 bytes
superset-core/pyproject.toml | 2 +-
.../cypress-base/cypress/e2e/explore/utils.ts | 6 +-
.../cypress-base/cypress/fixtures/charts.json | 4 -
superset-frontend/package-lock.json | 49 +-
superset-frontend/package.json | 3 +-
.../superset-core/src/translation/types/index.ts | 19 +-
.../superset-ui-chart-controls/src/fixtures.ts | 2 +-
.../src/operators/renameOperator.ts | 2 +-
.../src/operators/utils/timeOffset.ts | 6 +-
.../superset-ui-chart-controls/src/types.ts | 2 +-
.../test/operators/renameOperator.test.ts | 24 +
.../test/operators/utils/timeOffset.test.ts | 23 +
.../packages/superset-ui-core/package.json | 2 +-
.../src/color/CategoricalColorScale.ts | 7 +-
.../src/components/Icons/AntdEnhanced.tsx | 2 +
.../src/components/MetadataBar/ContentConfig.tsx | 6 +-
.../src/components/MetadataBar/ContentType.ts | 10 +-
.../components/MetadataBar/MetadataBar.stories.tsx | 22 +-
.../components/MetadataBar/MetadataBar.test.tsx | 12 +-
.../MetadataBar/MetadataBarOverview.stories.tsx | 4 +-
.../src/components/MetadataBar/constants.ts | 2 +-
.../src/components/Select/AsyncSelect.tsx | 5 +-
.../src/components/Select/Select.stories.tsx | 5 +-
.../src/components/Select/Select.tsx | 5 +-
.../superset-ui-core/src/utils/featureFlags.ts | 3 +-
.../test/color/CategoricalColorScale.test.ts | 84 +-
.../playwright/helpers/api/dataset.ts | 6 +-
.../playwright/tests/dashboard/theme.spec.ts | 35 +-
.../src/AgGridTable/index.tsx | 1 +
.../src/AgGridTableChart.tsx | 8 +
.../src/transformProps.ts | 15 +
.../plugin-chart-ag-grid-table/src/types.ts | 3 +-
.../src/utils/isEqualColumns.ts | 25 +-
.../src/utils/useColDefs.ts | 1 +
.../test/transformProps.test.ts | 266 ++
.../plugin-chart-echarts/src/BigNumber/utils.ts | 2 +-
.../src/Bubble/transformProps.ts | 11 +-
.../test/BigNumber/transformProps.test.ts | 28 +-
.../test/Bubble/transformProps.test.ts | 72 +
.../plugin-chart-table/src/DataTable/DataTable.tsx | 2 +-
.../plugins/plugin-chart-table/src/TableChart.tsx | 5 +-
.../src/layers/Polygon/transformProps.test.ts | 36 +
.../src/layers/Polygon/transformProps.ts | 16 +-
.../src/utilities/tooltipUtils.test.tsx | 90 +
.../src/utilities/tooltipUtils.tsx | 50 +-
superset-frontend/spec/fixtures/mockCharts.ts | 7 -
.../spec/fixtures/mockDashboardInfo.js | 3 +-
.../spec/fixtures/mockDashboardState.js | 3 +-
superset-frontend/spec/fixtures/mockDatasource.ts | 4 +-
superset-frontend/spec/fixtures/mockReportState.js | 1 -
.../spec/fixtures/mockSliceEntities.js | 23 +-
.../src/SqlLab/components/QueryTable/index.tsx | 26 +-
.../src/SqlLab/components/QueryTable/styles.ts | 1 +
.../src/SqlLab/components/ResultSet/index.tsx | 32 +-
.../SqlLab/components/SaveDatasetModal/index.tsx | 104 +-
.../SqlLab/components/SqlEditorTabHeader/index.tsx | 4 +-
superset-frontend/src/SqlLab/fixtures.ts | 3 +-
superset-frontend/src/SqlLab/types.ts | 10 +-
.../TimeGrainPreFilter.integration.test.tsx | 6 +-
.../src/components/AuditInfo/index.tsx | 6 +-
.../src/components/AuditInfo/types.ts | 4 +-
.../components/Chart/ChartErrorMessage.test.tsx | 14 +-
.../src/components/Chart/ChartErrorMessage.tsx | 8 +-
.../components/Chart/DrillBy/DrillByChart.test.tsx | 7 +-
.../components/Chart/DrillBy/DrillByModal.test.tsx | 7 +-
.../Chart/DrillBy/DrillBySubmenu.test.tsx | 2 +-
.../Chart/DrillDetail/DrillDetailPane.test.tsx | 7 +-
superset-frontend/src/components/Chart/types.ts | 6 +-
.../Datasource/ChangeDatasourceModal/index.tsx | 10 +-
.../DatasourceModal/DatasourceModal.test.tsx | 8 +
.../Datasource/DatasourceModal/index.tsx | 7 +-
.../DatasourceEditor/DatasourceEditor.tsx | 106 +-
.../DatasetUsageTab/DatasetUsageTab.test.tsx | 39 +-
.../components/DatasetUsageTab/index.tsx | 28 +-
.../tests/DatasourceEditor.test.utils.tsx | 2 +-
.../ErrorMessage/DatabaseErrorMessage.test.tsx | 12 +-
.../ErrorMessage/DatabaseErrorMessage.tsx | 18 +-
.../ErrorMessage/OAuth2RedirectMessage.test.tsx | 4 +-
.../ErrorMessage/TimeoutErrorMessage.test.tsx | 12 +-
.../ErrorMessage/TimeoutErrorMessage.tsx | 18 +-
.../src/components/FacePile/FacePile.stories.tsx | 60 -
.../src/components/FacePile/FacePile.test.tsx | 173 -
.../src/components/FacePile/index.tsx | 64 -
superset-frontend/src/components/FacePile/types.ts | 24 -
.../src/components/FacePile/utils.tsx | 49 -
.../src/components/TagsList/TagsList.test.tsx | 4 +-
superset-frontend/src/components/index.ts | 1 -
.../src/dashboard/actions/dashboardState.ts | 20 +-
superset-frontend/src/dashboard/actions/hydrate.ts | 4 +-
.../src/dashboard/actions/sliceEntities.ts | 6 +-
.../dashboard/components/Header/Header.test.tsx | 6 +-
.../src/dashboard/components/Header/index.tsx | 17 +-
.../components/Header/useDashboardMetadataBar.tsx | 17 +-
.../PropertiesModal/PropertiesModal.test.tsx | 249 +-
.../PropertiesModal/hooks/useAccessOptions.ts | 76 -
.../dashboard/components/PropertiesModal/index.tsx | 77 +-
.../sections/AccessSection.stories.tsx | 152 +
.../sections/AccessSection.test.tsx | 72 +-
.../PropertiesModal/sections/AccessSection.tsx | 119 +-
.../components/PropertiesModal/utils.test.ts | 90 -
.../dashboard/components/PropertiesModal/utils.ts | 81 -
.../src/dashboard/components/SaveModal.tsx | 10 +-
.../src/dashboard/components/SliceAdder.test.tsx | 2 +-
.../src/dashboard/components/SliceAdder.tsx | 11 +-
.../components/SliceHeader/SliceHeader.test.tsx | 2 +-
.../SliceHeaderControls.subdirectory.test.tsx | 2 +-
.../SliceHeaderControls.test.tsx | 2 +-
.../components/gridComponents/Chart/Chart.test.tsx | 1 -
.../nativeFilters/FilterBar/FilterBar.test.tsx | 6 +-
.../FilterBarSettings/FilterBarSettings.test.tsx | 2 +-
.../FiltersConfigForm/DependencyList.tsx | 6 +-
.../dashboard/containers/DashboardPage.test.tsx | 3 +-
superset-frontend/src/dashboard/types.ts | 13 +-
.../src/dashboard/util/permissionUtils.test.ts | 190 +-
.../src/dashboard/util/permissionUtils.ts | 25 +-
.../src/explore/actions/hydrateExplore.ts | 13 +-
.../src/explore/actions/saveModalActions.test.ts | 36 +-
.../src/explore/actions/saveModalActions.ts | 8 +-
.../ExploreChartHeader/ExploreChartHeader.test.tsx | 8 +-
.../components/ExploreChartHeader/index.tsx | 12 +-
.../ExploreChartHeader/useExploreMetadataBar.tsx | 4 +-
.../ExploreContainer/ExploreDndContext.tsx | 61 +
.../ExploreViewContainer.test.tsx | 185 +-
.../PropertiesModal/PropertiesModal.test.tsx | 64 +-
.../explore/components/PropertiesModal/index.tsx | 178 +-
.../src/explore/components/SaveModal.test.tsx | 48 +-
.../src/explore/components/SaveModal.tsx | 33 +-
.../DatasourceControl/DatasourceControl.test.tsx | 12 +-
.../controls/DatasourceControl/index.tsx | 12 +-
.../SelectAsyncControl/SelectAsyncControl.test.tsx | 6 +-
superset-frontend/src/explore/fixtures.tsx | 2 +-
.../src/explore/reducers/exploreReducer.ts | 30 +-
superset-frontend/src/explore/types.ts | 3 +-
.../src/features/alerts/AlertReportModal.test.tsx | 143 +-
.../src/features/alerts/AlertReportModal.tsx | 142 +-
.../alerts/components/NotificationMethod.test.tsx | 233 +
.../alerts/components/NotificationMethod.tsx | 246 +-
superset-frontend/src/features/alerts/types.ts | 4 +-
.../AllEntitiesTable.subdirectory.test.tsx | 6 +-
.../features/allEntities/AllEntitiesTable.test.tsx | 10 +-
.../src/features/allEntities/AllEntitiesTable.tsx | 15 +-
.../src/features/charts/ChartCard.tsx | 5 +-
.../src/features/cssTemplates/types.ts | 6 +-
.../src/features/dashboards/DashboardCard.test.tsx | 15 +-
.../src/features/dashboards/DashboardCard.tsx | 5 +-
.../DatasetPanel.subdirectory.test.tsx | 2 +-
.../datasets/AddDataset/DatasetPanel/fixtures.ts | 2 +-
.../datasets/AddDataset/Footer/Footer.test.tsx | 2 +-
.../src/features/datasets/AddDataset/types.tsx | 3 +-
.../datasets/DuplicateDatasetModal.test.tsx | 5 +-
.../datasets/hooks/useDatasetLists.test.ts | 10 +-
.../src/features/datasets/hooks/useDatasetLists.ts | 10 +-
.../DatasetMetadataBar.skipped-stories.tsx | 17 +-
.../metadataBar/useDatasetMetadataBar.test.tsx | 18 +-
.../datasets/metadataBar/useDatasetMetadataBar.tsx | 13 +-
superset-frontend/src/features/datasets/types.ts | 4 +-
.../OwnerSelectLabel/OwnerSelectLabel.test.tsx | 38 -
.../HeaderReportDropdown/index.test.tsx | 2 +-
.../reports/ReportModal/ReportModal.test.tsx | 109 +-
.../src/features/reports/ReportModal/index.tsx | 12 +-
.../features/reports/ReportModal/reducer.test.ts | 2 +-
superset-frontend/src/features/reports/types.ts | 2 +-
.../features/rls/RowLevelSecurityModal.test.tsx | 55 +-
.../src/features/rls/RowLevelSecurityModal.tsx | 217 +-
superset-frontend/src/features/rls/types.ts | 15 +-
.../SubjectPicker/SubjectPicker.stories.tsx | 169 +
.../subjects/SubjectPicker/SubjectPicker.test.tsx | 293 ++
.../src/features/subjects/SubjectPicker/index.tsx | 139 +
.../src/features/subjects/SubjectPicker/utils.ts | 200 +
.../subjects/SubjectPile/SubjectPile.stories.tsx | 74 +
.../subjects/SubjectPile/SubjectPile.test.tsx | 103 +
.../src/features/subjects/SubjectPile/index.tsx | 142 +
.../SubjectSelectLabel.stories.tsx | 115 +
.../SubjectSelectLabel}/index.tsx | 55 +-
superset-frontend/src/features/themes/types.ts | 6 +-
.../TimeGrainPreFilter.integration.test.tsx | 4 +-
superset-frontend/src/hooks/apiResources/charts.ts | 16 +-
.../src/hooks/apiResources/dashboards.test.ts | 2 +-
.../src/hooks/apiResources/dashboards.ts | 7 +-
.../pages/AlertReportList/AlertReportList.test.tsx | 66 +-
.../src/pages/AlertReportList/index.tsx | 51 +-
superset-frontend/src/pages/AllEntities/index.tsx | 14 +-
superset-frontend/src/pages/Chart/index.tsx | 8 +-
.../pages/ChartList/ChartList.listview.test.tsx | 12 +-
.../src/pages/ChartList/ChartList.test.tsx | 14 +-
.../src/pages/ChartList/ChartList.testHelpers.tsx | 48 +-
superset-frontend/src/pages/ChartList/index.tsx | 71 +-
.../DashboardList/DashboardList.behavior.test.tsx | 10 +-
.../DashboardList/DashboardList.listview.test.tsx | 2 +-
.../src/pages/DashboardList/DashboardList.test.tsx | 18 +-
.../DashboardList/DashboardList.testHelpers.tsx | 42 +-
.../src/pages/DashboardList/index.tsx | 96 +-
superset-frontend/src/pages/DatabaseList/index.tsx | 4 +-
.../DatasetList/DatasetList.listview.test.tsx | 60 +-
.../DatasetList/DatasetList.permissions.test.tsx | 3 +-
.../src/pages/DatasetList/DatasetList.test.tsx | 13 +-
.../pages/DatasetList/DatasetList.testHelpers.tsx | 40 +-
superset-frontend/src/pages/DatasetList/index.tsx | 48 +-
superset-frontend/src/pages/Home/index.tsx | 8 +-
.../src/pages/QueryHistoryList/index.tsx | 4 +-
.../RowLevelSecurityList.test.tsx | 82 +-
.../src/pages/RowLevelSecurityList/index.tsx | 45 +-
.../src/pages/SavedQueryList/index.tsx | 6 +-
superset-frontend/src/pages/TaskList/index.tsx | 12 +-
superset-frontend/src/setup/setupApp.ts | 3 +-
superset-frontend/src/types/Chart.ts | 8 +-
superset-frontend/src/types/Dashboard.ts | 11 +-
superset-frontend/src/types/Dataset.ts | 4 +-
.../src/types/{Owner.ts => Subject.ts} | 20 +-
superset-frontend/src/types/TaggedObject.ts | 4 +-
superset-frontend/src/types/{Owner.ts => User.ts} | 5 +-
superset-frontend/src/types/bootstrapTypes.ts | 2 +
.../{getOwnerName.test.ts => getUserName.test.ts} | 18 +-
.../src/utils/{getOwnerName.ts => getUserName.ts} | 10 +-
superset-frontend/src/views/CRUD/hooks.ts | 9 +-
superset-frontend/src/views/CRUD/types.ts | 14 +-
superset-frontend/src/views/CRUD/utils.test.tsx | 12 +-
superset-frontend/src/views/CRUD/utils.tsx | 102 +-
.../{eslint.config.js => eslint.config.mjs} | 17 +-
superset-websocket/package-lock.json | 205 +-
superset-websocket/package.json | 9 +-
superset-websocket/src/config.ts | 7 +-
superset-websocket/src/index.ts | 4 +-
superset-websocket/tsconfig.json | 5 +-
superset/charts/api.py | 61 +-
superset/charts/data/dashboard_filter_context.py | 2 +-
superset/charts/filters.py | 104 +-
superset/charts/schemas.py | 23 +-
superset/cli/sync_subjects.py | 108 +
superset/commands/base.py | 45 +-
superset/commands/chart/create.py | 14 +-
superset/commands/chart/delete.py | 4 +-
superset/commands/chart/importers/v1/utils.py | 180 +-
superset/commands/chart/update.py | 36 +-
superset/commands/dashboard/copy.py | 6 +-
superset/commands/dashboard/create.py | 21 +-
superset/commands/dashboard/delete.py | 6 +-
superset/commands/dashboard/export.py | 10 -
superset/commands/dashboard/importers/v1/utils.py | 65 +-
superset/commands/dashboard/update.py | 48 +-
superset/commands/database/uploaders/base.py | 11 +-
superset/commands/dataset/columns/delete.py | 4 +-
superset/commands/dataset/create.py | 12 +-
superset/commands/dataset/delete.py | 4 +-
superset/commands/dataset/duplicate.py | 14 +-
superset/commands/dataset/exceptions.py | 5 -
superset/commands/dataset/importers/v1/utils.py | 28 +-
superset/commands/dataset/metrics/delete.py | 4 +-
superset/commands/dataset/refresh.py | 4 +-
superset/commands/dataset/update.py | 15 +-
superset/commands/exceptions.py | 14 -
superset/commands/explore/get.py | 14 +-
superset/commands/export/assets.py | 162 +-
superset/commands/importers/v1/utils.py | 4 +-
superset/commands/report/create.py | 18 +-
superset/commands/report/delete.py | 4 +-
superset/commands/report/execute.py | 155 +-
superset/commands/report/execute_now.py | 2 +-
superset/commands/report/update.py | 22 +-
superset/commands/restore.py | 12 +-
superset/commands/security/create.py | 25 +-
superset/commands/security/reset.py | 14 +
superset/commands/security/update.py | 33 +-
superset/commands/semantic_layer/delete.py | 4 +-
superset/commands/semantic_layer/update.py | 2 +-
superset/commands/tag/export.py | 2 +-
superset/commands/tag/utils.py | 8 +-
superset/commands/tasks/update.py | 2 +-
superset/commands/utils.py | 193 +-
superset/common/tags.py | 20 +-
superset/config.py | 121 +-
superset/connectors/sqla/models.py | 74 +-
superset/css_templates/api.py | 4 +-
superset/daos/chart.py | 42 +-
superset/daos/dashboard.py | 66 +-
superset/daos/dataset.py | 41 +-
superset/daos/datasource.py | 2 +-
superset/daos/group.py | 65 +
superset/daos/report.py | 43 +-
superset/daos/role.py | 43 +-
superset/daos/tag.py | 6 +-
superset/daos/user.py | 40 +
superset/dashboards/api.py | 86 +-
superset/dashboards/filters.py | 158 +-
superset/dashboards/schemas.py | 47 +-
superset/databases/api.py | 54 +-
superset/datasets/api.py | 71 +-
superset/datasets/filters.py | 12 +-
superset/datasets/schemas.py | 7 +-
superset/datasource/schemas.py | 19 +-
superset/db_engine_specs/clickhouse.py | 7 +-
superset/db_engine_specs/databend.py | 76 +-
superset/examples/birth_names.py | 42 +-
superset/explorables/base.py | 2 +-
superset/explore/schemas.py | 12 +-
superset/explore/utils.py | 2 +-
superset/initialization/__init__.py | 17 +
superset/mcp_service/ARCHITECTURE.md | 2 +-
superset/mcp_service/SECURITY.md | 2 +-
superset/mcp_service/app.py | 34 +-
superset/mcp_service/auth.py | 2 +-
superset/mcp_service/chart/schemas.py | 30 +-
superset/mcp_service/chart/tool/generate_chart.py | 9 +-
superset/mcp_service/chart/tool/get_chart_info.py | 3 +-
superset/mcp_service/chart/tool/list_charts.py | 2 +-
superset/mcp_service/common/cache_schemas.py | 24 +-
superset/mcp_service/common/schema_discovery.py | 12 +-
superset/mcp_service/composite_token_verifier.py | 2 +-
superset/mcp_service/dashboard/schemas.py | 47 +-
.../tool/add_chart_to_existing_dashboard.py | 16 +-
.../dashboard/tool/generate_dashboard.py | 16 +-
.../dashboard/tool/get_dashboard_info.py | 6 +-
.../mcp_service/dashboard/tool/list_dashboards.py | 2 +-
.../dashboard/tool/manage_native_filters.py | 2 +-
.../dashboard/tool/remove_chart_from_dashboard.py | 4 +-
.../mcp_service/dashboard/tool/update_dashboard.py | 4 +-
superset/mcp_service/dataset/schemas.py | 29 +-
.../mcp_service/dataset/tool/create_dataset.py | 66 +-
superset/mcp_service/dataset/tool/list_datasets.py | 2 +-
superset/mcp_service/mcp_core.py | 22 +-
superset/mcp_service/privacy.py | 22 +-
superset/mcp_service/report/schemas.py | 29 +-
.../mcp_service/report/tool/get_report_info.py | 2 +-
superset/mcp_service/report/tool/list_reports.py | 4 +-
superset/mcp_service/rls/schemas.py | 28 +-
.../mcp_service/rls/tool/get_rls_filter_info.py | 2 +-
superset/mcp_service/rls/tool/list_rls_filters.py | 20 +-
superset/mcp_service/role/schemas.py | 53 +-
superset/mcp_service/system/schemas.py | 26 +
superset/mcp_service/tag/schemas.py | 2 +-
superset/mcp_service/tag/tool/get_tag_info.py | 2 +-
superset/mcp_service/tag/tool/list_tags.py | 2 +-
...03-23_10-00_b1c2d3e4f5a6_add_subjects_tables.py | 944 ++++
superset/models/dashboard.py | 69 +-
superset/models/helpers.py | 40 +-
superset/models/slice.py | 42 +-
superset/models/sql_lab.py | 27 +-
superset/queries/api.py | 13 +-
superset/queries/saved_queries/api.py | 6 +-
superset/reports/api.py | 48 +-
superset/reports/filters.py | 20 +-
superset/reports/models.py | 27 +-
superset/reports/schemas.py | 13 +-
superset/row_level_security/api.py | 48 +-
superset/row_level_security/schemas.py | 39 +-
superset/security/manager.py | 531 ++-
superset/semantic_layers/mapper.py | 133 +-
superset/semantic_layers/models.py | 2 +-
.../common => superset/subjects}/__init__.py | 0
superset/{tasks => subjects}/exceptions.py | 13 +-
superset/subjects/filters.py | 241 +
superset/subjects/hooks.py | 83 +
superset/subjects/models.py | 203 +
superset/{temporary_cache => subjects}/schemas.py | 30 +-
superset/subjects/sync.py | 144 +
.../exceptions.py => superset/subjects/types.py | 12 +-
superset/subjects/utils.py | 169 +
.../{views/css_templates.py => subjects/views.py} | 46 +-
superset/superset_typing.py | 4 +-
superset/tags/api.py | 14 +-
superset/tags/models.py | 67 +-
superset/tags/schemas.py | 3 +-
superset/tasks/api.py | 9 +-
superset/tasks/cache.py | 208 +-
superset/tasks/native_filter_cache.py | 245 ++
superset/tasks/types.py | 18 +-
superset/tasks/utils.py | 119 +-
superset/themes/api.py | 28 +-
superset/translations/ca/LC_MESSAGES/messages.po | 380 +-
superset/translations/cs/LC_MESSAGES/messages.po | 367 +-
superset/translations/de/LC_MESSAGES/messages.po | 398 +-
superset/translations/en/LC_MESSAGES/messages.po | 303 +-
superset/translations/es/LC_MESSAGES/messages.po | 380 +-
superset/translations/fa/LC_MESSAGES/messages.po | 366 +-
superset/translations/fi/LC_MESSAGES/messages.po | 510 ++-
superset/translations/fr/LC_MESSAGES/messages.po | 4630 ++++++++++----------
superset/translations/it/LC_MESSAGES/messages.po | 3891 ++++++++--------
superset/translations/ja/LC_MESSAGES/messages.po | 346 +-
superset/translations/lv/LC_MESSAGES/messages.po | 373 +-
superset/translations/messages.pot | 301 +-
superset/translations/mi/LC_MESSAGES/messages.po | 375 +-
superset/translations/nl/LC_MESSAGES/messages.po | 380 +-
superset/translations/pl/LC_MESSAGES/messages.po | 389 +-
.../translations/pt_BR/LC_MESSAGES/messages.po | 369 +-
superset/translations/ro/LC_MESSAGES/messages.po | 2911 +++++++++---
superset/translations/ru/LC_MESSAGES/messages.po | 364 +-
superset/translations/sk/LC_MESSAGES/messages.po | 367 +-
superset/translations/sl/LC_MESSAGES/messages.po | 380 +-
superset/translations/sr/LC_MESSAGES/messages.po | 3543 ++++++++-------
.../translations/sr_Latn/LC_MESSAGES/messages.po | 3596 +++++++--------
superset/translations/th/LC_MESSAGES/messages.po | 498 ++-
superset/translations/tr/LC_MESSAGES/messages.po | 327 +-
superset/translations/uk/LC_MESSAGES/messages.po | 372 +-
superset/utils/core.py | 6 +-
.../utils/pandas_postprocessing/contribution.py | 4 +-
superset/utils/urls.py | 34 +-
superset/views/base.py | 51 +-
superset/views/base_api.py | 10 +-
superset/views/core.py | 31 +-
superset/views/dashboard/mixin.py | 17 +-
superset/views/dashboard/views.py | 9 +-
superset/views/datasource/views.py | 14 +-
superset/views/filters.py | 57 +-
superset/views/sql_lab/views.py | 44 +-
superset/views/users/api.py | 4 +-
tests/integration_tests/base_api_tests.py | 402 +-
tests/integration_tests/base_tests.py | 65 +-
tests/integration_tests/charts/api_tests.py | 147 +-
tests/integration_tests/charts/commands_tests.py | 47 +-
tests/integration_tests/charts/data/api_tests.py | 4 +-
.../integration_tests/charts/soft_delete_tests.py | 34 +-
tests/integration_tests/commands_test.py | 5 +-
tests/integration_tests/core_tests.py | 17 +-
tests/integration_tests/dao/base_dao_test.py | 86 +-
tests/integration_tests/dashboard_tests.py | 8 +-
tests/integration_tests/dashboards/api_tests.py | 315 +-
.../integration_tests/dashboards/commands_tests.py | 24 +-
tests/integration_tests/dashboards/dao_tests.py | 33 +-
.../dashboards/dashboard_test_utils.py | 22 +-
.../dashboards/security/security_dataset_tests.py | 6 +-
.../dashboards/security/security_rbac_tests.py | 533 ---
.../dashboards/soft_delete_tests.py | 52 +-
.../dashboards/superset_factory_util.py | 88 +-
.../dashboards/test_theme_integration.py | 8 +-
.../dashboards/update_tabs_test.py | 33 +-
.../databases/commands/upload_test.py | 3 +-
tests/integration_tests/datasets/api_tests.py | 317 +-
tests/integration_tests/datasets/commands_tests.py | 17 +-
.../datasets/soft_delete_tests.py | 71 +-
tests/integration_tests/datasource_tests.py | 21 +-
.../integration_tests/fixtures/tabbed_dashboard.py | 15 +
tests/integration_tests/import_export_tests.py | 26 +-
tests/integration_tests/insert_chart_mixin.py | 21 +-
.../queries/saved_queries/api_tests.py | 5 +-
tests/integration_tests/reports/alert_tests.py | 50 +-
tests/integration_tests/reports/api_tests.py | 94 +-
tests/integration_tests/reports/commands_tests.py | 10 +-
tests/integration_tests/reports/scheduler_tests.py | 40 +-
tests/integration_tests/reports/utils.py | 43 +-
.../security/row_level_security_tests.py | 1448 +++---
tests/integration_tests/security_tests.py | 243 +-
tests/integration_tests/superset_test_config.py | 1 -
tests/integration_tests/tagging_tests.py | 8 +-
tests/integration_tests/tags/api_tests.py | 28 +-
.../tags/mysql_compatibility_test.py | 2 +-
.../charts/commands/importers/v1/import_test.py | 14 +-
tests/unit_tests/commands/chart/restore_test.py | 4 +-
.../commands/chart/test_access_checks.py | 46 +-
tests/unit_tests/commands/chart/update_test.py | 78 +-
tests/unit_tests/commands/dashboard/create_test.py | 68 +-
tests/unit_tests/commands/dashboard/export_test.py | 57 +-
.../unit_tests/commands/dashboard/restore_test.py | 10 +-
.../commands/databases/upload_command_test.py | 8 +-
tests/unit_tests/commands/dataset/restore_test.py | 12 +-
tests/unit_tests/commands/dataset/test_create.py | 10 +-
.../unit_tests/commands/dataset/test_duplicate.py | 409 +-
tests/unit_tests/commands/dataset/update_test.py | 35 +-
tests/unit_tests/commands/report/create_test.py | 2 +-
tests/unit_tests/commands/report/execute_test.py | 327 +-
.../unit_tests/commands/report/test_execute_now.py | 12 +-
tests/unit_tests/commands/report/update_test.py | 18 +-
tests/unit_tests/commands/security/rls_test.py | 93 +-
.../commands/semantic_layer/delete_test.py | 8 +-
.../commands/semantic_layer/update_test.py | 4 +-
.../commands/test_base_restore_command.py | 30 +-
tests/unit_tests/commands/test_utils.py | 138 +-
tests/unit_tests/common/test_time_shifts.py | 54 +
tests/unit_tests/connectors/sqla/models_test.py | 31 -
tests/unit_tests/dao/group_test.py | 81 +
tests/unit_tests/dao/role_test.py | 81 +
tests/unit_tests/dao/user_test.py | 74 +
.../daos/test_base_relationship_filters.py | 8 +-
tests/unit_tests/dashboards/api_test.py | 40 +-
.../commands/importers/v1/import_test.py | 44 +-
tests/unit_tests/dashboards/schema_tests.py | 4 +-
.../datasets/commands/importers/v1/import_test.py | 43 +-
.../unit_tests/db_engine_specs/test_clickhouse.py | 26 +-
tests/unit_tests/db_engine_specs/test_databend.py | 37 +
tests/unit_tests/explore/utils_test.py | 16 +-
.../mcp_service/chart/tool/test_generate_chart.py | 13 +-
.../mcp_service/chart/tool/test_list_charts.py | 4 +-
.../dashboard/test_dashboard_schemas.py | 8 +-
.../tool/test_add_chart_to_existing_dashboard.py | 29 +-
.../dashboard/tool/test_dashboard_generation.py | 101 +-
.../dashboard/tool/test_dashboard_tools.py | 97 +-
.../dashboard/tool/test_duplicate_dashboard.py | 7 +-
.../tool/test_remove_chart_from_dashboard.py | 65 +-
.../dashboard/tool/test_update_dashboard.py | 14 +-
.../database/tool/test_database_tools.py | 2 +-
.../dataset/tool/test_create_dataset.py | 36 +-
.../mcp_service/dataset/tool/test_dataset_tools.py | 78 +-
.../mcp_service/report/tool/test_report_tools.py | 37 +-
.../mcp_service/rls/tool/test_rls_tools.py | 41 +-
.../mcp_service/role/tool/test_role_tools.py | 49 +
.../saved_query/tool/test_saved_query_tools.py | 2 +-
.../system/tool/test_generate_bug_report.py | 2 +-
.../system/tool/test_get_current_user.py | 4 +-
.../mcp_service/system/tool/test_get_schema.py | 48 +-
.../mcp_service/system/tool/test_mcp_core.py | 22 +-
.../mcp_service/tag/tool/test_tag_tools.py | 4 +-
tests/unit_tests/mcp_service/test_mcp_config.py | 2 +-
tests/unit_tests/mcp_service/test_privacy.py | 13 +-
.../mcp_service/test_schema_discovery.py | 6 +-
.../mcp_service/utils/test_permissions_utils.py | 7 +-
.../mcp_service/utils/test_token_utils.py | 2 +-
.../models/owner_association_tables_test.py | 81 +-
tests/unit_tests/models/sql_lab_test.py | 97 +
tests/unit_tests/models/test_soft_delete_mixin.py | 4 +-
.../pandas_postprocessing/test_contribution.py | 33 +
.../reports/notifications/email_tests.py | 6 +-
.../reports/notifications/slack_tests.py | 2 +-
.../reports/notifications/webhook_tests.py | 2 +-
tests/unit_tests/row_level_security/schema_test.py | 23 +-
tests/unit_tests/security/audit_log_test.py | 24 +-
tests/unit_tests/security/manager_test.py | 26 +-
tests/unit_tests/security/test_permission_hooks.py | 156 -
tests/unit_tests/semantic_layers/mapper_test.py | 376 +-
.../unit_tests/subjects}/__init__.py | 0
tests/unit_tests/subjects/test_copy_command.py | 94 +
tests/unit_tests/subjects/test_filters.py | 321 ++
tests/unit_tests/subjects/test_raise_for_access.py | 403 ++
tests/unit_tests/subjects/test_security.py | 280 ++
tests/unit_tests/subjects/test_utils.py | 367 ++
tests/unit_tests/tags/models_test.py | 2 +-
tests/unit_tests/tasks/test_cache.py | 288 +-
tests/unit_tests/tasks/test_native_filter_cache.py | 405 ++
tests/unit_tests/tasks/test_utils.py | 383 +-
tests/unit_tests/utils/test_core.py | 13 +-
tests/unit_tests/utils/urls_tests.py | 50 +-
tests/unit_tests/views/datasource/views_test.py | 28 +-
553 files changed, 32292 insertions(+), 19953 deletions(-)
create mode 100644 docs/static/img/logos/camptocamp.svg
create mode 100644 docs/static/img/logos/craig.png
create mode 100644 docs/static/img/logos/geo2france.png
create mode 100644 docs/static/img/logos/geobretagne.svg
create mode 100644 docs/static/img/logos/georchestra.svg
create mode 100644 docs/static/img/logos/jDev.svg
create mode 100644 docs/static/img/logos/mel.jpg
create mode 100644 docs/static/img/logos/pi-Geosolutions.png
create mode 100644 docs/static/img/logos/rennes-ville-metropole_noir.svg
create mode 100644 superset-frontend/plugins/plugin-chart-ag-grid-table/test/transformProps.test.ts
create mode 100644 superset-frontend/plugins/preset-chart-deckgl/src/utilities/tooltipUtils.test.tsx
delete mode 100644 superset-frontend/src/components/FacePile/FacePile.stories.tsx
delete mode 100644 superset-frontend/src/components/FacePile/FacePile.test.tsx
delete mode 100644 superset-frontend/src/components/FacePile/index.tsx
delete mode 100644 superset-frontend/src/components/FacePile/types.ts
delete mode 100644 superset-frontend/src/components/FacePile/utils.tsx
delete mode 100644 superset-frontend/src/dashboard/components/PropertiesModal/hooks/useAccessOptions.ts
create mode 100644 superset-frontend/src/dashboard/components/PropertiesModal/sections/AccessSection.stories.tsx
delete mode 100644 superset-frontend/src/dashboard/components/PropertiesModal/utils.test.ts
delete mode 100644 superset-frontend/src/dashboard/components/PropertiesModal/utils.ts
delete mode 100644 superset-frontend/src/features/owners/OwnerSelectLabel/OwnerSelectLabel.test.tsx
create mode 100644 superset-frontend/src/features/subjects/SubjectPicker/SubjectPicker.stories.tsx
create mode 100644 superset-frontend/src/features/subjects/SubjectPicker/SubjectPicker.test.tsx
create mode 100644 superset-frontend/src/features/subjects/SubjectPicker/index.tsx
create mode 100644 superset-frontend/src/features/subjects/SubjectPicker/utils.ts
create mode 100644 superset-frontend/src/features/subjects/SubjectPile/SubjectPile.stories.tsx
create mode 100644 superset-frontend/src/features/subjects/SubjectPile/SubjectPile.test.tsx
create mode 100644 superset-frontend/src/features/subjects/SubjectPile/index.tsx
create mode 100644 superset-frontend/src/features/subjects/SubjectSelectLabel/SubjectSelectLabel.stories.tsx
rename superset-frontend/src/features/{owners/OwnerSelectLabel => subjects/SubjectSelectLabel}/index.tsx (56%)
copy superset-frontend/src/types/{Owner.ts => Subject.ts} (69%)
rename superset-frontend/src/types/{Owner.ts => User.ts} (87%)
rename superset-frontend/src/utils/{getOwnerName.test.ts => getUserName.test.ts} (65%)
rename superset-frontend/src/utils/{getOwnerName.ts => getUserName.ts} (80%)
rename superset-websocket/{eslint.config.js => eslint.config.mjs} (75%)
create mode 100644 superset/cli/sync_subjects.py
create mode 100644 superset/daos/group.py
create mode 100644 superset/migrations/versions/2026-03-23_10-00_b1c2d3e4f5a6_add_subjects_tables.py
copy {superset-core/src/superset_core/common => superset/subjects}/__init__.py (100%)
copy superset/{tasks => subjects}/exceptions.py (76%)
create mode 100644 superset/subjects/filters.py
create mode 100644 superset/subjects/hooks.py
create mode 100644 superset/subjects/models.py
copy superset/{temporary_cache => subjects}/schemas.py (62%)
create mode 100644 superset/subjects/sync.py
copy superset-extensions-cli/src/superset_extensions_cli/exceptions.py => superset/subjects/types.py (84%)
create mode 100644 superset/subjects/utils.py
copy superset/{views/css_templates.py => subjects/views.py} (52%)
create mode 100644 superset/tasks/native_filter_cache.py
delete mode 100644 tests/integration_tests/dashboards/security/security_rbac_tests.py
create mode 100644 tests/unit_tests/dao/group_test.py
create mode 100644 tests/unit_tests/dao/role_test.py
copy {superset-core/src/superset_core/common => tests/unit_tests/subjects}/__init__.py (100%)
create mode 100644 tests/unit_tests/subjects/test_copy_command.py
create mode 100644 tests/unit_tests/subjects/test_filters.py
create mode 100644 tests/unit_tests/subjects/test_raise_for_access.py
create mode 100644 tests/unit_tests/subjects/test_security.py
create mode 100644 tests/unit_tests/subjects/test_utils.py
create mode 100644 tests/unit_tests/tasks/test_native_filter_cache.py