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

(superset) branch fix/report-email-error-sanitization updated (b81beef6cb9 -> ff7f311ca0a)

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

rusackas pushed a change to branch fix/report-email-error-sanitization
in repository https://gitbox.apache.org/repos/asf/superset.git


    omit b81beef6cb9 fix(reports): sanitize error text in email notification template
     add ce9cab098fd feat(mcp): chart formatting options across all supported chart types (#39887)
     add e3711bec391 fix(recommandation): Fix chart recommandation (#39886)
     add d1d07112aa4 feat(mcp): add find_users tool and owner filter columns for listings (#39679)
     add 2f5fcc21f92 fix(semantic layers): coerce filter types (#40222)
     add 2f95d288dd7 fix(mcp): eager-load dataset.metrics to prevent Excel export DetachedInstanceError (#39483)
     add 53d8e5bdfa8 feat(mcp): include applied dashboard filters in get_chart_info (#39620)
     add 4c3f65ef0b4 feat(mcp): make config optional in generate_explore_link (#39559)
     add f187a8e1c41 fix(reports): guard null dashboard height in Playwright screenshots (#40179)
     add 73f66e4c141 fix(datasets): isolate filter state to fix concurrent /dataset race (#39685)
     add 5526464def7 fix(frontend): update safeStringify to surface [Circular] and DRY plugin code (#39156)
     add b8b91574e0e fix(view query): Update style for code viewer container (#39635)
     add 89c2a474334 fix(TableView): reset pagination when data reduces below current page (#34562)
     add 8b483f320e9 chore(deps): bump fs-extra from 11.3.2 to 11.3.5 in /superset-frontend (#40325)
     add bc26006a43d chore(deps-dev): update sqlalchemy-drill requirement from <2,>=1.1.4 to >=1.1.10,<2 (#40310)
     add f09fd63495a chore(deps): bump @googleapis/sheets from 13.0.1 to 13.0.2 in /superset-frontend (#40324)
     add dcef6f8a41c chore(deps): bump react-map-gl from 8.1.0 to 8.1.1 in /superset-frontend (#40322)
     add 48cb3f5885c chore(deps-dev): bump baseline-browser-mapping from 2.10.29 to 2.10.31 in /superset-frontend (#40320)
     add e25d7081979 fix(mcp): hide write tools from users without write permissions (#40098)
     add ac035083d75 feat(path): support metric-based color scales & line width by metric (#39165)
     add 5966bb1c1ef feat(mcp): add series_limit to generate_chart XY config (#40307)
     add 558ff4452b8 fix(preview): fix chart preview bugs (#40063)
     add 55491006016 feat(i18n): add missing Slovak translations (#40219)
     add a94edfe4187 fix(i18n): add Slovenian translation for 'Range type' in DateFilter (#40287)
     add f7f6c29adf0 chore(deps-dev): bump webpack from 5.106.2 to 5.107.1 in /superset-frontend (#40370)
     add 8e98ca65691 docs: expand out-of-scope vulnerability definitions (#40332)
     add 31087177ab3 chore(deps-dev): bump webpack from 5.107.0 to 5.107.1 in /docs (#40364)
     add f4af6a2caf0 fix(docker): add missing `service-worker.js` into built container image (#39596)
     add 64f0e88de79 chore(backend/build): upgrade Gunicorn from v22 to v25 (#38788)
     add df8222ffcd2 chore(deps-dev): bump ts-jest from 29.4.10 to 29.4.11 in /superset-frontend (#40369)
     add b0d26196fc5 chore(deps-dev): bump @swc/plugin-emotion from 14.9.0 to 14.10.0 in /superset-frontend (#40368)
     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 052e567f775 fix: guard dynamic dispatch and bound a regex quantifier (#40547)
     add ca8855dc037 fix(mcp): generic auth errors, required token expiry, and safer auth logging (#40646)
     add aba6ea536cc fix(dashboard): prevent "undefined undefined" owner names in properties modal (#40528)
     add ddb647cd3ae fix(dashboard): clear undo history (#40569)
     add 88abd41c8b8 fix(sql-lab): prevent crash when host shell lacks useAppDispatch export (#40591)
     add 7275116f4cd fix(world-map): preserve bubbles and exclude only null metrics from color scale (#39926)
     add fc0245bdb06 fix(charts): show non-filterable columns in metric section for table … (#39524)
     add 699e741c69d fix(time-comparison): shift offset filter when X-axis is adhoc Custom SQL (#40586)
     add d26a7aac3dd fix(dashboard): hide Edit button in embedded dashboards (#40687)
     add 4996d7c277f fix: avoid warning spam when default spinner SVG is missing (#40481)
     add 093b43c7a58 fix(exports,email,logs): csv formula escaping, subject CRLF stripping, UTC log pruning (#40645)
     add 1632b235ae8 fix(sqllab): surface stacktrace in SQL Lab error responses (#28248) (#40585)
     add 24422c83114 test(histogram): metric filters require aggregation in buildQuery (#30330) (#40617)
     add 242c27a9743 test(presto): 401 Unauthorized must surface as CONNECTION_ACCESS_DENIED_ERROR (#33554) (#40618)
     add 1b8099811b8 fix(chart-list): sort by changed_on instead of last_saved_at (#39984)
     add d2d46169bf6 fix(explore): tighten popover title-to-tabs spacing to 12px (#40410)
     add 19c2b67d09a fix(websocket): validate last_id query param format (#40626)
     add 86fa5bb46f0 feat(table v2): agGridTableChart add row numer column (#39284)
     add 4d2b10d916e chore(excel): strip document metadata from Excel exports (#40661)
     add b97d3ef520b fix(api,sql): use json_response in Api.query and log dialect fallback (#40644)
     add 00dd31494d1 fix: sanitize URL sinks and trim sensitive log fields (#40546)
     add 616c2432780 fix(deps): revert joserfc JWT error migration — fastmcp still uses authlib (#40688)
     add 49f3dbba733 fix(dashboard): address post-approval review feedback on #40528 (#40685)
     add ff7f311ca0a fix(reports): sanitize error text in email notification template

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   (b81beef6cb9)
            \
             N -- N -- N   refs/heads/fix/report-email-error-sanitization (ff7f311ca0a)

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                                |    67 -
 .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 +-
 .pylintrc                                          |     2 +-
 AGENTS.md                                          |    38 +
 Dockerfile                                         |     4 +-
 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                                     |    27 +-
 requirements/base.txt                              |    18 +-
 requirements/development.txt                       |    41 +-
 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                |  1746 +-
 superset-frontend/package.json                     |    44 +-
 .../packages/superset-core/package.json            |     8 +-
 .../superset-core/src/theme/GlobalStyles.tsx       |    15 +
 .../src/operators/boxplotOperator.ts               |     2 +-
 .../packages/superset-ui-core/package.json         |     5 +-
 .../src/chart/components/SuperChart.tsx            |     1 +
 .../src/components/ListViewCard/index.tsx          |     3 +-
 .../src/components/Select/AsyncSelect.test.tsx     |   470 +
 .../src/components/Select/AsyncSelect.tsx          |   117 +-
 .../src/components/Select/utils.tsx                |     4 +
 .../src/components/TableView/TableView.test.tsx    |    34 +
 .../src/components/TableView/TableView.tsx         |    15 +
 .../src/connection/SupersetClientClass.ts          |     3 +-
 .../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 +
 .../legacy-plugin-chart-world-map/src/WorldMap.ts  |     5 +-
 .../test/WorldMap.test.ts                          |    57 +-
 .../src/AgGridTableChart.tsx                       |     4 +
 .../plugin-chart-ag-grid-table/src/consts.ts       |     2 +
 .../src/controlPanel.tsx                           |    18 +-
 .../src/styles/index.tsx                           |     6 +
 .../src/transformProps.ts                          |     2 +
 .../plugin-chart-ag-grid-table/src/types.ts        |     2 +
 .../src/utils/useColDefs.ts                        |    69 +-
 .../test/controlPanel.test.tsx                     |    71 +
 .../test/utils/useColDefs.test.ts                  |   240 +
 .../src/BigNumber/BigNumberViz.test.tsx            |    85 +
 .../src/BigNumber/BigNumberViz.tsx                 |     7 +-
 .../src/Funnel/transformProps.ts                   |     2 -
 .../src/Histogram/buildQuery.ts                    |    15 +-
 .../plugin-chart-echarts/src/Treemap/constants.ts  |     4 +-
 .../src/Treemap/transformProps.ts                  |     3 +-
 .../test/Funnel/transformProps.test.ts             |     9 +
 .../test/Histogram/buildQuery.test.ts              |    81 +
 .../test/Treemap/transformProps.test.ts            |    41 +
 .../src/plugin/controls/columns.tsx                |     8 +-
 .../src/plugin/controls/metrics.tsx                |     8 +-
 .../plugins/plugin-chart-pivot-table/package.json  |     2 +-
 .../plugin-chart-point-cluster-map/package.json    |     2 +-
 .../plugin-chart-table/src/controlPanel.tsx        |     6 +-
 .../plugin-chart-table/test/controlPanel.test.tsx  |    71 +
 .../src/layers/Path/Path.test.tsx                  |   525 +-
 .../preset-chart-deckgl/src/layers/Path/Path.tsx   |   108 +-
 .../src/layers/Path/buildQuery.test.ts             |   355 +
 .../src/layers/Path/buildQuery.ts                  |    66 +-
 .../src/layers/Path/controlPanel.test.ts           |   242 +
 .../src/layers/Path/controlPanel.ts                |    73 +-
 .../src/layers/Path/transformProps.test.ts         |   364 +
 .../src/layers/Path/transformProps.ts              |    65 +-
 .../src/utilities/Shared_DeckGL.tsx                |    35 +
 superset-frontend/spec/helpers/testing-library.tsx |    30 +
 .../src/SqlLab/components/EditorAutoSync/index.tsx |     2 +-
 .../src/SqlLab/components/EditorWrapper/index.tsx  |     2 +-
 .../SqlLab/components/EditorWrapper/useKeywords.ts |     2 +-
 .../components/ExploreCtasResultsButton/index.tsx  |     2 +-
 .../src/SqlLab/components/HighlightedSql/index.tsx |     9 +-
 .../src/SqlLab/components/PopEditorTab/index.tsx   |     2 +-
 .../SqlLab/components/QueryAutoRefresh/index.tsx   |     2 +-
 .../SqlLab/components/QueryLimitSelect/index.tsx   |     2 +-
 .../src/SqlLab/components/QueryTable/index.tsx     |     2 +-
 .../src/SqlLab/components/ResultSet/index.tsx      |     5 +-
 .../SqlLab/components/SaveDatasetModal/index.tsx   |     9 +-
 .../src/SqlLab/components/SouthPane/index.tsx      |     2 +-
 .../src/SqlLab/components/SqlEditor/index.tsx      |     2 +-
 .../SqlLab/components/SqlEditorLeftBar/index.tsx   |     2 +-
 .../SqlLab/components/SqlEditorTabHeader/index.tsx |     2 +-
 .../SqlEditorTopBar/useDatabaseSelector.ts         |     2 +-
 .../src/SqlLab/components/TableElement/index.tsx   |     2 +-
 .../SqlLab/components/TableExploreTree/index.tsx   |     2 +-
 .../components/TableExploreTree/useTreeData.ts     |     2 +-
 .../src/SqlLab/components/TablePreview/index.tsx   |     2 +-
 .../hooks/useAppDispatch.ts}                       |    16 +-
 .../hooks/useAppSelector.ts}                       |    12 +-
 .../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 +
 .../DatasourceEditor/DatasourceEditor.tsx          |     3 +-
 .../src/components/GenericLink/index.tsx           |     4 +-
 .../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 +-
 .../dashboard/components/Header/Header.test.tsx    |    15 +
 .../src/dashboard/components/Header/index.tsx      |     3 +-
 .../dashboard/components/PropertiesModal/index.tsx |    20 +-
 .../PropertiesModal/sections/AccessSection.tsx     |     6 +-
 .../components/PropertiesModal/utils.test.ts       |    90 +
 .../dashboard/components/PropertiesModal/utils.ts  |    81 +
 .../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 +-
 .../dashboard/containers/DashboardPage.test.tsx    |    35 +
 .../src/dashboard/containers/DashboardPage.tsx     |    71 +
 .../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 +-
 .../ExploreChartHeader/ExploreChartHeader.test.tsx |    53 +-
 .../controls/ControlPopover/ControlPopover.tsx     |     1 +
 .../controls/DateFilterControl/DateFilterLabel.tsx |     6 +-
 ...AdhocFilterEditPopoverSimpleTabContent.test.tsx |    64 +
 .../index.tsx                                      |    91 +-
 .../src/explore/components/controls/ViewQuery.tsx  |     9 +-
 .../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/SqlAlchemyForm.tsx     |     5 +-
 .../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 +
 superset-frontend/src/middleware/asyncEvent.ts     |     7 +-
 .../pages/ChartList/ChartList.listview.test.tsx    |     5 +-
 .../src/pages/ChartList/ChartList.test.tsx         |     9 +-
 superset-frontend/src/pages/ChartList/index.tsx    |     4 +-
 .../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/getOwnerName.test.ts   |    12 +
 superset-frontend/src/utils/getOwnerName.ts        |     5 +-
 superset-frontend/src/utils/navigationUtils.ts     |    11 +-
 superset-frontend/src/utils/pathUtils.test.ts      |    14 +
 superset-frontend/src/utils/pathUtils.ts           |    11 +-
 superset-frontend/src/utils/safeStringify.test.ts  |    26 +-
 superset-frontend/src/utils/safeStringify.ts       |    16 +-
 superset-frontend/webpack.proxy-config.js          |     1 +
 superset-websocket/package-lock.json               |   302 +-
 superset-websocket/package.json                    |    12 +-
 superset-websocket/spec/index.test.ts              |    54 +
 superset-websocket/src/index.ts                    |    25 +-
 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/logs/prune.py                    |     5 +-
 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                   |    12 +-
 superset/db_engine_specs/bigquery.py               |   109 +-
 superset/db_engine_specs/presto.py                 |     6 +
 superset/initialization/__init__.py                |    75 +-
 superset/mcp_service/__main__.py                   |    34 +-
 .../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 +
 .../{system => annotation_layer}/tool/__init__.py  |    18 +-
 .../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                        |   212 +-
 superset/mcp_service/auth.py                       |   231 +-
 superset/mcp_service/chart/chart_helpers.py        |   135 +-
 superset/mcp_service/chart/chart_utils.py          |   150 +-
 superset/mcp_service/chart/schemas.py              |   476 +-
 superset/mcp_service/chart/tool/generate_chart.py  |    25 +-
 superset/mcp_service/chart/tool/get_chart_data.py  |   214 +-
 superset/mcp_service/chart/tool/get_chart_info.py  |   105 +-
 .../mcp_service/chart/tool/get_chart_preview.py    |   111 +-
 superset/mcp_service/chart/tool/list_charts.py     |     7 +-
 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    |   182 +-
 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          |   315 +-
 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 +
 .../mcp_service/dashboard/tool/list_dashboards.py  |     9 +-
 superset/mcp_service/database/schemas.py           |    23 +-
 superset/mcp_service/dataset/schemas.py            |    30 +-
 superset/mcp_service/dataset/tool/list_datasets.py |     7 +-
 .../explore/tool/generate_explore_link.py          |    41 +-
 superset/mcp_service/jwt_verifier.py               |   336 +-
 superset/mcp_service/mcp_config.py                 |     6 +-
 superset/mcp_service/mcp_core.py                   |    77 +-
 superset/mcp_service/middleware.py                 |   173 +-
 .../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                    |    14 +-
 .../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    |   217 +-
 .../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                     |   120 +-
 superset/mcp_service/sql_lab/schemas.py            |    21 +-
 .../sql_lab/tool/open_sql_lab_with_context.py      |     7 +-
 superset/mcp_service/storage.py                    |     4 +-
 superset/mcp_service/system/schemas.py             |    84 +-
 superset/mcp_service/system/tool/__init__.py       |     2 +
 superset/mcp_service/system/tool/find_users.py     |   101 +
 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/error_sanitization.py   |    44 +-
 superset/mcp_service/utils/response_utils.py       |    11 +
 superset/mcp_service/utils/sanitization.py         |   139 +-
 superset/models/core.py                            |    71 +-
 superset/models/helpers.py                         |   275 +-
 superset/result_set.py                             |     4 +-
 superset/security/analytics_db_safety.py           |     4 +
 superset/security/manager.py                       |    67 +-
 superset/semantic_layers/mapper.py                 |   192 +-
 superset/sql/dialects/db2.py                       |     6 +
 superset/sql/dialects/dremio.py                    |     6 +-
 superset/sql/dialects/firebolt.py                  |    11 +-
 superset/sql/execution/celery_task.py              |     6 +-
 superset/sql/parse.py                              |    42 +-
 superset/sql_lab.py                                |     6 +-
 .../templates/superset}/loading.svg                |   Bin
 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   | 11576 ++++---
 superset/translations/sl/LC_MESSAGES/messages.po   |  1778 +-
 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/core.py                             |     3 +
 superset/utils/csv.py                              |     7 +-
 superset/utils/excel.py                            |    24 +
 superset/utils/rison_filters.py                    |   274 +
 superset/utils/webdriver.py                        |    13 +-
 superset/views/api.py                              |     2 +-
 superset/views/base.py                             |    45 +-
 superset/views/base_api.py                         |    30 +
 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 +
 .../unit_tests/commands/logs}/__init__.py          |     0
 tests/unit_tests/commands/logs/prune_test.py       |    54 +
 tests/unit_tests/commands/report/execute_test.py   |    92 +-
 .../commands/test_base_restore_command.py          |   187 +
 .../common/test_query_context_processor.py         |   215 +
 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 +
 tests/unit_tests/datasets/api_tests.py             |    43 +
 .../datasets/commands/importers/v1/import_test.py  |   231 +
 tests/unit_tests/db_engine_specs/test_bigquery.py  |   132 +-
 tests/unit_tests/db_engine_specs/test_presto.py    |    24 +
 .../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        |   295 +
 .../mcp_service/chart/test_chart_utils.py          |   268 +-
 .../mcp_service/chart/test_new_chart_types.py      |   286 +
 .../mcp_service/chart/tool/test_generate_chart.py  |    90 +
 .../mcp_service/chart/tool/test_get_chart_data.py  |   285 +
 .../mcp_service/chart/tool/test_get_chart_info.py  |   243 +-
 .../chart/tool/test_get_chart_preview.py           |   115 +-
 .../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 +
 .../mcp_service/dataset/tool/test_dataset_tools.py |    18 +-
 .../explore/tool/test_generate_explore_link.py     |    46 +
 .../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_find_users.py     |   257 +
 .../system/tool/test_get_current_user.py           |    66 +-
 .../mcp_service/system/tool/test_get_schema.py     |   250 +-
 .../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 +
 tests/unit_tests/mcp_service/test_auth_api_key.py  |     6 +-
 tests/unit_tests/mcp_service/test_auth_rbac.py     |   120 +
 .../mcp_service/test_auth_user_resolution.py       |    70 +-
 tests/unit_tests/mcp_service/test_jwt_verifier.py  |    72 +-
 .../mcp_service/test_jwt_verifier_browser_hello.py |   126 +
 .../mcp_service/test_mcp_tool_registration.py      |   138 +-
 tests/unit_tests/mcp_service/test_middleware.py    |   208 +-
 .../mcp_service/test_middleware_logging.py         |   181 +-
 .../mcp_service/test_tool_search_transform.py      |    30 +-
 .../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_error_sanitization.py   |    70 +
 .../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/semantic_layers/mapper_test.py    |   372 +-
 tests/unit_tests/sql/execution/test_celery_task.py |    60 +
 tests/unit_tests/sql/parse_tests.py                |    20 +
 tests/unit_tests/test_sqllab_error_stacktrace.py   |   282 +
 tests/unit_tests/utils/csv_tests.py                |    40 +
 tests/unit_tests/utils/excel_tests.py              |    37 +-
 tests/unit_tests/utils/profiler_test.py            |    74 +
 tests/unit_tests/utils/test_core.py                |    41 +
 tests/unit_tests/utils/test_rison_filters.py       |   183 +
 tests/unit_tests/utils/webdriver_test.py           |    87 +
 tests/unit_tests/views/test_base.py                |    34 +
 tests/unit_tests/views/test_base_theme_helpers.py  |    56 +-
 tests/unit_tests/views/test_soft_delete_filter.py  |   356 +
 604 files changed, 151729 insertions(+), 23112 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/plugins/plugin-chart-echarts/test/Histogram/buildQuery.test.ts
 create mode 100644 superset-frontend/plugins/preset-chart-deckgl/src/layers/Path/buildQuery.test.ts
 create mode 100644 superset-frontend/plugins/preset-chart-deckgl/src/layers/Path/controlPanel.test.ts
 create mode 100644 superset-frontend/plugins/preset-chart-deckgl/src/layers/Path/transformProps.test.ts
 copy superset-frontend/src/{utils/getOwnerName.ts => SqlLab/hooks/useAppDispatch.ts} (56%)
 copy superset-frontend/src/{utils/getOwnerName.ts => SqlLab/hooks/useAppSelector.ts} (70%)
 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/PropertiesModal/utils.test.ts
 create mode 100644 superset-frontend/src/dashboard/components/PropertiesModal/utils.ts
 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/{system => 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 (54%)
 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
 create mode 100644 superset/mcp_service/system/tool/find_users.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
 copy {superset-frontend/packages/superset-ui-core/src/components/assets/images => superset/templates/superset}/loading.svg (100%)
 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
 copy {superset-core/src/superset_core/common => tests/unit_tests/commands/logs}/__init__.py (100%)
 create mode 100644 tests/unit_tests/commands/logs/prune_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
 create mode 100644 tests/unit_tests/mcp_service/system/tool/test_find_users.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/mcp_service/utils/test_error_sanitization.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/test_sqllab_error_stacktrace.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