This is an automated email from the ASF dual-hosted git repository.
rusackas pushed a change to branch feat/color-picker-consolidation
in repository https://gitbox.apache.org/repos/asf/superset.git
omit a89872c1449 fix(color-picker): address review feedback on legacy
scheme migration, i18n label, and theme cast
omit 3b4bb77b2f1 fix(color-picker): guard Gauge interval colors against
mid-edit misalignment
omit b331b00e411 fix(color-picker): fix real jest failures in
interval-color migration and bullet range control
omit ef409235f3f fix(i18n): drop a messages.pot entry orphaned by an
earlier description edit
omit 3be1c27d1f9 fix(color-picker): migrate legacy color fields and guard
transient input
omit 12f6ef231ff fix(big-number): revert PopKPI arrow color assertion to
render-only check
omit f524d606365 fix(color-picker): address bito review findings on
range/comparison colors
omit 0a22165a3b4 chore(i18n): regenerate messages.pot for the new
color-picker strings
omit 3ffedff2dea fix(bullet): share one range tokenizer, assert the
down-arrow value
omit d4afe9840a8 refactor(bignumber): name the comparison pill tint alpha
suffix
omit 88ea2b6e4ad test(color-picker): await click before asserting
reset-button onChange
omit adc067986ad refactor(color-picker): dedupe comparison color config and
disable theme pickers on invalid JSON
omit 571074bbf15 test(themes): paste JSON into the theme editor instead of
typing it
omit 785ff9ac910 fix(charts): align finite-value filtering between Bullet
ranges and range colors
omit de0479f0d8d fix(charts): address bot review findings on legacy color
fallbacks
omit 8945c4dfe4b feat(themes): add curated color pickers above the theme
JSON editor
omit 67b21b2c49b feat(big-number): replace 2-choice comparison scheme with
color pickers
omit 1e06329b404 feat(bullet): add optional per-range band colors
omit fb5c2f41950 feat(gauge): replace scheme-index interval colors with a
color picker
add 3f6d4cd6896 chore(deps-dev): update google-cloud-storage requirement
from >=1.37 to >=3.14.1 (#44693)
add 6a832cb2102 fix(mcp): enforce dashboard filter scope on dataset, SQL
and chart tool calls (#44800)
add e7702020344 fix(postprocessing): preserve NULL index values through
pivot() (#43547) (#43693)
add f7badeb095b fix(mcp): execute_sql request limit caps, never raises, an
explicit SQL LIMIT (#44604)
add db56168a861 ci: require babel-extract to pass before merging master
(#44543)
add 342a8f1e4e0 fix(mcp): report a chart's live dataset id and name
(#44681)
add 21b937b59d7 fix(retention): skip models without purge policies before
scanning (#44874)
add 6d97cde59a6 fix(semantic-layers): export/import semantic-view charts
by typed reference (#44396)
add b94f88ffbb4 fix(semantic-layer): require explicit member identity
reselection (#44370)
add 9c7c96fe057 fix(logging): register LogRestApi only once (#44732)
add edc91b86e5c chore(deps-dev): bump baseline-browser-mapping from
2.11.25 to 2.11.26 in /superset-frontend (#44890)
add 338e640df93 chore(deps): bump dompurify from 3.4.15 to 3.4.16 in
/superset-frontend (#44889)
add 4a199486599 chore(deps): bump dom-to-image-more from 3.10.2 to 3.11.0
in /superset-frontend (#44888)
add 6559b483f28 chore(deps): bump maplibre-gl from 6.8.0 to 6.11.2 in
/superset-frontend (#44887)
add dfccc2e1e9c chore(deps-dev): bump minimizer-webpack-plugin from 5.11.0
to 5.12.0 in /superset-frontend (#44886)
add c43770e12da chore(deps-dev): bump webpack-sources from 3.5.1 to 3.5.3
in /superset-frontend (#44885)
add 95faf3a6a04 chore(deps-dev): bump oxlint-tsgolint from 7.0.2002 to
7.0.2003 in /docs (#44883)
add 27c9213cca2 chore(deps-dev): bump oxlint-tsgolint from 7.0.2002 to
7.0.2003 in /superset-websocket (#44882)
add 25956d6c448 chore(superset-ui-chart-controls): forward-compat fixes
for TypeScript 6.0 (#44877)
add ba3500e0e9a feat(export/import): add annotation layer export/import
support for charts and dashboards (#43232)
add 1b0a37cf223 fix(users): stop update_me setting self-referential
changed_by_fk (#44866)
add 7bb29649416 chore(deps): bump dawidd6/action-download-artifact from 24
to 25 (#44884)
add 005edd74234 chore(build): de-vendor `helm/chart-testing-action` GHA
(#44722)
add 10d06859b83 fix(ci): floor pyfakefs at 5.7.4 to fix Python 3.13
pytest-cov crash (#44853)
add 0b9b0fe5812 feat(gauge): replace scheme-index interval colors with a
color picker
add 3176d913f56 feat(bullet): add optional per-range band colors
add d4dbe1da3de feat(big-number): replace 2-choice comparison scheme with
color pickers
add 92374b48900 feat(themes): add curated color pickers above the theme
JSON editor
add d5fa7acbcd6 fix(charts): address bot review findings on legacy color
fallbacks
add c1e4f1852ba fix(charts): align finite-value filtering between Bullet
ranges and range colors
add 94c357b4fb8 test(themes): paste JSON into the theme editor instead of
typing it
add c5014cc0898 refactor(color-picker): dedupe comparison color config and
disable theme pickers on invalid JSON
add f15e9137690 test(color-picker): await click before asserting
reset-button onChange
add d09320232c5 refactor(bignumber): name the comparison pill tint alpha
suffix
add de3c2725c0b fix(bullet): share one range tokenizer, assert the
down-arrow value
add a0418223c3b chore(i18n): regenerate messages.pot for the new
color-picker strings
add b53219a2ed3 fix(color-picker): address bito review findings on
range/comparison colors
add 92ec1f857d1 fix(big-number): revert PopKPI arrow color assertion to
render-only check
add 4a12bef3aa0 fix(color-picker): migrate legacy color fields and guard
transient input
add fbe65aa316e fix(i18n): drop a messages.pot entry orphaned by an
earlier description edit
add 87a58b0548c fix(color-picker): fix real jest failures in
interval-color migration and bullet range control
add 8bb62713080 fix(color-picker): guard Gauge interval colors against
mid-edit misalignment
add fa0ff081d11 fix(color-picker): address review feedback on legacy
scheme migration, i18n label, and theme cast
add 8f9a23938d8 chore(color-picker): add 'Up to' to messages.pot and apply
oxfmt
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 (a89872c1449)
\
N -- N -- N refs/heads/feat/color-picker-consolidation
(8f9a23938d8)
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:
.asf.yaml | 1 +
.github/actions/chart-testing-action | 1 -
.github/workflows/superset-docs-deploy.yml | 4 +-
.github/workflows/superset-docs-verify.yml | 2 +-
.github/workflows/superset-helm-lint-test.yml | 19 +-
.github/workflows/superset-translations.yml | 2 +
.gitmodules | 3 -
UPDATING.md | 94 ++
.../importing-exporting-datasources.mdx | 32 +
docs/admin_docs/configuration/mcp-server.mdx | 134 ++
docs/docs/using-superset/recently-archived.mdx | 10 +
.../using-superset/semantic-member-selections.mdx | 62 +
docs/package.json | 2 +-
docs/static/resources/openapi.json | 23 +-
docs/yarn.lock | 78 +-
pyproject.toml | 14 +-
requirements/development.txt | 2 +-
superset-core/src/superset_core/queries/types.py | 3 +
.../src/superset_core/semantic_layers/types.py | 1 +
.../src/superset_core/semantic_layers/view.py | 14 +
superset-frontend/package-lock.json | 87 +-
superset-frontend/package.json | 8 +-
.../src/sections/sections.tsx | 7 +
.../superset-ui-chart-controls/src/types.ts | 1 +
.../src/utils/getColorFormatters.ts | 84 +-
.../superset-ui-core/src/query/extractExtras.ts | 22 +
.../packages/superset-ui-core/src/query/index.ts | 2 +
.../src/query/semanticSelection.ts} | 35 +-
.../superset-ui-core/src/query/types/Dashboard.ts | 1 +
.../superset-ui-core/src/query/types/Query.ts | 1 +
.../src/query/types/QueryFormData.ts | 12 +-
.../test/query/extractExtras.test.ts | 62 +
.../plugin-chart-point-cluster-map/package.json | 2 +-
.../plugins/preset-chart-deckgl/package.json | 2 +-
.../src/components/Chart/ChartRenderer.test.tsx | 52 +-
.../src/components/Chart/ChartRenderer.tsx | 23 +-
.../FilterBar/FilterControls/FilterValue.test.tsx | 42 +-
.../FilterBar/FilterControls/FilterValue.tsx | 70 +-
.../FiltersConfigForm/FiltersConfigForm.tsx | 147 +-
.../FiltersConfigModal/FiltersConfigModal.test.tsx | 103 +-
.../transformers/buildTarget.test.ts | 44 +-
.../FiltersConfigModal/transformers/buildTarget.ts | 37 +-
.../transformers/customizationTransformer.ts | 10 +-
.../transformers/filterTransformer.ts | 10 +-
.../nativeFilters/FiltersConfigModal/types.ts | 2 +
.../components/nativeFilters/utils.test.ts | 27 +
.../dashboard/components/nativeFilters/utils.ts | 13 +
.../util/charts/getFormDataWithExtraFilters.ts | 163 ++-
.../util/getFormDataWithExtraFilters.test.ts | 412 +++++-
superset-frontend/src/dataMask/reducer.test.ts | 58 +
superset-frontend/src/dataMask/reducer.ts | 18 +
.../src/explore/actions/exploreActions.ts | 10 +
.../components/ControlPanelsContainer.test.tsx | 62 +-
.../explore/components/ControlPanelsContainer.tsx | 44 +-
.../controls/BulletRangeColorsControl/index.tsx | 4 +-
...AdhocFilterEditPopoverSimpleTabContent.test.tsx | 17 +
.../index.tsx | 27 +-
.../controls/MatrixifyDimensionControl.test.tsx | 139 +-
.../controls/MatrixifyDimensionControl.tsx | 26 +-
.../src/explore/controlPanels/sections.tsx | 7 +
.../src/explore/reducers/exploreReducer.test.ts | 66 +-
.../src/explore/reducers/exploreReducer.ts | 29 +-
superset-frontend/src/explore/store.ts | 3 +-
.../src/utils/semanticViewStructure.test.ts | 13 +
.../src/utils/semanticViewStructure.ts | 15 +-
superset-websocket/package-lock.json | 56 +-
superset-websocket/package.json | 2 +-
superset/annotation_layers/schemas.py | 21 +
superset/charts/api.py | 3 +
superset/charts/schemas.py | 21 +-
superset/commands/annotation_layer/exceptions.py | 5 +
superset/commands/annotation_layer/export.py | 109 ++
.../annotation_layer/importers}/__init__.py | 0
.../importers/dispatcher.py | 20 +-
.../annotation_layer/importers/v1/__init__.py | 54 +
.../annotation_layer/importers/v1/utils.py | 73 +
superset/commands/chart/export.py | 251 +++-
superset/commands/chart/importers/v1/__init__.py | 99 +-
superset/commands/chart/importers/v1/utils.py | 381 ++++-
superset/commands/dashboard/export.py | 8 +-
superset/commands/dashboard/export_example.py | 31 +
.../commands/dashboard/importers/v1/__init__.py | 89 +-
superset/commands/export/assets.py | 10 +-
superset/commands/importers/v1/__init__.py | 10 +-
superset/commands/importers/v1/assets.py | 74 +-
superset/commands/importers/v1/examples.py | 19 +
superset/commands/importers/v1/utils.py | 4 +-
superset/common/query_context_processor.py | 14 +-
superset/common/query_object.py | 37 +-
superset/common/tabular_query.py | 8 +-
superset/dashboards/api.py | 13 +-
superset/datasource/api.py | 52 +-
superset/datasource/schemas.py | 9 +
superset/db_engine_specs/bigquery.py | 35 +-
superset/initialization/__init__.py | 1 -
superset/mcp_service/app.py | 2 +
superset/mcp_service/auth.py | 22 +-
superset/mcp_service/caching.py | 37 +-
superset/mcp_service/chart/schemas.py | 61 +-
superset/mcp_service/chart/tool/get_chart_info.py | 18 +-
superset/mcp_service/chart/tool/get_chart_sql.py | 5 +-
superset/mcp_service/chart/tool/list_charts.py | 118 +-
superset/mcp_service/common/schema_discovery.py | 2 +-
superset/mcp_service/dashboard/schemas.py | 29 +-
superset/mcp_service/dashboard_scope.py | 1365 ++++++++++++++++++
superset/mcp_service/dashboard_scope_sql.py | 516 +++++++
superset/mcp_service/privacy.py | 1 +
superset/mcp_service/semantic_layer/schemas.py | 9 +
.../semantic_layer/tool/get_compatible_metrics.py | 3 +
.../mcp_service/semantic_layer/tool/get_table.py | 51 +-
.../semantic_layer/tool/list_metrics.py | 3 +
superset/mcp_service/sql_lab/schemas.py | 10 +-
superset/mcp_service/sql_lab/tool/execute_sql.py | 1 +
superset/migrations/shared/utils.py | 2 +-
..._add_uuid_to_annotation_layer_and_annotation.py | 144 ++
superset/models/annotations.py | 19 +-
superset/models/core.py | 16 +-
superset/result_set.py | 3 +
superset/security/manager.py | 7 +
superset/semantic_layers/api.py | 3 +
.../semantic_layers/bundle_schemas.py | 24 +-
superset/semantic_layers/import_export.py | 240 ++++
superset/semantic_layers/mapper.py | 6 +
superset/semantic_layers/models.py | 3 +
superset/sql/execution/celery_task.py | 1 +
superset/sql/execution/executor.py | 109 +-
superset/sql/parse.py | 101 +-
superset/superset_typing.py | 11 +
superset/tasks/deletion_retention.py | 55 +-
superset/translations/messages.pot | 71 +
superset/utils/core.py | 36 +
superset/utils/dict_import_export.py | 7 +
superset/utils/pandas_postprocessing/pivot.py | 51 +-
superset/utils/rls.py | 4 +-
superset/views/users/api.py | 1 -
.../annotation_layers/commands_tests.py | 750 ++++++++++
tests/integration_tests/charts/commands_tests.py | 1515 ++++++++++++++++++++
tests/integration_tests/commands_test.py | 58 +
.../integration_tests/dashboards/commands_tests.py | 585 ++++++++
tests/integration_tests/fixtures/importexport.py | 104 ++
.../charts/commands/importers/v1/import_test.py | 32 +-
.../charts/commands/importers/v1/utils_test.py | 28 +-
.../commands/chart/semantic_export_test.py | 127 ++
.../dashboard/export_example_semantic_test.py | 175 +++
tests/unit_tests/commands/export_test.py | 51 +
.../commands/importers/v1/assets_test.py | 4 +-
.../common/test_query_context_processor.py | 33 +
tests/unit_tests/connectors/sqla/utils_test.py | 34 +
tests/unit_tests/db_engine_specs/test_bigquery.py | 87 +-
tests/unit_tests/initialization/init_views_test.py | 113 ++
.../chart/test_live_chart_datasource.py | 709 +++++++++
.../dashboard/test_dashboard_schemas.py | 18 +
.../tool/test_get_compatible_metrics.py | 14 +-
.../semantic_layer/tool/test_get_table.py | 39 +
.../semantic_layer/tool/test_list_metrics.py | 10 +-
.../mcp_service/sql_lab/tool/test_execute_sql.py | 22 +-
.../unit_tests/mcp_service/test_dashboard_scope.py | 1502 +++++++++++++++++++
.../mcp_service/test_dashboard_scope_sql.py | 674 +++++++++
.../unit_tests/mcp_service/test_tool_inventory.py | 4 +-
tests/unit_tests/mcp_service/test_worker.py | 6 +-
tests/unit_tests/models/core_test.py | 62 +
.../unit_tests/pandas_postprocessing/test_pivot.py | 339 +++++
.../test_superset_user_api_subject_sync.py | 23 +
tests/unit_tests/semantic_layers/api_test.py | 10 +-
.../semantic_layers/import_export_test.py | 921 ++++++++++++
tests/unit_tests/semantic_layers/mapper_test.py | 5 +
tests/unit_tests/semantic_layers/models_test.py | 2 +
.../semantic_layers/selection_identity_test.py | 293 ++++
.../semantic_layers/values_endpoint_test.py | 21 +-
tests/unit_tests/sql/execution/conftest.py | 3 +
tests/unit_tests/sql/execution/test_celery_task.py | 2 +
tests/unit_tests/sql/execution/test_executor.py | 850 ++++++++++-
tests/unit_tests/sql/parse_tests.py | 107 ++
tests/unit_tests/tasks/test_deletion_retention.py | 171 ++-
tests/unit_tests/views/test_current_user_api.py | 23 +
175 files changed, 16174 insertions(+), 548 deletions(-)
delete mode 160000 .github/actions/chart-testing-action
create mode 100644 docs/docs/using-superset/semantic-member-selections.mdx
copy superset-frontend/{src/views/ScrollToTop.tsx =>
packages/superset-ui-core/src/query/semanticSelection.ts} (50%)
create mode 100644 superset/commands/annotation_layer/export.py
copy {scripts => superset/commands/annotation_layer/importers}/__init__.py
(100%)
copy superset/commands/{chart => annotation_layer}/importers/dispatcher.py
(82%)
create mode 100644 superset/commands/annotation_layer/importers/v1/__init__.py
create mode 100644 superset/commands/annotation_layer/importers/v1/utils.py
create mode 100644 superset/mcp_service/dashboard_scope.py
create mode 100644 superset/mcp_service/dashboard_scope_sql.py
create mode 100644
superset/migrations/versions/2026-08-17_18-38_884a2115ebd3_add_uuid_to_annotation_layer_and_annotation.py
copy tests/unit_tests/utils/db.py =>
superset/semantic_layers/bundle_schemas.py (56%)
create mode 100644 superset/semantic_layers/import_export.py
create mode 100644 tests/integration_tests/annotation_layers/commands_tests.py
create mode 100644 tests/unit_tests/commands/chart/semantic_export_test.py
create mode 100644
tests/unit_tests/commands/dashboard/export_example_semantic_test.py
create mode 100644 tests/unit_tests/initialization/init_views_test.py
create mode 100644
tests/unit_tests/mcp_service/chart/test_live_chart_datasource.py
create mode 100644 tests/unit_tests/mcp_service/test_dashboard_scope.py
create mode 100644 tests/unit_tests/mcp_service/test_dashboard_scope_sql.py
create mode 100644 tests/unit_tests/semantic_layers/import_export_test.py
create mode 100644 tests/unit_tests/semantic_layers/selection_identity_test.py