You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@superset.apache.org by en...@apache.org on 2026/06/02 13:21:58 UTC

(superset) branch enxdev/feat/chatbot-admin-ui updated (ac7f92449e2 -> 18dcf43796d)

This is an automated email from the ASF dual-hosted git repository.

EnxDev pushed a change to branch enxdev/feat/chatbot-admin-ui
in repository https://gitbox.apache.org/repos/asf/superset.git


    omit ac7f92449e2 Merge eager-loading base into chatbot-admin-ui; migrate to subscribeToRegistry
    omit d66c4047426 Merge remote-tracking branch 'origin/enxdev/feat/chatbot-frontend-api' into enxdev/feat/chatbot-eager-loading
    omit fb215f5bd73 fix(extensions): remove forward-dependencies on later stack branches
    omit 377049516d8 fix(extensions): track async registrations via activate(context)
    omit 320a0823815 fix(extensions): defer admin-settings fetch in ChatbotMount to step 5
    omit d84af28db4a refactor(extensions): consolidate Switch and Select into single import
    omit 3603f9be753 test(chatbot): cover admin-pin, enabled-filter, and stale-pin fallback paths
    omit b8664bd6af1 fix(extensions): rollback on PUT failure; drop stale setSettings in .then()
    omit 870b8d38ccc fix(extensions): guard malformed settings response; test provider-throw isolation
    omit d5971e0c94f fix(extensions): revert loading gate; render immediately, fall back on error
    omit c27400e8a83 refactor(extensions): replace per-location pub/sub with registry-wide version counter + useSyncExternalStore
    omit 0b68d2f1089 fix(extensions): eliminate settings save race condition with ref-based snapshot
    omit 4c427b37183 fix(extensions): intercept all namespace registrations for deactivation cleanup; gate ChatbotMount on feature flag
    omit 197e14de1b3 feat(extensions): admin configuration UI for extensions
    omit 7c9efd529be feat(extensions): eager-load extensions at app-shell startup
    omit f8e7ee9dc23 feat(extensions): define the chatbot entry point in the frontend API
    omit c77c9b29f96 feat(extensions): define the superset.chatbot contribution point
     add 8ab4695ba34 fix(mcp): use `name` URL param so AI-generated SQL Lab titles render (#40288)
     add 21059b54f06 feat(semantic layers): form for SL with a single SV (#40280)
     add c945ef67639 chore(oxlint): enable import/newline-after-import + react/no-unstable-nested-components (#40319)
     add 42149f6a78f fix(chart): fix label and description translation on UI and enhance french translations (#40229)
     add 91d96419fe0 feat(sec): delays version-bumping PR to avoid prematurely usage of compromised packages (#39783)
     add 3b4892c48cd fix(select): replace cached options with search results in AsyncSelect (#40039)
     add 869ab37f590 chore(deps): bump react-map-gl from 8.1.0 to 8.1.1 in /superset-frontend (#40366)
     add d97b5d6509c chore(deps): bump react-syntax-highlighter from 16.1.0 to 16.1.1 in /superset-frontend (#40372)
     add 3599c78a034 chore(deps): bump react-arborist from 3.6.1 to 3.7.0 in /superset-frontend (#40371)
     add 5af8fe77fab chore(deps): bump zod from 4.4.1 to 4.4.3 in /superset-frontend (#40367)
     add 6e23e4541d3 chore(deps): bump yeoman-generator from 8.1.2 to 8.2.2 in /superset-frontend (#40365)
     add 2a0ebd7055a chore(deps-dev): bump ts-jest from 29.4.10 to 29.4.11 in /superset-websocket (#40363)
     add 0febe32dc9c chore(deps): bump geostyler from 18.5.1 to 18.6.0 in /superset-frontend (#40323)
     add c728b4a11f5 chore(deps): bump sqlglot from 28.10.0 to 30.8.0 (#40186)
     add e40648dfcbd chore(deps-dev): bump typescript from 5.9.3 to 6.0.3 in /superset-websocket (#39425)
     add 5cdd542ae50 fix(i18n): translate DateFilter tooltip for time range values (#40286)
     add f8e13770fcf fix(dashboard): add top padding to "Create new chart" button in builder pane (#40033)
     add af6ac4d09cb feat(i18n): AI-assisted translation backfill tooling + Spanish translations (#39448)
     add e57387098b4 fix(bigquery): limit result set size to prevent browser memory crashes (#38588)
     add 8d985d223bc ci(e2e): run backend under gunicorn instead of flask dev server (#40234)
     add 42668cf6341 ci(docker): pin QEMU binfmt image to stabilize arm64 builds (#40235)
     add 838ac8f553c fix(ci): stop cancelling Hold Label Check runs (#40380)
     add 168b49bf34f chore(cypress): remove dead _skip spec files and skipped inline tests (#40384)
     add 2fa3bbd91cf chore(ci): limit /app/prefix matrix variant to master merges (#40385)
     add 55203bbc748 chore(deps): bump qs from 6.14.2 to 6.15.2 in /docs (#40383)
     add 841871f1e78 chore(deps): bump qs from 6.14.2 to 6.15.2 in /superset-websocket/utils/client-ws-app (#40382)
     add 816794b1985 fix(frontend): handle null/undefined path in ensureAppRoot (#39940)
     add 5003ee1499a docs: remove out-of-place phrase (#40226)
     add b21450681dc feat(i18n): add Thai (th) translations (AI-generated, needs review) (#40391)
     add 965ec472965 fix(explore): hide value input for unary filter operators (#39924)
     add 2fef4e41f20 feat(i18n): add Finnish (fi) translations (AI-generated, needs review) (#40390)
     add 9c90a6854c5 ci(translations): hard-block translation regressions in CI (#39443)
     add 8caa74354f6 chore(deps): bump markdown from 3.8.1 to 3.10.2 (#40389)
     add fe484f6bb28 fix(UserListModal): Success notification mentions user and not group (#40284)
     add b64561f3a37 chore(mcp): Simplify chart preview response (#40020)
     add 33585b0480c feat(mcp): make form_data_key optional in update_chart_preview (#39680)
     add 09572cd5efb chore(deps): bump tabulate from 0.9.0 to 0.10.0 (#40315)
     add c381677dfdf chore(deps): bump click from 8.2.1 to 8.4.0 (#40312)
     add bbe2f207d2d chore(deps): bump fs-extra from 11.3.2 to 11.3.5 in /superset-frontend (#40418)
     add 03d25277ba7 chore(deps): bump actions/upload-artifact from 7.0.0 to 7.0.1 (#40417)
     add 9cc2deb9036 chore(deps): update zod requirement from ^4.4.1 to ^4.4.3 in /superset-frontend/plugins/plugin-chart-echarts (#40416)
     add e9d46d843fa chore(deps): bump react-map-gl from 8.1.0 to 8.1.1 in /superset-frontend (#40415)
     add 709ef9b6155 chore(deps): bump d3-cloud from 1.2.8 to 1.2.9 in /superset-frontend (#40321)
     add 8b551d3f742 chore(deps-dev): bump duckdb from 1.4.2 to 1.5.2 (#40381)
     add 952a6f3a239 fix(mcp): prevent encoding error on tools/list when middleware raises (#40446)
     add b6f545e61e1 feat(mcp): resolve call_tool proxy name and capture error_type in logging (#38915)
     add 7e088792b95 test(model): roll back uncommitted ds_col mutations in timestamp-expression tests (#40451)
     add 09a94fa26b4 feat(mcp): return browser-friendly hello page for GET /mcp from browsers (#40309)
     add 207a7bf7f9b fix: preserve dashboard certification when saving layout changes (#40193)
     add fb606623538 chore(mcp): revert browser-friendly hello page for GET /mcp from browsers (#40467)
     add d744f5715c4 fix(dashboard-export): include and re-attach roles in import/export (#21000) (#40136)
     add e041f253856 fix(mcp): return error when target_tab not found in add_chart_to_existing_dashboard (#40124)
     add ef4514f5abd fix(treemap): remove gaps between chart nodes (#40181)
     add 6bd1b462164 chore(deps): bump github/codeql-action from 4.35.5 to 4.36.0 (#40458)
     add 894058fe3d4 chore(deps): bump fs-extra from 11.3.2 to 11.3.5 in /superset-frontend (#40438)
     add 08164e33bb4 chore(deps): bump d3-cloud from 1.2.8 to 1.2.9 in /superset-frontend (#40437)
     add 9441240e5c4 chore(deps): bump react-syntax-highlighter from 16.1.0 to 16.1.1 in /superset-frontend (#40436)
     add c73106b7a28 fix(chart-echarts): drop white textBorder from Funnel segment labels (#40468)
     add 0dc58d10420 feat(mcp): browser hello page with working middleware and config-driven content (#40471)
     add e68251fa704 feat(mcp): support custom SQL metrics in generate_chart and update_chart (#40448)
     add f037449b753 fix(roles): resolve HTTP 429 and 414 errors on role management page (#39465)
     add 8a0026b1736 fix(groups): display user full name in role edit user dropdown (#39942)
     add f663f47628a fix(embedding): require non-default JWT secret when embedded dashboards are enabled (#39999)
     add ec09cec6bdf fix(ci): correct first-interaction inputs in welcome workflow (#40508)
     add f7e1f968946 fix(i18n): Wrapped default Chat Error message in t() to support translation (#40504)
     add 96b96ad7d47 chore(deps): bump ws from 8.20.1 to 8.21.0 in /superset-websocket (#40483)
     add b0da0cf202b chore(ci): update GHA actions to Node.js 24-compatible versions (#40477)
     add 8853ab5c753 feat(mcp): add get_dashboard_layout companion tool (#40328)
     add b2320820b4a feat(core): SoftDeleteMixin and restore infrastructure (#39977)
     add 8f88bbcc796 chore(deps-dev): bump @swc/core from 1.15.33 to 1.15.40 in /superset-frontend (#40519)
     add 63ae80ab623 chore(deps-dev): bump baseline-browser-mapping from 2.10.31 to 2.10.32 in /superset-frontend (#40518)
     add e1948c87c6d chore(deps-dev): bump webpack-sources from 3.4.1 to 3.5.0 in /superset-frontend (#40517)
     add cf9ee99b5ae chore(deps-dev): bump eslint-plugin-react-you-might-not-need-an-effect from 0.10.1 to 0.10.2 in /superset-frontend (#40516)
     add 61cb0aeae74 chore(deps): bump @swc/core from 1.15.33 to 1.15.40 in /docs (#40515)
     add c3bda6baea9 chore(deps): bump fs-extra from 11.3.2 to 11.3.5 in /superset-frontend (#40487)
     add ead21d9789d chore(deps): bump react-syntax-highlighter from 16.1.0 to 16.1.1 in /superset-frontend (#40486)
     add 661ff31c6d5 chore(deps): bump yeoman-generator from 8.1.2 to 8.2.2 in /superset-frontend (#40485)
     add 63e3a18e8f4 chore(deps): bump baseline-browser-mapping from 2.10.31 to 2.10.32 in /docs (#40484)
     add ae5823fb9c2 chore(deps-dev): bump tmp from 0.2.5 to 0.2.7 in /superset-frontend (#40480)
     add e73d2d0bf60 chore(deps): bump tmp from 0.2.4 to 0.2.7 in /superset-frontend/cypress-base (#40476)
     add 53e2793bc3c fix: coerce out-of-bounds nanosecond timestamps to NaT instead of raising (#40127)
     add f614863ed78 feat(mcp): add list and get tools for annotation layers and annotations (#40342)
     add a69bbcb044c feat(mcp): add list and get tools for saved queries and query history (#40346)
     add 8d8eeb35053 feat(mcp): add list_tags and get_tag_info MCP tools (#40349)
     add b8ea4448d69 feat(ci): perform static security analysis for GHA workflows  (#40510)
     add 40de44f6de6 feat(mcp): add list and get tools for action log and tasks (#40344)
     add 43c3c06035f chore(deps): bump vm2 from 3.11.3 to 3.11.5 in /superset-frontend (#40529)
     add 62b4ee3d9e0 feat(mcp): add list and get tools for users and roles (#40345)
     add 16b56873b02 fix(ci): restrict workflow_run jobs to trusted origins and add zizmor audit (#40533)
     add f0838353a5a feat(i18n): add Czech (cs) locale support for dates (#40241)
     add c9136af8b6d fix(ci): trigger python dep check when pyproject.toml changes (#39792)
     add d350792d438 feat(mcp): add list and get tools for CSS templates and themes (#40343)
     add 44a8d9d4695 chore(deps): pin lodash, lodash-es, and yaml in docs to patched releases (#40535)
     add 8c6271e9ff8 chore(deps): bump urllib3, Mako, and python-multipart for high-severity CVEs (#40534)
     add f165c3fa786 fix(ci): grant security-events write to GHA validator workflow (#40539)
     add 7f54b0b13d0 test(database): regression test for sqla engine creation (#27897) (#40237)
     add 838ee27c299 chore(deps): bump protobuf to 5.29.6 and google-cloud-bigquery-storage to 2.26.0 (#40537)
     add fa4e571db5d chore(deps): force uuid 11.1.1 in docs (#40542)
     add f4787a4f252 chore(deps): bump ws to 8.20.1 in docs (#40538)
     add 2e7bec3646c chore(ci): harden GitHub Actions workflows per static analysis (#40545)
     add 2d6e68b5f29 fix(ci): remove deprecated ephemeral env workflows + resolve fixable GHA-related security issues  (#40121)
     add 4d95a8d0348 feat(listview): compact filter pills with popover for CRUD views (#40169)
     add 87be424f9c4 feat(mcp): add list and get tools for row level security and plugins (#40347)
     add f17e4de9cd5 fix(superset-frontend): color formats big numbers when value is 0 (#28038)
     add f10a296ed02 chore(deps): bump nh3 from 0.2.21 to 0.3.5 (#40551)
     add dfa4dbb96c8 chore(deps-dev): update denodo-sqlalchemy requirement from <2.1.0,>=1.0.6 to >=2.0.5,<2.1.0 (#40550)
     add ab66f0066ad chore(deps-dev): update sqlalchemy-cratedb requirement from <1,>=0.40.1 to >=0.41.0,<1 (#40549)
     add 35125d85215 chore(deps-dev): bump syntaqlite from 0.1.0 to 0.5.9 (#40548)
     add afc4f3c9b3f fix(database): extend URI blocklist to cover duckdb dialect (#40402)
     add 8e47eb1cc19 docs(security): explicit security model, role/capability matrix, AGENTS.md linkage (#40503)
     add c7bbfff4759 fix(ci): gate welcome message on first-time contributor association (#40543)
     add 585745695c3 fix(chart): load viz_type from request params when creating chart via API (#40536)
     add 469979714f3 chore(deps): force serialize-javascript 7.0.5 in docs (#40540)
     add a340293fefe chore(deps): bump idna, Authlib, fontTools, python-ldap, virtualenv (#40560)
     add ab5ea1f7d3c chore(deps): force d3-color 3.1.0 in docs (#40541)
     add 7e8b8e25a5e chore(ci): resolve remaining GitHub Actions static-analysis findings (#40556)
     add 9a79588d359 feat(dashboard): add Rison-encoded URL filter support (#39795)
     add a6215203878 fix(ci): repair Python version extraction in uv-pip-compile.sh (#40565)
     add acc80242f05 chore: fix translations (#40564)
     add 63249c8c977 fix(chart): add regression coverage for UpdateChartCommand ownership (#39997)
     add a2eda11a81e fix(dataset): validate catalog against allow_multi_catalog on import (#40376)
     add d52e28c564b fix(dashboard): preserve user selection when Dynamic Group By overlaps base (#40031)
     add 316dd3db22b fix(dataset): sort by data type when clicking Datatype column header (#40411)
     add a33fcb0eddc feat: add embedded dashboard E2E tests to Playwright CI (#39300)
     add 041ecbc248c fix(embedded): resolve guest user permissions in user_view_menu_names (#39197)
     add 5312d0adf81 feat(mcp): add list_reports and get_report_info tools (#40348)
     add e1bc8e7ae8f chore(deps): bump uuid, qs, js-yaml, and @cypress/request in frontend lockfiles (#40561)
     add dab628c13af fix(i18n): auto-add ASF license header in backfill_po.py (#40395)
     add 97be689b5c4 fix(daos): lazy-import SoftDeleteMixin to fix pytest collection error (#40573)
     add 1523d797ca6 chore(deps-dev): bump pyinstrument from 4.4.0 to 5.1.2 (#40377)
     add 74d1c83ec52 ci: preserve PR translation updates during regression checks (#40581)
     add 2b8e31bf688 ci(docs): skip Netlify docs preview on PRs that don't touch docs (#40590)
     add bffc3fc58fa chore(deps-dev): bump @babel/eslint-parser from 7.28.6 to 7.29.7 in /superset-frontend (#40615)
     add f77fa3ae39c chore(deps-dev): bump @babel/plugin-transform-runtime from 7.29.0 to 7.29.7 in /superset-frontend (#40614)
     add efdfefeea26 chore(deps-dev): bump @typescript-eslint/eslint-plugin from 8.59.4 to 8.60.0 in /superset-frontend (#40613)
     add aa8b474c58a chore(deps-dev): bump @babel/plugin-transform-export-namespace-from from 7.27.1 to 7.29.7 in /superset-frontend (#40611)
     add a06eb8fc781 chore(deps): bump react-arborist from 3.7.0 to 3.8.0 in /superset-frontend (#40610)
     add 8731974e5c4 chore(deps-dev): bump @babel/preset-react from 7.28.5 to 7.29.7 in /superset-frontend (#40609)
     add ce602fc5a8a chore(deps-dev): bump @babel/types from 7.29.0 to 7.29.7 in /superset-frontend (#40608)
     add 3f0fbbaac96 chore(deps-dev): update @babel/types requirement from ^7.29.0 to ^7.29.7 in /superset-frontend/plugins/plugin-chart-pivot-table (#40605)
     add 8beea849528 chore(deps-dev): bump @typescript-eslint/parser from 8.59.4 to 8.60.0 in /docs (#40600)
     add 70aa96458ac chore(deps-dev): bump @babel/cli from 7.28.6 to 7.29.7 in /superset-frontend (#40599)
     add f04221a06ca chore(deps-dev): bump webpack from 5.107.1 to 5.107.2 in /docs (#40597)
     add 986148d9244 chore(deps-dev): bump typescript-eslint from 8.59.4 to 8.60.0 in /superset-websocket (#40596)
     add 94092d2f720 chore(deps-dev): bump @babel/preset-typescript from 7.28.5 to 7.29.7 in /superset-frontend (#40604)
     add 41059c68bba chore(deps-dev): bump @babel/plugin-transform-modules-commonjs from 7.28.6 to 7.29.7 in /superset-frontend (#40603)
     add 861e668f743 chore(deps-dev): bump @babel/preset-env from 7.29.5 to 7.29.7 in /superset-frontend (#40601)
     add 41da35e9db0 chore(deps-dev): bump typescript-eslint from 8.59.4 to 8.60.0 in /docs (#40598)
     add 365914f1c76 chore(deps-dev): bump @typescript-eslint/eslint-plugin from 8.59.4 to 8.60.0 in /superset-websocket (#40595)
     add c29591b3b1b chore(deps): update @babel/runtime requirement from ^7.29.2 to ^7.29.7 in /superset-frontend/packages/superset-ui-core (#40606)
     add a6d2c954803 chore(deps): migrate MCP service JWT errors from authlib.jose to joserfc (#40582)
     add 817a35f445d fix(mcp): deny deactivated user accounts in MCP authentication (#40631)
     add c6faa50338b fix(cli): encrypt sqlalchemy_uri password on import_datasources (#31983) (#40584)
     add 2abbb64e6bc feat(gsheets): restore public/private sheet selector (#40466)
     add e2ed9896399 fix(reports): skip permalink when dashboard state has no anchor or filters (#40530)
     add a4d000ad523 feat(extensions): define the superset.chatbot contribution point
     add 05f83cbd257 feat(extensions): define the chatbot entry point in the frontend API
     add 914f7cd25e2 fix(extensions): defer admin-settings fetch in ChatbotMount to step 5
     add f009922bfc8 feat(extensions): eager-load extensions at app-shell startup
     add c25f67a3bd1 fix(extensions): intercept all namespace registrations for deactivation cleanup; gate ChatbotMount on feature flag
     add cf8e46b2f0c refactor(extensions): replace per-location pub/sub with registry-wide version counter + useSyncExternalStore
     add 50cfc3ca607 fix(extensions): revert loading gate; render immediately, fall back on error
     add d23b0bed726 fix(extensions): guard malformed settings response; test provider-throw isolation
     add 5e6136c041f fix(extensions): track async registrations via activate(context)
     add 54e381c0b4b fix(extensions): remove forward-dependencies on later stack branches
     add 71e04bec8bc feat(extensions): admin configuration UI for extensions
     add 52b205d827b fix(extensions): eliminate settings save race condition with ref-based snapshot
     add 85ff7d19ede fix(extensions): rollback on PUT failure; drop stale setSettings in .then()
     add 359aeebc3fe test(chatbot): cover admin-pin, enabled-filter, and stale-pin fallback paths
     add 2aab126c737 refactor(extensions): consolidate Switch and Select into single import
     add 18dcf43796d fix(extensions): migrate ExtensionsList to subscribeToRegistry

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   (ac7f92449e2)
            \
             N -- N -- N   refs/heads/enxdev/feat/chatbot-admin-ui (18dcf43796d)

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/SECURITY.md                                |    75 -
 .github/actions/setup-backend/action.yml           |    35 +-
 .github/actions/setup-docker/action.yml            |    15 +-
 .github/actions/setup-supersetbot/action.yml       |     5 +-
 .github/dependabot.yml                             |    61 +-
 .github/workflows/bashlib.sh                       |   141 +-
 .github/workflows/cancel_duplicates.yml            |    43 -
 .github/workflows/check_db_migration_confict.yml   |     2 +
 .github/workflows/claude.yml                       |     4 +
 .github/workflows/codeql-analysis.yml              |     6 +-
 .github/workflows/dependency-review.yml            |     4 +
 .github/workflows/docker.yml                       |    17 +-
 .github/workflows/embedded-sdk-release.yml         |     2 +
 .github/workflows/embedded-sdk-test.yml            |     2 +
 .github/workflows/ephemeral-env-pr-close.yml       |    83 -
 .github/workflows/ephemeral-env.yml                |   350 -
 .github/workflows/github-action-validator.yml      |    17 +-
 .github/workflows/labeler.yml                      |     2 +-
 .github/workflows/latest-release-tag.yml           |     4 +-
 .github/workflows/no-hold-label.yml                |     7 +-
 .github/workflows/pre-commit.yml                   |     4 +-
 .github/workflows/release.yml                      |     6 +
 .github/workflows/showtime-trigger.yml             |     9 +-
 .github/workflows/superset-docs-deploy.yml         |    12 +-
 .github/workflows/superset-docs-verify.yml         |     9 +-
 .github/workflows/superset-e2e.yml                 |    15 +-
 .github/workflows/superset-extensions-cli.yml      |     2 +-
 .github/workflows/superset-frontend.yml            |     5 +-
 .github/workflows/superset-helm-release.yml        |     8 +-
 .github/workflows/superset-playwright.yml          |    20 +
 .../workflows/superset-python-integrationtest.yml  |     6 +-
 .github/workflows/superset-python-presto-hive.yml  |     4 +-
 .github/workflows/superset-python-unittest.yml     |     2 +-
 .../workflows/superset-translations-comment.yml    |    88 +
 .github/workflows/superset-translations.yml        |    88 +-
 .github/workflows/tag-release.yml                  |    17 +-
 .github/workflows/tech-debt.yml                    |     2 +
 .github/workflows/welcome-new-users.yml            |    15 +-
 .gitignore                                         |     2 +
 .pre-commit-config.yaml                            |    13 +-
 AGENTS.md                                          |    38 +
 Dockerfile                                         |     2 +-
 SECURITY.md                                        |   145 +
 UPDATING.md                                        |     6 +
 .../pythonpath_dev/superset_config_docker_light.py |    31 +
 .../contributing/development-setup.md              |     1 -
 docs/developer_docs/contributing/howtos.md         |    86 +
 docs/netlify.toml                                  |    14 +-
 docs/package.json                                  |    18 +-
 docs/yarn.lock                                     |   413 +-
 pyproject.toml                                     |    24 +-
 requirements/base.txt                              |    16 +-
 requirements/development.txt                       |    42 +-
 scripts/change_detector.py                         |     4 +-
 scripts/oxlint.sh                                  |     2 +-
 scripts/translations/backfill_po.py                |   686 +
 scripts/translations/build_translation_index.py    |   153 +
 .../translations/check_translation_regression.py   |   251 +
 scripts/uv-pip-compile.sh                          |     7 +-
 superset-core/pyproject.toml                       |     2 +-
 .../cypress/e2e/dashboard/_skip.controls.test.ts   |   100 -
 .../dashboard/_skip.horizontalFilterBar.test.ts    |   292 -
 .../cypress/e2e/dashboard/_skip.key_value.test.ts  |    53 -
 .../cypress/e2e/dashboard/_skip.load.test.ts       |    51 -
 .../_skip.nativeFilters.noInitState.test.ts        |   385 -
 .../e2e/dashboard/_skip.nativeFilters.test.ts      |   431 -
 .../cypress/e2e/dashboard/_skip.tabs.test.ts       |   194 -
 .../cypress/e2e/dashboard/_skip.url_params.test.ts |    45 -
 .../cypress/e2e/dashboard/editmode.test.ts         |  1110 +-
 .../cypress/e2e/explore/_skip.AdhocFilters.test.ts |   109 -
 .../cypress/e2e/explore/_skip.AdhocMetrics.test.ts |   123 -
 .../e2e/explore/_skip.advanced_analytics.test.ts   |    65 -
 .../cypress/e2e/explore/_skip.annotations.test.ts  |    48 -
 .../cypress/e2e/explore/_skip.link.test.ts         |   192 -
 .../visualizations/_skip.big_number.test.js        |    80 -
 .../visualizations/_skip.big_number_total.test.js  |    79 -
 .../explore/visualizations/_skip.box_plot.test.js  |    65 -
 .../explore/visualizations/_skip.bubble.test.js    |   108 -
 .../explore/visualizations/_skip.compare.test.js   |   100 -
 .../visualizations/_skip.download_chart.test.js    |    54 -
 .../e2e/explore/visualizations/_skip.gauge.test.js |    75 -
 .../e2e/explore/visualizations/_skip.graph.test.ts |    91 -
 .../e2e/explore/visualizations/_skip.pie.test.js   |    82 -
 .../visualizations/_skip.pivot_table.test.js       |   106 -
 .../explore/visualizations/_skip.sunburst.test.js  |    97 -
 .../e2e/explore/visualizations/_skip.table.test.ts |   474 -
 .../e2e/explore/visualizations/_skip.time_table.js |   130 -
 .../explore/visualizations/_skip.world_map.test.js |    95 -
 superset-frontend/cypress-base/package-lock.json   |   510 +-
 superset-frontend/cypress-base/package.json        |     6 +
 superset-frontend/oxlint.json                      |    13 +-
 superset-frontend/package-lock.json                |  1659 +-
 superset-frontend/package.json                     |    35 +-
 .../packages/superset-core/package.json            |     8 +-
 .../packages/superset-ui-core/package.json         |     4 +-
 .../src/chart/components/SuperChart.tsx            |     1 +
 .../src/components/Select/AsyncSelect.test.tsx     |   470 +
 .../src/components/Select/AsyncSelect.tsx          |   117 +-
 .../src/components/Select/utils.tsx                |     4 +
 .../src/query/types/QueryResponse.ts               |     1 +
 superset-frontend/playwright.config.ts             |    24 +
 .../playwright/components/core/EditableTabs.ts     |    18 +-
 .../components/modals/EditDatasetModal.ts          |    17 +
 .../playwright/embedded-app/index.html             |    95 +
 .../playwright/helpers/api/dashboard.ts            |    50 +-
 .../playwright/helpers/api/embedded.ts             |   133 +
 .../playwright/helpers/api/requests.ts             |   112 +-
 superset-frontend/playwright/helpers/navigation.ts |    57 +
 .../playwright/pages/ChartCreationPage.ts          |     3 +-
 .../playwright/pages/ChartListPage.ts              |     5 +-
 .../playwright/pages/CreateDatasetPage.ts          |     3 +-
 .../playwright/pages/DashboardListPage.ts          |     3 +-
 .../playwright/pages/DashboardPage.ts              |     5 +-
 .../playwright/pages/DatasetListPage.ts            |     3 +-
 superset-frontend/playwright/pages/EmbeddedPage.ts |   172 +
 superset-frontend/playwright/pages/SqlLabPage.ts   |    37 +-
 .../tests/embedded/embedded-dashboard.spec.ts      |   362 +
 superset-frontend/playwright/utils/constants.ts    |    13 +
 .../src/BigNumber/BigNumberViz.test.tsx            |    85 +
 .../src/BigNumber/BigNumberViz.tsx                 |     7 +-
 .../src/Funnel/transformProps.ts                   |     2 -
 .../plugin-chart-echarts/src/Treemap/constants.ts  |     4 +-
 .../src/Treemap/transformProps.ts                  |     3 +-
 .../test/Funnel/transformProps.test.ts             |     9 +
 .../test/Treemap/transformProps.test.ts            |    41 +
 .../plugins/plugin-chart-pivot-table/package.json  |     2 +-
 superset-frontend/spec/helpers/testing-library.tsx |    30 +
 .../components/DynamicGroupBy/controlPanel.test.ts |    53 +
 .../components/DynamicGroupBy/controlPanel.ts      |    13 +-
 .../components/TimeColumn/controlPanel.test.ts     |    53 +
 .../components/TimeColumn/controlPanel.ts          |     7 +-
 .../components/TimeGrain/controlPanel.test.ts      |    53 +
 .../components/TimeGrain/controlPanel.ts           |     7 +-
 .../src/components/Chart/ChartErrorMessage.tsx     |     3 +-
 .../src/components/Chart/chartAction.ts            |    13 +-
 .../src/components/Chart/chartActions.test.ts      |    51 +
 .../components/ListView/CardSortSelect.test.tsx    |   102 +
 .../src/components/ListView/CardSortSelect.tsx     |    76 +-
 .../ListView/Filters/CompactFilterTrigger.test.tsx |   145 +
 .../ListView/Filters/CompactFilterTrigger.tsx      |   198 +
 .../ListView/Filters/CompactSelectPanel.test.tsx   |   339 +
 .../ListView/Filters/CompactSelectPanel.tsx        |   318 +
 .../src/components/ListView/Filters/DateRange.tsx  |   112 -
 .../ListView/Filters/FilterPopoverContent.test.tsx |    80 +
 .../ListView/Filters/FilterPopoverContent.tsx      |    74 +
 .../components/ListView/Filters/Select.test.tsx    |   267 -
 .../src/components/ListView/Filters/Select.tsx     |   154 -
 .../components/ListView/Filters/TimeRange.test.tsx |   251 +
 .../src/components/ListView/Filters/TimeRange.tsx  |   291 +
 .../src/components/ListView/Filters/index.test.tsx |   335 +-
 .../src/components/ListView/Filters/index.tsx      |   385 +-
 .../src/components/ListView/ListView.test.tsx      |    21 +-
 .../src/components/ListView/ListView.tsx           |    81 +-
 .../src/dashboard/actions/dashboardLayout.ts       |     1 +
 .../src/dashboard/actions/dashboardState.ts        |     9 +-
 .../src/dashboard/components/SliceAdder.tsx        |     2 +-
 .../nativeFilters/FilterBar/Horizontal.tsx         |   137 +-
 .../FilterBar/HorizontalFilterBar.test.tsx         |     1 +
 .../FilterBar/UrlFilters/UrlFilterTag.tsx          |    84 +
 .../FilterBar/UrlFilters/Vertical.test.tsx         |   139 +
 .../FilterBar/UrlFilters/Vertical.tsx              |    96 +
 .../FilterBar/UrlFilters/VerticalCollapse.tsx      |   131 +
 .../FilterBar/UrlFilters/urlFilterUtils.ts         |    71 +
 .../nativeFilters/FilterBar/Vertical.tsx           |     2 +
 .../components/nativeFilters/FilterBar/index.tsx   |    17 +-
 .../src/dashboard/containers/DashboardPage.tsx     |    69 +
 .../src/dashboard/util/UrlFilters.scope.test.ts    |   110 +
 .../util/charts/getFormDataWithExtraFilters.ts     |     4 +-
 .../util/getFormDataWithExtraFilters.test.ts       |   105 +-
 .../src/dashboard/util/risonFilters.test.ts        |   411 +
 .../src/dashboard/util/risonFilters.ts             |   569 +
 .../components/ControlPanelsContainer.test.tsx     |    20 +
 .../explore/components/ControlPanelsContainer.tsx  |    11 +-
 .../controls/DateFilterControl/DateFilterLabel.tsx |     6 +-
 ...AdhocFilterEditPopoverSimpleTabContent.test.tsx |    64 +
 .../index.tsx                                      |    91 +-
 .../DatabaseConnectionForm.test.tsx                |    85 +
 .../DatabaseConnectionForm/EncryptedField.test.tsx |   148 +-
 .../DatabaseConnectionForm/EncryptedField.tsx      |    68 +-
 .../OAuth2ClientField.test.tsx                     |    82 +
 .../DatabaseConnectionForm/OAuth2ClientField.tsx   |    78 +-
 .../DatabaseConnectionForm/TableCatalog.test.tsx   |    87 +
 .../DatabaseConnectionForm/TableCatalog.tsx        |    18 +-
 .../DatabaseModal/DatabaseConnectionForm/index.tsx |   112 +-
 .../databases/DatabaseModal/index.test.tsx         |   116 +
 .../src/features/databases/DatabaseModal/index.tsx |    54 +-
 .../src/features/databases/DatabaseModal/styles.ts |    11 +-
 superset-frontend/src/features/databases/types.ts  |     4 +
 .../AddDataset/DatasetPanel/DatasetPanel.test.tsx  |    23 +
 .../AddDataset/DatasetPanel/DatasetPanel.tsx       |     2 +-
 .../src/features/groups/GroupListModal.tsx         |     3 +-
 superset-frontend/src/features/groups/utils.ts     |     3 +-
 .../src/features/roles/RoleListEditModal.test.tsx  |   113 +-
 .../src/features/roles/RoleListEditModal.tsx       |    59 +-
 .../semanticLayers/MultiEnumControl.test.tsx       |    96 +
 .../semanticLayers/jsonFormsHelpers.test.ts        |    45 +-
 .../features/semanticLayers/jsonFormsHelpers.tsx   |    91 +-
 .../semanticViews/AddSemanticViewModal.tsx         |    38 +-
 .../src/features/users/UserListModal.tsx           |     2 +-
 superset-frontend/src/features/users/utils.ts      |     9 +
 .../filters/components/Range/controlPanel.test.ts  |    53 +
 .../src/filters/components/Range/controlPanel.ts   |    11 +-
 .../filters/components/Select/controlPanel.test.ts |    34 +-
 .../src/filters/components/Select/controlPanel.ts  |    56 +-
 .../src/filters/components/Time/controlPanel.ts    |     7 +-
 .../filters/components/TimeColumn/controlPanel.ts  |     7 +-
 .../filters/components/TimeGrain/controlPanel.ts   |     7 +-
 superset-frontend/src/hooks/useLocale.ts           |     2 +
 .../src/pages/ChartList/ChartList.test.tsx         |     9 +-
 .../DashboardList/DashboardList.cardview.test.tsx  |    16 +-
 .../src/pages/DashboardList/DashboardList.test.tsx |     8 +-
 .../DatasetList/DatasetList.integration.test.tsx   |     6 +-
 .../DatasetList/DatasetList.listview.test.tsx      |    23 +-
 .../src/pages/DatasetList/DatasetList.test.tsx     |     7 +-
 .../src/pages/GroupsList/GroupsList.test.tsx       |    16 +-
 .../src/pages/RolesList/RolesList.test.tsx         |     7 +-
 .../RowLevelSecurityList.test.tsx                  |     9 +-
 .../src/pages/UsersList/UsersList.test.tsx         |    20 +-
 superset-frontend/src/utils/fetchOptions.ts        |    21 +-
 superset-frontend/src/utils/pathUtils.test.ts      |    14 +
 superset-frontend/src/utils/pathUtils.ts           |    11 +-
 superset-frontend/webpack.proxy-config.js          |     1 +
 superset-websocket/package-lock.json               |   302 +-
 superset-websocket/package.json                    |    12 +-
 superset-websocket/src/index.ts                    |     6 +-
 superset-websocket/tsconfig.json                   |     1 +
 .../utils/client-ws-app/package-lock.json          |    12 +-
 superset/charts/schemas.py                         |     4 +
 superset/commands/chart/create.py                  |     8 +
 superset/commands/dashboard/export.py              |    10 +
 superset/commands/dashboard/importers/v1/utils.py  |    26 +
 superset/commands/dataset/importers/v0.py          |    18 +-
 superset/commands/dataset/importers/v1/__init__.py |    15 +-
 superset/commands/dataset/importers/v1/utils.py    |    71 +-
 superset/commands/importers/v1/utils.py            |    47 +
 superset/commands/report/execute.py                |    32 +-
 superset/commands/restore.py                       |    98 +
 superset/common/query_context_processor.py         |    13 +
 superset/common/utils/query_cache_manager.py       |    21 +-
 superset/config.py                                 |     7 +-
 superset/constants.py                              |     4 +
 superset/daos/base.py                              |    92 +-
 superset/daos/database.py                          |     8 +-
 superset/daos/report.py                            |    50 +-
 .../requirements.txt => daos/role.py}              |    14 +-
 superset/dashboards/schemas.py                     |     1 +
 superset/db_engine_specs/base.py                   |    10 +-
 superset/db_engine_specs/bigquery.py               |   109 +-
 superset/initialization/__init__.py                |    75 +-
 .../mcp_service/action_log}/__init__.py            |     0
 superset/mcp_service/action_log/schemas.py         |   302 +
 .../action_log/tool/__init__.py}                   |    10 +-
 .../action_log/tool/get_action_log_info.py         |    97 +
 .../action_log/tool/list_action_logs.py            |   152 +
 .../mcp_service/annotation_layer}/__init__.py      |     0
 superset/mcp_service/annotation_layer/schemas.py   |   367 +
 .../tool/__init__.py                               |    16 +-
 .../tool/get_annotation_layer_info.py              |    97 +
 .../tool/get_layer_annotation_info.py              |   130 +
 .../tool/list_annotation_layers.py                 |   123 +
 .../tool/list_layer_annotations.py                 |   144 +
 superset/mcp_service/app.py                        |   159 +-
 superset/mcp_service/auth.py                       |    14 +
 superset/mcp_service/chart/chart_utils.py          |    81 +-
 superset/mcp_service/chart/schemas.py              |   261 +-
 superset/mcp_service/chart/tool/generate_chart.py  |    25 +-
 .../mcp_service/chart/tool/get_chart_preview.py    |    20 +-
 superset/mcp_service/chart/tool/update_chart.py    |    33 +-
 .../mcp_service/chart/tool/update_chart_preview.py |    47 +-
 .../chart/validation/dataset_validator.py          |    45 +-
 .../chart/validation/runtime/__init__.py           |     4 +-
 .../validation/runtime/chart_type_suggester.py     |    23 +-
 .../chart/validation/schema_validator.py           |    35 +-
 superset/mcp_service/common/schema_discovery.py    |   174 +
 superset/mcp_service/constants.py                  |     4 +-
 .../mcp_service/css_template}/__init__.py          |     0
 superset/mcp_service/css_template/schemas.py       |   280 +
 .../css_template/tool/__init__.py}                 |    10 +-
 .../css_template/tool/get_css_template_info.py     |   108 +
 .../css_template/tool/list_css_templates.py        |   150 +
 superset/mcp_service/dashboard/schemas.py          |   292 +-
 superset/mcp_service/dashboard/tool/__init__.py    |     2 +
 .../tool/add_chart_to_existing_dashboard.py        |    91 +-
 .../dashboard/tool/generate_dashboard.py           |     6 +-
 .../dashboard/tool/get_dashboard_layout.py         |   119 +
 superset/mcp_service/database/schemas.py           |    14 +-
 superset/mcp_service/dataset/schemas.py            |    13 +-
 superset/mcp_service/jwt_verifier.py               |   281 +-
 superset/mcp_service/mcp_config.py                 |     6 +-
 superset/mcp_service/mcp_core.py                   |    62 +-
 superset/mcp_service/middleware.py                 |    94 +-
 .../mcp_service/plugin}/__init__.py                |     0
 .../requirements.txt => mcp_service/plugin/dao.py} |     9 +-
 superset/mcp_service/plugin/schemas.py             |   213 +
 .../plugin/tool/__init__.py}                       |    10 +-
 .../mcp_service/plugin/tool/get_plugin_info.py     |   101 +
 superset/mcp_service/plugin/tool/list_plugins.py   |   123 +
 superset/mcp_service/privacy.py                    |     7 +-
 .../mcp_service/query}/__init__.py                 |     0
 superset/mcp_service/query/schemas.py              |   293 +
 .../query/tool/__init__.py}                        |    10 +-
 superset/mcp_service/query/tool/get_query_info.py  |   122 +
 superset/mcp_service/query/tool/list_queries.py    |   156 +
 .../mcp_service/report}/__init__.py                |     0
 .../mcp_service/{database => report}/schemas.py    |   224 +-
 .../report/tool/__init__.py}                       |    10 +-
 .../mcp_service/report/tool/get_report_info.py     |   127 +
 superset/mcp_service/report/tool/list_reports.py   |   172 +
 .../mcp_service/rls}/__init__.py                   |     0
 superset/mcp_service/rls/schemas.py                |   255 +
 .../rls/tool/__init__.py}                          |    10 +-
 .../mcp_service/rls/tool/get_rls_filter_info.py    |   101 +
 superset/mcp_service/rls/tool/list_rls_filters.py  |   147 +
 .../mcp_service/role}/__init__.py                  |     0
 superset/mcp_service/role/schemas.py               |   264 +
 .../role/tool/__init__.py}                         |    10 +-
 superset/mcp_service/role/tool/get_role_info.py    |    97 +
 superset/mcp_service/role/tool/list_roles.py       |   135 +
 .../mcp_service/saved_query}/__init__.py           |     0
 superset/mcp_service/saved_query/schemas.py        |   269 +
 .../saved_query/tool/__init__.py}                  |    10 +-
 .../saved_query/tool/get_saved_query_info.py       |   129 +
 .../saved_query/tool/list_saved_queries.py         |   158 +
 superset/mcp_service/server.py                     |    58 +
 superset/mcp_service/sql_lab/schemas.py            |    21 +-
 .../sql_lab/tool/open_sql_lab_with_context.py      |     7 +-
 superset/mcp_service/system/tool/get_schema.py     |   128 +-
 .../mcp_service/tag}/__init__.py                   |     0
 superset/mcp_service/tag/schemas.py                |   251 +
 .../tag/tool/__init__.py}                          |    10 +-
 superset/mcp_service/tag/tool/get_tag_info.py      |   108 +
 superset/mcp_service/tag/tool/list_tags.py         |   157 +
 .../mcp_service/task}/__init__.py                  |     0
 superset/mcp_service/task/schemas.py               |   259 +
 .../task/tool/__init__.py}                         |    10 +-
 superset/mcp_service/task/tool/get_task_info.py    |   107 +
 superset/mcp_service/task/tool/list_tasks.py       |   140 +
 .../mcp_service/theme}/__init__.py                 |     0
 superset/mcp_service/theme/schemas.py              |   305 +
 .../theme/tool/__init__.py}                        |    10 +-
 superset/mcp_service/theme/tool/get_theme_info.py  |   116 +
 superset/mcp_service/theme/tool/list_themes.py     |   147 +
 .../mcp_service/user}/__init__.py                  |     0
 superset/mcp_service/user/schemas.py               |   302 +
 .../user/tool/__init__.py}                         |    10 +-
 superset/mcp_service/user/tool/get_user_info.py    |   107 +
 superset/mcp_service/user/tool/list_users.py       |   151 +
 superset/mcp_service/utils/response_utils.py       |    11 +
 superset/mcp_service/utils/sanitization.py         |   139 +-
 superset/models/core.py                            |    71 +-
 superset/models/helpers.py                         |   266 +-
 superset/result_set.py                             |     4 +-
 superset/security/analytics_db_safety.py           |     4 +
 superset/security/manager.py                       |    67 +-
 superset/sql/dialects/db2.py                       |     6 +
 superset/sql/dialects/dremio.py                    |     6 +-
 superset/sql/dialects/firebolt.py                  |    11 +-
 superset/sql/parse.py                              |    37 +-
 superset/translations/ar/LC_MESSAGES/messages.po   |  1794 +-
 superset/translations/ca/LC_MESSAGES/messages.po   |  1761 +-
 superset/translations/cs/LC_MESSAGES/messages.po   |  2406 +-
 superset/translations/de/LC_MESSAGES/messages.po   |  1768 +-
 superset/translations/en/LC_MESSAGES/messages.po   |  1503 +-
 superset/translations/es/LC_MESSAGES/messages.po   |  2564 +-
 superset/translations/fa/LC_MESSAGES/messages.po   |  1748 +-
 superset/translations/fi/LC_MESSAGES/messages.po   | 32146 +++++++++++++++++++
 superset/translations/fr/LC_MESSAGES/messages.po   |  3459 +-
 superset/translations/it/LC_MESSAGES/messages.po   |  1682 +-
 superset/translations/ja/LC_MESSAGES/messages.po   |  2469 +-
 superset/translations/ko/LC_MESSAGES/messages.po   |  1681 +-
 superset/translations/lv/LC_MESSAGES/messages.po   |  1729 +-
 superset/translations/messages.pot                 |  1459 +-
 superset/translations/mi/LC_MESSAGES/messages.po   |  1752 +-
 superset/translations/nl/LC_MESSAGES/messages.po   |  1762 +-
 superset/translations/pl/LC_MESSAGES/messages.po   |  1764 +-
 superset/translations/pt/LC_MESSAGES/messages.po   |  1708 +-
 .../translations/pt_BR/LC_MESSAGES/messages.po     |  5432 ++--
 superset/translations/requirements.txt             |     1 +
 superset/translations/ru/LC_MESSAGES/messages.po   |  1812 +-
 superset/translations/sk/LC_MESSAGES/messages.po   |  5602 +++-
 superset/translations/sl/LC_MESSAGES/messages.po   |  1774 +-
 superset/translations/th/LC_MESSAGES/messages.po   | 31784 ++++++++++++++++++
 superset/translations/tr/LC_MESSAGES/messages.po   |  1645 +-
 superset/translations/uk/LC_MESSAGES/messages.po   |  2151 +-
 superset/translations/zh/LC_MESSAGES/messages.po   |  1723 +-
 .../translations/zh_TW/LC_MESSAGES/messages.po     |  1723 +-
 superset/utils/rison_filters.py                    |   274 +
 superset/views/filters.py                          |   213 +-
 tests/integration_tests/model_tests.py             |    89 +-
 .../commands/execute_dashboard_report_tests.py     |     4 +-
 .../security/analytics_db_safety_tests.py          |    20 +
 tests/integration_tests/superset_test_config.py    |     1 +
 tests/unit_tests/charts/test_client_processing.py  |    34 +-
 tests/unit_tests/commands/chart/update_test.py     |    93 +
 tests/unit_tests/commands/dashboard/export_test.py |    68 +
 .../importers/v1/test_find_existing_for_import.py  |   180 +
 .../unit_tests/commands/importers/v1/utils_test.py |   119 +
 tests/unit_tests/commands/report/execute_test.py   |    92 +-
 .../commands/test_base_restore_command.py          |   187 +
 .../common/test_query_context_processor.py         |   120 +
 tests/unit_tests/dao/base_dao_test.py              |     7 +
 tests/unit_tests/daos/test_base_dao_soft_delete.py |   100 +
 .../databases/commands/importers/v1/import_test.py |   150 +
 .../datasets/commands/importers/v1/import_test.py  |   231 +
 tests/unit_tests/db_engine_specs/test_bigquery.py  |   132 +-
 .../unit_tests/mcp_service/action_log}/__init__.py |     0
 .../mcp_service/action_log/tool}/__init__.py       |     0
 .../action_log/tool/test_action_log_tools.py       |   401 +
 .../mcp_service/annotation_layer}/__init__.py      |     0
 .../mcp_service/annotation_layer/tool}/__init__.py |     0
 .../tool/test_annotation_layer_tools.py            |   562 +
 .../mcp_service/chart/test_big_number_chart.py     |    41 +-
 .../mcp_service/chart/test_chart_schemas.py        |   254 +
 .../mcp_service/chart/test_chart_utils.py          |   207 +
 .../mcp_service/chart/tool/test_generate_chart.py  |    90 +
 .../chart/tool/test_get_chart_preview.py           |    17 +-
 .../mcp_service/chart/tool/test_update_chart.py    |    58 +
 .../chart/tool/test_update_chart_preview.py        |    72 +-
 .../chart/validation/test_runtime_validator.py     |    25 +
 .../mcp_service/css_template}/__init__.py          |     0
 .../mcp_service/css_template/tool}/__init__.py     |     0
 .../css_template/tool/test_css_template_tools.py   |   280 +
 .../tool/test_add_chart_to_existing_dashboard.py   |    52 +
 .../dashboard/tool/test_dashboard_generation.py    |   174 +-
 .../dashboard/tool/test_get_dashboard_layout.py    |   285 +
 .../unit_tests/mcp_service/plugin}/__init__.py     |     0
 .../mcp_service/plugin/tool}/__init__.py           |     0
 .../mcp_service/plugin/tool/test_plugin_tools.py   |   172 +
 .../unit_tests/mcp_service/query}/__init__.py      |     0
 .../unit_tests/mcp_service/query/tool}/__init__.py |     0
 .../mcp_service/query/tool/test_query_tools.py     |   328 +
 .../unit_tests/mcp_service/report}/__init__.py     |     0
 .../mcp_service/report/tool}/__init__.py           |     0
 .../mcp_service/report/tool/test_report_tools.py   |   739 +
 .../unit_tests/mcp_service/rls}/__init__.py        |     0
 .../unit_tests/mcp_service/rls/tool}/__init__.py   |     0
 .../mcp_service/rls/tool/test_rls_tools.py         |   245 +
 .../unit_tests/mcp_service/role}/__init__.py       |     0
 .../unit_tests/mcp_service/role/tool}/__init__.py  |     0
 .../mcp_service/role/tool/test_role_tools.py       |   336 +
 .../mcp_service/saved_query}/__init__.py           |     0
 .../mcp_service/saved_query/tool}/__init__.py      |     0
 .../saved_query/tool/test_saved_query_tools.py     |   337 +
 .../sql_lab/tool/test_open_sql_lab_with_context.py |    43 +-
 .../mcp_service/system/tool/test_get_schema.py     |   210 +
 .../mcp_service/system/tool/test_mcp_core.py       |    12 +-
 .../unit_tests/mcp_service/tag}/__init__.py        |     0
 .../unit_tests/mcp_service/tag/tool}/__init__.py   |     0
 .../mcp_service/tag/tool/test_tag_tools.py         |   268 +
 .../unit_tests/mcp_service/task}/__init__.py       |     0
 .../unit_tests/mcp_service/task/tool}/__init__.py  |     0
 .../mcp_service/task/tool/test_task_tools.py       |   284 +
 .../mcp_service/test_auth_user_resolution.py       |    40 +
 tests/unit_tests/mcp_service/test_jwt_verifier.py  |    12 +-
 .../mcp_service/test_jwt_verifier_browser_hello.py |   126 +
 .../mcp_service/test_mcp_tool_registration.py      |   138 +-
 .../mcp_service/test_middleware_logging.py         |   181 +-
 .../unit_tests/mcp_service/theme}/__init__.py      |     0
 .../unit_tests/mcp_service/theme/tool}/__init__.py |     0
 .../mcp_service/theme/tool/test_theme_tools.py     |   267 +
 .../unit_tests/mcp_service/user}/__init__.py       |     0
 .../unit_tests/mcp_service/user/tool}/__init__.py  |     0
 .../mcp_service/user/tool/test_user_tools.py       |   449 +
 .../mcp_service/utils/test_sanitization.py         |   200 +
 tests/unit_tests/models/core_test.py               |    94 +
 tests/unit_tests/models/test_soft_delete_mixin.py  |   566 +
 tests/unit_tests/result_set_test.py                |    20 +
 .../unit_tests/scripts/translations}/__init__.py   |     0
 .../scripts/translations/backfill_po_test.py       |   345 +
 .../translations/build_translation_index_test.py   |   256 +
 tests/unit_tests/security/manager_test.py          |    72 +
 tests/unit_tests/utils/profiler_test.py            |    74 +
 tests/unit_tests/utils/test_rison_filters.py       |   183 +
 tests/unit_tests/views/test_soft_delete_filter.py  |   356 +
 474 files changed, 141179 insertions(+), 19177 deletions(-)
 delete mode 100644 .github/SECURITY.md
 delete mode 100644 .github/workflows/cancel_duplicates.yml
 delete mode 100644 .github/workflows/ephemeral-env-pr-close.yml
 delete mode 100644 .github/workflows/ephemeral-env.yml
 create mode 100644 .github/workflows/superset-translations-comment.yml
 create mode 100644 SECURITY.md
 create mode 100644 scripts/translations/backfill_po.py
 create mode 100644 scripts/translations/build_translation_index.py
 create mode 100755 scripts/translations/check_translation_regression.py
 delete mode 100644 superset-frontend/cypress-base/cypress/e2e/dashboard/_skip.controls.test.ts
 delete mode 100644 superset-frontend/cypress-base/cypress/e2e/dashboard/_skip.horizontalFilterBar.test.ts
 delete mode 100644 superset-frontend/cypress-base/cypress/e2e/dashboard/_skip.key_value.test.ts
 delete mode 100644 superset-frontend/cypress-base/cypress/e2e/dashboard/_skip.load.test.ts
 delete mode 100644 superset-frontend/cypress-base/cypress/e2e/dashboard/_skip.nativeFilters.noInitState.test.ts
 delete mode 100644 superset-frontend/cypress-base/cypress/e2e/dashboard/_skip.nativeFilters.test.ts
 delete mode 100644 superset-frontend/cypress-base/cypress/e2e/dashboard/_skip.tabs.test.ts
 delete mode 100644 superset-frontend/cypress-base/cypress/e2e/dashboard/_skip.url_params.test.ts
 delete mode 100644 superset-frontend/cypress-base/cypress/e2e/explore/_skip.AdhocFilters.test.ts
 delete mode 100644 superset-frontend/cypress-base/cypress/e2e/explore/_skip.AdhocMetrics.test.ts
 delete mode 100644 superset-frontend/cypress-base/cypress/e2e/explore/_skip.advanced_analytics.test.ts
 delete mode 100644 superset-frontend/cypress-base/cypress/e2e/explore/_skip.annotations.test.ts
 delete mode 100644 superset-frontend/cypress-base/cypress/e2e/explore/_skip.link.test.ts
 delete mode 100644 superset-frontend/cypress-base/cypress/e2e/explore/visualizations/_skip.big_number.test.js
 delete mode 100644 superset-frontend/cypress-base/cypress/e2e/explore/visualizations/_skip.big_number_total.test.js
 delete mode 100644 superset-frontend/cypress-base/cypress/e2e/explore/visualizations/_skip.box_plot.test.js
 delete mode 100644 superset-frontend/cypress-base/cypress/e2e/explore/visualizations/_skip.bubble.test.js
 delete mode 100644 superset-frontend/cypress-base/cypress/e2e/explore/visualizations/_skip.compare.test.js
 delete mode 100644 superset-frontend/cypress-base/cypress/e2e/explore/visualizations/_skip.download_chart.test.js
 delete mode 100644 superset-frontend/cypress-base/cypress/e2e/explore/visualizations/_skip.gauge.test.js
 delete mode 100644 superset-frontend/cypress-base/cypress/e2e/explore/visualizations/_skip.graph.test.ts
 delete mode 100644 superset-frontend/cypress-base/cypress/e2e/explore/visualizations/_skip.pie.test.js
 delete mode 100644 superset-frontend/cypress-base/cypress/e2e/explore/visualizations/_skip.pivot_table.test.js
 delete mode 100644 superset-frontend/cypress-base/cypress/e2e/explore/visualizations/_skip.sunburst.test.js
 delete mode 100644 superset-frontend/cypress-base/cypress/e2e/explore/visualizations/_skip.table.test.ts
 delete mode 100644 superset-frontend/cypress-base/cypress/e2e/explore/visualizations/_skip.time_table.js
 delete mode 100644 superset-frontend/cypress-base/cypress/e2e/explore/visualizations/_skip.world_map.test.js
 create mode 100644 superset-frontend/playwright/embedded-app/index.html
 create mode 100644 superset-frontend/playwright/helpers/api/embedded.ts
 create mode 100644 superset-frontend/playwright/helpers/navigation.ts
 create mode 100644 superset-frontend/playwright/pages/EmbeddedPage.ts
 create mode 100644 superset-frontend/playwright/tests/embedded/embedded-dashboard.spec.ts
 create mode 100644 superset-frontend/plugins/plugin-chart-echarts/src/BigNumber/BigNumberViz.test.tsx
 create mode 100644 superset-frontend/src/chartCustomizations/components/DynamicGroupBy/controlPanel.test.ts
 create mode 100644 superset-frontend/src/chartCustomizations/components/TimeColumn/controlPanel.test.ts
 create mode 100644 superset-frontend/src/chartCustomizations/components/TimeGrain/controlPanel.test.ts
 create mode 100644 superset-frontend/src/components/ListView/CardSortSelect.test.tsx
 create mode 100644 superset-frontend/src/components/ListView/Filters/CompactFilterTrigger.test.tsx
 create mode 100644 superset-frontend/src/components/ListView/Filters/CompactFilterTrigger.tsx
 create mode 100644 superset-frontend/src/components/ListView/Filters/CompactSelectPanel.test.tsx
 create mode 100644 superset-frontend/src/components/ListView/Filters/CompactSelectPanel.tsx
 delete mode 100644 superset-frontend/src/components/ListView/Filters/DateRange.tsx
 create mode 100644 superset-frontend/src/components/ListView/Filters/FilterPopoverContent.test.tsx
 create mode 100644 superset-frontend/src/components/ListView/Filters/FilterPopoverContent.tsx
 delete mode 100644 superset-frontend/src/components/ListView/Filters/Select.test.tsx
 delete mode 100644 superset-frontend/src/components/ListView/Filters/Select.tsx
 create mode 100644 superset-frontend/src/components/ListView/Filters/TimeRange.test.tsx
 create mode 100644 superset-frontend/src/components/ListView/Filters/TimeRange.tsx
 create mode 100644 superset-frontend/src/dashboard/components/nativeFilters/FilterBar/UrlFilters/UrlFilterTag.tsx
 create mode 100644 superset-frontend/src/dashboard/components/nativeFilters/FilterBar/UrlFilters/Vertical.test.tsx
 create mode 100644 superset-frontend/src/dashboard/components/nativeFilters/FilterBar/UrlFilters/Vertical.tsx
 create mode 100644 superset-frontend/src/dashboard/components/nativeFilters/FilterBar/UrlFilters/VerticalCollapse.tsx
 create mode 100644 superset-frontend/src/dashboard/components/nativeFilters/FilterBar/UrlFilters/urlFilterUtils.ts
 create mode 100644 superset-frontend/src/dashboard/util/UrlFilters.scope.test.ts
 create mode 100644 superset-frontend/src/dashboard/util/risonFilters.test.ts
 create mode 100644 superset-frontend/src/dashboard/util/risonFilters.ts
 create mode 100644 superset-frontend/src/features/databases/DatabaseModal/DatabaseConnectionForm/DatabaseConnectionForm.test.tsx
 create mode 100644 superset-frontend/src/features/databases/DatabaseModal/DatabaseConnectionForm/TableCatalog.test.tsx
 create mode 100644 superset-frontend/src/features/semanticLayers/MultiEnumControl.test.tsx
 create mode 100644 superset-frontend/src/filters/components/Range/controlPanel.test.ts
 create mode 100644 superset/commands/restore.py
 copy superset/{translations/requirements.txt => daos/role.py} (74%)
 copy {superset-core/src/superset_core/common => superset/mcp_service/action_log}/__init__.py (100%)
 create mode 100644 superset/mcp_service/action_log/schemas.py
 copy superset/{translations/requirements.txt => mcp_service/action_log/tool/__init__.py} (82%)
 create mode 100644 superset/mcp_service/action_log/tool/get_action_log_info.py
 create mode 100644 superset/mcp_service/action_log/tool/list_action_logs.py
 copy {superset-core/src/superset_core/common => superset/mcp_service/annotation_layer}/__init__.py (100%)
 create mode 100644 superset/mcp_service/annotation_layer/schemas.py
 copy superset/mcp_service/{dashboard => annotation_layer}/tool/__init__.py (68%)
 create mode 100644 superset/mcp_service/annotation_layer/tool/get_annotation_layer_info.py
 create mode 100644 superset/mcp_service/annotation_layer/tool/get_layer_annotation_info.py
 create mode 100644 superset/mcp_service/annotation_layer/tool/list_annotation_layers.py
 create mode 100644 superset/mcp_service/annotation_layer/tool/list_layer_annotations.py
 copy {superset-core/src/superset_core/common => superset/mcp_service/css_template}/__init__.py (100%)
 create mode 100644 superset/mcp_service/css_template/schemas.py
 copy superset/{translations/requirements.txt => mcp_service/css_template/tool/__init__.py} (81%)
 create mode 100644 superset/mcp_service/css_template/tool/get_css_template_info.py
 create mode 100644 superset/mcp_service/css_template/tool/list_css_templates.py
 create mode 100644 superset/mcp_service/dashboard/tool/get_dashboard_layout.py
 copy {superset-core/src/superset_core/common => superset/mcp_service/plugin}/__init__.py (100%)
 copy superset/{translations/requirements.txt => mcp_service/plugin/dao.py} (83%)
 create mode 100644 superset/mcp_service/plugin/schemas.py
 copy superset/{translations/requirements.txt => mcp_service/plugin/tool/__init__.py} (84%)
 create mode 100644 superset/mcp_service/plugin/tool/get_plugin_info.py
 create mode 100644 superset/mcp_service/plugin/tool/list_plugins.py
 copy {superset-core/src/superset_core/common => superset/mcp_service/query}/__init__.py (100%)
 create mode 100644 superset/mcp_service/query/schemas.py
 copy superset/{translations/requirements.txt => mcp_service/query/tool/__init__.py} (84%)
 create mode 100644 superset/mcp_service/query/tool/get_query_info.py
 create mode 100644 superset/mcp_service/query/tool/list_queries.py
 copy {superset-core/src/superset_core/common => superset/mcp_service/report}/__init__.py (100%)
 copy superset/mcp_service/{database => report}/schemas.py (53%)
 copy superset/{translations/requirements.txt => mcp_service/report/tool/__init__.py} (84%)
 create mode 100644 superset/mcp_service/report/tool/get_report_info.py
 create mode 100644 superset/mcp_service/report/tool/list_reports.py
 copy {superset-core/src/superset_core/common => superset/mcp_service/rls}/__init__.py (100%)
 create mode 100644 superset/mcp_service/rls/schemas.py
 copy superset/{translations/requirements.txt => mcp_service/rls/tool/__init__.py} (82%)
 create mode 100644 superset/mcp_service/rls/tool/get_rls_filter_info.py
 create mode 100644 superset/mcp_service/rls/tool/list_rls_filters.py
 copy {superset-core/src/superset_core/common => superset/mcp_service/role}/__init__.py (100%)
 create mode 100644 superset/mcp_service/role/schemas.py
 copy superset/{translations/requirements.txt => mcp_service/role/tool/__init__.py} (85%)
 create mode 100644 superset/mcp_service/role/tool/get_role_info.py
 create mode 100644 superset/mcp_service/role/tool/list_roles.py
 copy {superset-core/src/superset_core/common => superset/mcp_service/saved_query}/__init__.py (100%)
 create mode 100644 superset/mcp_service/saved_query/schemas.py
 copy superset/{translations/requirements.txt => mcp_service/saved_query/tool/__init__.py} (81%)
 create mode 100644 superset/mcp_service/saved_query/tool/get_saved_query_info.py
 create mode 100644 superset/mcp_service/saved_query/tool/list_saved_queries.py
 copy {superset-core/src/superset_core/common => superset/mcp_service/tag}/__init__.py (100%)
 create mode 100644 superset/mcp_service/tag/schemas.py
 copy superset/{translations/requirements.txt => mcp_service/tag/tool/__init__.py} (86%)
 create mode 100644 superset/mcp_service/tag/tool/get_tag_info.py
 create mode 100644 superset/mcp_service/tag/tool/list_tags.py
 copy {superset-core/src/superset_core/common => superset/mcp_service/task}/__init__.py (100%)
 create mode 100644 superset/mcp_service/task/schemas.py
 copy superset/{translations/requirements.txt => mcp_service/task/tool/__init__.py} (85%)
 create mode 100644 superset/mcp_service/task/tool/get_task_info.py
 create mode 100644 superset/mcp_service/task/tool/list_tasks.py
 copy {superset-core/src/superset_core/common => superset/mcp_service/theme}/__init__.py (100%)
 create mode 100644 superset/mcp_service/theme/schemas.py
 copy superset/{translations/requirements.txt => mcp_service/theme/tool/__init__.py} (85%)
 create mode 100644 superset/mcp_service/theme/tool/get_theme_info.py
 create mode 100644 superset/mcp_service/theme/tool/list_themes.py
 copy {superset-core/src/superset_core/common => superset/mcp_service/user}/__init__.py (100%)
 create mode 100644 superset/mcp_service/user/schemas.py
 copy superset/{translations/requirements.txt => mcp_service/user/tool/__init__.py} (85%)
 create mode 100644 superset/mcp_service/user/tool/get_user_info.py
 create mode 100644 superset/mcp_service/user/tool/list_users.py
 create mode 100644 superset/translations/fi/LC_MESSAGES/messages.po
 create mode 100644 superset/translations/th/LC_MESSAGES/messages.po
 create mode 100644 superset/utils/rison_filters.py
 create mode 100644 tests/unit_tests/commands/chart/update_test.py
 create mode 100644 tests/unit_tests/commands/importers/v1/test_find_existing_for_import.py
 create mode 100644 tests/unit_tests/commands/importers/v1/utils_test.py
 create mode 100644 tests/unit_tests/commands/test_base_restore_command.py
 create mode 100644 tests/unit_tests/daos/test_base_dao_soft_delete.py
 copy {superset-core/src/superset_core/common => tests/unit_tests/mcp_service/action_log}/__init__.py (100%)
 copy {superset-core/src/superset_core/common => tests/unit_tests/mcp_service/action_log/tool}/__init__.py (100%)
 create mode 100644 tests/unit_tests/mcp_service/action_log/tool/test_action_log_tools.py
 copy {superset-core/src/superset_core/common => tests/unit_tests/mcp_service/annotation_layer}/__init__.py (100%)
 copy {superset-core/src/superset_core/common => tests/unit_tests/mcp_service/annotation_layer/tool}/__init__.py (100%)
 create mode 100644 tests/unit_tests/mcp_service/annotation_layer/tool/test_annotation_layer_tools.py
 copy {superset-core/src/superset_core/common => tests/unit_tests/mcp_service/css_template}/__init__.py (100%)
 copy {superset-core/src/superset_core/common => tests/unit_tests/mcp_service/css_template/tool}/__init__.py (100%)
 create mode 100644 tests/unit_tests/mcp_service/css_template/tool/test_css_template_tools.py
 create mode 100644 tests/unit_tests/mcp_service/dashboard/tool/test_get_dashboard_layout.py
 copy {superset-core/src/superset_core/common => tests/unit_tests/mcp_service/plugin}/__init__.py (100%)
 copy {superset-core/src/superset_core/common => tests/unit_tests/mcp_service/plugin/tool}/__init__.py (100%)
 create mode 100644 tests/unit_tests/mcp_service/plugin/tool/test_plugin_tools.py
 copy {superset-core/src/superset_core/common => tests/unit_tests/mcp_service/query}/__init__.py (100%)
 copy {superset-core/src/superset_core/common => tests/unit_tests/mcp_service/query/tool}/__init__.py (100%)
 create mode 100644 tests/unit_tests/mcp_service/query/tool/test_query_tools.py
 copy {superset-core/src/superset_core/common => tests/unit_tests/mcp_service/report}/__init__.py (100%)
 copy {superset-core/src/superset_core/common => tests/unit_tests/mcp_service/report/tool}/__init__.py (100%)
 create mode 100644 tests/unit_tests/mcp_service/report/tool/test_report_tools.py
 copy {superset-core/src/superset_core/common => tests/unit_tests/mcp_service/rls}/__init__.py (100%)
 copy {superset-core/src/superset_core/common => tests/unit_tests/mcp_service/rls/tool}/__init__.py (100%)
 create mode 100644 tests/unit_tests/mcp_service/rls/tool/test_rls_tools.py
 copy {superset-core/src/superset_core/common => tests/unit_tests/mcp_service/role}/__init__.py (100%)
 copy {superset-core/src/superset_core/common => tests/unit_tests/mcp_service/role/tool}/__init__.py (100%)
 create mode 100644 tests/unit_tests/mcp_service/role/tool/test_role_tools.py
 copy {superset-core/src/superset_core/common => tests/unit_tests/mcp_service/saved_query}/__init__.py (100%)
 copy {superset-core/src/superset_core/common => tests/unit_tests/mcp_service/saved_query/tool}/__init__.py (100%)
 create mode 100644 tests/unit_tests/mcp_service/saved_query/tool/test_saved_query_tools.py
 copy {superset-core/src/superset_core/common => tests/unit_tests/mcp_service/tag}/__init__.py (100%)
 copy {superset-core/src/superset_core/common => tests/unit_tests/mcp_service/tag/tool}/__init__.py (100%)
 create mode 100644 tests/unit_tests/mcp_service/tag/tool/test_tag_tools.py
 copy {superset-core/src/superset_core/common => tests/unit_tests/mcp_service/task}/__init__.py (100%)
 copy {superset-core/src/superset_core/common => tests/unit_tests/mcp_service/task/tool}/__init__.py (100%)
 create mode 100644 tests/unit_tests/mcp_service/task/tool/test_task_tools.py
 create mode 100644 tests/unit_tests/mcp_service/test_jwt_verifier_browser_hello.py
 copy {superset-core/src/superset_core/common => tests/unit_tests/mcp_service/theme}/__init__.py (100%)
 copy {superset-core/src/superset_core/common => tests/unit_tests/mcp_service/theme/tool}/__init__.py (100%)
 create mode 100644 tests/unit_tests/mcp_service/theme/tool/test_theme_tools.py
 copy {superset-core/src/superset_core/common => tests/unit_tests/mcp_service/user}/__init__.py (100%)
 copy {superset-core/src/superset_core/common => tests/unit_tests/mcp_service/user/tool}/__init__.py (100%)
 create mode 100644 tests/unit_tests/mcp_service/user/tool/test_user_tools.py
 create mode 100644 tests/unit_tests/models/test_soft_delete_mixin.py
 copy {superset-core/src/superset_core/common => tests/unit_tests/scripts/translations}/__init__.py (100%)
 create mode 100644 tests/unit_tests/scripts/translations/backfill_po_test.py
 create mode 100644 tests/unit_tests/scripts/translations/build_translation_index_test.py
 create mode 100644 tests/unit_tests/utils/profiler_test.py
 create mode 100644 tests/unit_tests/utils/test_rison_filters.py
 create mode 100644 tests/unit_tests/views/test_soft_delete_filter.py