You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@superset.apache.org by di...@apache.org on 2025/07/29 13:34:46 UTC
(superset) branch msyavuz/fix/console-errors updated (f8e4dd4acb -> 98203d7c04)
This is an automated email from the ASF dual-hosted git repository.
diegopucci pushed a change to branch msyavuz/fix/console-errors
in repository https://gitbox.apache.org/repos/asf/superset.git
from f8e4dd4acb fix: Move menu to items prop for dashboard and explore
add b280ab9e1f fix: adding and removing tags does not work in control panel properties modal (#34147)
add 67b21c45df feat(filter panel): hide filter panel on all dashboard by default. (#32870)
add 31a15c5162 fix(DrillBy): make drill by work with multi metric charts (#34171)
add 42d9a78777 feat(theming): Introduce bootstrap-driven Superset theme configurations (#34144)
add 8a8248b575 docs(development): Fix typo in the documentation (#34163)
add fe9eef9198 feat: removing dup logic in sqla/models.py and models/helpers.py (#34177)
add 0dc48e9b41 fix(sqllab): pass DB id instead of name (#33955)
add 83b6f672ff fix(databricks): string escaper (#34180)
add 000d353ef3 fix(sqllab): database ID (#34181)
add 16f4516903 chore(Oracle): Update oracle column length to 128 (#34179)
add e8926f177d feat(i18n): add Catalan (ca) translations (#33953)
add f756cee01b fix(theming): Remove leftover antd5 prefix (#34188)
add 94d47113ea feat(snowflake): Support Snowflake private keys w/o passphrase (#34156)
add 96cb6030c8 fix(explore): Display missing dataset for denied access (#34129)
add d6eb6e08d0 style(helm): Minor reformatting of helm chart templates (#33736)
add 58bd3bfcf0 fix(chart): update geographical info for latvia (#33450)
add 1958df6b83 fix: dataset endpoint `/rowlevelsecurity/related/tables` doesn't apply filters as expected (#34192)
add bbb2279644 fix(theming): Superset theme configurations correctly applying to charts (#34218)
add 88ee90c579 chore: Updates files related to 4.1.3 release (#34217)
add dc41c45bec feat(pivot-table-chart): Download as pivoted excel (#33569)
add 5912fad745 fix(dashboard): Fix subitem selection on dashboard download menu (#33933)
add 2db8f809ba fix: proper handling of boolean filters with snowflake (#34199)
add da6947d295 feat(deckgl): add support for OpenStreetMap as our new default and make "tile-providers" more configurable FIX (#34204)
add 0c5da6cb5d fix(theming): World map tooltip color (#34229)
add 29d2fac485 fix(Chart): Calculate chart height correctly (#34224)
add a0a49f9300 feat: add Claude Code GitHub Action integration (#34231)
add 4fe11869fc chore(deps): bump on-headers and compression in /superset-frontend (#34216)
add 2c453035e4 chore(deps): bump on-headers and morgan in /superset-websocket/utils/client-ws-app (#34215)
add b24aca0304 fix: bug when updating dashboard (#34193)
add aff847b3af fix: database model Collapse state (#34126)
add 4518f6999c chore(deps): bump form-data from 4.0.1 to 4.0.4 in /superset-frontend (#34265)
add 6e02603098 chore(deps): bump form-data from 4.0.0 to 4.0.4 in /docs (#34263)
add 7e67deead7 chore(deps-dev): bump form-data from 4.0.0 to 4.0.4 in /superset-embedded-sdk (#34262)
add fe1fddde05 feat(docs): migrate ESLint to v9 (#34207)
add f4f516c64c fix: Missing ownState and isCached props in Chart.jsx (#34259)
add 229d92590a fix: Matching errorType on superset api error with SupersetError (#34261)
add 09c4afc894 feat: introduce comprehensive LLM context guides for AI-powered development (#34194)
add 2c81eb6c39 feat(docker): do not include chromium (headless browser) by default in Dockerfile (#34258)
add 77f66e7434 fix: build issues on master with 'npm run dev' (#34272)
add 1df5e59fdf fix(theming): Theming visual fixes (#34253)
add c444eed63e chore(docker): use editable mode in docker images (#34146)
add 9c6271136d fix(theming): Visual regressions p2 (#34279)
add 11324607d0 fix: Bulk select is not respecting the TAGGING_SYSTEM feature flag (#34282)
add 710c277681 style(Button): Vertically align icons across all buttons (#34067)
add 32f8f33a4f fix(deckgl): fix deck.gl color breakpoints Control (#34244)
add 77ffe65773 chore(deps): bump axios from 1.10.0 to 1.11.0 in /docs (#34285)
add 9099b0f00d fix: fix the pre-commit hook for tsc (#34275)
add 43775e9373 fix(sqllab_export): manually encode CSV output to support utf-8-sig (#34235)
add 800c1639ec chore(deps-dev): bump prettier from 3.5.3 to 3.6.2 in /superset-frontend (#33997)
add 9b88527883 chore: remove supposedly dev dep `html-webpack-plugin` from lockfile (#34288)
add 1e5a4e9bdc fix: Saved queries list break if one query can't be parsed (#34289)
add 7a1c056374 fix(charting): correctly categorize numeric columns with NULL values (#34213)
add da55a6c94a fix(chart-download): ensure full table or handlebar chart is captured in image export (#34233)
add c99843b13a fix: Hide View in SQL Lab for users without access (#34293)
add ab59b7e9b0 feat: make `SupersetClient` retry on 502-504 (#34290)
add efa8cb6fa4 chore: improve sqlglot parsing (#34270)
add 3f8472ca7b chore: move some rules from ruff -> pylint (#34292)
add 30e5684006 fix: address numerous long-standing console errors (python & web) (#34299)
add 89bf77b5c9 fix(theming): Fix visual regressions from theming P7 (#34237)
add 3177131d52 feat: re-order CRUD list view action buttons (#34294)
add b794b192d1 fix: return 422 on invalid SQL (#34303)
add 8df5860826 chore: bump sqlglot to latest version (27.3.0) (#34302)
add 7f44992c4b fix: enhance disallowed SQL functions list for improved security (#33084)
add 9c771fb2ba fix: preserve correct column order when table layout is changed with time comparison enabled (#34300)
add c25b4221f8 fix(npm): more reliable execution of `npm run update-maps` (#34305)
add 8783579aa8 fix(cartodiagram): add missing locales for rendering echarts (#34268)
add 5f11f9097a fix: Charts list is displaying empty dataset names when there's no schema (#34315)
add e741a3167f feat: add a theme CRUD page to manage themes (#34182)
add 1be2287b3a feat(timeseries): enhance 'Series Limit' to support grouping the long tail (#34308)
add c49789167b style(chart): restyle table pagination (#34311)
add 1a4e2173f5 fix(NavBar): Add brand text back (#34318)
add 913e068113 style(FastVizSwitcher): Adjust padding for FastVizSwitcher selector (#34317)
add 604d72cc98 feat: introducing a docker-compose-light.yml for lighter development (#34324)
add 22b3cc0480 chore: bump BigQuery dialect to 1.15.0 (#34371)
add dc0c389488 docs(development): fix 2 typos in the dockerfile (#34341)
add f554848c9f fix(PivotTable): Render html in cells if allowRenderHtml is true (#34351)
add ff76ab647f build(deps): update `ag-grid` to non-breaking major v34 (#34326)
add bb572983cd feat(theming): Align embedded sdk with theme configs (#34273)
add 914ce9aa4f feat: read column metadata (#34359)
add 122bb68e5a fix: subquery alias in RLS (#34374)
add 98203d7c04 merge
No new revisions were added by this update.
Summary of changes:
.cursor/rules/dev-standard.mdc | 125 +
.github/ISSUE_TEMPLATE/bug-report.yml | 2 +-
.github/copilot-instructions.md | 1 +
.github/workflows/claude.yml | 82 +
.github/workflows/superset-python-unittest.yml | 2 +-
.gitignore | 4 +
.pre-commit-config.yaml | 17 +-
.rat-excludes | 8 +
CHANGELOG/4.1.3.md | 58 +
CLAUDE.md | 1 +
Dockerfile | 8 +-
GEMINI.md | 1 +
GPT.md | 1 +
LLMS.md | 191 +
UPDATING.md | 5 +-
docker-compose-image-tag.yml | 3 +
docker-compose-light.yml | 157 +
docker-compose-non-dev.yml | 3 +
docker-compose.yml | 3 +
docker/.env | 6 +-
docker/pythonpath_dev/.gitignore | 1 +
docker/pythonpath_dev/superset_config.py | 2 +-
.../pythonpath_dev/superset_config_docker_light.py | 37 +-
docs/.eslintrc.js | 47 -
docs/docs/configuration/map-tiles.mdx | 78 +
docs/docs/configuration/theming.mdx | 89 +-
docs/docs/contributing/development.mdx | 44 +-
docs/docs/installation/docker-compose.mdx | 34 +-
{superset-websocket => docs}/eslint.config.js | 47 +-
docs/package.json | 16 +-
docs/src/pages/index.tsx | 2 +-
docs/src/theme/Root.js | 20 +-
docs/yarn.lock | 488 +-
helm/superset/Chart.yaml | 2 +-
helm/superset/README.md | 2 +-
helm/superset/templates/init-job.yaml | 10 +-
helm/superset/templates/pdb-beat.yaml | 10 +-
helm/superset/templates/pdb-flower.yaml | 10 +-
helm/superset/templates/pdb-worker.yaml | 10 +-
helm/superset/templates/pdb-ws.yaml | 10 +-
helm/superset/templates/pdb.yaml | 10 +-
pyproject.toml | 20 +-
requirements/base.txt | 2 +-
requirements/development.txt | 4 +-
scripts/check-type.js | 101 +-
superset-embedded-sdk/package-lock.json | 360 +-
.../cypress/e2e/dashboard/drillby.test.ts | 6 +-
.../e2e/dashboard/horizontalFilterBar.test.ts | 1 +
superset-frontend/jest.config.js | 2 +-
superset-frontend/package-lock.json | 1446 ++-
superset-frontend/package.json | 14 +-
.../src/components/ControlHeader.tsx | 17 +-
.../src/components/Select.tsx | 4 +-
.../src/sections/echartsTimeSeriesQuery.tsx | 2 +-
.../src/shared-controls/sharedControls.tsx | 14 +
.../superset-ui-chart-controls/src/types.ts | 1 +
.../src/components/AsyncAceEditor/index.tsx | 9 +-
.../AsyncAceEditor/useJsonValidation.test.ts | 75 +
.../components/AsyncAceEditor/useJsonValidation.ts | 82 +
.../src/components/Button/index.tsx | 11 +-
.../src/components/CodeSyntaxHighlighter/index.tsx | 11 +-
.../components/Collapse/CollapseLabelInModal.tsx | 58 +-
.../src/components/ConfirmStatusChange/index.tsx | 1 +
.../src/components/DeleteModal/index.tsx | 11 +-
.../src/components/DeleteModal/types.ts | 1 +
.../src/components/EmptyState/index.tsx | 4 +-
.../src/components/EmptyState/types.ts | 2 +
.../src/components/Icons/BaseIcon.tsx | 8 +-
.../src/components/InfoTooltip/index.tsx | 4 +-
.../src/components/Label/index.tsx | 4 +-
.../src/components/LastUpdated/index.tsx | 21 +-
.../src/components/Modal/FormModal.tsx | 2 +
.../src/components/Modal/Modal.stories.tsx | 2 +-
.../src/components/Modal/Modal.tsx | 11 +-
.../superset-ui-core/src/components/Modal/types.ts | 3 +-
.../src/components/ModalTrigger/index.tsx | 1 +
.../src/components/PopoverDropdown/index.tsx | 2 +-
.../src/components/Radio/index.tsx | 14 +-
.../TelemetryPixel/TelemetryPixel.test.tsx | 2 +-
.../src/components/TelemetryPixel/index.tsx | 3 +-
.../src/components/ThemeEditor/index.tsx | 150 -
.../src/components/ThemeSelect/index.tsx | 79 -
.../components/ThemeSubMenu/ThemeSubMenu.test.tsx | 273 +
.../src/components/ThemeSubMenu/index.tsx | 170 +
.../src/components/Typography/index.tsx | 1 +
.../src/components/UnsavedChangesModal/index.tsx | 162 +-
.../superset-ui-core/src/components/index.ts | 3 +
.../superset-ui-core/src/connection/constants.ts | 2 +-
.../superset-ui-core/src/query/buildQueryObject.ts | 2 +
.../superset-ui-core/src/theme/Theme.test.tsx | 39 +-
.../packages/superset-ui-core/src/theme/Theme.tsx | 70 +-
.../superset-ui-core/src/theme/exampleThemes.ts | 10 +-
.../packages/superset-ui-core/src/theme/index.tsx | 41 +-
.../packages/superset-ui-core/src/theme/types.ts | 74 +-
.../superset-ui-core/src/theme/utils.test.ts | 105 +-
.../packages/superset-ui-core/src/theme/utils.ts | 61 +-
.../src/theme/utils/themeUtils.test.ts | 134 +
.../superset-ui-core/src/theme/utils/themeUtils.ts | 113 +
.../superset-ui-core/src/utils/featureFlags.ts | 4 +-
.../src/validator/validateMapboxStylesUrl.ts | 23 +-
.../test/validator/validateMapboxStylesUrl.test.ts | 7 +-
.../scripts/Country Map GeoJSON Generator.ipynb | Bin 10916999 -> 2319015 bytes
.../src/countries/latvia.geojson | Bin 305206 -> 11637199 bytes
.../src/ReactWorldMap.jsx | 4 +
.../legacy-plugin-chart-world-map/src/WorldMap.js | 2 +-
.../legacy-preset-chart-deckgl/package.json | 15 +-
.../src/DeckGLContainer.tsx | 34 +-
.../src/layers/Hex/controlPanel.ts | 6 +-
.../src/utilities/Shared_DeckGL.tsx | 36 +-
.../src/utilities/utils.ts | 2 +-
.../legacy-preset-chart-deckgl/src/utils.ts | 45 +
.../plugin-chart-ag-grid-table/package.json | 4 +-
.../src/AgGridTable/index.tsx | 75 +-
.../plugin-chart-ag-grid-table/src/consts.ts | 4 -
.../plugins/plugin-chart-ag-grid-table/src/i18n.ts | 66 -
.../plugins/plugin-chart-cartodiagram/package.json | 2 +
.../src/components/ChartLayer.tsx | 8 +
.../src/components/ChartWrapper.tsx | 21 +-
.../src/components/OlChartMap.tsx | 5 +
.../plugins/plugin-chart-cartodiagram/src/types.ts | 2 +
.../src/util/chartUtil.tsx | 2 +
.../test/components/chartLayer.test.ts | 2 +
.../src/BigNumber/BigNumberViz.tsx | 382 +-
.../src/Sankey/transformProps.ts | 4 +-
.../src/Timeseries/EchartsTimeseries.tsx | 10 +-
.../src/Tree/transformProps.ts | 4 +-
.../plugin-chart-echarts/src/components/Echart.tsx | 85 +-
.../test/MixedTimeseries/buildQuery.test.ts | 2 +
.../src/react-pivottable/TableRenderers.jsx | 14 +-
.../plugins/plugin-chart-table/src/Styles.tsx | 9 +-
.../plugins/plugin-chart-table/src/TableChart.tsx | 6 +-
.../plugins/plugin-chart-table/src/consts.ts | 5 +-
.../plugins/plugin-chart-table/src/i18n.ts | 66 -
.../SqlLab/components/SaveDatasetModal/index.tsx | 24 +-
.../src/SqlLab/components/SaveQuery/index.tsx | 12 +-
.../src/SqlLab/components/SqlEditor/index.tsx | 3 +-
.../src/SqlLab/components/TableElement/index.tsx | 4 +-
.../assets/images/icons/big_number_chart_tile.svg | Bin 1321 -> 1380 bytes
.../src/components/Chart/DrillBy/DrillByModal.tsx | 1 +
.../Chart/DrillDetail/DrillDetailModal.tsx | 1 +
.../components/Chart/MenuItemWithTruncation.tsx | 2 +-
.../src/components/Chart/chartAction.js | 6 +-
.../src/components/CrudThemeProvider.tsx | 76 +
.../DatabaseSelector/DatabaseSelector.test.tsx | 2 +-
.../src/components/DatabaseSelector/index.tsx | 7 +-
.../Datasource/ChangeDatasourceModal.tsx | 1 +
.../src/components/Datasource/DatasourceEditor.jsx | 65 +-
.../components/ErrorMessage/BasicErrorAlert.tsx | 9 +-
.../src/components/ErrorMessage/ErrorAlert.tsx | 1 +
.../ErrorMessage/ErrorMessageWithStackTrace.tsx | 3 +-
.../src/components/ImportModal/index.tsx | 5 +-
.../src/components/ListView/Filters/Search.tsx | 8 +-
.../src/components/MessageToasts/Toast.tsx | 1 -
.../ModalTitleWithIcon/ModalTitleWithIcon.test.tsx | 60 +
.../src/components/ModalTitleWithIcon/index.tsx | 62 +
superset-frontend/src/components/Tag/TagType.ts | 7 +
superset-frontend/src/components/Tag/index.tsx | 3 +-
superset-frontend/src/constants.ts | 7 +-
.../src/dashboard/actions/dashboardInfo.ts | 46 +
.../src/dashboard/actions/dashboardState.js | 5 +
.../components/CssEditor/CssEditor.test.tsx | 38 +-
.../src/dashboard/components/CssEditor/index.tsx | 224 +-
.../DashboardBuilder/DashboardBuilder.test.tsx | 46 +
.../dashboard/components/DashboardBuilder/state.ts | 3 +
.../dashboard/components/EmbeddedModal/index.tsx | 9 +-
.../dashboard/components/Header/Header.test.tsx | 6 +-
.../src/dashboard/components/Header/index.jsx | 6 +
.../src/dashboard/components/Header/types.ts | 4 +
.../Header/useHeaderActionsDropdownMenu.tsx | 18 +-
.../PropertiesModal/PropertiesModal.test.tsx | 4 +-
.../dashboard/components/PropertiesModal/index.tsx | 23 +-
.../components/RefreshIntervalModal.test.tsx | 14 +-
.../src/dashboard/components/SaveModal.tsx | 280 +-
.../src/dashboard/components/SliceHeader/index.tsx | 3 +
.../SliceHeaderControls.test.tsx | 15 +
.../components/SliceHeaderControls/index.tsx | 10 +
.../dashboard/components/gridComponents/Chart.jsx | 41 +-
.../dashboard/components/gridComponents/Tabs.jsx | 1 -
.../menu/DownloadMenuItems/DownloadAsImage.tsx | 2 +
.../menu/DownloadMenuItems/DownloadAsPdf.tsx | 2 +
.../FilterBar/ActionButtons/index.tsx | 20 +-
.../CrossFilters/ScopingModal/ScopingModal.tsx | 4 +-
.../src/dashboard/containers/DashboardPage.tsx | 29 +-
.../src/dashboard/reducers/dashboardInfo.js | 7 +
superset-frontend/src/dashboard/styles.ts | 14 +-
superset-frontend/src/dashboard/types.ts | 7 +
.../EmbeddedContextProviders.tsx} | 41 +-
superset-frontend/src/embedded/index.tsx | 40 +-
.../src/explore/components/ControlHeader.tsx | 1 +
.../explore/components/ControlPanelsContainer.tsx | 1 +
.../DatasourcePanel/DatasourcePanelItem.tsx | 3 +-
.../src/explore/components/EmbedCodeContent.jsx | 2 +-
.../explore/components/PropertiesModal/index.tsx | 23 +-
.../src/explore/components/SaveModal.tsx | 7 +-
.../ColorBreakpointPopoverControl.tsx | 2 +-
.../DatasourceControl/DatasourceControl.test.tsx | 27 +
.../controls/DatasourceControl/index.jsx | 93 +-
.../controls/DateFilterControl/DateFilterLabel.tsx | 23 +-
.../DndColumnSelectControl/ColumnSelectPopover.tsx | 7 +-
.../DndColumnSelectControl/DndFilterSelect.tsx | 5 +-
.../explore/components/controls/ViewQuery.test.tsx | 38 +-
.../src/explore/components/controls/ViewQuery.tsx | 10 +-
.../controls/VizTypeControl/FastVizSwitcher.tsx | 13 +-
.../components/controls/VizTypeControl/VizTile.tsx | 3 +-
.../controls/VizTypeControl/constants.tsx | 2 +-
.../useExploreAdditionalActionsMenu/index.jsx | 21 +
.../src/explore/controlPanels/sections.tsx | 3 +-
superset-frontend/src/explore/fixtures.tsx | 4 +-
superset-frontend/src/explore/types.ts | 2 +-
.../src/features/alerts/AlertReportModal.tsx | 20 +-
.../annotationLayers/AnnotationLayerModal.tsx | 41 +-
.../src/features/annotations/AnnotationModal.tsx | 39 +-
.../src/features/cssTemplates/CssTemplateModal.tsx | 37 +-
.../databases/DatabaseModal/ExtraOptions.test.tsx | 28 +
.../databases/DatabaseModal/ExtraOptions.tsx | 40 +-
.../databases/DatabaseModal/SSHTunnelForm.tsx | 2 +-
.../src/features/databases/DatabaseModal/index.tsx | 53 +-
.../src/features/databases/DatabaseModal/styles.ts | 3 +-
.../UploadDataModel/UploadDataModal.test.tsx | 66 +-
.../features/databases/UploadDataModel/index.tsx | 42 +-
.../features/databases/UploadDataModel/styles.ts | 2 +-
.../features/datasets/DuplicateDatasetModal.tsx | 11 +-
.../src/features/groups/GroupListModal.tsx | 11 +-
superset-frontend/src/features/home/ChartTable.tsx | 18 +-
.../src/features/home/DashboardTable.tsx | 17 +-
superset-frontend/src/features/home/Menu.test.tsx | 39 +
superset-frontend/src/features/home/Menu.tsx | 9 +-
superset-frontend/src/features/home/RightMenu.tsx | 51 +-
.../src/features/home/SavedQueries.tsx | 5 +-
.../src/features/rls/RowLevelSecurityModal.tsx | 28 +-
.../src/features/roles/RoleListAddModal.tsx | 12 +-
.../src/features/roles/RoleListDuplicateModal.tsx | 11 +-
.../src/features/roles/RoleListEditModal.tsx | 10 +-
.../src/features/tags/BulkTagModal.tsx | 4 +-
superset-frontend/src/features/tags/TagModal.tsx | 10 +-
superset-frontend/src/features/tags/tags.ts | 7 +-
.../src/features/themes/ThemeModal.test.tsx | 286 +
.../src/features/themes/ThemeModal.tsx | 414 +
.../src/features/{cssTemplates => themes}/types.ts | 8 +-
.../src/features/users/UserListModal.tsx | 9 +-
.../filters/components/Range/RangeFilterPlugin.tsx | 2 +-
superset-frontend/src/pages/ActionLog/index.tsx | 8 +-
.../src/pages/AlertReportList/index.tsx | 36 +-
.../src/pages/AnnotationLayerList/index.tsx | 32 +-
.../src/pages/AnnotationList/index.tsx | 8 +-
superset-frontend/src/pages/Chart/Chart.test.tsx | 89 +
superset-frontend/src/pages/Chart/index.tsx | 112 +-
.../src/pages/ChartList/ChartList.test.jsx | 90 +
superset-frontend/src/pages/ChartList/index.tsx | 52 +-
.../src/pages/CssTemplateList/index.tsx | 18 +-
.../src/pages/DashboardList/index.tsx | 47 +-
superset-frontend/src/pages/DatabaseList/index.tsx | 16 +-
superset-frontend/src/pages/DatasetList/index.tsx | 40 +-
superset-frontend/src/pages/GroupsList/index.tsx | 33 +-
superset-frontend/src/pages/Home/index.tsx | 1 +
superset-frontend/src/pages/Login/index.tsx | 2 +-
superset-frontend/src/pages/Register/index.tsx | 2 +-
superset-frontend/src/pages/RolesList/index.tsx | 8 +-
.../src/pages/RowLevelSecurityList/index.tsx | 26 +-
.../src/pages/SavedQueryList/index.tsx | 47 +-
superset-frontend/src/pages/Tags/index.tsx | 15 +-
.../src/pages/ThemeList/ThemeList.test.tsx | 201 +
superset-frontend/src/pages/ThemeList/index.tsx | 524 ++
superset-frontend/src/pages/UserInfo/index.tsx | 5 +-
superset-frontend/src/pages/UsersList/index.tsx | 8 +-
superset-frontend/src/setup/setupClient.ts | 32 +
superset-frontend/src/theme/ThemeController.ts | 874 ++
superset-frontend/src/theme/ThemeController.tsx | 246 -
superset-frontend/src/theme/ThemeProvider.tsx | 88 +-
.../src/theme/tests/ThemeController.test.ts | 1351 +++
.../src/theme/tests/ThemeProvider.test.tsx | 238 +
superset-frontend/src/types/Dashboard.ts | 5 +
superset-frontend/src/types/bootstrapTypes.ts | 51 +-
superset-frontend/src/utils/downloadAsImage.ts | 273 +-
.../utils/downloadAsPivotExcel.ts} | 14 +-
superset-frontend/src/views/CRUD/types.ts | 3 +-
.../src/views/RootContextProviders.tsx | 11 +-
superset-frontend/src/views/routes.tsx | 8 +
superset-frontend/webpack.config.js | 13 +
.../utils/client-ws-app/package-lock.json | 30 +-
.../utils/client-ws-app/package.json | 2 +-
.../advanced_data_type/plugins/internet_address.py | 16 +-
.../advanced_data_type/plugins/internet_port.py | 16 +-
superset/app.py | 21 +-
superset/charts/schemas.py | 8 +
superset/commands/dataset/create.py | 11 +-
superset/commands/sql_lab/export.py | 4 +-
.../theme}/__init__.py | 0
superset/commands/theme/delete.py | 116 +
.../commands/{security => theme}/exceptions.py | 18 +-
superset/commands/theme/export.py | 75 +
superset/commands/theme/import_themes.py | 85 +
.../theme/importers}/__init__.py | 0
.../{chart => theme}/importers/dispatcher.py | 11 +-
superset/commands/theme/seed.py | 108 +
.../ssh_tunnel/delete.py => theme/update.py} | 42 +-
superset/common/query_context_processor.py | 4 +-
superset/common/query_object.py | 3 +
superset/common/utils/time_range_utils.py | 2 +-
superset/config.py | 208 +-
superset/connectors/sqla/models.py | 173 +-
superset/connectors/sqla/utils.py | 8 +-
superset/daos/{security.py => theme.py} | 14 +-
superset/dashboards/api.py | 1 +
superset/dashboards/schemas.py | 13 +
superset/db_engine_specs/__init__.py | 2 +-
superset/db_engine_specs/base.py | 78 +-
superset/db_engine_specs/databricks.py | 52 +-
superset/db_engine_specs/oracle.py | 2 +-
superset/db_engine_specs/snowflake.py | 7 +-
superset/examples/bart_lines.py | 2 +-
superset/examples/birth_names.py | 2 +-
superset/examples/deck.py | 14 +-
superset/examples/long_lat.py | 6 +-
superset/examples/misc_dashboard.py | 2 +-
superset/examples/multiformat_time_series.py | 2 +-
superset/examples/supported_charts_dashboard.py | 2 +-
superset/explore/api.py | 6 +
superset/extensions/pylint.py | 37 -
superset/initialization/__init__.py | 22 +
superset/jinja_context.py | 8 +-
.../shared/migrate_viz/query_functions.py | 2 +-
...2_convert_metric_currencies_from_str_to_json.py | 2 +-
...=> 2025-07-15_16-40_3fd555e76e3d_theme_crud.py} | 66 +-
...d1fb11291f2_add_theme_id_to_dashboard_model.py} | 42 +-
superset/models/core.py | 12 +
superset/models/dashboard.py | 3 +
superset/models/helpers.py | 200 +-
superset/models/sql_lab.py | 4 +-
superset/row_level_security/api.py | 2 +
superset/security/manager.py | 1 +
superset/sql/parse.py | 59 +-
.../{advanced_data_type => themes}/__init__.py | 0
superset/themes/api.py | 534 ++
superset/{css_templates => themes}/filters.py | 10 +-
superset/themes/schemas.py | 88 +
superset/themes/types.py | 67 +
superset/themes/utils.py | 115 +
.../{pt_BR => ca}/LC_MESSAGES/messages.po | 9756 +++++++++-----------
superset/utils/core.py | 110 +-
superset/utils/webdriver.py | 14 +-
superset/views/base.py | 64 +-
superset/views/filters.py | 19 +
superset/views/{css_templates.py => themes.py} | 7 +-
superset/views/utils.py | 5 +
tests/integration_tests/base_tests.py | 17 +-
tests/integration_tests/dashboards/api_tests.py | 33 +-
.../integration_tests/dashboards/commands_tests.py | 4 +-
.../dashboards/test_theme_integration.py | 361 +
tests/integration_tests/datasets/api_tests.py | 30 +
.../db_engine_specs/base_engine_spec_tests.py | 6 +-
.../fixtures/dashboard_with_tabs.py | 2 +-
.../security/row_level_security_tests.py | 24 +
tests/integration_tests/sql_lab/api_tests.py | 31 +-
tests/integration_tests/sql_lab/commands_tests.py | 8 +-
.../sql_lab/permalink/api_tests.py | 2 +-
tests/integration_tests/sqla_models_tests.py | 8 +-
.../integration_tests/themes}/__init__.py | 0
.../integration_tests/themes/api_endpoints_test.py | 322 +
tests/integration_tests/themes/api_tests.py | 398 +
.../databases/importers/v1/command_test.py | 2 +-
tests/unit_tests/commands/dataset/test_create.py | 170 +
tests/unit_tests/commands/report/execute_test.py | 2 +-
.../common/test_query_context_processor.py | 8 +-
tests/unit_tests/connectors/sqla/models_test.py | 318 +
tests/unit_tests/connectors/sqla/test_utils.py | 123 +
tests/unit_tests/db_engine_specs/test_base.py | 118 +-
tests/unit_tests/db_engine_specs/test_oracle.py | 2 +-
tests/unit_tests/db_engine_specs/test_snowflake.py | 42 +
.../unit_tests/migrations/shared/catalogs_test.py | 2 +-
tests/unit_tests/models/helpers_test.py | 150 +
tests/unit_tests/models/sql_lab_test.py | 45 +-
tests/unit_tests/queries/query_object_test.py | 1 +
tests/unit_tests/security/manager_test.py | 2 +-
tests/unit_tests/sql/parse_tests.py | 28 +-
tests/unit_tests/sql_lab_test.py | 6 +-
.../unit_tests/themes}/__init__.py | 0
tests/unit_tests/themes/api_test.py | 119 +
tests/unit_tests/themes/commands_test.py | 229 +
tests/unit_tests/themes/dao_test.py | 56 +
tests/unit_tests/themes/model_test.py | 53 +
tests/unit_tests/themes/test_utils.py | 93 +
tests/unit_tests/utils/map_type_tests.py | 86 +
383 files changed, 20742 insertions(+), 8586 deletions(-)
create mode 100644 .cursor/rules/dev-standard.mdc
create mode 120000 .github/copilot-instructions.md
create mode 100644 .github/workflows/claude.yml
create mode 100644 CHANGELOG/4.1.3.md
create mode 120000 CLAUDE.md
create mode 120000 GEMINI.md
create mode 120000 GPT.md
create mode 100644 LLMS.md
create mode 100644 docker-compose-light.yml
copy superset/migrations/versions/2020-08-08_18-10_f2672aa8350a_add_slack_to_alerts.py => docker/pythonpath_dev/superset_config_docker_light.py (53%)
delete mode 100644 docs/.eslintrc.js
create mode 100644 docs/docs/configuration/map-tiles.mdx
copy {superset-websocket => docs}/eslint.config.js (60%)
create mode 100644 superset-frontend/packages/superset-ui-core/src/components/AsyncAceEditor/useJsonValidation.test.ts
create mode 100644 superset-frontend/packages/superset-ui-core/src/components/AsyncAceEditor/useJsonValidation.ts
delete mode 100644 superset-frontend/packages/superset-ui-core/src/components/ThemeEditor/index.tsx
delete mode 100644 superset-frontend/packages/superset-ui-core/src/components/ThemeSelect/index.tsx
create mode 100644 superset-frontend/packages/superset-ui-core/src/components/ThemeSubMenu/ThemeSubMenu.test.tsx
create mode 100644 superset-frontend/packages/superset-ui-core/src/components/ThemeSubMenu/index.tsx
create mode 100644 superset-frontend/packages/superset-ui-core/src/theme/utils/themeUtils.test.ts
create mode 100644 superset-frontend/packages/superset-ui-core/src/theme/utils/themeUtils.ts
delete mode 100644 superset-frontend/plugins/plugin-chart-ag-grid-table/src/i18n.ts
delete mode 100644 superset-frontend/plugins/plugin-chart-table/src/i18n.ts
create mode 100644 superset-frontend/src/components/CrudThemeProvider.tsx
create mode 100644 superset-frontend/src/components/ModalTitleWithIcon/ModalTitleWithIcon.test.tsx
create mode 100644 superset-frontend/src/components/ModalTitleWithIcon/index.tsx
copy superset-frontend/src/{views/RootContextProviders.tsx => embedded/EmbeddedContextProviders.tsx} (73%)
create mode 100644 superset-frontend/src/features/themes/ThemeModal.test.tsx
create mode 100644 superset-frontend/src/features/themes/ThemeModal.tsx
copy superset-frontend/src/features/{cssTemplates => themes}/types.ts (89%)
create mode 100644 superset-frontend/src/pages/ThemeList/ThemeList.test.tsx
create mode 100644 superset-frontend/src/pages/ThemeList/index.tsx
create mode 100644 superset-frontend/src/theme/ThemeController.ts
delete mode 100644 superset-frontend/src/theme/ThemeController.tsx
create mode 100644 superset-frontend/src/theme/tests/ThemeController.test.ts
create mode 100644 superset-frontend/src/theme/tests/ThemeProvider.test.tsx
copy superset-frontend/{packages/superset-ui-core/src/validator/validateMaxValue.ts => src/utils/downloadAsPivotExcel.ts} (74%)
copy superset/{advanced_data_type => commands/theme}/__init__.py (100%)
create mode 100644 superset/commands/theme/delete.py
copy superset/commands/{security => theme}/exceptions.py (71%)
create mode 100644 superset/commands/theme/export.py
create mode 100644 superset/commands/theme/import_themes.py
copy superset/{advanced_data_type => commands/theme/importers}/__init__.py (100%)
copy superset/commands/{chart => theme}/importers/dispatcher.py (90%)
create mode 100644 superset/commands/theme/seed.py
copy superset/commands/{database/ssh_tunnel/delete.py => theme/update.py} (54%)
copy superset/daos/{security.py => theme.py} (69%)
copy superset/migrations/versions/{2022-03-04_09-59_6766938c6065_add_key_value_store.py => 2025-07-15_16-40_3fd555e76e3d_theme_crud.py} (54%)
copy superset/migrations/versions/{2024-05-01_10-52_58d051681a3b_add_catalog_perm_to_tables.py => 2025-07-15_18-41_cd1fb11291f2_add_theme_id_to_dashboard_model.py} (55%)
copy superset/{advanced_data_type => themes}/__init__.py (100%)
create mode 100644 superset/themes/api.py
copy superset/{css_templates => themes}/filters.py (80%)
create mode 100644 superset/themes/schemas.py
create mode 100644 superset/themes/types.py
create mode 100644 superset/themes/utils.py
copy superset/translations/{pt_BR => ca}/LC_MESSAGES/messages.po (50%)
copy superset/views/{css_templates.py => themes.py} (89%)
create mode 100644 tests/integration_tests/dashboards/test_theme_integration.py
copy {superset/advanced_data_type => tests/integration_tests/themes}/__init__.py (100%)
create mode 100644 tests/integration_tests/themes/api_endpoints_test.py
create mode 100644 tests/integration_tests/themes/api_tests.py
create mode 100644 tests/unit_tests/commands/dataset/test_create.py
create mode 100644 tests/unit_tests/connectors/sqla/test_utils.py
copy {superset/advanced_data_type => tests/unit_tests/themes}/__init__.py (100%)
create mode 100644 tests/unit_tests/themes/api_test.py
create mode 100644 tests/unit_tests/themes/commands_test.py
create mode 100644 tests/unit_tests/themes/dao_test.py
create mode 100644 tests/unit_tests/themes/model_test.py
create mode 100644 tests/unit_tests/themes/test_utils.py
create mode 100644 tests/unit_tests/utils/map_type_tests.py