You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@superset.apache.org by mi...@apache.org on 2026/07/08 19:37:40 UTC

(superset) branch mcp-delete-dashboard updated (5df704da80b -> 50985f89f1a)

This is an automated email from the ASF dual-hosted git repository.

aminghadersohi pushed a change to branch mcp-delete-dashboard
in repository https://gitbox.apache.org/repos/asf/superset.git


    omit 5df704da80b test(mcp): address review feedback on delete/undelete dashboard tools
    omit 314e184f9f7 feat(mcp): add undelete_dashboard tool and soft-delete-aware delete responses
    omit 31a3b510b1d feat(mcp): add delete_dashboard tool
     add d9e1f34527b fix(a11y): add aria-label to notification method remove button (#41850)
     add 09361606335 chore(deps-dev): bump eslint-plugin-cypress from 3.6.0 to 6.4.2 in /superset-frontend (#41849)
     add 8f4c4117656 fix(mcp): coerce Role ORM objects to role names in UserInfo schema (#40746)
     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 e65b2c49d73 fix(marshmallow): add compatibility layer for Flask-AppBuilder with marshmallow 4.x (#35920)
     add 8e549e49750 chore(deps-dev): update playwright requirement from <2,>=1.60.0 to >=1.61.0,<2 (#41890)
     add 31351eb52af chore(deps-dev): bump @types/node from 26.0.1 to 26.1.0 in /superset-frontend (#41896)
     add 15f8b8e9b40 chore(deps): bump immer from 11.1.8 to 11.1.9 in /superset-frontend (#41894)
     add cfc05159316 feat(mcp): add delete_dashboard tool
     add 4bfbdecd11c feat(mcp): add undelete_dashboard tool and soft-delete-aware delete responses
     add 50985f89f1a test(mcp): address review feedback on delete/undelete dashboard tools

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   (5df704da80b)
            \
             N -- N -- N   refs/heads/mcp-delete-dashboard (50985f89f1a)

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                             |  289 --
 RESOURCES/INTHEWILD.yaml                           |   39 +-
 UPDATING.md                                        |  100 +-
 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
 pyproject.toml                                     |    2 +-
 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                |   77 +-
 superset-frontend/package.json                     |    7 +-
 .../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         |    4 +-
 .../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       |  248 +-
 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/marshmallow_compatibility.py              |   14 +-
 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 +-
 superset/mcp_service/user/schemas.py               |   45 +-
 ...03-23_10-00_b1c2d3e4f5a6_add_subjects_tables.py |  944 ++++
 superset/models/dashboard.py                       |   69 +-
 superset/models/helpers.py                         |   41 +-
 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/themes/schemas.py                         |   41 +-
 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          |  249 +-
 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 +-
 tests/unit_tests/mcp_service/user/test_schemas.py  |  153 +
 .../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/test_marshmallow_compatibility.py |  182 +
 tests/unit_tests/themes/api_test.py                |   45 +-
 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 +-
 560 files changed, 32774 insertions(+), 20009 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
 create mode 100644 tests/unit_tests/mcp_service/user/test_schemas.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
 create mode 100644 tests/unit_tests/test_marshmallow_compatibility.py