This is an automated email from the ASF dual-hosted git repository.
jli pushed a change to branch fix-app-root-logos
in repository https://gitbox.apache.org/repos/asf/superset.git
discard ebbdb573e24 fix(frontend): restrict ensureAppRoot to safe URI schemes
(XSS prevention)
discard c57a0156482 test(frontend): consolidate repeated absolute URL literals
into constants
discard 69034339234 fix(frontend): update makeUrl docstring and pin URI scheme
edge case
discard 5075831a19a fix(frontend): preserve absolute and protocol-relative
URLs in ensureAppRoot
discard 8273ac50c1b test(frontend): add failing tests for ensureAppRoot
absolute URL passthrough
add fa346099523 feat: Support OAuth2 single-use refresh tokens (#38364)
add 1136e86cf70 chore(deps): bump ioredis from 5.9.3 to 5.10.0 in
/superset-websocket (#38318)
add f10cb14d92b chore(deps-dev): bump @types/node from 25.3.2 to 25.3.3 in
/superset-websocket (#38319)
add 983b633972f feat(bar-chart): add option to color bars by primary axis
when no dimensions are set (#37531)
add ef4b1d674be feat(docs): add filterable UI Components table and improve
build performance (#38253)
add 7815afb24d2 fix(charts): improve minor gridline visibility in dark
themes (#38371)
add 51ac758b801 fix(tags): expire tag relationship after deleting all
tagged objects (#38163)
add 80a29cd6fed chore(deps-dev): bump terser-webpack-plugin from 5.3.16 to
5.3.17 in /superset-frontend (#38386)
add 35d0aad854a feat(explore): Add Echarts option editor (#37868)
add 69732d9dca6 fix(superset-ui-core): achieve 100% coverage for npm run
core:cover (#38397)
add 832fee3ff8c refactor(mcp): move superset_core MCP module from mcp to
api/mcp (#38394)
add 19f949276ce refactor(config): SIGNAL_CACHE_CONFIG →
DISTRIBUTED_COORDINATION_CONFIG (#38395)
add aff6e260891 build(deps): replace monolithic `googleapis` with
lightweight `@googleapis/sheet` sub-package (#38124)
add 3d5694ee0f1 chore: regular `npm audit fix` (#38248)
add 3b656f9cc2f fix(dashboard): restore filterState prop for cross-filter
functionality (#38349)
add c25adbc3953 test(DashboardList): migrate Cypress E2E tests to RTL
(#38368)
add e2ebc135e4a test(playwright): add dashboard list E2E tests (#38377)
add 27d54f84213 fix(build/backend): migrate to deps-free `pygeohash` with
pre-built wheels at runtime (#37524)
add 796c206ee7b fix(charts): apply resample before rolling window in
post-processing pipeline (#37987)
add 63e7ee70bff fix(echarts): adaptive formatting labels (#38017)
add 8c9efe5659f feat: support for import/export masked_encrypted_extra
(backend) (#38077)
add dc995328a86 chore(deps): bump cryptography from 44.0.3 to 46.0.5
(#37912)
add 8f28a8734a1 chore(deps): bump flask from 2.3.3 to 3.1.3 (#38168)
add 1bfd41df0ca chore(deps): bump aquasecurity/trivy-action from 0.34.1 to
0.34.2 (#38352)
add 88241d3e710 chore(deps-dev): bump oxlint from 1.50.0 to 1.51.0 in
/superset-frontend (#38353)
add a79dcbbb66d chore(deps): update d3-cloud requirement from ^1.2.8 to
^1.2.9 in /superset-frontend/plugins/plugin-chart-word-cloud (#38381)
add 939e4194c61 fix(alerts): fix error toast when editing report with
saved tab selection (#38198)
add 0d5827ac428 chore(extensions): unified contribution api and automatic
prefixing (#38412)
add 5a2a72cf31a chore(deps): bump svgo from 3.3.2 to 3.3.3 in /docs
(#38422)
add fdf19db5e6a chore(deps): bump svgo from 3.3.2 to 3.3.3 in
/superset-frontend (#38421)
add 4dfb0e66cb6 chore(deps-dev): bump webpack from 5.105.3 to 5.105.4 in
/superset-frontend (#38385)
add 880cab58c33 fix(bug): Error when adding a filter using custom sql
(#38246)
add 20cc3345d89 chore(playwright): Using warning for timeouts (#38441)
add a2c23a2a58f chore(deps-dev): bump css-minimizer-webpack-plugin from
7.0.4 to 8.0.0 in /superset-frontend (#38434)
add f6f734f0d16 chore(deps): bump google-auth-library from 10.5.0 to
10.6.1 in /superset-frontend (#38436)
add a513406239f feat!: upgrade project's Node version to v22 (#37223)
add f0416eff78e fix(dashboard): fix multiple drag-and-drop and edit mode
issues (#37891)
add 0dbd4c5b909 docs(mcp): add MCP server deployment and authentication
guide (#38415)
add 6087c4a658f test(frontend): add failing tests for ensureAppRoot
absolute URL passthrough
add d16f3336a00 fix(frontend): preserve absolute and protocol-relative
URLs in ensureAppRoot
add 8be9f3cc164 fix(frontend): update makeUrl docstring and pin URI scheme
edge case
add 3be98203c5d test(frontend): consolidate repeated absolute URL literals
into constants
add 29b892a60f1 fix(frontend): restrict ensureAppRoot to safe URI schemes
(XSS prevention)
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 (ebbdb573e24)
\
N -- N -- N refs/heads/fix-app-root-logos (29b892a60f1)
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/workflows/docker.yml | 2 +-
UPDATING.md | 8 +-
docs/.gitignore | 8 +-
docs/.nvmrc | 2 +-
docs/admin_docs/configuration/cache.mdx | 16 +-
docs/babel.config.js | 32 -
docs/developer_docs/api.mdx | 36 +-
.../extensions/contribution-types.md | 51 +-
docs/developer_docs/extensions/development.md | 64 +-
docs/developer_docs/extensions/mcp-server.md | 679 +++++++++
docs/developer_docs/extensions/mcp.md | 6 +-
docs/developer_docs/extensions/overview.md | 6 +-
docs/developer_docs/extensions/quick-start.md | 44 +-
docs/developer_docs/extensions/tasks.md | 4 +-
docs/developer_docs/sidebars.js | 1 +
docs/docusaurus.config.ts | 28 +
docs/package.json | 11 +-
docs/scripts/generate-database-docs.mjs | 8 +-
docs/scripts/generate-extension-components.mjs | 676 ---------
docs/scripts/generate-if-changed.mjs | 307 ++++
docs/scripts/generate-superset-components.mjs | 241 +++-
docs/sidebarTutorials.js | 11 -
docs/src/components/databases/DatabaseIndex.tsx | 1 +
.../components/ui-components/ComponentIndex.tsx | 262 ++++
.../src/components/ui-components/index.ts | 3 +-
.../src/components/ui-components}/types.ts | 43 +-
docs/src/data/databases.json | 12 +-
docs/src/shims/superset-ui-core.ts | 57 +
docs/src/types/apache-superset-core/index.d.ts | 4 +-
docs/src/webpack.extend.ts | 15 +-
docs/tsconfig.json | 5 +-
docs/yarn.lock | 713 ++++++++--
pyproject.toml | 8 +-
requirements/base.txt | 4 +-
requirements/development.txt | 8 +-
.../superset_core/{mcp/__init__.py => api/mcp.py} | 2 +-
superset-core/src/superset_core/api/rest_api.py | 97 +-
superset-embedded-sdk/.nvmrc | 2 +-
superset-frontend/.nvmrc | 2 +-
.../cypress/e2e/dashboard_list/filter.test.ts | 47 -
.../cypress/e2e/dashboard_list/list.test.ts | 279 ----
superset-frontend/package-lock.json | 1470 ++++++++------------
superset-frontend/package.json | 15 +-
.../packages/superset-core/src/api/editors.ts | 22 +-
.../src/shared-controls/sharedControls.tsx | 15 +
.../superset-ui-chart-controls/src/types.ts | 1 +
.../src/utils/metricColumnFilter.test.ts | 8 +
.../test/utils/getColorFormatters.test.ts | 41 +
.../Matrixify/MatrixifyGridGenerator.test.ts | 120 ++
.../components/Matrixify/MatrixifyGridGenerator.ts | 8 +-
.../types/matrixify.mocks.test.ts} | 12 +-
.../src/chart/types/matrixify.test.ts | 82 ++
.../superset-ui-core/src/chart/types/matrixify.ts | 36 +-
.../src/components/AsyncAceEditor/index.tsx | 6 +
.../AsyncAceEditor/useJsonValidation.test.ts | 25 +
.../src/components/List/List.test.tsx | 10 +
.../src/components/Select/constants.test.ts | 49 +
.../Table/utils/InteractiveTableUtils.test.ts | 574 ++++++++
.../superset-ui-core/src/components/index.ts | 1 +
.../src/types/react-syntax-highlighter.d.ts | 7 -
.../src/utils/rankedSearchCompare.test.ts | 20 +
.../index.ts => utils/withLabel.test.ts} | 24 +-
.../test/connection/SupersetClient.test.ts | 6 +
.../test/connection/SupersetClientClass.test.ts | 33 +
.../test/currency-format/CurrencyFormatter.test.ts | 78 ++
.../test/currency-format/utils.test.ts | 193 +++
.../test/query/types/Column.test.ts | 14 +
.../test/query/types/Dashboard.test.ts | 33 +
.../playwright/helpers/api/dashboard.ts | 170 +++
.../playwright/helpers/fixtures/testAssets.ts | 24 +-
.../{ChartListPage.ts => DashboardListPage.ts} | 67 +-
.../experimental/dashboard/dashboard-list.spec.ts | 403 ++++++
.../dashboard-test-helpers.ts} | 47 +-
.../plugins/plugin-chart-echarts/package.json | 4 +-
.../BigNumberWithTrendline/buildQuery.test.ts | 4 +-
.../BigNumber/BigNumberWithTrendline/buildQuery.ts | 2 +-
.../src/MixedTimeseries/buildQuery.ts | 2 +-
.../src/MixedTimeseries/controlPanel.tsx | 1 +
.../src/MixedTimeseries/transformProps.ts | 20 +-
.../src/Timeseries/Area/controlPanel.tsx | 1 +
.../src/Timeseries/Regular/Bar/controlPanel.tsx | 3 +
.../src/Timeseries/Regular/Line/controlPanel.tsx | 1 +
.../Timeseries/Regular/SmoothLine/controlPanel.tsx | 1 +
.../src/Timeseries/buildQuery.ts | 6 +-
.../src/Timeseries/transformProps.ts | 148 +-
.../src/Timeseries/transformers.ts | 49 +-
.../plugin-chart-echarts/src/Timeseries/types.ts | 1 +
.../plugin-chart-echarts/src/components/Echart.tsx | 6 +
.../plugins/plugin-chart-echarts/src/controls.tsx | 28 +
.../plugins/plugin-chart-echarts/src/index.ts | 3 +
.../src/utils/eChartOptionsSchema.ts | 827 +++++++++++
.../plugin-chart-echarts/src/utils/formatters.ts | 91 +-
.../src/utils/mergeCustomEChartOptions.test.ts | 163 +++
.../src/utils/mergeCustomEChartOptions.ts | 79 ++
.../src/utils/safeEChartOptionsParser.test.ts | 525 +++++++
.../src/utils/safeEChartOptionsParser.ts | 477 +++++++
.../test/MixedTimeseries/transformProps.test.ts | 2 +-
.../test/Timeseries/Bar/transformProps.test.ts | 283 ++++
.../test/Timeseries/Scatter/transformProps.test.ts | 8 +-
.../test/Timeseries/transformProps.test.ts | 6 +-
.../test/utils/formatters.test.ts | 174 ++-
.../plugins/plugin-chart-word-cloud/package.json | 2 +-
.../scripts/eslint-metrics-uploader.js | 144 --
.../scripts/oxlint-metrics-uploader.js | 7 +-
superset-frontend/src/components/Chart/Chart.tsx | 2 +
.../src/core/editors/AceEditorProvider.tsx | 7 +
.../DashboardBuilder/DashboardBuilder.tsx | 18 +-
.../src/dashboard/components/dnd/DragDroppable.tsx | 9 +
.../components/gridComponents/Chart/Chart.test.tsx | 30 +
.../components/gridComponents/Chart/Chart.tsx | 1 +
.../components/gridComponents/Column/Column.tsx | 2 +
.../gridComponents/Markdown/Markdown.test.tsx | 24 +-
.../components/gridComponents/Row/Row.tsx | 25 +-
.../dashboard/components/menu/WithPopoverMenu.tsx | 15 +
.../AdhocFilterEditPopoverSqlTabContent.test.tsx | 84 +-
.../AdhocFilterEditPopoverSqlTabContent/index.tsx | 8 +-
.../components/controls/JSEditorControl.test.tsx | 125 ++
.../components/controls/JSEditorControl.tsx | 105 ++
.../MetricControl/AdhocMetricEditPopover/index.tsx | 21 +-
.../src/explore/components/controls/index.ts | 2 +
.../src/features/alerts/AlertReportModal.test.tsx | 467 ++++++-
.../src/features/alerts/AlertReportModal.tsx | 40 +-
superset-frontend/src/features/alerts/types.ts | 7 +
.../DashboardList/DashboardList.behavior.test.tsx | 394 ++++++
.../DashboardList/DashboardList.cardview.test.tsx | 417 ++++++
.../DashboardList/DashboardList.listview.test.tsx | 402 ++++++
.../DashboardList.permissions.test.tsx | 340 +++++
.../src/pages/DashboardList/DashboardList.test.tsx | 391 +++---
.../DashboardList/DashboardList.testHelpers.tsx | 360 +++++
superset-websocket/package-lock.json | 44 +-
superset-websocket/package.json | 4 +-
superset-websocket/utils/client-ws-app/.nvmrc | 2 +-
superset/commands/database/export.py | 9 +
superset/commands/database/importers/v1/utils.py | 26 +-
superset/commands/distributed_lock/acquire.py | 2 +-
superset/commands/distributed_lock/base.py | 6 +-
superset/commands/distributed_lock/release.py | 2 +-
superset/commands/importers/v1/__init__.py | 4 +
superset/commands/importers/v1/assets.py | 4 +
superset/commands/importers/v1/utils.py | 19 +
superset/config.py | 20 +-
superset/core/api/core_api_injection.py | 64 +-
superset/core/mcp/core_mcp_injection.py | 74 +-
superset/daos/tag.py | 7 +
superset/databases/api.py | 14 +
superset/databases/schemas.py | 62 +
superset/db_engine_specs/base.py | 6 +
superset/distributed_lock/__init__.py | 2 +-
superset/extensions/context.py | 90 ++
superset/extensions/contributions.py | 94 ++
superset/importexport/api.py | 13 +
superset/initialization/__init__.py | 5 +-
superset/mcp_service/CLAUDE.md | 16 +-
superset/mcp_service/app.py | 2 +-
.../chart/prompts/create_chart_guided.py | 2 +-
superset/mcp_service/chart/tool/generate_chart.py | 2 +-
superset/mcp_service/chart/tool/get_chart_data.py | 2 +-
superset/mcp_service/chart/tool/get_chart_info.py | 2 +-
.../mcp_service/chart/tool/get_chart_preview.py | 2 +-
superset/mcp_service/chart/tool/list_charts.py | 2 +-
superset/mcp_service/chart/tool/update_chart.py | 2 +-
.../mcp_service/chart/tool/update_chart_preview.py | 2 +-
.../tool/add_chart_to_existing_dashboard.py | 2 +-
.../dashboard/tool/generate_dashboard.py | 2 +-
.../dashboard/tool/get_dashboard_info.py | 2 +-
.../mcp_service/dashboard/tool/list_dashboards.py | 2 +-
.../mcp_service/dataset/tool/get_dataset_info.py | 2 +-
superset/mcp_service/dataset/tool/list_datasets.py | 2 +-
.../explore/tool/generate_explore_link.py | 2 +-
superset/mcp_service/sql_lab/tool/execute_sql.py | 2 +-
.../sql_lab/tool/open_sql_lab_with_context.py | 2 +-
superset/mcp_service/system/prompts/quickstart.py | 2 +-
.../mcp_service/system/tool/get_instance_info.py | 2 +-
superset/mcp_service/system/tool/get_schema.py | 2 +-
superset/mcp_service/system/tool/health_check.py | 2 +-
superset/tasks/decorators.py | 15 +-
superset/tasks/locks.py | 4 +-
superset/tasks/manager.py | 8 +-
superset/utils/cache_manager.py | 34 +-
superset/utils/json.py | 43 +
superset/utils/oauth2.py | 4 +
superset/utils/pandas_postprocessing/geography.py | 6 +-
superset/utils/webdriver.py | 2 +-
superset/viz.py | 24 +-
tests/integration_tests/databases/api_tests.py | 91 ++
tests/integration_tests/fixtures/importexport.py | 26 +
.../integration_tests/tasks/test_sync_join_wait.py | 4 +-
tests/unit_tests/databases/api_test.py | 70 +
.../databases/commands/importers/v1/import_test.py | 123 ++
tests/unit_tests/databases/schema_tests.py | 106 ++
tests/unit_tests/db_engine_specs/test_base.py | 91 ++
tests/unit_tests/importexport/api_test.py | 52 +
tests/unit_tests/tags/commands/update_test.py | 60 +
tests/unit_tests/tasks/test_handlers.py | 4 +-
tests/unit_tests/tasks/test_manager.py | 34 +-
tests/unit_tests/tasks/test_timeout.py | 32 +-
tests/unit_tests/utils/json_tests.py | 139 ++
tests/unit_tests/utils/oauth2_tests.py | 56 +
198 files changed, 12526 insertions(+), 2918 deletions(-)
delete mode 100644 docs/babel.config.js
create mode 100644 docs/developer_docs/extensions/mcp-server.md
delete mode 100644 docs/scripts/generate-extension-components.mjs
create mode 100644 docs/scripts/generate-if-changed.mjs
create mode 100644 docs/src/components/ui-components/ComponentIndex.tsx
copy superset-frontend/packages/superset-ui-core/src/ui-overrides/index.tsx =>
docs/src/components/ui-components/index.ts (92%)
copy {superset-frontend/src/explore/components/controls/VizTypeControl =>
docs/src/components/ui-components}/types.ts (57%)
create mode 100644 docs/src/shims/superset-ui-core.ts
rename superset-core/src/superset_core/{mcp/__init__.py => api/mcp.py} (99%)
delete mode 100644
superset-frontend/cypress-base/cypress/e2e/dashboard_list/filter.test.ts
delete mode 100644
superset-frontend/cypress-base/cypress/e2e/dashboard_list/list.test.ts
copy
superset-frontend/packages/superset-ui-core/src/{components/EmptyState/Empty.test.tsx
=> chart/types/matrixify.mocks.test.ts} (72%)
create mode 100644
superset-frontend/packages/superset-ui-core/src/components/Select/constants.test.ts
create mode 100644
superset-frontend/packages/superset-ui-core/src/components/Table/utils/InteractiveTableUtils.test.ts
copy
superset-frontend/packages/superset-ui-core/src/{color/colorSchemes/index.ts =>
utils/withLabel.test.ts} (53%)
create mode 100644 superset-frontend/playwright/helpers/api/dashboard.ts
copy superset-frontend/playwright/pages/{ChartListPage.ts =>
DashboardListPage.ts} (56%)
create mode 100644
superset-frontend/playwright/tests/experimental/dashboard/dashboard-list.spec.ts
copy
superset-frontend/playwright/tests/experimental/{dataset/dataset-test-helpers.ts
=> dashboard/dashboard-test-helpers.ts} (53%)
create mode 100644
superset-frontend/plugins/plugin-chart-echarts/src/utils/eChartOptionsSchema.ts
create mode 100644
superset-frontend/plugins/plugin-chart-echarts/src/utils/mergeCustomEChartOptions.test.ts
create mode 100644
superset-frontend/plugins/plugin-chart-echarts/src/utils/mergeCustomEChartOptions.ts
create mode 100644
superset-frontend/plugins/plugin-chart-echarts/src/utils/safeEChartOptionsParser.test.ts
create mode 100644
superset-frontend/plugins/plugin-chart-echarts/src/utils/safeEChartOptionsParser.ts
delete mode 100644 superset-frontend/scripts/eslint-metrics-uploader.js
create mode 100644
superset-frontend/src/explore/components/controls/JSEditorControl.test.tsx
create mode 100644
superset-frontend/src/explore/components/controls/JSEditorControl.tsx
create mode 100644
superset-frontend/src/pages/DashboardList/DashboardList.behavior.test.tsx
create mode 100644
superset-frontend/src/pages/DashboardList/DashboardList.cardview.test.tsx
create mode 100644
superset-frontend/src/pages/DashboardList/DashboardList.listview.test.tsx
create mode 100644
superset-frontend/src/pages/DashboardList/DashboardList.permissions.test.tsx
create mode 100644
superset-frontend/src/pages/DashboardList/DashboardList.testHelpers.tsx
create mode 100644 superset/extensions/context.py
create mode 100644 superset/extensions/contributions.py