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 23:54:24 UTC

(superset) branch fix/chart-export-filename-sanitization updated (137a3e66bdb -> f88c2820c50)

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

rusackas pushed a change to branch fix/chart-export-filename-sanitization
in repository https://gitbox.apache.org/repos/asf/superset.git


    from 137a3e66bdb fix(charts): sanitize user-supplied export filename
     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 8508af3201c chore(key_value): prune expired entries from the key-value store (#40663)
     add a9df2c7e5ea fix(mcp): address post-approval review feedback on auth logging PR #40646 (#40684)
     add 3e589436fa6 fix(reports): sanitize error text in email notification template (#40641)
     add 6eaee211aad fix(sqllab): require dataset match for raw query access (#40409)
     add 17d1a45bc94 feat(ydb): switch to native YDB sqlglot dialect (#40170)
     add 8c62f533d7c fix(core): restrict allowed CSS properties in sanitized HTML (#40627)
     add 6abee0289b8 fix(reports): guard SUCCESS-state report execution against duplicate sends and stuck WORKING state (#40657)
     add 9af6746dbe1 fix(models): HTML-escape data-controlled values in dashboard_link and Slice.icons (#40639)
     add a2a369cb5c8 fix(charts): sanitize tooltip HTML across nvd3, rose and partition plugins (#40502)
     add 3bbb35e8a33 ci(bashlib): drop the dead bc-based NONCE (perf + reliability) (#40691)
     add f88c2820c50 Merge branch 'master' into fix/chart-export-filename-sanitization

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                       |   145 +-
 .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                                        |    10 +
 .../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                                     |    29 +-
 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-ui-core/src/utils/html.test.tsx       |    29 +
 .../packages/superset-ui-core/src/utils/html.tsx   |    46 +-
 .../superset-ui-core/test/utils/tooltip.test.ts    |    21 +-
 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-partition/src/Partition.ts |     3 +-
 .../plugins/legacy-plugin-chart-rose/src/Rose.ts   |    13 +-
 .../legacy-plugin-chart-world-map/src/WorldMap.ts  |     5 +-
 .../test/WorldMap.test.ts                          |    57 +-
 .../plugins/legacy-preset-chart-nvd3/src/utils.ts  |    33 +-
 .../legacy-preset-chart-nvd3/test/utils.test.ts    |    95 +
 .../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                |    83 +-
 superset/commands/restore.py                       |    98 +
 superset/common/query_context_processor.py         |    13 +
 superset/common/utils/query_cache_manager.py       |    21 +-
 superset/config.py                                 |    14 +-
 superset/constants.py                              |     4 +
 superset/daos/base.py                              |    92 +-
 superset/daos/database.py                          |     8 +-
 superset/daos/key_value.py                         |    32 +
 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/db_engine_specs/ydb.py                    |     2 +-
 superset/extensions/metadb.py                      |    11 +-
 superset/initialization/__init__.py                |    75 +-
 .../key_value/commands}/__init__.py                |     0
 superset/key_value/commands/prune.py               |   143 +
 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 +-
 superset/mcp_service/chart/validation/pipeline.py  |     6 +-
 .../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/dashboard.py                       |     5 +-
 superset/models/helpers.py                         |   275 +-
 superset/models/slice.py                           |     8 +-
 superset/models/sql_lab.py                         |    10 +-
 superset/reports/notifications/email.py            |     8 +-
 superset/result_set.py                             |     4 +-
 superset/security/analytics_db_safety.py           |     4 +
 superset/security/manager.py                       |   195 +-
 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                              |    68 +-
 superset/sql_lab.py                                |     6 +-
 superset/sqllab/validators.py                      |     6 +-
 superset/tasks/scheduler.py                        |    16 +
 .../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/security_tests.py          |   250 +
 tests/integration_tests/sqllab_tests.py            |    34 +-
 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   |   128 +-
 .../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 +
 tests/unit_tests/key_value/prune_test.py           |   168 +
 .../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/dashboard_test.py          |    52 +
 tests/unit_tests/models/slice_test.py              |    25 +-
 tests/unit_tests/models/test_soft_delete_mixin.py  |   566 +
 .../reports/notifications/email_tests.py           |    35 +
 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                |    44 +
 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 +
 629 files changed, 152964 insertions(+), 23210 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/key_value/commands}/__init__.py (100%)
 create mode 100644 superset/key_value/commands/prune.py
 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
 create mode 100644 tests/unit_tests/key_value/prune_test.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/dashboard_test.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