This is an automated email from the ASF dual-hosted git repository.
elizabeth pushed a change to branch elizabeth/fix-resize-bug
in repository https://gitbox.apache.org/repos/asf/superset.git
from e054560000 ix layout
new 97bd294ac4 fix: enhance disallowed SQL functions list for improved
security (#33084)
new 933254eb60 fix: preserve correct column order when table layout is
changed with time comparison enabled (#34300)
new ef0db5e09d fix(npm): more reliable execution of `npm run update-maps`
(#34305)
new 29b443cc54 fix(cartodiagram): add missing locales for rendering
echarts (#34268)
new 29a21581bb fix: Charts list is displaying empty dataset names when
there's no schema (#34315)
new d6284809ad feat: add a theme CRUD page to manage themes (#34182)
new b404dceb5c feat(timeseries): enhance 'Series Limit' to support
grouping the long tail (#34308)
new d2b4f1eb32 style(chart): restyle table pagination (#34311)
new 3490a19789 fix(NavBar): Add brand text back (#34318)
new cb49d53229 style(FastVizSwitcher): Adjust padding for FastVizSwitcher
selector (#34317)
new 0a3d9cbc18 feat: introducing a docker-compose-light.yml for lighter
development (#34324)
new 4dd2cc1697 chore: bump BigQuery dialect to 1.15.0 (#34371)
new 63945ca806 docs(development): fix 2 typos in the dockerfile (#34341)
new cae915f1e5 fix(PivotTable): Render html in cells if allowRenderHtml is
true (#34351)
new 7f0731b5f7 build(deps): update `ag-grid` to non-breaking major v34
(#34326)
new cfd6d8e31d feat(theming): Align embedded sdk with theme configs
(#34273)
new b1154d817b feat: read column metadata (#34359)
new cd8cee256c fix: subquery alias in RLS (#34374)
new 12a9efe8d1 chore(deps): bump cookie and @types/cookie in
/superset-websocket (#34335)
new 245a2262ea fix: use catalog name on generated queries (#34360)
new 1ecfe6e607 fix: prevent theme initialization errors during fresh
installs (#34339)
new 883bb5a7df feat: focus on text input when modal opens (#34379)
new 6cd736d6ed fix: rate limiting issues with example data hosted on
github.com (#34381)
new 5845c7c112 feat: allow creating dataset without exploring (#34380)
new 51c2f18d09 fix(big number with trendline): running 2 identical queries
for no good reason (#34296)
new 0951d6c448 feat(charts): Enable async buildQuery support for complex
chart logic (#34383)
new 287ddb99ef feat: Add GitHub Codespaces support with
docker-compose-light (#34376)
new 176f9b190c feat(i18n): update Spanish translations (messages.po)
(#34206)
new d8b1305434 docs(development): fix typo in the dockerfile (#34387)
new aaf3068d56 fix(charts): Fix unquoted 'Others' literal in series limit
GROUP BY clause (#34390)
new ad3dc6121e docs(development): fix comment in the dockerfile (#34391)
new fda5266dde chore(deps): bump d3-scale from 3.3.0 to 4.0.2 in
/superset-frontend/packages/superset-ui-core (#31534)
new a58857ebc1 build(deps): bump reselect from 4.1.7 to 5.1.1 in
/superset-frontend (#30119)
new c60f9e4cc9 fix: Console errors from various sources (#34178)
new 1e806a77b2 feat(codespaces): auto-setup Python venv with dependencies
(#34409)
new 4d1570242c fix(theme-list): reorder buttons to place import leftmost
(#34389)
new cb94c87751 feat(dashboard): show applied filters in chart title tooltip
The 37 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails. The revisions
listed as "add" were already present in the repository and have only
been added to this reference.
Summary of changes:
.devcontainer/Dockerfile | 20 +
.devcontainer/README.md | 16 +
.devcontainer/bashrc-additions | 62 +
.devcontainer/build-and-push-image.sh | 20 +
.devcontainer/devcontainer.json | 66 +
.devcontainer/setup-dev.sh | 78 +
.devcontainer/start-superset.sh | 108 +
.pre-commit-config.yaml | 4 +-
Dockerfile | 6 +-
LLMS.md | 45 +-
UPDATING.md | 1 +
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/frontend-mem-nag.sh | 44 +-
docker/pythonpath_dev/.gitignore | 1 +
docker/pythonpath_dev/superset_config.py | 2 +-
.../pythonpath_dev/superset_config_docker_light.py | 37 +-
docs/docs/configuration/theming.mdx | 89 +-
docs/docs/contributing/development.mdx | 72 +
docs/docs/installation/docker-compose.mdx | 34 +-
docs/package.json | 3 +-
pyproject.toml | 2 +-
requirements/development.txt | 2 +-
.../cypress-base/cypress/e2e/explore/chart.test.js | 6 +-
superset-frontend/package-lock.json | 77 +-
superset-frontend/package.json | 8 +-
.../src/sections/echartsTimeSeriesQuery.tsx | 2 +-
.../src/shared-controls/customControls.tsx | 62 +-
.../src/shared-controls/sharedControls.tsx | 14 +
.../packages/superset-ui-core/package.json | 4 +-
.../src/chart/models/ChartProps.ts | 26 +-
.../src/components/AsyncAceEditor/index.tsx | 7 +-
.../AsyncAceEditor/useJsonValidation.test.ts | 75 +
.../components/AsyncAceEditor/useJsonValidation.ts | 82 +
.../src/components/CodeSyntaxHighlighter/index.tsx | 11 +-
.../src/components/Icons/BaseIcon.tsx | 8 +-
.../src/components/InfoTooltip/index.tsx | 4 +-
.../src/components/Label/index.tsx | 4 +-
.../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/UnsavedChangesModal/index.tsx | 100 +-
.../superset-ui-core/src/components/index.ts | 2 +
.../superset-ui-core/src/query/buildQueryObject.ts | 2 +
.../superset-ui-core/src/theme/Theme.test.tsx | 18 -
.../packages/superset-ui-core/src/theme/Theme.tsx | 70 +-
.../packages/superset-ui-core/src/theme/index.tsx | 17 +-
.../packages/superset-ui-core/src/theme/types.ts | 22 +
.../src/theme/utils/themeUtils.test.ts | 134 +
.../superset-ui-core/src/theme/utils/themeUtils.ts | 113 +
.../superset-ui-core/src/utils/featureFlags.ts | 3 +-
.../test/chart/models/ChartProps.test.ts | 4 +-
.../scripts/Country Map GeoJSON Generator.ipynb | Bin 11105571 -> 2319015
bytes
.../src/vendor/parcoords/d3.parcoords.js | 8 +-
.../plugin-chart-ag-grid-table/package.json | 4 +-
.../components/TimeComparisonVisibility.tsx | 60 +-
.../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 +-
.../BigNumberWithTrendline/buildQuery.test.ts | 45 +-
.../BigNumber/BigNumberWithTrendline/buildQuery.ts | 57 +-
.../BigNumberWithTrendline/transformProps.test.ts | 37 +-
.../BigNumberWithTrendline/transformProps.ts | 68 +-
.../src/Sankey/transformProps.ts | 4 +-
.../src/Tree/transformProps.ts | 4 +-
.../plugin-chart-echarts/src/components/Echart.tsx | 85 +-
.../test/BigNumber/transformProps.test.ts | 5 +-
.../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 | 93 +-
.../src/components/Chart/DrillDetail/index.ts | 1 +
...ilMenuItems.tsx => useDrillDetailMenuItems.tsx} | 179 +-
.../src/components/Chart/chartAction.js | 22 +-
.../src/components/Chart/chartActions.test.js | 17 +-
.../src/components/CrudThemeProvider.tsx | 76 +
.../components/ErrorMessage/BasicErrorAlert.tsx | 9 +-
.../src/components/ListView/Filters/Search.tsx | 8 +-
superset-frontend/src/components/Tag/index.tsx | 3 +-
.../src/dashboard/actions/dashboardInfo.ts | 46 +
.../components/CssEditor/CssEditor.test.tsx | 38 +-
.../src/dashboard/components/CssEditor/index.tsx | 224 +-
.../DashboardBuilder/DashboardBuilder.test.tsx | 1 +
.../dashboard/components/Header/Header.test.tsx | 6 +-
.../src/dashboard/components/Header/types.ts | 4 +
.../Header/useHeaderActionsDropdownMenu.tsx | 370 +-
.../PropertiesModal/PropertiesModal.test.tsx | 3 +-
.../dashboard/components/PropertiesModal/index.tsx | 10 +-
.../components/RefreshIntervalModal.test.tsx | 14 +-
.../src/dashboard/components/SaveModal.tsx | 280 +-
.../src/dashboard/components/SliceHeader/index.tsx | 80 +-
.../components/SliceHeaderControls/index.tsx | 370 +-
.../dashboard/components/gridComponents/Tabs.jsx | 1 -
.../DownloadMenuItems/DownloadMenuItems.test.tsx | 22 +-
.../components/menu/DownloadMenuItems/index.tsx | 114 +-
.../menu/ShareMenuItems/ShareMenuItems.test.tsx | 49 +-
.../components/menu/ShareMenuItems/index.tsx | 43 +-
.../src/dashboard/containers/DashboardPage.tsx | 29 +-
.../useAppliedFilterIndicators.ts} | 168 +-
.../src/dashboard/reducers/dashboardInfo.js | 7 +
superset-frontend/src/dashboard/types.ts | 6 +
.../EmbeddedContextProviders.tsx} | 36 +-
superset-frontend/src/embedded/index.tsx | 40 +-
.../src/explore/components/SaveModal.tsx | 7 +-
.../explore/components/controls/ViewQuery.test.tsx | 2 +-
.../src/explore/components/controls/ViewQuery.tsx | 128 +-
.../explore/components/controls/ViewQueryModal.tsx | 4 +-
.../controls/VizTypeControl/FastVizSwitcher.tsx | 13 +-
.../components/controls/VizTypeControl/VizTile.tsx | 3 +-
.../VizTypeControl/VizTypeControl.test.tsx | 21 +
.../controls/VizTypeControl/VizTypeGallery.tsx | 7 +
.../useExploreAdditionalActionsMenu/index.jsx | 475 +-
.../src/explore/controlPanels/sections.tsx | 3 +-
.../src/explore/exploreUtils/exploreUtils.test.jsx | 4 +-
.../src/explore/exploreUtils/index.js | 6 +-
.../src/features/annotations/AnnotationModal.tsx | 10 +-
.../databases/DatabaseModal/ExtraOptions.tsx | 29 +
.../databases/DatabaseModal/SSHTunnelForm.tsx | 2 +-
.../src/features/databases/DatabaseModal/styles.ts | 3 +-
.../UploadDataModel/UploadDataModal.test.tsx | 28 +-
.../datasets/AddDataset/Footer/Footer.test.tsx | 146 +-
.../features/datasets/AddDataset/Footer/index.tsx | 52 +-
superset-frontend/src/features/home/Menu.test.tsx | 39 +
superset-frontend/src/features/home/Menu.tsx | 9 +-
superset-frontend/src/features/home/RightMenu.tsx | 46 +-
.../HeaderReportDropdown/index.test.tsx | 58 +-
.../ReportModal/HeaderReportDropdown/index.tsx | 274 +-
.../src/features/themes/ThemeModal.test.tsx | 286 +
.../src/features/themes/ThemeModal.tsx | 414 +
.../src/features/{cssTemplates => themes}/types.ts | 8 +-
.../src/pages/ChartList/ChartList.test.jsx | 90 +
superset-frontend/src/pages/ChartList/index.tsx | 5 +-
.../src/pages/ThemeList/ThemeList.test.tsx | 201 +
superset-frontend/src/pages/ThemeList/index.tsx | 524 ++
superset-frontend/src/theme/ThemeController.ts | 332 +-
superset-frontend/src/theme/ThemeProvider.tsx | 74 +-
.../src/theme/tests/ThemeController.test.ts | 309 +-
.../src/theme/tests/ThemeProvider.test.tsx | 3 +-
superset-frontend/src/types/Dashboard.ts | 5 +
superset-frontend/src/types/bootstrapTypes.ts | 18 +-
superset-frontend/src/views/CRUD/types.ts | 3 +-
superset-frontend/src/views/routes.tsx | 8 +
superset-frontend/webpack.config.js | 6 +
superset-websocket/package-lock.json | 29 +-
superset-websocket/package.json | 7 +-
superset-websocket/spec/config.test.ts | 1 +
superset-websocket/spec/index.test.ts | 35 +-
superset-websocket/src/index.ts | 4 +-
superset/charts/schemas.py | 8 +
superset/commands/dataset/importers/v1/utils.py | 5 +
superset/commands/importers/v1/utils.py | 6 +
.../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_object.py | 3 +
superset/config.py | 129 +-
superset/connectors/sqla/models.py | 25 +-
superset/daos/{security.py => theme.py} | 14 +-
superset/dashboards/api.py | 1 +
superset/dashboards/schemas.py | 13 +
superset/examples/bart_lines.py | 2 +-
superset/examples/birth_names.py | 10 +-
.../configs/datasets/examples/FCC_2018_Survey.yaml | 2 +-
.../configs/datasets/examples/channel_members.yaml | 2 +-
.../configs/datasets/examples/channels.yaml | 2 +-
.../datasets/examples/cleaned_sales_data.yaml | 2 +-
.../configs/datasets/examples/covid_vaccines.yaml | 2 +-
.../configs/datasets/examples/exported_stats.yaml | 2 +-
.../configs/datasets/examples/messages.yaml | 2 +-
.../configs/datasets/examples/threads.yaml | 2 +-
.../datasets/examples/unicode_test.test.yaml | 2 +-
.../examples/configs/datasets/examples/users.yaml | 2 +-
.../configs/datasets/examples/users_channels.yaml | 2 +-
.../datasets/examples/video_game_sales.yaml | 2 +-
superset/examples/country_map.py | 2 +-
superset/examples/energy.py | 2 +-
superset/examples/flights.py | 4 +-
superset/examples/helpers.py | 20 +-
superset/examples/long_lat.py | 2 +-
superset/examples/multiformat_time_series.py | 2 +-
superset/examples/paris.py | 2 +-
superset/examples/random_time_series.py | 4 +-
superset/examples/sf_population_polygons.py | 4 +-
superset/examples/world_bank.py | 2 +-
superset/initialization/__init__.py | 44 +-
...=> 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 | 125 +-
superset/sql/parse.py | 17 +-
superset/themes/api.py | 534 ++
superset/{css_templates => themes}/filters.py | 10 +-
superset/themes/schemas.py | 88 +
superset/translations/es/LC_MESSAGES/messages.po | 9264 ++++++++------------
superset/views/base.py | 19 +-
superset/views/{css_templates.py => themes.py} | 7 +-
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 +
.../integration_tests/themes}/__init__.py | 0
.../integration_tests/themes/api_endpoints_test.py | 322 +
tests/integration_tests/themes/api_tests.py | 398 +
tests/unit_tests/connectors/sqla/models_test.py | 409 +
tests/unit_tests/models/helpers_test.py | 314 +
tests/unit_tests/queries/query_object_test.py | 1 +
tests/unit_tests/sql/parse_tests.py | 28 +-
tests/unit_tests/sql_lab_test.py | 4 +-
.../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 | 1 +
232 files changed, 14563 insertions(+), 8118 deletions(-)
create mode 100644 .devcontainer/Dockerfile
create mode 100644 .devcontainer/README.md
create mode 100644 .devcontainer/bashrc-additions
create mode 100755 .devcontainer/build-and-push-image.sh
create mode 100644 .devcontainer/devcontainer.json
create mode 100755 .devcontainer/setup-dev.sh
create mode 100755 .devcontainer/start-superset.sh
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%)
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
copy
superset-frontend/src/components/Chart/DrillDetail/{DrillDetailMenuItems.tsx =>
useDrillDetailMenuItems.tsx} (63%)
create mode 100644 superset-frontend/src/components/CrudThemeProvider.tsx
copy superset-frontend/src/dashboard/{components/FiltersBadge/index.tsx =>
hooks/useAppliedFilterIndicators.ts} (61%)
copy superset-frontend/src/{views/RootContextProviders.tsx =>
embedded/EmbeddedContextProviders.tsx} (75%)
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
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%)
create mode 100644 superset/themes/api.py
copy superset/{css_templates => themes}/filters.py (80%)
create mode 100644 superset/themes/schemas.py
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
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