This is an automated email from the ASF dual-hosted git repository.
sadpandajoe pushed a change to branch ultraset-fix-37100
in repository https://gitbox.apache.org/repos/asf/superset.git
from 60e66091231 Merge branch 'master' into ultraset-fix-37100
add c4943a0ab34 feat(native-filters): add configurable display format for
time filters (#44237)
add cef83b3f8df fix(import): catch KeyError for missing uuid/ssh_tunnel in
load_configs (#43305)
add df6e0d08b35 fix(sqla): wrap TypeError from virtual dataset Jinja
rendering as a validation error (#44312)
add 1788486228c fix(datasets): soften render-time UndefinedError in
get_virtual_table_metadata (#44316)
add ee4b8ddff6e fix(ci): align superset-cache tag consumers with the
Dockerfile PY_VER (#44534)
add 43f0f8876ad chore(ci): make the DB migration conflict bot comment less
emoji-heavy and more actionable (#44506)
add 0fe0662b271 fix(i18n): regenerate messages.pot to match source (#44509)
add 9f48d0eac9e fix(tests): await userEvent.click in CsrfErrorMessage
compact-mode test (#44540)
add 7024401aef2 fix(mcp): drop tiktoken, size-guard responses by exact
byte length (#44508)
add 9413294b2bd docs(pivot-table): document the "Show values as"
percentage display option (#44127)
add 48795f9a2d4 docs(explore): document show_download param for standalone
chart embeds (#43906)
add 7dd70eaf2d6 fix: tighten object-level and destination checks across
four unrelated endpoints (#44036)
add add97e5d190 fix(embedded): tighten guest-token scoping for
annotations, result types, and channels (#43391)
add ca7cdfcd0ff fix(pinot): require the SQLAlchemy 2 driver extra (#44287)
add 0f229fda75f fix(security): exempt health blueprint from forced
password changes (#44504)
add 269b9f99fef fix(views): return 401 for NoAuthorizationError in
handle_api_exception (SC-121647) (#44533)
add 50bbcedf13b docs(mcp): document restore_chart and restore_dashboard
tools (#44207)
add ea1ffcf0adb fix: fixed inverseSelection (#40970)
add 350dd0d60ec fix(security): delete deprecated permissions left over
after upgrades (#44142)
add 7a9fe06762b fix(mcp): stop data tool responses crashing on binary and
NaT values (#44495)
add 9612437a9c8 fix(extensions): preserve chat state across display modes
(#44490)
add 61fffbe0c08 chore(deps-dev): bump oxlint from 1.82.0 to 1.83.0 in
/superset-frontend (#44525)
add c14ac29f477 fix(mcp): complete Treemap round-trip and previews (#44152)
add 3b4e5f5d0c6 chore(deps): bump markdown-to-jsx from 9.10.2 to 9.10.3 in
/superset-frontend (#44570)
add 7fe03a536b6 chore(deps-dev): bump @types/node from 26.5.1 to 26.6.1 in
/superset-frontend (#44569)
add 6403e16fe56 chore(deps-dev): bump vitest from 5.0.0 to 5.0.1 in
/superset-embedded-sdk (#44568)
add d1f395914f1 chore(deps-dev): bump @types/node from 26.5.1 to 26.6.1 in
/superset-embedded-sdk (#44567)
add 6c9138a6b7c chore(deps-dev): bump baseline-browser-mapping from
2.11.23 to 2.11.24 in /superset-frontend (#44566)
add 4b180bddad7 chore(deps): bump baseline-browser-mapping from 2.11.23 to
2.11.24 in /docs (#44565)
add 4290d94d6c9 chore(deps-dev): bump vitest from 5.0.0 to 5.0.1 in
/superset-websocket (#44564)
add 3e80a53e14f chore(deps-dev): bump @types/node from 26.5.1 to 26.6.1 in
/superset-websocket (#44563)
add f8f293d2666 chore(deps): bump benchmark-action/github-action-benchmark
from 1.22.1 to 1.22.2 (#44520)
add 005bce81234 Merge remote-tracking branch 'origin/master' into
ultraset-fix-37100
No new revisions were added by this update.
Summary of changes:
.github/workflows/check-db-migration-confict.yml | 21 +-
.github/workflows/frontend-bundle-size-nightly.yml | 4 +-
.github/workflows/superset-frontend.yml | 4 +-
UPDATING.md | 49 +-
.../configuration/configuring-superset.mdx | 7 +
docs/admin_docs/configuration/mcp-server.mdx | 90 +-
.../extensions/extension-points/chat.md | 4 +
docs/docs/using-superset/embedding.mdx | 21 +
docs/docs/using-superset/exploring-data.mdx | 14 +
.../docs/using-superset/using-ai-with-superset.mdx | 2 +
docs/package.json | 2 +-
docs/src/data/databases.json | 1 +
docs/yarn.lock | 8 +-
pyproject.toml | 6 +-
requirements/development.txt | 5 -
superset-embedded-sdk/package-lock.json | 204 +--
superset-embedded-sdk/package.json | 4 +-
superset-frontend/package-lock.json | 186 +--
superset-frontend/package.json | 8 +-
.../packages/superset-ui-core/package.json | 2 +-
.../src/time-comparison/fetchTimeRange.ts | 29 +-
.../superset-ui-core/src/ui-overrides/types.ts | 1 +
.../test/time-comparison/fetchTimeRange.test.ts | 60 +
.../ErrorMessage/CsrfErrorMessage.test.tsx | 4 +-
superset-frontend/src/core/chat/ChatHost.tsx | 20 +-
.../FiltersConfigForm/FiltersConfigForm.tsx | 61 +-
.../FiltersConfigForm/getControlItemsMap.test.tsx | 14 +
.../FiltersConfigForm/getControlItemsMap.tsx | 3 +-
.../components/nativeFilters/utils.test.ts | 13 +
.../controls/DateFilterControl/DateFilterLabel.tsx | 116 +-
.../tests/DateFilterLabel.test.tsx | 114 ++
.../components/controls/DateFilterControl/types.ts | 1 +
.../components/Select/SelectFilterPlugin.tsx | 22 +-
.../components/Time/TimeFilterPlugin.test.tsx | 95 ++
.../filters/components/Time/TimeFilterPlugin.tsx | 1 +
.../src/filters/components/Time/controlPanel.ts | 17 +
.../src/filters/components/Time/types.ts | 1 +
superset-frontend/src/views/App.test.tsx | 125 ++
superset-frontend/src/views/App.tsx | 28 +-
superset-websocket/package-lock.json | 204 +--
superset-websocket/package.json | 4 +-
superset/commands/database/exceptions.py | 9 +-
superset/commands/database/update.py | 20 +-
superset/commands/database/utils.py | 47 +
superset/commands/importers/v1/utils.py | 19 +
superset/commands/semantic_layer/update.py | 55 +-
superset/config.py | 9 +
superset/connectors/sqla/utils.py | 10 +
superset/db_engine_specs/base.py | 82 +-
superset/db_engine_specs/gsheets.py | 1 +
superset/db_engine_specs/pinot.py | 4 +
superset/db_engine_specs/snowflake.py | 1 +
superset/embedded/view.py | 8 +-
superset/mcp_service/SECURITY.md | 2 +-
superset/mcp_service/__main__.py | 4 +-
superset/mcp_service/chart/chart_helpers.py | 35 +
superset/mcp_service/chart/chart_utils.py | 124 ++
superset/mcp_service/chart/compile.py | 21 +-
superset/mcp_service/chart/plugins/treemap.py | 10 +-
superset/mcp_service/chart/preview_utils.py | 14 +-
superset/mcp_service/chart/query_result.py | 113 +-
superset/mcp_service/chart/schemas.py | 390 +++---
superset/mcp_service/chart/tool/get_chart_data.py | 40 +-
.../mcp_service/chart/tool/get_chart_preview.py | 30 +-
.../chart/tool/get_chart_type_schema.py | 21 +-
superset/mcp_service/chart/tool/update_chart.py | 30 +-
.../mcp_service/chart/tool/update_chart_preview.py | 51 +-
superset/mcp_service/chart/treemap_preview.py | 297 +++++
superset/mcp_service/constants.py | 2 +-
superset/mcp_service/dashboard/schemas.py | 15 +-
superset/mcp_service/dataset/schemas.py | 13 +-
.../explore/tool/generate_explore_link.py | 3 +-
superset/mcp_service/mcp_config.py | 23 +-
superset/mcp_service/middleware.py | 208 ++-
superset/mcp_service/semantic_layer/schemas.py | 29 +-
superset/mcp_service/sql_lab/schemas.py | 18 +-
superset/mcp_service/sql_lab/tool/execute_sql.py | 19 -
.../{token_utils.py => response_size_utils.py} | 319 ++---
superset/mcp_service/utils/response_utils.py | 8 +-
superset/mcp_service/utils/serialization.py | 225 ++++
superset/migrations/shared/security_converge.py | 34 +
...4fb8bfc1_delete_deprecated_permissions_33272.py | 153 +++
...a4572f8a_rename_deprecated_permissions_33272.py | 193 +++
...e6_merge_deprecated_permissions_with_master.py} | 12 +-
...merge_deprecated_permissions_with_master_v2.py} | 12 +-
...merge_deprecated_permissions_with_master_v3.py} | 12 +-
superset/models/helpers.py | 13 +
superset/security/api.py | 13 +-
superset/security/manager.py | 397 +++++-
superset/security/password_change.py | 11 +-
superset/translations/ar/LC_MESSAGES/messages.po | 39 +-
superset/translations/ca/LC_MESSAGES/messages.po | 39 +-
superset/translations/cs/LC_MESSAGES/messages.po | 39 +-
superset/translations/de/LC_MESSAGES/messages.po | 39 +-
superset/translations/en/LC_MESSAGES/messages.po | 39 +-
superset/translations/es/LC_MESSAGES/messages.po | 39 +-
superset/translations/fa/LC_MESSAGES/messages.po | 39 +-
superset/translations/fi/LC_MESSAGES/messages.po | 42 +-
superset/translations/fr/LC_MESSAGES/messages.po | 39 +-
superset/translations/it/LC_MESSAGES/messages.po | 39 +-
superset/translations/ja/LC_MESSAGES/messages.po | 39 +-
superset/translations/ko/LC_MESSAGES/messages.po | 42 +-
superset/translations/lv/LC_MESSAGES/messages.po | 39 +-
superset/translations/messages.pot | 14 +-
superset/translations/mi/LC_MESSAGES/messages.po | 39 +-
superset/translations/nl/LC_MESSAGES/messages.po | 39 +-
superset/translations/pl/LC_MESSAGES/messages.po | 40 +-
superset/translations/pt/LC_MESSAGES/messages.po | 41 +-
.../translations/pt_BR/LC_MESSAGES/messages.po | 39 +-
superset/translations/ro/LC_MESSAGES/messages.po | 39 +-
superset/translations/ru/LC_MESSAGES/messages.po | 39 +-
superset/translations/sk/LC_MESSAGES/messages.po | 39 +-
superset/translations/sl/LC_MESSAGES/messages.po | 39 +-
superset/translations/sr/LC_MESSAGES/messages.po | 40 +-
.../translations/sr_Latn/LC_MESSAGES/messages.po | 40 +-
superset/translations/ta/LC_MESSAGES/messages.po | 39 +-
superset/translations/th/LC_MESSAGES/messages.po | 42 +-
superset/translations/tr/LC_MESSAGES/messages.po | 39 +-
superset/translations/uk/LC_MESSAGES/messages.po | 39 +-
superset/translations/zh/LC_MESSAGES/messages.po | 39 +-
.../translations/zh_TW/LC_MESSAGES/messages.po | 40 +-
superset/utils/network.py | 115 ++
superset/views/error_handling.py | 6 +-
superset/views/utils.py | 12 +
tests/integration_tests/embedded/test_view.py | 23 +
tests/integration_tests/security/api_tests.py | 28 +
tests/unit_tests/commands/databases/utils_test.py | 58 +
.../unit_tests/commands/importers/v1/utils_test.py | 96 +-
.../commands/semantic_layer/update_test.py | 96 ++
tests/unit_tests/connectors/sqla/models_test.py | 19 +
tests/unit_tests/connectors/sqla/utils_test.py | 27 +-
tests/unit_tests/db_engine_specs/test_base.py | 243 +++-
.../unit_tests/db_engine_specs/test_databricks.py | 28 +-
.../db_engine_specs/test_databricks_multi_cloud.py | 4 +
tests/unit_tests/db_engine_specs/test_gsheets.py | 27 +-
tests/unit_tests/db_engine_specs/test_pinot.py | 41 +-
tests/unit_tests/db_engine_specs/test_snowflake.py | 7 +-
tests/unit_tests/db_engine_specs/test_trino.py | 7 +-
.../mcp_service/chart/test_treemap_completeness.py | 1373 ++++++++++++++++++++
.../mcp_service/chart/tool/test_get_chart_data.py | 180 ++-
.../chart/tool/test_get_chart_type_schema.py | 26 +
.../explore/tool/test_generate_explore_link.py | 49 +
.../semantic_layer/tool/test_list_metrics.py | 62 +-
.../mcp_service/sql_lab/tool/test_execute_sql.py | 104 +-
.../mcp_service/test_mcp_tool_registration.py | 2 +-
tests/unit_tests/mcp_service/test_middleware.py | 227 ++--
.../mcp_service/test_response_serialization.py | 321 +++++
..._token_utils.py => test_response_size_utils.py} | 265 ++--
.../mcp_service/utils/test_serialization.py | 294 +++++
.../migrations/shared/security_converge_test.py | 218 ++++
.../test_deprecated_permissions_33272.py | 420 ++++++
tests/unit_tests/security/manager_test.py | 431 +++++-
tests/unit_tests/security/test_password_change.py | 68 +-
tests/unit_tests/utils/test_network.py | 81 +-
tests/unit_tests/views/test_error_handling.py | 22 +
tests/unit_tests/views/test_utils.py | 69 +-
156 files changed, 9189 insertions(+), 1813 deletions(-)
create mode 100644
superset-frontend/src/filters/components/Time/TimeFilterPlugin.test.tsx
create mode 100644 superset-frontend/src/views/App.test.tsx
create mode 100644 superset/mcp_service/chart/treemap_preview.py
rename superset/mcp_service/utils/{token_utils.py => response_size_utils.py}
(81%)
create mode 100644 superset/mcp_service/utils/serialization.py
create mode 100644
superset/migrations/versions/2026-09-10_00-00_1f5f4fb8bfc1_delete_deprecated_permissions_33272.py
create mode 100644
superset/migrations/versions/2026-09-10_00-01_3ce9a4572f8a_rename_deprecated_permissions_33272.py
copy superset/migrations/versions/{2016-09-19_17-22_b347b202819b_.py =>
2026-09-16_00-01_2ce579e91ae6_merge_deprecated_permissions_with_master.py} (79%)
copy superset/migrations/versions/{2016-09-19_17-22_b347b202819b_.py =>
2026-09-17_00-00_53a7abc31422_merge_deprecated_permissions_with_master_v2.py}
(76%)
copy superset/migrations/versions/{2016-09-19_17-22_b347b202819b_.py =>
2026-09-23_00-00_95d8a99c822e_merge_deprecated_permissions_with_master_v3.py}
(76%)
create mode 100644
tests/unit_tests/mcp_service/chart/test_treemap_completeness.py
create mode 100644 tests/unit_tests/mcp_service/test_response_serialization.py
rename tests/unit_tests/mcp_service/utils/{test_token_utils.py =>
test_response_size_utils.py} (87%)
create mode 100644 tests/unit_tests/mcp_service/utils/test_serialization.py
create mode 100644 tests/unit_tests/migrations/shared/security_converge_test.py
create mode 100644
tests/unit_tests/migrations/test_deprecated_permissions_33272.py