This is an automated email from the ASF dual-hosted git repository. rusackas pushed a change to branch developer_portal in repository https://gitbox.apache.org/repos/asf/superset.git
discard 7a0618cde5 Better version switcher discard cf1c1e93ab Pages stay put when changing versions. discard 1ffb4f9fcb better versioning dropdowns discard 09f850ea4e versioning experiments discard 1e5a4b01af Storybook displays discard cc0d727120 Getting warmer... discard 33a8d6ed8f somewhat busted commit, but keeping track of things here... discard 2607cad5c9 versioning POC discard d58022f752 new component library section add be4bc3dec5 chore(deps-dev): bump ts-jest from 29.2.5 to 29.3.1 in /superset-websocket (#32924) add a8a6254ea2 chore(deps-dev): bump @typescript-eslint/parser from 8.19.0 to 8.29.0 in /superset-websocket (#32925) add 8b0bda3bad chore(deps): update @types/react-redux requirement from ^7.1.10 to ^7.1.34 in /superset-frontend/plugins/plugin-chart-echarts (#32927) add 26743dfcee fix: Clicking in the body of a Markdown component does not put it into edit mode (#32384) add e1c1de1b94 chore(deps-dev): bump css-minimizer-webpack-plugin from 7.0.0 to 7.0.2 in /superset-frontend (#32937) add 2bc33beec4 chore(deps-dev): bump @babel/compat-data from 7.26.5 to 7.26.8 in /superset-frontend (#32939) add 00933a27af chore(deps): bump swagger-ui-react from 5.20.0 to 5.20.2 in /docs (#32950) add 8eeed49547 chore(deps): bump antd from 5.24.2 to 5.24.5 in /docs (#32951) add f5d3627468 chore(deps-dev): bump eslint-config-prettier from 10.0.2 to 10.1.1 in /docs (#32952) add a36e636a58 fix(pivot-table): Revert "fix(Pivot Table): Fix column width to respect currency config (#31414)" (#32968) add c83eda9551 feat: add latest partition support for BigQuery (#30760) add 4f0020d0df feat(List Roles): Migrate FAB view to React (#32432) add f5d64176f6 fix: fixed Add Metrics to Tree Chart (#29158) (#30679) add bc0bf94680 chore: bump marshmallow-sqlalchemy to 1.4.0 (#32922) add 86b795cd36 feat(embedding-sdk): emit data-mask events through embedded sdk to iframe parent (#31331) add 24b1666273 fix: Bar Chart (legacy) migration to keep labels layout (#32965) add 63c8bbf3eb fix(frontend): add missing antd-5 icon to import (#32990) add bcb43327b1 fix: `show_filters` URL parameter is not working (#29422) add 4041150660 feat: Add getDataMask function to embedded SDK (#32997) add db959a6463 chore(Databricks): Display older Databricks driver as legacy (#33001) add 629b137bb0 fix(dashboard): chart fullscreen issue when filter pane is collapsed (#28428) add b6df88a134 fix: fix bug where dashboard did not enter fullscreen mode. (#32839) add c131205ff1 docs: Update documentation about publishing a dashboard (#32999) add e1383d3821 refactor(IconButton): Refactor IconButton to use Ant Design 5 Card (#32890) add fd947a097d feat(tags): Export and Import Functionality for Superset Dashboards and Charts (#30833) add 9b15e04bc4 fix(log): Missing failed query log on async queries (#33024) add 15969fdf94 docs: add WinWin Network(马上赢) to users list (#33018) add 5a8eab3b25 chore(deps): bump estree-util-value-to-estree from 3.1.1 to 3.3.3 in /docs (#33028) add 6b7394e789 fix(export): charts csv export in dashboards (#31720) add 3a57857707 chore(helm): bump appVersion to 4.1.2 (#33061) add 9280b4d2a9 docs: clarify docker-compose-image-tag instructions (#33045) add ed0cd5e7b0 fix: improve error type on parse error (#33048) add deb6aedddb feat: add a title prop to the dashboard link in CRUD LIST view (#33046) add c1159c53e3 fix: Adds missing __init__ file to commands/logs (#33059) add 31ac3898ad fix(list roles): dont send invalid querystrings (#33060) add 09b92e7d08 feat: Allow superset to be deployed under a prefixed URL (#30134) add 8242692541 chore(deps-dev): bump lerna from 8.1.9 to 8.2.1 in /superset-frontend (#32941) add 44bd200885 fix(docs): Update quickstart.mdx to reflect latest version tag (#33063) add 164a07e2be fix(docker): fallback to pip if uv is not available (#33087) add d75ff9e784 feat(charts): add subtitle option and metric customization controls (#32975) add 37194a41ec chore: Added Formbricks to INTHEWILD.md (#33074) add 5304bed4ed chore: Update INTHEWILD.md (#33079) add d88cba92c0 feat: optimize catalog permission sync (#33000) add 4f97b739b1 fix: Broken Python tests on master after merging prefix branch (#33095) add 014b39290b feat(Native Filters): Configure creatable filter behavior (#33096) add 7ab8534ef6 feat: dataset folders (backend) (#32520) add bcd136cee1 feat: catalogs for DuckDB (#28751) add ac4df8d06b fix: CI file change detector to handle large PRs (#33092) add 5656d69c04 fix(dashboard): Generate screenshot via celery (#32193) add 347c174099 fix(thumbnails): ensure consistent cache_key (#33109) add 05faf2f352 fix: resolve recent merge collisio (#33110) add 3c1fc0b722 fix: Broken menu links to datasets and sql lab (#33114) add e1f5c49df7 fix: Allows configuration of Selenium Webdriver binary (#33103) add a5a91d5e48 fix(OAuth2): Update connection should not fail if connection is missing OAuth2 token (#33100) add 7b9ebbe735 feat(explore): Integrate dataset panel with Folders feature (#33104) add c1eeb63d89 fix: `master` builds are failing while trying to push report to cypress (#33124) add 839215148a feat(explore): X-axis sort by specific metric when more than 1 metric is set (#33116) add 2233c02720 fix(playwright): allow screenshotting empty dashboards (#33107) add 8cb71b8d3b fix(plugin-chart-table): Don't render redundant items in column config when time comparison is enabled (#33126) add 45c77a1976 chore(translations): Update PT-BR language (partial) (#29828) add ff8605b723 feat(lang): update Italian language (#29827) add 5f62deaa36 chore: use create table util (#33072) add bc0ffe0d10 fix: Viz migration error handling (#33037) add 013379eb86 feat(List Users): Migrate List Users FAB to React (#32882) add 342e6f3ab0 fix(dashboard): invalid active tab state (#33106) add 93fa39a14f fix(lang): patch FAB's LocaleView to redirect to previous page (#31692) add 7dc5019b9d fix: app icon should not use subdirectory (#33141) add 7333ffd41e fix(echart): Tooltip date format doesn't follow time grain (#33138) add 0e18246999 chore(deps): bump @babel/runtime from 7.17.2 to 7.27.0 in /superset-frontend/cypress-base (#33102) add 26ff734ef9 fix: add folders to import schema (#33142) add be1b8d6751 feat(Native Filters): Exclude Filter Values (#33054) add a53907a646 feat(Select): Select all and Deselect all that works on visible items while searching (#33043) add 172e5dd095 fix(echart): Thrown errors shown after resized (#33143) add 00f1fdb3c4 fix: os.makedirs race condition (#33161) add 4140261797 fix: subheader should show as subtitle (#33172) add b589d44dfb fix(deckgl): Update Arc to properly adjust line width (#33154) add 8c94f9c435 fix(sqllab): Invalid SQL Error breaks SQL Lab (#33164) add 79afc2b545 docs: add a high-level architecture diagram to the docs (#33173) add 7530487760 feat(country-map): fix France Regions IDF region code - Fixes #32627 (#32695) add 8fa3b8d7e3 fix(Native Filters): Keep default filter values when configuring creatable behavior (#33205) add 99ed968289 fix(Native Filters): Keep default filter values when configuring creatable behavior (#33205) add 09364d182c chore(deps-dev): bump http-proxy-middleware from 2.0.7 to 2.0.9 in /superset-frontend (#33197) add ae48dba3e1 feat(maps): Adding Ivory Coast / Côte d'Ivoire (#33198) add b6628cdfd2 chore: migrate to more db migration utils (#33155) add 3729016a0d docs: improve documentation(docs): clarify URL encoding requirement for connection strings (#30047) add 8aa127eac2 feat(i18n): Frontend add zh_TW Option (#33192) new d18566b2b8 new component library section new 7519aabc7b versioning POC new 5e02f74e37 somewhat busted commit, but keeping track of things here... new 4354dd18d0 Getting warmer... new 968a60ae0c Storybook displays new a2c61d97ba versioning experiments new 1c0a960e62 better versioning dropdowns new b7f4882e57 Pages stay put when changing versions. new 15b12850de Better version switcher 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 (7a0618cde5) \ N -- N -- N refs/heads/developer_portal (15b12850de) 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. The 9 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: .github/workflows/bashlib.sh | 8 +- .github/workflows/superset-e2e.yml | 7 +- .github/workflows/superset-python-unittest.yml | 2 +- Dockerfile | 2 +- RESOURCES/INTHEWILD.md | 3 + UPDATING.md | 4 +- docker-compose.yml | 8 +- docker/.env | 2 +- docker/docker-bootstrap.sh | 6 +- .flaskenv => docker/docker-healthcheck.sh | 5 +- docker/nginx/nginx.conf | 41 +- docker/nginx/templates/superset.conf.template | 57 ++ docker/pythonpath_dev/superset_config.py | 7 +- docs/data/countries.json | 1 + docs/docs/configuration/configuring-superset.mdx | 39 ++ docs/docs/configuration/databases.mdx | 7 + docs/docs/configuration/networking-settings.mdx | 2 +- docs/docs/contributing/resources.mdx | 86 +++ docs/docs/installation/docker-compose.mdx | 8 + docs/docs/quickstart.mdx | 2 +- .../creating-your-first-dashboard.mdx | 33 +- docs/docusaurus.config.ts | 5 +- docs/package.json | 13 +- docs/src/pages/index.tsx | 2 +- .../img/tutorial/publish_button_dashboard.png | Bin 0 -> 85940 bytes helm/superset/Chart.yaml | 4 +- helm/superset/README.md | 2 +- pyproject.toml | 3 +- requirements/base.in | 7 +- requirements/base.txt | 3 +- requirements/development.txt | 3 +- scripts/change_detector.py | 14 +- superset-embedded-sdk/src/index.ts | 158 ++++-- .../cypress/applitools/explore.test.ts | 2 +- .../cypress/e2e/chart_list/list.test.ts | 9 +- .../cypress/e2e/dashboard/_skip.url_params.test.ts | 4 +- .../cypress/e2e/dashboard/drilltodetail.test.ts | 4 +- .../e2e/dashboard/horizontalFilterBar.test.ts | 2 +- .../dashboard/nativeFilters.noInitState.test.ts | 2 +- .../e2e/dashboard/shared_dashboard_functions.ts | 1 + .../cypress/e2e/dashboard/tabs.test.ts | 4 +- .../cypress-base/cypress/e2e/dashboard/utils.ts | 28 +- .../cypress/e2e/explore/_skip.AdhocFilters.test.ts | 6 +- .../cypress/e2e/explore/advanced_analytics.test.ts | 4 +- .../cypress/e2e/explore/control.test.ts | 2 +- .../cypress-base/cypress/e2e/explore/utils.ts | 20 +- .../e2e/explore/visualizations/big_number.test.js | 4 +- .../e2e/explore/visualizations/box_plot.test.js | 2 +- .../e2e/explore/visualizations/bubble.test.js | 2 +- .../e2e/explore/visualizations/compare.test.js | 2 +- .../explore/visualizations/download_chart.test.js | 2 +- .../e2e/explore/visualizations/gauge.test.js | 2 +- .../e2e/explore/visualizations/graph.test.ts | 2 +- .../cypress/e2e/explore/visualizations/pie.test.js | 2 +- .../e2e/explore/visualizations/pivot_table.test.js | 2 +- .../e2e/explore/visualizations/sunburst.test.js | 2 +- .../e2e/explore/visualizations/time_table.js | 2 +- .../e2e/explore/visualizations/world_map.test.js | 2 +- .../e2e/sqllab/_skip.sourcePanel.index.test.js | 2 +- .../cypress-base/cypress/e2e/sqllab/query.test.ts | 6 +- .../cypress-base/cypress/utils/vizPlugins.ts | 4 +- superset-frontend/cypress-base/package-lock.json | 30 +- superset-frontend/package-lock.json | 373 +++++++++---- superset-frontend/package.json | 6 +- .../src/components/MetricOption.tsx | 2 +- .../src/components/labelUtils.tsx | 2 +- .../superset-ui-chart-controls/src/fixtures.ts | 1 + .../src/sections/echartsTimeSeriesQuery.tsx | 4 - .../src/shared-controls/customControls.tsx | 85 +-- .../test/utils/defineSavedMetrics.test.tsx | 2 + .../test/utils/mainMetric.test.ts | 15 +- .../packages/superset-ui-core/package.json | 1 + .../src/connection/SupersetClientClass.ts | 34 +- .../superset-ui-core/src/connection/constants.ts | 2 +- .../superset-ui-core/src/connection/types.ts | 2 +- .../useTruncation/useCSSTextTruncation.test.tsx | 34 ++ .../hooks/useTruncation/useCSSTextTruncation.ts | 25 +- .../superset-ui-core/src/query/types/Datasource.ts | 2 + .../superset-ui-core/src/query/types/Metric.ts | 1 + .../src/translation/types/index.ts | 3 +- .../test/connection/SupersetClientClass.test.ts | 12 +- .../test/query/api/v1/makeApi.test.ts | 4 +- .../test/query/types/Datasource.test.ts | 4 +- .../scripts/Country Map GeoJSON Generator.ipynb | Bin 6956447 -> 10847127 bytes .../src/countries.ts | 2 + .../src/countries/france_regions.geojson | 2 +- .../src/countries/ivory_coast.geojson | 26 + .../src/layers/Arc/Arc.tsx | 2 +- .../plugins/plugin-chart-echarts/package.json | 2 +- .../BigNumber/BigNumberPeriodOverPeriod/PopKPI.tsx | 94 +++- .../BigNumberPeriodOverPeriod/controlPanel.ts | 15 +- .../BigNumberPeriodOverPeriod/transformProps.ts | 4 + .../BigNumber/BigNumberPeriodOverPeriod/types.ts | 4 + .../BigNumber/BigNumberTotal/controlPanel.test.ts | 97 ++++ .../src/BigNumber/BigNumberTotal/controlPanel.ts | 29 +- .../BigNumberTotal/transformProps.test.ts | 220 ++++++++ .../src/BigNumber/BigNumberTotal/transformProps.ts | 13 +- .../src/BigNumber/BigNumberViz.tsx | 56 +- .../BigNumberWithTrendline/controlPanel.tsx | 9 +- .../BigNumberWithTrendline/transformProps.ts | 4 + .../src/BigNumber/sharedControls.ts | 46 ++ .../plugin-chart-echarts/src/BigNumber/types.ts | 4 +- .../src/Timeseries/transformProps.ts | 10 +- .../plugin-chart-echarts/src/Tree/controlPanel.tsx | 6 +- .../plugin-chart-echarts/src/components/Echart.tsx | 38 +- .../plugin-chart-echarts/src/utils/formatters.ts | 2 +- .../test/BigNumber/transformProps.test.ts | 2 + .../src/PivotTableChart.tsx | 1 - .../plugins/plugin-chart-table/src/TableChart.tsx | 37 +- .../plugin-chart-table/src/controlPanel.tsx | 69 ++- .../plugins/plugin-chart-table/src/types.ts | 4 + .../plugin-chart-table/test/TableChart.test.tsx | 603 +++++++++++---------- .../fixtures/mockDatabases.ts} | 49 +- .../spec/fixtures/mockNativeFilters.ts | 3 + .../spec/helpers/setupSupersetClient.js | 2 +- superset-frontend/src/SqlLab/actions/sqlLab.js | 30 +- .../src/SqlLab/actions/sqlLab.test.js | 10 +- .../QueryAutoRefresh/QueryAutoRefresh.test.tsx | 69 ++- .../SqlLab/components/QueryAutoRefresh/index.tsx | 30 +- .../SqlLab/components/SqlEditorTabHeader/index.tsx | 4 +- .../SqlLab/components/TabbedSqlEditors/index.tsx | 5 +- .../DrillDetail/DrillDetailMenuItems.test.tsx | 2 +- .../src/components/Chart/chartAction.js | 3 +- .../src/components/Checkbox/Checkbox.tsx | 4 +- .../DatabaseSelector/DatabaseSelector.test.tsx | 16 +- .../src/components/DropdownContainer/index.tsx | 36 ++ .../ErrorMessage/InvalidSQLErrorMessage.test.tsx | 21 + .../ErrorMessage/InvalidSQLErrorMessage.tsx | 12 +- .../src/components/FacePile/index.tsx | 3 +- .../components/IconButton/IconButton.stories.tsx | 55 +- .../src/components/IconButton/IconButton.test.jsx | 37 -- .../src/components/IconButton/IconButton.test.tsx | 90 +++ .../src/components/IconButton/index.tsx | 189 +++---- .../src/components/Icons/AntdEnhanced.tsx | 2 + .../src/components/ListView/Filters/DateRange.tsx | 25 +- .../components/ListView/Filters/NumericalRange.tsx | 134 +++++ .../src/components/ListView/Filters/Select.tsx | 3 + .../src/components/ListView/Filters/index.tsx | 21 + superset-frontend/src/components/ListView/types.ts | 10 +- .../src/components/Select/CustomTag.tsx | 17 +- .../src/components/Select/Select.test.tsx | 214 +++----- superset-frontend/src/components/Select/Select.tsx | 327 ++++++----- superset-frontend/src/components/Select/styles.tsx | 20 +- superset-frontend/src/components/Select/types.ts | 4 + superset-frontend/src/components/Select/utils.tsx | 8 +- superset-frontend/src/components/Tags/Tag.test.tsx | 9 +- superset-frontend/src/components/Tags/Tag.tsx | 7 +- .../src/components/Tags/TagsList.test.tsx | 9 +- .../src/components/UiConfigContext/index.tsx | 4 + superset-frontend/src/constants.ts | 2 + .../src/dashboard/actions/dashboardState.js | 64 ++- .../components/AddSliceCard/AddSliceCard.tsx | 5 +- .../DashboardBuilder/DashboardBuilder.test.tsx | 42 ++ .../DashboardBuilder/DashboardBuilder.tsx | 2 +- .../dashboard/components/DashboardBuilder/state.ts | 5 +- .../src/dashboard/components/DashboardGrid.jsx | 17 +- .../dashboard/components/Header/Header.test.tsx | 34 ++ .../Header/useHeaderActionsDropdownMenu.tsx | 4 +- .../src/dashboard/components/SaveModal.tsx | 3 +- .../src/dashboard/components/SliceAdder.tsx | 9 +- .../dashboard/components/gridComponents/Chart.jsx | 13 +- .../components/gridComponents/ChartHolder.tsx | 2 +- .../dashboard/components/menu/WithPopoverMenu.tsx | 13 +- .../FilterBar/FilterControls/FilterControl.tsx | 47 +- .../components/nativeFilters/FilterBar/index.tsx | 12 +- .../nativeFilters/FilterBar/keyValue.tsx | 2 +- .../FiltersConfigModal/FilterTitleContainer.tsx | 3 +- .../FiltersConfigForm/FiltersConfigForm.tsx | 1 + .../src/dashboard/reducers/dashboardState.js | 13 +- .../src/dashboard/reducers/dashboardState.test.ts | 116 +++- superset-frontend/src/embedded/api.tsx | 5 + superset-frontend/src/embedded/index.tsx | 34 +- superset-frontend/src/embedded/utils.test.ts | 76 +++ .../utils.ts} | 35 +- .../components/DatasourcePanel/DatasourceItems.tsx | 165 ++++++ .../DatasourcePanel/DatasourcePanel.test.tsx | 198 ++++++- .../DatasourcePanelDragOption.test.tsx | 4 +- .../DatasourcePanel/DatasourcePanelItem.test.tsx | 237 +++----- .../DatasourcePanel/DatasourcePanelItem.tsx | 278 +++++----- .../components/DatasourcePanel/fixtures.tsx | 7 +- .../explore/components/DatasourcePanel/index.tsx | 130 ++--- .../transformDatasourceFolders.test.ts | 208 +++++++ .../DatasourcePanel/transformDatasourceFolders.ts | 177 ++++++ .../explore/components/DatasourcePanel/types.ts | 56 ++ .../ExploreContainer/ExploreContainer.test.tsx | 2 +- .../components/ExploreViewContainer/index.jsx | 3 +- .../ColumnConfigControl/ColumnConfigControl.tsx | 43 +- .../ColumnConfigControl/ColumnConfigItem.tsx | 106 ++-- .../controls/ColumnConfigControl/constants.tsx | 27 +- .../controls/ColumnConfigControl/types.ts | 2 + .../DndFilterSelect.test.tsx | 10 +- .../DndMetricSelect.test.tsx | 10 +- .../DndColumnSelectControl/DndMetricSelect.tsx | 2 + .../components/controls/SelectControl.test.jsx | 6 +- .../src/explore/controlUtils/controlUtils.test.tsx | 5 +- ...etControlValuesCompatibleWithDatasource.test.ts | 2 +- .../explore/exploreUtils/getChartDataUri.test.ts | 107 ++-- .../src/explore/exploreUtils/index.js | 16 +- superset-frontend/src/explore/fixtures.tsx | 5 +- .../features/allEntities/AllEntitiesTable.test.tsx | 2 + .../src/features/charts/ChartCard.tsx | 5 +- .../src/features/dashboards/DashboardCard.tsx | 5 +- .../src/features/databases/DatabaseModal/index.tsx | 2 +- superset-frontend/src/features/datasets/types.ts | 2 +- superset-frontend/src/features/home/ChartTable.tsx | 3 +- .../src/features/home/DashboardTable.tsx | 3 +- superset-frontend/src/features/home/EmptyState.tsx | 3 +- superset-frontend/src/features/home/RightMenu.tsx | 11 +- .../src/features/home/SavedQueries.tsx | 11 +- superset-frontend/src/features/home/SubMenu.tsx | 2 + .../src/features/roles/RoleFormItems.tsx | 70 +++ .../src/features/roles/RoleListAddModal.test.tsx | 92 ++++ .../src/features/roles/RoleListAddModal.tsx | 71 +++ .../features/roles/RoleListDuplicateModal.test.tsx | 100 ++++ .../src/features/roles/RoleListDuplicateModal.tsx | 69 +++ .../src/features/roles/RoleListEditModal.test.tsx | 153 ++++++ .../src/features/roles/RoleListEditModal.tsx | 153 ++++++ .../VizTypeControl => features/roles}/types.ts | 61 ++- .../roles/utils.ts} | 41 +- superset-frontend/src/features/tags/TagCard.tsx | 5 +- .../src/features/users/UserListModal.tsx | 250 +++++++++ .../features/users/types.ts} | 11 +- .../users/utils.ts} | 37 +- .../Select/SelectFilterPlugin.stories.tsx | 4 + .../components/Select/SelectFilterPlugin.test.tsx | 133 ++++- .../components/Select/SelectFilterPlugin.tsx | 148 +++-- .../filters/components/Select/buildQuery.test.ts | 1 + .../src/filters/components/Select/controlPanel.ts | 13 + .../src/filters/components/Select/types.ts | 2 + superset-frontend/src/filters/utils.ts | 4 +- .../useChangeEffect/index.ts => src/globals.d.ts} | 3 +- .../src/middleware/loggerMiddleware.js | 3 +- .../src/pages/AnnotationLayerList/index.tsx | 3 +- .../src/pages/DashboardList/index.tsx | 5 +- .../src/pages/RolesList/RolesList.test.tsx | 206 +++++++ superset-frontend/src/pages/RolesList/index.tsx | 507 +++++++++++++++++ .../src/pages/UsersList/UsersList.test.tsx | 192 +++++++ superset-frontend/src/pages/UsersList/index.tsx | 598 ++++++++++++++++++++ superset-frontend/src/preamble.ts | 4 +- .../jest.config.js => src/public-path.ts} | 9 +- superset-frontend/src/theme.ts | 2 + superset-frontend/src/types/bootstrapTypes.ts | 2 + .../src/{types/Owner.ts => utils/assetUrl.ts} | 13 +- superset-frontend/src/utils/export.ts | 7 +- .../src/utils/getBootstrapData.test.ts | 110 ++++ superset-frontend/src/utils/getBootstrapData.ts | 20 + .../navigationUtils.ts} | 41 +- .../removeDuplicates.ts => src/utils/pathUtils.ts} | 24 +- superset-frontend/src/views/App.tsx | 4 +- superset-frontend/src/views/CRUD/hooks.ts | 9 +- superset-frontend/src/views/index.tsx | 2 + superset-frontend/src/views/menu.tsx | 1 + superset-frontend/src/views/routes.tsx | 33 +- superset-frontend/webpack.config.js | 29 +- superset-websocket/package-lock.json | 328 +++++++++-- superset-websocket/package.json | 4 +- superset/app.py | 60 +- superset/charts/schemas.py | 1 + superset/cli/viz_migrations.py | 22 +- superset/commands/chart/export.py | 26 + superset/commands/chart/importers/v1/__init__.py | 22 +- superset/commands/dashboard/export.py | 20 +- .../commands/dashboard/importers/v1/__init__.py | 34 +- superset/commands/database/exceptions.py | 9 + .../commands/database/importers/v1/__init__.py | 8 +- superset/commands/database/sync_permissions.py | 38 +- superset/commands/database/update.py | 3 +- superset/commands/dataset/importers/v1/__init__.py | 10 +- superset/commands/dataset/update.py | 83 ++- superset/commands/export/assets.py | 1 + superset/commands/importers/v1/__init__.py | 16 +- superset/commands/importers/v1/examples.py | 3 +- superset/commands/importers/v1/utils.py | 93 +++- .../logs}/__init__.py | 0 superset/commands/query/importers/v1/__init__.py | 8 +- superset/commands/tag/export.py | 131 +++++ superset/config.py | 6 +- superset/connectors/sqla/models.py | 8 +- superset/dashboards/api.py | 1 + superset/dashboards/schemas.py | 1 + superset/datasets/api.py | 38 +- superset/datasets/schemas.py | 36 +- superset/db_engine_specs/base.py | 4 + superset/db_engine_specs/bigquery.py | 158 ++++-- superset/db_engine_specs/databricks.py | 14 +- superset/db_engine_specs/doris.py | 2 +- superset/db_engine_specs/duckdb.py | 34 ++ superset/db_engine_specs/postgres.py | 2 +- superset/db_engine_specs/presto.py | 2 +- superset/db_engine_specs/snowflake.py | 4 +- superset/initialization/__init__.py | 70 ++- superset/migrations/migration_utils.py | 13 + superset/migrations/shared/migrate_viz/base.py | 59 +- .../migrations/shared/migrate_viz/processors.py | 1 + superset/migrations/shared/utils.py | 23 +- .../versions/2015-09-21_17-30_4e6a06bad7a8_init.py | 30 +- ...15-12-04_11-16_315b3f4da9b0_adding_log_model.py | 10 +- .../versions/2016-01-13_20-24_8e80a26a31db_.py | 10 +- .../2016-02-03_17-41_d827694c7555_css_templates.py | 10 +- ...3-13_09-56_a2d606a761d9_adding_favstar_model.py | 10 +- ...04-15_17-58_4fa88fe24e94_owners_many_to_many.py | 12 +- ...016-07-25_17-48_ad82a75afd82_add_query_model.py | 10 +- ..._17-39_5e4a03ef0bf0_add_request_access_model.py | 4 +- .../2017-01-10_11-47_bcf3126872fc_add_keyvalue.py | 10 +- .../2017-09-13_16-36_ddd6ebdd853b_annotations.py | 6 +- ..._20-28_6c7537a6004a_models_for_email_reports.py | 12 +- ...e1b21cd94a4_change_owner_to_m2m_relation_on_.py | 5 +- ...05_db4b49eb0782_add_tables_for_sql_lab_state.py | 12 +- ...4_17-07_0a6f12f60c73_add_role_level_security.py | 12 +- ...57699a813e_add_tables_relation_to_row_level_.py | 13 +- .../2020-05-26_23-21_2f1d15e8a6af_add_alerts.py | 14 +- .../2020-08-28_17-16_175ea3592453_cache_lookup.py | 10 +- ...-08-31_20-30_2e5a0ee25ed4_refractor_alerting.py | 16 +- ...208f_collapse_alerting_models_into_a_single_.py | 9 +- ...1-04_11-06_49b5a32daba5_add_report_schedules.py | 18 +- ...cdd12658_add_roles_relationship_to_dashboard.py | 9 +- ...021-03-29_11-15_3ebe0993c770_filterset_table.py | 10 +- ...03_5afbb1a5849b_add_embedded_dahshoard_table.py | 16 +- ...03-04_09-59_6766938c6065_add_key_value_store.py | 16 +- ...cf3d64daf4_add_user_id_dttm_idx_to_log_model.py | 13 +- ...c2d8ec8595_create_ssh_tunnel_credentials_tbl.py | 21 +- ...06-01_13-13_83e1abbe777f_drop_access_request.py | 10 +- ..._90139bf715e4_add_currency_column_to_metrics.py | 17 +- ...0-34_e0f6f91c2055_create_user_favorite_table.py | 10 +- ...20_65a167d4c62e_add_indexes_to_report_models.py | 30 +- ...20_16-02_678eefb4ab44_add_access_token_table.py | 22 +- ...0_3dfd0e78650e_add_query_sql_editor_id_index.py | 24 +- ...02f4f7811799_remove_sl_dataset_columns_table.py | 4 +- ...7_39549add7bfc_remove_sl_table_columns_table.py | 4 +- ..._15-23_38f4144e8558_remove_sl_dataset_tables.py | 4 +- ...3_15-27_e53fd48cc078_remove_sl_dataset_users.py | 4 +- ...4-08-13_15-29_a6b32d2d07b1_remove_sl_columns.py | 4 +- ...24-08-13_15-31_007a1abffe7e_remove_sl_tables.py | 4 +- ...-08-13_15-33_48cbb571fa3a_remove_sl_datasets.py | 4 +- ...dba9f_merge_x_axis_sort_series_with_x_axis_.py} | 66 ++- superset/security/api.py | 165 +++++- superset/security/manager.py | 81 ++- superset/sql_parse.py | 3 +- superset/tasks/thumbnails.py | 2 + superset/templates/appbuilder/navbar.html | 2 +- superset/templates/superset/base.html | 8 +- superset/templates/superset/basic.html | 8 +- .../templates/superset/partials/asset_bundle.html | 57 +- superset/templates/superset/spa.html | 2 +- superset/translations/it/LC_MESSAGES/messages.po | 2 +- .../translations/pt_BR/LC_MESSAGES/messages.po | 501 +++++++++-------- .../translations/zh_TW/LC_MESSAGES/messages.po | 154 +++--- superset/utils/urls.py | 10 +- superset/utils/webdriver.py | 5 +- superset/views/base.py | 6 +- superset/views/core.py | 22 +- superset/views/dashboard/views.py | 11 +- superset/views/{annotations.py => roles.py} | 14 +- superset/views/{annotations.py => users_list.py} | 14 +- tests/integration_tests/charts/api_tests.py | 16 +- tests/integration_tests/core_tests.py | 55 +- tests/integration_tests/databases/api_tests.py | 27 + tests/integration_tests/datasets/api_tests.py | 93 +++- tests/integration_tests/datasets/commands_tests.py | 2 + .../db_engine_specs/bigquery_tests.py | 133 ++--- tests/integration_tests/security/api_tests.py | 17 + tests/integration_tests/security_tests.py | 1 + .../charts/commands/importers/v1/import_test.py | 45 ++ tests/unit_tests/commands/databases/conftest.py | 2 + .../commands/databases/sync_permissions_test.py | 43 +- tests/unit_tests/commands/dataset/test_update.py | 379 ++++++++++++- tests/unit_tests/commands/export_test.py | 65 ++- .../commands/importers/v1/import_test.py | 45 ++ tests/unit_tests/datasets/commands/export_test.py | 67 +++ .../datasets/commands/importers/v1/import_test.py | 166 ++++++ .../unit_tests/db_engine_specs/test_databricks.py | 4 +- tests/unit_tests/security/api_test.py | 5 + 372 files changed, 10783 insertions(+), 3228 deletions(-) copy .flaskenv => docker/docker-healthcheck.sh (87%) mode change 100644 => 100755 create mode 100644 docker/nginx/templates/superset.conf.template create mode 100644 docs/static/img/tutorial/publish_button_dashboard.png create mode 100644 superset-frontend/plugins/legacy-plugin-chart-country-map/src/countries/ivory_coast.geojson create mode 100644 superset-frontend/plugins/plugin-chart-echarts/src/BigNumber/BigNumberTotal/controlPanel.test.ts create mode 100644 superset-frontend/plugins/plugin-chart-echarts/src/BigNumber/BigNumberTotal/transformProps.test.ts copy superset-frontend/{src/components/Card/Card.stories.tsx => spec/fixtures/mockDatabases.ts} (60%) delete mode 100644 superset-frontend/src/components/IconButton/IconButton.test.jsx create mode 100644 superset-frontend/src/components/IconButton/IconButton.test.tsx create mode 100644 superset-frontend/src/components/ListView/Filters/NumericalRange.tsx create mode 100644 superset-frontend/src/embedded/utils.test.ts copy superset-frontend/src/{dashboard/util/getChartAndLabelComponentIdFromPath.js => embedded/utils.ts} (50%) create mode 100644 superset-frontend/src/explore/components/DatasourcePanel/DatasourceItems.tsx create mode 100644 superset-frontend/src/explore/components/DatasourcePanel/transformDatasourceFolders.test.ts create mode 100644 superset-frontend/src/explore/components/DatasourcePanel/transformDatasourceFolders.ts create mode 100644 superset-frontend/src/features/roles/RoleFormItems.tsx create mode 100644 superset-frontend/src/features/roles/RoleListAddModal.test.tsx create mode 100644 superset-frontend/src/features/roles/RoleListAddModal.tsx create mode 100644 superset-frontend/src/features/roles/RoleListDuplicateModal.test.tsx create mode 100644 superset-frontend/src/features/roles/RoleListDuplicateModal.tsx create mode 100644 superset-frontend/src/features/roles/RoleListEditModal.test.tsx create mode 100644 superset-frontend/src/features/roles/RoleListEditModal.tsx copy superset-frontend/src/{explore/components/controls/VizTypeControl => features/roles}/types.ts (54%) copy superset-frontend/src/{dashboard/components/BuilderComponentPane/BuilderComponentPane.test.tsx => features/roles/utils.ts} (52%) create mode 100644 superset-frontend/src/features/users/UserListModal.tsx copy superset-frontend/{plugins/plugin-chart-echarts/src/utils/convertInteger.ts => src/features/users/types.ts} (80%) copy superset-frontend/src/{dashboard/components/BuilderComponentPane/BuilderComponentPane.test.tsx => features/users/utils.ts} (56%) copy superset-frontend/{packages/superset-ui-core/src/hooks/useChangeEffect/index.ts => src/globals.d.ts} (94%) create mode 100644 superset-frontend/src/pages/RolesList/RolesList.test.tsx create mode 100644 superset-frontend/src/pages/RolesList/index.tsx create mode 100644 superset-frontend/src/pages/UsersList/UsersList.test.tsx create mode 100644 superset-frontend/src/pages/UsersList/index.tsx copy superset-frontend/{packages/generator-superset/jest.config.js => src/public-path.ts} (79%) copy superset-frontend/src/{types/Owner.ts => utils/assetUrl.ts} (69%) create mode 100644 superset-frontend/src/utils/getBootstrapData.test.ts copy superset-frontend/src/{dashboard/util/getFilterScopeParentNodes.js => utils/navigationUtils.ts} (55%) copy superset-frontend/{packages/superset-ui-core/src/utils/removeDuplicates.ts => src/utils/pathUtils.ts} (67%) copy superset/{advanced_data_type => commands/logs}/__init__.py (100%) create mode 100644 superset/commands/tag/export.py copy superset/migrations/versions/{2024-03-01_10-47_be1b217cd8cd_big_number_kpi_single_metric.py => 2025-04-13_22-10_378cecfdba9f_merge_x_axis_sort_series_with_x_axis_.py} (51%) copy superset/views/{annotations.py => roles.py} (76%) copy superset/views/{annotations.py => users_list.py} (76%)