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/07/21 18:27:37 UTC
(superset) branch fix/followup-41199-follow-up-from-41199-fix-sqllab-quote-au updated (94a8933c235 -> e9455ed993f)
This is an automated email from the ASF dual-hosted git repository.
rusackas pushed a change to branch fix/followup-41199-follow-up-from-41199-fix-sqllab-quote-au
in repository https://gitbox.apache.org/repos/asf/superset.git
discard 94a8933c235 fix(sqllab): include engine_information in sqllab bootstrap DATABASE_KEYS
discard 3da2eaa41a4 fix: correct Google Sheets identifier_quote expectation, add type hints
discard 8228fea22a1 test: fix test_available expectations for identifier_quote
discard a8a799e4f0f refactor(sqllab): move identifier quoting to the database engine spec
discard 403e581cf74 fix(sqllab): dialect-specific quoting for autocomplete identifiers
add 21999bb7727 fix(i18n): repair corrupted Romanian catalog so it parses again (#41467)
add cd8ac41d169 fix(datasource): validate expressions through the shared adhoc-expression checks (#41427)
add 3eb91855212 fix(viz): use series_limit/series_limit_metric in query_obj dict (#41002)
add 5ec09318408 fix(pandas_postprocessing): pass string operator names to GroupBy.agg to avoid FutureWarning (#41025)
add 97cb002f46b fix(a11y): propagate tooltip string as aria-label on IconTooltip button (#41493)
add 7587d0778a0 chore(ci): correct actions/cache version comment to v5.0.5 (#41484)
add 78dd400ca43 chore(ci): correct actions/cache version comment to match pinned SHA (#41483)
add b8fd2e9725c feat(websocket,embedded-sdk): replace Jest with modern Vitest (#38308)
add 25c9f3510ab test(mcp): set embedded on update_dashboard test mock (#41495)
add d0268442f8b chore(ci): correct actions/cache pin comment to actual version v5.0.5 (#41482)
add ccbd2842454 chore(deps): bump actions/checkout from 6.0.3 to 7.0.0 (#41447)
add 7fc1113c316 fix(telemetry): use Scarf static pixel instead of gateway redirect (#41129)
add 670f25e5f45 chore(lint): convert explore controls, SqlLab, and misc components to function components (#39461)
add a70d0556698 feat(helm): use env redis_driver, render additional deployment pod spec (#26040)
add 7d5e01b6cfb chore(deps-dev): update taospy requirement from >=2.7.21 to >=2.8.9 (#41481)
add 98d61c5cf89 chore(deps-dev): bump duckdb from 1.5.3 to 1.5.4 (#41480)
add c3a11e31707 chore(deps): bump sqlalchemy-utils from 0.42.0 to 0.42.1 (#41478)
add efed2b09aa3 chore(deps-dev): bump @types/node from 25.9.3 to 26.0.0 in /superset-frontend (#41451)
add b2a26988987 chore: unify Node version (#41500)
add 6eb51105d01 refactor: update SQLAlchemy case() syntax to 2.0 (#40275)
add 0c12114ea92 fix(explore): stop metric edits from bleeding across metrics with duplicate optionNames (#41208)
add a529945d3b7 fix(reports): commit permalink before Playwright navigation (#41051)
add 90fe1f5b7c4 fix(auth): redirect to login on failure to access dashboard permalink (#40769)
add 825b5828151 fix(mixed-chart): preserve order_desc and series_limit_metric in buildQuery (#41401)
add 797e497f4b3 fix(dashboard): suppress favorite status error toast on 404 (#41402)
add 7926c3a93aa fix(sqllab): preserve query history after tab migration (#41403)
add 1b7b9ce9485 fix(tags): remove unsatisfiable foreign keys from tagged_object.object_id (#41126)
add 9dba4d090f7 fix(explore): hide inactive result tables in mixed chart view as table (#37777)
add a4d5b15955d fix(slack): support org-scoped tokens on Enterprise Grid via SLACK_TE… (#41473)
add 7edae0817ca chore(deps): bump zizmorcore/zizmor-action from 0.5.6 to 0.5.7 (#41519)
add d2daf84fd9b chore(deps): bump uuid from 14.0.0 to 14.0.1 in /superset-frontend (#41524)
add 5b17c5b2dfc chore(deps): stop Dependabot from opening Babel 8 major bumps (#41534)
add 0370ac8607b chore(deps-dev): bump unzipper from 0.12.3 to 0.12.5 in /superset-frontend (#41523)
add e807e66a3e9 chore(deps-dev): bump timezone-mock from 1.4.2 to 1.4.3 in /superset-frontend (#41521)
add e236d831fd5 chore(deps): bump antd from 6.4.4 to 6.4.5 in /docs (#41518)
add 43383752672 chore(deps): bump nanoid from 5.1.14 to 5.1.15 in /superset-frontend (#41517)
add f95ebed8ba7 fix: apply object access checks in tag bulk_create and update commands (#41457)
add a8045d7f65d chore(deps-dev): bump @swc/plugin-emotion from 14.13.0 to 14.14.0 in /superset-frontend (#41515)
add 28f6e1e0232 chore(deps-dev): bump @types/node from 25.9.4 to 26.0.0 in /superset-websocket (#41514)
add 7dcb98e4d27 chore(deps-dev): bump vite from 8.0.14 to 8.1.0 in /superset-embedded-sdk (#41507)
add d42076d541b fix(tags): make favorite star toggle in Tags list view (#41460)
add 725265502f4 perf(frontend): migrate lodash imports to lodash-es for tree-shaking (#41511)
add 07abda50c5a chore(ci): prune orphaned showtime labels in daily cleanup (#41464)
add 16a3405e3c1 fix(i18n): skip unparseable catalogs when building translation index (#41465)
add 11a4a17dffc fix(frontend): finish sentence-case conversion for time range buttons (#41488)
add adc03ce5258 refactor: make import/expression layer SQLAlchemy 2.0-compatible (#41179)
add 134919ea36d fix(screenshots): catch empty-bytes tiled result and set ERROR on falsy image (#41097)
add b89b6131492 chore(deps): bump slack-sdk from 3.35.0 to 3.42.0 (#41537)
add fbe500349d8 chore(deps): bump selenium from 4.44.0 to 4.45.0 (#41475)
add b32c96733b5 chore(deps-dev): bump fast-uri from 3.0.1 to 3.1.2 in /superset-embedded-sdk (#41508)
add 20da836c212 chore(deps-dev): bump oxlint from 1.70.0 to 1.71.0 in /superset-frontend (#41544)
add 1e42aeb53c5 chore(deps): bump swagger-ui-react from 5.32.6 to 5.32.7 in /docs (#41541)
add 82b6a86ca06 chore(deps-dev): update snowflake-sqlalchemy requirement from <2,>=1.2.4 to >=1.10.2,<2 (#41540)
add 9380d83dd11 chore(deps-dev): update nzalchemy requirement from >=11.0.2 to >=11.0.2,<11.2 (#41477)
add 5c272f13152 chore(docs): tighten CSP and remove external widgets (#36685)
add ba9bd430cb9 fix(a11y): add aria-label to ActionButton span role=button (#41503)
add ece8d8ffca5 fix(datasource): allow Gamma to load combined datasource list (#41553)
add 4a32e0b8d13 fix(table): exclude metricSqlExpressions from ownState→extra_form_data spread (#41555)
add 3b82d2a1706 fix(security): clean up stale can_import permission on ImportExportRestApi (#41309)
add 765927d681f chore(deps): bump js-yaml from 4.2.0 to 5.0.0 in /docs (#41520)
add 59196fcac05 chore(deps): bump @swc/core from 1.15.41 to 1.15.43 in /docs (#41542)
add a009fcec514 chore(deps-dev): bump @swc/core from 1.15.41 to 1.15.43 in /superset-frontend (#41543)
add 105b8960385 fix(explore): enable free-text entry for temporal D3 format selector in Table chart (#41194)
add b8b23d6219c fix(bigquery): quote dotted STRUCT columns per-segment in drill to detail (#41462)
add 56bd8ed0be1 chore(deps): bump azure/setup-helm from 5.0.0 to 5.0.1 (#41570)
add 2c476485886 chore(deps-dev): bump globals from 17.6.0 to 17.7.0 in /docs (#41571)
add c4c531a8552 chore(deps): bump actions/cache from 5.0.5 to 6.1.0 (#41572)
add e0e1831d507 chore(deps): bump actions/setup-java from 5.3.0 to 5.4.0 (#41576)
add 92f48b07257 chore(deps): bump actions/setup-python from 6.2.0 to 6.3.0 (#41573)
add 7827d43ea6e fix(embedded): show already-added allowed domains in embed modal (closes #35328) (#41399)
add 25f7b907611 fix(dashboard): remove stray focus outline on Filter Badge popover (closes #38789) (#41398)
add ef4c6123b9d fix(sqllab): preserve whitespace in grid result cells (#41135)
add a2b5fda6610 fix(Table Chart): Show correct cache time moment for Query2 (#37482)
add bbab644d122 chore(deps-dev): bump typescript-eslint from 8.61.1 to 8.62.0 in /docs (#41575)
add 7245a092eb5 chore(ci): scope zizmor adhoc-packages on setup-supersetbot action (#41547)
add 7de77a35bc8 chore(ci): pin @action-validator versions in GHA validator workflow (#41545)
add 95d688fb057 build(embedded-sdk): remove test files and related files from build artifact to be published (#41584)
add 2b6806c0904 chore(deps): bump js-yaml from 5.0.0 to 5.1.0 in /docs (#41566)
add c11fa206ce3 feat(mcp): add duplicate_dashboard tool (#40959)
add c60d8bb656f feat(mcp): add tags + typed metadata fields to update_dashboard (#40957)
add 42a5f64256b chore(ci): silence zizmor adhoc-packages note for supersetbot install (#41546)
add e15dc5735fb fix(reports): pre-commit tab permalinks before state machine transaction (#41096)
add 805c12ef744 fix(dashboard): prevent double-click on create dashboard from creating duplicates (#40833)
add 4bf203ee708 chore(config): default SMTP_SSL_SERVER_AUTH to True (#40647)
add a8f43890b1d chore(superset-ui-core): forward-compat fixes for TypeScript 6.0 (Phase B) (#39535)
add fd86eec889c chore(deps): bump echarts from 5.6.0 to 6.1.0 in /superset-frontend (#40264)
add 1e130feb807 chore(deps): bump marshmallow-union from 0.1.15 to 0.1.15.post1 (#41539)
add bf88c628149 feat(mcp): add manage_native_filters tool (#40960)
add 2bd9ab4c597 feat(mcp): add remove_chart_from_dashboard tool (#40958)
add fd9c84be430 feat(mcp): add get_dashboard_datasets tool (#40961)
add 2a1f632daa9 fix(dashboard): surface size, limit, and config key in oversized dashboard error (#41532)
add 35194fe4d59 fix(i18n): key translation-regression check on per-msgid transitions (#41596)
add ce9b9b05133 feat(i18n): add Japanese (ja) translations (AI-generated, needs review) (#41466)
add 3e88b487b32 fix(point-cluster-map): guard invalid point radii (#40393)
add 7cc7e9f6e34 fix(async-query): prevent JWT InvalidSubjectError for guest users (#37862)
add 16e1f41ceff chore(deps): bump swagger-ui-react from 5.32.7 to 5.32.8 in /docs (#41614)
add b9e3f0aa1e2 feat(soft-delete): gate soft delete behind a temporary SOFT_DELETE release toggle (#41166)
add 36510200147 fix(sql): cap parser input length via SQL_MAX_PARSE_LENGTH config (#40499)
add 2da2db6c7c0 feat(sql): schema-qualified table denylist + information_schema/lo_* defaults (#41120)
add 6d2b94ceb80 fix(currency): derive default symbol position from locale when unset (#40931)
add 438d4d569f8 test(sqllab): repair broken TablePreview and SavedQueryList jest tests (#41628)
add da4cae16574 chore(deps): bump fastmcp from >=3.2.4 to >=3.4.2 (#41592)
add 7f4cac63c90 fix(mcp): escape LIKE wildcards in find_users to prevent user enumeration (#41593)
add 55b2da75f65 fix(echarts): allow forcing categorical x-axis for temporal columns (#41221)
add 2d2a72b721f fix(sqllab): show non-ASCII text in array/JSON columns instead of \uXXXX escapes (#41533)
add 792d6776349 fix(reports): respect CSV_EXPORT sep and decimal config in email reports (#38616)
add b3c709b3d5e feat(i18n): backfill German (de) translations (AI-generated, needs review) (#41608)
add eeacd9b6ddc feat(i18n): backfill Latvian (lv) translations (AI-generated, needs review) (#41612)
add 692f81d9451 feat(i18n): backfill Finnish (fi) translations (AI-generated, needs review) (#41613)
add 7d7c3ce7239 feat(ci): install `helm-docs` directly instead of using whole `brew` setup (#41629)
add b7d5de8e524 fix(sqllab): truncate long tab names in the overflow ("...") dropdown (#41585)
add bed1034c2f7 refactor(frontend): centralize subdirectory URL prefixing behind nav helpers (#39925)
add 6c579196474 chore(codeowners): update maintainer assignments (#41634)
add e0a3b1c10cf fix(mcp): document select_columns valid fields and URL scheme for preview tools (#41595)
add 393adc45356 refactor(db): composite PK on M2M association tables (#39859)
add e58ce1cf39d fix(dashboard): pre-filter time grain for display controls (#40000)
add f2e322c3c03 chore(deps-dev): bump sigstore from 4.1.0 to 4.1.1 in /superset-frontend (#41638)
add 8be255de408 chore(i18n): harden backfill_po — full language-name map + resilient batch translation (#41644)
add af0a55a4f34 feat(dashboards): soft-delete and restore (#40128)
add b3197c9b5e0 fix(table-chart): fix "Search by" control visibility and improve table controls layout (#36073)
add c718f717cbc feat(i18n): backfill Spanish (es) translations (AI-generated, needs review) (#41609)
add d1f7dd9c672 fix(deps): override fast-uri to 3.1.3 to fix CVE-2026-13676 (#41631)
add 6bdcb7a83a1 feat(i18n): backfill Czech (cs) translations (AI-generated, needs review) (#41647)
add 661d362580d feat(i18n): backfill new safe-link strings in de/lv/fi (AI-generated, needs review) (#41646)
add 706ff94f0bf feat(i18n): backfill Slovak (sk) translations (AI-generated, needs review) (#41640)
add d57d69d3a68 feat(i18n): backfill Ukrainian (uk) translations (AI-generated, needs review) (#41645)
add 748060d35e7 feat(i18n): backfill Thai (th) translations (AI-generated, needs review) (#41641)
add e3bd6e5c70c chore(deps-dev): bump @playwright/test from 1.61.0 to 1.61.1 in /superset-frontend (#41616)
add d507be2555f chore(deps): bump geostyler-openlayers-parser from 5.7.0 to 5.7.1 in /superset-frontend (#41615)
add c3f5e997a16 feat(mcp): chart type plugin registry for extensible generate_chart (#39922)
add b2af954e7b8 chore(deps-dev): bump @types/node from 26.0.0 to 26.0.1 in /superset-frontend (#41675)
add 246bbeb4089 chore(deps): bump google-auth-library from 10.7.0 to 10.9.0 in /superset-frontend (#41672)
add a919dda2ac3 fix(sqllab): filter results table when typing in the search box (#41625)
add 8343a4fff80 chore(deps-dev): bump @types/node from 26.0.0 to 26.0.1 in /superset-websocket (#41666)
add a48ca9ce723 fix(sqllab): reject blank saved query and dataset names (#41624)
add 0a25faabbd6 fix(dashboard): align chart menu button hover state (#41683)
add 8210904e958 chore(deps): bump nanoid from 5.1.15 to 5.1.16 in /superset-frontend (#41673)
add 80344852b72 chore(deps): bump docusaurus-plugin-openapi-docs from 5.0.2 to 5.1.0 in /docs (#41671)
add 2992d7b4c87 feat(database): add databricks oauth support (#41421)
add be46d65e3b4 fix(dao): SQL-faithful NULL and non-string handling in LIKE-family operators (#41653)
add afebdd58d16 chore(deps): bump docusaurus-theme-openapi-docs from 5.0.2 to 5.1.0 in /docs (#41669)
add 6309d08d59f feat(helm): standardize to Kubernetes recommended labels (app.kubernetes.io/*) (#39350)
add d7e2f18d005 fix(dockerfile): allow GH auth-less fetch of `uv` when building Superset image locally (#41682)
add 7214e9f9f60 build(dev-deps): upgrade Storybook to v10 in docs subproject (#41679)
add c1bd45f5618 fix(ci): allow showtime to check out fork PR code under checkout v7 (#41643)
add e3b2992d6e1 chore(deps): update lodash-es requirement from ^4.17.21 to ^4.18.1 in /superset-frontend/packages/superset-ui-core (#41565)
add be29d877d2f chore(deps-dev): bump @storybook/addon-docs from 10.4.5 to 10.4.6 in /superset-frontend (#41375)
add 9769380d6dc feat(i18n): backfill Polish (pl) translations (AI-generated, needs review) (#41660)
add 6c2c814b5c0 fix(dashboard): not filterable column now not emitting cross-filters in table charts (#30827)
add aa40934e7f3 fix(i18n): compile fuzzy translations into the backend .mo files (#41648)
add 4c193d4dbce feat(i18n): wrap description strings in translation function (#41626)
add 139df20cde6 fix(i18n): update German security menu translations (#41587)
add 19e94855a1f fix(explore): prevent Results FilterInput from stealing focus during remount (#41100)
add 8bf3933972f fix(dashboard): show a not-found state for a deleted dashboard (#41686)
add 1c74185a71f chore(ci): correct codeql-action version comment to match pinned SHA (#41695)
add f9bcf189c9f chore(ci): suppress zizmor adhoc-packages on GHA validator install (#41694)
add 83965b4be87 chore(ci): correct codeql-action version pin comment to v4.36.2 (#41693)
add 358493a2c50 feat(i18n): backfill Brazilian Portuguese (pt_BR) translations (AI-generated, needs review) (#41659)
add 9e087702918 feat(i18n): backfill Slovenian (sl) translations (AI-generated, needs review) (#41658)
add 7eb93c60a3e feat(i18n): backfill Catalan (ca) translations (AI-generated, needs review) (#41657)
add f61d6d8b84a feat(i18n): backfill Māori (mi) translations (AI-generated, needs review) (#41656)
add 03703843b7d feat(i18n): backfill French (fr) translations (AI-generated, needs review) (#41655)
add 66bf81b997a feat(i18n): backfill Russian (ru) translations (AI-generated, needs review) (#41649)
add 22c3f56d0a7 fix(redshift): suppress unavoidable pkg_resources deprecation warning (#41691)
add a30846881b8 test(ci): stabilize master checks (#41650)
add ab0e77c1cb7 fix(embedded): allow guest users to sort by visible columns (#37371)
add 5bbab86a07a fix(schemas): rename deprecated query fields regardless of falsy values (#41263)
add d8832c382d4 fix(views): emit deprecated-endpoint log warning once per endpoint per process (#41286)
add a151edeff31 feat(i18n): backfill Dutch (nl) translations (AI-generated, needs review) (#41704)
add bdc610c5720 fix(db): use a private engine for prequery connections to avoid listener race (#41642)
add 55088e10da0 feat(database-modal): add validation loading state and duplicate name check (#36880)
add 49fcaf24205 feat(i18n): backfill Turkish (tr) translations (AI-generated, needs review) (#41702)
add 47bc3e2dc1c fix: correct Security menu case for MySQL deployments (#40527)
add ceadce234b9 chore(deps-dev): bump @storybook/react-webpack5 from 10.4.4 to 10.4.6 in /superset-frontend (#41371)
add 7cbdc726e33 chore(deps-dev): bump @storybook/addon-links from 10.4.4 to 10.4.6 in /superset-frontend (#41366)
add 6d22697cba9 feat(theming): make core components fully configurable via theme tokens (#40985)
add 46a153d17e1 feat(i18n): backfill Persian (Farsi) (fa) translations (AI-generated, needs review) (#41701)
add 4f37e955b54 fix(plugin-chart-echarts): prevent trendline stroke clipping at chart edges (#37918)
add 0e6c5838e48 fix(deck.gl): apply categorical scatterplot colors in Multiple Layers chart (#41490)
add eaf6daa7eb5 chore(deps-dev): bump webpack from 5.107.2 to 5.108.0 in /docs (#41734)
add d93098f8530 chore(deps-dev): bump baseline-browser-mapping from 2.10.38 to 2.10.40 in /superset-frontend (#41737)
add 2b30605e3c5 chore(deps): bump baseline-browser-mapping from 2.10.38 to 2.10.40 in /docs (#41736)
add 9f8ff1e87f4 chore(deps): bump @deck.gl/mapbox from 9.3.4 to 9.3.5 in /superset-frontend (#41735)
add 114c2581453 chore(deps-dev): bump webpack from 5.107.2 to 5.108.0 in /superset-frontend (#41733)
add 0b14f1c2264 fix(a11y): use aria-label instead of non-functional alt prop on filter icons (#41742)
add 2702113d99b fix(a11y): add aria-label to VizTypeGallery search clear icon (#41681)
add d443dd17b97 feat(i18n): backfill Korean (ko) translations (AI-generated, needs review) (#41713)
add b6f8267ed2b feat(i18n): backfill Italian (it) translations (AI-generated, needs review) (#41712)
add e7b825e26b5 feat(i18n): backfill Portuguese (pt) translations (AI-generated, needs review) (#41710)
add 7d90684f939 feat(i18n): backfill Chinese (Traditional) (zh_TW) translations (AI-generated, needs review) (#41709)
add 6d7344750f3 feat(i18n): backfill Chinese (Simplified) (zh) translations (AI-generated, needs review) (#41708)
add ceeba013057 fix(i18n): correct mistranslated entries flagged in review (pl/pt_BR/sl/sk/fi) (#41707)
add 4e2160079ad feat(i18n): backfill Arabic (ar) translations (AI-generated, needs review) (#41705)
add 59d35d16ce3 feat(i18n): adopt French translation improvements from #41688 (#41752)
add d7ad7fbb49c fix(i18n): repair dropped placeholders and reduced-plural forms across catalogs (#41722)
add 681275077b3 fix(semantic layers): time comparison with 1 row (#41554)
add b23cef136e5 fix(i18n): un-translate do-not-translate tokens in es/fi/th catalogs (#41652)
add fd1f313b307 chore(deps): bump flask-appbuilder from 5.2.1 to 5.2.2 (#41766)
add 81a437826f8 chore(deps-dev): update kylinpy requirement from <2.9,>=2.8.1 to >=2.8.4,<2.9 (#41765)
add 71ac6c64e23 chore(deps): bump rison from 2.0.0 to 2.0.1 (#41762)
add c3fe0a40ebc chore(deps-dev): bump mysqlclient from 2.2.6 to 2.2.8 (#41760)
add 43f28162406 chore(deps-dev): update ydb-sqlglot-plugin requirement from >=0.2.5 to >=0.2.8 (#41764)
add 210389478ba fix(test): change regex for RTL to retrieve button used for filter removal (#41767)
add a9aabdaedfc chore(deps): bump gunicorn from 25.3.0 to 26.0.0 (#41761)
add 004c401c973 refactor(dashboard): rename supersetCanCSV to supersetCanDownload (#24290) (#39118)
add 3e152d9bb7a fix(views): add new_target to deprecated explore_json_data endpoint (#41771)
add 1e50316bccd chore(reports): deprecate Slack v1 and harden Slack v2 tests (#39914)
add e08c2c12dad fix(native-filters): persist created/pasted default values in select filter (#40984)
add 8fcc0f8b482 fix(semantic layers): start/end ranges (#41590)
add 687fafd424b build(dev-deps): replace deprecated minimizer deps with recommendation from Webpack doc (#41756)
add 3ac19470ec2 fix(embedded): register AG Grid modules for view-as-table modal (#41632)
add d91c5cf09b6 fix(dashboard): prevent dashboard crash when applying grain filters (#41700) (#41746)
add a687e87b2cd fix(dashboard): use theme colorBorder token for chart tile borders (#41731)
add dc739e4fb96 fix(ui): standardize card kebab menu behavior (#41741)
add ea40b87e2fd fix(drill-detail): drill to detail by a null value dimension should use NULL_STRING (#41678)
add 8229c0183dc perf(explore): reuse chart query data in Results tab (#38165)
add 3303d4e09ef chore(deps): bump lodash-es to ^4.18.1 across all frontend workspaces (#41774)
add 9a24d42d655 fix(chart): Fix heatmap charts when filtering down to one row/colum (#40738)
add 7cdfe3ffe7d fix(a11y): add aria-label to CRON schedule input (#41769)
add a8ab5f973dc chore(deps-dev): bump @typescript-eslint/eslint-plugin from 8.61.1 to 8.62.0 in /superset-frontend (#41577)
add 83826839a0a fix(i18n): inject language pack into bootstrap to translate code-split chunks (#39357)
add 1575b83f96a chore(deps): bump react-arborist from 3.10.5 to 3.12.0 in /superset-frontend (#41793)
add d6b31376a51 chore(deps-dev): bump prettier from 3.8.4 to 3.9.1 in /docs (#41789)
add beff76cb4d4 chore(deps): bump antd from 6.4.5 to 6.5.0 in /docs (#41788)
add fd8d7009a5b chore(mcp): drop legacy /superset prefix from dashboard URLs (#41758)
add b4218136bec feat(ag-grid): support Show summary in raw records mode (#41754)
add a7a051777c2 feat(charts): soft-delete and restore (#40129)
add 2f11240339c chore(deps): bump query-string from 9.4.0 to 9.4.1 in /superset-frontend (#41782)
add f4cc871f8cd chore(deps): bump js-yaml from 5.1.0 to 5.2.0 in /docs (#41783)
add 69f052985f7 chore(deps-dev): bump prettier from 3.8.4 to 3.9.3 in /superset-frontend (#41784)
add c49d01223c7 chore(deps-dev): bump webpack from 5.108.0 to 5.108.2 in /docs (#41786)
add dc671ae44ac chore(deps-dev): bump eslint from 10.5.0 to 10.6.0 in /superset-frontend (#41792)
add 06f421ed4af fix(a11y): add aria-label to remove-sheet icon button in Google Sheets catalog (#41796)
add 83d93b8b425 fix(view-query): Add ownState parameter to ViewQueryModal for query consistency (#35208)
add ad8e6d41402 build(deps): upgrade `react-markdown` to v9 and `remark-gfm` to v4 (#41778)
add 689b4f623e4 docs(admin/config): resolve misconfigured aws-iam Markdown file (#41748)
add 21b4185819e fix(ace-editor): caret drift from late font loads and emoji widths (#41697)
add 51e708da6bb fix(mcp): accept Superset vocabulary in chart configs and clarify query_dataset metric errors (#40972)
add 69ce27f1731 feat(sec): resolve all vuln alerts in `superset-embedded-sdk`, `superset-frontend` and `docs` (#41776)
add fb496e158a2 fix(ag-grid): persist "None" value aggregation selection (#41386)
add 44c1ad5c714 fix: delint frontend files (#41802)
add c0b0a2fdaf5 feat(tags): add favorites filter to Tags list view (#41461)
add 033b7bc385e fix(databases): update broken database documentation links to /user-docs namespace (#41557)
add 9e50d9eca67 fix: Italian translation (#36114)
add ee524b34713 fix(dashboard): let CSV exports use query cache instead of always force-querying (#41469)
add 2aa43f6f0f5 fix(sql): stop sanitize_clause from rewriting user SQL semantics (#36113) (#41125)
add 85eaf15c5e0 test(databases): stabilize flaky SQLAlchemy-form visibility assertion (#41823)
add 101c1e88275 fix(ace-editor): carry token classes onto emoji boxes (#41821)
add 4b78758fd22 chore(deps-dev): bump typescript-eslint from 8.62.0 to 8.62.1 in /superset-websocket (#41815)
add 847bdad9600 chore(deps-dev): bump @typescript-eslint/parser from 8.62.0 to 8.62.1 in /superset-frontend (#41820)
add 2b74e140f37 chore(deps-dev): update sqlalchemy-parseable requirement from <0.2.0,>=0.1.3 to >=0.1.6,<0.2.0 (#41814)
add 87fa7e5e640 chore(deps-dev): bump prettier from 3.9.1 to 3.9.3 in /superset-websocket (#41810)
add e52240b9a60 test(datasets): prove column metadata persists for zero-row queries (#41838)
add a8a1b220fdc chore(deps): update @ant-design/icons requirement from ^6.2.5 to ^6.3.2 in /superset-frontend/packages/superset-ui-core (#41790)
add 1c3b070d342 feat(i18n): do-not-translate registry + '#. do-not-translate' marker standard (#41651)
add c846da8dfb2 fix(frontend): resolve image download formatting and cleanup issues (#38927)
add de5a233ccf9 fix(sqllab): preserve saved query description when editing (#41685)
add ec4e5deb014 feat(theming): add opt-in SQL Lab grid tokens and fix modal border-radius clipping (#41031)
add 5e384f54d3a fix(ag-grid): select cell on click instead of its text (#41392)
add 4167a21f7d4 fix(semantic layers): guards for zero rows (#41600)
add 4dc45aa9586 fix(semantic layers): apply post-processing (#41601)
add ffd09829423 fix(ag-grid): keep basic conditional formatting aligned after sort (#41390)
add 5e16c4eaaf6 chore(deps-dev): bump oxlint from 1.71.0 to 1.72.0 in /superset-frontend (#41848)
add 7bdde4a36af chore(deps-dev): bump prettier from 3.9.3 to 3.9.4 in /superset-frontend (#41846)
add aa330422f19 chore(deps-dev): bump prettier from 3.9.3 to 3.9.4 in /superset-websocket (#41844)
add 3a514dc8eb0 chore(deps-dev): update sqlalchemy-singlestoredb requirement from <2,>=1.1.1 to >=1.2.1,<2 (#41809)
add 0dcb09b1638 chore(deps-dev): bump @typescript-eslint/eslint-plugin from 8.62.0 to 8.62.1 in /superset-frontend (#41822)
add 53c3b1ceb1b chore(deps): bump fs-extra from 11.3.5 to 11.3.6 in /superset-frontend (#41847)
add 9b508ebe0d0 fix(ag-grid): honor dataset hour offset in time range filters (#41391)
add dd0277e1e37 feat(mcp): support embedded guest-token authentication (#41003)
add 77b98a5d676 chore(deps-dev): update databend-sqlalchemy requirement from <1.0,>=0.3.2 to >=0.5.5,<1.0 (#41479)
add f0e25fb9789 test(preset-chart-deckgl): prove ctrl+click on deck.gl legend toggles the layer without opening a new tab (#41830)
add d0b42d8c19a test(dashboard): prove activeTabs from permalinks selects tab content (#41832)
add af058ccecb5 test(plugin-chart-echarts): prove user-selected plain legend type is honored (#39540) (#41833)
add de5a31a2cfd test(sql): prove Oracle GROUP BY is no longer rewritten to ordinals (#35414) (#41834)
add 00a9546de9f test(sql): prove multi-space column names no longer trip subquery validation (#41835)
add 7b0969131ff test(sql): prove ClickHouse parametric aggregates parse cleanly (#37285) (#41836)
add 973366d30bf test(models): prove owner association tables reject duplicate rows (#41837)
add 19c982d8d30 test(async-queries): prove OAuth2RedirectError survives async chart queries (#41839)
add 51a171f8217 test(dashboard): prove BigInt column values no longer break native filter config (#41840)
add 0d9b3f3b059 test(dashboard): prove filters with defaults apply without touching every filter (#41841)
add a01a4ae511e test(superset-ui-core): prove angle-bracketed non-HTML values render as text (#34082) (#41829)
add 04f8b700d76 feat(datasets): soft-delete and restore (#40130)
add 5f27f88e730 test(preset-chart-deckgl): prove legend clicks no longer scroll to top (#41831)
add fe7d9b47247 fix(sqllab): reflect query history deletion without page refresh (#41019)
add fbc24959ab3 feat(mcp): add semantic layer MCP tools (list_metrics, get_table, get_compatible_dimensions, get_compatible_metrics) (#41611)
add 054be4d45e8 chore(deps-dev): bump eslint-plugin-storybook from 10.4.5 to 10.4.6 in /superset-frontend (#41360)
add 8e98ae701b5 chore(deps): bump cryptography from 48.0.1 to 49.0.0 (#41811)
add 6edbf425f79 chore(deps-dev): update sqlalchemy-ocient requirement from >=1.0.0 to >=3.0.0 (#41806)
add 098b95560d8 fix(oauth2): retrigger queries for unsaved charts and schema loading after OAuth2 redirect (#41101)
add 8108496e2a1 chore(deps-dev): bump @types/d3-scale from 2.2.10 to 4.0.9 in /superset-frontend/packages/superset-ui-core (#41318)
add 4038c9d1e69 chore(deps-dev): bump google-cloud-bigquery from 3.27.0 to 3.42.1 (#41807)
add d9e1f34527b fix(a11y): add aria-label to notification method remove button (#41850)
add 09361606335 chore(deps-dev): bump eslint-plugin-cypress from 3.6.0 to 6.4.2 in /superset-frontend (#41849)
add 8f4c4117656 fix(mcp): coerce Role ORM objects to role names in UserInfo schema (#40746)
add 2a77c0156af fix(frontend/setup): sanitize returned client error message when shown as HTML content (#41768)
add 17ae25b8d4d fix(explore): resolve adhoc Custom SQL dimension in Bubble chart (#41861)
add ef10501e6b2 feat(table v2): add tooltip to table header (#39287)
add f1c0a461fda chore(deps): bump react-markdown from 9.0.7 to 10.1.0 in /superset-frontend/packages/superset-ui-core (#41805)
add 6b1311a6c7c fix(sqllab): correct verticalalign CSS typo in SqlEditorTabHeader icon styles (#41052)
add 0d9533fdf8f fix(reports): export server-paginated table row limits (#41103)
add 7b95d8b17c9 feat(alerts): add user lookup for email recipients (#41338)
add 050acc6c308 fix(databend): support configuring Databend via individual parameters (#41513)
add c253b68d7bc fix(chart): fix Chart Time Grain option not working if Dataset is not saved (#38766)
add ddca50c8209 fix(ui): improve getPopupContainer to avoid double scrollbar without breaking modal behavior (#38792)
add 98fc8576131 feat(cache): warm up native filter option queries (#41531)
add 866f8c51ee2 fix(sqllab): invalid height in ResultTable (#37408)
add e49945fc2fb fix(table charts v1 & v2): pagination, translation and search by (#36881)
add 96171552890 fix(utils): urls preserve query params (#35936)
add 3fa000ba0bc fix(chart): allow custom date format for week range in Big Number with Trendline (#35752)
add 0efcd54250a fix(charts): fix time comparison crash when offsets share a numeric prefix (#39344)
add f6d03e4a687 fix(clickhouse): time filters use server timezone for toDateTime literals (#41579)
add 206155f986c fix(explore): apply per-datasource access check on the legacy explore view (#41425)
add f74de0eb6c3 fix: Show metric in the default tooltip of deck.gl GeoJson Polygon chart (#41341)
add 2dab31c1301 fix(mcp): serialize FAB role permissions (#41404)
add 01cd2152027 fix(explore): default Save As for new charts in save dialog (#41314)
add 3b1abf82608 feat(Icons): adding Layout icon (#41853)
add 211bcbc6353 chore(deps-dev): bump @swc/plugin-emotion from 14.14.0 to 14.14.1 in /superset-frontend (#41875)
add d81b135a04c fix(explore): render DragOverlay so dragged metric/column is visible (#41879)
add 8a599d70b43 fix(explore): admin creating new chart crashes on save (#41880)
add 49ed2063815 fix(a11y): add aria-label to dependency-list remove icon (#41878)
add deefe897f15 chore(frontend): remove orphaned eslint-plugin-cypress devDependency (#41866)
add dc5c5af4671 docs: Add geOrchestra project and pi-geosolutions to In the Wild (#41801)
add e333135a0d4 feat(i18n): expose the six newly backfilled locales (#41827)
add 001d6c9692c fix(semantic-layers): apply time-comparison offset to `TEMPORAL_RANGE` filters (#41556)
add 34d4966f8b1 fix(dataset): resolve duplicate virtual dataset validation error (#37932)
add 01e872c1056 refactor: remove the deprecated AVOID_COLORS_COLLISION feature flag (#41800)
add 33f0fc93edf feat: introduce Subject model and entity editors/viewers (#38831)
add 83716cb8c0d build(websocket): migrate to ESM (#41680)
add 2c8cdbbd9b2 chore(dependabot): unify npm Dependabot config used for multi-workspace `superset-frontend` (#41586)
add e65b2c49d73 fix(marshmallow): add compatibility layer for Flask-AppBuilder with marshmallow 4.x (#35920)
add 8e549e49750 chore(deps-dev): update playwright requirement from <2,>=1.60.0 to >=1.61.0,<2 (#41890)
add 31351eb52af chore(deps-dev): bump @types/node from 26.0.1 to 26.1.0 in /superset-frontend (#41896)
add 15f8b8e9b40 chore(deps): bump immer from 11.1.8 to 11.1.9 in /superset-frontend (#41894)
add a0d9e82c60b chore(deps): bump celery from 5.5.2 to 5.6.3 (#41892)
add 3a10f39c207 chore(deps-dev): bump pytest from 7.4.4 to 9.1.1 (#41888)
add ea5950558bb feat(dashboard): add vertical alignment guides and height indicator when resizing charts (#41079)
add 74c3f3b66bd feat(theme): make default theme changeable through config.py (#41007)
add 227b3a48c11 fix(chart-data): return 403 for SupersetSecurityException in chart data API (#41865)
add 3dd5e69714f chore(deps-dev): bump @types/node from 26.0.1 to 26.1.0 in /superset-websocket (#41887)
add 30e1ab3203c chore(deps): bump docker/login-action from 4.2.0 to 4.3.0 (#41901)
add a4418a27c5c chore(deps): bump github/codeql-action/analyze from 4.36.2 to 4.36.3 (#41900)
add c1d4401d292 chore(deps): bump github/codeql-action/init from 4.36.2 to 4.36.3 (#41899)
add afc7dbeff23 chore(deps-dev): update teradatasql requirement from >=16.20.0.23 to >=20.0.0.62 (#41886)
add 1fd43ffe52c feat(mcp): scope embedded-guest data reads to the token's dashboards (#41753)
add baff395d983 feat(mcp): add list_themes, get_theme_info, and create_theme tools (#41497)
add bea5f8d4a44 fix(dashboard): stagger manual refresh to prevent worker saturation (#40512)
add 43bfc85941c fix(db): validate schema and table cache timeout to reject negative values (#38490)
add 2380d576d54 fix(cli): avoid DetachedInstanceError in compute-thumbnails (#41530)
add 1bfb7c60e7c fix(ci): repair stale mock target breaking Python-Unit on master (#41911)
add a899e1db414 feat(versioning): entity-version base infrastructure (gated off, dark launch) (#41176)
add 0ff52d46e07 fix(docs): correct broken In the Wild logo for Région Hauts-de-France (#41918)
add ea76d0d785e chore(deps): bump cookie from 1.1.1 to 2.0.1 in /superset-websocket (#41874)
add be600f78fc6 chore(deps): upgrade ag-grid to 36.0.0 (#41882)
add 597c9c6fea6 fix: do not require recaptcha public key for LDAP authentication (#37009)
add e2ba378b699 fix(sqllab): redirect legacy /superset/sql/<db_id>/ deep links (#41759)
add 38707866c02 chore(deps-dev): bump baseline-browser-mapping from 2.10.40 to 2.10.41 in /superset-frontend (#41929)
add 169c05f8ce8 chore(deps-dev): bump tsx from 4.22.4 to 4.22.5 in /superset-frontend (#41928)
add 2a3d65f61a6 chore(deps): bump docker/login-action from 4.3.0 to 4.4.0 (#41927)
add 1ddc3e45d77 chore(deps): bump @deck.gl/mapbox from 9.3.5 to 9.3.6 in /superset-frontend (#41926)
add 1631d52b650 fix(CollectionControl): a11y drag handle and vertical axis lock (#39863)
add 2112fbd3798 feat(subjects): add read-only Subject REST API and DAO (#41897)
add a6ce2fd76b0 fix(mcp): patch list_metrics DAOs via module object to avoid Python 3.10 mock resolution bug (#41881)
add 5b8e94de267 feat(semantic layers): dashboard filters (#40475)
add bd61e09b4ea fix(mcp): bind Big Number chart to a temporal column for dashboard time filters (#41895)
add bc80d138fdc chore(deps): bump slack-sdk from 3.42.0 to 3.43.0 (#41893)
add 35712ff9770 fix(sqllab): show truncated table list warning (#41617)
add 4dde4d2c706 fix(versioning): make baseline capture atomic (#41941)
add 38181521912 fix(mcp): user/role tools demanded a permission FAB never registers (#41858)
add 51ce2b11ad3 chore(deps-dev): update impyla requirement from <0.23,>0.16.2 to >=0.24.0,<0.25 (#41951)
add 7a752d1c228 fix(dashboard): restore arrow key navigation in modal inputs opened from dropdown (#37978)
add 5c12f216d51 feat(mcp): add delete_chart and delete_dashboard tools (#41472)
add 678fcba8b48 feat(helm): Superset 6 structured config schema with deprecation path (#41777)
add b641008da6a fix(versioning): preserve complete multi-flush history (#41940)
add df209cedbf8 chore(deps-dev): update sqlalchemy-firebird requirement from <2.2,>=0.7.0 to >=0.8.0,<2.2 (#41950)
add e8521471820 test: add edge-case tests for datetime_to_epoch function (#39404)
add a03cabffa77 perf(csv): avoid regex in CSV value escaping (#40195)
add 0ecf34d80e1 fix(a11y): add aria-label to ViewportControl text inputs (#41931)
add b237aefb1ea fix(a11y): add aria-label to RightMenu documentation and bug-report icon links (#41903)
add f5deda78641 fix(dataset): copy catalog field when duplicating a BigQuery dataset (#41106)
add 189f258e0ce fix(drill): coerce temporal drill filter values (#40180)
add 5e6b29d1a32 chore(deps-dev): bump sqlalchemy-hana from 0.4.0 to 3.0.3 (#41953)
add 49dc0acd827 fix(pre-commit): prettier hook drops first file and never batches (#41944)
add b8c0171976d test(rls): assert related/subjects honors search filter for roles (#31466) (#41969)
add 958d1ab256a test(rls): assert dataset search returns all mask matches (#29707) (#41968)
add 13c5a324027 fix(tests): correct stale TYPE_CHECKING import path in base_data_loader (#41972)
add a1d1d69f5ea ci: enforce SQLAlchemy 2.0 deprecation warnings in unit-test CI (#41915)
add 2a18a556b09 chore(frontend): lint Emotion CSS-in-JS with Stylelint (#41871)
add db1912c6d98 chore(deps): bump cachetools from 6.2.1 to 7.1.4 (#41947)
add 0ca51d9796a fix(Database Connection Form): Added validation to db credential input (#37919)
add e403d9b0742 chore(lint): convert legacy plugin chart components to function components (#39452)
add 12f28ce2354 chore(deps): bump holidays from 0.82 to 0.99 (#41949)
add 98c3ec7a718 chore(deps): bump sqlglot from 30.8.0 to 30.12.0 (#41948)
add d380663e710 chore(deps-dev): bump syntaqlite from 0.4.2 to 0.6.0 (#41952)
add c0e5f5226d4 fix(explore): let chart owners overwrite when owners come through as objects (#41352)
add c762b75ddc5 chore(lint): upgrade no-unused-vars rule from warn to error (#41132)
add 8f339545adb chore(deps-dev): bump baseline-browser-mapping from 2.10.41 to 2.10.42 in /superset-frontend (#41993)
add 73925922a9a chore(deps): bump react-arborist from 3.12.0 to 3.13.2 in /superset-frontend (#41992)
add bb5d7dbb17b chore(deps): bump immer from 11.1.9 to 11.1.11 in /superset-frontend (#41991)
add 9180ace1ddc chore(deps): bump actions/labeler from 6.1.0 to 6.2.0 (#41988)
add 96bf1a1e4cd chore(deps): bump caniuse-lite from 1.0.30001800 to 1.0.30001802 in /docs (#41987)
add 0cf217cdea5 chore(deps-dev): bump vitest from 4.1.9 to 4.1.10 in /superset-websocket (#41986)
add f7b7bad9a88 chore(deps-dev): bump tsx from 4.22.5 to 4.23.0 in /superset-frontend (#41985)
add 1c7a3f395f4 chore(deps): bump fs-extra from 11.3.2 to 11.3.6 in /superset-frontend (#41990)
add 3c6982252b2 chore(deps-dev): bump webpack from 5.108.3 to 5.108.4 in /superset-frontend (#41989)
add 029d49539bc fix(event-log): match embedded routes precisely in logger middleware (#41942)
add 2fac66d1a30 feat(mcp): add update_dataset_metric tool for editing saved dataset metrics (#40975)
add 8f75f1a353d fix(dashboard): deleted Display Control reappears after Apply Filters (#41999)
add 68ebc22e1ee refactor: replace Engine.execute() with Connection.execute() (#41917)
add 5dd060b714a fix(chart-echarts): disable animation for report screenshots so time-shift lines render fully (#42003)
add 1627fab741b fix(i18n): make every catalog compile clean, canonicalize, fix ja plurals (#41828)
add e063f5093c9 feat(frontend): upgrade Ant Design from v5 to v6 (#41636)
add 873566c8272 fix(mcp): stop masking dashboard lookup DB errors as not-found (#41919)
add d43a0d7633a chore: sqlalchemy.database package warnings are irrelevant (#41978)
add 64df96be00a fix(nvd3): invoke shiftMetric() in TimePivot formDataOverrides (#41916)
add 521e51429a7 chore: as_declarative() warnings are irrelevant (#41982)
add c5131bff47e chore(a11y): enable 9 more jsx-a11y oxlint rules as errors (#42006)
add 62ccdfacc2f fix(mcp): make list-item truncation cap configurable in get_dashboard_info (#41698)
add 18f1dd394bb test(security): prove Drill By access does not require can_explore (#27900) (#41967)
add d4a31d1d78a fix: add subdirectory deployment support for brandSpinnerUrl (#37523)
add 8262aa7d6b4 fix(explore): restore drag-and-drop reordering broken by @dnd-kit migration (#41637)
add 9818da445ab fix(a11y): add aria-label to cross-filter search icon (#41619)
add 3e957b63d47 fix(a11y): make CopyToClipboard keyboard-operable for custom copyNode elements (#41958)
add ce8219672ec fix(a11y): add accessible labels to EmbedCodeContent height/width inputs (#41995)
add 25ce83cc58c fix(dashboard): apply auto-refresh interval in standalone mode (#41740)
add 3c648ca2645 fix(swagger): support URL prefix via APPLICATION_ROOT in OpenAPI and Swagger UI (#40908)
add 2857b29ab97 test(sqla): assert simple metric quotes columns requiring quoting (#30637) (#41961)
add 836dce9b058 fix(i18n): reset embedded start guard and align menu error handling (#41491)
add a2a71760ede fix(e2e): repair master Playwright smoke tests (#42013)
add 993a43396ae fix: restore all-files pre-commit checks (#42014)
add e420812eb74 test(filters): guard BIGINT filter value precision (#27510) (#41963)
add 8afad27c848 chore: convert warning to error if parameters not passed as collection (#41977)
add e165762bb7c refactor: begin transaction to automatically commit (#41979)
add 42523f8cc4c fix(async-queries): back off polling when async event requests keep failing (#42012)
add ccfccdf237e chore(deps-dev): bump oxlint from 1.72.0 to 1.73.0 in /superset-frontend (#42031)
add 115ce12ff7f chore(deps-dev): bump @typescript-eslint/parser from 8.62.1 to 8.63.0 in /superset-frontend (#42030)
add 35d05cc2787 chore(deps-dev): bump @swc/plugin-emotion from 14.14.1 to 14.15.0 in /superset-frontend (#42029)
add e86dcf7b82e chore(deps): bump actions/setup-java from 5.4.0 to 5.5.0 (#42028)
add 41efdb3082f chore(deps-dev): bump webpack-sources from 3.5.0 to 3.5.1 in /superset-frontend (#42027)
add 68881a60ca2 chore(deps): bump caniuse-lite from 1.0.30001802 to 1.0.30001803 in /docs (#42026)
add d49365757c0 chore(deps-dev): bump @typescript-eslint/parser from 8.61.0 to 8.63.0 in /docs (#42025)
add 258f4c035b9 chore(deps-dev): bump typescript-eslint from 8.62.1 to 8.63.0 in /superset-websocket (#42022)
add cc32d16e0cc chore(deps-dev): bump @typescript-eslint/parser from 8.62.0 to 8.63.0 in /superset-websocket (#42021)
add d5e75c48135 fix(ci): correct setup-node version comment in tag-release.yml (#42039)
add 7075e9f253c fix(event-log): match embedded routes without trailing slash in logger middleware (#42005)
add 24959d1656d fix(ci): correct setup-node version comment in tech-debt.yml (#42037)
add 4e10a962531 chore(ci): correct actions/setup-node version comment to v6.4.0 (#42038)
add 0dcf67fa27d chore(deps-dev): bump typescript-eslint from 8.62.1 to 8.63.0 in /docs (#42024)
add c4bee525eaa fix(ci): correct mismatched version comment on actions/setup-node pin (#42036)
add 1f41899deb7 chore(deps-dev): bump @typescript-eslint/eslint-plugin from 8.62.1 to 8.63.0 in /superset-frontend (#42023)
add 76bb5f8e698 fix(dashboard): prevent native filter loss when saving chart customizations (#42032)
add ef3a9e925ec chore(deps-dev): bump @typescript-eslint/eslint-plugin from 8.62.0 to 8.63.0 in /superset-websocket (#42020)
add 4b07d43050a fix(sqllab): collapse left sidebar shows compact db selector in top bar (#41898)
add 256cc71c877 refactor: import from sqlalchemy.orm (#41981)
add e3a0d0e41ec fix(versioning): isolate action metadata writes (#41943)
add c04a0295ef6 fix(chart): keep query-context updates bound to the chart's datasource (#40955)
add 4446967d0fe chore(lint): convert Storybook stories and shared helpers to function components (#39451)
add bd9ba242662 fix(mcp): add AliasChoices to chart/dashboard/dataset request schemas (#41597)
add 0a3c263606e fix(migration): strip metricSqlExpressions from ag_grid_table params (#41591)
add d68e84e7315 fix(databricks): classify insufficient-permissions errors as 4xx (#41945)
add be768efc0f4 fix(ci): make pre-commit fail closed instead of silently passing on an empty file list (#42044)
add 13121fcd587 fix(ci): skip unsupported React 19 Dependabot updates (#42047)
add 9db88203e16 fix(migration): use sqlalchemy.orm.declarative_base to avoid MovedIn20Warning (#42056)
add ad8f2cf2680 chore(deps): bump github/codeql-action/analyze from 4.36.3 to 4.37.0 (#42069)
add 6dcd95e14ab chore(deps-dev): bump syntaqlite from 0.6.0 to 0.7.0 (#42067)
add b4373f60b3e chore(deps-dev): bump fastmcp from 3.4.2 to 3.4.3 (#42065)
add abafe195bf9 chore(deps): bump click from 8.4.1 to 8.4.2 (#42064)
add 7953382d100 feat(submenu_export): Add export to png and pdf options for charts (#38535)
add d80267d00b1 chore(deps): bump github/codeql-action/init from 4.36.3 to 4.37.0 (#42068)
add aa85455a5cf fix(i18n): Update Japanese translations (#41984)
add a540f56f5ca fix(reports): raise typed executor-not-found error in alert-query path (#41486)
add 2af66b2c9b5 fix(async-queries): add Celery task expiry to GAQ async query tasks (#42084)
add 6c2b7aceb5a fix(mcp): correct decorator order on query_dataset tool (#41925)
add f010affbc27 fix(reports): paginate Slack recipient picker for large workspaces (#41998)
add 53c4603c8c1 chore(deps-dev): bump @types/node from 26.1.0 to 26.1.1 in /superset-frontend (#42077)
add 071c4315803 chore(deps-dev): bump @types/node from 26.1.0 to 26.1.1 in /superset-websocket (#42076)
add 7bc1895050c chore(deps-dev): update pydoris requirement from <2.0.0,>=1.0.0 to >=1.2.0,<2.0.0 (#42063)
add e66d58361a7 chore(deps-dev): update clickhouse-connect requirement from <2.0,>=1.1.1 to >=1.4.2,<2.0 (#42062)
add 5c8e14e9dc2 chore(deps-dev): bump hdbcli from 2.28.21 to 2.29.23 (#42060)
add 753113d1692 chore(deps-dev): bump trino from 0.337.0 to 0.338.0 (#42059)
add cec9afb165b fix(mcp): await ctx.info calls in update_dashboard tool (#41920)
add f38fff2a19f test(mcp): close systematic test-coverage gaps in mcp_service (#41924)
add 90f9238f8a5 fix(charts): preserve time filter for expression axes (#42052)
add beb9d536873 fix(plugin-chart-echarts): use echarts 5.6.0 i18n export path for locale import (#42055)
add e28b259de00 fix(semantic-layers): expose time grains in Explore for SemanticView datasources (#41456)
add c6da740ce26 fix(app-root): restore legacy redirects for HEAD and the /superset app root (#42015)
add da518d7a107 fix(a11y): associate Description label with TagModal input (#42034)
add e564389a01d fix(a11y): associate Name label with input in CssTemplateModal (#42081)
add 689fc34ac25 fix: replace deprecated appbuilder.app with current_app in test_explore_redirect (#42086)
add 6fe4655ba2b fix(semantic-layers): separate grain and offset time-axis resolvers (#42093)
add c540f782a3d fix(ci): remove Python 3.10 from the test matrix to unblock CI (#42058)
add 1f786f19499 chore(deps): bump websocket-driver from 0.7.4 to 0.7.5 in /superset-frontend (#42094)
add 1b0c6aaed36 chore(a11y): enable jsx-a11y/click-events-have-key-events as error (#42009)
add 2bbb7d06386 feat(mcp): histogram and box plot chart type plugins (#41860)
add 8ce6d429428 feat(mcp): add restore_chart and restore_dashboard tools (#41842)
add 409605de708 fix(plugin-chart-echarts): key Mixed Timeseries label maps by rendered series names (#41933)
add d57569c54a0 feat(reports): add XLSX (Excel) attachments for Alerts & Reports (#41424)
add 635b18103dc fix(reports): null-guard execution against missing target (#39973)
add 86030485180 fix(dashboard): block dependent filter from fetching until defaultToFirstItem parent selects (#40978)
add 13d38a9cbdb test(security): assert intended trailing-slash behavior of security API (#29934) (#41965)
add f697a0c24de test(charts): assert drill-to-detail carries applied filters (#28562) (#41960)
add aea4585c6d3 fix(embedded-sdk): handle malformed JWT refresh timing (#40490)
add 2f7afe4b47d feat(mcp): deleted_state trash listing for list_charts and list_dashboards (#41855)
add de300c70b9f test(app-root): close two blind spots in the subdirectory redirect tests (#42016)
add e84f8707872 chore(deps-dev): bump @formatjs/intl-durationformat from 0.10.15 to 0.10.16 in /superset-frontend (#42105)
add 3b7647eb6ec fix(alerts): remove double border on InputNumber fields in report modal (#42090)
add 059f6944eb7 fix(migration): use non-deprecated sqlalchemy.orm.declarative_base (#42080)
add 661535e3909 refactor: automatically load with engine/connection (#41980)
add 2dfd08fdb3e fix(plugin-chart-echarts): clarify Tooltip sort by metric description for stacked charts (#42106)
add 33bc35d1354 feat(i18n): backfill Italian (it) translations (AI-generated, needs review) (#42101)
add 5b57eb38d21 feat(i18n): backfill Chinese (Traditional) (zh_TW) translations (AI-generated, needs review) (#42102)
add 6f154377d77 feat(i18n): backfill Romanian (ro) translations (AI-generated, needs review) (#42100)
add b459601ceb5 feat(i18n): backfill missing translations across 24 catalogs (AI-generated, needs review) (#42099)
add 9e38c1dd13d chore(a11y): enable jsx-a11y/no-static-element-interactions as error (#42096)
add 30b93ab7432 fix(frontend): fix edit/delete permissions for charts, dashboards, and datasets (#18870) (#32981) (#32995)
add edca579625a fix(alerts): show typed text in email recipients selector (#42091)
add c45b9002e64 feat(mcp): register /health HTTP endpoint (#41755)
add 50672304840 chore(lint): display import/no-duplicates lint rule violation as error (#42042)
add 20e6dfd37df fix(dashboard): seed default active tab path at hydration (#42075)
add 9f8e1508ca6 fix(plugin-chart-echarts): show forecast tooltip values when they equal zero (#41311)
add f467d36a24c fix(i18n): accept script subtags (e.g. sr_Latn) in backfill_po language codes (#42103)
add 157ef61fd83 fix(charts): render time comparison without a time grain (#42054)
add dbef0c3feea fix(plugin-chart-ag-grid-table): render Show summary totals row on ag-grid 36 (#42115)
add 7eab41f9048 chore(deps-dev): bump prettier from 3.9.4 to 3.9.5 in /superset-websocket (#42134)
add ba309fd016f chore(deps-dev): bump prettier from 3.9.4 to 3.9.5 in /superset-frontend (#42133)
add 778800ba821 chore(deps): bump mapbox-gl from 3.25.0 to 3.26.0 in /superset-frontend (#42132)
add 9bb0e376b36 chore(deps): bump docusaurus-plugin-openapi-docs from 5.1.0 to 5.1.1 in /docs (#42131)
add 8d36dca9e83 chore(deps): bump react-diff-viewer-continued from 4.2.2 to 4.3.0 in /superset-frontend (#42130)
add bef03fb8508 chore(deps-dev): bump prettier from 3.9.4 to 3.9.5 in /docs (#42128)
add 929ec58276f chore(deps): bump docusaurus-theme-openapi-docs from 5.1.0 to 5.1.1 in /docs (#42129)
add 60fb1c6f019 docs(mcp): document all 7 generate_chart chart_type values, fix stale config comment (#41599)
add 9ccd365652a feat(echarts): respect time grain in time-series tooltips (#41350)
add 69b144ec16a feat(dashboards): Add open graph metadata for dashboards (#33550)
add fc506c06daa feat: added email delivery of XLSX reports (#40885)
add 905b20a3f2c fix(ci): retry change_detector GitHub API calls on transient errors (#42138)
add c0781ba3164 chore(i18n): update Russian translations (#41885)
add c05ac138fb9 fix(table): prevent pagination reset on cell click (#42136)
add 9f230bcfc0c fix(cli): add --username option to import-directory command (#40994)
add f3255c46ac8 feat(mcp): add dashboard owner, role, and certification management tools (#41606)
add 73aa8ef280d docs(mcp): fix instruction/docstring drift and annotation metadata in mcp_service (#41922)
add eef3dac72f8 fix(nav): prevent top navbar from flashing to vertical layout on load (#40781)
add f8cfa459efb fix(presto): fix latest_sub_partition guard bypass + escape partition filter values (#41877)
add a99c98c6fee feat(mcp): waterfall chart type plugin (#42070)
add 5b837e844e9 fix(sqla): cast native UUID columns to string for LIKE/ILIKE filters (#41804)
add c84a154b524 feat(helm): support additive extra init containers (#42114)
add 5750d82426c fix(pandas_postprocessing): avoid FutureWarning for mean/median in boxplot (#42004)
add 5bf26f77f82 fix(label): restore spacing between icon and label text (#42141)
add 6a330c251b3 chore(deps): bump redis from 5.3.1 to 8.0.1 (#41813)
add 91f814abead feat(pie): add the ability to make half a donut (#35459)
add 68297886d42 fix(ci): stop concurrency cancellation from bricking required checks on approval-gated PRs (#42148)
add ce8d4397cdd test(jinja): prove current_user_* macros produce collision-free cache keys (#42122)
add 25f6c6c80bc fix(pivot-table): add bottom border to last grouped row (#36081)
add b432f8c9175 fix(docs): use modern driver package for CrateDB (#42125)
add 0f61d9a3fb8 fix(bigquery): ensure BigQuery client uses project from engine URI (#41975)
add 45354994a62 build(deps): update @rjsf deps to v6 (#41955)
add bda62cb28df chore(deps-dev): bump hdbcli from 2.29.23 to 2.29.25 (#42170)
add e495fd80f62 chore(deps-dev): bump eslint from 10.6.0 to 10.7.0 in /superset-frontend (#42188)
add cce77b42f64 chore(deps-dev): bump @formatjs/intl-durationformat from 0.10.16 to 0.10.17 in /superset-frontend (#42184)
add f6acf68dfaa chore(deps): bump react-intersection-observer from 10.0.3 to 10.1.0 in /superset-frontend (#42181)
add 8299e7f87c0 chore(deps-dev): bump storybook from 10.4.6 to 10.5.0 in /superset-frontend (#42185)
add dab5f308425 chore(deps): bump @docusaurus/faster from 3.10.1 to 3.10.2 in /docs (#42179)
add a58012fc0f2 chore(deps): bump the docusaurus-openapi group in /docs with 2 updates (#42195)
add 79eff6b6f12 chore(deps): bump greenlet from 3.5.1 to 3.5.3 (#42166)
add b6ce28ff729 chore(deps): bump typing-extensions from 4.15.0 to 4.16.0 (#42165)
add 3c233946759 chore(deps-dev): bump eslint from 10.6.0 to 10.7.0 in /superset-websocket (#42159)
add 74703906df3 chore(deps): bump dom-to-image-more from 3.10.0 to 3.10.2 in /superset-frontend (#42180)
add 42e5640f609 chore(deps-dev): update nzalchemy requirement from <11.2,>=11.0.2 to >=11.1.2,<11.2 (#42164)
add 2ada286ee92 chore(deps-dev): update pydynamodb requirement from >=0.4.2 to >=0.8.2 (#42162)
add 023b60c8f01 chore(deps-dev): bump pandas-gbq from 0.19.1 to 0.35.0 (#42161)
add ff1cf5f24ed fix(table): hide search dropdown when search box is disabled (#41772)
add 3e0f9e60c0e fix(charts): preserve minute/second precision in X-axis time labels f… (#41505)
add 0a66e4ea2d7 fix(helm): support initContainers in supersetWebsockets (#42201)
add fb29db61192 fix(sqllab): preserve database state on SET_DATABASES (#41281)
add b9ede492b7e chore(lint): toggle import/named and import/export lint rules to error level (#42189)
add 6c13ab66574 feat(ci): optimize Storybook testing in CI by replacing `http-server` with Python3 static server (#41956)
add a83171bce6b fix(database): capture result metadata after fetch (#42127)
add caf017bd0b3 feat(versioning): cross-entity version activity view (#41076)
add 5ee4a81906e feat(helm): add Superset MCP server templates (#40507)
add 4e098b6f385 fix(ag-grid-table): use t('Main') for time comparison column keys to fix i18n (#40681)
add 751f5eb663f fix(dashboard): disable Discard button when there are no unsaved changes (#40832)
add cd045886d08 feat(helm): add Gateway API HTTPRoute support (#41073)
add c4d50472a9b fix(login): oauth and ldap login ignoring superset_app_root (#34657)
add 42a2aede78d chore(deps): bump pandas from 2.1.4 to 2.3.3 (#42192)
add 9e9b7c4bbda feat(ci): run helm-unittest on pull requests (#42206)
add 36dbff091f4 refactor: do not cascade to TaggedObject (#42223)
add 3e40bebba86 fix(import): enforce write permission for objects created by legacy import paths (#42205)
add 09148d0af6b fix(time-table): correctly sort computed columns (#41976)
add 8b415502cf7 chore(deps): bump chrono-node from 2.9.1 to 2.10.0 in /superset-frontend (#42235)
add 19588826c8a chore(deps-dev): bump baseline-browser-mapping from 2.10.42 to 2.10.43 in /superset-frontend (#42233)
add 9e8b9ac8cf5 chore(deps-dev): bump tsx from 4.23.0 to 4.23.1 in /superset-frontend (#42232)
add e044d7783a0 chore(deps): bump dompurify from 3.4.11 to 3.4.12 in /superset-frontend (#42231)
add b5ae7cbd0d5 chore(deps): bump caniuse-lite from 1.0.30001803 to 1.0.30001805 in /docs (#42228)
add 7e63b29741a chore(deps): bump antd from 6.5.0 to 6.5.1 in /docs (#42226)
add 277c814c5ac fix(i18n): review and complete Portuguese (pt_PT) translation catalog (#42137)
add eed41b64359 chore(deps): bump actions/setup-node from 6.4.0 to 7.0.0 (#42229)
add ceffbe80f9b chore(deps): bump hot-shots from 16.0.0 to 17.0.0 in /superset-websocket (#42236)
add 57dc3c0208b chore(deps): bump antd from 6.5.0 to 6.5.1 in /superset-frontend (#42234)
add 19ca088de63 chore(deps): bump baseline-browser-mapping from 2.10.42 to 2.10.43 in /docs (#42227)
add c1e660fac84 fix(databases): reset import file entry after invalid file error (#42240)
add 5a17ae12247 chore: drop Python 3.10 support, require Python 3.11+ (#42045)
add 515dfef9554 fix(dashboard import): Importing existing dashboard via UI won't update charts and datasets (#34880)
add f03a66db9c9 fix(dataset): apply HOURS OFFSET to all temporal columns, not just the time column (#41489)
add 3a3f087869c fix(native-filters): support double-quote escaping for comma in filte… (#39068)
add 1f81b700c13 chore(ci): upgrade GHA runner image to Ubuntu 26.04 (#42191)
add e0d0eb6d020 fix(build): deterministic echarts locale imports; fingerprint loaded config (#42154)
add 15bc73facf4 test(table): add regression test for pagination reset on cell click (#42155)
add 9178faf9b1b refactor: set cascade_backrefs=False for Query (#42210)
add 48faca5b8de refactor: set cascade_backrefs=False for SqlaTable (#42213)
add d65a816b398 chore(lint): toggle `import/no-named-as-default` to error level + fix all violations (#42214)
add 940e2c34a25 fix(Calendar Heatmap): Add Back chart options for Calendar Heatmap (#26230)
add 64053271e87 fix(views): remove stray space in @deprecated new_target log message (#42218)
add 590357731b2 feat(ci): cancel CI runs when hold label applied, re-run on removal (#40387)
add 158e3219922 chore(deps): bump axios from 1.16.0 to 1.18.1 in /superset-frontend (#42251)
add b3757870cce fix(sqllab): apply SQL_QUERY_MUTATOR in SQL Lab when MUTATE_AFTER_SPLIT is set (#41127)
add abd6dc8e448 refactor: set cascade_backrefs=False for SavedQuery (#42212)
add 034823e99b6 chore: replace deprecated datetime.utcnow()/utcfromtimestamp() (#41502)
add b4529c2654f feat: add distance unit (#24444)
add 4b659da5c4c fix(reports): positive per-tile chart readiness check for tiled screenshots (#42119)
add 8296fe8ce46 fix(home): restore navigation for saved query cards (#41912)
add e4005f02c6b fix(sqla): render Jinja templates in calculated columns used via orderby adhoc metrics (#41870)
add 2d3cbc162e4 fix(db_engine_specs): map var_string to STRING for MySQL/StarRocks (#41868)
add a1d4cda0cb6 chore(deps-dev): bump typescript-eslint from 8.63.0 to 8.64.0 in /docs in the typescript-eslint group (#42259)
add bafe5ad9ba3 chore(deps): bump actions/setup-java from 5.5.0 to 5.6.0 (#42260)
add f7517168675 fix(trino): quote nested ROW field paths per-segment in physical column expressions (#41946)
add 6c58afe6ac4 refactor: do not cascade to TableColumn (#42222)
add 00cb3037e76 feat(dashboard): export dashboard chart data to Excel (async, S3 + email) (#41133)
add 5efbd5b157a chore(deps-dev): bump brace-expansion from 5.0.6 to 5.0.7 in /superset-websocket (#42267)
add 7f4d151a37d chore(deps): bump body-parser from 2.2.1 to 2.3.0 in /superset-websocket/utils/client-ws-app (#42264)
add 3fa7cc59862 chore(deps): bump react-diff-viewer-continued from 4.3.0 to 4.4.0 in /superset-frontend (#42263)
add 666b6805c40 test(sql): prove Oracle GROUP BY stays explicit for virtual-dataset charts (#42255)
add b362d360193 chore: remove deck.gl JavaScript tooltip controls and ENABLE_JAVASCRIPT_CONTROLS (#42126)
add df34b5d2775 fix(drill-detail): paginate Elasticsearch samples via engine cursor (#39509)
add 1a862476e1e fix(dashboard): add cacheKey, dashboardId, and format context to screenshot download error logs (#42121)
add f999afaac01 fix(mcp): coerce float rowcount to int in ChartData to prevent PydanticSerializationError (#42140)
add e1a265447f6 fix(charts): use chart name in CSV/XLSX/zip export filenames (#42193)
add f9378baba8d test(sqla): add the jinja orderby calculated column to the session (#42274)
add 706a65cb028 fix(docs): allow *.run.app in CSP for the Kapa widget backend (#42276)
add f2967264d28 fix(ci): diff pre-commit changed files against the live base branch tip (#42152)
add 40a13883ea6 refactor: do not cascade to SqlMetric (#42221)
add 0dd06f3b7b3 fix: dashboard filter regress (#35218)
add d6be17b18c7 fix(sqllab): dialect-specific quoting for autocomplete identifiers
add b67d460ff97 refactor(sqllab): move identifier quoting to the database engine spec
add 840359256cd test: fix test_available expectations for identifier_quote
add e8381ac2a3d fix: correct Google Sheets identifier_quote expectation, add type hints
add e9455ed993f fix(sqllab): include engine_information in sqllab bootstrap DATABASE_KEYS
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 (94a8933c235)
\
N -- N -- N refs/heads/fix/followup-41199-follow-up-from-41199-fix-sqllab-quote-au (e9455ed993f)
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/CODEOWNERS | 14 +-
.github/ISSUE_TEMPLATE/bug-report.yml | 3 +-
.github/actions/file-changes-action | 1 -
.github/actions/setup-backend/action.yml | 2 -
.github/actions/setup-supersetbot/action.yml | 2 +
.github/dependabot.yml | 356 +-
.github/workflows/bump-python-package.yml | 6 +-
.github/workflows/check-python-deps.yml | 4 +-
.github/workflows/check_db_migration_confict.yml | 2 +-
.github/workflows/codeql-analysis.yml | 8 +-
.github/workflows/dependency-review.yml | 4 +-
.github/workflows/docker.yml | 19 +-
.github/workflows/embedded-sdk-release.yml | 4 +-
.github/workflows/embedded-sdk-test.yml | 4 +-
.github/workflows/generate-FOSSA-report.yml | 6 +-
.github/workflows/github-action-validator.yml | 11 +-
.github/workflows/hold-label-ci-gate.yml | 115 +
.github/workflows/issue_creation.yml | 2 +-
.github/workflows/labeler.yml | 4 +-
.github/workflows/latest-release-tag.yml | 2 +-
.github/workflows/license-check.yml | 4 +-
.github/workflows/no-hold-label.yml | 2 +-
.github/workflows/pr-lint.yml | 12 +-
.github/workflows/pre-commit.yml | 122 +-
.github/workflows/release.yml | 10 +-
.../workflows/scheduled-docker-image-refresh.yml | 12 +-
.github/workflows/showtime-cleanup.yml | 7 +-
.github/workflows/showtime-trigger.yml | 7 +-
.github/workflows/superset-app-cli.yml | 2 +-
.github/workflows/superset-docs-deploy.yml | 8 +-
.github/workflows/superset-docs-verify.yml | 8 +-
.github/workflows/superset-e2e.yml | 15 +-
.github/workflows/superset-extensions-cli.yml | 4 +-
.github/workflows/superset-frontend.yml | 14 +-
...t-helm-lint.yml => superset-helm-lint-test.yml} | 21 +-
.github/workflows/superset-helm-release.yml | 4 +-
.github/workflows/superset-playwright.yml | 6 +-
.../workflows/superset-python-integrationtest.yml | 12 +-
.github/workflows/superset-python-presto-hive.yml | 6 +-
.github/workflows/superset-python-unittest.yml | 14 +-
.../workflows/superset-translations-comment.yml | 2 +-
.github/workflows/superset-translations.yml | 6 +-
.github/workflows/superset-websocket.yml | 6 +-
.github/workflows/supersetbot.yml | 2 +-
...sync-requirements-for-python-dep-upgrade-pr.yml | 2 +-
.github/workflows/tag-release.yml | 12 +-
.github/workflows/tech-debt.yml | 6 +-
.github/workflows/welcome-new-users.yml | 2 +-
.gitmodules | 3 -
.pre-commit-config.yaml | 15 +-
.rat-excludes | 1 +
Dockerfile | 4 +-
Makefile | 6 +-
README.md | 17 +-
RELEASING/Dockerfile.from_local_tarball | 2 +-
RELEASING/Dockerfile.from_svn_tarball | 2 +-
RELEASING/Dockerfile.make_docs | 2 +-
RELEASING/Dockerfile.make_tarball | 2 +-
RESOURCES/INTHEWILD.yaml | 39 +-
UPDATING.md | 388 +
docker-compose-light.yml | 2 +-
docker-compose-non-dev.yml | 2 +-
docker-compose.yml | 2 +-
docker/pythonpath_dev/superset_config.py | 1 +
docs/.nvmrc | 2 +-
docs/admin_docs/configuration/alerts-reports.mdx | 25 +-
docs/admin_docs/configuration/aws-iam.mdx | 20 +-
docs/admin_docs/configuration/cache.mdx | 12 +-
.../configuration/configuring-superset.mdx | 18 +
docs/admin_docs/configuration/mcp-server.mdx | 4 +-
.../configuration/networking-settings.mdx | 6 +-
docs/admin_docs/installation/docker-compose.mdx | 5 +-
docs/admin_docs/installation/kubernetes.mdx | 12 +-
docs/admin_docs/security/securing_superset.mdx | 2 +-
docs/admin_docs/security/security.mdx | 155 +-
.../components/design-system/metadatabar.mdx | 16 +-
.../contributing/development-setup.md | 2 +-
docs/developer_docs/contributing/howtos.md | 28 +-
.../developer_docs/contributing/issue-reporting.md | 4 +-
.../guidelines/backend-style-guidelines.md | 10 +-
.../guidelines/backend/dao-style-guidelines.md | 8 +-
docs/developer_docs/index.md | 2 +-
docs/developer_docs/testing/backend-testing.md | 2 +-
docs/docs/faq.mdx | 21 +-
docs/docs/index.mdx | 17 +-
.../creating-your-first-dashboard.mdx | 8 +-
.../using-superset/exporting-dashboard-data.mdx | 99 +
docs/docusaurus.config.ts | 2 +-
docs/package.json | 63 +-
docs/src/components/databases/types.ts | 2 +-
docs/src/data/databases.json | 2 +-
docs/src/pages/inTheWild.tsx | 3 +-
docs/src/pages/index.tsx | 3 +-
docs/src/types/yaml.d.ts | 4 +-
docs/src/webpack.extend.ts | 58 +-
docs/static/.htaccess | 10 +-
docs/static/feature-flags.json | 37 +-
docs/static/img/logos/camptocamp.svg | Bin 0 -> 14528 bytes
docs/static/img/logos/craig.png | Bin 0 -> 40696 bytes
docs/static/img/logos/geo2france.png | Bin 0 -> 4687 bytes
docs/static/img/logos/geobretagne.svg | Bin 0 -> 7203 bytes
docs/static/img/logos/georchestra.svg | Bin 0 -> 12615 bytes
docs/static/img/logos/jDev.svg | Bin 0 -> 26135 bytes
docs/static/img/logos/mel.jpg | Bin 0 -> 27292 bytes
docs/static/img/logos/pi-Geosolutions.png | Bin 0 -> 22032 bytes
.../img/logos/rennes-ville-metropole_noir.svg | Bin 0 -> 4242 bytes
docs/tsconfig.json | 1 -
.../version-6.0.0/configuration/alerts-reports.mdx | 2 +-
.../version-6.0.0/configuration/databases.mdx | 74 +
.../version-6.0.0/intro.md | 17 +-
.../version-6.1.0/index.mdx | 17 +-
.../version-6.1.0/intro.md | 17 +-
docs/yarn.lock | 9919 ++++-----
helm/superset/Chart.yaml | 2 +-
helm/superset/README.md | 147 +-
helm/superset/README.md.gotmpl | 15 +
helm/superset/UPGRADING.md | 161 +
helm/superset/templates/NOTES.txt | 6 +
helm/superset/templates/_helpers.tpl | 721 +-
helm/superset/templates/configmap-superset.yaml | 8 +-
helm/superset/templates/deployment-beat.yaml | 35 +-
helm/superset/templates/deployment-flower.yaml | 30 +-
...{deployment-worker.yaml => deployment-mcp.yaml} | 126 +-
helm/superset/templates/deployment-worker.yaml | 39 +-
helm/superset/templates/deployment-ws.yaml | 29 +-
helm/superset/templates/deployment.yaml | 41 +-
helm/superset/templates/hpa-node.yaml | 8 +-
helm/superset/templates/hpa-worker.yaml | 8 +-
.../templates/{ingress.yaml => httproute.yaml} | 82 +-
helm/superset/templates/ingress.yaml | 17 +-
helm/superset/templates/init-job.yaml | 23 +-
helm/superset/templates/pdb-beat.yaml | 8 +-
helm/superset/templates/pdb-flower.yaml | 8 +-
helm/superset/templates/{pdb.yaml => pdb-mcp.yaml} | 14 +-
helm/superset/templates/pdb-worker.yaml | 8 +-
helm/superset/templates/pdb-ws.yaml | 8 +-
helm/superset/templates/pdb.yaml | 8 +-
helm/superset/templates/secret-env.yaml | 43 +-
.../superset/templates/secret-superset-config.yaml | 12 +-
helm/superset/templates/secret-ws.yaml | 8 +-
helm/superset/templates/service-flower.yaml | 11 +-
.../templates/{service.yaml => service-mcp.yaml} | 33 +-
helm/superset/templates/service-ws.yaml | 11 +-
helm/superset/templates/service.yaml | 11 +-
helm/superset/templates/serviceaccount.yaml | 8 +-
helm/superset/tests/checksum_test.yaml | 154 +
helm/superset/tests/config_test.yaml | 94 +
.../superset/tests/deprecation_test.yaml | 24 +-
helm/superset/tests/init_containers_test.yaml | 206 +
helm/superset/tests/initscript_test.yaml | 63 +
helm/superset/tests/labels_test.yaml | 639 +
helm/superset/tests/secret_env_test.yaml | 71 +
.../superset/tests/serviceaccount_test.yaml | 21 +-
.../superset/tests/values_defaults_test.yaml | 23 +-
helm/superset/values.schema.json | 140 +
helm/superset/values.yaml | 373 +-
pyproject.toml | 101 +-
pytest.ini | 25 +-
requirements/base.in | 2 +-
requirements/base.txt | 47 +-
requirements/development.txt | 149 +-
.../superset_core/common => scripts}/__init__.py | 0
scripts/benchmark_migration.py | 9 +-
scripts/change_detector.py | 39 +-
scripts/check-env.py | 4 +-
scripts/stylelint.sh | 49 +
scripts/translations/apply_do_not_translate.py | 128 +
scripts/translations/babel_update.sh | 37 +
scripts/translations/backfill_po.py | 186 +-
scripts/translations/build_translation_index.py | 14 +-
.../translations/check_translation_regression.py | 229 +-
superset-core/README.md | 2 +-
superset-core/pyproject.toml | 5 +-
superset-core/src/superset_core/common/daos.py | 54 +-
superset-core/src/superset_core/common/models.py | 62 +
.../src/superset_core/semantic_layers/types.py | 2 +-
superset-embedded-sdk/.nvmrc | 2 +-
superset-embedded-sdk/CONTRIBUTING.md | 1 +
superset-embedded-sdk/README.md | 44 +-
superset-embedded-sdk/babel.config.js | 6 +-
superset-embedded-sdk/package-lock.json | 13067 +++---------
superset-embedded-sdk/package.json | 19 +-
superset-embedded-sdk/release-if-necessary.js | 20 +-
superset-embedded-sdk/src/const.ts | 6 +-
.../src/guestTokenRefresh.test.ts | 31 +-
superset-embedded-sdk/src/guestTokenRefresh.ts | 30 +-
superset-embedded-sdk/src/index.ts | 107 +-
superset-embedded-sdk/src/withTimeout.test.ts | 7 +-
superset-embedded-sdk/tsconfig.json | 8 +-
superset-embedded-sdk/webpack.config.js | 16 +-
superset-extensions-cli/README.md | 2 +-
superset-extensions-cli/pyproject.toml | 3 +-
superset-frontend/.storybook/main.mjs | 2 +-
superset-frontend/.storybook/preview.jsx | 2 +-
superset-frontend/.storybook/shared/Expandable.tsx | 57 +-
superset-frontend/.storybook/shared/VerifyCORS.tsx | 113 +-
superset-frontend/.stylelintignore | 9 +
superset-frontend/babel.config.js | 1 -
.../cypress-base/cypress/e2e/dashboard/utils.ts | 15 +-
.../cypress-base/cypress/e2e/explore/utils.ts | 10 +-
.../cypress-base/cypress/fixtures/charts.json | 4 -
.../cypress-base/cypress/support/directories.ts | 30 +-
.../cypress-base/cypress/utils/urls.ts | 9 +-
superset-frontend/jest.config.js | 8 +-
superset-frontend/oxlint.json | 56 +-
superset-frontend/package-lock.json | 8405 ++++----
superset-frontend/package.json | 108 +-
.../packages/generator-superset/package.json | 2 +-
.../packages/superset-core/package.json | 5 +-
.../superset-core/src/theme/GlobalStyles.tsx | 22 +-
.../superset-core/src/theme/Theme.test.tsx | 121 +-
.../packages/superset-core/src/theme/Theme.tsx | 2 +-
.../src/theme/__snapshots__/Theme.test.tsx.snap | 730 +
.../packages/superset-core/src/theme/types.ts | 31 +
.../superset-core/src/theme/utils/index.ts | 14 +-
.../src/translation/TranslatorSingleton.test.ts | 79 +
.../src/translation/TranslatorSingleton.ts | 29 +
.../superset-core/src/translation/types/index.ts | 22 +-
.../packages/superset-core/src/utils/isBlank.ts | 2 +-
.../superset-ui-chart-controls/package.json | 5 +-
.../src/components/CertifiedIconWithTooltip.tsx | 2 +-
.../superset-ui-chart-controls/src/fixtures.ts | 2 +-
.../src/operators/renameOperator.ts | 2 +-
.../src/operators/sortOperator.ts | 2 +-
.../src/operators/utils/timeOffset.ts | 6 +-
.../src/shared-controls/customControls.tsx | 7 +-
.../src/shared-controls/dndControls.tsx | 4 +-
.../src/shared-controls/index.ts | 3 +-
.../src/shared-controls/sharedControls.tsx | 2 +-
.../superset-ui-chart-controls/src/types.ts | 15 +-
.../src/utils/D3Formatting.ts | 3 +
.../src/utils/getColorFormatters.ts | 2 +-
.../test/operators/histogramOperator.test.ts | 2 +-
.../test/operators/renameOperator.test.ts | 24 +
.../test/operators/utils/timeOffset.test.ts | 23 +
.../test/shared-controls/customControls.test.tsx | 36 +-
.../packages/superset-ui-core/package.json | 27 +-
.../src/chart/clients/ChartClient.ts | 4 +-
.../components/Matrixify/MatrixifyGridCell.tsx | 2 +-
.../Matrixify/MatrixifyGridRenderer.test.tsx | 3 +-
.../components/Matrixify/MatrixifyGridRenderer.tsx | 3 +-
.../src/chart/components/StatefulChart.tsx | 7 +-
.../chart/stories/ChartDataProvider.stories.tsx | 3 +-
.../src/color/CategoricalColorNamespace.ts | 2 +-
.../src/color/CategoricalColorScale.ts | 20 +-
.../packages/superset-ui-core/src/color/index.ts | 1 -
.../components/ActionButton/ActionButton.test.tsx | 14 +-
.../src/components/ActionButton/index.tsx | 3 +
.../AsyncAceEditor/AsyncAceEditor.stories.tsx | 8 +-
.../AsyncAceEditor/AsyncAceEditor.test.tsx | 193 +
.../AsyncAceEditor/emojiWidthPatch.test.ts | 219 +
.../components/AsyncAceEditor/emojiWidthPatch.ts | 283 +
.../src/components/AsyncAceEditor/index.tsx | 82 +-
.../src/components/AsyncEsmComponent/index.tsx | 10 +-
.../src/components/Button/Button.stories.tsx | 5 +
.../src/components/Button/Button.test.tsx | 64 +-
.../src/components/Button/index.tsx | 80 +-
.../src/components/Button/types.ts | 19 +-
.../src/components/CodeEditor/index.tsx | 8 +-
.../src/components/Collapse/Collapse.test.tsx | 6 +-
.../src/components/Collapse/Collapse.tsx | 4 +-
.../src/components/CronPicker/CronPicker.test.tsx | 24 +-
.../src/components/CronPicker/index.tsx | 6 +-
.../src/components/DesignSystem.stories.tsx | 6 +-
.../DropdownButton/DropdownButton.stories.tsx | 5 +
.../DropdownButton/DropdownButton.test.tsx | 76 +
.../src/components/DropdownButton/index.tsx | 25 +-
.../src/components/DropdownButton/types.ts | 8 +
.../DropdownContainer.stories.tsx | 2 +-
.../DropdownContainer/DropdownContainer.tsx | 13 +-
.../DropdownContainer/Overview.stories.tsx | 6 +-
.../src/components/DynamicEditableTitle/index.tsx | 20 +-
.../src/components/EmptyState/index.tsx | 8 +-
.../src/components/FaveStar/index.tsx | 1 +
.../src/components/Form/LabeledErrorBoundInput.tsx | 10 +-
.../superset-ui-core/src/components/Form/types.ts | 9 +-
.../src/components/IconTooltip/index.tsx | 1 +
.../src/components/Icons/AntdEnhanced.tsx | 15 +-
.../src/components/Icons/Icons.stories.tsx | 6 +-
.../src/components/Icons/index.tsx | 3 +-
.../src/components/InfoTooltip/index.tsx | 2 +-
.../src/components/Label/Label.test.tsx | 35 +
.../src/components/Label/index.tsx | 39 +-
.../superset-ui-core/src/components/Label/types.ts | 7 +-
.../src/components/Loading/types.ts | 5 +-
.../src/components/MetadataBar/ContentConfig.tsx | 6 +-
.../src/components/MetadataBar/ContentType.ts | 17 +-
.../components/MetadataBar/MetadataBar.stories.tsx | 22 +-
.../components/MetadataBar/MetadataBar.test.tsx | 12 +-
.../src/components/MetadataBar/MetadataBar.tsx | 2 +-
.../MetadataBar/MetadataBarOverview.stories.tsx | 50 +-
.../src/components/MetadataBar/constants.ts | 2 +-
.../src/components/Modal/Modal.tsx | 86 +-
.../components/ModalTrigger/ModalTrigger.test.tsx | 48 +-
.../src/components/ModalTrigger/index.tsx | 63 +-
.../PageHeaderWithActions.test.tsx | 4 +-
.../src/components/PageHeaderWithActions/index.tsx | 5 +-
.../src/components/PopoverSection/index.tsx | 9 +-
.../src/components/RefreshLabel/index.tsx | 1 +
.../src/components/SafeMarkdown/SafeMarkdown.tsx | 7 +-
.../src/components/Select/AsyncSelect.test.tsx | 75 +-
.../src/components/Select/AsyncSelect.tsx | 274 +-
.../src/components/Select/Select.stories.tsx | 5 +-
.../src/components/Select/Select.test.tsx | 166 +-
.../src/components/Select/Select.tsx | 288 +-
.../src/components/Select/constants.test.ts | 48 +-
.../src/components/Select/constants.ts | 51 +-
.../src/components/Select/styles.tsx | 22 +-
.../src/components/Select/types.ts | 14 +-
.../src/components/Select/utils.test.ts | 140 +
.../src/components/Select/utils.tsx | 75 +-
.../src/components/Table/TableOverview.stories.tsx | 34 +-
.../src/components/Table/VirtualTable.tsx | 4 +-
.../ActionCell/ActionCell.overview.tsx | 6 +-
.../Table/utils/InteractiveTableUtils.ts | 2 +-
.../TableCollection/TableCollection.test.tsx | 9 +-
.../src/components/TableCollection/index.tsx | 18 +-
.../src/components/TableView/TableView.tsx | 2 +-
.../src/components/Tabs/Tabs.test.tsx | 18 +-
.../superset-ui-core/src/components/Tabs/Tabs.tsx | 22 +-
.../TelemetryPixel/TelemetryPixel.test.tsx | 25 +-
.../src/components/TelemetryPixel/index.tsx | 23 +-
.../src/components/ThemedAgGridReact/index.tsx | 1 +
.../src/components/TimezoneSelector/index.tsx | 14 +-
.../src/components/Tooltip/Tooltip.stories.tsx | 2 +-
.../src/components/Tooltip/index.tsx | 3 +-
.../TooltipParagraph/TooltipParagraph.test.tsx | 37 +-
.../src/components/antdDomContract.test.tsx | 240 +
.../src/connection/SupersetClientClass.ts | 26 +-
.../src/connection/callApi/parseResponse.ts | 35 +-
.../superset-ui-core/src/connection/index.ts | 3 +
.../src/connection/normalizeBackendUrls.ts | 59 +
.../superset-ui-core/src/connection/types.ts | 23 +-
.../src/currency-format/CurrencyFormatter.ts | 38 +-
.../src/currency-format/currencyLocale.ts | 52 +
.../superset-ui-core/src/currency-format/index.ts | 6 +
.../src/currency-format/symbolPosition.ts | 93 +
.../superset-ui-core/src/currency-format/types.ts | 8 +-
.../superset-ui-core/src/models/Registry.ts | 4 +-
.../factories/createLengthFormatter.ts} | 52 +-
.../superset-ui-core/src/number-format/index.ts | 1 +
.../number-format/stories/NumberFormat.stories.tsx | 198 +-
.../src/query/api/legacy/getDatasourceMetadata.ts | 2 +-
.../src/query/api/v1/handleError.ts | 3 +-
.../src/query/getClientErrorObject.ts | 10 +-
.../superset-ui-core/src/query/normalizeOrderBy.ts | 2 +-
.../src/query/normalizeTimeColumn.ts | 2 +-
.../superset-ui-core/src/query/types/Dashboard.ts | 16 +-
.../superset-ui-core/src/query/types/Filter.ts | 4 +-
.../superset-ui-core/src/query/types/Metric.ts | 7 +-
.../src/query/types/PostProcessing.ts | 30 +-
.../src/query/types/QueryFormData.ts | 3 +-
.../src/time-comparison/fetchTimeRange.ts | 12 +-
.../src/time-comparison/getTimeOffset.ts | 2 +-
.../superset-ui-core/src/time-comparison/types.ts | 9 +-
.../src/time-format/stories/TimeFormat.stories.tsx | 175 +-
.../src/utils/convertKeysToCamelCase.ts | 2 +-
.../superset-ui-core/src/utils/featureFlags.ts | 5 +-
.../src/utils/handleKeyboardActivation.test.ts | 62 +
.../src/utils/handleKeyboardActivation.ts | 48 +
.../superset-ui-core/src/utils/html.test.tsx | 17 +
.../packages/superset-ui-core/src/utils/index.ts | 1 +
.../superset-ui-core/src/utils/lruCache.ts | 7 +-
.../superset-ui-core/src/utils/mapStyles.test.ts | 16 +
.../superset-ui-core/src/utils/mapStyles.ts | 3 +
.../packages/superset-ui-core/src/utils/merge.ts | 2 +-
.../test/chart/clients/ChartClient.test.ts | 26 +-
.../chart/components/ChartDataProvider.test.tsx | 3 +-
.../test/color/CategoricalColorScale.test.ts | 84 +-
.../test/components/SafeMarkdown.test.tsx | 2 +-
.../SupersetClientAppRootContract.test.ts | 113 +
.../test/connection/normalizeBackendUrls.test.ts | 89 +
.../test/currency-format/CurrencyFormatter.test.ts | 52 +-
.../test/currency-format/currencyLocale.test.ts | 65 +
.../test/currency-format/symbolPosition.test.ts | 74 +
.../factories/createLengthFormatter.test.ts | 68 +
.../test/number-format/index.test.ts | 2 +
.../query/api/legacy/getDatasourceMetadata.test.ts | 4 +-
.../test/query/types/PostProcessing.test.ts | 4 +-
.../packages/superset-ui-core/types/assets.d.ts | 1 +
.../packages/superset-ui-switchboard/src/index.ts | 4 +-
.../playwright/components/core/Select.ts | 2 +-
.../components/modals/NativeFiltersConfigModal.ts | 86 +
.../playwright/components/modals/index.ts | 1 +
.../generators/docs/docs-screenshots.spec.ts | 3 +-
.../playwright/helpers/api/dataset.ts | 6 +-
.../playwright/pages/ChartCreationPage.ts | 9 +-
.../playwright/pages/DashboardPage.ts | 56 +-
superset-frontend/playwright/pages/ExplorePage.ts | 46 +
.../pages/HomePage.ts} | 37 +-
.../tests/dashboard/clear-all-filters.spec.ts | 22 +-
.../tests/dashboard/delete-display-control.spec.ts | 233 +
.../playwright/tests/dashboard/theme.spec.ts | 35 +-
.../tests/dataset/create-dataset.spec.ts | 3 +-
.../experimental/explore/results-tab-reuse.spec.ts | 123 +
.../playwright/tests/home/welcome.spec.ts | 37 +
superset-frontend/playwright/utils/urls.ts | 2 +-
.../legacy-plugin-chart-calendar/src/Calendar.ts | 18 +-
.../src/controlPanel.ts | 37 +-
.../src/transformProps.ts | 4 +
.../src/CountryMap.ts | 2 +-
.../src/HorizonChart.tsx | 101 +-
.../legacy-plugin-chart-horizon/src/HorizonRow.tsx | 268 +-
.../test/HorizonChart.test.tsx | 51 +
.../test/HorizonRow.test.tsx | 102 +
.../src/PairedTTest.tsx | 77 +-
.../src/TTestTable.tsx | 545 +-
.../test/TTestTable.test.tsx | 365 +
.../plugins/legacy-preset-chart-nvd3/package.json | 5 +-
.../legacy-preset-chart-nvd3/src/NVD3Vis.ts | 2 +-
.../src/TimePivot/controlPanel.ts | 5 +-
.../test/TimePivot/controlPanel.test.ts | 57 +
.../plugin-chart-ag-grid-table/package.json | 3 +-
.../src/AgGridTable/components/CustomHeader.tsx | 40 +-
.../src/AgGridTable/index.tsx | 36 +-
.../src/AgGridTableChart.tsx | 74 +-
.../plugin-chart-ag-grid-table/src/buildQuery.ts | 33 +-
.../plugin-chart-ag-grid-table/src/consts.ts | 8 +
.../src/controlPanel.tsx | 34 +-
.../src/renderers/NumericCellRenderer.tsx | 31 +-
.../src/styles/index.tsx | 15 +-
.../src/transformProps.ts | 125 +-
.../plugin-chart-ag-grid-table/src/types.ts | 9 +-
.../src/utils/copyCellValue.ts | 156 +
.../plugin-chart-ag-grid-table/src/utils/extent.ts | 2 +-
.../src/utils/externalAPIs.ts | 2 +
.../src/utils/getCellStyle.ts | 16 +-
.../src/utils/getColumnStateSignature.ts | 51 +
.../src/utils/getInitialFilterModel.ts | 2 +-
.../src/utils/getRowBasicColorFormatter.ts | 50 +
.../src/utils/isEqualColumns.ts | 25 +-
.../src/utils/reconcileColumnState.test.ts | 17 +
.../src/utils/useColDefs.ts | 22 +-
.../test/AgGridTableChart.test.tsx | 544 +-
.../test/buildQuery.test.ts | 129 +
.../test/cellSelectionWiring.test.tsx | 99 +
.../test/controlPanel.test.ts | 36 +
.../test/controlPanel.test.tsx | 3 +-
.../test/transformProps.test.ts | 316 +
.../test/utils/copyCellValue.test.ts | 203 +
.../test/utils/getCellStyle.test.ts | 108 +
.../test/utils/getColumnStateSignature.test.ts | 82 +
.../test/utils/getRowBasicColorFormatter.test.ts | 81 +
.../plugins/plugin-chart-cartodiagram/package.json | 3 +-
.../src/components/OlChartMap.tsx | 2 +-
.../plugin-chart-cartodiagram/src/plugin/index.ts | 3 +-
.../src/util/transformPropsUtil.ts | 2 +-
.../plugins/plugin-chart-echarts/package.json | 3 +-
.../BigNumber/BigNumberPeriodOverPeriod/PopKPI.tsx | 2 +-
.../BigNumberPeriodOverPeriod/buildQuery.ts | 2 +-
.../BigNumberPeriodOverPeriod/controlPanel.ts | 2 +-
.../BigNumber/BigNumberPeriodOverPeriod/index.ts | 3 +-
.../useOverflowDetection.ts | 2 +-
.../src/BigNumber/BigNumberViz.tsx | 4 -
.../BigNumberWithTrendline/transformProps.ts | 16 +-
.../plugin-chart-echarts/src/BigNumber/utils.ts | 2 +-
.../plugin-chart-echarts/src/BoxPlot/types.ts | 6 +-
.../src/Bubble/transformProps.ts | 11 +-
.../src/Gauge/transformProps.ts | 2 +-
.../src/Heatmap/transformProps.ts | 2 +-
.../src/Histogram/transformProps.ts | 2 +-
.../src/MixedTimeseries/EchartsMixedTimeseries.tsx | 55 +-
.../src/MixedTimeseries/buildQuery.ts | 13 +-
.../src/MixedTimeseries/controlPanel.tsx | 2 +-
.../src/MixedTimeseries/transformProps.ts | 81 +-
.../plugin-chart-echarts/src/Pie/controlPanel.tsx | 40 +
.../plugin-chart-echarts/src/Pie/transformProps.ts | 169 +-
.../plugins/plugin-chart-echarts/src/Pie/types.ts | 37 +
.../src/Radar/controlPanel.tsx | 3 +-
.../src/Timeseries/Regular/Bar/controlPanel.tsx | 9 +-
.../src/Timeseries/transformProps.ts | 28 +-
.../src/Timeseries/transformers.ts | 3 +-
.../plugin-chart-echarts/src/Waterfall/types.ts | 6 +-
.../src/components/Echart.test.tsx | 53 +-
.../plugin-chart-echarts/src/components/Echart.tsx | 86 +-
.../plugins/plugin-chart-echarts/src/controls.tsx | 2 +-
.../plugin-chart-echarts/src/utils/annotation.ts | 2 +-
.../plugin-chart-echarts/src/utils/forecast.ts | 15 +-
.../plugin-chart-echarts/src/utils/formatters.ts | 51 +-
.../plugin-chart-echarts/src/utils/legendLayout.ts | 6 +-
.../src/utils/safeEChartOptionsParser.ts | 8 +-
.../plugin-chart-echarts/src/utils/series.ts | 8 +-
.../src/utils/themeOverrides.ts | 2 +-
.../plugin-chart-echarts/src/utils/treeBuilder.ts | 6 +-
.../test/BigNumber/transformProps.test.ts | 44 +-
.../test/Bubble/transformProps.test.ts | 72 +
.../EchartsMixedTimeseries.test.tsx | 223 +
.../test/MixedTimeseries/buildQuery.test.ts | 36 +-
.../test/MixedTimeseries/transformProps.test.ts | 285 +
.../test/Pie/transformProps.test.ts | 255 +-
.../test/Timeseries/transformProps.test.ts | 175 +-
.../test/Timeseries/transformers.test.ts | 6 +-
.../test/utils/forecast.test.ts | 69 +
.../test/utils/formatters.test.ts | 118 +
.../plugin-chart-echarts/test/utils/series.test.ts | 68 +-
.../plugin-chart-echarts/types/external.d.ts | 8 +
.../plugins/plugin-chart-handlebars/package.json | 3 +-
.../src/components/Handlebars/HandlebarsViewer.tsx | 2 +-
.../plugins/plugin-chart-handlebars/src/consts.ts | 2 +-
.../src/plugin/controls/orderBy.tsx | 2 +-
.../src/plugin/controls/shared.ts | 3 +-
.../plugins/plugin-chart-pivot-table/package.json | 4 +
.../src/PivotTableChart.tsx | 84 +-
.../src/react-pivottable/Styles.ts | 4 +
.../src/react-pivottable/TableRenderers.tsx | 26 +-
.../src/react-pivottable/utilities.ts | 3 +-
.../plugins/plugin-chart-pivot-table/src/types.ts | 4 +-
.../test/PivotTableChart.test.tsx | 370 +
.../test/TableRenderer.test.tsx | 158 +
.../test/react-pivottable/tableRenders.test.tsx | 7 +-
.../plugin-chart-pivot-table/test/testData.ts | 232 +
.../test/testHelpers.tsx | 0
.../test/tsconfig.json | 0
.../plugin-chart-point-cluster-map/package.json | 2 +-
.../src/components/ScatterPlotOverlay.tsx | 8 +-
.../test/ScatterPlotOverlay.test.tsx | 52 +-
.../plugins/plugin-chart-table/package.json | 3 +-
.../plugin-chart-table/src/DataTable/DataTable.tsx | 57 +-
.../DataTable/components/SearchSelectDropdown.tsx | 17 +-
.../plugins/plugin-chart-table/src/Styles.tsx | 2 +-
.../plugins/plugin-chart-table/src/TableChart.tsx | 126 +-
.../plugins/plugin-chart-table/src/buildQuery.ts | 7 +-
.../plugin-chart-table/src/controlPanel.tsx | 5 +-
.../plugins/plugin-chart-table/src/index.ts | 4 +-
.../plugin-chart-table/src/transformProps.ts | 7 +-
.../plugins/plugin-chart-table/src/utils/extent.ts | 2 +-
.../plugin-chart-table/test/TableChart.test.tsx | 228 +-
.../plugin-chart-table/test/buildQuery.test.ts | 42 +-
.../plugin-chart-table/test/controlPanel.test.tsx | 3 +-
.../plugins/plugin-chart-word-cloud/package.json | 3 +-
.../src/chart/WordCloud.tsx | 275 +-
.../src/plugin/controls/ColorSchemeControl.tsx | 5 +-
.../plugin/controls/ColorSchemeControl/index.tsx | 2 +-
.../src/plugin/controls/RotationControl.tsx | 6 +-
.../test/WordCloud.test.tsx | 161 +
.../plugins/preset-chart-deckgl/package.json | 7 +-
.../src/CategoricalDeckGLContainer.test.tsx | 68 +
.../src/CategoricalDeckGLContainer.tsx | 90 +-
.../src/DeckGLContainer.test.tsx | 1 +
.../preset-chart-deckgl/src/DeckGLContainer.tsx | 2 +-
.../src/Multi/Multi.color.test.tsx | 245 +
.../preset-chart-deckgl/src/Multi/Multi.tsx | 60 +-
.../src/components/Legend.test.tsx | 57 +-
.../plugins/preset-chart-deckgl/src/factory.tsx | 2 +-
.../src/layers/Arc/buildQuery.ts | 16 +-
.../src/layers/Arc/controlPanel.ts | 13 -
.../src/layers/Arc/stories/Arc.stories.tsx | 7 +-
.../src/layers/Arc/transformProps.ts | 17 +-
.../src/layers/Contour/Contour.tsx | 16 +-
.../src/layers/Contour/controlPanel.ts | 13 -
.../src/layers/Geojson/Geojson.test.tsx | 44 -
.../src/layers/Geojson/Geojson.tsx | 114 +-
.../src/layers/Geojson/buildQuery.ts | 14 +-
.../src/layers/Geojson/controlPanel.ts | 145 +-
.../src/layers/Geojson/transformProps.ts | 6 +-
.../preset-chart-deckgl/src/layers/Grid/Grid.tsx | 16 +-
.../src/layers/Grid/controlPanel.ts | 13 -
.../src/layers/Grid/stories/Grid.stories.tsx | 4 -
.../src/layers/Heatmap/Heatmap.tsx | 18 +-
.../src/layers/Heatmap/controlPanel.ts | 13 -
.../preset-chart-deckgl/src/layers/Hex/Hex.tsx | 17 +-
.../src/layers/Hex/controlPanel.ts | 13 -
.../src/layers/Hex/stories/Hex.stories.tsx | 4 -
.../preset-chart-deckgl/src/layers/Path/Path.tsx | 13 +-
.../src/layers/Path/buildQuery.test.ts | 2 -
.../src/layers/Path/buildQuery.ts | 12 +-
.../src/layers/Path/controlPanel.ts | 13 -
.../src/layers/Path/stories/Path.stories.tsx | 4 -
.../src/layers/Path/transformProps.ts | 15 +-
.../src/layers/Polygon/Polygon.tsx | 9 +-
.../src/layers/Polygon/buildQuery.test.ts | 29 +-
.../src/layers/Polygon/buildQuery.ts | 9 -
.../src/layers/Polygon/controlPanel.ts | 12 +-
.../src/layers/Polygon/stories/Polygon.stories.tsx | 4 -
.../src/layers/Polygon/transformProps.test.ts | 36 +
.../src/layers/Polygon/transformProps.ts | 22 +-
.../src/layers/Scatter/buildQuery.test.ts | 17 -
.../src/layers/Scatter/buildQuery.ts | 20 +-
.../src/layers/Scatter/controlPanel.ts | 13 -
.../src/layers/Scatter/stories/Scatter.stories.tsx | 4 -
.../src/layers/Scatter/transformProps.ts | 5 +-
.../src/layers/Screengrid/Screengrid.tsx | 16 +-
.../src/layers/Screengrid/controlPanel.ts | 13 -
.../Screengrid/stories/Screengrid.stories.tsx | 4 -
.../src/layers/buildQueryUtils.ts | 20 -
.../preset-chart-deckgl/src/layers/common.test.ts | 9 +-
.../preset-chart-deckgl/src/layers/common.tsx | 17 +-
.../src/layers/spatialUtils.test.ts | 19 +-
.../preset-chart-deckgl/src/layers/spatialUtils.ts | 48 +-
.../src/utilities/HandlebarsRenderer.tsx | 2 +-
.../src/utilities/Shared_DeckGL.tsx | 90 +-
.../src/utilities/TooltipTemplateControl.tsx | 2 +-
.../src/utilities/tooltipUtils.test.tsx | 90 +
.../src/utilities/tooltipUtils.tsx | 50 +-
.../preset-chart-deckgl/src/utils/addColor.test.ts | 103 +
.../preset-chart-deckgl/src/utils/addColor.ts | 111 +
.../src/utils/crossFiltersDataMask.test.ts | 46 -
.../src/utils/crossFiltersDataMask.ts | 20 +-
.../preset-chart-deckgl/src/utils/sandbox.ts | 65 -
superset-frontend/spec/fixtures/mockCharts.ts | 7 -
.../spec/fixtures/mockDashboardInfo.js | 3 +-
.../spec/fixtures/mockDashboardState.js | 3 +-
superset-frontend/spec/fixtures/mockDatasource.ts | 4 +-
superset-frontend/spec/fixtures/mockReportState.js | 1 -
.../spec/fixtures/mockSliceEntities.js | 23 +-
.../spec/helpers/jsDomWithFetchAPI.ts | 58 +-
.../spec/helpers/mockBootstrapData.ts | 47 +
superset-frontend/spec/helpers/shim.tsx | 2 +-
.../spec/helpers/sourceTreeScanner.ts | 183 +
superset-frontend/spec/helpers/testing-library.tsx | 14 +-
.../spec/helpers/withApplicationRoot.ts | 53 +
.../src/SqlLab/SqlLabGlobalStyles.tsx | 32 +-
.../src/SqlLab/actions/sqlLab.test.ts | 163 +-
superset-frontend/src/SqlLab/actions/sqlLab.ts | 58 +-
.../src/SqlLab/components/App/App.test.tsx | 4 +-
.../src/SqlLab/components/App/index.tsx | 204 +-
.../SqlLab/components/AppLayout/AppLayout.test.tsx | 41 +
.../src/SqlLab/components/AppLayout/index.tsx | 7 +-
.../src/SqlLab/components/ColumnElement/index.tsx | 2 +-
.../src/SqlLab/components/EditorWrapper/index.tsx | 4 +-
.../src/SqlLab/components/PopEditorTab/index.tsx | 2 +-
.../SqlLab/components/QueryAutoRefresh/index.tsx | 2 +-
.../src/SqlLab/components/QueryHistory/index.tsx | 2 +-
.../src/SqlLab/components/QueryTable/index.tsx | 31 +-
.../src/SqlLab/components/QueryTable/styles.ts | 1 +
.../SqlLab/components/ResultSet/ResultSet.test.tsx | 168 +
.../buildResultsGridThemeOverrides.test.ts | 94 +
.../ResultSet/buildResultsGridThemeOverrides.ts | 46 +
.../src/SqlLab/components/ResultSet/index.tsx | 62 +-
.../SaveDatasetModal/SaveDatasetModal.test.tsx | 38 +
.../SqlLab/components/SaveDatasetModal/index.tsx | 114 +-
.../SqlLab/components/SaveQuery/SaveQuery.test.tsx | 69 +
.../src/SqlLab/components/SaveQuery/index.tsx | 21 +-
.../ScheduleQueryButton.test.tsx | 137 +
.../components/ScheduleQueryButton/index.tsx | 22 +-
.../ShareSqlLabQuery/ShareSqlLabQuery.test.tsx | 2 +-
.../src/SqlLab/components/SouthPane/index.tsx | 4 +-
.../src/SqlLab/components/SqlEditor/index.tsx | 68 +-
.../SqlLab/components/SqlEditorLeftBar/index.tsx | 57 +-
.../SqlEditorTabHeader/SqlEditorTabHeader.test.tsx | 589 +-
.../SqlLab/components/SqlEditorTabHeader/index.tsx | 8 +-
.../SqlLab/components/SqlEditorTopBar/index.tsx | 3 +
.../TabbedSqlEditors/TabbedSqlEditors.test.tsx | 2 +-
.../SqlLab/components/TabbedSqlEditors/index.tsx | 339 +-
.../TableExploreTree/TreeNodeRenderer.tsx | 34 +-
.../components/TablePreview/TablePreview.test.tsx | 6 +-
.../components/TemplateParamsEditor/index.tsx | 2 +-
superset-frontend/src/SqlLab/fixtures.ts | 3 +-
.../src/SqlLab/hooks/useQueryEditor/index.ts | 2 +-
.../middlewares/persistSqlLabStateEnhancer.ts | 7 +-
.../src/SqlLab/reducers/sqlLab.test.ts | 74 +-
superset-frontend/src/SqlLab/reducers/sqlLab.ts | 15 +-
superset-frontend/src/SqlLab/types.ts | 10 +-
.../SqlLab/utils/reduxStateToLocalStorageHelper.ts | 2 +-
...zationTimeGrainsTransformer.integration.test.ts | 153 +
.../components/TimeGrain/TimeGrainFilterPlugin.tsx | 25 +-
.../TimeGrainPreFilter.integration.test.tsx | 181 +
.../components/TimeGrain/types.ts | 1 +
.../src/components/AlteredSliceTag/index.tsx | 2 +-
.../src/components/AuditInfo/index.tsx | 6 +-
.../src/components/AuditInfo/types.ts | 4 +-
superset-frontend/src/components/Chart/Chart.tsx | 8 +-
.../components/Chart/ChartErrorMessage.test.tsx | 14 +-
.../src/components/Chart/ChartErrorMessage.tsx | 8 +-
.../src/components/Chart/ChartRenderer.tsx | 3 +-
.../components/Chart/DrillBy/DrillByChart.test.tsx | 7 +-
.../components/Chart/DrillBy/DrillByModal.test.tsx | 9 +-
.../src/components/Chart/DrillBy/DrillByModal.tsx | 19 +-
.../Chart/DrillBy/DrillBySubmenu.test.tsx | 15 +-
.../components/Chart/DrillBy/DrillBySubmenu.tsx | 6 +-
.../Chart/DrillDetail/DrillDetailPane.test.tsx | 11 +-
.../Chart/DrillDetail/DrillDetailTableControls.tsx | 1 +
.../src/components/Chart/DrillDetail/utils.ts | 2 +-
.../src/components/Chart/chartAction.ts | 4 +-
.../src/components/Chart/chartReducer.ts | 2 +-
superset-frontend/src/components/Chart/types.ts | 6 +-
.../Chart/useDrillDetailMenuItems/index.tsx | 60 +-
.../useDrillDetailMenuItems.test.tsx | 18 +
.../CopyToClipboard/CopyToClipboard.test.tsx | 42 +
.../src/components/CopyToClipboard/index.tsx | 191 +-
.../src/components/DatabaseSelector/index.tsx | 6 +-
.../src/components/DatabaseSelector/types.ts | 1 +
.../Datasource/ChangeDatasourceModal/index.tsx | 10 +-
.../DatasourceModal/DatasourceModal.test.tsx | 8 +
.../Datasource/DatasourceModal/index.tsx | 7 +-
.../Datasource/FoldersEditor/TreeItem.styles.ts | 26 +-
.../components/Datasource/FoldersEditor/index.tsx | 2 +-
.../Datasource/FoldersEditor/treeUtils.ts | 4 +-
.../CollectionTable/CollectionTable.test.tsx | 2 +-
.../components/CollectionTable/index.tsx | 731 +-
.../DatasourceEditor/DatasourceEditor.tsx | 2121 +-
.../DashboardLinksExternal.test.tsx | 10 +-
.../components/DashboardLinksExternal/index.tsx | 2 +-
.../DatasetUsageTab/DatasetUsageTab.test.tsx | 39 +-
.../components/DatasetUsageTab/index.tsx | 29 +-
.../tests/DatasourceEditor.test.tsx | 60 +-
.../tests/DatasourceEditor.test.utils.tsx | 2 +-
.../tests/DatasourceEditorCurrency.test.tsx | 14 +-
.../src/components/DynamicPlugins/index.tsx | 2 +-
.../src/components/ErrorBoundary/index.tsx | 1 +
.../ErrorMessage/DatabaseErrorMessage.test.tsx | 12 +-
.../ErrorMessage/DatabaseErrorMessage.tsx | 21 +-
.../src/components/ErrorMessage/ErrorAlert.tsx | 9 +-
.../ErrorMessage/FrontendNetworkErrorMessage.tsx | 1 -
.../ErrorMessage/OAuth2RedirectMessage.test.tsx | 60 +-
.../ErrorMessage/OAuth2RedirectMessage.tsx | 19 +-
.../ErrorMessage/ParameterErrorMessage.tsx | 3 +-
.../ErrorMessage/TimeoutErrorMessage.test.tsx | 12 +-
.../ErrorMessage/TimeoutErrorMessage.tsx | 21 +-
.../src/components/FacePile/FacePile.stories.tsx | 60 -
.../src/components/FacePile/FacePile.test.tsx | 173 -
.../src/components/FacePile/index.tsx | 64 -
superset-frontend/src/components/FacePile/types.ts | 24 -
.../src/components/FacePile/utils.tsx | 49 -
.../FilterableTable/FilterableTable.test.tsx | 55 +-
.../src/components/FilterableTable/index.tsx | 22 +-
.../src/components/FilterableTable/types.ts | 3 +
.../src/components/GridTable/Header.test.tsx | 6 +-
.../src/components/GridTable/index.tsx | 29 +-
.../src/components/GridTable/types.ts | 12 +
.../src/components/ImportModal/ErrorAlert.tsx | 2 +-
.../components/ImportModal/ImportErrorAlert.tsx | 2 +-
.../src/components/ImportModal/index.tsx | 13 +-
.../KebabMenuButton/KebabMenuButton.test.tsx | 90 +
.../src/components/KebabMenuButton/index.tsx | 83 +
.../src/components/ListView/CardCollection.tsx | 2 +-
.../src/components/ListView/CrossLinks.test.tsx | 7 +-
.../src/components/ListView/CrossLinks.tsx | 2 +-
.../ListView/Filters/CompactSelectPanel.tsx | 8 +-
.../src/components/ListView/Filters/TimeRange.tsx | 4 +-
.../src/components/ListView/ListView.test.tsx | 28 +-
.../src/components/ListView/ListView.tsx | 10 +-
superset-frontend/src/components/ListView/types.ts | 1 +
superset-frontend/src/components/ListView/utils.ts | 2 +-
.../src/components/MessageToasts/Toast.tsx | 2 +-
.../components/Modal/CollapsibleModalSection.tsx | 2 -
.../src/components/Modal/ModalFormField.tsx | 4 -
.../src/components/Modal/StandardModal.tsx | 8 +-
.../src/components/PanelToolbar/index.tsx | 3 +-
.../src/components/ResizableSidebar/index.tsx | 2 +-
.../ResizableSidebar/useStoredSidebarWidth.ts | 2 +-
.../StreamingExportModal/useStreamingExport.ts | 6 +-
.../TableSelector/TableSelector.test.tsx | 44 +-
.../src/components/TableSelector/index.tsx | 6 +
superset-frontend/src/components/Tag/index.tsx | 2 +-
.../src/components/Tag/utils.test.tsx | 2 +-
.../src/components/TagsList/TagsList.test.tsx | 4 +-
superset-frontend/src/components/index.ts | 2 +-
.../src/core/navigation/index.test.ts | 12 +-
superset-frontend/src/core/navigation/index.ts | 6 +-
superset-frontend/src/core/sqlLab/models.ts | 4 +-
.../dashboard/actions/chartCustomizationActions.ts | 1 +
.../src/dashboard/actions/dashboardLayout.ts | 2 +-
.../src/dashboard/actions/dashboardState.test.ts | 140 +-
.../src/dashboard/actions/dashboardState.ts | 40 +-
.../src/dashboard/actions/datasources.ts | 2 +-
.../src/dashboard/actions/hydrate.test.ts | 276 +
superset-frontend/src/dashboard/actions/hydrate.ts | 22 +-
.../src/dashboard/actions/nativeFilters.ts | 4 +-
.../src/dashboard/actions/sliceEntities.ts | 6 +-
.../components/AddSliceCard/AddSliceCard.test.tsx | 9 +-
.../components/AddSliceCard/AddSliceCard.tsx | 5 +-
.../AutoRefreshStatus/StatusIndicatorDot.tsx | 14 +-
.../components/BuilderComponentPane/index.tsx | 4 +-
.../src/dashboard/components/ColorSchemeSelect.tsx | 2 +-
.../components/CustomizationsBadge/index.tsx | 25 +-
.../src/dashboard/components/Dashboard.tsx | 24 +-
.../DashboardBuilder/DashboardBuilder.test.tsx | 100 +-
.../DashboardBuilder/DashboardBuilder.tsx | 33 +-
.../DashboardBuilder/DashboardContainer.test.tsx | 5 +-
.../DashboardBuilder/DashboardContainer.tsx | 4 +-
.../DashboardBuilder/DashboardWrapper.tsx | 2 +-
.../dashboard/components/DashboardGrid.test.tsx | 36 +
.../src/dashboard/components/DashboardGrid.tsx | 65 +-
.../EmbeddedModal/EmbeddedModal.test.tsx | 12 +
.../dashboard/components/EmbeddedModal/index.tsx | 2 +-
.../DetailsPanel/DetailsPanel.test.tsx | 17 +
.../dashboard/components/FiltersBadge/Styles.tsx | 13 +-
.../dashboard/components/FiltersBadge/index.tsx | 2 +-
.../dashboard/components/Header/Header.test.tsx | 50 +-
.../components/Header/HeadlessAutoRefresh.test.tsx | 100 +
.../components/Header/HeadlessAutoRefresh.tsx | 91 +
.../src/dashboard/components/Header/index.tsx | 24 +-
.../components/Header/useDashboardMetadataBar.tsx | 17 +-
.../Header/useHeaderActionsDropdownMenu.tsx | 2 +-
.../Header/useHeaderAutoRefresh.test.tsx | 154 +
.../components/Header/useHeaderAutoRefresh.ts | 31 +-
.../src/dashboard/components/IconButton.test.tsx | 75 +
.../src/dashboard/components/IconButton.tsx | 78 +-
.../PropertiesModal/PropertiesModal.test.tsx | 249 +-
.../PropertiesModal/hooks/useAccessOptions.ts | 76 -
.../dashboard/components/PropertiesModal/index.tsx | 79 +-
.../sections/AccessSection.stories.tsx | 152 +
.../sections/AccessSection.test.tsx | 72 +-
.../PropertiesModal/sections/AccessSection.tsx | 119 +-
.../components/PropertiesModal/utils.test.ts | 90 -
.../dashboard/components/PropertiesModal/utils.ts | 81 -
.../src/dashboard/components/SaveModal.tsx | 18 +-
.../src/dashboard/components/SliceAdder.test.tsx | 12 +-
.../src/dashboard/components/SliceAdder.tsx | 13 +-
.../components/SliceHeader/SliceHeader.test.tsx | 12 +-
.../src/dashboard/components/SliceHeader/index.tsx | 22 +-
.../SliceHeaderControls.subdirectory.test.tsx | 172 +
.../SliceHeaderControls.test.tsx | 235 +-
.../components/SliceHeaderControls/index.tsx | 179 +-
.../components/SliceHeaderControls/types.ts | 5 +-
.../components/SyncDashboardState/index.tsx | 2 +-
.../URLShortLinkButton/URLShortLinkButton.test.tsx | 9 +-
.../components/URLShortLinkButton/index.tsx | 1 +
.../src/dashboard/components/dnd/DragHandle.tsx | 10 +-
.../src/dashboard/components/dnd/handleHover.ts | 2 +-
.../components/filterscope/FilterScopeSelector.tsx | 2 +-
.../components/gridComponents/Chart/Chart.test.tsx | 23 +-
.../components/gridComponents/Chart/Chart.tsx | 46 +-
.../gridComponents/Divider/Divider.test.tsx | 2 +-
.../components/gridComponents/Header/Header.tsx | 7 +-
.../gridComponents/Tab/Tab.subdirectory.test.tsx | 146 +
.../components/gridComponents/Tab/Tab.test.tsx | 31 +
.../components/gridComponents/Tab/Tab.tsx | 9 +-
.../components/gridComponents/Tabs/Tabs.test.tsx | 56 +-
.../gridComponents/TabsRenderer/TabsRenderer.tsx | 2 -
.../DownloadMenuItems/DownloadMenuItems.test.tsx | 148 +-
.../components/menu/DownloadMenuItems/index.tsx | 71 +-
.../src/dashboard/components/menu/HoverMenu.tsx | 2 +-
.../nativeFilters/ConfigModal/SharedStyles.tsx | 2 +-
.../FilterBar/ActionButtons/index.tsx | 60 +-
.../FilterBar/CrossFilters/CrossFilter.test.tsx | 2 +-
.../FilterBar/CrossFilters/CrossFilter.tsx | 20 +-
.../FilterBar/CrossFilters/CrossFilterTag.tsx | 10 +-
.../CrossFilters/CrossFilterTitle.test.tsx | 9 +
.../FilterBar/CrossFilters/CrossFilterTitle.tsx | 9 +-
.../ScopingModal/ChartsScopingListPanel.tsx | 1 +
.../FilterBar/FilterBar.subdirectory.test.ts | 207 +
.../nativeFilters/FilterBar/FilterBar.test.tsx | 110 +
.../FilterBarSettings/FilterBarSettings.test.tsx | 2 +-
.../FilterBar/FilterBarSettings/index.tsx | 6 +-
.../FilterConfigurationLink.test.tsx | 21 +-
.../FilterBar/FilterConfigurationLink/index.tsx | 2 +
.../useFilterConfigModal.tsx | 4 +-
.../FilterBar/FilterControls/FilterControl.tsx | 10 +
.../FilterControls/FilterControlShared.tsx | 4 +-
.../FilterControls.overflow.test.tsx | 3 +-
.../FilterBar/FilterControls/FilterControls.tsx | 2 +-
.../FilterBar/FilterControls/FilterValue.test.tsx | 109 +
.../FilterControls/FilterValue.timeGrain.test.ts | 60 -
.../FilterBar/FilterControls/FilterValue.tsx | 97 +-
.../FilterBar/FilterControls/utils.ts | 2 +-
.../FilterBar/UrlFilters/UrlFilterTag.tsx | 8 +-
.../FilterBar/UrlFilters/Vertical.test.tsx | 4 +-
.../nativeFilters/FilterBar/Vertical.tsx | 7 +-
.../components/nativeFilters/FilterBar/index.tsx | 21 +-
.../components/nativeFilters/FilterBar/utils.ts | 2 +-
.../ConfigModalSidebar/ConfigModalSidebar.tsx | 2 +-
.../FiltersConfigModal/FilterConfigPane.test.tsx | 4 +-
.../FiltersConfigModal/FilterTitleContainer.tsx | 5 +-
.../FiltersConfigForm/ColumnSelect.tsx | 92 +-
.../FiltersConfigForm/DatasetSelect.test.tsx | 49 +-
.../FiltersConfigForm/DatasetSelect.tsx | 102 +-
.../FiltersConfigForm/DependencyList.tsx | 8 +-
.../FiltersConfigForm/FiltersConfigForm.tsx | 224 +-
.../FiltersConfigForm/RemovedFilter.tsx | 2 +-
.../FiltersConfigForm/getControlItemsMap.tsx | 4 +
.../FiltersConfigForm/utils.test.ts | 76 +-
.../FiltersConfigModal/FiltersConfigForm/utils.ts | 93 +-
.../FiltersConfigModal/FiltersConfigModal.test.tsx | 38 +-
.../FiltersConfigModal/FiltersConfigModal.tsx | 2 +-
.../FiltersConfigModal/ItemTitleContainer.tsx | 5 +-
.../FiltersConfigModal/NewItemDropdown.tsx | 84 +-
.../hooks/useCustomizationOperations.ts | 2 +-
.../hooks/useFilterOperations.ts | 2 +-
.../hooks/useItemStateManager.ts | 5 +-
.../FiltersConfigModal/hooks/useModalSaveLogic.ts | 5 +-
.../transformers/buildTarget.test.ts | 74 +
.../FiltersConfigModal/transformers/buildTarget.ts | 61 +
.../transformers/customizationTransformer.ts | 29 +-
.../transformers/filterTransformer.ts | 20 +-
.../nativeFilters/FiltersConfigModal/types.ts | 4 +
.../nativeFilters/FiltersConfigModal/utils.ts | 10 +-
.../components/nativeFilters/state.test.ts | 97 +-
.../dashboard/components/nativeFilters/state.ts | 71 +-
.../dashboard/components/nativeFilters/utils.ts | 6 +-
.../components/resizable/ResizableContainer.tsx | 155 +-
.../dashboard/containers/DashboardPage.test.tsx | 48 +-
.../src/dashboard/containers/DashboardPage.tsx | 42 +-
.../dashboard/hooks/useDownloadScreenshot.test.ts | 50 +
.../src/dashboard/hooks/useDownloadScreenshot.ts | 14 +-
.../src/dashboard/reducers/dashboardInfo.test.ts | 24 +-
.../src/dashboard/reducers/dashboardInfo.ts | 4 +-
.../src/dashboard/reducers/dashboardState.test.ts | 83 +
.../src/dashboard/reducers/datasources.ts | 2 +-
.../src/dashboard/reducers/nativeFilters.test.ts | 54 +-
.../src/dashboard/reducers/nativeFilters.ts | 24 +-
superset-frontend/src/dashboard/styles.ts | 4 +-
superset-frontend/src/dashboard/types.ts | 22 +-
.../dashboard/util/activeAllDashboardFilters.ts | 2 +-
.../src/dashboard/util/activeDashboardFilters.ts | 4 +-
.../util/charts/getFormDataWithExtraFilters.ts | 23 +-
superset-frontend/src/dashboard/util/constants.ts | 1 +
.../src/dashboard/util/crossFilters.ts | 2 +-
.../src/dashboard/util/getDashboardUrl.ts | 2 +-
.../dashboard/util/getDefaultActiveTabs.test.ts | 112 +
.../src/dashboard/util/getDefaultActiveTabs.ts | 54 +
.../dashboard/util/getFilterScopeFromNodesTree.ts | 2 +-
.../src/dashboard/util/getFilterScopeNodesTree.ts | 2 +-
.../util/getFormDataWithExtraFilters.test.ts | 43 +
.../src/dashboard/util/getRelatedCharts.test.ts | 72 +-
.../src/dashboard/util/getRelatedCharts.ts | 22 +-
.../src/dashboard/util/permissionUtils.test.ts | 217 +-
.../src/dashboard/util/permissionUtils.ts | 34 +-
.../src/dashboard/util/risonFilters.ts | 30 +-
superset-frontend/src/dataMask/reducer.ts | 4 +-
superset-frontend/src/embedded/index.test.tsx | 201 +
superset-frontend/src/embedded/index.tsx | 121 +-
superset-frontend/src/embedded/utils.test.ts | 2 +-
superset-frontend/src/embedded/utils.ts | 2 +-
.../src/explore/actions/hydrateExplore.ts | 13 +-
.../src/explore/actions/saveModalActions.test.ts | 36 +-
.../src/explore/actions/saveModalActions.ts | 10 +-
.../src/explore/components/Control.tsx | 2 +-
.../src/explore/components/ControlHeader.tsx | 2 +
.../explore/components/ControlPanelsContainer.tsx | 20 +-
.../DataTableControl/FilterInput.test.tsx | 43 +-
.../explore/components/DataTableControl/index.tsx | 19 +-
.../components/DataTablesPane/DataTablesPane.tsx | 67 +-
.../components/DataTableControls.tsx | 3 +-
.../components/ResultsPaneOnDashboard.tsx | 6 +-
.../DataTablesPane/components/SamplesPane.tsx | 1 -
.../DataTablesPane/components/useResultsPane.tsx | 96 +-
.../components/DataTablesPane/test/fixture.tsx | 8 +-
.../test/getStaleResultsTabFallback.test.ts} | 30 +-
.../DataTablesPane/test/useResultsPane.test.tsx | 201 +
.../src/explore/components/DataTablesPane/types.ts | 6 +-
.../DatasourcePanelDragOption/index.tsx | 2 +-
.../explore/components/DatasourcePanel/index.tsx | 10 +-
.../EmbedCodeContent.subdirectory.test.tsx | 78 +
.../explore/components/EmbedCodeContent.test.tsx | 6 +
.../src/explore/components/EmbedCodeContent.tsx | 15 +-
.../src/explore/components/ExploreAlert.tsx | 2 +-
.../ExploreChartHeader/ExploreChartHeader.test.tsx | 8 +-
.../components/ExploreChartHeader/index.tsx | 15 +-
.../ExploreChartHeader/useExploreMetadataBar.tsx | 7 +-
.../explore/components/ExploreChartPanel/index.tsx | 12 +-
.../ExploreContainer/ExploreDndContext.test.tsx | 189 +-
.../ExploreContainer/ExploreDndContext.tsx | 154 +-
.../ExploreViewContainer.test.tsx | 181 +-
.../components/ExploreViewContainer/index.tsx | 21 +-
.../PropertiesModal/PropertiesModal.test.tsx | 64 +-
.../explore/components/PropertiesModal/index.tsx | 178 +-
.../src/explore/components/SaveModal.test.tsx | 464 +-
.../src/explore/components/SaveModal.tsx | 1414 +-
.../AnnotationLayerControl/AnnotationLayer.tsx | 1299 +-
.../controls/AnnotationLayerControl/index.tsx | 364 +-
.../explore/components/controls/BoundsControl.tsx | 2 +-
.../components/controls/CheckboxControl.tsx | 49 +-
.../CollectionControl/CollectionControl.test.tsx | 8 +
.../controls/CollectionControl/index.tsx | 35 +-
.../controls/ColorSchemeControl/index.tsx | 2 +-
.../ColumnConfigConstants.test.tsx | 5 +
.../ColumnConfigControl/ColumnConfigControl.tsx | 4 +
.../ColumnConfigControl/ControlForm/index.tsx | 2 +-
.../controls/ColumnConfigControl/constants.tsx | 1 +
.../controls/ColumnConfigControl/types.ts | 4 +-
.../components/controls/ComparisonRangeLabel.tsx | 2 +-
.../FormattingPopoverContent.test.tsx | 4 +-
.../components/controls/ContourControl/index.tsx | 14 +-
.../DatasourceControl/DatasourceControl.test.tsx | 140 +-
.../controls/DatasourceControl/index.tsx | 776 +-
.../components/DateFunctionTooltip.tsx | 32 +-
.../DateFilterControl/tests/CustomFrame.test.tsx | 20 +-
.../components/controls/DateFilterControl/types.ts | 22 +-
.../DndColumnSelectControl/ColumnSelectPopover.tsx | 10 +
.../DndColumnMetricSelect.test.tsx | 5 +-
.../DndColumnMetricSelect.tsx | 14 +-
.../DndColumnSelectControl/DndColumnSelect.tsx | 7 +-
.../DndColumnSelectPopoverTitle.tsx | 3 +
.../DndColumnSelectControl/DndFilterSelect.tsx | 13 +-
.../DndMetricSelect.test.tsx | 86 +-
.../DndColumnSelectControl/DndMetricSelect.tsx | 50 +-
.../controls/DndColumnSelectControl/Option.tsx | 1 +
.../DndColumnSelectControl/OptionWrapper.tsx | 7 +-
.../DndColumnSelectControl/useResizeButton.tsx | 2 +-
.../DndColumnSelectControl/utils/optionSelector.ts | 8 +-
.../FilterControl/AdhocFilterControl/index.tsx | 446 +-
.../AdhocFilterEditPopover.test.tsx | 5 +-
.../FilterControl/AdhocFilterEditPopover/index.tsx | 666 +-
...AdhocFilterEditPopoverSimpleTabContent.test.tsx | 2 +-
.../index.tsx | 7 +-
.../useAdvancedDataTypes.ts | 2 +-
.../AdhocFilterPopoverTrigger/index.tsx | 145 +-
.../controls/FixedOrMetricControl/index.tsx | 282 +-
.../LayerConfigsPopoverContent.tsx | 3 +-
.../controls/LayerConfigsControl/LayerTreeItem.tsx | 3 +
.../controls/MetricControl/AdhocMetric.ts | 24 +
.../MetricControl/AdhocMetricEditPopover/index.tsx | 894 +-
.../MetricControl/AdhocMetricEditPopoverTitle.tsx | 8 +-
.../controls/MetricControl/AdhocMetricOption.tsx | 104 +-
.../MetricControl/AdhocMetricPopoverTrigger.tsx | 497 +-
.../controls/MetricControl/MetricsControl.test.tsx | 47 +
.../controls/MetricControl/MetricsControl.tsx | 14 +-
.../controls/NumberControl/NumberControl.test.tsx | 2 +-
.../components/controls/OptionControls/index.tsx | 8 +-
.../SelectAsyncControl/SelectAsyncControl.test.tsx | 6 +-
.../components/controls/SelectControl.test.tsx | 78 +-
.../explore/components/controls/SelectControl.tsx | 336 +-
.../components/controls/SpatialControl.test.tsx | 178 +
.../explore/components/controls/SpatialControl.tsx | 358 +-
.../components/controls/TextAreaControl.test.tsx | 4 +-
.../components/controls/TextAreaControl.tsx | 396 +-
.../components/controls/TextControl/index.tsx | 170 +-
.../components/controls/TimeOffsetControl.tsx | 2 +-
.../TimeSeriesColumnControl.test.tsx | 13 +-
.../controls/TimeSeriesColumnControl/index.tsx | 413 +-
.../components/controls/VerticalRadioControl.tsx | 8 +-
.../explore/components/controls/ViewQuery.test.tsx | 1 +
.../src/explore/components/controls/ViewQuery.tsx | 9 +-
.../components/controls/ViewQueryModal.test.tsx | 100 +
.../explore/components/controls/ViewQueryModal.tsx | 60 +-
.../components/controls/ViewQueryModalFooter.tsx | 2 +-
.../components/controls/ViewportControl.tsx | 103 +-
.../components/controls/VizTypeControl/VizTile.tsx | 50 +-
.../controls/VizTypeControl/VizTypeGallery.tsx | 10 +-
.../components/controls/VizTypeControl/index.tsx | 13 +-
.../DashboardsSubMenu.test.tsx | 31 +-
.../DashboardsSubMenu.tsx | 4 +-
.../useExploreAdditionalActionsMenu/index.tsx | 135 +-
.../useExploreAdditionalActionsMenu.test.tsx | 103 +-
.../getControlValuesCompatibleWithDatasource.ts | 2 +-
.../getFormDataWithDashboardContext.ts | 2 +-
.../explore/controlUtils/getSectionsToRender.ts | 6 +-
.../explore/controlUtils/standardizedFormData.ts | 5 +-
.../src/explore/exploreUtils/exploreUtils.test.tsx | 22 +-
.../src/explore/exploreUtils/exportChart.test.ts | 17 +-
.../src/explore/exploreUtils/getExploreUrl.test.ts | 10 +-
.../explore/exploreUtils/getURIDirectory.test.ts | 6 +-
.../src/explore/exploreUtils/index.ts | 4 +-
superset-frontend/src/explore/fixtures.tsx | 2 +-
.../src/explore/reducers/exploreReducer.ts | 32 +-
superset-frontend/src/explore/types.ts | 9 +-
.../src/extensions/ExtensionsLoader.test.ts | 108 +
.../src/extensions/ExtensionsLoader.ts | 7 +-
.../src/features/alerts/AlertReportModal.test.tsx | 303 +-
.../src/features/alerts/AlertReportModal.tsx | 185 +-
.../alerts/components/AlertReportCronScheduler.tsx | 1 +
.../alerts/components/NotificationMethod.test.tsx | 373 +
.../alerts/components/NotificationMethod.tsx | 464 +-
.../NotificationMethodEmailRecipients.test.tsx | 102 +
superset-frontend/src/features/alerts/types.ts | 4 +-
.../AllEntitiesTable.subdirectory.test.tsx | 152 +
.../features/allEntities/AllEntitiesTable.test.tsx | 10 +-
.../src/features/allEntities/AllEntitiesTable.tsx | 22 +-
.../src/features/annotations/AnnotationModal.tsx | 2 +-
.../src/features/charts/ChartCard.tsx | 120 +-
.../cssTemplates/CssTemplateModal.test.tsx | 9 +
.../src/features/cssTemplates/CssTemplateModal.tsx | 5 +-
.../src/features/cssTemplates/types.ts | 6 +-
.../src/features/dashboards/DashboardCard.test.tsx | 15 +-
.../src/features/dashboards/DashboardCard.tsx | 105 +-
.../DatabaseConnectionForm/CommonParameters.tsx | 2 +
.../DatabaseConnectionForm/EncryptedField.test.tsx | 142 +-
.../DatabaseConnectionForm/EncryptedField.tsx | 73 +-
.../DatabaseConnectionForm/TableCatalog.tsx | 4 +
.../DatabaseConnectionForm/ValidatedInputField.tsx | 2 +
.../DatabaseModal.subdirectory.test.ts | 160 +
.../databases/DatabaseModal/ExtraOptions.test.tsx | 68 +
.../databases/DatabaseModal/ExtraOptions.tsx | 36 +-
.../databases/DatabaseModal/ModalHeader.test.tsx | 58 +
.../databases/DatabaseModal/ModalHeader.tsx | 21 +-
.../databases/DatabaseModal/SSHTunnelForm.tsx | 150 +-
.../databases/DatabaseModal/SSHTunnelSwitch.tsx | 2 +-
.../databases/DatabaseModal/index.test.tsx | 343 +-
.../src/features/databases/DatabaseModal/index.tsx | 78 +-
.../src/features/databases/DatabaseModal/styles.ts | 37 +-
.../databases/UploadDataModel/ColumnsPreview.tsx | 4 +-
.../features/databases/UploadDataModel/index.tsx | 15 +-
superset-frontend/src/features/databases/types.ts | 3 +-
.../DatasetPanel.subdirectory.test.tsx | 114 +
.../AddDataset/DatasetPanel/DatasetPanel.tsx | 59 +-
.../datasets/AddDataset/DatasetPanel/fixtures.ts | 2 +-
.../datasets/AddDataset/Footer/Footer.test.tsx | 4 +-
.../datasets/AddDataset/LeftPanel/index.tsx | 2 +-
.../src/features/datasets/AddDataset/types.tsx | 3 +-
.../features/datasets/DatasetSelectLabel/index.tsx | 24 +-
.../datasets/DuplicateDatasetModal.test.tsx | 5 +-
.../datasets/hooks/useDatasetLists.test.ts | 10 +-
.../src/features/datasets/hooks/useDatasetLists.ts | 10 +-
.../DatasetMetadataBar.skipped-stories.tsx | 17 +-
.../metadataBar/useDatasetMetadataBar.test.tsx | 18 +-
.../datasets/metadataBar/useDatasetMetadataBar.tsx | 13 +-
superset-frontend/src/features/datasets/types.ts | 4 +-
.../src/features/home/ActivityTable.tsx | 6 +-
.../src/features/home/ChartTable.test.tsx | 6 +
superset-frontend/src/features/home/ChartTable.tsx | 6 +-
.../src/features/home/DashboardTable.test.tsx | 7 +
.../src/features/home/DashboardTable.tsx | 2 +-
.../src/features/home/Menu.subdirectory.test.tsx | 230 +
superset-frontend/src/features/home/Menu.test.tsx | 268 +-
superset-frontend/src/features/home/Menu.tsx | 71 +-
.../src/features/home/RightMenu.test.tsx | 64 +
superset-frontend/src/features/home/RightMenu.tsx | 74 +-
.../src/features/home/SavedQueries.test.tsx | 146 +
.../src/features/home/SavedQueries.tsx | 46 +-
superset-frontend/src/features/home/SubMenu.tsx | 2 +-
superset-frontend/src/features/home/types.ts | 1 +
.../OwnerSelectLabel/OwnerSelectLabel.test.tsx | 38 -
.../src/features/queries/QueryPreviewModal.tsx | 2 +
.../HeaderReportDropdown/index.test.tsx | 2 +-
.../reports/ReportModal/ReportModal.test.tsx | 118 +-
.../src/features/reports/ReportModal/actions.ts | 2 +-
.../src/features/reports/ReportModal/index.tsx | 16 +-
.../features/reports/ReportModal/reducer.test.ts | 2 +-
.../src/features/reports/ReportModal/reducer.ts | 2 +-
superset-frontend/src/features/reports/types.ts | 3 +-
.../features/rls/RowLevelSecurityModal.test.tsx | 55 +-
.../src/features/rls/RowLevelSecurityModal.tsx | 217 +-
superset-frontend/src/features/rls/types.ts | 15 +-
.../src/features/roles/RoleListEditModal.test.tsx | 18 +-
.../semanticLayers/MultiEnumControl.test.tsx | 2 +-
.../features/semanticLayers/SemanticLayerModal.tsx | 5 -
.../semanticLayers/jsonFormsAntdRenderers.test.tsx | 125 +
.../src/features/semanticLayers/label.ts | 12 +
.../SubjectPicker/SubjectPicker.stories.tsx | 169 +
.../subjects/SubjectPicker/SubjectPicker.test.tsx | 293 +
.../src/features/subjects/SubjectPicker/index.tsx | 139 +
.../src/features/subjects/SubjectPicker/utils.ts | 200 +
.../subjects/SubjectPile/SubjectPile.stories.tsx | 74 +
.../subjects/SubjectPile/SubjectPile.test.tsx | 103 +
.../src/features/subjects/SubjectPile/index.tsx | 142 +
.../SubjectSelectLabel.stories.tsx | 115 +
.../SubjectSelectLabel}/index.tsx | 55 +-
.../src/features/tags/BulkTagModal.tsx | 2 +-
.../src/features/tags/TagModal.test.tsx | 5 +
superset-frontend/src/features/tags/TagModal.tsx | 7 +-
.../src/features/tasks/TaskPayloadPopover.tsx | 4 +-
.../src/features/tasks/TaskStackTracePopover.tsx | 4 +-
.../src/features/themes/ThemeModal.tsx | 2 +-
superset-frontend/src/features/themes/types.ts | 6 +-
.../src/features/userInfo/UserInfoModal.tsx | 2 +-
superset-frontend/src/features/users/utils.ts | 2 +-
.../filters/components/Range/RangeFilterPlugin.tsx | 2 +-
.../components/Select/SelectFilterPlugin.test.tsx | 63 +-
.../components/Select/SelectFilterPlugin.tsx | 37 +-
.../TimeGrain/TimeGrainFilterPlugin.test.tsx | 12 +-
.../components/TimeGrain/TimeGrainFilterPlugin.tsx | 17 +-
.../TimeGrainPreFilter.integration.test.tsx | 27 +-
.../src/filters/components/TimeGrain/types.ts | 2 +-
superset-frontend/src/filters/utils.test.ts | 22 +
superset-frontend/src/hooks/apiResources/charts.ts | 16 +-
.../src/hooks/apiResources/dashboards.test.ts | 2 +-
.../src/hooks/apiResources/dashboards.ts | 7 +-
.../src/hooks/apiResources/queries.ts | 2 +-
.../src/hooks/apiResources/sqlEditorTabs.ts | 2 +-
superset-frontend/src/logger/LogUtils.ts | 4 +
.../src/middleware/asyncEvent.test.ts | 231 +
superset-frontend/src/middleware/asyncEvent.ts | 29 +-
superset-frontend/src/middleware/logger.test.ts | 36 +-
.../src/middleware/loggerMiddleware.ts | 18 +-
.../pages/AlertReportList/AlertReportList.test.tsx | 66 +-
.../src/pages/AlertReportList/index.tsx | 51 +-
superset-frontend/src/pages/AllEntities/index.tsx | 18 +-
.../src/pages/AnnotationLayerList/index.tsx | 6 +-
.../src/pages/AnnotationList/index.tsx | 3 +-
superset-frontend/src/pages/Chart/index.tsx | 11 +-
.../src/pages/ChartCreation/ChartCreation.test.tsx | 44 +-
.../src/pages/ChartCreation/index.tsx | 403 +-
.../pages/ChartList/ChartList.cardview.test.tsx | 5 +
.../pages/ChartList/ChartList.listview.test.tsx | 23 +-
.../pages/ChartList/ChartList.permissions.test.tsx | 56 +-
.../src/pages/ChartList/ChartList.test.tsx | 14 +-
.../src/pages/ChartList/ChartList.testHelpers.tsx | 66 +-
superset-frontend/src/pages/ChartList/index.tsx | 168 +-
.../DashboardList/DashboardList.behavior.test.tsx | 15 +-
.../DashboardList/DashboardList.listview.test.tsx | 2 +-
.../DashboardList.permissions.test.tsx | 7 +-
.../src/pages/DashboardList/DashboardList.test.tsx | 23 +-
.../DashboardList/DashboardList.testHelpers.tsx | 52 +-
.../src/pages/DashboardList/index.tsx | 181 +-
superset-frontend/src/pages/DatabaseList/index.tsx | 118 +-
.../DatasetList/DatasetList.behavior.test.tsx | 5 +
.../DatasetList/DatasetList.listview.test.tsx | 107 +-
.../DatasetList/DatasetList.permissions.test.tsx | 3 +-
.../DatasetList/DatasetList.subdirectory.test.tsx | 135 +
.../src/pages/DatasetList/DatasetList.test.tsx | 13 +-
.../pages/DatasetList/DatasetList.testHelpers.tsx | 45 +-
superset-frontend/src/pages/DatasetList/index.tsx | 201 +-
.../FileHandler/FileHandler.subdirectory.test.tsx | 267 +
.../src/pages/FileHandler/index.test.tsx | 14 +-
superset-frontend/src/pages/FileHandler/index.tsx | 10 +-
superset-frontend/src/pages/GroupsList/index.tsx | 2 +-
superset-frontend/src/pages/Home/index.tsx | 18 +-
superset-frontend/src/pages/Login/Login.test.tsx | 67 +-
superset-frontend/src/pages/Login/index.tsx | 13 +-
.../src/pages/QueryHistoryList/index.tsx | 4 +-
.../pages/RedirectWarning/RedirectWarning.test.tsx | 78 +
.../src/pages/RedirectWarning/index.tsx | 38 +-
.../src/pages/RedirectWarning/utils.test.ts | 59 +
.../src/pages/RedirectWarning/utils.ts | 15 +
superset-frontend/src/pages/Register/index.tsx | 7 +-
.../RowLevelSecurityList.test.tsx | 82 +-
.../src/pages/RowLevelSecurityList/index.tsx | 49 +-
.../pages/SavedQueryList/SavedQueryList.test.tsx | 6 +-
.../src/pages/SavedQueryList/index.tsx | 23 +-
superset-frontend/src/pages/SqlLab/SqlLab.test.tsx | 2 +-
superset-frontend/src/pages/Tags/Tags.test.tsx | 134 +
superset-frontend/src/pages/Tags/index.tsx | 44 +-
superset-frontend/src/pages/TaskList/index.tsx | 16 +-
superset-frontend/src/pages/UsersList/index.tsx | 2 +-
superset-frontend/src/preamble.ts | 73 +-
superset-frontend/src/pwa-manifest.json | 65 -
superset-frontend/src/reduxUtils.ts | 2 +-
superset-frontend/src/setup/setupApp.ts | 3 +-
superset-frontend/src/setup/setupCodeOverrides.ts | 4 +-
.../src/setup/setupFormatters.test.ts | 72 +
superset-frontend/src/setup/setupFormatters.ts | 15 +
superset-frontend/src/theme/ThemeController.ts | 35 +-
.../src/theme/tests/ThemeController.test.ts | 95 +
.../src/theme/utils/antdTokenNames.test.ts | 34 +
.../src/theme/utils/antdTokenNames.ts | 26 +
superset-frontend/src/types/Chart.ts | 8 +-
superset-frontend/src/types/Dashboard.ts | 11 +-
superset-frontend/src/types/Dataset.ts | 4 +-
.../src/types/{Owner.ts => Subject.ts} | 20 +-
superset-frontend/src/types/TaggedObject.ts | 4 +-
superset-frontend/src/types/{Owner.ts => User.ts} | 5 +-
superset-frontend/src/types/bootstrapTypes.ts | 8 +-
.../src/utils/DebouncedMessageQueue.ts | 2 +-
superset-frontend/src/utils/assetUrl.test.ts | 39 +
superset-frontend/src/utils/assetUrl.ts | 17 +-
superset-frontend/src/utils/colorScheme.ts | 2 +-
.../src/utils/downloadAsImage.test.ts | 53 +-
superset-frontend/src/utils/downloadAsImage.tsx | 71 +-
superset-frontend/src/utils/downloadAsPdf.ts | 2 +-
superset-frontend/src/utils/export.test.ts | 5 +-
.../src/utils/getBootstrapData.test.ts | 73 +-
superset-frontend/src/utils/getBootstrapData.ts | 56 +-
.../src/utils/getChartFormDiffs/index.ts | 2 +-
.../{getOwnerName.test.ts => getUserName.test.ts} | 18 +-
.../src/utils/{getOwnerName.ts => getUserName.ts} | 10 +-
.../src/utils/navigationUtils.AppLink.test.tsx | 95 +
.../src/utils/navigationUtils.appRoot.test.tsx | 136 +
.../src/utils/navigationUtils.directDom.test.tsx | 244 +
.../src/utils/navigationUtils.invariants.test.ts | 375 +
.../src/utils/navigationUtils.schemes.test.ts | 207 +
.../src/utils/navigationUtils.test.ts | 780 +
superset-frontend/src/utils/navigationUtils.ts | 486 +-
.../src/utils/pathUtils.parity.test.ts | 166 +
superset-frontend/src/utils/pathUtils.test.ts | 151 +
superset-frontend/src/utils/pathUtils.ts | 44 +-
.../src/utils/sanitizeFormData/index.ts | 2 +-
superset-frontend/src/utils/urlUtils.test.ts | 131 +
superset-frontend/src/utils/urlUtils.ts | 43 +-
superset-frontend/src/views/App.tsx | 6 +-
superset-frontend/src/views/CRUD/hooks.ts | 77 +-
superset-frontend/src/views/CRUD/types.ts | 21 +-
superset-frontend/src/views/CRUD/utils.test.tsx | 12 +-
superset-frontend/src/views/CRUD/utils.tsx | 119 +-
superset-frontend/src/views/menu.test.tsx | 109 +
superset-frontend/src/views/menu.tsx | 18 +-
superset-frontend/src/views/routePaths.ts | 12 +-
superset-frontend/src/views/routes.test.tsx | 49 +
superset-frontend/src/views/routes.tsx | 12 +-
.../visualizations/TimeTable/TimeTable.test.tsx | 4 +-
.../src/visualizations/TimeTable/TimeTable.tsx | 18 +-
.../components/ValueCell/ValueCell.test.tsx | 171 +-
.../TimeTable/components/ValueCell/ValueCell.tsx | 30 +-
.../TimeTable/utils/sortUtils/sortUtils.test.ts | 37 +-
.../TimeTable/utils/sortUtils/sortUtils.ts | 46 +-
.../stylelint.config.js | 16 +-
superset-frontend/webpack.config.js | 31 +-
superset-websocket/.nvmrc | 2 +-
superset-websocket/README.md | 3 +-
.../{eslint.config.js => eslint.config.mjs} | 17 +-
superset-websocket/package-lock.json | 12374 +++---------
superset-websocket/package.json | 34 +-
superset-websocket/spec/config.test.ts | 2 +-
superset-websocket/spec/index.test.ts | 250 +-
superset-websocket/src/config.ts | 7 +-
superset-websocket/src/index.ts | 12 +-
superset-websocket/tsconfig.json | 5 +-
superset-websocket/utils/README.md | 1 +
superset-websocket/utils/client-ws-app/.nvmrc | 2 +-
superset-websocket/utils/client-ws-app/README.md | 1 +
.../utils/client-ws-app/package-lock.json | 108 +-
superset/__init__.py | 28 +-
superset/app.py | 48 +-
superset/async_events/async_query_manager.py | 46 +-
superset/async_events/cache_backend.py | 61 +-
superset/charts/api.py | 434 +-
superset/charts/client_processing.py | 50 +-
superset/charts/data/api.py | 60 +-
superset/charts/data/dashboard_filter_context.py | 41 +-
superset/charts/filters.py | 125 +-
superset/charts/schemas.py | 26 +-
superset/cli/importexport.py | 34 +-
superset/cli/sync_subjects.py | 108 +
superset/cli/test_db.py | 14 +-
superset/cli/thumbnails.py | 30 +-
superset/commands/base.py | 45 +-
superset/commands/chart/create.py | 14 +-
superset/commands/chart/delete.py | 4 +-
superset/commands/chart/exceptions.py | 23 +
superset/commands/chart/importers/v1/utils.py | 155 +-
.../commands/chart/restore.py | 36 +-
superset/commands/chart/update.py | 90 +-
superset/commands/dashboard/copy.py | 19 +-
superset/commands/dashboard/create.py | 26 +-
superset/commands/dashboard/delete.py | 6 +-
superset/commands/dashboard/exceptions.py | 18 +
superset/commands/dashboard/export.py | 10 -
superset/commands/dashboard/importers/v0.py | 16 +-
.../commands/dashboard/importers/v1/__init__.py | 98 +-
superset/commands/dashboard/importers/v1/utils.py | 181 +-
superset/commands/dashboard/restore.py | 84 +
superset/commands/dashboard/update.py | 90 +-
superset/commands/database/delete.py | 40 +-
superset/commands/database/exceptions.py | 37 +
superset/commands/database/sync_permissions.py | 37 +-
superset/commands/database/uploaders/base.py | 40 +-
superset/commands/database/validate.py | 149 +-
superset/commands/dataset/columns/delete.py | 4 +-
superset/commands/dataset/create.py | 21 +-
superset/commands/dataset/delete.py | 4 +-
superset/commands/dataset/duplicate.py | 105 +-
superset/commands/dataset/exceptions.py | 48 +-
superset/commands/dataset/importers/v0.py | 22 +-
superset/commands/dataset/importers/v1/utils.py | 258 +-
superset/commands/dataset/metrics/delete.py | 4 +-
superset/commands/dataset/refresh.py | 4 +-
superset/commands/dataset/restore.py | 60 +
superset/commands/dataset/update.py | 15 +-
superset/commands/exceptions.py | 14 -
superset/commands/explore/get.py | 14 +-
superset/commands/export/assets.py | 162 +-
superset/commands/importers/v1/__init__.py | 13 +
superset/commands/importers/v1/assets.py | 44 +-
superset/commands/importers/v1/utils.py | 52 +-
superset/commands/logs/prune.py | 8 +-
superset/commands/report/alert.py | 13 +
superset/commands/report/create.py | 18 +-
superset/commands/report/delete.py | 4 +-
superset/commands/report/exceptions.py | 27 +
superset/commands/report/execute.py | 480 +-
superset/commands/report/execute_now.py | 2 +-
superset/commands/report/log_prune.py | 8 +-
superset/commands/report/update.py | 22 +-
superset/commands/restore.py | 19 +-
superset/commands/security/create.py | 25 +-
superset/commands/security/reset.py | 14 +
superset/commands/security/update.py | 33 +-
superset/commands/semantic_layer/delete.py | 4 +-
superset/commands/semantic_layer/update.py | 2 +-
superset/commands/sql_lab/estimate.py | 79 +-
superset/commands/tag/create.py | 24 +-
superset/commands/tag/export.py | 2 +-
superset/commands/tag/update.py | 21 +-
superset/commands/tag/utils.py | 21 +
superset/commands/tasks/update.py | 2 +-
superset/commands/utils.py | 193 +-
superset/common/query_context_factory.py | 20 +
superset/common/tags.py | 20 +-
superset/config.py | 346 +-
superset/connectors/sqla/models.py | 198 +-
superset/connectors/sqla/utils.py | 2 +-
superset/constants.py | 3 +
superset/core/api/core_api_injection.py | 16 +-
superset/css_templates/api.py | 4 +-
superset/daos/base.py | 71 +-
superset/daos/chart.py | 42 +-
superset/daos/dashboard.py | 149 +-
superset/daos/dataset.py | 434 +-
superset/daos/datasource.py | 13 +-
superset/daos/group.py | 65 +
superset/daos/log.py | 4 +-
superset/daos/query.py | 6 +-
superset/daos/report.py | 43 +-
superset/daos/role.py | 43 +-
superset/daos/semantic_layer.py | 34 +
superset/daos/{role.py => subject.py} | 16 +-
superset/daos/tag.py | 6 +-
superset/daos/user.py | 40 +
superset/daos/version.py | 69 +
superset/dashboards/api.py | 607 +-
.../dashboards/excel_export}/__init__.py | 0
superset/dashboards/excel_export/email.py | 180 +
superset/dashboards/excel_export/layout.py | 97 +
superset/dashboards/excel_export/screenshot.py | 103 +
superset/dashboards/filters.py | 173 +-
superset/dashboards/schemas.py | 76 +-
superset/databases/api.py | 54 +-
superset/databases/schemas.py | 100 +-
superset/datasets/api.py | 503 +-
superset/datasets/filters.py | 29 +
superset/datasets/schemas.py | 7 +-
superset/datasource/api.py | 3 +
superset/datasource/schemas.py | 19 +-
superset/db_engine_specs/base.py | 27 +
superset/db_engine_specs/bigquery.py | 6 +-
superset/db_engine_specs/clickhouse.py | 7 +-
superset/db_engine_specs/crate.py | 2 +-
superset/db_engine_specs/databend.py | 76 +-
superset/db_engine_specs/databricks.py | 270 +-
superset/db_engine_specs/doris.py | 12 +-
superset/db_engine_specs/duckdb.py | 13 +-
superset/db_engine_specs/elasticsearch.py | 146 +-
superset/db_engine_specs/hive.py | 36 +-
superset/db_engine_specs/impala.py | 11 +-
superset/db_engine_specs/mysql.py | 5 +
superset/db_engine_specs/postgres.py | 15 +-
superset/db_engine_specs/presto.py | 19 +-
superset/db_engine_specs/redshift.py | 18 +
superset/db_engine_specs/snowflake.py | 13 +-
superset/db_engine_specs/starrocks.py | 47 +-
superset/db_engine_specs/trino.py | 7 +-
superset/embedded/view.py | 3 +
superset/examples/birth_names.py | 57 +-
.../examples/deckgl_demo/charts/Deck.gl_Path.yaml | 6 -
.../deckgl_demo/charts/Deck.gl_Polygons.yaml | 4 -
superset/examples/generic_loader.py | 11 +-
superset/examples/world_bank.py | 6 +-
superset/explorables/base.py | 2 +-
superset/explore/schemas.py | 12 +-
superset/explore/utils.py | 2 +-
superset/extensions/__init__.py | 36 +-
superset/extensions/metadb.py | 34 +-
superset/initialization/__init__.py | 270 +-
superset/marshmallow_compatibility.py | 14 +-
superset/mcp_service/ARCHITECTURE.md | 2 +-
superset/mcp_service/CLAUDE.md | 30 +-
superset/mcp_service/README.md | 2 +-
superset/mcp_service/SECURITY.md | 52 +-
superset/mcp_service/app.py | 157 +-
superset/mcp_service/auth.py | 170 +-
superset/mcp_service/chart/chart_helpers.py | 4 -
superset/mcp_service/chart/chart_utils.py | 354 +-
superset/mcp_service/chart/compile.py | 51 +-
superset/mcp_service/chart/plugin.py | 262 +
superset/mcp_service/chart/plugins/__init__.py | 67 +
superset/mcp_service/chart/plugins/big_number.py | 248 +
superset/mcp_service/chart/plugins/box_plot.py | 155 +
superset/mcp_service/chart/plugins/handlebars.py | 194 +
superset/mcp_service/chart/plugins/histogram.py | 197 +
.../mcp_service/chart/plugins/mixed_timeseries.py | 173 +
superset/mcp_service/chart/plugins/pie.py | 140 +
superset/mcp_service/chart/plugins/pivot_table.py | 164 +
superset/mcp_service/chart/plugins/table.py | 136 +
superset/mcp_service/chart/plugins/waterfall.py | 186 +
superset/mcp_service/chart/plugins/xy.py | 202 +
superset/mcp_service/chart/registry.py | 279 +
superset/mcp_service/chart/schemas.py | 675 +-
superset/mcp_service/chart/tool/__init__.py | 4 +
superset/mcp_service/chart/tool/delete_chart.py | 186 +
superset/mcp_service/chart/tool/generate_chart.py | 80 +-
superset/mcp_service/chart/tool/get_chart_data.py | 65 +-
superset/mcp_service/chart/tool/get_chart_info.py | 27 +-
.../mcp_service/chart/tool/get_chart_preview.py | 28 +-
superset/mcp_service/chart/tool/get_chart_sql.py | 10 +
.../chart/tool/get_chart_type_schema.py | 54 +-
superset/mcp_service/chart/tool/list_charts.py | 9 +-
superset/mcp_service/chart/tool/restore_chart.py | 180 +
superset/mcp_service/chart/tool/update_chart.py | 25 +
.../mcp_service/chart/tool/update_chart_preview.py | 6 +-
.../chart/validation/dataset_validator.py | 276 +-
.../chart/validation/runtime/__init__.py | 100 +-
.../chart/validation/schema_validator.py | 483 +-
superset/mcp_service/common/cache_schemas.py | 24 +-
superset/mcp_service/common/schema_discovery.py | 12 +-
superset/mcp_service/composite_token_verifier.py | 42 +-
superset/mcp_service/constants.py | 2 +
superset/mcp_service/dashboard/schemas.py | 1418 +-
superset/mcp_service/dashboard/tool/__init__.py | 18 +
.../tool/add_chart_to_existing_dashboard.py | 24 +-
.../mcp_service/dashboard/tool/delete_dashboard.py | 235 +
.../dashboard/tool/duplicate_dashboard.py | 425 +
.../dashboard/tool/generate_dashboard.py | 19 +-
.../dashboard/tool/get_dashboard_datasets.py | 156 +
.../dashboard/tool/get_dashboard_info.py | 14 +-
.../mcp_service/dashboard/tool/governance_utils.py | 120 +
.../mcp_service/dashboard/tool/list_dashboards.py | 7 +-
.../tool/manage_dashboard_certification.py | 155 +
.../dashboard/tool/manage_dashboard_owners.py | 383 +
.../dashboard/tool/manage_dashboard_roles.py | 326 +
.../dashboard/tool/manage_native_filters.py | 511 +
.../dashboard/tool/remove_chart_from_dashboard.py | 538 +
.../dashboard/tool/restore_dashboard.py | 193 +
.../mcp_service/dashboard/tool/update_dashboard.py | 178 +-
superset/mcp_service/dataset/dataset_utils.py | 50 +
superset/mcp_service/dataset/schemas.py | 207 +-
superset/mcp_service/dataset/tool/__init__.py | 2 +
.../mcp_service/dataset/tool/create_dataset.py | 74 +-
.../dataset/tool/create_virtual_dataset.py | 15 +
.../mcp_service/dataset/tool/get_dataset_info.py | 17 +
superset/mcp_service/dataset/tool/list_datasets.py | 2 +-
superset/mcp_service/dataset/tool/query_dataset.py | 115 +-
.../dataset/tool/update_dataset_metric.py | 294 +
.../mcp_service/docs/tool-search-optimization.md | 2 +-
.../explore/tool/generate_explore_link.py | 3 +-
superset/mcp_service/flask_singleton.py | 22 +
superset/mcp_service/guest_scope.py | 72 +
superset/mcp_service/guest_token_verifier.py | 180 +
superset/mcp_service/jwt_verifier.py | 5 +
superset/mcp_service/mcp_config.py | 243 +-
superset/mcp_service/mcp_core.py | 118 +-
superset/mcp_service/middleware.py | 41 +-
superset/mcp_service/privacy.py | 27 +-
superset/mcp_service/report/schemas.py | 29 +-
.../mcp_service/report/tool/get_report_info.py | 2 +-
superset/mcp_service/report/tool/list_reports.py | 4 +-
superset/mcp_service/rls/schemas.py | 28 +-
.../mcp_service/rls/tool/get_rls_filter_info.py | 12 +-
superset/mcp_service/rls/tool/list_rls_filters.py | 30 +-
superset/mcp_service/role/schemas.py | 53 +-
superset/mcp_service/role/tool/get_role_info.py | 4 +
superset/mcp_service/role/tool/list_roles.py | 4 +
.../mcp_service/semantic_layer}/__init__.py | 0
superset/mcp_service/semantic_layer/schemas.py | 302 +
.../{utils => semantic_layer/tool}/__init__.py | 25 +-
.../tool/get_compatible_dimensions.py | 250 +
.../semantic_layer/tool/get_compatible_metrics.py | 254 +
.../mcp_service/semantic_layer/tool/get_table.py | 529 +
.../semantic_layer/tool/list_metrics.py | 338 +
superset/mcp_service/server.py | 18 +
superset/mcp_service/sql_lab/tool/execute_sql.py | 89 +-
.../sql_lab/tool/open_sql_lab_with_context.py | 2 +
superset/mcp_service/storage.py | 11 +-
superset/mcp_service/system/schemas.py | 26 +
superset/mcp_service/system/tool/find_users.py | 11 +-
superset/mcp_service/tag/schemas.py | 2 +-
superset/mcp_service/tag/tool/get_tag_info.py | 2 +-
superset/mcp_service/tag/tool/list_tags.py | 2 +-
.../backports.py => mcp_service/theme/__init__.py} | 13 +-
superset/mcp_service/{tag => theme}/schemas.py | 158 +-
.../theme/tool/__init__.py} | 16 +-
superset/mcp_service/theme/tool/create_theme.py | 159 +
.../tool/get_theme_info.py} | 65 +-
.../list_tags.py => theme/tool/list_themes.py} | 104 +-
superset/mcp_service/user/schemas.py | 45 +-
superset/mcp_service/user/tool/get_user_info.py | 4 +
superset/mcp_service/user/tool/list_users.py | 4 +
superset/mcp_service/utils/__init__.py | 1 +
superset/mcp_service/utils/query_utils.py | 57 +
superset/mcp_service/utils/response_utils.py | 58 +-
superset/mcp_service/utils/sanitization.py | 10 +
superset/mcp_service/utils/token_utils.py | 12 +-
.../common => superset/middleware}/__init__.py | 0
superset/middleware/legacy_prefix_redirect.py | 294 +
superset/migrations/shared/catalogs.py | 3 +-
superset/migrations/shared/migrate_viz/base.py | 3 +-
superset/migrations/shared/security_converge.py | 3 +-
..._08-54_c3a8f8611885_materializing_permission.py | 2 +-
...d8bc074f7aad_add_new_field_is_restricted_to_.py | 2 +-
...06-27_08-43_27ae655e4247_make_creator_owners.py | 3 +-
...-09-07_23-50_33d996bcc382_update_slice_model.py | 2 +-
...2_11-31_eca4694defa7_sqllab_setting_defaults.py | 2 +-
...4_12-31_db0c65b146bd_update_slice_model_json.py | 2 +-
...7c195a_rewriting_url_from_shortner_with_new_.py | 2 +-
...-08_08-19_67a6ac9b727b_update_spatial_params.py | 2 +-
...2-17_11-06_21e88bc06c02_annotation_migration.py | 2 +-
.../2018-02-13_08-07_e866bd2d4976_smaller_grid.py | 2 +-
...-04-03_08-19_130915240929_is_sqllab_viz_flow.py | 2 +-
...9_bf706ae5eb46_cal_heatmap_metric_to_metrics.py | 2 +-
...018-06-04_11-12_c5756bec8b47_time_grain_sqla.py | 2 +-
...6-07_09-52_afb7730f6a9c_remove_empty_filters.py | 2 +-
...13_10-20_4451805bbaa1_remove_double_percents.py | 2 +-
.../2018-06-13_14-54_bddc498dd179_adhoc_filters.py | 2 +-
...4_14-31_80a67c5192fa_single_pie_chart_metric.py | 2 +-
...1c4c6_migrate_num_period_compare_and_period_.py | 2 +-
.../2018-07-19_23-41_c617da68de7d_form_nullable.py | 2 +-
...07-20_15-31_7f2635b51f5d_update_base_columns.py | 2 +-
...07-20_15-57_e9df189e5c7e_update_base_metrics.py | 2 +-
..._bebcf3fed1fe_convert_dashboard_v1_positions.py | 3 +-
...8-07-26_11-10_c82ee8a39623_add_implicit_tags.py | 2 +-
.../versions/2018-08-01_11-47_7fcdcde0761c_.py | 2 +-
...08545_migrate_time_range_for_default_filters.py | 2 +-
...2018-12-11_22-03_fb13d49b72f9_better_filters.py | 2 +-
.../2019-03-21_10-22_d94d33dbe938_form_strip.py | 2 +-
...a3f04bc82_add_parent_ids_in_dashboard_layout.py | 2 +-
.../2019-06-28_13-17_ab8c66efdd01_resample.py | 2 +-
...ng_unique_constraint_on_dashboard_slices_tbl.py | 2 +-
...5afa9079866a_serialize_schema_permissions_py.py | 3 +-
...e_form_strip_leading_and_trailing_whitespace.py | 2 +-
.../2019-10-10_13-52_1495eb914ad3_time_range.py | 2 +-
...127d0d1d_reconvert_legacy_filters_into_adhoc.py | 2 +-
...-08_01-17_e96dbf2cfef0_datasource_cluster_fk.py | 8 +-
..._14-13_3325d4caccc8_dashboard_scoped_filters.py | 3 +-
...10-42_f9a30386bd74_cleanup_time_grainularity.py | 2 +-
...57699a813e_add_tables_relation_to_row_level_.py | 8 +-
...29_09-24_620241d1153f_update_time_grain_sqla.py | 2 +-
...978245563a02_migrate_iframe_to_dash_markdown.py | 3 +-
...828ac4e_add_rls_filter_type_and_grouping_key.py | 2 +-
...654_fix_data_access_permissions_for_virtual_.py | 3 +-
...b56500de1855_add_uuid_column_to_import_mixin.py | 3 +-
...208f_collapse_alerting_models_into_a_single_.py | 9 +-
...6e99fb176a0_add_import_mixing_to_saved_query.py | 2 +-
...60bf0649a77_migrate_x_dateunit_in_time_range.py | 2 +-
...2fdb_add_granularity_to_charts_where_missing.py | 2 +-
...-10_12-32_41ce8799acc3_rename_pie_label_type.py | 2 +-
...1412ec1e5a7b_legacy_force_directed_to_echart.py | 2 +-
...989bbe479899_rename_filter_configuration_in_.py | 2 +-
...ea61c5e7_remove_dataset_health_check_message.py | 2 +-
...88938_country_map_use_lowercase_country_name.py | 2 +-
...3a3a8ff221_migrate_filter_sets_to_new_format.py | 2 +-
...ed7ec95_migrate_native_filters_to_new_schema.py | 2 +-
...3605f370a_fix_schemas_allowed_for_csv_upload.py | 2 +-
...15da_migrate_pivot_table_v2_heatmaps_to_new_.py | 2 +-
...4fbb_add_type_to_native_filter_configuration.py | 2 +-
...453f4e2e_migrate_timeseries_limit_metric_to_.py | 2 +-
...12_11-15_32646df09c64_update_time_grain_sqla.py | 2 +-
...e5f1dacd_rename_to_schemas_allowed_for_file_.py | 2 +-
...aa3ff_add_force_screenshot_to_alerts_reports.py | 2 +-
...5b9441_rename_big_viz_total_form_data_fields.py | 2 +-
...d1d2_move_pivot_table_v2_legacy_order_by_to_.py | 2 +-
...d8e252_fix_query_and_saved_query_null_schema.py | 2 +-
...b0ca7944_change_adhoc_filter_b_from_none_to_.py | 2 +-
...14-38_a9422eeaae74_new_dataset_models_take_2.py | 9 +-
...d0249074e4_deprecate_time_range_endpoints_v2.py | 2 +-
...07e4fdbaba_rm_time_range_endpoints_from_qc_3.py | 2 +-
...-39_cbe71abde154_fix_report_schedule_and_log.py | 2 +-
...8_16-07_e786798587de_delete_none_permissions.py | 3 +-
..._16-17_f3afaf1f11f0_add_unique_name_desc_rls.py | 3 +-
...59_7fb8bca906d2_permalink_rename_filterstate.py | 3 +-
...5-48_409c7b420ab0_add_created_by_fk_as_owner.py | 2 +-
...665d_fix_table_chart_conditional_formatting_.py | 2 +-
...1_4ce1d9b25135_remove_filter_bar_orientation.py | 2 +-
...4-46_c0a3ea245b61_remove_show_native_filters.py | 2 +-
...ac08bb5b83_invert_horizontal_bar_chart_order.py | 2 +-
...7_13-24_b5ea9d343307_bar_chart_stack_options.py | 2 +-
...03-27_12-30_7e67aecbf3f1_chart_ds_constraint.py | 2 +-
...2a5681ddfd_convert_key_value_entries_to_json.py | 3 +-
...-41_4ea966691069_cross_filter_global_scoping.py | 2 +-
...delete_obsolete_druid_nosql_slice_parameters.py | 2 +-
...6f8b1280_cleanup_erroneous_parent_filter_ids.py | 2 +-
...9_17-54_ee179a490af9_deckgl_path_width_units.py | 2 +-
...23_0769ef90fddd_fix_schema_perm_for_datasets.py | 2 +-
...086c2676_add_normalize_columns_to_sqla_model.py | 2 +-
...317970b4400c_added_time_secondary_column_to_.py | 2 +-
...ff00fe8_add_percent_calculation_type_funnel_.py | 2 +-
...d09c9_migrate_filter_boxes_to_native_filters.py | 3 +-
...47_be1b217cd8cd_big_number_kpi_single_metric.py | 2 +-
...9123a_update_charts_with_old_time_comparison.py | 2 +-
...fdba9f_merge_x_axis_sort_series_with_x_axis_.py | 2 +-
...2_convert_metric_currencies_from_str_to_json.py | 2 +-
...8d8526_fix_form_data_string_in_query_context.py | 2 +-
...03-23_10-00_b1c2d3e4f5a6_add_subjects_tables.py | 944 +
...2bee73611e32_composite_pk_association_tables.py | 606 +
..._12-00_7c4a8d09ca37_add_deleted_at_to_slices.py | 52 +
...05_9e1f3b8c4d2a_add_deleted_at_to_dashboards.py | 203 +
..._12-10_3a8e6f2c1b95_add_deleted_at_to_tables.py | 58 +
...-28_19-50_56cd24c07170_add_versioning_tables.py | 574 +
...-00_b4a3f2e1d0c9_fix_security_view_menu_case.py | 125 +
...3_12-00_8f3a1b2c4d5e_shadow_live_row_indexes.py | 180 +
...23_a7d3f1b9c2e4_cleanup_stale_can_import_pvm.py | 120 +
...rip_metricsqlexpressions_from_ag_grid_params.py | 110 +
superset/models/core.py | 88 +-
superset/models/dashboard.py | 156 +-
superset/models/helpers.py | 610 +-
superset/models/slice.py | 95 +-
superset/models/sql_lab.py | 52 +-
.../{utils/backports.py => openapi/__init__.py} | 14 +-
superset/openapi/manager.py | 143 +
superset/queries/api.py | 13 +-
superset/queries/filters.py | 7 +-
superset/queries/saved_queries/api.py | 11 +-
superset/queries/saved_queries/filters.py | 8 +-
superset/queries/saved_queries/schemas.py | 10 +-
superset/reports/api.py | 59 +-
superset/reports/filters.py | 20 +-
superset/reports/models.py | 35 +-
superset/reports/notifications/base.py | 1 +
superset/reports/notifications/email.py | 55 +-
superset/reports/notifications/slack.py | 9 +-
superset/reports/notifications/slackv2.py | 59 +-
superset/reports/notifications/webhook.py | 12 +
superset/reports/schemas.py | 16 +-
superset/result_set.py | 6 +-
superset/row_level_security/api.py | 48 +-
superset/row_level_security/schemas.py | 39 +-
superset/security/manager.py | 852 +-
superset/semantic_layers/api.py | 9 +-
superset/semantic_layers/mapper.py | 307 +-
superset/semantic_layers/models.py | 84 +-
superset/sql/dialects/firebolt.py | 5 +-
superset/sql/execution/celery_task.py | 44 +-
superset/sql/execution/executor.py | 179 +-
superset/sql/parse.py | 304 +-
superset/sql_lab.py | 64 +-
superset/sqllab/sql_json_executer.py | 8 +-
.../common => superset/subjects}/__init__.py | 0
superset/subjects/api.py | 123 +
superset/{daos/role.py => subjects/exceptions.py} | 15 +-
superset/subjects/filters.py | 263 +
superset/subjects/hooks.py | 83 +
superset/subjects/models.py | 203 +
superset/subjects/schemas.py | 51 +
superset/subjects/sync.py | 143 +
superset/{utils/backports.py => subjects/types.py} | 18 +-
superset/subjects/utils.py | 204 +
superset/superset_typing.py | 10 +-
superset/tags/api.py | 30 +-
superset/tags/filters.py | 30 +-
superset/tags/models.py | 93 +-
superset/tags/schemas.py | 3 +-
superset/tasks/api.py | 9 +-
superset/tasks/async_queries.py | 2 +-
superset/tasks/cache.py | 208 +-
superset/tasks/export_dashboard_excel.py | 361 +
superset/tasks/native_filter_cache.py | 245 +
superset/tasks/types.py | 18 +-
superset/tasks/utils.py | 119 +-
superset/templates/superset/spa.html | 42 +-
superset/themes/api.py | 28 +-
superset/themes/schemas.py | 41 +-
superset/translations/ar/LC_MESSAGES/messages.po | 3491 +++-
superset/translations/ca/LC_MESSAGES/messages.po | 2488 ++-
superset/translations/cs/LC_MESSAGES/messages.po | 1502 +-
superset/translations/de/LC_MESSAGES/messages.po | 5693 ++++--
superset/translations/do-not-translate.txt | 59 +
superset/translations/en/LC_MESSAGES/messages.po | 749 +-
superset/translations/es/LC_MESSAGES/messages.po | 1512 +-
superset/translations/fa/LC_MESSAGES/messages.po | 2891 ++-
superset/translations/fi/LC_MESSAGES/messages.po | 1795 +-
superset/translations/fr/LC_MESSAGES/messages.po | 2266 ++-
superset/translations/it/LC_MESSAGES/messages.po | 19939 +++++++++++++------
superset/translations/ja/LC_MESSAGES/messages.po | 1991 +-
superset/translations/ko/LC_MESSAGES/messages.po | 18620 ++++++++++++++---
superset/translations/lv/LC_MESSAGES/messages.po | 1481 +-
superset/translations/messages.pot | 753 +-
superset/translations/mi/LC_MESSAGES/messages.po | 2480 ++-
superset/translations/nl/LC_MESSAGES/messages.po | 3210 ++-
superset/translations/pl/LC_MESSAGES/messages.po | 2897 ++-
superset/translations/pt/LC_MESSAGES/messages.po | 19746 ++++++++++++------
.../translations/pt_BR/LC_MESSAGES/messages.po | 2886 ++-
superset/translations/ro/LC_MESSAGES/messages.po | 5312 ++++-
superset/translations/ru/LC_MESSAGES/messages.po | 1999 +-
superset/translations/sk/LC_MESSAGES/messages.po | 1490 +-
superset/translations/sl/LC_MESSAGES/messages.po | 2803 ++-
superset/translations/sr/LC_MESSAGES/messages.po | 4163 ++--
.../translations/sr_Latn/LC_MESSAGES/messages.po | 4211 ++--
superset/translations/th/LC_MESSAGES/messages.po | 1764 +-
superset/translations/tr/LC_MESSAGES/messages.po | 2964 ++-
superset/translations/uk/LC_MESSAGES/messages.po | 1495 +-
superset/translations/zh/LC_MESSAGES/messages.po | 4412 +++-
.../translations/zh_TW/LC_MESSAGES/messages.po | 4400 +++-
superset/utils/backports.py | 11 +-
superset/utils/cache.py | 10 +-
superset/utils/core.py | 74 +-
superset/utils/csv.py | 48 +-
superset/utils/date_parser.py | 77 +-
superset/utils/dates.py | 4 +-
superset/utils/encrypt.py | 7 +-
superset/utils/excel.py | 9 +-
superset/utils/excel_streaming.py | 250 +
superset/utils/filters.py | 53 +-
superset/utils/json.py | 5 +
superset/utils/mock_data.py | 20 +-
superset/utils/pandas_postprocessing/boxplot.py | 10 +-
.../utils/pandas_postprocessing/contribution.py | 4 +-
superset/utils/pandas_postprocessing/rank.py | 3 +-
superset/utils/pandas_postprocessing/utils.py | 14 +-
superset/utils/pandas_sqlalchemy_compat.py | 80 +
superset/utils/s3.py | 83 +
superset/utils/screenshot_utils.py | 151 +-
superset/utils/screenshots.py | 14 +-
superset/utils/slack.py | 156 +-
superset/utils/urls.py | 34 +-
superset/utils/webdriver.py | 107 +-
.../common => superset/versioning}/__init__.py | 0
superset/versioning/activity/__init__.py | 102 +
superset/versioning/activity/impact.py | 186 +
superset/versioning/activity/kinds.py | 210 +
superset/versioning/activity/orchestrator.py | 434 +
superset/versioning/activity/queries.py | 870 +
superset/versioning/activity/render.py | 285 +
superset/versioning/activity/scope.py | 138 +
superset/versioning/activity/visibility.py | 206 +
superset/versioning/activity/windows.py | 108 +
superset/versioning/api_helpers.py | 266 +
superset/versioning/baseline/__init__.py | 69 +
superset/versioning/baseline/children.py | 212 +
superset/versioning/baseline/collection.py | 153 +
superset/versioning/baseline/dirty.py | 243 +
superset/versioning/baseline/insertion.py | 150 +
superset/versioning/baseline/listener.py | 132 +
superset/versioning/baseline/shadow.py | 92 +
superset/versioning/changes/__init__.py | 76 +
superset/versioning/changes/listener.py | 468 +
superset/versioning/changes/shadow_queries.py | 323 +
superset/versioning/changes/state.py | 233 +
superset/versioning/changes/table.py | 90 +
superset/versioning/diff.py | 1113 ++
superset/versioning/etag.py | 78 +
superset/versioning/factory.py | 312 +
superset/versioning/queries.py | 518 +
superset/versioning/schemas.py | 478 +
superset/versioning/utils.py | 50 +
superset/views/all_entities.py | 2 +-
superset/views/base.py | 143 +-
superset/views/base_api.py | 10 +-
superset/views/core.py | 100 +-
superset/views/dashboard/mixin.py | 17 +-
superset/views/dashboard/views.py | 9 +-
superset/views/datasource/utils.py | 85 +-
superset/views/datasource/views.py | 20 +-
superset/views/explore.py | 19 +-
superset/views/filters.py | 79 +-
superset/views/groups.py | 2 +-
superset/views/logs.py | 2 +-
superset/views/pwa_manifest.py | 159 +
superset/views/roles.py | 2 +-
superset/views/sql_lab/views.py | 44 +-
superset/views/tags.py | 2 +-
superset/views/user_registrations.py | 2 +-
superset/views/users/api.py | 4 +-
superset/views/users_list.py | 2 +-
superset/views/utils.py | 180 +-
superset/viz.py | 4 +-
.../example_data/data_loading/base_data_loader.py | 2 +-
.../data_loading/pandas/pandas_data_loader.py | 3 +-
tests/integration_tests/base_api_tests.py | 402 +-
tests/integration_tests/base_tests.py | 82 +-
tests/integration_tests/celery_tests.py | 6 +-
tests/integration_tests/charts/api_tests.py | 147 +-
tests/integration_tests/charts/commands_tests.py | 53 +-
tests/integration_tests/charts/data/api_tests.py | 4 +-
.../integration_tests/charts/soft_delete_tests.py | 579 +
tests/integration_tests/cli_tests.py | 118 +-
tests/integration_tests/commands_test.py | 5 +-
tests/integration_tests/conftest.py | 174 +-
tests/integration_tests/core_tests.py | 97 +-
tests/integration_tests/dao/base_dao_test.py | 88 +-
tests/integration_tests/dashboard_tests.py | 34 +-
tests/integration_tests/dashboard_utils.py | 29 +-
tests/integration_tests/dashboards/api_tests.py | 486 +-
.../integration_tests/dashboards/commands_tests.py | 24 +-
tests/integration_tests/dashboards/dao_tests.py | 33 +-
.../dashboards/dashboard_test_utils.py | 22 +-
.../dashboards/security/security_dataset_tests.py | 6 +-
.../dashboards/security/security_rbac_tests.py | 533 -
.../dashboards/soft_delete_tests.py | 732 +
.../dashboards/superset_factory_util.py | 116 +-
.../dashboards/test_theme_integration.py | 8 +-
.../dashboards/update_tabs_test.py | 33 +-
tests/integration_tests/databases/api_tests.py | 8 +
.../databases/commands/upload_test.py | 58 +-
tests/integration_tests/datasets/api_tests.py | 417 +-
tests/integration_tests/datasets/commands_tests.py | 37 +-
.../datasets/soft_delete_tests.py | 605 +
tests/integration_tests/datasource/api_tests.py | 28 +-
tests/integration_tests/datasource_tests.py | 91 +-
.../db_engine_specs/base_engine_spec_tests.py | 51 +-
.../db_engine_specs/bigquery_tests.py | 4 +-
.../db_engine_specs/datastore_tests.py | 4 +-
.../db_engine_specs/hive_tests.py | 20 +-
.../db_engine_specs/presto_tests.py | 42 +-
tests/integration_tests/email_tests.py | 12 +-
tests/integration_tests/event_logger_tests.py | 6 +-
tests/integration_tests/fixtures/datasource.py | 3 +-
.../fixtures/deck_geojson_form_data.json | 6 -
.../fixtures/deck_path_form_data.json | 6 -
.../integration_tests/fixtures/energy_dashboard.py | 9 +-
tests/integration_tests/fixtures/importexport.py | 4 -
.../integration_tests/fixtures/tabbed_dashboard.py | 15 +
.../fixtures/unicode_dashboard.py | 3 +-
.../fixtures/world_bank_dashboard.py | 3 +-
tests/integration_tests/import_export_tests.py | 30 +-
tests/integration_tests/insert_chart_mixin.py | 21 +-
tests/integration_tests/log_api_tests.py | 8 +-
...f1b9c2e4_cleanup_stale_can_import_pvm__tests.py | 84 +
...3f2e1d0c9_fix_security_view_menu_case__tests.py | 213 +
.../composite_pk_association_tables__tests.py | 137 +
.../migrations/composite_pk_round_trip__tests.py | 208 +
.../queries/saved_queries/api_tests.py | 68 +-
tests/integration_tests/query_context_tests.py | 15 +-
tests/integration_tests/reports/alert_tests.py | 50 +-
tests/integration_tests/reports/api_tests.py | 94 +-
.../commands/execute_dashboard_report_tests.py | 2 +-
tests/integration_tests/reports/commands_tests.py | 182 +-
tests/integration_tests/reports/scheduler_tests.py | 40 +-
tests/integration_tests/reports/utils.py | 46 +-
tests/integration_tests/security/api_tests.py | 10 +-
.../security/row_level_security_tests.py | 1553 +-
tests/integration_tests/security_tests.py | 329 +-
tests/integration_tests/sqla_models_tests.py | 103 +-
tests/integration_tests/sqllab_tests.py | 50 +-
tests/integration_tests/strategy_tests.py | 2 +-
.../integration_tests/subjects}/__init__.py | 0
tests/integration_tests/subjects/api_tests.py | 142 +
tests/integration_tests/superset_test_config.py | 9 +-
tests/integration_tests/tagging_tests.py | 8 +-
tests/integration_tests/tags/api_tests.py | 144 +-
.../tags/mysql_compatibility_test.py | 2 +-
tests/integration_tests/utils/encrypt_tests.py | 41 +-
tests/integration_tests/utils_tests.py | 2 +-
.../integration_tests/versioning}/__init__.py | 0
.../versioning/activity_view_tests.py | 1256 ++
.../versioning/capture_disabled_tests.py | 171 +
.../versioning/change_records_tests.py | 718 +
tests/integration_tests/versioning/conftest.py | 94 +
.../versioning/perf_validation_tests.py | 423 +
.../versioning/snapshot_projection_tests.py | 70 +
.../versioning/transaction_correctness_tests.py | 308 +
.../versioning/versions_api_tests.py | 458 +
.../views/test_explore_redirect.py | 337 +
tests/integration_tests/viz_tests.py | 5 +-
.../async_events/async_query_manager_tests.py | 136 +-
.../unit_tests/async_events/test_cache_backend.py | 148 +
.../charts/commands/importers/v1/import_test.py | 181 +
tests/unit_tests/charts/test_chart_data_api.py | 129 +-
tests/unit_tests/charts/test_client_processing.py | 283 +-
.../charts/test_dashboard_filter_context.py | 172 +
tests/unit_tests/charts/test_filters.py | 180 +
tests/unit_tests/cli/thumbnails_test.py | 79 +
tests/unit_tests/commands/chart/restore_test.py | 90 +
.../commands/chart/test_access_checks.py | 46 +-
tests/unit_tests/commands/chart/update_test.py | 167 +-
tests/unit_tests/commands/dashboard/create_test.py | 71 +-
tests/unit_tests/commands/dashboard/export_test.py | 57 +-
.../commands/dashboard/importers/v1/assets_test.py | 215 +
.../unit_tests/commands/dashboard/restore_test.py | 201 +
.../commands/databases/sync_permissions_test.py | 46 +
.../commands/databases/upload_command_test.py | 93 +
.../unit_tests/commands/databases/validate_test.py | 484 +
tests/unit_tests/commands/dataset/restore_test.py | 181 +
tests/unit_tests/commands/dataset/test_create.py | 85 +-
.../unit_tests/commands/dataset/test_duplicate.py | 480 +-
tests/unit_tests/commands/dataset/update_test.py | 35 +-
tests/unit_tests/commands/report/alert_test.py | 40 +-
tests/unit_tests/commands/report/create_test.py | 2 +-
tests/unit_tests/commands/report/execute_test.py | 919 +-
.../unit_tests/commands/report/test_execute_now.py | 12 +-
tests/unit_tests/commands/report/update_test.py | 18 +-
tests/unit_tests/commands/security/rls_test.py | 93 +-
.../commands/semantic_layer/delete_test.py | 8 +-
.../commands/semantic_layer/update_test.py | 4 +-
tests/unit_tests/commands/sql_lab/test_estimate.py | 78 +-
.../commands/test_base_restore_command.py | 40 +-
tests/unit_tests/commands/test_utils.py | 138 +-
tests/unit_tests/common/test_query_actions.py | 88 +
.../common/test_query_context_factory.py | 136 +-
.../common/test_query_context_processor.py | 298 +-
tests/unit_tests/common/test_time_shifts.py | 417 +-
tests/unit_tests/config_test.py | 120 +
tests/unit_tests/connectors/sqla/models_test.py | 118 +-
tests/unit_tests/connectors/sqla/utils_test.py | 74 +
tests/unit_tests/dao/base_dao_test.py | 66 +-
tests/unit_tests/dao/dashboard_test.py | 119 +
tests/unit_tests/dao/dataset_test.py | 247 +
tests/unit_tests/dao/datasource_test.py | 59 +
tests/unit_tests/dao/group_test.py | 81 +
tests/unit_tests/dao/role_test.py | 81 +
tests/unit_tests/dao/subject_test.py | 61 +
tests/unit_tests/dao/user_test.py | 74 +
tests/unit_tests/daos/test_base_dao_soft_delete.py | 50 +-
.../daos/test_base_relationship_filters.py | 8 +-
tests/unit_tests/dashboards/api_test.py | 40 +-
.../dashboards/commands/importers/v0}/__init__.py | 0
.../commands/importers/v0/import_test.py | 92 +
.../commands/importers/v1/import_test.py | 387 +-
tests/unit_tests/dashboards/schema_tests.py | 4 +-
.../dashboards/test_excel_export_email.py | 157 +
.../dashboards/test_excel_export_layout.py | 105 +
.../dashboards/test_excel_export_screenshot.py | 164 +
tests/unit_tests/databases/api_test.py | 2 +
tests/unit_tests/databases/commands/delete_test.py | 129 +
.../databases/commands/importers/v1/import_test.py | 6 +-
tests/unit_tests/databases/schema_tests.py | 300 +-
.../unit_tests/databases/test_schemas.py | 37 +-
.../datasets/commands/importers/v0}/__init__.py | 0
.../datasets/commands/importers/v0/import_test.py | 77 +
.../datasets/commands/importers/v1/import_test.py | 560 +-
.../datasets/test_datetime_format_detector.py | 4 +-
tests/unit_tests/db_engine_specs/test_base.py | 23 +
tests/unit_tests/db_engine_specs/test_bigquery.py | 72 +
.../unit_tests/db_engine_specs/test_clickhouse.py | 26 +-
tests/unit_tests/db_engine_specs/test_databend.py | 37 +
.../unit_tests/db_engine_specs/test_databricks.py | 805 +-
.../db_engine_specs/test_databricks_multi_cloud.py | 127 +
tests/unit_tests/db_engine_specs/test_datastore.py | 2 +-
tests/unit_tests/db_engine_specs/test_doris.py | 17 +-
.../db_engine_specs/test_elasticsearch.py | 376 +
tests/unit_tests/db_engine_specs/test_mysql.py | 1 +
tests/unit_tests/db_engine_specs/test_presto.py | 66 +
tests/unit_tests/db_engine_specs/test_sqlite.py | 9 +-
tests/unit_tests/db_engine_specs/test_starrocks.py | 11 +-
tests/unit_tests/db_engine_specs/test_trino.py | 19 +-
tests/unit_tests/examples/generic_loader_test.py | 4 +-
tests/unit_tests/explore/utils_test.py | 90 +-
tests/unit_tests/extensions/test_sqlalchemy.py | 115 +-
tests/unit_tests/initialization_test.py | 230 +-
tests/unit_tests/jinja_context_test.py | 130 +
.../mcp_service/chart/test_big_number_chart.py | 144 +-
.../chart/test_chart_config_coercion.py | 279 +
.../mcp_service/chart/test_chart_helpers.py | 12 +-
.../mcp_service/chart/test_chart_schemas.py | 115 +
.../mcp_service/chart/test_chart_utils.py | 88 +-
tests/unit_tests/mcp_service/chart/test_compile.py | 4 +-
.../chart/test_histogram_boxplot_charts.py | 465 +
.../unit_tests/mcp_service/chart/test_registry.py | 252 +
.../mcp_service/chart/test_registry_filters.py | 222 +
.../mcp_service/chart/test_waterfall_chart.py | 316 +
.../mcp_service/chart/tool/test_delete_chart.py | 229 +
.../mcp_service/chart/tool/test_generate_chart.py | 14 +-
.../mcp_service/chart/tool/test_get_chart_data.py | 89 +-
.../mcp_service/chart/tool/test_get_chart_info.py | 47 +
.../chart/tool/test_get_chart_preview.py | 36 +-
.../mcp_service/chart/tool/test_get_chart_sql.py | 18 +
.../chart/tool/test_get_chart_type_schema.py | 9 +-
.../mcp_service/chart/tool/test_list_charts.py | 5 +-
.../chart/tool/test_list_charts_deleted_state.py | 171 +
.../mcp_service/chart/tool/test_restore_chart.py | 242 +
.../mcp_service/chart/tool/test_update_chart.py | 241 +
.../validation/test_column_name_normalization.py | 523 +-
.../chart/validation/test_runtime_validator.py | 102 +-
.../dashboard/test_dashboard_schemas.py | 159 +-
.../mcp_service/dashboard/tool/conftest.py | 26 +-
.../tool/test_add_chart_to_existing_dashboard.py | 32 +-
.../dashboard/tool/test_dashboard_generation.py | 116 +-
.../dashboard/tool/test_dashboard_tools.py | 131 +-
.../dashboard/tool/test_delete_dashboard.py | 254 +
.../dashboard/tool/test_duplicate_dashboard.py | 644 +
.../dashboard/tool/test_get_dashboard_datasets.py | 393 +
.../tool/test_list_dashboards_deleted_state.py | 176 +
.../tool/test_manage_dashboard_certification.py | 365 +
.../dashboard/tool/test_manage_dashboard_owners.py | 639 +
.../dashboard/tool/test_manage_dashboard_roles.py | 573 +
.../dashboard/tool/test_manage_native_filters.py | 818 +
.../tool/test_remove_chart_from_dashboard.py | 723 +
.../dashboard/tool/test_restore_dashboard.py | 250 +
.../dashboard/tool/test_update_dashboard.py | 273 +-
.../database/tool/test_database_tools.py | 76 +-
.../mcp_service/dataset/test_dataset_schemas.py | 54 +
.../dataset/tool/test_create_dataset.py | 36 +-
.../mcp_service/dataset/tool/test_dataset_tools.py | 78 +-
.../mcp_service/dataset/tool/test_query_dataset.py | 92 +-
.../dataset/tool/test_update_dataset_metric.py | 541 +
.../mcp_service/report/tool/test_report_tools.py | 37 +-
.../mcp_service/rls/tool/test_rls_tools.py | 141 +-
.../mcp_service/role/tool/test_role_tools.py | 49 +
.../saved_query/tool/test_saved_query_tools.py | 2 +-
.../mcp_service/semantic_layer}/__init__.py | 0
.../mcp_service/semantic_layer/tool}/__init__.py | 0
.../tool/test_get_compatible_dimensions.py | 373 +
.../tool/test_get_compatible_metrics.py | 369 +
.../semantic_layer/tool/test_get_table.py | 528 +
.../semantic_layer/tool/test_list_metrics.py | 521 +
.../sql_lab/tool/test_open_sql_lab_with_context.py | 119 +-
.../mcp_service/system/resources}/__init__.py | 0
.../system/resources/test_schema_discovery.py | 133 +
.../mcp_service/system/tool/test_find_users.py | 81 +
.../system/tool/test_generate_bug_report.py | 2 +-
.../system/tool/test_get_current_user.py | 5 +-
.../mcp_service/system/tool/test_get_schema.py | 48 +-
.../mcp_service/system/tool/test_health_check.py | 134 +
.../mcp_service/system/tool/test_mcp_core.py | 22 +-
.../mcp_service/tag/tool/test_tag_tools.py | 73 +-
tests/unit_tests/mcp_service/test_auth_rbac.py | 66 +
tests/unit_tests/mcp_service/test_guest_scope.py | 121 +
.../mcp_service/test_guest_token_auth.py | 685 +
tests/unit_tests/mcp_service/test_mcp_config.py | 2 +-
tests/unit_tests/mcp_service/test_mcp_core.py | 73 +-
tests/unit_tests/mcp_service/test_mcp_e2e_smoke.py | 228 +
tests/unit_tests/mcp_service/test_mcp_server.py | 89 +
tests/unit_tests/mcp_service/test_middleware.py | 89 +
tests/unit_tests/mcp_service/test_privacy.py | 58 +-
.../mcp_service/test_rbac_tool_enforcement.py | 256 +
.../mcp_service/test_schema_discovery.py | 6 +-
.../unit_tests/mcp_service/theme}/__init__.py | 0
.../unit_tests/mcp_service/theme/tool}/__init__.py | 0
.../mcp_service/theme/tool/test_create_theme.py | 260 +
.../mcp_service/theme/tool/test_get_theme_info.py | 172 +
.../mcp_service/theme/tool/test_list_themes.py | 301 +
tests/unit_tests/mcp_service/user/test_schemas.py | 153 +
.../mcp_service/user/tool/test_user_tools.py | 66 +-
.../mcp_service/utils/test_cache_utils.py | 271 +
.../mcp_service/utils/test_oauth2_utils.py | 96 +
.../mcp_service/utils/test_permissions_utils.py | 7 +-
.../mcp_service/utils/test_query_utils.py | 96 +
.../mcp_service/utils/test_response_utils.py | 109 +
.../mcp_service/utils/test_retry_utils.py | 396 +
.../mcp_service/utils/test_sanitization.py | 41 +
.../mcp_service/utils/test_token_utils.py | 74 +-
.../unit_tests/middleware}/__init__.py | 0
.../middleware/test_legacy_prefix_redirect.py | 855 +
.../composite_pk_association_tables_test.py | 170 +
.../test_add_deleted_at_to_dashboards.py | 241 +
.../migrations/test_add_deleted_at_to_slices.py | 190 +
.../migrations/test_add_deleted_at_to_tables.py | 189 +
...rip_metricsqlexpressions_from_ag_grid_params.py | 203 +
tests/unit_tests/models/core_test.py | 444 +-
tests/unit_tests/models/dashboard_test.py | 87 +-
tests/unit_tests/models/helpers_test.py | 770 +-
.../models/multi_space_column_names_test.py | 164 +
.../models/owner_association_tables_test.py | 106 +
tests/unit_tests/models/slice_test.py | 58 +
tests/unit_tests/models/sql_lab_test.py | 97 +
tests/unit_tests/models/test_helpers_offset.py | 125 +
.../unit_tests/models/test_no_filter_time_range.py | 42 +-
tests/unit_tests/models/test_soft_delete_mixin.py | 42 +-
.../models/test_time_filter_hour_offset.py | 99 +
.../unit_tests/models/test_validate_expression.py | 42 +-
.../unit_tests/openapi}/__init__.py | 0
tests/unit_tests/openapi/test_manager.py | 77 +
.../pandas_postprocessing/test_aggregate.py | 28 +
.../pandas_postprocessing/test_boxplot.py | 24 +
.../pandas_postprocessing/test_contribution.py | 33 +
.../pandas_postprocessing/test_prophet.py | 7 +-
.../unit_tests/pandas_postprocessing/test_rank.py | 54 +
.../queries/saved_queries_schema_test.py | 24 +-
tests/unit_tests/reports/api_test.py | 41 +
tests/unit_tests/reports/model_test.py | 9 +-
.../reports/notifications/email_tests.py | 130 +-
.../reports/notifications/slack_tests.py | 756 +-
.../reports/notifications/webhook_tests.py | 33 +-
tests/unit_tests/result_set_test.py | 31 +
tests/unit_tests/row_level_security/schema_test.py | 23 +-
tests/unit_tests/scripts/change_detector_test.py | 96 +
.../scripts/translations/backfill_po_test.py | 209 +
.../translations/build_translation_index_test.py | 49 +
.../check_translation_regression_test.py | 160 +
tests/unit_tests/security/api_test.py | 55 +
tests/unit_tests/security/audit_log_test.py | 24 +-
tests/unit_tests/security/guest_rls_test.py | 4 +-
tests/unit_tests/security/manager_test.py | 783 +-
tests/unit_tests/security/test_permission_hooks.py | 156 -
tests/unit_tests/semantic_layers/api_test.py | 3 +
tests/unit_tests/semantic_layers/dao_test.py | 205 +
tests/unit_tests/semantic_layers/mapper_test.py | 931 +-
tests/unit_tests/semantic_layers/models_test.py | 219 +
tests/unit_tests/sql/execution/conftest.py | 11 +
tests/unit_tests/sql/execution/test_celery_task.py | 199 +-
tests/unit_tests/sql/execution/test_executor.py | 197 +-
tests/unit_tests/sql/parse_tests.py | 716 +-
tests/unit_tests/sql_lab_test.py | 210 +
tests/unit_tests/sqllab/test_sql_json_executer.py | 150 +
.../unit_tests/subjects}/__init__.py | 0
tests/unit_tests/subjects/test_copy_command.py | 94 +
tests/unit_tests/subjects/test_filters.py | 321 +
tests/unit_tests/subjects/test_raise_for_access.py | 403 +
tests/unit_tests/subjects/test_security.py | 280 +
tests/unit_tests/subjects/test_utils.py | 423 +
tests/unit_tests/tags/models_test.py | 17 +-
tests/unit_tests/tasks/test_async_queries.py | 52 +
tests/unit_tests/tasks/test_cache.py | 288 +-
.../tasks/test_export_dashboard_excel.py | 401 +
tests/unit_tests/tasks/test_native_filter_cache.py | 405 +
tests/unit_tests/tasks/test_utils.py | 383 +-
tests/unit_tests/test_marshmallow_compatibility.py | 182 +
tests/unit_tests/test_subdirectory_url_for.py | 256 +
tests/unit_tests/test_viz_cache_key.py | 4 +-
tests/unit_tests/themes/api_test.py | 45 +-
tests/unit_tests/utils/csv_tests.py | 3 +
tests/unit_tests/utils/date_parser_tests.py | 107 +
tests/unit_tests/utils/encrypt_test.py | 38 +-
tests/unit_tests/utils/excel_streaming_tests.py | 267 +
tests/unit_tests/utils/filters_test.py | 119 +-
tests/unit_tests/utils/json_tests.py | 14 +
.../utils/pandas_sqlalchemy_compat_test.py | 67 +
tests/unit_tests/utils/s3_tests.py | 95 +
tests/unit_tests/utils/slack_test.py | 308 +-
tests/unit_tests/utils/test_core.py | 67 +
tests/unit_tests/utils/test_date_parsing.py | 91 +
.../unit_tests/utils/test_screenshot_cache_fix.py | 23 +
tests/unit_tests/utils/test_screenshot_utils.py | 207 +-
tests/unit_tests/utils/urls_tests.py | 50 +-
tests/unit_tests/utils/webdriver_test.py | 250 +-
tests/unit_tests/versioning/test_activity.py | 827 +
tests/unit_tests/versioning/test_diff_caps.py | 218 +
tests/unit_tests/versioning/test_listener.py | 204 +
.../common => tests/unit_tests/views}/__init__.py | 0
tests/unit_tests/views/datasource/test_utils.py | 396 +
tests/unit_tests/views/datasource/views_test.py | 28 +-
tests/unit_tests/views/test_base.py | 54 +-
tests/unit_tests/views/test_base_theme_helpers.py | 132 +
tests/unit_tests/views/test_bootstrap_auth.py | 93 +-
tests/unit_tests/views/test_pwa_manifest.py | 354 +
.../views/test_redirect_view_subdirectory.py | 246 +
tests/unit_tests/views/test_spa_service_worker.py | 182 +
tests/unit_tests/views/test_utils.py | 48 -
2176 files changed, 252171 insertions(+), 89629 deletions(-)
delete mode 160000 .github/actions/file-changes-action
create mode 100644 .github/workflows/hold-label-ci-gate.yml
rename .github/workflows/{superset-helm-lint.yml => superset-helm-lint-test.yml} (65%)
mode change 100644 => 100755 .pre-commit-config.yaml
mode change 100644 => 120000 docs/.nvmrc
create mode 100644 docs/docs/using-superset/exporting-dashboard-data.mdx
create mode 100644 docs/static/img/logos/camptocamp.svg
create mode 100644 docs/static/img/logos/craig.png
create mode 100644 docs/static/img/logos/geo2france.png
create mode 100644 docs/static/img/logos/geobretagne.svg
create mode 100644 docs/static/img/logos/georchestra.svg
create mode 100644 docs/static/img/logos/jDev.svg
create mode 100644 docs/static/img/logos/mel.jpg
create mode 100644 docs/static/img/logos/pi-Geosolutions.png
create mode 100644 docs/static/img/logos/rennes-ville-metropole_noir.svg
create mode 100644 helm/superset/UPGRADING.md
copy helm/superset/templates/{deployment-worker.yaml => deployment-mcp.yaml} (56%)
copy helm/superset/templates/{ingress.yaml => httproute.yaml} (50%)
copy helm/superset/templates/{pdb.yaml => pdb-mcp.yaml} (73%)
copy helm/superset/templates/{service.yaml => service-mcp.yaml} (54%)
create mode 100644 helm/superset/tests/checksum_test.yaml
create mode 100644 helm/superset/tests/config_test.yaml
copy RELEASING/Dockerfile.make_docs => helm/superset/tests/deprecation_test.yaml (66%)
create mode 100644 helm/superset/tests/init_containers_test.yaml
create mode 100644 helm/superset/tests/initscript_test.yaml
create mode 100644 helm/superset/tests/labels_test.yaml
create mode 100644 helm/superset/tests/secret_env_test.yaml
copy RELEASING/Dockerfile.make_tarball => helm/superset/tests/serviceaccount_test.yaml (63%)
copy RELEASING/Dockerfile.make_tarball => helm/superset/tests/values_defaults_test.yaml (71%)
create mode 100644 helm/superset/values.schema.json
copy {superset-core/src/superset_core/common => scripts}/__init__.py (100%)
create mode 100755 scripts/stylelint.sh
create mode 100644 scripts/translations/apply_do_not_translate.py
mode change 100644 => 120000 superset-embedded-sdk/.nvmrc
create mode 100644 superset-frontend/.stylelintignore
create mode 100644 superset-frontend/packages/superset-core/src/theme/__snapshots__/Theme.test.tsx.snap
create mode 100644 superset-frontend/packages/superset-ui-core/src/components/AsyncAceEditor/emojiWidthPatch.test.ts
create mode 100644 superset-frontend/packages/superset-ui-core/src/components/AsyncAceEditor/emojiWidthPatch.ts
create mode 100644 superset-frontend/packages/superset-ui-core/src/components/DropdownButton/DropdownButton.test.tsx
create mode 100644 superset-frontend/packages/superset-ui-core/src/components/Select/utils.test.ts
create mode 100644 superset-frontend/packages/superset-ui-core/src/components/antdDomContract.test.tsx
create mode 100644 superset-frontend/packages/superset-ui-core/src/connection/normalizeBackendUrls.ts
create mode 100644 superset-frontend/packages/superset-ui-core/src/currency-format/currencyLocale.ts
create mode 100644 superset-frontend/packages/superset-ui-core/src/currency-format/symbolPosition.ts
copy superset-frontend/{src/utils/getOwnerName.test.ts => packages/superset-ui-core/src/number-format/factories/createLengthFormatter.ts} (50%)
create mode 100644 superset-frontend/packages/superset-ui-core/src/utils/handleKeyboardActivation.test.ts
create mode 100644 superset-frontend/packages/superset-ui-core/src/utils/handleKeyboardActivation.ts
create mode 100644 superset-frontend/packages/superset-ui-core/test/connection/SupersetClientAppRootContract.test.ts
create mode 100644 superset-frontend/packages/superset-ui-core/test/connection/normalizeBackendUrls.test.ts
create mode 100644 superset-frontend/packages/superset-ui-core/test/currency-format/currencyLocale.test.ts
create mode 100644 superset-frontend/packages/superset-ui-core/test/currency-format/symbolPosition.test.ts
create mode 100644 superset-frontend/packages/superset-ui-core/test/number-format/factories/createLengthFormatter.test.ts
create mode 100644 superset-frontend/playwright/components/modals/NativeFiltersConfigModal.ts
copy superset-frontend/{src/setup/setupCodeOverrides.ts => playwright/pages/HomePage.ts} (55%)
create mode 100644 superset-frontend/playwright/tests/dashboard/delete-display-control.spec.ts
create mode 100644 superset-frontend/playwright/tests/experimental/explore/results-tab-reuse.spec.ts
create mode 100644 superset-frontend/playwright/tests/home/welcome.spec.ts
create mode 100644 superset-frontend/plugins/legacy-plugin-chart-horizon/test/HorizonChart.test.tsx
create mode 100644 superset-frontend/plugins/legacy-plugin-chart-horizon/test/HorizonRow.test.tsx
create mode 100644 superset-frontend/plugins/legacy-plugin-chart-paired-t-test/test/TTestTable.test.tsx
create mode 100644 superset-frontend/plugins/legacy-preset-chart-nvd3/test/TimePivot/controlPanel.test.ts
create mode 100644 superset-frontend/plugins/plugin-chart-ag-grid-table/src/utils/copyCellValue.ts
create mode 100644 superset-frontend/plugins/plugin-chart-ag-grid-table/src/utils/getColumnStateSignature.ts
create mode 100644 superset-frontend/plugins/plugin-chart-ag-grid-table/src/utils/getRowBasicColorFormatter.ts
create mode 100644 superset-frontend/plugins/plugin-chart-ag-grid-table/test/cellSelectionWiring.test.tsx
create mode 100644 superset-frontend/plugins/plugin-chart-ag-grid-table/test/transformProps.test.ts
create mode 100644 superset-frontend/plugins/plugin-chart-ag-grid-table/test/utils/copyCellValue.test.ts
create mode 100644 superset-frontend/plugins/plugin-chart-ag-grid-table/test/utils/getCellStyle.test.ts
create mode 100644 superset-frontend/plugins/plugin-chart-ag-grid-table/test/utils/getColumnStateSignature.test.ts
create mode 100644 superset-frontend/plugins/plugin-chart-ag-grid-table/test/utils/getRowBasicColorFormatter.test.ts
create mode 100644 superset-frontend/plugins/plugin-chart-echarts/test/MixedTimeseries/EchartsMixedTimeseries.test.tsx
create mode 100644 superset-frontend/plugins/plugin-chart-pivot-table/test/PivotTableChart.test.tsx
create mode 100644 superset-frontend/plugins/plugin-chart-pivot-table/test/TableRenderer.test.tsx
create mode 100644 superset-frontend/plugins/plugin-chart-pivot-table/test/testData.ts
copy superset-frontend/plugins/{plugin-chart-table => plugin-chart-pivot-table}/test/testHelpers.tsx (100%)
copy superset-frontend/plugins/{plugin-chart-table => plugin-chart-pivot-table}/test/tsconfig.json (100%)
create mode 100644 superset-frontend/plugins/plugin-chart-word-cloud/test/WordCloud.test.tsx
create mode 100644 superset-frontend/plugins/preset-chart-deckgl/src/CategoricalDeckGLContainer.test.tsx
create mode 100644 superset-frontend/plugins/preset-chart-deckgl/src/Multi/Multi.color.test.tsx
create mode 100644 superset-frontend/plugins/preset-chart-deckgl/src/utilities/tooltipUtils.test.tsx
create mode 100644 superset-frontend/plugins/preset-chart-deckgl/src/utils/addColor.test.ts
create mode 100644 superset-frontend/plugins/preset-chart-deckgl/src/utils/addColor.ts
delete mode 100644 superset-frontend/plugins/preset-chart-deckgl/src/utils/sandbox.ts
create mode 100644 superset-frontend/spec/helpers/mockBootstrapData.ts
create mode 100644 superset-frontend/spec/helpers/sourceTreeScanner.ts
create mode 100644 superset-frontend/spec/helpers/withApplicationRoot.ts
create mode 100644 superset-frontend/src/SqlLab/components/ResultSet/buildResultsGridThemeOverrides.test.ts
create mode 100644 superset-frontend/src/SqlLab/components/ResultSet/buildResultsGridThemeOverrides.ts
create mode 100644 superset-frontend/src/SqlLab/components/ScheduleQueryButton/ScheduleQueryButton.test.tsx
create mode 100644 superset-frontend/src/chartCustomizations/components/TimeGrain/CustomizationTimeGrainsTransformer.integration.test.ts
create mode 100644 superset-frontend/src/chartCustomizations/components/TimeGrain/TimeGrainPreFilter.integration.test.tsx
delete mode 100644 superset-frontend/src/components/FacePile/FacePile.stories.tsx
delete mode 100644 superset-frontend/src/components/FacePile/FacePile.test.tsx
delete mode 100644 superset-frontend/src/components/FacePile/index.tsx
delete mode 100644 superset-frontend/src/components/FacePile/types.ts
delete mode 100644 superset-frontend/src/components/FacePile/utils.tsx
create mode 100644 superset-frontend/src/components/KebabMenuButton/KebabMenuButton.test.tsx
create mode 100644 superset-frontend/src/components/KebabMenuButton/index.tsx
create mode 100644 superset-frontend/src/dashboard/actions/hydrate.test.ts
create mode 100644 superset-frontend/src/dashboard/components/Header/HeadlessAutoRefresh.test.tsx
create mode 100644 superset-frontend/src/dashboard/components/Header/HeadlessAutoRefresh.tsx
create mode 100644 superset-frontend/src/dashboard/components/Header/useHeaderAutoRefresh.test.tsx
create mode 100644 superset-frontend/src/dashboard/components/IconButton.test.tsx
delete mode 100644 superset-frontend/src/dashboard/components/PropertiesModal/hooks/useAccessOptions.ts
create mode 100644 superset-frontend/src/dashboard/components/PropertiesModal/sections/AccessSection.stories.tsx
delete mode 100644 superset-frontend/src/dashboard/components/PropertiesModal/utils.test.ts
delete mode 100644 superset-frontend/src/dashboard/components/PropertiesModal/utils.ts
create mode 100644 superset-frontend/src/dashboard/components/SliceHeaderControls/SliceHeaderControls.subdirectory.test.tsx
create mode 100644 superset-frontend/src/dashboard/components/gridComponents/Tab/Tab.subdirectory.test.tsx
create mode 100644 superset-frontend/src/dashboard/components/nativeFilters/FilterBar/FilterBar.subdirectory.test.ts
delete mode 100644 superset-frontend/src/dashboard/components/nativeFilters/FilterBar/FilterControls/FilterValue.timeGrain.test.ts
create mode 100644 superset-frontend/src/dashboard/components/nativeFilters/FiltersConfigModal/transformers/buildTarget.test.ts
create mode 100644 superset-frontend/src/dashboard/components/nativeFilters/FiltersConfigModal/transformers/buildTarget.ts
create mode 100644 superset-frontend/src/dashboard/util/getDefaultActiveTabs.test.ts
create mode 100644 superset-frontend/src/dashboard/util/getDefaultActiveTabs.ts
create mode 100644 superset-frontend/src/embedded/index.test.tsx
mode change 100644 => 100755 superset-frontend/src/explore/components/DataTableControl/FilterInput.test.tsx
mode change 100644 => 100755 superset-frontend/src/explore/components/DataTableControl/index.tsx
copy superset-frontend/src/explore/components/{controls/ColumnConfigControl/ColumnConfigConstants.test.tsx => DataTablesPane/test/getStaleResultsTabFallback.test.ts} (51%)
create mode 100644 superset-frontend/src/explore/components/DataTablesPane/test/useResultsPane.test.tsx
create mode 100644 superset-frontend/src/explore/components/EmbedCodeContent.subdirectory.test.tsx
create mode 100644 superset-frontend/src/explore/components/controls/SpatialControl.test.tsx
create mode 100644 superset-frontend/src/features/alerts/components/NotificationMethodEmailRecipients.test.tsx
create mode 100644 superset-frontend/src/features/allEntities/AllEntitiesTable.subdirectory.test.tsx
create mode 100644 superset-frontend/src/features/databases/DatabaseModal/DatabaseModal.subdirectory.test.ts
create mode 100644 superset-frontend/src/features/databases/DatabaseModal/ModalHeader.test.tsx
create mode 100644 superset-frontend/src/features/datasets/AddDataset/DatasetPanel/DatasetPanel.subdirectory.test.tsx
create mode 100644 superset-frontend/src/features/home/Menu.subdirectory.test.tsx
create mode 100644 superset-frontend/src/features/home/SavedQueries.test.tsx
delete mode 100644 superset-frontend/src/features/owners/OwnerSelectLabel/OwnerSelectLabel.test.tsx
create mode 100644 superset-frontend/src/features/semanticLayers/jsonFormsAntdRenderers.test.tsx
create mode 100644 superset-frontend/src/features/subjects/SubjectPicker/SubjectPicker.stories.tsx
create mode 100644 superset-frontend/src/features/subjects/SubjectPicker/SubjectPicker.test.tsx
create mode 100644 superset-frontend/src/features/subjects/SubjectPicker/index.tsx
create mode 100644 superset-frontend/src/features/subjects/SubjectPicker/utils.ts
create mode 100644 superset-frontend/src/features/subjects/SubjectPile/SubjectPile.stories.tsx
create mode 100644 superset-frontend/src/features/subjects/SubjectPile/SubjectPile.test.tsx
create mode 100644 superset-frontend/src/features/subjects/SubjectPile/index.tsx
create mode 100644 superset-frontend/src/features/subjects/SubjectSelectLabel/SubjectSelectLabel.stories.tsx
rename superset-frontend/src/features/{owners/OwnerSelectLabel => subjects/SubjectSelectLabel}/index.tsx (56%)
create mode 100644 superset-frontend/src/pages/DatasetList/DatasetList.subdirectory.test.tsx
create mode 100644 superset-frontend/src/pages/FileHandler/FileHandler.subdirectory.test.tsx
create mode 100644 superset-frontend/src/pages/RedirectWarning/RedirectWarning.test.tsx
create mode 100644 superset-frontend/src/pages/Tags/Tags.test.tsx
delete mode 100644 superset-frontend/src/pwa-manifest.json
create mode 100644 superset-frontend/src/setup/setupFormatters.test.ts
copy superset-frontend/src/types/{Owner.ts => Subject.ts} (69%)
rename superset-frontend/src/types/{Owner.ts => User.ts} (87%)
rename superset-frontend/src/utils/{getOwnerName.test.ts => getUserName.test.ts} (65%)
rename superset-frontend/src/utils/{getOwnerName.ts => getUserName.ts} (80%)
create mode 100644 superset-frontend/src/utils/navigationUtils.AppLink.test.tsx
create mode 100644 superset-frontend/src/utils/navigationUtils.appRoot.test.tsx
create mode 100644 superset-frontend/src/utils/navigationUtils.directDom.test.tsx
create mode 100644 superset-frontend/src/utils/navigationUtils.invariants.test.ts
create mode 100644 superset-frontend/src/utils/navigationUtils.schemes.test.ts
create mode 100644 superset-frontend/src/utils/navigationUtils.test.ts
create mode 100644 superset-frontend/src/utils/pathUtils.parity.test.ts
create mode 100644 superset-frontend/src/views/menu.test.tsx
rename superset-websocket/jest.config.js => superset-frontend/stylelint.config.js (65%)
mode change 100644 => 120000 superset-websocket/.nvmrc
rename superset-websocket/{eslint.config.js => eslint.config.mjs} (75%)
mode change 100644 => 120000 superset-websocket/utils/client-ws-app/.nvmrc
create mode 100644 superset/cli/sync_subjects.py
copy tests/unit_tests/mcp_service/test_schema_discovery.py => superset/commands/chart/restore.py (53%)
create mode 100644 superset/commands/dashboard/restore.py
create mode 100644 superset/commands/dataset/restore.py
create mode 100644 superset/daos/group.py
copy superset/daos/{role.py => subject.py} (73%)
create mode 100644 superset/daos/version.py
copy {superset-core/src/superset_core/common => superset/dashboards/excel_export}/__init__.py (100%)
create mode 100644 superset/dashboards/excel_export/email.py
create mode 100644 superset/dashboards/excel_export/layout.py
create mode 100644 superset/dashboards/excel_export/screenshot.py
create mode 100755 superset/mcp_service/chart/plugin.py
create mode 100644 superset/mcp_service/chart/plugins/__init__.py
create mode 100644 superset/mcp_service/chart/plugins/big_number.py
create mode 100644 superset/mcp_service/chart/plugins/box_plot.py
create mode 100644 superset/mcp_service/chart/plugins/handlebars.py
create mode 100644 superset/mcp_service/chart/plugins/histogram.py
create mode 100644 superset/mcp_service/chart/plugins/mixed_timeseries.py
create mode 100644 superset/mcp_service/chart/plugins/pie.py
create mode 100644 superset/mcp_service/chart/plugins/pivot_table.py
create mode 100644 superset/mcp_service/chart/plugins/table.py
create mode 100644 superset/mcp_service/chart/plugins/waterfall.py
create mode 100755 superset/mcp_service/chart/plugins/xy.py
create mode 100644 superset/mcp_service/chart/registry.py
create mode 100644 superset/mcp_service/chart/tool/delete_chart.py
create mode 100644 superset/mcp_service/chart/tool/restore_chart.py
mode change 100644 => 100755 superset/mcp_service/chart/validation/runtime/__init__.py
create mode 100644 superset/mcp_service/dashboard/tool/delete_dashboard.py
create mode 100644 superset/mcp_service/dashboard/tool/duplicate_dashboard.py
create mode 100644 superset/mcp_service/dashboard/tool/get_dashboard_datasets.py
create mode 100644 superset/mcp_service/dashboard/tool/governance_utils.py
create mode 100644 superset/mcp_service/dashboard/tool/manage_dashboard_certification.py
create mode 100644 superset/mcp_service/dashboard/tool/manage_dashboard_owners.py
create mode 100644 superset/mcp_service/dashboard/tool/manage_dashboard_roles.py
create mode 100644 superset/mcp_service/dashboard/tool/manage_native_filters.py
create mode 100644 superset/mcp_service/dashboard/tool/remove_chart_from_dashboard.py
create mode 100644 superset/mcp_service/dashboard/tool/restore_dashboard.py
create mode 100644 superset/mcp_service/dataset/dataset_utils.py
create mode 100644 superset/mcp_service/dataset/tool/update_dataset_metric.py
create mode 100644 superset/mcp_service/guest_scope.py
create mode 100644 superset/mcp_service/guest_token_verifier.py
copy {superset-core/src/superset_core/common => superset/mcp_service/semantic_layer}/__init__.py (100%)
create mode 100644 superset/mcp_service/semantic_layer/schemas.py
copy superset/mcp_service/{utils => semantic_layer/tool}/__init__.py (64%)
create mode 100644 superset/mcp_service/semantic_layer/tool/get_compatible_dimensions.py
create mode 100644 superset/mcp_service/semantic_layer/tool/get_compatible_metrics.py
create mode 100644 superset/mcp_service/semantic_layer/tool/get_table.py
create mode 100644 superset/mcp_service/semantic_layer/tool/list_metrics.py
mode change 100644 => 100755 superset/mcp_service/system/tool/find_users.py
copy superset/{utils/backports.py => mcp_service/theme/__init__.py} (79%)
copy superset/mcp_service/{tag => theme}/schemas.py (56%)
copy superset/{utils/backports.py => mcp_service/theme/tool/__init__.py} (79%)
create mode 100644 superset/mcp_service/theme/tool/create_theme.py
copy superset/mcp_service/{tag/tool/get_tag_info.py => theme/tool/get_theme_info.py} (55%)
copy superset/mcp_service/{tag/tool/list_tags.py => theme/tool/list_themes.py} (56%)
create mode 100644 superset/mcp_service/utils/query_utils.py
copy {superset-core/src/superset_core/common => superset/middleware}/__init__.py (100%)
create mode 100644 superset/middleware/legacy_prefix_redirect.py
create mode 100644 superset/migrations/versions/2026-03-23_10-00_b1c2d3e4f5a6_add_subjects_tables.py
create mode 100644 superset/migrations/versions/2026-05-01_23-36_2bee73611e32_composite_pk_association_tables.py
create mode 100644 superset/migrations/versions/2026-05-08_12-00_7c4a8d09ca37_add_deleted_at_to_slices.py
create mode 100644 superset/migrations/versions/2026-05-08_12-05_9e1f3b8c4d2a_add_deleted_at_to_dashboards.py
create mode 100644 superset/migrations/versions/2026-05-08_12-10_3a8e6f2c1b95_add_deleted_at_to_tables.py
create mode 100644 superset/migrations/versions/2026-05-28_19-50_56cd24c07170_add_versioning_tables.py
create mode 100644 superset/migrations/versions/2026-05-29_00-00_b4a3f2e1d0c9_fix_security_view_menu_case.py
create mode 100644 superset/migrations/versions/2026-06-03_12-00_8f3a1b2c4d5e_shadow_live_row_indexes.py
create mode 100644 superset/migrations/versions/2026-06-23_03-23_a7d3f1b9c2e4_cleanup_stale_can_import_pvm.py
create mode 100644 superset/migrations/versions/2026-06-30_00-00_d24e6b0a9c7f_strip_metricsqlexpressions_from_ag_grid_params.py
copy superset/{utils/backports.py => openapi/__init__.py} (79%)
create mode 100644 superset/openapi/manager.py
copy {superset-core/src/superset_core/common => superset/subjects}/__init__.py (100%)
create mode 100644 superset/subjects/api.py
copy superset/{daos/role.py => subjects/exceptions.py} (72%)
create mode 100644 superset/subjects/filters.py
create mode 100644 superset/subjects/hooks.py
create mode 100644 superset/subjects/models.py
create mode 100644 superset/subjects/schemas.py
create mode 100644 superset/subjects/sync.py
copy superset/{utils/backports.py => subjects/types.py} (79%)
create mode 100644 superset/subjects/utils.py
create mode 100644 superset/tasks/export_dashboard_excel.py
create mode 100644 superset/tasks/native_filter_cache.py
create mode 100644 superset/translations/do-not-translate.txt
create mode 100644 superset/utils/excel_streaming.py
create mode 100644 superset/utils/pandas_sqlalchemy_compat.py
create mode 100644 superset/utils/s3.py
copy {superset-core/src/superset_core/common => superset/versioning}/__init__.py (100%)
create mode 100644 superset/versioning/activity/__init__.py
create mode 100644 superset/versioning/activity/impact.py
create mode 100644 superset/versioning/activity/kinds.py
create mode 100644 superset/versioning/activity/orchestrator.py
create mode 100644 superset/versioning/activity/queries.py
create mode 100644 superset/versioning/activity/render.py
create mode 100644 superset/versioning/activity/scope.py
create mode 100644 superset/versioning/activity/visibility.py
create mode 100644 superset/versioning/activity/windows.py
create mode 100644 superset/versioning/api_helpers.py
create mode 100644 superset/versioning/baseline/__init__.py
create mode 100644 superset/versioning/baseline/children.py
create mode 100644 superset/versioning/baseline/collection.py
create mode 100644 superset/versioning/baseline/dirty.py
create mode 100644 superset/versioning/baseline/insertion.py
create mode 100644 superset/versioning/baseline/listener.py
create mode 100644 superset/versioning/baseline/shadow.py
create mode 100644 superset/versioning/changes/__init__.py
create mode 100644 superset/versioning/changes/listener.py
create mode 100644 superset/versioning/changes/shadow_queries.py
create mode 100644 superset/versioning/changes/state.py
create mode 100644 superset/versioning/changes/table.py
create mode 100644 superset/versioning/diff.py
create mode 100644 superset/versioning/etag.py
create mode 100644 superset/versioning/factory.py
create mode 100644 superset/versioning/queries.py
create mode 100644 superset/versioning/schemas.py
create mode 100644 superset/versioning/utils.py
create mode 100644 superset/views/pwa_manifest.py
create mode 100644 tests/integration_tests/charts/soft_delete_tests.py
delete mode 100644 tests/integration_tests/dashboards/security/security_rbac_tests.py
create mode 100644 tests/integration_tests/dashboards/soft_delete_tests.py
create mode 100644 tests/integration_tests/datasets/soft_delete_tests.py
create mode 100644 tests/integration_tests/migrations/a7d3f1b9c2e4_cleanup_stale_can_import_pvm__tests.py
create mode 100644 tests/integration_tests/migrations/b4a3f2e1d0c9_fix_security_view_menu_case__tests.py
create mode 100644 tests/integration_tests/migrations/composite_pk_association_tables__tests.py
create mode 100644 tests/integration_tests/migrations/composite_pk_round_trip__tests.py
copy {superset-core/src/superset_core/common => tests/integration_tests/subjects}/__init__.py (100%)
create mode 100644 tests/integration_tests/subjects/api_tests.py
copy {superset-core/src/superset_core/common => tests/integration_tests/versioning}/__init__.py (100%)
create mode 100644 tests/integration_tests/versioning/activity_view_tests.py
create mode 100644 tests/integration_tests/versioning/capture_disabled_tests.py
create mode 100644 tests/integration_tests/versioning/change_records_tests.py
create mode 100644 tests/integration_tests/versioning/conftest.py
create mode 100644 tests/integration_tests/versioning/perf_validation_tests.py
create mode 100644 tests/integration_tests/versioning/snapshot_projection_tests.py
create mode 100644 tests/integration_tests/versioning/transaction_correctness_tests.py
create mode 100644 tests/integration_tests/versioning/versions_api_tests.py
create mode 100644 tests/integration_tests/views/test_explore_redirect.py
create mode 100644 tests/unit_tests/async_events/test_cache_backend.py
create mode 100644 tests/unit_tests/charts/test_filters.py
create mode 100644 tests/unit_tests/cli/thumbnails_test.py
create mode 100644 tests/unit_tests/commands/chart/restore_test.py
create mode 100644 tests/unit_tests/commands/dashboard/importers/v1/assets_test.py
create mode 100644 tests/unit_tests/commands/dashboard/restore_test.py
create mode 100644 tests/unit_tests/commands/dataset/restore_test.py
create mode 100644 tests/unit_tests/common/test_query_actions.py
create mode 100644 tests/unit_tests/dao/dashboard_test.py
create mode 100644 tests/unit_tests/dao/datasource_test.py
create mode 100644 tests/unit_tests/dao/group_test.py
create mode 100644 tests/unit_tests/dao/role_test.py
create mode 100644 tests/unit_tests/dao/subject_test.py
copy {superset-core/src/superset_core/common => tests/unit_tests/dashboards/commands/importers/v0}/__init__.py (100%)
create mode 100644 tests/unit_tests/dashboards/commands/importers/v0/import_test.py
create mode 100644 tests/unit_tests/dashboards/test_excel_export_email.py
create mode 100644 tests/unit_tests/dashboards/test_excel_export_layout.py
create mode 100644 tests/unit_tests/dashboards/test_excel_export_screenshot.py
create mode 100644 tests/unit_tests/databases/commands/delete_test.py
copy superset/utils/pandas_postprocessing/rank.py => tests/unit_tests/databases/test_schemas.py (56%)
copy {superset-core/src/superset_core/common => tests/unit_tests/datasets/commands/importers/v0}/__init__.py (100%)
create mode 100644 tests/unit_tests/datasets/commands/importers/v0/import_test.py
create mode 100644 tests/unit_tests/db_engine_specs/test_databricks_multi_cloud.py
create mode 100644 tests/unit_tests/mcp_service/chart/test_chart_config_coercion.py
create mode 100644 tests/unit_tests/mcp_service/chart/test_histogram_boxplot_charts.py
create mode 100644 tests/unit_tests/mcp_service/chart/test_registry.py
create mode 100644 tests/unit_tests/mcp_service/chart/test_registry_filters.py
create mode 100644 tests/unit_tests/mcp_service/chart/test_waterfall_chart.py
create mode 100644 tests/unit_tests/mcp_service/chart/tool/test_delete_chart.py
create mode 100644 tests/unit_tests/mcp_service/chart/tool/test_list_charts_deleted_state.py
create mode 100644 tests/unit_tests/mcp_service/chart/tool/test_restore_chart.py
mode change 100644 => 100755 tests/unit_tests/mcp_service/chart/validation/test_column_name_normalization.py
mode change 100644 => 100755 tests/unit_tests/mcp_service/chart/validation/test_runtime_validator.py
copy superset/daos/role.py => tests/unit_tests/mcp_service/dashboard/tool/conftest.py (52%)
create mode 100644 tests/unit_tests/mcp_service/dashboard/tool/test_delete_dashboard.py
create mode 100644 tests/unit_tests/mcp_service/dashboard/tool/test_duplicate_dashboard.py
create mode 100644 tests/unit_tests/mcp_service/dashboard/tool/test_get_dashboard_datasets.py
create mode 100644 tests/unit_tests/mcp_service/dashboard/tool/test_list_dashboards_deleted_state.py
create mode 100644 tests/unit_tests/mcp_service/dashboard/tool/test_manage_dashboard_certification.py
create mode 100644 tests/unit_tests/mcp_service/dashboard/tool/test_manage_dashboard_owners.py
create mode 100644 tests/unit_tests/mcp_service/dashboard/tool/test_manage_dashboard_roles.py
create mode 100644 tests/unit_tests/mcp_service/dashboard/tool/test_manage_native_filters.py
create mode 100644 tests/unit_tests/mcp_service/dashboard/tool/test_remove_chart_from_dashboard.py
create mode 100644 tests/unit_tests/mcp_service/dashboard/tool/test_restore_dashboard.py
create mode 100644 tests/unit_tests/mcp_service/dataset/test_dataset_schemas.py
create mode 100644 tests/unit_tests/mcp_service/dataset/tool/test_update_dataset_metric.py
copy {superset-core/src/superset_core/common => tests/unit_tests/mcp_service/semantic_layer}/__init__.py (100%)
copy {superset-core/src/superset_core/common => tests/unit_tests/mcp_service/semantic_layer/tool}/__init__.py (100%)
create mode 100644 tests/unit_tests/mcp_service/semantic_layer/tool/test_get_compatible_dimensions.py
create mode 100644 tests/unit_tests/mcp_service/semantic_layer/tool/test_get_compatible_metrics.py
create mode 100644 tests/unit_tests/mcp_service/semantic_layer/tool/test_get_table.py
create mode 100644 tests/unit_tests/mcp_service/semantic_layer/tool/test_list_metrics.py
copy {superset-core/src/superset_core/common => tests/unit_tests/mcp_service/system/resources}/__init__.py (100%)
create mode 100644 tests/unit_tests/mcp_service/system/resources/test_schema_discovery.py
create mode 100644 tests/unit_tests/mcp_service/test_guest_scope.py
create mode 100644 tests/unit_tests/mcp_service/test_guest_token_auth.py
create mode 100644 tests/unit_tests/mcp_service/test_mcp_e2e_smoke.py
create mode 100644 tests/unit_tests/mcp_service/test_rbac_tool_enforcement.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_create_theme.py
create mode 100644 tests/unit_tests/mcp_service/theme/tool/test_get_theme_info.py
create mode 100644 tests/unit_tests/mcp_service/theme/tool/test_list_themes.py
create mode 100644 tests/unit_tests/mcp_service/user/test_schemas.py
create mode 100644 tests/unit_tests/mcp_service/utils/test_cache_utils.py
create mode 100644 tests/unit_tests/mcp_service/utils/test_oauth2_utils.py
create mode 100644 tests/unit_tests/mcp_service/utils/test_query_utils.py
create mode 100644 tests/unit_tests/mcp_service/utils/test_response_utils.py
create mode 100644 tests/unit_tests/mcp_service/utils/test_retry_utils.py
copy {superset-core/src/superset_core/common => tests/unit_tests/middleware}/__init__.py (100%)
create mode 100644 tests/unit_tests/middleware/test_legacy_prefix_redirect.py
create mode 100644 tests/unit_tests/migrations/composite_pk_association_tables_test.py
create mode 100644 tests/unit_tests/migrations/test_add_deleted_at_to_dashboards.py
create mode 100644 tests/unit_tests/migrations/test_add_deleted_at_to_slices.py
create mode 100644 tests/unit_tests/migrations/test_add_deleted_at_to_tables.py
create mode 100644 tests/unit_tests/migrations/test_strip_metricsqlexpressions_from_ag_grid_params.py
create mode 100644 tests/unit_tests/models/multi_space_column_names_test.py
create mode 100644 tests/unit_tests/models/owner_association_tables_test.py
create mode 100644 tests/unit_tests/models/test_helpers_offset.py
create mode 100644 tests/unit_tests/models/test_time_filter_hour_offset.py
copy {superset-core/src/superset_core/common => tests/unit_tests/openapi}/__init__.py (100%)
create mode 100644 tests/unit_tests/openapi/test_manager.py
create mode 100644 tests/unit_tests/pandas_postprocessing/test_rank.py
copy superset/views/groups.py => tests/unit_tests/queries/saved_queries_schema_test.py (59%)
create mode 100644 tests/unit_tests/scripts/change_detector_test.py
create mode 100644 tests/unit_tests/sqllab/test_sql_json_executer.py
copy {superset-core/src/superset_core/common => tests/unit_tests/subjects}/__init__.py (100%)
create mode 100644 tests/unit_tests/subjects/test_copy_command.py
create mode 100644 tests/unit_tests/subjects/test_filters.py
create mode 100644 tests/unit_tests/subjects/test_raise_for_access.py
create mode 100644 tests/unit_tests/subjects/test_security.py
create mode 100644 tests/unit_tests/subjects/test_utils.py
create mode 100644 tests/unit_tests/tasks/test_export_dashboard_excel.py
create mode 100644 tests/unit_tests/tasks/test_native_filter_cache.py
create mode 100644 tests/unit_tests/test_marshmallow_compatibility.py
create mode 100644 tests/unit_tests/test_subdirectory_url_for.py
create mode 100644 tests/unit_tests/utils/excel_streaming_tests.py
create mode 100644 tests/unit_tests/utils/pandas_sqlalchemy_compat_test.py
create mode 100644 tests/unit_tests/utils/s3_tests.py
create mode 100644 tests/unit_tests/versioning/test_activity.py
create mode 100644 tests/unit_tests/versioning/test_diff_caps.py
create mode 100644 tests/unit_tests/versioning/test_listener.py
copy {superset-core/src/superset_core/common => tests/unit_tests/views}/__init__.py (100%)
create mode 100644 tests/unit_tests/views/datasource/test_utils.py
create mode 100644 tests/unit_tests/views/test_pwa_manifest.py
create mode 100644 tests/unit_tests/views/test_redirect_view_subdirectory.py
create mode 100644 tests/unit_tests/views/test_spa_service_worker.py
delete mode 100644 tests/unit_tests/views/test_utils.py