This is an automated email from the ASF dual-hosted git repository.
hainenber pushed a change to branch feat/migrate-eslint-custom-rules-to-oxlint
in repository https://gitbox.apache.org/repos/asf/superset.git
from 20b9b054d4f feat(script/oxlint-metrics-uploader): only keep custom
rule violations in custom `oxlint` run
add b65d5482b2c feat(dataset): support epoch_us python_date_format (#44500)
add 697b056909c fix(chart): prevent stacking bars on a logarithmic axis
(#44556)
add a374f847d61 fix(echarts): reserve grid room for Gantt category names
(#43189)
add 95db7730256 fix(timeseries): preserve explicit UTC offsets in
normalizeTimestamp (#43960)
add 506716f2f88 fix(query-context): resolve legacy granularity_sqla for
stored queries (#44460)
add c7821516e39 fix(security): vary SQL Lab ad-hoc query cache key by
effective RLS predicates (#43985)
add 4679a471015 test(dashboard): cover header refresh controls while
charts load (#44670)
add ae11708faab test(dashboard): cover edit-mode drag-and-drop drop rules
(#44678)
add 0fbad0de99d feat(db_engine_specs): add metadata blocks to all
remaining incomplete engine specs (#43566)
add 7cb19e2b50d fix(embedded-sdk): re-authenticate the iframe after a
navigation internal to the dashboard (#44470)
add c67c88fbf1e fix(reports): drop the sign of negative numbers that round
to zero in text reports (#44644)
add 1fdb9171b7b fix(explore): include dataset editors in the Explore
datasource payload (#44633)
add d3f57264890 fix(echarts): stop the zoom controls overlapping the
legend selector (#44367)
add 0e5a3b21215 feat(motherduck): set session_name on user impersonation
(#42705)
add 33d24f496c9 fix(ci): fall back to the lean Dockerfile target when
publishing a pre-#44100 release (#44248)
add b4f79f94f82 fix(d1): support SQLAlchemy 2 with sqlalchemy-d1 0.2.0
(#44505)
add cfeceedb605 fix(types): preserve shared control registry option types
(#44559)
add 1e91b933774 refactor(dashboard): simplify cross-filter scope
resolution (#38762)
add db87cd2a2b2 fix(dataframe): normalize trusted nonfinite scalars
(#44219)
add e86af4ee954 fix: DashboardAccessFilter to preserve dashboards with
empty layouts (#44256)
add 49e71752e48 fix(excel): keep wall-clock datetimes when exporting
timezones (#44360)
add 19ea6b231c7 fix(mcp): hide internal sanitization warnings from input
schemas (#44602)
add c40eba410b7 fix(kylin): time grains and labels that work on Calcite
and Spark pushdown (#44712)
add ca3d3560895 feat(oracle): support cancelling running queries in SQL
Lab (#44704)
add e7275f15ae0 feat(echarts): double-click chart legend to isolate a
series (#44562)
add 4a51382f819 chore(deps-dev): bump oxfmt from 0.68.0 to 0.70.0 in
/superset-frontend (#44785)
add 983d00165a7 chore(deps-dev): bump jsdom from 30.1.0 to 30.1.1 in
/superset-frontend (#44784)
add f837f839708 chore(deps): bump react-window from 2.3.1 to 2.3.2 in
/superset-frontend (#44782)
add 5150266456a chore(deps-dev): bump oxlint from 1.83.0 to 1.85.0 in
/docs (#44781)
add b8e40175053 chore(deps-dev): bump the typescript-eslint group in
/superset-frontend with 2 updates (#44779)
add 4422cf38776 chore(deps-dev): bump oxfmt from 0.68.0 to 0.70.0 in
/superset-websocket (#44778)
add ce86ac9aefc chore(deps-dev): bump jsdom from 30.1.0 to 30.1.1 in
/superset-embedded-sdk (#44777)
add ef99eeac8ee chore(deps-dev): bump oxlint from 1.83.0 to 1.85.0 in
/superset-frontend (#44783)
add 72c8969ce38 chore(deps-dev): bump oxfmt from 0.68.0 to 0.70.0 in /docs
(#44780)
add 3d436f579c9 chore(deps-dev): bump oxlint from 1.83.0 to 1.85.0 in
/superset-websocket (#44776)
add e65de1fc0f0 fix(chart-data): roll back db.session after swallowed
metadata-DB errors (#44653)
add 45f4dd80092 fix: use database rollups for pivot table subtotals in
Actual Values mode (#44631)
add c51f192be6b fix(sqllab): stringify integer columns that overflow int64
(#44743)
add 2eb620e7372 fix(databases): validate schema before listing tables
(#44683)
add 27c6f5a8d90 fix(db_engine_specs): restore shared compiler state after
loading third-party dialects (#44686)
add 732e6551e0a fix(cratedb): recognize reflected timestamp types for
epoch milliseconds (#44720)
add 03227878ba3 fix(db_engine_specs): don't fail DDL/DML when the
statement has no result set (#44714)
add 3e9bd8b45b4 fix(dynamodb): map NUMBER columns and order charts by
metric expressions (#44711)
add 2b050596c0b fix(databricks): derive omitted OAuth2 endpoints from the
workspace host (#44710)
add 041f84c6f31 fix(clickhouse): rename SELECT aliases that shadow a
source column (#44715)
add f6a7802c81d fix(database): mask secrets in create and update responses
(#44733)
add f639b22c6c8 fix(api): return 4xx from oauth2 callback errors, not 500
(#44769)
add cba2574241e fix(i18n): clear 1,188 fuzzy translations with broken
placeholders (#44611)
add afe8b14d794 fix(database): coerce LazyString validation messages to
str in validate_parameters (#44802)
add c6e7bd47a4a fix(dashboard): catch JSONDecodeError on malformed
default_filters in set_dash_metadata (#44716)
add 9a5faa8af5b refactor(db_engine_specs): derive epoch method dispatch
from EPOCH_FORMATS (#44772)
add 63c004fe66c feat(mcp): add a permission-filtered asset catalog tool
(#44694)
add 6b2d3b15116 fix(auth): gate registration UI by auth type, not just the
flag (#44368)
add e1daa2f7e10 chore(deps-dev): bump ip-address from 10.4.0 to 10.7.2 in
/superset-frontend in the security group across 1 directory (#44774)
add 8bd268f9cef docs(versioning): screenshots, retention, and permission
guidance for version history and archives (#44190)
add 14b87366bc7 chore(deps-dev): bump brace-expansion from 5.0.9 to 5.0.12
in /superset-embedded-sdk in the security group across 1 directory (#44812)
add 1dbb7aaace6 chore(deps): bump fast-uri from 3.1.7 to 3.1.8 in /docs in
the security group across 1 directory (#44814)
add 6d1bfaa4cd4 fix(dashboard): forward clearAllTriggers from vertical
filter bar to FilterControls (#44531)
add df450dc2a24 fix(mypy): narrow nullable uuid before
RestoreVersionCommand calls (#44789)
add 92b0cf82ca9 fix(echarts-timeseries): convert xAxisLabelInterval string
'0' to number 0 (#43729)
add 517e94d1062 fix(echarts): fix sparse sub-daily bar sizing and x-axis
mislabeling (#44628)
add 48a3b02d129 fix(mysql): require TLS when SSL is requested (#44723)
add 773f976b6de fix(dynamodb): render time bounds as ISO 8601 so sub-day
ranges match stored timestamps (#44702)
add 005eadcacd8 fix(opensearch): page drill-to-detail samples with the
OpenSearch SQL response format (#44703)
add 542e4661837 fix(gsheets): pass the OAuth2 token and delegation subject
through connect_args (#44709)
add 16271bbfbb7 fix(databricks): stop the string-type patch writing
SQLAlchemy's shared colspecs (#44707)
add 7154f2790a9 fix(oracle): map Oracle NUMBER, BINARY_FLOAT/DOUBLE and
CLOB column types (#44685)
add 3e8cec55c4b chore(deps): bump undici from 7.29.0 to 7.30.0 in
/superset-frontend in the security group across 1 directory (#44809)
add 89759eba5d9 chore(deps): bump react-window from 2.3.2 to 2.3.3 in
/superset-frontend (#44820)
add 3e36b242a61 fix(datafusion): render temporal SQL that DataFusion
accepts (#44700)
add 8c3b985c22c fix(db2): set current_schema to the catalog name of the
selected schema (#44706)
add ba62c867258 chore(deps): bump brace-expansion from 5.0.9 to 5.0.12 in
/superset-frontend/cypress-base (#44813)
add 3f8a23622c7 perf(security): memoise the user subject lookup within a
request (#44017)
add 3f408238baa refactor(mcp): one plugin lifecycle contract and compact
chart config schemas (#44746)
add 0359b2a7fe4 Merge branch 'master' into
feat/migrate-eslint-custom-rules-to-oxlint
No new revisions were added by this update.
Summary of changes:
.github/workflows/tag-release.yml | 31 +-
UPDATING.md | 97 +-
.../configuration/configuring-superset.mdx | 10 +
docs/admin_docs/configuration/mcp-server.mdx | 23 +
docs/developer_docs/api.mdx | 13 +
docs/developer_docs/extensions/mcp.md | 4 +
docs/docs/using-superset/exploring-data.mdx | 8 +
docs/docs/using-superset/recently-archived.mdx | 101 +-
.../docs/using-superset/using-ai-with-superset.mdx | 6 +
docs/docs/using-superset/version-history.mdx | 72 +-
docs/package.json | 4 +-
docs/src/data/databases.json | 13 +-
.../img/version-history/recently-archived.jpg | Bin 0 -> 23897 bytes
.../img/version-history/version-history-panel.jpg | Bin 0 -> 19792 bytes
.../version-history/version-history-preview.jpg | Bin 0 -> 64287 bytes
docs/yarn.lock | 474 +-
pyproject.toml | 13 +-
scripts/docker_release_target.py | 129 +
superset-embedded-sdk/package-lock.json | 52 +-
superset-embedded-sdk/package.json | 2 +-
superset-embedded-sdk/src/index.test.ts | 349 +-
superset-embedded-sdk/src/index.ts | 374 +-
superset-frontend/cypress-base/package-lock.json | 12 +-
superset-frontend/package-lock.json | 6419 ++------------------
superset-frontend/package.json | 8 +-
.../src/shared-controls/sharedControls.tsx | 13 +-
.../src/time-format/utils/normalizeTimestamp.ts | 18 +
.../time-format/utils/normalizeTimestamp.test.ts | 70 +
.../components/dashboard/DashboardFilterBar.ts | 6 +-
.../tests/dashboard/clear-all-filters.spec.ts | 112 +
.../src/Bubble/EchartsBubble.tsx | 16 +-
.../src/Bubble/transformProps.ts | 31 +-
.../src/Butterfly/Butterfly.tsx | 16 +-
.../src/Butterfly/transformProps.ts | 11 +-
.../src/Funnel/EchartsFunnel.tsx | 19 +-
.../src/Funnel/transformProps.ts | 15 +-
.../src/Gantt/EchartsGantt.tsx | 23 +-
.../plugin-chart-echarts/src/Gantt/constants.ts | 6 +
.../src/Gantt/transformProps.ts | 60 +-
.../src/Graph/EchartsGraph.tsx | 8 +
.../src/Graph/transformProps.ts | 11 +-
.../src/Histogram/Histogram.tsx | 17 +-
.../src/Histogram/transformProps.ts | 10 +-
.../src/MixedTimeseries/EchartsMixedTimeseries.tsx | 9 +
.../src/MixedTimeseries/transformProps.ts | 107 +-
.../plugin-chart-echarts/src/Pie/EchartsPie.tsx | 19 +-
.../plugin-chart-echarts/src/Pie/transformProps.ts | 15 +-
.../src/Radar/EchartsRadar.tsx | 19 +-
.../src/Radar/transformProps.ts | 15 +-
.../src/Timeseries/EchartsTimeseries.tsx | 19 +-
.../src/Timeseries/Regular/Bar/controlPanel.tsx | 14 +-
.../src/Timeseries/transformProps.ts | 110 +-
.../src/Timeseries/transformers.ts | 6 +-
.../src/Waterfall/EchartsWaterfall.tsx | 16 +-
.../plugins/plugin-chart-echarts/src/constants.ts | 20 +-
.../plugin-chart-echarts/src/utils/formatters.ts | 7 +
.../src/utils/legendEventHandlers.test.ts | 275 +
.../src/utils/legendEventHandlers.ts | 131 +
.../plugin-chart-echarts/src/utils/series.ts | 162 +-
.../test/Butterfly/Butterfly.test.tsx | 32 +-
.../test/Gantt/transformProps.test.ts | 58 +
.../test/MixedTimeseries/transformProps.test.ts | 26 +
.../test/Timeseries/Bar/controlPanel.test.ts | 62 +-
.../Bar/sparseSubDailyBarGeometry.test.ts | 505 ++
.../test/Timeseries/transformProps.test.ts | 163 +
.../test/utils/formatters.test.ts | 37 +
.../plugin-chart-echarts/test/utils/series.test.ts | 89 +-
.../DatasourceEditor/DatasourceEditor.tsx | 2 +-
.../dashboard/components/Header/Header.test.tsx | 143 +
.../SliceHeaderControls.test.tsx | 43 +
.../components/dnd/dragDroppableConfig.test.ts | 270 +
.../dashboard/components/dnd/handleDrop.test.ts | 346 ++
.../nativeFilters/FilterBar/FilterBar.test.tsx | 124 +-
.../nativeFilters/FilterBar/Vertical.tsx | 6 +
.../src/dashboard/util/crossFilters.test.ts | 75 +
.../src/dashboard/util/crossFilters.ts | 23 +-
.../src/dashboard/util/getRelatedCharts.ts | 32 +-
superset-frontend/src/pages/Login/Login.test.tsx | 17 +
superset-frontend/src/pages/Login/index.tsx | 4 +-
superset-websocket/package-lock.json | 320 +-
superset-websocket/package.json | 4 +-
superset/charts/client_processing.py | 9 +-
superset/commands/database/exceptions.py | 5 +
superset/commands/database/oauth2.py | 27 +-
superset/commands/database/tables.py | 41 +-
superset/commands/database/update.py | 34 +-
superset/common/query_context_factory.py | 36 +
superset/common/query_context_processor.py | 6 +-
superset/common/utils/query_cache_manager.py | 2 +
superset/connectors/sqla/models.py | 11 +-
superset/constants.py | 9 +
superset/daos/base.py | 7 +-
superset/daos/dashboard.py | 7 +-
superset/daos/dataset.py | 3 +-
superset/dashboards/filters.py | 22 +-
superset/databases/api.py | 14 +-
superset/dataframe.py | 109 +-
superset/datasets/schemas.py | 3 +-
superset/db_engine_specs/__init__.py | 31 +-
superset/db_engine_specs/aurora.py | 79 +
superset/db_engine_specs/base.py | 74 +-
superset/db_engine_specs/bigquery.py | 4 +
superset/db_engine_specs/clickhouse.py | 22 +-
superset/db_engine_specs/crate.py | 35 +-
superset/db_engine_specs/d1.py | 142 +-
superset/db_engine_specs/databend.py | 2 +-
superset/db_engine_specs/databricks.py | 143 +-
superset/db_engine_specs/datafusion.py | 34 +-
superset/db_engine_specs/db2.py | 12 +-
superset/db_engine_specs/duckdb.py | 39 +
superset/db_engine_specs/dynamodb.py | 24 +-
superset/db_engine_specs/elasticsearch.py | 59 +-
superset/db_engine_specs/gsheets.py | 60 +-
superset/db_engine_specs/ibmi.py | 24 +
superset/db_engine_specs/impala.py | 21 +
superset/db_engine_specs/kusto.py | 35 +
superset/db_engine_specs/kylin.py | 50 +-
superset/db_engine_specs/mssql.py | 2 -
superset/db_engine_specs/mysql.py | 150 +
superset/db_engine_specs/oracle.py | 118 +-
superset/db_engine_specs/pinot.py | 7 +
superset/db_engine_specs/postgres.py | 14 +-
superset/db_engine_specs/snowflake.py | 12 +-
superset/db_engine_specs/starrocks.py | 12 +-
superset/exceptions.py | 23 +
superset/extensions/metastore_cache.py | 35 +-
superset/jinja_context.py | 12 +-
superset/mcp_service/app.py | 6 +
superset/mcp_service/auth.py | 35 +-
superset/mcp_service/caching.py | 28 +-
.../mcp_service/catalog}/__init__.py | 0
superset/mcp_service/catalog/schemas.py | 131 +
.../catalog/tool}/__init__.py | 6 +-
superset/mcp_service/catalog/tool/get_catalog.py | 443 ++
superset/mcp_service/chart/chart_helpers.py | 163 +-
superset/mcp_service/chart/chart_utils.py | 128 +-
superset/mcp_service/chart/compile.py | 19 +-
superset/mcp_service/chart/plugin.py | 222 +-
superset/mcp_service/chart/plugins/big_number.py | 55 +-
superset/mcp_service/chart/plugins/bubble.py | 27 +-
superset/mcp_service/chart/plugins/gantt.py | 79 +-
superset/mcp_service/chart/plugins/gauge.py | 63 +-
superset/mcp_service/chart/plugins/handlebars.py | 4 +
superset/mcp_service/chart/plugins/histogram.py | 98 +-
.../mcp_service/chart/plugins/mixed_timeseries.py | 43 +
superset/mcp_service/chart/plugins/table.py | 1 +
superset/mcp_service/chart/plugins/treemap.py | 141 +-
superset/mcp_service/chart/plugins/waterfall.py | 27 +
superset/mcp_service/chart/preview_utils.py | 197 +-
superset/mcp_service/chart/query_result.py | 19 +-
superset/mcp_service/chart/registry.py | 49 +-
superset/mcp_service/chart/schemas.py | 85 +-
superset/mcp_service/chart/tool/get_chart_data.py | 29 +-
.../mcp_service/chart/tool/get_chart_preview.py | 128 +-
superset/mcp_service/chart/tool/update_chart.py | 65 +-
.../mcp_service/chart/tool/update_chart_preview.py | 48 +-
.../chart/validation/dataset_validator.py | 4 +-
superset/mcp_service/dashboard/schemas.py | 7 +-
superset/models/core.py | 55 +-
superset/models/helpers.py | 96 +-
superset/models/sql_lab.py | 29 +-
superset/result_set.py | 2 +
superset/security/manager.py | 14 +-
superset/sql/parse.py | 1 +
superset/subjects/utils.py | 40 +-
superset/translations/ar/LC_MESSAGES/messages.po | 332 +-
superset/translations/ca/LC_MESSAGES/messages.po | 270 +-
superset/translations/cs/LC_MESSAGES/messages.po | 197 +-
superset/translations/fa/LC_MESSAGES/messages.po | 334 +-
superset/translations/fi/LC_MESSAGES/messages.po | 299 +-
superset/translations/ko/LC_MESSAGES/messages.po | 450 +-
superset/translations/lv/LC_MESSAGES/messages.po | 212 +-
superset/translations/messages.pot | 23 +-
superset/translations/mi/LC_MESSAGES/messages.po | 274 +-
superset/translations/nl/LC_MESSAGES/messages.po | 343 +-
superset/translations/pl/LC_MESSAGES/messages.po | 384 +-
.../translations/pt_BR/LC_MESSAGES/messages.po | 328 +-
superset/translations/sk/LC_MESSAGES/messages.po | 197 +-
superset/translations/ta/LC_MESSAGES/messages.po | 284 +-
superset/translations/th/LC_MESSAGES/messages.po | 286 +-
superset/translations/tr/LC_MESSAGES/messages.po | 27 +-
superset/translations/uk/LC_MESSAGES/messages.po | 212 +-
superset/translations/zh/LC_MESSAGES/messages.po | 52 +-
.../translations/zh_TW/LC_MESSAGES/messages.po | 289 +-
superset/utils/core.py | 3 +-
superset/utils/database.py | 76 +-
superset/utils/excel.py | 83 +-
superset/utils/number_format.py | 10 +-
superset/utils/rls.py | 13 +
tests/integration_tests/databases/api_tests.py | 105 +-
.../integration_tests/databases/commands_tests.py | 19 +-
.../security/row_level_security_tests.py | 110 +
tests/unit_tests/charts/test_client_processing.py | 55 +
tests/unit_tests/commands/databases/oauth2_test.py | 73 +-
tests/unit_tests/commands/databases/tables_test.py | 165 +
tests/unit_tests/commands/databases/update_test.py | 114 +
.../common/test_query_context_factory.py | 201 +
.../common/test_query_context_processor.py | 42 +-
tests/unit_tests/connectors/sqla/models_test.py | 55 +-
tests/unit_tests/dao/dashboard_test.py | 23 +
.../daos/test_dataset_dao.py} | 20 +-
tests/unit_tests/dashboards/datasets_test.py | 1 +
.../dashboards/semantic_view_access_test.py | 68 +-
tests/unit_tests/databases/api_test.py | 101 +-
tests/unit_tests/databases/oauth2_api_test.py | 32 +-
tests/unit_tests/dataframe_test.py | 181 +-
tests/unit_tests/datasets/schema_tests.py | 1 +
tests/unit_tests/db_engine_specs/test_base.py | 137 +-
tests/unit_tests/db_engine_specs/test_crate.py | 83 +-
tests/unit_tests/db_engine_specs/test_d1.py | 337 +
.../unit_tests/db_engine_specs/test_databricks.py | 70 +
.../unit_tests/db_engine_specs/test_datafusion.py | 32 +-
tests/unit_tests/db_engine_specs/test_db2.py | 52 +-
tests/unit_tests/db_engine_specs/test_duckdb.py | 145 +
tests/unit_tests/db_engine_specs/test_dynamodb.py | 88 +-
.../db_engine_specs/test_elasticsearch.py | 144 +-
tests/unit_tests/db_engine_specs/test_gsheets.py | 210 +-
tests/unit_tests/db_engine_specs/test_impala.py | 109 +
tests/unit_tests/db_engine_specs/test_init.py | 143 +
tests/unit_tests/db_engine_specs/test_kylin.py | 50 +
tests/unit_tests/db_engine_specs/test_mysql.py | 307 +
tests/unit_tests/db_engine_specs/test_oracle.py | 111 +-
tests/unit_tests/db_engine_specs/test_postgres.py | 16 +-
tests/unit_tests/db_engine_specs/test_snowflake.py | 47 +
tests/unit_tests/db_engine_specs/test_starrocks.py | 73 +-
.../unit_tests/extensions/metastore_cache_test.py | 93 +
tests/unit_tests/jinja_context_test.py | 31 +
.../unit_tests/mcp_service/catalog}/__init__.py | 0
.../mcp_service/catalog/tool}/__init__.py | 0
.../mcp_service/catalog/tool/test_get_catalog.py | 921 +++
.../mcp_service/chart/test_chart_helpers.py | 4 +
.../chart/test_chart_plugin_contract.py | 762 +++
.../chart/test_histogram_boxplot_charts.py | 62 +
.../mcp_service/chart/test_preview_utils.py | 28 +
.../unit_tests/mcp_service/chart/test_registry.py | 56 +-
.../mcp_service/chart/test_registry_filters.py | 9 +
.../mcp_service/chart/test_treemap_completeness.py | 76 +-
.../mcp_service/chart/tool/test_get_chart_data.py | 38 +
.../chart/tool/test_get_chart_preview.py | 37 +
.../mcp_service/chart/tool/test_update_chart.py | 43 +-
.../dashboard/tool/test_duplicate_dashboard.py | 21 +-
.../mcp_service/test_chart_tool_inventory.py | 236 +-
tests/unit_tests/mcp_service/test_mcp_caching.py | 67 +-
.../mcp_service/test_mcp_tool_registration.py | 1 +
.../test_sanitization_warning_inputs.py | 80 +
.../unit_tests/mcp_service/test_tool_inventory.py | 77 +-
tests/unit_tests/models/core_test.py | 165 +
.../unit_tests/models/helpers_rls_rollback_test.py | 80 +
tests/unit_tests/models/helpers_test.py | 59 +-
.../models/select_alias_shadowing_test.py | 184 +
tests/unit_tests/result_set_test.py | 22 +
.../scripts/docker_release_target_test.py | 177 +
tests/unit_tests/security/manager_test.py | 80 +-
tests/unit_tests/sql/execution/test_celery_task.py | 40 +
tests/unit_tests/sql_lab_test.py | 49 +
tests/unit_tests/subjects/test_utils.py | 80 +
tests/unit_tests/utils/excel_tests.py | 38 +-
tests/unit_tests/utils/number_format_test.py | 26 +
tests/unit_tests/utils/rls_test.py | 36 +
tests/unit_tests/utils/test_core.py | 46 +-
tests/unit_tests/utils/test_database.py | 110 +-
.../versioning/test_capture_gap_restore.py | 52 +-
.../unit_tests/versioning/test_runtime_capture.py | 7 +-
263 files changed, 18436 insertions(+), 10163 deletions(-)
create mode 100644 docs/static/img/version-history/recently-archived.jpg
create mode 100644 docs/static/img/version-history/version-history-panel.jpg
create mode 100644 docs/static/img/version-history/version-history-preview.jpg
create mode 100644 scripts/docker_release_target.py
create mode 100644
superset-frontend/plugins/plugin-chart-echarts/src/utils/legendEventHandlers.test.ts
create mode 100644
superset-frontend/plugins/plugin-chart-echarts/src/utils/legendEventHandlers.ts
create mode 100644
superset-frontend/plugins/plugin-chart-echarts/test/Timeseries/Bar/sparseSubDailyBarGeometry.test.ts
create mode 100644
superset-frontend/src/dashboard/components/dnd/dragDroppableConfig.test.ts
create mode 100644
superset-frontend/src/dashboard/components/dnd/handleDrop.test.ts
copy {scripts => superset/mcp_service/catalog}/__init__.py (100%)
create mode 100644 superset/mcp_service/catalog/schemas.py
copy superset/{sql/execution => mcp_service/catalog/tool}/__init__.py (91%)
create mode 100644 superset/mcp_service/catalog/tool/get_catalog.py
copy tests/{integration_tests/fixtures/client.py =>
unit_tests/daos/test_dataset_dao.py} (64%)
create mode 100644 tests/unit_tests/db_engine_specs/test_d1.py
create mode 100644 tests/unit_tests/extensions/metastore_cache_test.py
copy {scripts => tests/unit_tests/mcp_service/catalog}/__init__.py (100%)
copy {scripts => tests/unit_tests/mcp_service/catalog/tool}/__init__.py (100%)
create mode 100644
tests/unit_tests/mcp_service/catalog/tool/test_get_catalog.py
create mode 100644
tests/unit_tests/mcp_service/chart/test_chart_plugin_contract.py
create mode 100644
tests/unit_tests/mcp_service/test_sanitization_warning_inputs.py
create mode 100644 tests/unit_tests/models/helpers_rls_rollback_test.py
create mode 100644 tests/unit_tests/models/select_alias_shadowing_test.py
create mode 100644 tests/unit_tests/scripts/docker_release_target_test.py