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/04/07 00:20:35 UTC

(superset) branch issue31403 updated (410327b0b5d -> 166ec498f33)

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

rusackas pushed a change to branch issue31403
in repository https://gitbox.apache.org/repos/asf/superset.git


    omit 410327b0b5d chore: trigger CI retry
    omit ae515bfb4b4 fix(TableView): reset pagination when data reduces below current page
    omit 3dd7bebdc0c docs: expand comment explaining key prop trade-off
    omit 5f04b4bff6c fix: proper TypeScript types in test file
    omit b90055ae622 fix(explore): reset table pagination when filtering in View as Table
     add f6f96ecc49c test(chart-list): migrate Chart List tests from Cypress to RTL (#37813)
     add 76351ff12c4 fix(i18n): ensure language pack loads before React renders (#36893)
     add 6ca028dee90 chore(deps): bump axios from 1.12.2 to 1.13.5 in /docs (#37814)
     add d078f18ff88 chore(deps-dev): bump @types/node from 25.2.1 to 25.2.2 in /superset-websocket (#37796)
     add 2df60f9caf0 chore(deps): bump immer from 11.1.3 to 11.1.4 in /superset-frontend (#37830)
     add f370da5a87a chore(deps-dev): bump @typescript-eslint/parser from 8.54.0 to 8.55.0 in /docs (#37827)
     add 4d8ff845875 chore(deps-dev): bump @playwright/test from 1.58.1 to 1.58.2 in /superset-frontend (#37826)
     add 8c6bc3eaea3 chore(deps): bump antd from 6.2.3 to 6.3.0 in /docs (#37824)
     add 1cba53a043d chore(deps-dev): bump @typescript-eslint/parser from 8.54.0 to 8.55.0 in /superset-websocket (#37823)
     add 3af795af364 chore(deps-dev): bump @typescript-eslint/eslint-plugin from 8.54.0 to 8.55.0 in /superset-websocket (#37822)
     add 948b1d613b2 chore(deps-dev): bump typescript-eslint from 8.54.0 to 8.55.0 in /docs (#37825)
     add 0f1278fa614 fix(gtf): set dedup_key on atomic sql (#37820)
     add c59d0a73d47 fix: Prevent table rows from overlapping pagination in table view (#37174)
     add ae8d671fea3 fix(sql): fix sql suggestions (#37699)
     add c41942a38ad chore(deps): Upgrade sqlglot from 27.15.2 to 28.10.0 (#37841)
     add 76aa91f5ea2 fix(deps): pin `react-error-boundary` to 6.0.0 for React 17 peer dep constraint (#37706)
     add 7ec5f1d7ecf fix(native-filters): Filters with select first value not restored correctly from url (#37855)
     add b98b34a60f5 refactor: Make extensions contribution schema consistent (#37856)
     add 6a6b9b53864 chore: Bump core packages (0.0.1rc11, 0.0.1rc4) (#37860)
     add 1388a628230 fix(filters): fix filter / customization name not updating in sidebar in real time (#37358)
     add 39ac96817a8 fix(helm): Add default initContainer resources (#37637)
     add 4eb8fc814a9 chore(deps-dev): bump @types/node from 25.2.2 to 25.2.3 in /superset-websocket (#37846)
     add 7d4a7f113c4 chore(deps-dev): bump webpack from 5.105.0 to 5.105.1 in /docs (#37849)
     add 7e5ca83220e chore(deps-dev): bump @types/node from 25.2.2 to 25.2.3 in /superset-frontend (#37851)
     add 9a79dbf4457 fix(docs): make page size selector work in database table (#37863)
     add 69c679be20a fix(explore): Don't show unsaved changes modal on new charts (#37714)
     add 74e1607010e fix(extensions): broken test (#37871)
     add 88a14f2ba0d fix(FiltersBadge): world map wont show filter icon after refresh page (#37260)
     add c28729f944f chore(lint): add jest/expect-expect rule for test assertions (#37887)
     add 534fa48f1ff chore(lint): enforce stricter eslint/oxlint rules (#37883)
     add d640fe42c9b chore: remove Applitools visual testing integration (#37873)
     add 98ca599eef9 perf: fix N+1 query in chart list API when thumbnail_url is requested (#37895)
     add 9089f300459 chore(lint): upgrade array creation, effect, and TypeScript rules (#37885)
     add 255a0ada814 fix(gtf): add missing user_id to task commands (#37867)
     add 5f0001affc9 feat(timeseries): remove stream style for bar charts (#37532)
     add 26a2e127793 perf: fix N+1 query in Slice.datasource property (#37899)
     add 00d02cb2ea1 perf(gtf): improve task base filter (#37900)
     add b0be47a4ac2 fix: Unreachable drop zones within tabs in dashbboard editor (#37904)
     add b012b63e5b8 fix(native-filters): align refresh icon with default value field (#37802)
     add 981b370fe9e chore(storybook): consolidate storybook and enhance plugin stories (#37771)
     add 77148277b96 feat(charts): improve negative stacked bar label positioning and accessibility (#37405)
     add 19ec7b48a0f fix: Conditional formatting painting empty cells (#37894)
     add 30ccbb2e050 chore(deps): update @types/geojson requirement from ^7946.0.10 to ^7946.0.16 in /superset-frontend/plugins/plugin-chart-cartodiagram (#37908)
     add afacca350f0 chore(deps-dev): bump oxlint from 1.42.0 to 1.46.0 in /superset-frontend (#37917)
     add 3f64c257120 fix(mcp): Add database_name as valid filter column for list_datasets (#37865)
     add 4dfece9ee54 feat(mcp): add event_logger instrumentation to MCP tools (#37859)
     add 88ce1425e2c fix(roles): optimize user fetching and resolve N+1 query issue (#37235)
     add dbf5e1f1314 feat(theme): use IBM Plex Mono for code and numerical displays (#37366)
     add 58d245c6b03 chore(deps): Update sqlachemy-utils to 0.42.0 (#36240)
     add 0d5ddb36749 feat(themes): add enhanced validation and error handling with fallback mechanisms (#37378)
     add 6328e516206 test(examples): add tests for UUID threading and security bypass (#37557)
     add 142b2cc4254 test(e2e): add Playwright E2E tests for Chart List page (#37866)
     add 080f629ea21 fix(echarts): formula annotations not rendering with dataset-level columns label (#37522)
     add 0c0d915391d fix(echarts-timeseries-combined-labels): combine annotation labels for events at same timestamp (#37164)
     add e3e2bece6bc feat(owners): display email in owner selectors (#37906)
     add ffd7f103207 chore(deps): bump markdown-to-jsx from 9.7.3 to 9.7.4 in /superset-frontend (#37959)
     add 75d6a95ac39 chore(deps): bump aquasecurity/trivy-action from 0.33.1 to 0.34.0 (#37958)
     add 79f51e2ae7d chore(deps-dev): bump webpack from 5.105.1 to 5.105.2 in /docs (#37953)
     add 475615e1186 chore(deps): bump ioredis from 5.9.2 to 5.9.3 in /superset-websocket (#37951)
     add a65f73a5323 chore(deps): bump qs from 6.14.1 to 6.14.2 in /docs (#37937)
     add 73adff55ee8 chore(deps): Relax sqlalchemy-utils lower bound for pydoris compatibility  (#37949)
     add 097f474f24b chore(deps): bump pillow from 11.3.0 to 12.1.1 (#37935)
     add cbf153845ed chore(deps): bump qs from 6.14.1 to 6.14.2 in /superset-websocket/utils/client-ws-app (#37933)
     add 440602ef344 fix(utils): datetime_to_epoch function is fixed to timezone aware epoch (#37979)
     add 5300f65a74e chore(deps): bump qs from 6.14.1 to 6.14.2 in /superset-frontend (#37936)
     add d748ed19ced chore(deps): bump hot-shots from 13.2.0 to 14.0.0 in /superset-websocket (#37993)
     add 232b34d9443 chore(deps-dev): bump webpack-sources from 3.3.3 to 3.3.4 in /superset-frontend (#38004)
     add eee3af57759 chore(deps-dev): bump oxlint from 1.46.0 to 1.47.0 in /superset-frontend (#38005)
     add 982e2c1ef7f chore(deps-dev): bump webpack from 5.105.0 to 5.105.2 in /superset-frontend (#38003)
     add c873225308e chore(deps-dev): bump jsdom from 28.0.0 to 28.1.0 in /superset-frontend (#37997)
     add d47a7105dfa chore(deps): bump caniuse-lite from 1.0.30001769 to 1.0.30001770 in /docs (#37994)
     add 2c9f0c1c2a8 chore(deps-dev): bump wait-on from 9.0.3 to 9.0.4 in /superset-frontend (#37999)
     add 22ac5e02b60 fix(deckgl): remove dataset field from Deck.gl Layer Visibility Display controls (#37611)
     add 8853ff19d48 chore(websocket): migrate external uuid usage with Node's native UUID generator (#37101)
     add 7b21979fa3b fix(charts): Force refresh uses async mode when GAQ is enabled (#37845)
     add 3e3c9686de8 perf(dashboard): Batch RLS filter lookups for dashboard digest computation (#37941)
     add 84f1ee44093 feat: added conditional formatting enhancements string to pivot table (#35863)
     add 604d49f5579 chore(deps): bump datamaps from 0.5.9 to 0.5.10 in /superset-frontend (#37913)
     add 9566e8a9c6a chore(deps-dev): bump eslint-plugin-react-you-might-not-need-an-effect from 0.8.5 to 0.9.1 in /superset-frontend (#38000)
     add 5cd829f13c8 fix(mcp): handle more chart types in get_chart_data fallback query construction (#37969)
     add f7218e7a192 feat(mcp): expose current user identity in get_instance_info and add created_by_fk filter (#37967)
     add aec1f6edce9 fix(mcp): use last data-bearing statement in execute_sql response (#37968)
     add 5a777c0f45f feat(matrixify): add single metric constraint (#37169)
     add 746e266e901 chore(deps): bump swagger-ui-react from 5.31.0 to 5.31.1 in /docs (#38023)
     add b0f9a73f63d chore(deps-dev): bump typescript-eslint from 8.54.0 to 8.56.0 in /superset-websocket (#38020)
     add 5efc7ea5a51 chore(deps-dev): bump typescript-eslint from 8.55.0 to 8.56.0 in /docs (#38024)
     add 868e719c60e chore(deps-dev): bump oxlint from 1.47.0 to 1.48.0 in /superset-frontend (#38055)
     add 65c460c9d26 chore(deps-dev): bump @swc/plugin-emotion from 14.5.0 to 14.6.0 in /superset-frontend (#38053)
     add cd4cd537260 chore(deps-dev): bump css-loader from 7.1.3 to 7.1.4 in /superset-frontend (#38050)
     add 090eab099c0 chore(deps): bump storybook from 8.6.15 to 8.6.16 in /docs (#38043)
     add a30492f55e1 fix(plugin/cal-heatmap): properly color tooltip's text for both dark/light theme (#38010)
     add 9131739f98b fix(home): null check for possibly undefined filtered other table data due to insufficient permission (#37983)
     add 7b56fc1714c fix(docs): correct DB module filename for editing + update DB metadata file (#37990)
     add 0d2c8fd3737 chore(deps): bump @storybook/core from 8.6.15 to 8.6.16 in /docs (#38046)
     add 21481eef4fc chore(deps): bump the storybook group in /docs with 9 updates (#38067)
     add 29f499528ff chore(deps-dev): bump eslint-plugin-testing-library from 7.15.4 to 7.16.0 in /superset-frontend (#38066)
     add af3e0882331 build(deps): resolve GHSA-36jr-mh4h-2g58 by upgrading d3-color to 3.1.0 (#37981)
     add 11a36ff4887 chore(deps-dev): bump the storybook group across 1 directory with 11 updates (#38068)
     add 9ec56f5f02b fix: Include app_root in next param (#37942)
     add 33441ccf3db feat: add formatting column and formatting object to conditional formating table (#35897)
     add f54bbdc06b3 chore(deps): bump dawidd6/action-download-artifact from 14 to 15 (#38060)
     add de079a7b199 feat(deps)!: bump postgresql from 16 to 17 (#37782)
     add 6b80135aa28 chore(lint): enforce more strict eslint/oxlint rules (batch 2) (#37884)
     add c175346808a fix(table-charts): Prevent time grain from altering Raw Records in Tables + Interactive Tables (#37561)
     add 0b77ace1109 chore: fix lint issue with `no-unsafe-optional-chaining` rule (#38103)
     add f5a5a804e23 perf(dashboard): skip thumbnail_url computing on single dashboard endpoint (#38015)
     add b7a3224f040 feat: Larger folder drag area in folders editor (#38102)
     add e12140beb65 fix: Warning toast copy in folders editor (#38099)
     add 86c8fa5cd7b fix: Badge count in folders editor (#38100)
     add f049d3e34aa fix: Search in folders editor with verbose names (#38101)
     add 1f76944c2b1 fix: Add editors to ContributionConfig and additional properties to EditorKeyword (#38098)
     add 5cc8ae5427d chore(deps): bump ol from 7.5.2 to 10.8.0 in /superset-frontend (#37961)
     add 6a61baf5be8 fix(alerts): show friendly filter names in report edit modal (#38054)
     add 3868821dc81 fix(webpack): skip building service worker in dev (#38106)
     add 5278deaf635 fix(metrics): normalize legacy currency strings (#37455)
     add f4acce5727f fix(table): preserve time grain aggregation when temporal column casing changes (#37893)
     add 88f0e322e32 chore(deps): bump baseline-browser-mapping from 2.9.19 to 2.10.0 in /docs (#38113)
     add 58d8aa01f82 chore(deps): bump react-intersection-observer from 10.0.2 to 10.0.3 in /superset-frontend (#38114)
     add 69653dfd08b chore(deps-dev): bump baseline-browser-mapping from 2.9.19 to 2.10.0 in /superset-frontend (#38116)
     add 1ecff6fe5c1 fix(thumbnails): stabilize digest by sorting datasources and charts (#38079)
     add 9f8b212ccc7 feat(mcp): add LIKE, ILIKE, IN, NOT IN filter operators to MCP chart tools (#38071)
     add 79372465757 fix(button): use colorLink token for link-style buttons (#38121)
     add e30a9caba51 fix(dataset-modal): fix folders tab scrollbar by establishing proper flex chain (#38123)
     add 6fdaa8e9b36 fix(crud): reorder table actions + improve react memoization + improve hooks (#37897)
     add 1a77e171799 fix(chart-customizations): support migration of dynamic group by (#37176)
     add 6f34ba7d4a9 fix(table-chart): support orderby adhoc columns with server-side pagination (#37521)
     add 2d44f52ad16 fix(encryption): resolve SECRET_KEY lazily to fix silent re-encrypt-secrets failures (#37982)
     add 44d6b6a5139 fix(table): preserve line breaks in cell content modal (#37036)
     add cff854b06e3 chore(deps-dev): bump oxlint from 1.48.0 to 1.49.0 in /superset-frontend (#38115)
     add b290f712452 fix(explore): prevent theme object from being passed to ReactAce in TextAreaControl (#38117)
     add b565128fe76 fix(charts): improve error display for failed charts in dashboards (#37939)
     add 577b965a601 chore(deps-dev): bump ajv from 6.12.6 to 6.14.0 in /superset-frontend (#38132)
     add 3d6644864d4 build(deps): migrate to lighter and modern `react-icons` (#38125)
     add 987b6a6f041 chore(deps): bump swagger-ui-react from 5.31.1 to 5.31.2 in /docs (#38140)
     add 5e6524954c8 chore(deps): pin react-icons to 5.4.0 in /superset-frontend (#38144)
     add 82fce8d7de8 chore(deps-dev): bump @types/node from 25.2.3 to 25.3.0 in /superset-frontend (#38143)
     add 5bee32ea93d chore(deps): bump aquasecurity/trivy-action from 0.34.0 to 0.34.1 (#38138)
     add 6424194c874 chore(deps): bump underscore from 1.13.7 to 1.13.8 in /superset-frontend (#38142)
     add 159fb5d6f4a chore(deps-dev): bump ajv from 6.12.6 to 6.14.0 in /superset-frontend/cypress-base (#38131)
     add a87a006aaeb ci: declare explicit permissions in maintenance workflows (#38159)
     add 672a3805876 chore(frontend): enable additional oxlint rules for better code hygiene (#38145)
     add 3f64ad3da5e fix(i18n): wrap untranslated frontend strings and add i18n lint rule (#37776)
     add 2a3567d2f11 fix(mcp): Remove unsupported thumbnail/preview URLs and internal fields from MCP schemas (#38109)
     add cbb80f04627 refactor(extensions): simplify registerEditorProvider API (#38127)
     add 6f3a200c190 chore(deps-dev): bump @types/lodash from 4.17.23 to 4.17.24 in /superset-websocket (#38179)
     add 131a97b6579 fix(handlebars): add missing currencyformatter.js dependency (#38173)
     add 50cc1b93d22 fix(security): fix Guest Token API 422 error by disabling JWT sub claim verification (#38177)
     add 6e94a6c21af fix(mcp): fix dashboard chart placement with proper COLUMN layout and tab support (#37970)
     add 40f609fdce2 fix(extensions): enforce correct naming conventions (#38167)
     add 228b5984096 feat: Labels for encrypted fields (#38075)
     add c4eb7de6de8 fix(excel): remove unwanted index column from Excel exports (#38176)
     add e06427d1efe feat(embedded): add feature flag to disable logout button in embedded contexts (#37537)
     add 8f070169a59 perf(datasource): add pagination to datasource editor tables to prevent browser freeze (#37555)
     add 8a74424545a fix(types): add explicit types for extendedDayjs plugin methods (#37923)
     add 615f13419cb fix(jest): ignore storybook-static and package __mocks__ directories (#37946)
     add 8eb30468884 fix(docs): guard window reference in logging.ts for SSR compatibility (#38201)
     add b8459c15b86 chore(deps-dev): bump @typescript-eslint/parser from 8.56.0 to 8.56.1 in /docs (#38211)
     add f60432e34cf fix: Allow non-owners to fave/unfave charts (#38095)
     add fca8a495611 feat: auto refresh dashboard (#37459)
     add 974bee14c3e fix(extensions): make LOCAL_EXTENSIONS loading resilient to individual failures (#38217)
     add 7b04d251d60 fix(build): restore automatic .d.ts generation in dev mode (#38202)
     add 35c135852e8 feat(extensions): add mandatory publisher field to extension metadata (#38200)
     add 0d66accc377 chore(build): prevent opening Dependabot PRs for `@rjsf/*` deps due to React 18 constraint (#37976)
     add 97b8585fe5d chore(deps-dev): bump typescript-eslint from 8.56.0 to 8.56.1 in /docs (#38209)
     add aa475734ef9 chore(deps-dev): bump eslint from 9.39.2 to 10.0.2 in /superset-websocket (#38204)
     add e4a7cd30c34 fix(GAQ): don't use async queries when cache timeout is -1 (#38089)
     add 76a2559b2b8 fix(ci): revert "chore(deps): bump JustinBeckwith/linkinator-action from 2.3 to 2.4" (#38164)
     add 4809903bb80 chore(deps): bump markdown-to-jsx from 9.7.4 to 9.7.6 in /superset-frontend (#38225)
     add 9e4a88dfa2b chore(deps): bump antd from 6.3.0 to 6.3.1 in /docs (#38221)
     add 01c1b2eb8f0 chore(deps-dev): bump @types/lodash from 4.17.23 to 4.17.24 in /superset-frontend (#38224)
     add 5eb35a47957 fix(reports): validate database field on PUT report schedule (#38084)
     add 1cd35bb1029 feat(mcp): dynamic feature availability via menus and feature flags (#37964)
     add 30849079318 feat(mcp): support unsaved state in Explore and Dashboard tools (#37183)
     add a1312a86e88 fix(mcp): normalize column names to fix time series filter prompt issue (#37187)
     add b543358d2f5 chore(deps-dev): bump @swc/core from 1.15.11 to 1.15.13 in /superset-frontend (#38237)
     add 1b605c4ddad chore(deps): bump fs-extra from 11.3.2 to 11.3.3 in /superset-frontend (#38234)
     add 79b2647481b chore(deps): bump @swc/core from 1.15.11 to 1.15.13 in /docs (#38207)
     add 37a46370181 chore(deps-dev): bump typescript-eslint from 8.56.0 to 8.56.1 in /superset-websocket (#38203)
     add 438a9274206 chore(deps-dev): bump oxlint from 1.49.0 to 1.50.0 in /superset-frontend (#38240)
     add c54b21ef988 fix(mcp): add eager loading to get_info tools to prevent N+1 query timeouts (#38129)
     add cc1128a404a feat(mcp): add response size guard to prevent oversized responses (#37200)
     add eef4d95c229 fix(mcp): add dataset validation for chart tools (#37185)
     add abf0b7cf4b8 fix(mcp): use broad Exception in outermost tool-level handlers (#38254)
     add 26053a8b5d3 fix(alert-modal): show the add filter button on firefox (#38093)
     add 2b6c745444b fix(ci): use OIDC auth token for successful Codecov upload (#38218)
     add ae99b194225 feat(mcp): add detailed JWT error messages and default auth factory fallback (#37972)
     add 2ecfb3406c3 fix(dataset-modal): show warning toast when dropping items outside folders (#38257)
     add 7f72c747f5b fix(dataset-modal): prevent shift-select from selecting search-hidden items (#38255)
     add dce0e5f4e62 chore(deps): bump mapbox-gl from 3.18.1 to 3.19.0 in /superset-frontend (#38264)
     add dcbe77818a0 chore(deps-dev): bump @types/node from 25.3.0 to 25.3.1 in /superset-frontend (#38263)
     add e42202e5ede chore(deps-dev): bump @types/node from 25.2.3 to 25.3.1 in /superset-websocket (#38260)
     add 0e7a9febdf1 chore(deps): bump minimatch from 3.1.2 to 3.1.3 in /superset-frontend/cypress-base (#38228)
     add 8c58b998b17 chore(deps): pin currencyformatter.js to v1 in /superset-frontend (#38242)
     add 660357c76b0 feat: Persist default folders location when repositioned in folders editor (#38105)
     add ca48663c593 chore(deps): bump dawidd6/action-download-artifact from 15 to 16 (#38261)
     add f5d489da29c fix(actionlog): restore full name display in Action Logs user column (#37985)
     add c1c012fb529 fix(chart): make chart error banners non-dismissible (#38014)
     add 5a134170a03 fix(chart): prevent x-axis date labels from disappearing when rotated (#37755)
     add bbafae5f62b fix(save-chart): fix info icon alignment in save chart modal (#37708)
     add 8a053bbe07e fix(dataset-modal): fix drag overlay shift caused by modal transform containing block (#38274)
     add 6589ee48f96 docs: bifurcate documentation into user and admin sections (#38196)
     add bb6ee9e7229 fix(clickhouse): remove _mutate_label workaround and bump clickhouse-connect to >=0.13.0 (#38280)
     add 7f061a3764a fix(bigquery): pass dialect instead of engine to select_star in get_extra_table_metadata (#38281)
     add 0827ec38110 fix(dataset-modal): include nested folders when dragging all their children (#38275)
     add 11dfda11d31 fix(folders): expand collapsed folders on Select All and add selection counter (#38270)
     add 7743183401b fix(bugs): fixing bugs for world map chart (#38030)
     add 761cee2d85b fix(componentParent): Newly created tabs don't show up in Scoping tab (#37807)
     add e5cbc98482e fix(ag-grid): render boolean columns as checkboxes instead of blank cells (#38279)
     add 5e890a8cf76 fix(folders): remove stale column/metric refs from folders on delete (#38302)
     add 63f1d9eb98e feat(folders-editor): drag entire folder block as single unit (#38122)
     add a410b76f99d docs: add Apache Superset CVEs for February 2026 release (#38278)
     add 15d7538435c fix(sqllab): pass queryLimit on data preview queries and fix Decimal TypeError in results handler (#37614)
     add 287a94f46c8 chore(deps): bump react-syntax-highlighter from 16.1.0 to 16.1.1 in /superset-frontend (#38296)
     add b1b10ec329f chore(deps): bump @swc/core from 1.15.13 to 1.15.17 in /docs (#38292)
     add 848cce7b2eb chore(deps): bump actions/upload-artifact from 6 to 7 (#38290)
     add 1f41777800f chore(deps): bump actions/download-artifact from 7 to 8 (#38289)
     add a162b02123f chore(deps-dev): bump @types/node from 25.3.1 to 25.3.2 in /superset-websocket (#38288)
     add a849802a2b1 chore(deps): bump minimatch in /superset-websocket (#38282)
     add 3794591d28e chore(deps): bump caniuse-lite from 1.0.30001770 to 1.0.30001774 in /docs (#38180)
     add 6fe69fc81cd chore: Support specifying app_root via superset_config.py (#38284)
     add d0391720133 chore(deps-dev): bump webpack from 5.105.2 to 5.105.3 in /docs (#38271)
     add 7f280f5de90 fix(Dataset Folders): improve search-collapse (#38188)
     add 1d141b2948e fix: Warning toasts when user drops folder item outside of dnd context (#38304)
     add 0d9db04df05 chore(deps-dev): bump @swc/core from 1.15.13 to 1.15.17 in /superset-frontend (#38295)
     add d31a2f96c99 chore(deps-dev): bump webpack from 5.105.2 to 5.105.3 in /superset-frontend (#38294)
     add ac2914486fe fix(Select): select all buttons to inherit font (#38313)
     add 985c3d12a17 fix(screenshots): downgrade screenshot timeout logs from ERROR to WARNING (#38130)
     add e80311a7950 chore(deps-dev): bump @swc/core from 1.15.17 to 1.15.18 in /superset-frontend (#38335)
     add ec33d6a4214 chore(deps-dev): bump @types/node from 25.3.1 to 25.3.3 in /superset-frontend (#38331)
     add b57c864e98e chore(deps): bump react-syntax-highlighter from 16.1.0 to 16.1.1 in /superset-frontend (#38330)
     add 1025e3729b8 chore(deps-dev): bump globals from 17.3.0 to 17.4.0 in /docs (#38325)
     add 00c62cf8203 chore(deps-dev): bump yeoman-test from 11.2.0 to 11.3.1 in /superset-frontend (#38326)
     add d738431e73e chore(deps): bump swagger-ui-react from 5.31.2 to 5.32.0 in /docs (#38324)
     add 23200e8ce97 chore(deps): bump caniuse-lite from 1.0.30001774 to 1.0.30001775 in /docs (#38322)
     add adc5a2cbdb6 chore(deps-dev): bump globals from 17.3.0 to 17.4.0 in /superset-websocket (#38321)
     add 00a14877059 chore(deps): bump hot-shots from 14.0.0 to 14.1.1 in /superset-websocket (#38320)
     add 01d5245cd2d fix: silence deprecation warnings causing noisy production logs (#38128)
     add a74d32ab44f feat(extensions): code-first frontend contributions (#38346)
     add 3e10ab7dd00 refactor(Filter components): migrate from react-dnd to dnd-kit (#37445)
     add fc5fda3d1a6 fix(db-modal): update doc refs for DB connection modal (#38091)
     add 6e84d297076 fix(build): disable `moby` in dev container based on Debian 13 Trixie distro for usability (#37227)
     add 0681df3d029 feat(theme): enable generalized ECharts theme overrides for array properties (#37965)
     add 1bd054684ed chore(lint): remove unused ESLint plugins after migrating rules to Oxlint (#38110)
     add f2f55591ecc chore: remove redundant service-worker.js placeholder (#38348)
     add 016417f7939 fix(explore): prevent TypeError when chart dimension returns empty string (#38276)
     add c35bf344a96 chore(extensions): clean up backend entrypoints and file globs (#38360)
     add 2ab9d37a001 fix(templates): restore css_bundle calls in spa.html for production builds (#38350)
     add fa346099523 feat: Support OAuth2 single-use refresh tokens (#38364)
     add 1136e86cf70 chore(deps): bump ioredis from 5.9.3 to 5.10.0 in /superset-websocket (#38318)
     add f10cb14d92b chore(deps-dev): bump @types/node from 25.3.2 to 25.3.3 in /superset-websocket (#38319)
     add 983b633972f feat(bar-chart): add option to color bars by primary axis when no dimensions are set  (#37531)
     add ef4b1d674be feat(docs): add filterable UI Components table and improve build performance (#38253)
     add 7815afb24d2 fix(charts): improve minor gridline visibility in dark themes (#38371)
     add 51ac758b801 fix(tags): expire tag relationship after deleting all tagged objects (#38163)
     add 80a29cd6fed chore(deps-dev): bump terser-webpack-plugin from 5.3.16 to 5.3.17 in /superset-frontend (#38386)
     add 35d0aad854a feat(explore): Add Echarts option editor (#37868)
     add 69732d9dca6 fix(superset-ui-core): achieve 100% coverage for npm run core:cover (#38397)
     add 832fee3ff8c refactor(mcp): move superset_core MCP module from mcp to api/mcp (#38394)
     add 19f949276ce refactor(config): SIGNAL_CACHE_CONFIG → DISTRIBUTED_COORDINATION_CONFIG (#38395)
     add aff6e260891 build(deps): replace monolithic `googleapis` with lightweight `@googleapis/sheet` sub-package (#38124)
     add 3d5694ee0f1 chore: regular `npm audit fix` (#38248)
     add 3b656f9cc2f fix(dashboard): restore filterState prop for cross-filter functionality (#38349)
     add c25adbc3953 test(DashboardList): migrate Cypress E2E tests to RTL (#38368)
     add e2ebc135e4a test(playwright): add dashboard list E2E tests (#38377)
     add 27d54f84213 fix(build/backend): migrate to deps-free `pygeohash` with pre-built wheels at runtime (#37524)
     add 796c206ee7b fix(charts): apply resample before rolling window in post-processing pipeline (#37987)
     add 63e7ee70bff fix(echarts): adaptive formatting labels (#38017)
     add 8c9efe5659f feat: support for import/export masked_encrypted_extra (backend) (#38077)
     add dc995328a86 chore(deps): bump cryptography from 44.0.3 to 46.0.5 (#37912)
     add 8f28a8734a1 chore(deps): bump flask from 2.3.3 to 3.1.3 (#38168)
     add 1bfd41df0ca chore(deps): bump aquasecurity/trivy-action from 0.34.1 to 0.34.2 (#38352)
     add 88241d3e710 chore(deps-dev): bump oxlint from 1.50.0 to 1.51.0 in /superset-frontend (#38353)
     add a79dcbbb66d chore(deps): update d3-cloud requirement from ^1.2.8 to ^1.2.9 in /superset-frontend/plugins/plugin-chart-word-cloud (#38381)
     add 939e4194c61 fix(alerts): fix error toast when editing report with saved tab selection (#38198)
     add 0d5827ac428 chore(extensions): unified contribution api and automatic prefixing (#38412)
     add 5a2a72cf31a chore(deps): bump svgo from 3.3.2 to 3.3.3 in /docs (#38422)
     add fdf19db5e6a chore(deps): bump svgo from 3.3.2 to 3.3.3 in /superset-frontend (#38421)
     add 4dfb0e66cb6 chore(deps-dev): bump webpack from 5.105.3 to 5.105.4 in /superset-frontend (#38385)
     add 880cab58c33 fix(bug): Error when adding a filter using custom sql (#38246)
     add 20cc3345d89 chore(playwright): Using warning for timeouts (#38441)
     add a2c23a2a58f chore(deps-dev): bump css-minimizer-webpack-plugin from 7.0.4 to 8.0.0 in /superset-frontend (#38434)
     add f6f734f0d16 chore(deps): bump google-auth-library from 10.5.0 to 10.6.1 in /superset-frontend (#38436)
     add a513406239f feat!: upgrade project's Node version to v22 (#37223)
     add f0416eff78e fix(dashboard): fix multiple drag-and-drop and edit mode issues (#37891)
     add 0dbd4c5b909 docs(mcp): add MCP server deployment and authentication guide (#38415)
     add 5f0efd2be9d test: fix CI OOM crashes in DatasourceControl test and flaky FileHandleer test (#38430)
     add 357e35dc628 refactor(core): reorganize superset-core packages into feature-based structure (#38448)
     add 6c359733e1d fix(frontend): preserve absolute and protocol-relative URLs in ensureAppRoot (#38316)
     add 884db9347da feat(docs): Adding VTG GmbH in INTHEWILD.yaml  (#38359)
     add 664c465d805 fix(test): use correct @apache-superset/core/theme import in Menu test (#38457)
     add 17df85b5edb fix(roles): convert permissions/groups dropdowns to AsyncSelect with server-side search (#38387)
     add 0d5ade6dd31 fix(ColorPicker): restore alpha input visibility hidden by geostyler CSS (#38169)
     add 7d2efd8c1ae fix(mcp): suppress third-party deprecation warnings from client responses (#38401)
     add 3609cd9544d feat(mcp): add compile check to validate chart queries before returning (#38408)
     add 84a53eab31c feat(mcp): add pie, pivot table, and mixed timeseries chart creation support (#38375)
     add db7665c0bc4 feat(mcp): add user roles to MCP response and permission-aware instructions (#38367)
     add 5c4bf0f6ea6 fix(deps): bump Python dependencies to fix 7 security vulnerabilities (#38447)
     add 296bd7e56b5 docs(extensions): fix extension developer documentation and CLI scaffolding (#38472)
     add 03ad1789f02 feat(alerts/reports): external URL warning (#35021)
     add 5fb9e17721d refactor(extensions): align editors API naming with commands/views, add description to all contribution types (#38475)
     add a6c0d6321f6 chore(extensions): simplify backend package structure by removing superset_extensions namespace (#38476)
     add 3cb00bf116d feat(database): add Google Cloud Datastore db engine spec (#37677)
     add 60577bcd979 chore(deps-dev): bump webpack from 5.105.3 to 5.105.4 in /docs (#38380)
     add d9a91f99dbb feat: support for import/export masked_encrypted_extra (frontend) (#38078)
     add 9983e255f82 fix(charts): revert: improve negative stacked bar label positioning and accessibility (#37405) (#38484)
     add c7a1f57487c fix(sqla): parenthesize extras where/having clauses in query generation (#38183)
     add 577654cd02e fix(heatmap): correct tooltip display to show axis values instead of indices (#38487)
     add e70c7944b75 fix(tests): achieve 100% TypeScript coverage for core packages (#38518)
     add 62cebc8a0e6 fix(dashboard): prevent Apply button from disabling when required filters are auto-applied (#38479)
     add dca41f9a7b8 fix(theme): prevent background color flash on page load (#38399)
     add bf55f1e4388 chore(extensions): bump superset-core and superset-extensions-cli to 0.1.0rc1 (#38516)
     add bc99b710bda fix(dashboard): ensure clear all respects required filter validation (#37681)
     add 9017b9a74f2 chore: enable allow_update_branch in .asf.yaml (#38530)
     add 61fbfda501e feat(security): add granular export controls (Phase 1) (#38361)
     add 8e3e57c1c82 fix(docs): swizzle MethodEndpoint to fix SSG crash on all API pages (#38533)
     add 4cd3ce164de fix(mcp): make fastmcp truly optional during Superset startup (#38534)
     add 6ef4794778b fix(mcp): resolve chatbot tool call flakiness with URL and instruction fixes (#38532)
     add a17f38a4e23 fix(embedded): add CurrentUserRestApi read permission to Public role defaults (#38474)
     add 06fd0658ae7 chore(deps-dev): bump prettier-plugin-packagejson from 3.0.0 to 3.0.2 in /superset-frontend (#38508)
     add 6c1df93215f chore(deps): bump aquasecurity/trivy-action from 0.34.2 to 0.35.0 (#38502)
     add 9ecca47e693 feat(ci): only run precommit on changed files (#38155)
     add 26c07b1ffb8 chore(deps-dev): bump eslint-plugin-react-you-might-not-need-an-effect from 0.9.1 to 0.9.2 in /superset-frontend (#38509)
     add afa51125de4 chore(deps): bump the storybook group in /docs with 11 updates (#38501)
     add 06d6b513cde chore(deps-dev): bump jest from 30.2.0 to 30.3.0 in /superset-frontend (#38549)
     add 6d1d5d64d11 chore(deps): bump antd from 6.3.1 to 6.3.2 in /docs (#38547)
     add 5f20d2e15ac chore(deps): bump react-syntax-highlighter from 16.1.0 to 16.1.1 in /superset-frontend (#38548)
     add 0533ca9941e feat(mcp): register GlobalErrorHandlerMiddleware and LoggingMiddleware (#38523)
     add 2a876e8b868 fix(mcp): add missing command.validate() to MCP chart data tools (#38521)
     add 5fa70bdbd82 fix(mcp): add guardrails to prevent LLM artifact generation (#38391)
     add 6342c4f338a feat(mcp): add horizontal bar chart orientation support to generate_chart (#38390)
     add 5c2cbb58bc9 fix(mcp): add missing __init__.py for chart, dashboard, dataset packages (#38400)
     add cc8ad23d6f9 chore(deps): bump react-diff-viewer-continued from 3.4.0 to 4.2.0 in /superset-frontend (#38552)
     add 13fe88000a9 chore(deps-dev): bump lightningcss from 1.31.1 to 1.32.0 in /superset-frontend (#38511)
     add 0cfd760a365 fix(mcp): improve default chart names with descriptive format (#38406)
     add bde48e563ef fix: SQL Lab tab content padding (#38561)
     add 31754a39c93 fix(i18n): correct variable name for translated SQL Lab query message (#38494)
     add 6d7cfac8b2d fix(mcp): wrap LoggingMiddleware.on_message event_logger in try/except (#38560)
     add eb77452857d feat(mcp): auto-generate dashboard title from chart names when omitted (#38410)
     add 3bb9704cd51 fix(mcp): honor target_tab parameter when adding charts to tabbed dashboards (#38409)
     add fe7f220c210 fix(charts): set reasonable default y-axis title margin to prevent label overlap (#38389)
     add 9215eb5e45c fix(ag-grid): persist AG Grid column filters in explore permalinks (#38393)
     add 9b8106b3820 chore(deps-dev): bump mini-css-extract-plugin from 2.10.0 to 2.10.1 in /superset-frontend (#38573)
     add 59129419425 chore(deps-dev): bump @typescript-eslint/parser from 8.56.1 to 8.57.0 in /superset-websocket (#38570)
     add d42e9c4d1b7 chore(deps): bump acorn from 8.9.0 to 8.16.0 in /superset-frontend (#38466)
     add 3056c415075 chore(deps): bump caniuse-lite from 1.0.30001775 to 1.0.30001777 in /docs (#38463)
     add d752be5f74a chore(deps): bump dompurify from 3.3.1 to 3.3.2 in /superset-frontend (#38455)
     add ffe60bd9602 chore(deps-dev): bump oxlint from 1.51.0 to 1.53.0 in /superset-frontend (#38571)
     add 27197faba97 fix(matrixify): Matrixify to not override slice id (#38515)
     add a9def2fc152 fix: support nested function calls in cache_key_wrapper (#38569)
     add 09e9c6a522e fix(embedded): prevent double RLS application in virtual datasets (#37395)
     add 7943af359c2 feat(mcp): implement RBAC permission checking for MCP tools (#38407)
     add 65e21cf13c4 docs: move MCP deployment guide to admin docs, add user-facing AI guide (#38585)
     add 7f476a79b3e fix: add embedded box sizing rule for layout (#38351)
     add 95f61bd223e fix: add parent_slice_id for multilayer charts to embed (#38243)
     add d4f1f8db001 fix(mcp): extract role names as strings in UserInfo serialization (#38612)
     add 4a9db243a17 chore(deps): bump caniuse-lite from 1.0.30001777 to 1.0.30001778 in /docs (#38593)
     add 83955e87acc refactor(mcp): use serialize_user_object in get_instance_info (#38613)
     add 0b8df8d3f2f build(deps): update `geostyler-*` deps to latest major versions (#38151)
     add fc156d0014b fix(mcp): replace uuid with url and changed_on_humanized in default list columns (#38566)
     add 56d6bb19136 feat(auth): add SAML login support to frontend (#38606)
     add d91b96814e0 fix(mcp): Improve validation errors and field aliases to reduce failed LLM tool calls (#38625)
     add 9516d1a306d fix(explore/dashboard): fix CSV/Excel downloads for legacy chart types (#38513)
     add 32a64d02c74 fix(deckgl): polygon chart not rendering when boundary column contains nested geometry JSON (#38595)
     add af5e05db2e4 fix(mcp): Support form_data_key without chart identifier for unsaved charts (#38628)
     add f458e2d484f feat(mcp): add extra_form_data param to get_chart_data for dashboard filters (#38531)
     add d5cf77cd60b fix(mcp): fix crashes in list tools, dataset info, chart preview, and add owner/favorite filters (#38277)
     add f5383263bc7 fix(extensions): fix gitignore template and bump version (#38614)
     add 18673369076 fix(editor): implement missing methods, fix cursor position clearing (#38603)
     add f6106cd26f1 fix(timeshiftcolor): Time shift color to match the original color (#38473)
     add ca2d26a1e2f fix(ag-grid-table): fix AND filter conditions not applied (#38369)
     add ba7271b4d89 fix(world-map): add fallback fill color when colorFn returns null (#38602)
     add ba7d7dcec0d chore(deps): bump react-syntax-highlighter from 16.1.0 to 16.1.1 in /superset-frontend (#38619)
     add 242636b36b1 chore(deps): bump baseline-browser-mapping from 2.10.0 to 2.10.7 in /docs (#38622)
     add f4a57a13bc9 chore(deps): bump dompurify from 3.3.2 to 3.3.3 in /superset-frontend (#38592)
     add b6c3b3ef46d fix(mcp): return all statement results for multi-statement SQL queries (#38388)
     add 97a66f7a647 feat(mcp): add BM25 tool search transform to reduce initial context size (#38562)
     add e8061a9c2b4 style(metadata-bar): use bold font weight for metadata bar     title       (#38608)
     add 6e7d6a85b45 fix(ag-grid-table): fix failing buildQuery test expectation (#38636)
     add ed622e254a4 feat(matrixify): Revamp control panel (#38519)
     add 48220fb33f8 feat(mcp): add save_sql_query tool for SQL Lab saved queries (#38414)
     add 68e38c88936 chore(deps): bump undici from 7.22.0 to 7.24.1 in /superset-frontend (#38642)
     add 176bf00c169 chore(deps-dev): bump baseline-browser-mapping from 2.10.0 to 2.10.7 + sync lockfile + run `npm audit fix` in /superset-frontend (#38621)
     add 39cd1cdd436 chore(deps): bump dawidd6/action-download-artifact from 16 to 17 (#38620)
     add cc066b35761 fix(docs): use absolute API doc links in developer docs (#38649)
     add afe093f1ca5 fix(FilterBar): reduce padded space between filter header and first filter (#38646)
     add dcb414aa064 feat(extensions): add update command to extensions cli (#38651)
     add aa5adb0fce1 fix(embedded): default to light theme instead of system preference (#38644)
     add 7909095ff34 feat(native-filters): add configurable LIKE/ILIKE operators to Select filter (#38470)
     add 96705c156a9 fix(map-box): make opacity, lon, lat, and zoom controls functional (#38374)
     add ca403dc45d0 fix(ci): allow docs testing to run despite absence of db diagnostics data (#38655)
     add 1c8224f4c63 feat(mcp): Add tool annotations for MCP directory compliance (#38641)
     add a854fa60a2e feat: apply RLS conservatively (#38683)
     add c980f39aabe chore(deps): bump caniuse-lite from 1.0.30001778 to 1.0.30001780 in /docs (#38688)
     add 461037f645d chore(deps-dev): bump typescript-eslint from 8.56.1 to 8.57.1 in /docs (#38684)
     add 5865176f363 fix(dashboard): overload issue in dashboard export to excel (#29418)
     add 6f301707f9f fix: Simplify extension folder name (#38690)
     add 05b9970aa66 fix(map-box): prevent clusters from being smaller than individual points (#38458)
     add 91986fff023 fix(tests): restore 100% TypeScript coverage for core packages (#38682)
     add 834d2abe707 chore(deps): bump antd from 6.3.2 to 6.3.3 in /docs (#38686)
     add e02ca8871dd fix(mcp): expose individual tool parameters when MCP_PARSE_REQUEST_ENABLED=False (#38714)
     add a314e5b35ef fix: Row limit support for chart mcp tools (#38717)
     add fd1c423826d fix(chart): prevent chart list from failing when a datasource lacks explore_url (#38721)
     add 3edf75123a9 chore(deps): bump swagger-ui-react from 5.32.0 to 5.32.1 in /docs (#38708)
     add 03de7e1ec62 fix(dashboard): use inline theme data to prevent 403 for non-admin users (#38384)
     add 972e15e6011 fix(sql): remove WHERE 1 = 1 when temporal filter has "No filter" selected (#38704)
     add 14b1b456e16 fix: Add aliases and groupby list to chart schemas (#38740)
     add 5457c2da676 chore(deps): bump dawidd6/action-download-artifact from 17 to 19 (#38735)
     add d6bfc98a616 feat(ci): use zstd for faster saving and loading `superset-node-ci` image (#38645)
     add 211f29b7234 fix(mcp): Chart schema followups - DRY extraction, template fix, alias and test gaps (#38746)
     add 01aa4d32816 chore(deps): bump match-sorter from 6.3.4 to 8.2.0 in /superset-frontend (#36470)
     add 6465450b64a fix(firebolt): Firebolt SQL entered with EXCLUDE is rewritten to EXCEPT (#38742)
     add d4646d43a76 docs(security): update vulnerability reporting policy and admin trust boundary (#38653)
     add 65f13f773e5 fix(theme): ensure colorLink follows colorPrimary when not explicitly set (#38517)
     add ee233d16d69 fix(dashboard): correct tab underline width for newly added dashboard tabs. (#38524)
     add b754f2d1733 fix(theme): persist local theme id so "Local" tag remains after navigation (#38527)
     add 6b9dd23e3a5 fix(timeseries-table): enable proper column sorting in timeseries-table chart (#38579)
     add 82a74c88aa3 fix(button): Theming configurations for button elements is not consistent (#38604)
     add cbb2b2f3c25 feat(themes): add JSON formatting to theme modal editor (#38739)
     add c2a21915ff3 fix(mcp): fix dashboard slug null and execute_sql encoding error (#38710)
     add 5e5c05362c2 fix(mcp): use correct permission class for save_sql_query tool (#38764)
     add e088979fbed fix(reports): validate nativeFilters on report create/update and deactivate on dashboard filter deletion (#38715)
     add 97ea479cdcd chore(deps-dev): bump flatted from 3.3.1 to 3.4.2 in /superset-websocket (#38752)
     add ea1c6ee30f3 chore(deps): bump geostyler-openlayers-parser from 5.4.0 to 5.4.1 in /superset-frontend (#38755)
     add 1af5da6aad3 chore(deps): bump baseline-browser-mapping from 2.10.7 to 2.10.9 in /docs (#38756)
     add 1d72480c178 fix(mcp): fix detached Slice instance error in chart/dashboard serialization (#38767)
     add 28d67d59cd7 chore(deps-dev): bump flatted from 3.2.2 to 3.4.2 in /superset-frontend/cypress-base (#38761)
     add 0d5721910e8 fix(mcp): normalize call_tool proxy arguments to prevent encoding TypeError (#38775)
     add 44c2c765ae5 fix(mcp): convert adhoc filters to QueryObject format before query compilation (#38774)
     add 32eb8c82636 chore(deps): bump flatted from 3.3.3 to 3.4.2 in /docs (#38772)
     add f5d7ce0f861 chore(deps-dev): bump flatted from 3.4.1 to 3.4.2 in /superset-frontend (#38771)
     add 7004369c68a fix(sec): remove compromised Trivy actions (#38780)
     add 83823911b55 feat(sec): harden GHA ref by using its SHA ID to prevent accidental usage of compromised actions (#38782)
     add e05fdd8acda chore(deps): bump mapbox-gl from 3.19.0 to 3.20.0 in /superset-frontend (#38670)
     add c1c296233f3 chore(deps-dev): bump terser-webpack-plugin from 5.3.17 to 5.4.0 in /superset-frontend (#38669)
     add 2a6b0215f04 chore(deps): bump simple-zstd from 1.4.2 to 2.1.0 in /superset-frontend (#38662)
     add 361afff798c chore(deps-dev): bump copy-webpack-plugin from 13.0.1 to 14.0.0 in /superset-frontend (#38504)
     add 02ffb52f4a2 fix(table): improve conditional formatting text contrast (#38705)
     add cc34d19d24d fix(DropdownContainer): add fresh to avoid stale data (#38702)
     add 618113079ff chore(deps): bump anthropics/claude-code-action from 0.0.63 to 1.0.76 (#38797)
     add c9ebb13fa15 chore(deps-dev): bump @babel/runtime-corejs3 from 7.29.0 to 7.29.2 in /superset-frontend (#38800)
     add 601fb45142d chore(deps-dev): bump oxlint from 1.53.0 to 1.56.0 in /superset-frontend (#38802)
     add 0f4aa1ceea6 chore(deps): bump nanoid from 5.1.6 to 5.1.7 in /superset-frontend (#38803)
     add 1987e816a5d chore(deps-dev): bump baseline-browser-mapping from 2.10.7 to 2.10.10 in /superset-frontend (#38805)
     add 24be9cd515e chore(deps): bump caniuse-lite from 1.0.30001780 to 1.0.30001781 in /docs (#38801)
     add 519a64da827 chore(deps): bump @swc/core from 1.15.18 to 1.15.21 in /docs (#38798)
     add c96c817ef57 chore(deps-dev): bump eslint-plugin-testing-library from 7.16.0 to 7.16.1 in /superset-frontend (#38795)
     add 100ad7d9eec fix(AlertsReports): validate anchor_list is a list (#38723)
     add 44179199ba5 chore(Reports): remove unused and incorrect field (#38724)
     add 6d93eeb5334 chore(deps): bump baseline-browser-mapping from 2.10.9 to 2.10.10 in /docs (#38799)
     add 7a5c07b99c9 chore(deps): bump @babel/runtime from 7.28.6 to 7.29.2 in /superset-frontend (#38804)
     add fdcb942f3c7 fix(MainNav): display all menu items on smaller screens (#38732)
     add 86a260e39b6 feat(theming): Custom label tokens (#38679)
     add e67bc5bee59 fix(explore): display actual data type instead of "column" in column tooltip (#38554)
     add e0b524fff26 chore: docs on Redshift auth with access key (#38810)
     add 72223279929 fix(Matrixify): readd matrixify_enable guard missing (#38759)
     add ed3c5280a93 fix(mcp): prevent encoding errors and fix tool bugs on MCP client transports (#38786)
     add 962abf69047 fix(sqllab): add authorization check to query cost estimation (#38648)
     add 89d1b80ce7d fix(keys): Unsafe dict access in get_native_filters_params() crashes execution (#38272)
     add 5d9f53ff0cb feat: prevent Postgres connection to Redshift (#38693)
     add 56ebfb78481 feat(i18n): update Italian messages.po (#38821)
     add e2bb20121e4 chore(deps-dev): bump typescript-eslint from 8.57.1 to 8.57.2 in /docs (#38818)
     add 09594b32f91 fix(mcp): fix generate_dashboard cross-session SQLAlchemy error (#38827)
     add 42201a98a17 chore(deps): bump pug from 3.0.3 to 3.0.4 in /superset-websocket/utils/client-ws-app (#38664)
     add 7c9d75b69e7 fix(sqllab): FilterText does not apply accordingly (#38813)
     add 6852349d24f fix(extensions-cli): remove publisher prefix from bundle filename (#38823)
     add c596df92943 feat(mcp): add Handlebars chart type support to MCP service (#38402)
     add ccaac306e5b test(sqllab): add extension slot contract tests for all 7 host components (#38776)
     add 811dcb37154 feat(api-keys): add API key authentication via FAB SecurityManager (#37973)
     add 37c4a36fdb0 fix(report): raise warning when filter type not recognized (#38676)
     add 4b26f8c712b fix(models): correct TabState.latest_query_id column type to match FK target (#38837)
     add 3fb903fdc6e fix(embedded-sdk): wire `hideTab` to actually hide the dashboard tab (#38846)
     add 12aca720746 fix(echarts): prevent plain legend clipping in dashboards (#38675)
     add a93e3197161 fix(datasource): align access validation in legacy views (#38647)
     add ba5820b088c chore(deps): bump antd from 6.3.3 to 6.3.4 in /docs (#38843)
     add 403f4ad78c9 fix(dashboard): larger JSON metadata editor for better editing UX (#38728) (#38745)
     add 21fb5a27e9c chore(deps): bump google-auth-library from 10.6.1 to 10.6.2 in /superset-frontend (#38841)
     add d32e975eb9e chore(deps): bump anthropics/claude-code-action from 1.0.76 to 1.0.78 (#38842)
     add 3506773f515 fix(ci): install missing `msgcat` used for Babel translation update (#38830)
     add 04e07acf98d fix(tests): resolve flakey SouthPane extension test caused by nwsapi (#38832)
     add 16f5a2a41a6 fix(mcp): detect unknown chart config fields and suggest correct ones (#38848)
     add 23a5e958844 fix(mcp): add permission checks to generate_dashboard and update_chart tools (#38845)
     add 38d3a39c06a test(sqllab): add SQL Lab SDK API contract tests (#38860)
     add e045f49787c fix(echart): multiple time shift line pattern (#38866)
     add 6dd82afb0b0 chore(deps): bump dayjs from 1.11.19 to 1.11.20 in /superset-frontend (#38840)
     add 43816d75287 chore(deps): bump aws-actions/amazon-ecs-deploy-task-definition from 2.6.0 to 2.6.1 (#38874)
     add cfa1aba1e0b fix(sqllab): inactive leftbar selector on empty state (#38833)
     add 6dc3d7ad9f8 fix(mcp): add try/except around DAO re-fetch to handle session errors in multi-tenant (#38859)
     add 95820fb9e69 docs: improve SQL templating guidance and examples (#38777)
     add 8983edea665 fix: type probing (#38889)
     add 9c288d66b5d fix(dataset): add missing currency_code_column to DatasetPostSchema (#38853)
     add 8cbf5fb8df0 chore(deps-dev): bump lerna from 8.2.4 to 9.0.4 in /superset-frontend (#37914)
     add 8700ec4e6dd fix: pin 2 unpinned action(s),extract 21 unsafe expression(s) to env vars (#38893)
     add 7e69d5d839d chore(deps): bump node-forge from 1.3.2 to 1.4.0 in /docs (#38907)
     add 6229c99050d chore(deps): bump @ant-design/icons from 6.1.0 to 6.1.1 in /docs (#38904)
     add 5ad91fbb092 chore(deps): bump baseline-browser-mapping from 2.10.10 to 2.10.11 in /docs (#38902)
     add 20d0cfd156f chore(deps): bump codecov/codecov-action from 5.5.3 to 6.0.0 (#38903)
     add 50a5bb06713 chore(deps-dev): bump handlebars from 4.7.8 to 4.7.9 in /superset-websocket (#38895)
     add 41473a520e3 chore(deps): bump handlebars from 4.7.8 to 4.7.9 in /superset-frontend (#38894)
     add c2c929bf941 chore(deps-dev): bump speed-measure-webpack-plugin from 1.5.0 to 1.6.0 in /superset-frontend (#38871)
     add 388a1fd0be4 chore(deps-dev): bump picomatch from 2.3.1 to 2.3.2 in /superset-frontend (#38906)
     add d6a6b6db142 chore(deps): bump yaml from 1.10.2 to 1.10.3 in /superset-frontend (#38905)
     add 7f3351011d3 chore(deps): bump anthropics/claude-code-action from 1.0.78 to 1.0.80 (#38901)
     add 40387d5daa6 fix(reports): PUT with empty recipients list does not persist the change (#38711)
     add 5c782397bb5 refactor(passwords): accept passwords via YAML file (#38059)
     add ac96f46c764 fix(dataset): add email field to owners_data for Chart Explore path (#38836)
     add 65eae027fac fix(sqllab): long cell content overflooding (#38855)
     add fc705d94e3f fix(explore): migrate from window.history to React Router history API (#38887)
     add f832f9b0d5e fix(Timeseries): dedup x axis labels (#38733)
     add 6bcc8bf2b25 chore(deps): bump picomatch from 2.3.1 to 2.3.2 in /superset-frontend/cypress-base (#38862)
     add 38e82e40845 chore(deps): bump yaml from 1.10.2 to 1.10.3 in /superset-frontend/cypress-base (#38856)
     add a5d2324e216 fix(sqllab): invalid treeview folder expansion (#38897)
     add dbc25dc5557 fix(ci): resolve failed CodeCov upload for backend tests (#38885)
     add d1903afc694 fix(mcp): remove @parse_request decorator for cleaner tool schemas (#38918)
     add aa1a69555b3 fix(mcp): prevent GRID_ID injection into ROOT_ID on tabbed dashboards (#38890)
     add 89f7e5e7bae fix(mcp): validate dataset exists in generate_explore_link before generating URL (#38951)
     add 41d401a879e fix(select): ensure filter dropdown matches input field width (#38886)
     add d331a043a3a fix(mcp): prevent PendingRollbackError from poisoned sessions after SSL drops (#38934)
     add 15bab227bb0 feat(mcp): support saved metrics from datasets in chart generation (#38955)
     add 38fdfb4ca2e fix(mcp): prevent stale g.user from causing user impersonation across tool calls (#38747)
     add 2c9cf0bd558 fix(mcp): enforce MAX_PAGE_SIZE limit on list tools to prevent oversized responses (#38959)
     add e0a0a225426 fix(charts): add X Axis Number Format control for numeric X-axis columns (#38809)
     add f1cd1ae7100 fix(pivot-table): safely cast numeric strings to numbers for date formatting (#38953)
     add 11f2140c37e fix(AlteredSliceTag): not display undefined filter value for chart change record (#38883)
     add b49e8999748 chore(deps-dev): bump typescript-eslint from 8.57.2 to 8.58.0 in /docs (#38968)
     add b1474aaa60d docs: Fix misleading links in UPDATING.md (#38947)
     add ecbf396d4a0 chore(deps): bump path-to-regexp from 8.2.0 to 8.4.0 in /superset-websocket/utils/client-ws-app (#38935)
     add 944944c49e8 chore(deps): bump antd from 6.3.4 to 6.3.5 in /docs (#38967)
     add e6f1209318b chore(deps): bump aws-actions/amazon-ecr-login from 2.0.2 to 2.1.1 (#38944)
     add f0b20dc4459 fix(echarts): adapt y-axis ticks and padding for compact timeseries charts (#38673)
     add 42457208512 feat(mcp): add Big Number chart type support to MCP service (#38403)
     add c37a3ec292d fix(mcp): add TEMPORAL_RANGE filter for temporal x-axis in generate_chart (#38978)
     add daefedebcda fix(mcp): batch fix for execute_sql crashes, null timestamps, and deck.gl errors (#38977)
     add f6cd8066aba fix(bubble): Fix Bubble chart axis label rotation (#38917)
     add 7d26e33346f chore(deps-dev): bump picomatch from 2.3.1 to 2.3.2 in /superset-websocket (#38861)
     add a741ddc03ce chore(deps-dev): bump picomatch from 2.3.1 to 2.3.2 in /superset-embedded-sdk (#38864)
     add 3abcfb797a9 chore(deps-dev): bump open-cli from 8.0.0 to 9.0.0 in /superset-frontend (#38875)
     add 55aa36fef84 docs(developer): add celery to testing section for alerts&reports (#38888)
     add 53b1d1097cf fix(presto): Fix presto timestamp (#26467)
     add e4021fb6e7b fix(sec): resolve 50+ Dependabot alerts + bump `core-js` (#38939)
     add 08a4ad662aa chore(deps): bump brace-expansion from 1.1.11 to 1.1.13 in /superset-frontend/cypress-base (#38919)
     add 4036b784ed5 chore(deps): bump serialize-javascript and terser-webpack-plugin in /superset-embedded-sdk (#38920)
     add 6ea9f2ade94 chore(mcp): clarify saved metrics vs columns in MCP instructions (#38981)
     add f85efe61397 chore(build): remove eslint-plugin-file-progress usage + correct newlines for `npm run check:custom-rules` (#38938)
     add 4fae5758d5c chore(deps): bump baseline-browser-mapping from 2.10.11 to 2.10.12 in /docs (#38942)
     add d4d22909cb4 fix(dashboard): live CSS preview in PropertiesModal (#38960)
     add 8559786cc29 fix(mixed-timeseries): apply same axis formatting options as timeseries charts (#38979)
     add 1e2d0faa55d fix(dashboard): dashboard filters not inherited in charts in Safari sometimes due to race condition (#38851)
     add 64bd03bd703 chore(deps): bump caniuse-lite from 1.0.30001781 to 1.0.30001782 in /docs (#38941)
     add 872632aca05 chore(deps): bump fs-extra from 11.3.2 to 11.3.4 in /superset-frontend (#38437)
     add 7ce371080cf chore(deps-dev): bump @types/node from 25.3.3 to 25.3.5 in /superset-websocket (#38462)
     add bd982696285 chore(deps): bump hot-shots from 14.1.1 to 14.2.0 in /superset-websocket (#38663)
     add 070be3de8b2 chore(deps-dev): bump webpack-bundle-analyzer from 5.2.0 to 5.3.0 in /superset-frontend (#38940)
     add 424f99efdfa chore(deps): bump anthropics/claude-code-action from 1.0.80 to 1.0.82 (#38946)
     add 51ec61c6758 chore(deps-dev): bump eslint from 10.0.2 to 10.0.3 in /superset-websocket (#38500)
     add 6b6e3803d13 chore(deps-dev): bump @typescript-eslint/eslint-plugin from 8.56.1 to 8.57.0 in /superset-websocket (#38540)
     add a67ca052d6a chore(deps-dev): bump babel-loader from 10.0.0 to 10.1.0 in /superset-frontend (#38505)
     add 4ee391e0d7e docs(db): Update crate.py with new Homepage URL (#39002)
     add 8ed75787cb3 chore(deps-dev): bump jsdom from 28.1.0 to 29.0.1 in /superset-frontend (#38999)
     add d30c5b4eeed chore(deps): bump caniuse-lite from 1.0.30001782 to 1.0.30001784 in /docs (#38998)
     add 64c8d652e1e chore(deps-dev): bump @types/node from 25.3.5 to 25.5.0 in /superset-websocket (#38995)
     add 94d8735d4b2 fix(query): pass datasource table to template processor for schema-aware Jinja rendering (#38984)
     add aa976793276 chore(deps): update @deck.gl/aggregation-layers requirement from ~9.2.5 to ~9.2.9 in /superset-frontend/plugins/legacy-preset-chart-deckgl (#38148)
     add 6adc816805d chore(deps): bump d3-cloud from 1.2.8 to 1.2.9 in /superset-frontend (#38438)
     add 5f99d613a00 chore(deps): bump markdown-to-jsx from 9.7.6 to 9.7.8 in /superset-frontend (#38507)
     add 190f1a59c53 fix(mcp): fix dashboard owners Pydantic crash and preserve chart preview filters (#38987)
     add 4423134739e chore(deps): bump ioredis from 5.10.0 to 5.10.1 in /superset-websocket (#38993)
     add 1bb41a6e609 chore(deps): bump anthropics/claude-code-action from 1.0.82 to 1.0.83 (#39001)
     add 0bae05d4a93 fix(mcp): handle table chart raw mode in query builders and sanitize dashboard titles (#38990)
     add 38f0dc74f7c fix(dataset-editor): improve modal layout and fix Settings tab horizontal scroll (#39009)
     add 022342839aa fix(echarts): fix stacked horizontal bar chart clipping and duplicate x-axis labels (#39012)
     add ff3b8d8398e fix(ace-editor): fix cursor misalignment in markdown editor (#38928)
     add ec6640b1885 chore(deps-dev): update fs-extra requirement from ^11.3.3 to ^11.3.4 in /superset-frontend/packages/generator-superset (#38383)
     add 1d0e836a299 chore(deps): update @deck.gl/extensions requirement from ~9.2.5 to ~9.2.9 in /superset-frontend/plugins/legacy-preset-chart-deckgl (#38149)
     add 00eb86d03fb chore(deps-dev): bump @swc/plugin-emotion from 14.6.0 to 14.7.0 in /superset-frontend (#38333)
     add 7acb0c6d052 chore(deps-dev): bump @types/node from 25.3.3 to 25.3.5 in /superset-frontend (#38510)
     add 1aac6c94741 chore(deps): update @deck.gl/react requirement from ~9.2.5 to ~9.2.9 in /superset-frontend/plugins/legacy-preset-chart-deckgl (#38150)
     add fdd08d3b701 chore(deps): bump ws from 8.19.0 to 8.20.0 in /superset-websocket (#38994)
     add 26f4a5acadb chore(deps): bump azure/setup-helm from 4.3.1 to 5.0.0 (#38815)
     add 5cc286e383e chore(deps-dev): bump @playwright/test from 1.58.2 to 1.59.1 in /superset-frontend (#39057)
     add 59f92f979a5 chore(deps-dev): bump eslint-plugin-testing-library from 7.16.1 to 7.16.2 in /superset-frontend (#39056)
     add 985d7b6a792 chore(deps-dev): bump @types/node from 25.3.5 to 25.5.0 in /superset-frontend (#39055)
     add 87f0540acd7 chore(deps-dev): bump ts-jest from 29.4.6 to 29.4.9 in /superset-frontend (#39049)
     add bdb0030cf87 chore(deps-dev): bump @swc/core from 1.15.18 to 1.15.21 in /superset-frontend (#39045)
     add 3802acb1e03 chore(deps-dev): bump jest-html-reporter from 4.3.0 to 4.4.0 in /superset-frontend (#39053)
     add c372f5980c1 chore(deps): bump lodash from 4.17.23 to 4.18.1 in /superset-frontend (#39043)
     add 25eea295f6c fix(reports): log exception traceback in _get_csv_data (#39069)
     add 135e0f80996 fix(mcp): Created dashboard should be in draft state by default (#39011)
     new ddfcfa18c47 fix(explore): reset table pagination when filtering in View as Table
     new 779e0426dd5 fix: proper TypeScript types in test file
     new 5448f06f761 docs: expand comment explaining key prop trade-off
     new 3ca831bc30d fix(TableView): reset pagination when data reduces below current page
     new 166ec498f33 chore: trigger CI retry

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   (410327b0b5d)
            \
             N -- N -- N   refs/heads/issue31403 (166ec498f33)

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.

The 5 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 .asf.yaml                                          |     4 +-
 .devcontainer/devcontainer.json                    |     2 +-
 .github/SECURITY.md                                |    37 +-
 .github/actions/setup-docker/action.yml            |     6 +-
 .github/dependabot.yml                             |   109 +-
 .github/workflows/bashlib.sh                       |    23 -
 .github/workflows/bump-python-package.yml          |    20 +-
 .github/workflows/cancel_duplicates.yml            |     2 +-
 .github/workflows/check-python-deps.yml            |     2 +-
 .github/workflows/check_db_migration_confict.yml   |     4 +-
 .github/workflows/claude.yml                       |     6 +-
 .github/workflows/codeql-analysis.yml              |     2 +-
 .github/workflows/dependency-review.yml            |    12 +-
 .github/workflows/docker.yml                       |    21 +-
 .github/workflows/embedded-sdk-release.yml         |     8 +-
 .github/workflows/embedded-sdk-test.yml            |     4 +-
 .github/workflows/ephemeral-env-pr-close.yml       |    10 +-
 .github/workflows/ephemeral-env.yml                |    40 +-
 .github/workflows/generate-FOSSA-report.yml        |     8 +-
 .github/workflows/github-action-validator.yml      |     4 +-
 .github/workflows/issue_creation.yml               |     2 +-
 .github/workflows/latest-release-tag.yml           |     2 +-
 .github/workflows/license-check.yml                |     4 +-
 .github/workflows/no-hold-label.yml                |     5 +-
 .github/workflows/pr-lint.yml                      |     2 +-
 .github/workflows/pre-commit.yml                   |    19 +-
 .github/workflows/release.yml                      |    12 +-
 .github/workflows/showtime-trigger.yml             |    18 +-
 .github/workflows/superset-app-cli.yml             |     4 +-
 .github/workflows/superset-applitool-cypress.yml   |    91 -
 .../workflows/superset-applitools-storybook.yml    |    52 -
 .github/workflows/superset-docs-deploy.yml         |    14 +-
 .github/workflows/superset-docs-verify.yml         |    15 +-
 .github/workflows/superset-e2e.yml                 |    24 +-
 .github/workflows/superset-extensions-cli.yml      |     6 +-
 .github/workflows/superset-frontend.yml            |    61 +-
 .github/workflows/superset-helm-lint.yml           |     4 +-
 .github/workflows/superset-helm-release.yml        |     6 +-
 .github/workflows/superset-playwright.yml          |    12 +-
 .../workflows/superset-python-integrationtest.yml  |    31 +-
 .github/workflows/superset-python-presto-hive.yml  |    22 +-
 .github/workflows/superset-python-unittest.yml     |     9 +-
 .github/workflows/superset-translations.yml        |    10 +-
 .github/workflows/superset-websocket.yml           |     2 +-
 .github/workflows/supersetbot.yml                  |     4 +-
 .github/workflows/tag-release.yml                  |    24 +-
 .github/workflows/tech-debt.yml                    |    11 +-
 .gitignore                                         |     3 +-
 .pre-commit-config.yaml                            |     2 +-
 README.md                                          |    10 +-
 RESOURCES/INTHEWILD.yaml                           |     3 +
 UPDATING.md                                        |    60 +-
 docker-compose-image-tag.yml                       |     2 +-
 docker-compose-light.yml                           |     2 +-
 docker-compose-non-dev.yml                         |     2 +-
 docker-compose.yml                                 |     2 +-
 docs/.claude/instructions.md                       |     2 +-
 docs/.gitignore                                    |    10 +-
 docs/.nvmrc                                        |     2 +-
 docs/DOCS_CLAUDE.md                                |     2 +-
 docs/README.md                                     |     9 +-
 .../configuration/alerts-reports.mdx               |    22 +-
 .../configuration/async-queries-celery.mdx         |     0
 docs/{docs => admin_docs}/configuration/cache.mdx  |    20 +-
 .../configuration/configuring-superset.mdx         |    13 +-
 .../configuration/country-map-tools.mdx            |     0
 .../configuration/event-logging.mdx                |     0
 .../configuration/feature-flags.mdx                |     0
 .../importing-exporting-datasources.mdx            |     0
 .../configuration/map-tiles.mdx                    |     0
 docs/admin_docs/configuration/mcp-server.mdx       |   684 +
 .../configuration/networking-settings.mdx          |    22 +-
 .../configuration/sql-templating.mdx               |    37 +-
 .../{docs => admin_docs}/configuration/theming.mdx |     0
 .../configuration/timezones.mdx                    |     2 +-
 docs/admin_docs/index.md                           |    42 +
 .../installation/architecture.mdx                  |    12 +-
 .../installation/docker-builds.mdx                 |     0
 .../installation/docker-compose.mdx                |     4 +-
 .../installation/installation-methods.mdx          |    10 +-
 .../installation/kubernetes.mdx                    |     6 +-
 docs/{docs => admin_docs}/installation/pypi.mdx    |     2 +-
 .../installation/upgrading-superset.mdx            |     0
 docs/{docs => admin_docs}/security/cves.mdx        |    10 +
 .../security/securing_superset.mdx                 |     4 +-
 docs/{docs => admin_docs}/security/security.mdx    |    10 +-
 docs/developer_docs/api.mdx                        |   590 +
 docs/developer_docs/components/TODO.md             |    71 +
 .../components/design-system/dropdowncontainer.mdx |   167 +
 .../components/design-system/flex.mdx              |   197 +
 .../components/design-system/grid.mdx              |   192 +
 .../components/design-system/index.mdx             |    38 +
 .../components/design-system/layout.mdx            |   139 +
 .../components/design-system/metadatabar.mdx       |   174 +
 .../components/design-system/space.mdx             |   168 +
 .../components/design-system/table.mdx             |   311 +
 docs/developer_docs/components/index.mdx           |    74 +
 docs/developer_docs/components/ui/autocomplete.mdx |   215 +
 docs/developer_docs/components/ui/avatar.mdx       |   140 +
 docs/developer_docs/components/ui/badge.mdx        |   160 +
 docs/developer_docs/components/ui/breadcrumb.mdx   |    93 +
 docs/developer_docs/components/ui/button.mdx       |   142 +
 docs/developer_docs/components/ui/buttongroup.mdx  |    88 +
 docs/developer_docs/components/ui/cachedlabel.mdx  |    79 +
 docs/developer_docs/components/ui/card.mdx         |   142 +
 docs/developer_docs/components/ui/checkbox.mdx     |   141 +
 docs/developer_docs/components/ui/collapse.mdx     |   106 +
 docs/developer_docs/components/ui/datepicker.mdx   |   110 +
 docs/developer_docs/components/ui/divider.mdx      |   144 +
 .../developer_docs/components/ui/editabletitle.mdx |   172 +
 docs/developer_docs/components/ui/emptystate.mdx   |   147 +
 docs/developer_docs/components/ui/favestar.mdx     |    96 +
 docs/developer_docs/components/ui/iconbutton.mdx   |   106 +
 .../developer_docs/components/ui/icons.mdx         |   257 +-
 docs/developer_docs/components/ui/icontooltip.mdx  |   100 +
 docs/developer_docs/components/ui/index.mdx        |    77 +
 docs/developer_docs/components/ui/infotooltip.mdx  |   106 +
 docs/developer_docs/components/ui/input.mdx        |   162 +
 docs/developer_docs/components/ui/label.mdx        |   105 +
 docs/developer_docs/components/ui/list.mdx         |   117 +
 docs/developer_docs/components/ui/listviewcard.mdx |   132 +
 docs/developer_docs/components/ui/loading.mdx      |   187 +
 docs/developer_docs/components/ui/menu.mdx         |   174 +
 docs/developer_docs/components/ui/modal.mdx        |   207 +
 docs/developer_docs/components/ui/modaltrigger.mdx |   192 +
 docs/developer_docs/components/ui/popover.mdx      |   199 +
 docs/developer_docs/components/ui/progressbar.mdx  |   206 +
 docs/developer_docs/components/ui/radio.mdx        |   137 +
 docs/developer_docs/components/ui/safemarkdown.mdx |    85 +
 docs/developer_docs/components/ui/select.mdx       |   308 +
 docs/developer_docs/components/ui/skeleton.mdx     |   140 +
 docs/developer_docs/components/ui/slider.mdx       |   253 +
 docs/developer_docs/components/ui/steps.mdx        |   272 +
 docs/developer_docs/components/ui/switch.mdx       |   193 +
 .../components/ui/tablecollection.mdx              |    66 +
 docs/developer_docs/components/ui/tableview.mdx    |   294 +
 docs/developer_docs/components/ui/tabs.mdx         |   223 +
 docs/developer_docs/components/ui/timer.mdx        |   172 +
 docs/developer_docs/components/ui/tooltip.mdx      |   171 +
 docs/developer_docs/components/ui/tree.mdx         |   268 +
 docs/developer_docs/components/ui/treeselect.mdx   |   286 +
 docs/developer_docs/components/ui/typography.mdx   |   236 +
 .../components/ui/unsavedchangesmodal.mdx          |   126 +
 docs/developer_docs/components/ui/upload.mdx       |   136 +
 .../contributing/code-review.md                    |     0
 .../contributing/development-setup.md              |     4 +-
 .../contributing/guidelines.md                     |     0
 .../contributing/howtos.md                         |    24 +
 .../contributing/issue-reporting.md                |     0
 .../contributing/overview.md                       |     0
 .../contributing/pkg-resources-migration.md        |    47 +-
 .../contributing/release-process.md                |     0
 .../contributing/resources.md                      |     4 +-
 .../contributing/submitting-pr.md                  |     0
 .../extensions/architecture.md                     |    66 +-
 .../developer_docs/extensions/components/alert.mdx |   131 +
 .../developer_docs/extensions/components/index.mdx |    93 +
 .../extensions/contribution-types.md               |   226 +
 .../extensions/dependencies.md                     |     6 +-
 .../extensions/deployment.md                       |     0
 .../extensions/development.md                      |   224 +-
 .../extensions/extension-points/editors.md         |    53 +-
 .../extensions/extension-points/sqllab.md          |   169 +-
 .../extensions/mcp.md                              |     6 +-
 .../extensions/overview.md                         |     6 +-
 .../extensions/quick-start.md                      |   189 +-
 .../extensions/registry.md                         |    14 +-
 .../extensions/security.md                         |     0
 .../extensions/tasks.md                            |    14 +-
 .../guidelines/backend-style-guidelines.md         |     0
 .../guidelines/backend/dao-style-guidelines.md     |     0
 .../guidelines/design-guidelines.md                |     0
 .../guidelines/frontend-style-guidelines.md        |     2 +-
 .../frontend/component-style-guidelines.md         |     0
 .../frontend/emotion-styling-guidelines.md         |     0
 docs/{developer_portal => developer_docs}/index.md |    48 +-
 .../sidebars.js                                    |     0
 docs/developer_docs/testing/backend-testing.md     |   171 +
 .../testing/ci-cd.md                               |     0
 .../testing/e2e-testing.md                         |     0
 .../testing/frontend-testing.md                    |     0
 .../testing/overview.md                            |     0
 .../testing/storybook.md                           |     0
 .../testing/testing-guidelines.md                  |     0
 .../versions.json                                  |     0
 .../extensions/contribution-types.md               |   151 -
 docs/developer_portal/testing/backend-testing.md   |    68 -
 docs/docs/api.mdx                                  |   590 -
 docs/docs/contributing/contributing.mdx            |   142 -
 docs/docs/contributing/development.mdx             |  1205 --
 docs/docs/contributing/guidelines.mdx              |   254 -
 docs/docs/contributing/howtos.mdx                  |   720 -
 docs/docs/contributing/misc.mdx                    |    55 -
 docs/docs/contributing/resources.mdx               |   104 -
 docs/docs/faq.mdx                                  |    14 +-
 docs/docs/index.mdx                                |   269 +
 docs/docs/quickstart.mdx                           |    14 +-
 .../creating-your-first-dashboard.mdx              |     4 +-
 docs/docs/using-superset/sql-templating.mdx        |   250 +
 .../docs/using-superset/using-ai-with-superset.mdx |   245 +
 docs/docusaurus.config.ts                          |   448 +-
 docs/i18n/en/docusaurus-theme-classic/footer.json  |     2 +-
 docs/package.json                                  |    52 +-
 docs/scripts/convert-api-sidebar.mjs               |     4 +-
 docs/scripts/generate-api-index.mjs                |    10 +-
 docs/scripts/generate-api-tag-pages.mjs            |     2 +-
 docs/scripts/generate-database-docs.mjs            |    10 +-
 docs/scripts/generate-extension-components.mjs     |   676 -
 docs/scripts/generate-if-changed.mjs               |   307 +
 docs/scripts/generate-superset-components.mjs      |   241 +-
 docs/{sidebars.js => sidebarAdminDocs.js}          |    76 +-
 docs/sidebarTutorials.js                           |    29 +-
 docs/sidebars.js                                   |    74 +-
 docs/src/components/StorybookWrapper.jsx           |     4 +-
 docs/src/components/databases/DatabaseIndex.tsx    |     3 +-
 docs/src/components/databases/DatabaseLogoWall.tsx |    71 +
 docs/src/components/databases/DatabasePage.tsx     |     8 +-
 .../components/ui-components/ComponentIndex.tsx    |   262 +
 .../src/components/ui-components}/index.ts         |     6 +-
 .../src/components/ui-components/types.ts          |    36 +-
 docs/src/data/databases.json                       |   170 +-
 docs/src/pages/index.tsx                           |   128 +
 docs/src/shims/superset-ui-core.ts                 |    57 +
 docs/src/styles/custom.css                         |    24 +-
 .../src/theme/ApiExplorer/MethodEndpoint/index.tsx |   120 +
 docs/src/theme/Playground/Preview/index.tsx        |     2 +-
 docs/src/theme/ReactLiveScope/index.tsx            |     2 +-
 docs/src/types/apache-superset-core/index.d.ts     |     6 +-
 docs/src/webpack.extend.ts                         |    19 +-
 docs/static/feature-flags.json                     |    20 +
 docs/static/img/applitools.png                     |   Bin 37046 -> 0 bytes
 docs/static/img/databases/datastore.png            |   Bin 0 -> 5248 bytes
 .../{sql-snippets.png => editor-snippets.png}      |   Bin
 docs/tsconfig.json                                 |     7 +-
 .../version-6.0.0/configuration/alerts-reports.mdx |     8 +-
 .../version-6.0.0/configuration/cache.mdx          |     4 +-
 .../configuration/configuring-superset.mdx         |     6 +-
 .../version-6.0.0/configuration/databases.mdx      |   108 +-
 .../configuration/networking-settings.mdx          |     2 +-
 .../version-6.0.0/configuration/sql-templating.mdx |     2 +-
 .../version-6.0.0/configuration/timezones.mdx      |     2 +-
 .../version-6.0.0/contributing/contributing.mdx    |     2 +-
 .../version-6.0.0/contributing/development.mdx     |     4 +-
 .../version-6.0.0/contributing/guidelines.mdx      |     2 +-
 docs/versioned_docs/version-6.0.0/faq.mdx          |    10 +-
 .../version-6.0.0/installation/architecture.mdx    |    12 +-
 .../installation/installation-methods.mdx          |    10 +-
 .../version-6.0.0/installation/kubernetes.mdx      |     4 +-
 docs/versioned_docs/version-6.0.0/intro.md         |     4 +-
 docs/versioned_docs/version-6.0.0/quickstart.mdx   |    12 +-
 .../creating-your-first-dashboard.mdx              |     4 +-
 docs/versions-config.json                          |    17 +-
 docs/yarn.lock                                     |  1852 +-
 helm/superset/Chart.lock                           |     6 +-
 helm/superset/Chart.yaml                           |     4 +-
 helm/superset/README.md                            |     4 +-
 helm/superset/values.yaml                          |    30 +
 pyproject.toml                                     |    18 +-
 requirements/base.in                               |     4 +-
 requirements/base.txt                              |    22 +-
 requirements/development.txt                       |    95 +-
 superset-core/README.md                            |   100 +-
 superset-core/pyproject.toml                       |     6 +-
 superset-core/src/superset_core/api/rest_api.py    |    72 -
 .../src/superset_core/{api => common}/__init__.py  |     0
 .../src/superset_core/{api => common}/daos.py      |    82 +-
 .../src/superset_core/{api => common}/models.py    |   192 +-
 .../src/superset_core/extensions/constants.py      |    23 +-
 .../src/superset_core/extensions/types.py          |   106 +-
 superset-core/src/superset_core/mcp/__init__.py    |   145 -
 .../mcp/{__init__.py => decorators.py}             |    35 +-
 .../src/superset_core/{api => queries}/__init__.py |     0
 superset-core/src/superset_core/queries/daos.py    |    63 +
 superset-core/src/superset_core/queries/models.py  |    79 +
 .../src/superset_core/{api => queries}/query.py    |     4 +-
 .../src/superset_core/{api => queries}/types.py    |     0
 .../superset_core/{api => rest_api}/__init__.py    |     0
 .../src/superset_core/rest_api/api.py              |    24 +-
 .../src/superset_core/rest_api/decorators.py       |   103 +
 .../src/superset_core/{api => tasks}/__init__.py   |     0
 superset-core/src/superset_core/tasks/daos.py      |    76 +
 .../src/superset_core/tasks/decorators.py          |   152 +
 superset-core/src/superset_core/tasks/models.py    |   169 +
 .../superset_core/{api/tasks.py => tasks/types.py} |   128 +-
 superset-embedded-sdk/.nvmrc                       |     2 +-
 superset-embedded-sdk/package-lock.json            |    88 +-
 superset-embedded-sdk/src/index.ts                 |     1 +
 superset-extensions-cli/README.md                  |    73 +-
 superset-extensions-cli/pyproject.toml             |     3 +-
 .../src/superset_extensions_cli/cli.py             |   462 +-
 .../src/superset_extensions_cli/exceptions.py      |     6 +
 .../templates/backend/pyproject.toml.j2            |     9 +-
 .../templates/backend/src/package/__init__.py.j2   |     0
 .../templates/backend/src/package/entrypoint.py.j2 |     2 +-
 .../templates/extension.json.j2                    |    21 +-
 .../templates/frontend/package.json.j2             |     2 +-
 .../templates/frontend/src/index.tsx.j2            |    17 +-
 .../templates/frontend/webpack.config.js.j2        |     5 +-
 .../templates/{.gitignore.j2 => gitignore.j2}      |     0
 .../src/superset_extensions_cli/types.py           |    49 +
 .../src/superset_extensions_cli/utils.py           |   350 +
 superset-extensions-cli/tests/conftest.py          |   100 +-
 superset-extensions-cli/tests/test_cli_build.py    |   254 +-
 superset-extensions-cli/tests/test_cli_bundle.py   |    16 +-
 superset-extensions-cli/tests/test_cli_dev.py      |    29 +-
 superset-extensions-cli/tests/test_cli_init.py     |   191 +-
 superset-extensions-cli/tests/test_cli_update.py   |   172 +
 superset-extensions-cli/tests/test_cli_validate.py |    77 +-
 .../tests/test_name_transformations.py             |   499 +
 superset-extensions-cli/tests/test_templates.py    |   122 +-
 superset-extensions-cli/tests/test_utils.py        |    31 +-
 superset-frontend/.eslintrc.js                     |    71 +-
 superset-frontend/.eslintrc.minimal.js             |     5 +-
 superset-frontend/.nvmrc                           |     2 +-
 superset-frontend/.storybook/main.js               |    17 +-
 superset-frontend/.storybook/preview.jsx           |    23 +-
 .../shared}/ErrorMessage.tsx                       |     0
 .../shared}/Expandable.tsx                         |     0
 .../shared}/ResizableChartDemo.tsx                 |    16 +-
 .../shared}/ResizablePanel.tsx                     |    20 +-
 .../shared}/VerifyCORS.tsx                         |     2 +-
 .../shared/createQueryStory.tsx}                   |     4 +-
 .../shared/dummyDatasource.ts                      |     0
 .../ui/translation => .storybook/shared}/index.ts  |    22 +-
 superset-frontend/applitools.config.js             |    27 -
 .../cypress-base/applitools.config.js              |    29 -
 superset-frontend/cypress-base/cypress.config.ts   |   120 +-
 .../cypress/applitools/chartlist.test.ts           |    45 -
 .../cypress/applitools/dashboard.test.ts           |    53 -
 .../cypress/applitools/dashboardlist.test.ts       |    45 -
 .../cypress/e2e/chart_list/_skip.filter.test.ts    |    57 -
 .../cypress/e2e/chart_list/list.test.ts            |    57 -
 .../e2e/dashboard/_skip.nativeFilters.test.ts      |     4 +-
 .../cypress/e2e/dashboard_list/filter.test.ts      |    47 -
 .../cypress/e2e/dashboard_list/list.test.ts        |   279 -
 .../cypress-base/cypress/support/e2e.ts            |     1 -
 superset-frontend/cypress-base/package-lock.json   | 17103 +++++++-----------
 superset-frontend/cypress-base/package.json        |     1 -
 superset-frontend/cypress-base/tsconfig.json       |     4 +-
 superset-frontend/jest.config.js                   |     8 +-
 superset-frontend/oxlint.json                      |    62 +-
 superset-frontend/package-lock.json                | 17687 +++++++------------
 superset-frontend/package.json                     |   136 +-
 .../plugin-chart/templates/package-lock.erb        |    18 -
 .../packages/generator-superset/package.json       |     6 +-
 superset-frontend/packages/superset-core/README.md |   148 +-
 .../packages/superset-core/package.json            |    70 +-
 .../superset-core/src/api/contributions.ts         |   112 -
 .../packages/superset-core/src/api/index.ts        |    42 -
 .../authentication.ts => authentication/index.ts}  |     0
 .../src/{api/commands.ts => commands/index.ts}     |    51 +-
 .../src/{api/core.ts => common/index.ts}           |    74 +-
 .../{ui => }/components/Alert/Alert.stories.tsx    |     0
 .../src/{ui => }/components/Alert/Alert.test.tsx   |     0
 .../src/{ui => }/components/Alert/index.tsx        |     3 +-
 .../superset-core/src/{ui => }/components/index.ts |     0
 .../superset-core/src/contributions/index.ts       |    85 +
 .../src/{api/editors.ts => editors/index.ts}       |   152 +-
 .../src/{api/extensions.ts => extensions/index.ts} |     2 +-
 .../packages/superset-core/src/index.ts            |    16 +-
 .../packages/superset-core/src/menus/index.ts      |   104 +
 .../src/{api/sqlLab.ts => sqlLab/index.ts}         |    20 +-
 .../superset-core/src/{ui => }/testing.tsx         |     0
 .../src/{ui => }/theme/GlobalStyles.tsx            |    17 +-
 .../src/{ui => }/theme/Theme.test.tsx              |   145 +-
 .../superset-core/src/{ui => }/theme/Theme.tsx     |    29 +
 .../src/{ui => }/theme/exampleThemes.ts            |     0
 .../superset-core/src/{ui => }/theme/index.tsx     |     0
 .../superset-core/src/{ui => }/theme/types.ts      |    71 +
 .../src/{ui => }/theme/utils/index.ts              |     0
 .../src/{ui => }/theme/utils/themeUtils.test.ts    |    30 +
 .../src/{ui => }/theme/utils/themeUtils.ts         |    18 +-
 .../src/{ui => }/theme/utils/utils.test.ts         |    22 +
 .../src/{ui => }/translation/README.md             |     0
 .../src/translation/Translator.test.ts             |   132 +
 .../src/{ui => }/translation/Translator.ts         |     3 +-
 .../src/translation/TranslatorSingleton.test.ts    |   112 +
 .../{ui => }/translation/TranslatorSingleton.ts    |     0
 .../src/{ui => }/translation/index.ts              |     0
 .../src/{ui => }/translation/types/index.ts        |     0
 .../src/{ui => }/translation/types/jed.ts          |     0
 .../packages/superset-core/src/utils/index.ts      |     1 +
 .../superset-core/src/utils/isBlank.test.ts        |    59 +
 .../superset-core/src/utils/isBlank.ts}            |    13 +-
 .../src/{spec => }/utils/logging.test.ts           |     4 +-
 .../packages/superset-core/src/utils/logging.ts    |     4 +-
 .../packages/superset-core/src/views/index.ts      |    90 +
 .../superset-ui-chart-controls/package.json        |     4 +-
 .../src/components/CertifiedIconWithTooltip.tsx    |     4 +-
 .../src/components/ColumnOption.tsx                |     4 +-
 .../components/ColumnTypeLabel/ColumnTypeLabel.tsx |     6 +-
 .../src/components/ControlHeader.tsx               |     4 +-
 .../src/components/ControlSubSectionHeader.tsx     |     2 +-
 .../src/components/MetricOption.tsx                |     2 +-
 .../src/components/SQLPopover.tsx                  |     4 +-
 .../src/components/labelUtils.tsx                  |    27 +-
 .../superset-ui-chart-controls/src/constants.ts    |     4 +-
 .../superset-ui-chart-controls/src/fixtures.ts     |     2 +-
 .../src/operators/utils/timeOffset.ts              |    12 +-
 .../src/sections/advancedAnalytics.tsx             |     2 +-
 .../src/sections/annotationsAndLayers.tsx          |     2 +-
 .../src/sections/chartTitle.tsx                    |     2 +-
 .../src/sections/echartsTimeSeriesQuery.tsx        |     2 +-
 .../src/sections/forecastInterval.tsx              |     2 +-
 .../src/sections/matrixify.tsx                     |    44 +-
 .../src/sections/sections.tsx                      |     2 +-
 .../src/sections/timeComparison.tsx                |     2 +-
 .../components/RadioButtonControl.tsx              |   105 +-
 .../src/shared-controls/customControls.tsx         |     4 +-
 .../src/shared-controls/dndControls.tsx            |     4 +-
 .../src/shared-controls/matrixifyControls.test.ts  |   139 +
 .../src/shared-controls/matrixifyControls.tsx      |   145 +-
 .../src/shared-controls/mixins.tsx                 |     6 +-
 .../src/shared-controls/sharedControls.tsx         |    31 +-
 .../superset-ui-chart-controls/src/types.ts        |    19 +-
 .../src/utils/D3Formatting.ts                      |     2 +-
 .../src/utils/checkColumnType.ts                   |     2 +-
 .../src/utils/columnChoices.ts                     |     2 +-
 .../src/utils/getColorFormatters.ts                |    74 +-
 .../src/utils/isSortable.ts                        |     2 +-
 .../src/utils/metricColumnFilter.test.ts           |     8 +
 .../test/components/ColumnOption.test.tsx          |     2 +-
 .../test/components/ColumnTypeLabel.test.tsx       |     2 +-
 .../test/components/labelUtils.test.tsx            |    19 +
 .../test/operators/utils/timeOffset.test.ts        |    92 +-
 .../components/RadioButtonControl.test.tsx         |   420 +
 .../test/shared-controls/customControls.test.tsx   |     2 +-
 .../test/utils/checkColumnType.test.ts             |     2 +-
 .../test/utils/columnChoices.test.tsx              |     2 +-
 .../test/utils/getColorFormatters.test.ts          |   217 +-
 .../test/utils/getTemporalColumns.test.ts          |     2 +-
 .../test/utils/isSortable.test.ts                  |     2 +-
 .../packages/superset-ui-core/package.json         |    18 +-
 .../src/chart/components/FallbackComponent.tsx     |     4 +-
 .../Matrixify/MatrixifyGridCell.test.tsx           |     2 +-
 .../components/Matrixify/MatrixifyGridCell.tsx     |     5 +-
 .../Matrixify/MatrixifyGridGenerator.test.ts       |   172 +
 .../components/Matrixify/MatrixifyGridGenerator.ts |    10 +-
 .../Matrixify/MatrixifyGridRenderer.test.tsx       |    60 +-
 .../components/Matrixify/MatrixifyGridRenderer.tsx |     8 +-
 .../src/chart/components/NoResultsComponent.tsx    |     3 +-
 .../src/chart/components/StatefulChart.tsx         |     3 +-
 .../src/chart/components/SuperChartCore.tsx        |     2 +-
 .../src/chart/models/ChartProps.ts                 |     2 +-
 .../chart/stories}/ChartDataProvider.stories.tsx   |     4 +-
 .../src/chart/stories}/SuperChart.stories.tsx      |     2 +-
 .../src/chart/types/matrixify.mocks.test.ts        |    11 +-
 .../src/chart/types/matrixify.test.ts              |   201 +-
 .../superset-ui-core/src/chart/types/matrixify.ts  |   133 +-
 .../src/color/stories}/ColorPalettes.stories.tsx   |     0
 .../src/color/stories}/RenderPalettes.tsx          |     0
 .../src/color/stories}/color-styles.css            |    11 +-
 .../src/components/ActionButton/index.tsx          |     2 +-
 .../AsyncAceEditor/AsyncAceEditor.test.tsx         |    15 +
 .../src/components/AsyncAceEditor/index.tsx        |    23 +-
 .../AsyncAceEditor/useJsonValidation.test.ts       |    25 +
 .../src/components/Badge/index.tsx                 |     2 +-
 .../src/components/Button/Button.stories.tsx       |     2 +-
 .../src/components/Button/Button.test.tsx          |   167 +
 .../src/components/Button/index.tsx                |   119 +-
 .../components/CachedLabel/CachedLabel.stories.tsx |   100 +
 .../src/components/CachedLabel/TooltipContent.tsx  |     2 +-
 .../src/components/CachedLabel/index.tsx           |     2 +-
 .../superset-ui-core/src/components/Card/index.tsx |     2 +-
 .../CertifiedBadge/CertifiedBadge.stories.tsx      |     2 +-
 .../src/components/CertifiedBadge/index.tsx        |     4 +-
 .../src/components/Checkbox/CheckboxIcons.tsx      |     2 +-
 .../src/components/CodeSyntaxHighlighter/index.tsx |     2 +-
 .../src/components/Collapse/Collapse.tsx           |     2 +-
 .../components/Collapse/CollapseLabelInModal.tsx   |     2 +-
 .../components/ConfirmModal/ConfirmModal.test.tsx  |     2 +-
 .../src/components/ConfirmModal/index.tsx          |     4 +-
 .../src/components/CronPicker/index.tsx            |     4 +-
 .../src/components/DatePicker/index.tsx            |     2 +-
 .../src/components/DeleteModal/index.tsx           |     4 +-
 .../src/components/Divider/index.tsx               |     2 +-
 .../src/components/Dropdown/index.tsx              |     2 +-
 .../src/components/DropdownButton/index.tsx        |     2 +-
 .../DropdownContainer.stories.tsx                  |     2 +-
 .../DropdownContainer/DropdownContainer.tsx        |     5 +-
 .../src/components/DynamicEditableTitle/index.tsx  |     4 +-
 .../src/components/EditableTitle/index.tsx         |    15 +-
 .../src/components/EmptyState/index.tsx            |     4 +-
 .../src/components/FaveStar/index.tsx              |     4 +-
 .../src/components/Flex/Flex.stories.tsx           |     2 +-
 .../src/components/Form/FormItem.tsx               |     2 +-
 .../src/components/Form/FormLabel.tsx              |     2 +-
 .../src/components/Form/LabeledErrorBoundInput.tsx |     4 +-
 .../src/components/IconButton/index.tsx            |     2 +-
 .../components/IconTooltip/IconTooltip.stories.tsx |     2 +-
 .../src/components/Icons/AntdEnhanced.tsx          |    10 +-
 .../src/components/Icons/BaseIcon.tsx              |     2 +-
 .../src/components/Icons/Icons.stories.tsx         |     2 +-
 .../src/components/InfoTooltip/index.tsx           |     4 +-
 .../src/components/Label/Label.test.tsx            |     5 +
 .../src/components/Label/index.tsx                 |     2 +-
 .../Label/reusable/DatasetTypeLabel.test.tsx       |   128 +
 .../components/Label/reusable/DatasetTypeLabel.tsx |    49 +-
 .../Label/reusable/PublishedLabel.test.tsx         |   120 +
 .../components/Label/reusable/PublishedLabel.tsx   |    26 +-
 .../index.tsx => Label/reusable/testUtils.tsx}     |    25 +-
 .../src/components/LastUpdated/index.tsx           |     4 +-
 .../src/components/Layout/Layout.test.tsx          |     8 +-
 .../src/components/List/List.test.tsx              |    10 +
 .../superset-ui-core/src/components/List/index.ts  |     2 +-
 .../src/components/ListViewCard/ImageLoader.tsx    |     4 +-
 .../src/components/ListViewCard/index.tsx          |     2 +-
 .../src/components/Loading/index.test.tsx          |     2 +-
 .../src/components/Loading/index.tsx               |    11 +-
 .../superset-ui-core/src/components/Menu/index.tsx |    54 +-
 .../src/components/Metadata/index.tsx              |     2 +-
 .../src/components/MetadataBar/ContentConfig.tsx   |     8 +-
 .../components/MetadataBar/MetadataBar.stories.tsx |     2 +-
 .../components/MetadataBar/MetadataBar.test.tsx    |     2 +-
 .../src/components/MetadataBar/MetadataBar.tsx     |     6 +-
 .../src/components/Modal/FormModal.tsx             |     2 +-
 .../src/components/Modal/Modal.tsx                 |     6 +-
 .../components/ModalTrigger/ModalTrigger.test.tsx  |     2 +-
 .../src/components/PageHeaderWithActions/index.tsx |     4 +-
 .../src/components/PopoverDropdown/index.tsx       |     2 +-
 .../src/components/PopoverSection/index.tsx        |     2 +-
 .../src/components/ProgressBar/index.tsx           |     2 +-
 .../src/components/Radio/Radio.stories.tsx         |     2 +-
 .../src/components/RefreshLabel/index.tsx          |     2 +-
 .../SafeMarkdown/SafeMarkdown.stories.tsx          |   249 +
 .../src/components/Select/AsyncSelect.tsx          |     2 +-
 .../src/components/Select/Select.test.tsx          |    32 +
 .../src/components/Select/Select.tsx               |     4 +-
 .../src/components/Select/constants.test.ts        |    49 +
 .../src/components/Select/constants.ts             |     2 +-
 .../src/components/Select/styles.tsx               |     5 +-
 .../src/components/Select/utils.tsx                |     2 +-
 .../src/components/Table/VirtualTable.tsx          |     2 +-
 .../Table/cell-renderers/ActionCell/index.tsx      |     2 +-
 .../Table/cell-renderers/NullCell/index.tsx        |     2 +-
 .../Table/cell-renderers/NumericCell/index.tsx     |     2 +-
 .../header-renderers/HeaderWithRadioGroup.tsx      |     2 +-
 .../src/components/Table/index.tsx                 |     6 +-
 .../Table/utils/InteractiveTableUtils.test.ts      |   574 +
 .../TableCollection/TableCollection.stories.tsx    |   530 +
 .../src/components/TableCollection/index.tsx       |     2 +-
 .../src/components/TableView/TableView.tsx         |     2 +-
 .../superset-ui-core/src/components/Tabs/Tabs.tsx  |   120 +-
 .../ThemedAgGridReact/ThemedAgGridReact.test.tsx   |     8 +-
 .../src/components/ThemedAgGridReact/index.tsx     |     5 +-
 .../src/components/Timer/index.tsx                 |     2 +-
 .../src/components/TimezoneSelector/index.tsx      |     2 +-
 .../src/components/TruncatedList/index.tsx         |     4 +-
 .../src/components/Typography/index.tsx            |     2 +-
 .../src/components/UnsavedChangesModal/index.tsx   |     2 +-
 .../components/WarningIconWithTooltip/index.tsx    |     2 +-
 .../superset-ui-core/src/components/constants.ts   |     2 +-
 .../superset-ui-core/src/components/index.ts       |     1 +
 .../src/connection/callApi/callApi.ts              |    10 +-
 .../src/connection/stories}/Connection.stories.tsx |    12 +-
 .../src/models/ExtensibleFunction.ts               |     3 +-
 .../stories}/NumberFormat.stories.tsx              |     0
 .../src/query/extractQueryFields.ts                |     2 +-
 .../src/query/getClientErrorObject.ts              |     2 +-
 .../superset-ui-core/src/query/types/Column.ts     |     2 +-
 .../superset-ui-core/src/query/types/Dashboard.ts  |    29 +
 .../superset-ui-core/src/query/types/Operator.ts   |     1 +
 .../superset-ui-core/src/query/types/Query.ts      |     2 +-
 .../src/query/types/QueryResponse.ts               |     2 +-
 .../packages/superset-ui-core/src/spec/index.tsx   |     2 +-
 .../src/style/stories}/Theme.stories.tsx           |     2 +-
 .../time-format/stories}/TimeFormat.stories.tsx    |     0
 .../src/types/react-syntax-highlighter.d.ts        |     7 -
 .../packages/superset-ui-core/src/utils/dates.ts   |    40 +-
 .../superset-ui-core/src/utils/featureFlags.ts     |     5 +-
 .../superset-ui-core/src/utils/html.test.tsx       |     1 +
 .../packages/superset-ui-core/src/utils/html.tsx   |     2 +
 .../src/utils/rankedSearchCompare.test.ts          |    20 +
 .../packages/superset-ui-core/src/utils/tooltip.ts |     2 +-
 .../superset-ui-core/src/utils/withLabel.test.ts}  |    25 +-
 .../src/validator/legacyValidateInteger.ts         |     2 +-
 .../src/validator/legacyValidateNumber.ts          |     2 +-
 .../src/validator/validateInteger.ts               |     2 +-
 .../src/validator/validateMapboxStylesUrl.ts       |     2 +-
 .../src/validator/validateMaxValue.ts              |     2 +-
 .../src/validator/validateNonEmpty.ts              |     2 +-
 .../src/validator/validateNumber.ts                |     2 +-
 .../src/validator/validateServerPagination.ts      |     2 +-
 .../validator/validateTimeComparisonRangeValues.ts |     2 +-
 .../test/chart/clients/ChartClient.test.ts         |     2 +-
 .../chart/components/ChartDataProvider.test.tsx    |     2 +-
 .../test/chart/components/MockChartPlugins.tsx     |     2 +-
 .../test/chart/components/SuperChart.test.tsx      |     2 +-
 .../test/chart/components/SuperChartCore.test.tsx  |     2 +-
 .../test/chart/models/ChartPlugin.test.tsx         |     2 +-
 .../test/chart/models/ChartProps.test.ts           |     2 +-
 .../Icons/AsyncIcon.integration.test.tsx           |     2 +-
 .../test/connection/SupersetClient.test.ts         |     6 +
 .../test/connection/SupersetClientClass.test.ts    |    33 +
 .../test/connection/callApi/callApi.test.ts        |    15 +
 .../test/currency-format/CurrencyFormatter.test.ts |    78 +
 .../test/currency-format/utils.test.ts             |   193 +
 .../packages/superset-ui-core/test/fixtures.ts     |     2 +-
 .../test/query/extractQueryFields.test.ts          |     2 +-
 .../superset-ui-core/test/query/getAxis.test.ts    |    50 +-
 .../test/query/types/Column.test.ts                |    14 +
 .../test/query/types/Dashboard.test.ts             |    33 +
 .../test/utils/featureFlag.test.ts                 |    17 +-
 .../test/utils/getSelectedText.test.ts             |     3 +-
 .../superset-ui-core/test/validator/setup.ts       |     2 +-
 .../packages/superset-ui-demo/.babelrc.json        |    18 -
 .../packages/superset-ui-demo/.storybook/main.js   |    55 -
 .../superset-ui-demo/.storybook/preview.js         |    77 -
 .../superset-ui-demo/.storybook/storybook.css      |    19 -
 .../superset-ui-demo/.storybook/themeDecorator.jsx |    10 -
 .../packages/superset-ui-demo/CHANGELOG.md         |    89 -
 .../packages/superset-ui-demo/README.md            |    28 -
 .../packages/superset-ui-demo/package.json         |    84 -
 .../storybook/stories/ExampleApp.stories.jsx       |    90 -
 .../LegacyPluginChartCalendar.stories.tsx          |    53 -
 .../legacy-plugin-chart-map-box/MapBox.stories.tsx |    58 -
 .../Partition.stories.tsx                          |    52 -
 .../legacy-plugin-chart-rose/Rose.stories.tsx      |    45 -
 .../legacy-preset-chart-deckgl/Arc/payload.js      |   269 -
 .../legacy-preset-chart-deckgl/Grid/payload.js     |   113 -
 .../legacy-preset-chart-deckgl/Hex/payload.js      |   113 -
 .../legacy-preset-chart-deckgl/Path/payload.js     |   227 -
 .../Polygon/geojsonPayload.js                      |   130 -
 .../legacy-preset-chart-deckgl/Polygon/payload.js  |   382 -
 .../legacy-preset-chart-deckgl/Scatter/payload.js  |   228 -
 .../Screengrid/payload.js                          |   135 -
 .../BoxPlot/NVD3BoxPlot.stories.tsx                |    28 -
 .../legacy-preset-chart-nvd3/BoxPlot/data.ts       |    77 -
 .../BoxPlot/stories/basic.tsx                      |    37 -
 .../Bubble/NVD3Bubble.stories.tsx                  |    29 -
 .../Bubble/stories/basic.tsx                       |    55 -
 .../Bullet/NVD3Bullet.stories.tsx                  |    29 -
 .../Bullet/stories/basic.tsx                       |    41 -
 .../Compare/NVD3Compare.stories.tsx                |    30 -
 .../Compare/stories/basic.tsx                      |    48 -
 .../Compare/stories/timeFormat.tsx                 |   249 -
 .../plugin-chart-echarts/Gauge/Gauge.stories.tsx   |    52 -
 .../plugin-chart-echarts/Graph/Graph.stories.tsx   |    54 -
 .../PivotTable.stories.tsx                         |    74 -
 .../plugins/plugin-chart-table/birthNames.json     | 13354 --------------
 .../plugin-chart-word-cloud/WordCloud.stories.tsx  |   188 -
 .../packages/superset-ui-demo/tsconfig.json        |    22 -
 .../components/modals/ChartPropertiesModal.ts      |    52 +
 .../playwright/helpers/api/assertions.ts           |    58 +
 superset-frontend/playwright/helpers/api/chart.ts  |   104 +
 .../playwright/helpers/api/dashboard.ts            |   171 +
 superset-frontend/playwright/helpers/api/theme.ts  |    62 +
 .../playwright/helpers/fixtures/testAssets.ts      |    98 +-
 .../playwright/pages/ChartListPage.ts              |   132 +
 .../playwright/pages/DashboardListPage.ts          |   139 +
 .../tests/experimental/chart/chart-list.spec.ts    |   307 +
 .../tests/experimental/chart/chart-test-helpers.ts |    88 +
 .../experimental/dashboard/dashboard-list.spec.ts  |   403 +
 .../dashboard/dashboard-test-helpers.ts            |    74 +
 .../tests/experimental/dashboard/theme.spec.ts     |   152 +
 .../experimental/dataset/dataset-list.spec.ts      |    51 +-
 .../legacy-plugin-chart-calendar/src/Calendar.ts   |     3 +-
 .../src/ReactCalendar.tsx                          |     4 +-
 .../src/controlPanel.ts                            |     2 +-
 .../legacy-plugin-chart-calendar/src/index.ts      |     2 +-
 .../stories/LegacyPluginChartCalendar.stories.tsx  |   123 +
 .../src/stories}/data.ts                           |     0
 .../src/vendor/cal-heatmap.ts                      |     2 +-
 .../legacy-plugin-chart-calendar/tsconfig.json     |     3 +-
 .../legacy-plugin-chart-chord/src/ReactChord.tsx   |     2 +-
 .../legacy-plugin-chart-chord/src/controlPanel.ts  |     2 +-
 .../plugins/legacy-plugin-chart-chord/src/index.ts |     2 +-
 .../stories}/LegacyPluginChartChord.stories.tsx    |    45 +-
 .../legacy-plugin-chart-chord/src/stories}/data.ts |    10 +-
 .../legacy-plugin-chart-chord/tsconfig.json        |     3 +-
 .../src/ReactCountryMap.tsx                        |     2 +-
 .../src/controlPanel.ts                            |     2 +-
 .../legacy-plugin-chart-country-map/src/index.ts   |     2 +-
 .../src/stories}/CountryMap.stories.tsx            |    31 +-
 .../legacy-plugin-chart-country-map/tsconfig.json  |     3 +-
 .../legacy-plugin-chart-horizon/package.json       |     2 +-
 .../src/HorizonChart.tsx                           |     2 +-
 .../src/controlPanel.ts                            |     2 +-
 .../legacy-plugin-chart-horizon/src/index.ts       |     2 +-
 .../src/stories}/Horizon.stories.tsx               |    36 +-
 .../src/stories}/data.ts                           |     0
 .../legacy-plugin-chart-horizon/tsconfig.json      |     3 +-
 .../legacy-plugin-chart-map-box/src/MapBox.tsx     |    96 +-
 .../src/ScatterPlotGlowOverlay.tsx                 |    63 +-
 .../src/controlPanel.ts                            |     9 +-
 .../legacy-plugin-chart-map-box/src/index.ts       |     2 +-
 .../src/stories/MapBox.stories.tsx                 |   107 +
 .../src/stories}/data.ts                           |     2 +-
 .../src/transformProps.ts                          |    44 +-
 .../test/MapBox.test.tsx                           |   381 +
 .../test/ScatterPlotGlowOverlay.test.tsx           |   663 +-
 .../test/controlPanel.test.ts                      |    81 +
 .../test/transformProps.test.ts                    |   230 +
 .../legacy-plugin-chart-map-box/tsconfig.json      |     3 +-
 .../src/PairedTTest.tsx                            |     2 +-
 .../src/TTestTable.tsx                             |     2 +-
 .../src/controlPanel.ts                            |     2 +-
 .../legacy-plugin-chart-paired-t-test/src/index.ts |     2 +-
 .../src/stories}/TTest.stories.tsx                 |    45 +-
 .../src/stories}/data.ts                           |     0
 .../tsconfig.json                                  |     3 +-
 .../src/ReactParallelCoordinates.tsx               |     2 +-
 .../src/controlPanel.ts                            |     2 +-
 .../src/index.ts                                   |     2 +-
 .../src/stories}/ParallelCoordinates.stories.tsx   |    53 +-
 .../src/stories}/data.ts                           |     0
 .../tsconfig.json                                  |     3 +-
 .../src/ReactPartition.tsx                         |     2 +-
 .../src/controlPanel.tsx                           |     2 +-
 .../legacy-plugin-chart-partition/src/index.ts     |     2 +-
 .../src/stories/Partition.stories.tsx              |   101 +
 .../src/stories}/data.ts                           |     0
 .../legacy-plugin-chart-partition/tsconfig.json    |     3 +-
 .../legacy-plugin-chart-rose/src/ReactRose.tsx     |     2 +-
 .../plugins/legacy-plugin-chart-rose/src/Rose.ts   |     2 +-
 .../legacy-plugin-chart-rose/src/controlPanel.tsx  |     2 +-
 .../plugins/legacy-plugin-chart-rose/src/index.ts  |     2 +-
 .../src/stories/Rose.stories.tsx                   |    95 +
 .../legacy-plugin-chart-rose/src/stories}/data.ts  |     0
 .../plugins/legacy-plugin-chart-rose/tsconfig.json |     3 +-
 .../legacy-plugin-chart-world-map/package.json     |     2 +-
 .../src/ReactWorldMap.tsx                          |     2 +-
 .../legacy-plugin-chart-world-map/src/WorldMap.ts  |    34 +-
 .../src/controlPanel.ts                            |     2 +-
 .../legacy-plugin-chart-world-map/src/index.ts     |     2 +-
 .../src/stories}/WorldMap.stories.tsx              |    35 +-
 .../src/stories}/data.ts                           |     0
 .../test/WorldMap.test.ts                          |   194 +-
 .../legacy-plugin-chart-world-map/tsconfig.json    |     3 +-
 .../legacy-preset-chart-deckgl/package.json        |    16 +-
 .../src/DeckGLContainer.tsx                        |     2 +-
 .../src/Multi/Multi.test.tsx                       |   139 +-
 .../legacy-preset-chart-deckgl/src/Multi/Multi.tsx |     4 +-
 .../src/Multi/controlPanel.ts                      |     2 +-
 .../legacy-preset-chart-deckgl/src/Multi/index.ts  |     2 +-
 .../src/components/Legend.tsx                      |     2 +-
 .../src/components/Tooltip.tsx                     |     2 +-
 .../src/layers/Arc/controlPanel.ts                 |     2 +-
 .../src/layers/Arc/index.ts                        |     2 +-
 .../src/layers/Arc/stories}/Arc.stories.tsx        |    48 +-
 .../src/layers/Arc/stories/payload.ts              |    80 +
 .../src/layers/Contour/Contour.tsx                 |     2 +-
 .../src/layers/Contour/controlPanel.ts             |     2 +-
 .../src/layers/Contour/index.ts                    |     2 +-
 .../src/layers/Geojson/controlPanel.ts             |     2 +-
 .../src/layers/Geojson/index.ts                    |     2 +-
 .../src/layers/Grid/controlPanel.ts                |     2 +-
 .../src/layers/Grid/index.ts                       |     2 +-
 .../src/layers/Grid/stories}/Grid.stories.tsx      |    45 +-
 .../src/layers/Grid/stories/payload.ts             |    41 +
 .../src/layers/Heatmap/Heatmap.tsx                 |     2 +-
 .../src/layers/Heatmap/controlPanel.ts             |     2 +-
 .../src/layers/Heatmap/index.ts                    |     2 +-
 .../src/layers/Hex/controlPanel.ts                 |     2 +-
 .../src/layers/Hex/index.ts                        |     2 +-
 .../src/layers/Hex/stories}/Hex.stories.tsx        |    45 +-
 .../src/layers/Hex/stories/payload.ts              |    46 +
 .../src/layers/Path/controlPanel.ts                |     2 +-
 .../src/layers/Path/index.ts                       |     2 +-
 .../src/layers/Path/stories}/Path.stories.tsx      |    40 +-
 .../src/layers/Path/stories/payload.ts             |    26 +-
 .../src/layers/Polygon/Polygon.test.tsx            |     2 +-
 .../src/layers/Polygon/Polygon.tsx                 |     2 +-
 .../src/layers/Polygon/controlPanel.ts             |     2 +-
 .../src/layers/Polygon/index.ts                    |     2 +-
 .../layers/Polygon/stories}/Polygon.stories.tsx    |   174 +-
 .../src/layers/Polygon/stories/geojsonPayload.ts   |    77 +
 .../src/layers/Polygon/stories/payload.ts}         |    79 +-
 .../src/layers/Polygon/transformProps.test.ts      |   120 +
 .../src/layers/Polygon/transformProps.ts           |     4 +
 .../src/layers/Scatter/Scatter.tsx                 |     2 +-
 .../src/layers/Scatter/controlPanel.ts             |     2 +-
 .../src/layers/Scatter/index.ts                    |     2 +-
 .../layers/Scatter/stories}/Scatter.stories.tsx    |    54 +-
 .../src/layers/Scatter/stories/payload.ts          |    41 +
 .../src/layers/Screengrid/Screengrid.tsx           |     4 +-
 .../src/layers/Screengrid/controlPanel.ts          |     2 +-
 .../src/layers/Screengrid/index.ts                 |     2 +-
 .../Screengrid/stories/Screengrid.stories.tsx}     |    36 +-
 .../src/layers/Screengrid/stories/payload.ts       |    44 +
 .../src/layers/spatialUtils.test.ts                |     2 +-
 .../src/utilities/HandlebarsRenderer.tsx           |     4 +-
 .../src/utilities/Shared_DeckGL.tsx                |     2 +-
 .../src/utilities/TooltipTemplateControl.tsx       |     4 +-
 .../src/utilities/TooltipTemplateEditor.tsx        |     2 +-
 .../src/utilities/sharedDndControls.tsx            |     2 +-
 .../src/utilities/tooltipUtils.tsx                 |     2 +-
 .../legacy-preset-chart-deckgl/src/utils.ts        |     2 +-
 .../plugins/legacy-preset-chart-nvd3/package.json  |     4 +-
 .../src/BoxPlot/stories/NVD3BoxPlot.stories.tsx    |    81 +
 .../src/BoxPlot/stories/data.ts                    |    78 +
 .../src/Bubble/controlPanel.ts                     |     2 +-
 .../legacy-preset-chart-nvd3/src/Bubble/index.ts   |     2 +-
 .../src/Bubble/stories/NVD3Bubble.stories.tsx      |   103 +
 .../src/Bubble/stories}/data.ts                    |     0
 .../src/Bullet/controlPanel.ts                     |     2 +-
 .../legacy-preset-chart-nvd3/src/Bullet/index.ts   |     2 +-
 .../src/Bullet/stories/NVD3Bullet.stories.tsx      |    87 +
 .../src/Bullet/stories}/data.ts                    |     0
 .../src/Compare/controlPanel.ts                    |     2 +-
 .../legacy-preset-chart-nvd3/src/Compare/index.ts  |     2 +-
 .../src/Compare/stories/NVD3Compare.stories.tsx    |   208 +
 .../src/Compare/stories}/data.ts                   |     0
 .../legacy-preset-chart-nvd3/src/NVD3Controls.tsx  |     2 +-
 .../legacy-preset-chart-nvd3/src/NVD3Vis.ts        |     2 +-
 .../legacy-preset-chart-nvd3/src/ReactNVD3.tsx     |     2 +-
 .../src/TimePivot/controlPanel.ts                  |     2 +-
 .../src/TimePivot/index.ts                         |     2 +-
 .../src/vendor/superset/AnnotationTypes.ts         |     2 +-
 .../plugin-chart-ag-grid-table/package.json        |     4 +-
 .../src/AgGridTable/components/CustomHeader.tsx    |     2 +-
 .../src/AgGridTable/components/CustomPopover.tsx   |    20 +-
 .../src/AgGridTable/components/Pagination.tsx      |     2 +-
 .../components/TimeComparisonVisibility.tsx        |     2 +-
 .../src/AgGridTable/index.tsx                      |     6 +-
 .../src/AgGridTableChart.tsx                       |    25 +-
 .../plugin-chart-ag-grid-table/src/buildQuery.ts   |    82 +-
 .../src/controlPanel.tsx                           |    52 +-
 .../plugin-chart-ag-grid-table/src/index.ts        |     2 +-
 .../src/renderers/NumericCellRenderer.tsx          |     6 +-
 .../src/renderers/TextCellRenderer.tsx             |     4 +-
 .../src/stories/AgGridTable.stories.tsx            |   100 +
 .../plugin-chart-ag-grid-table/src/stories/data.ts |    58 +
 .../src/styles/index.tsx                           |    13 +-
 .../src/transformProps.ts                          |   217 +-
 .../plugin-chart-ag-grid-table/src/types.ts        |     1 +
 .../src/utils/agGridFilterConverter.ts             |    82 +-
 .../src/utils/formatValue.ts                       |     2 +-
 .../src/utils/getCellStyle.ts                      |    33 +-
 .../src/utils/useColDefs.ts                        |    60 +-
 .../src/utils/useTableTheme.ts                     |     2 +-
 .../test/AgGridTableChart.test.tsx                 |   359 +
 .../test/buildQuery.test.ts                        |   254 +
 .../test/controlPanel.test.tsx                     |     2 +-
 .../test/utils/useColDefs.test.ts                  |   830 +
 .../plugin-chart-ag-grid-table/tsconfig.json       |     3 +-
 .../plugins/plugin-chart-cartodiagram/package.json |    14 +-
 .../src/CartodiagramPlugin.tsx                     |     2 +-
 .../src/components/ChartLayer.tsx                  |     2 +-
 .../src/components/ChartWrapper.tsx                |     2 +-
 .../src/plugin/controlPanel.ts                     |     2 +-
 .../plugin-chart-cartodiagram/src/plugin/index.ts  |     2 +-
 .../src/stories/Cartodiagram.stories.tsx           |   208 +
 .../plugin-chart-cartodiagram/src/stories/data.ts  |   206 +
 .../plugins/plugin-chart-cartodiagram/src/types.ts |     2 +-
 .../src/util/chartUtil.tsx                         |     2 +-
 .../src/util/controlPanelUtil.tsx                  |     2 +-
 .../test/plugin/transformProps.test.ts             |     2 +-
 .../test/util/layerUtil.test.ts                    |     7 +-
 .../plugin-chart-cartodiagram/tsconfig.json        |     3 +-
 .../plugins/plugin-chart-echarts/package.json      |     4 +-
 .../BigNumber/BigNumberPeriodOverPeriod/PopKPI.tsx |     4 +-
 .../BigNumberPeriodOverPeriod/controlPanel.ts      |     4 +-
 .../BigNumber/BigNumberPeriodOverPeriod/index.ts   |     2 +-
 .../src/BigNumber/BigNumberTotal/controlPanel.ts   |     4 +-
 .../src/BigNumber/BigNumberTotal/index.ts          |     2 +-
 .../stories}/BigNumberTotal.stories.tsx            |    56 +-
 .../src/BigNumber/BigNumberTotal/stories}/data.ts  |     0
 .../BigNumberTotal/transformProps.test.ts          |     2 +-
 .../src/BigNumber/BigNumberTotal/transformProps.ts |     2 +-
 .../src/BigNumber/BigNumberViz.tsx                 |     4 +-
 .../BigNumberWithTrendline/buildQuery.test.ts      |     4 +-
 .../BigNumber/BigNumberWithTrendline/buildQuery.ts |     2 +-
 .../BigNumberWithTrendline/controlPanel.tsx        |     2 +-
 .../src/BigNumber/BigNumberWithTrendline/index.ts  |     2 +-
 .../stories}/BigNumber.stories.tsx                 |    76 +-
 .../BigNumberWithTrendline/stories}/data.ts        |     0
 .../BigNumberWithTrendline/transformProps.test.ts  |     2 +-
 .../BigNumberWithTrendline/transformProps.ts       |     4 +-
 .../src/BigNumber/sharedControls.ts                |     2 +-
 .../plugin-chart-echarts/src/BigNumber/types.ts    |     1 +
 .../src/BoxPlot/controlPanel.ts                    |     2 +-
 .../plugin-chart-echarts/src/BoxPlot/index.ts      |     2 +-
 .../src/BoxPlot/stories}/BoxPlot.stories.tsx       |    19 +-
 .../src/BoxPlot/stories}/data.ts                   |     0
 .../src/Bubble/controlPanel.tsx                    |     2 +-
 .../plugin-chart-echarts/src/Bubble/index.ts       |     2 +-
 .../src/Bubble/stories}/BubbleChart.stories.tsx    |    43 +-
 .../src/Bubble/stories}/data.ts                    |     0
 .../src/Bubble/transformProps.ts                   |    35 +-
 .../src/Funnel/controlPanel.tsx                    |     2 +-
 .../plugin-chart-echarts/src/Funnel/index.ts       |     2 +-
 .../src/Funnel/stories}/Funnel.stories.tsx         |    43 +-
 .../src/Funnel/stories}/constants.ts               |     0
 .../src/Funnel/transformProps.ts                   |    29 +-
 .../src/Gantt/EchartsGantt.tsx                     |     2 +-
 .../src/Gantt/controlPanel.tsx                     |     4 +-
 .../plugin-chart-echarts/src/Gantt/index.ts        |     2 +-
 .../src/Gantt/transformProps.ts                    |    52 +-
 .../plugin-chart-echarts/src/Gauge/constants.ts    |     2 +-
 .../src/Gauge/controlPanel.tsx                     |     2 +-
 .../plugin-chart-echarts/src/Gauge/index.ts        |     2 +-
 .../src/Gauge/stories/Gauge.stories.tsx            |   118 +
 .../src/Gauge/stories}/data.ts                     |     0
 .../plugin-chart-echarts/src/Graph/buildQuery.ts   |    21 +-
 .../src/Graph/controlPanel.tsx                     |     2 +-
 .../plugin-chart-echarts/src/Graph/index.ts        |     2 +-
 .../src/Graph/stories/Graph.stories.tsx            |   138 +
 .../src/Graph/stories}/data.ts                     |     0
 .../src/Graph/transformProps.ts                    |    29 +-
 .../plugin-chart-echarts/src/Heatmap/Heatmap.tsx   |     3 +-
 .../src/Heatmap/controlPanel.tsx                   |     2 +-
 .../plugin-chart-echarts/src/Heatmap/index.ts      |     2 +-
 .../src/Heatmap/transformProps.ts                  |    28 +-
 .../src/Histogram/controlPanel.tsx                 |     4 +-
 .../plugin-chart-echarts/src/Histogram/index.ts    |     2 +-
 .../src/MixedTimeseries/buildQuery.ts              |     2 +-
 .../src/MixedTimeseries/controlPanel.tsx           |     3 +-
 .../src/MixedTimeseries/index.ts                   |     2 +-
 .../stories}/MixedSeries.stories.tsx               |   149 +-
 .../src/MixedTimeseries/stories}/negativeData.ts   |     0
 .../src/MixedTimeseries/transformProps.ts          |   119 +-
 .../plugin-chart-echarts/src/Pie/controlPanel.tsx  |     2 +-
 .../plugins/plugin-chart-echarts/src/Pie/index.ts  |     2 +-
 .../src/Pie/stories}/Pie.stories.tsx               |   141 +-
 .../plugin-chart-echarts/src/Pie/stories}/data.ts  |     0
 .../plugin-chart-echarts/src/Pie/transformProps.ts |    35 +-
 .../src/Radar/controlPanel.tsx                     |     4 +-
 .../plugin-chart-echarts/src/Radar/index.ts        |     2 +-
 .../src/Radar/stories}/Radar.stories.tsx           |    63 +-
 .../src/Radar/stories}/data.ts                     |     0
 .../src/Radar/transformProps.ts                    |    31 +-
 .../plugin-chart-echarts/src/Sankey/buildQuery.ts  |    19 +-
 .../src/Sankey/controlPanel.tsx                    |     2 +-
 .../plugin-chart-echarts/src/Sankey/index.ts       |     2 +-
 .../src/Sunburst/controlPanel.tsx                  |     2 +-
 .../plugin-chart-echarts/src/Sunburst/index.ts     |     2 +-
 .../src/Sunburst/stories}/Sunburst.stories.tsx     |    23 +-
 .../src/Sunburst/stories}/data.ts                  |     0
 .../src/Sunburst/transformProps.ts                 |     2 +-
 .../src/Timeseries/Area/controlPanel.tsx           |    30 +-
 .../src/Timeseries/Area/index.ts                   |     2 +-
 .../src/Timeseries/EchartsTimeseries.test.tsx      |     2 +-
 .../src/Timeseries/Regular/Bar/controlPanel.tsx    |    60 +-
 .../src/Timeseries/Regular/Bar/index.ts            |     2 +-
 .../src/Timeseries/Regular/Line/controlPanel.tsx   |    30 +-
 .../src/Timeseries/Regular/Line/index.ts           |     2 +-
 .../Timeseries/Regular/Scatter/controlPanel.tsx    |    62 +-
 .../src/Timeseries/Regular/Scatter/index.ts        |     2 +-
 .../Timeseries/Regular/SmoothLine/controlPanel.tsx |    30 +-
 .../src/Timeseries/Regular/SmoothLine/index.ts     |     2 +-
 .../src/Timeseries/Step/controlPanel.tsx           |    29 +-
 .../src/Timeseries/Step/index.ts                   |     2 +-
 .../src/Timeseries/buildQuery.ts                   |     6 +-
 .../src/Timeseries/constants.ts                    |     4 +-
 .../plugin-chart-echarts/src/Timeseries/index.ts   |     2 +-
 .../stories}/AreaSeries/AreaSeries.stories.tsx     |    67 +-
 .../src/Timeseries/stories}/AreaSeries/data.ts     |     0
 .../src/Timeseries/stories}/Timeseries.stories.tsx |    96 +-
 .../src/Timeseries/stories}/confbandData.ts        |     0
 .../src/Timeseries/stories}/data.ts                |     0
 .../src/Timeseries/stories}/negativeNumData.ts     |     0
 .../src/Timeseries/stories}/stackWithNulls.ts      |     0
 .../src/Timeseries/transformProps.ts               |   430 +-
 .../src/Timeseries/transformers.ts                 |   312 +-
 .../plugin-chart-echarts/src/Timeseries/types.ts   |     2 +
 .../plugin-chart-echarts/src/Tree/buildQuery.ts    |    15 +-
 .../plugin-chart-echarts/src/Tree/controlPanel.tsx |     2 +-
 .../plugins/plugin-chart-echarts/src/Tree/index.ts |     2 +-
 .../src/Tree/stories}/Tree.stories.tsx             |   163 +-
 .../plugin-chart-echarts/src/Tree/stories}/data.ts |     0
 .../src/Tree/transformProps.ts                     |    10 +-
 .../src/Treemap/EchartsTreemap.tsx                 |     2 +-
 .../plugin-chart-echarts/src/Treemap/buildQuery.ts |    16 +-
 .../src/Treemap/controlPanel.tsx                   |     2 +-
 .../plugin-chart-echarts/src/Treemap/index.ts      |     2 +-
 .../src/Treemap/stories}/Treemap.stories.tsx       |    27 +-
 .../src/Treemap/stories}/data.ts                   |     0
 .../src/Waterfall/constants.ts                     |     2 +-
 .../src/Waterfall/controlPanel.tsx                 |     2 +-
 .../plugin-chart-echarts/src/Waterfall/index.ts    |     2 +-
 .../src/Waterfall/stories}/Waterfall.stories.tsx   |    38 +-
 .../src/Waterfall/stories}/data.ts                 |     0
 .../src/Waterfall/transformProps.ts                |     2 +-
 .../plugin-chart-echarts/src/components/Echart.tsx |    42 +-
 .../src/components/ExtraControls.tsx               |     9 +-
 .../plugins/plugin-chart-echarts/src/constants.ts  |    17 +-
 .../plugins/plugin-chart-echarts/src/controls.tsx  |    51 +-
 .../plugins/plugin-chart-echarts/src/index.ts      |     3 +
 .../plugins/plugin-chart-echarts/src/types.ts      |     2 +
 .../src/utils/eChartOptionsSchema.ts               |   827 +
 .../plugin-chart-echarts/src/utils/forecast.ts     |     3 +-
 .../plugin-chart-echarts/src/utils/formatters.ts   |    91 +-
 .../plugin-chart-echarts/src/utils/legendLayout.ts |    56 +
 .../src/utils/mergeCustomEChartOptions.test.ts     |   163 +
 .../src/utils/mergeCustomEChartOptions.ts          |    79 +
 .../src/utils/orderby.test.ts}                     |    21 +-
 .../plugin-chart-echarts/src/utils/orderby.ts      |    51 +
 .../src/utils/safeEChartOptionsParser.test.ts      |   525 +
 .../src/utils/safeEChartOptionsParser.ts           |   477 +
 .../plugin-chart-echarts/src/utils/series.ts       |   382 +-
 .../src/utils/themeOverrides.test.ts               |   623 +-
 .../src/utils/themeOverrides.ts                    |    89 +
 .../test/BigNumber/transformProps.test.ts          |    18 +-
 .../test/BoxPlot/transformProps.test.ts            |     2 +-
 .../test/Bubble/transformProps.test.ts             |     2 +-
 .../test/Funnel/transformProps.test.ts             |     2 +-
 .../test/Gantt/transformProps.test.ts              |    67 +-
 .../test/Gauge/transformProps.test.ts              |     2 +-
 .../test/Graph/buildQuery.test.ts                  |     2 +
 .../test/Graph/transformProps.test.ts              |     2 +-
 .../test/Heatmap/transformProps.test.ts            |     2 +-
 .../test/MixedTimeseries/transformProps.test.ts    |   338 +-
 .../test/Pie/transformProps.test.ts                |    48 +-
 .../test/Radar/transformProps.test.ts              |     2 +-
 .../test/Timeseries/Area/controlPanel.test.ts      |   115 +
 .../test/Timeseries/Bar/controlPanel.test.ts       |   414 +-
 .../test/Timeseries/Bar/transformProps.test.ts     |   651 +-
 .../test/Timeseries/Line/controlPanel.test.ts      |   115 +
 .../test/Timeseries/Scatter/controlPanel.test.ts   |    54 +-
 .../test/Timeseries/Scatter/transformProps.test.ts |    12 +-
 .../Timeseries/SmoothLine/controlPanel.test.ts     |   101 +
 .../test/Timeseries/Step/controlPanel.test.ts      |   115 +
 .../test/Timeseries/transformProps.test.ts         |   933 +-
 .../test/Timeseries/transformers.test.ts           |   100 +-
 .../test/Tree/buildQuery.test.ts                   |    33 +-
 .../test/Tree/transformProps.test.ts               |     2 +-
 .../test/Treemap/transformProps.test.ts            |     2 +-
 .../test/Waterfall/transformProps.test.ts          |     2 +-
 .../plugins/plugin-chart-echarts/test/helpers.ts   |   110 +
 .../test/utils/formatters.test.ts                  |   174 +-
 .../plugin-chart-echarts/test/utils/series.test.ts |   318 +-
 .../test/utils/transformers.test.ts                |   251 +-
 .../plugins/plugin-chart-echarts/tsconfig.json     |     3 +-
 .../plugins/plugin-chart-handlebars/package.json   |     7 +-
 .../plugin-chart-handlebars/src/Handlebars.tsx     |     2 +-
 .../src/components/Handlebars/HandlebarsViewer.tsx |     6 +-
 .../src/plugin/controlPanel.tsx                    |     2 +-
 .../src/plugin/controls/columns.tsx                |     2 +-
 .../src/plugin/controls/handlebarTemplate.tsx      |     4 +-
 .../src/plugin/controls/includeTime.ts             |     2 +-
 .../src/plugin/controls/metrics.tsx                |     2 +-
 .../src/plugin/controls/orderBy.tsx                |     2 +-
 .../src/plugin/controls/queryMode.tsx              |     2 +-
 .../src/plugin/controls/shared.ts                  |     2 +-
 .../src/plugin/controls/style.tsx                  |     4 +-
 .../plugin-chart-handlebars/src/plugin/index.ts    |     2 +-
 .../src/stories/Handlebars.stories.tsx             |   268 +
 .../plugin-chart-handlebars/src/stories/data.ts    |   129 +
 .../test/plugin/transformProps.test.ts             |     2 +-
 .../plugins/plugin-chart-handlebars/tsconfig.json  |     3 +-
 .../plugins/plugin-chart-pivot-table/package.json  |     6 +-
 .../src/PivotTableChart.tsx                        |    10 +-
 .../src/plugin/controlPanel.tsx                    |    16 +-
 .../plugin-chart-pivot-table/src/plugin/index.ts   |     2 +-
 .../src/plugin/transformProps.ts                   |     2 +-
 .../src/react-pivottable/Styles.ts                 |     2 +-
 .../src/react-pivottable/TableRenderers.tsx        |   144 +-
 .../src/react-pivottable/utilities.ts              |     6 +-
 .../src/stories/PivotTable.stories.tsx             |   119 +
 .../src/stories}/testData.ts                       |     0
 .../test/plugin/transformProps.test.ts             |   491 +-
 .../test/react-pivottable/tableRenders.test.tsx    |   601 +-
 .../plugins/plugin-chart-table/package.json        |     6 +-
 .../plugin-chart-table/src/DataTable/DataTable.tsx |     4 +-
 .../src/DataTable/components/GlobalFilter.tsx      |     5 +-
 .../src/DataTable/components/Pagination.tsx        |    10 +-
 .../DataTable/components/SearchSelectDropdown.tsx  |     2 +-
 .../src/DataTable/components/SelectPageSize.tsx    |     4 +-
 .../src/DataTable/hooks/useSticky.tsx              |     2 +-
 .../plugins/plugin-chart-table/src/Styles.tsx      |     2 +-
 .../plugins/plugin-chart-table/src/TableChart.tsx  |   106 +-
 .../plugins/plugin-chart-table/src/buildQuery.ts   |     2 +-
 .../plugins/plugin-chart-table/src/consts.ts       |     2 +-
 .../plugin-chart-table/src/controlPanel.tsx        |    89 +-
 .../plugins/plugin-chart-table/src/index.ts        |     2 +-
 .../src/stories}/Table.stories.tsx                 |    43 +-
 .../plugin-chart-table/src/stories/birthNames.json |    25 +
 .../plugin-chart-table/src/stories}/testData.ts    |     2 +-
 .../plugin-chart-table/src/transformProps.ts       |   216 +-
 .../plugin-chart-table/src/utils/formatValue.ts    |     2 +-
 .../plugin-chart-table/test/TableChart.test.tsx    |   300 +-
 .../test/controlPanel.test.ts                      |     0
 .../plugin-chart-table/test/controlPanel.test.tsx  |     2 +-
 .../plugins/plugin-chart-table/test/testData.ts    |     4 +-
 .../plugin-chart-table/test/testHelpers.tsx        |     2 +-
 .../test/utils/formatValue.test.ts                 |     2 +-
 .../plugins/plugin-chart-table/tsconfig.json       |     3 +-
 .../plugins/plugin-chart-word-cloud/package.json   |     4 +-
 .../src/chart/WordCloud.tsx                        |     2 +-
 .../src/plugin/buildQuery.ts                       |    17 +-
 .../src/plugin/controlPanel.tsx                    |     2 +-
 .../ColorSchemeControl/ColorSchemeLabel.tsx        |     2 +-
 .../plugin/controls/ColorSchemeControl/index.tsx   |     4 +-
 .../src/plugin/controls/RotationControl.tsx        |     2 +-
 .../plugin-chart-word-cloud/src/plugin/index.ts    |     2 +-
 .../src/stories/WordCloud.stories.tsx              |    90 +
 .../plugin-chart-word-cloud/src/stories}/data.ts   |     0
 .../plugins/plugin-chart-word-cloud/tsconfig.json  |     3 +-
 superset-frontend/scripts/check-custom-rules.js    |   372 +-
 .../scripts/check-storybook-coverage.js            |   221 +
 .../scripts/eslint-metrics-uploader.js             |   144 -
 .../scripts/oxlint-metrics-uploader.js             |     7 +-
 superset-frontend/spec/fixtures/mockStore.js       |    11 +
 superset-frontend/spec/helpers/ProviderWrapper.tsx |     2 +-
 .../spec/helpers/extensionTestHelpers.ts           |    70 +
 superset-frontend/spec/helpers/shim.tsx            |     2 +-
 superset-frontend/spec/helpers/testing-library.tsx |     7 +-
 .../src/SqlLab/SqlLabGlobalStyles.tsx              |     2 +-
 .../src/SqlLab/actions/sqlLab.test.ts              |    39 +
 superset-frontend/src/SqlLab/actions/sqlLab.ts     |     7 +-
 .../src/SqlLab/components/App/index.tsx            |    12 +-
 .../SqlLab/components/AppLayout/AppLayout.test.tsx |    92 +-
 .../src/SqlLab/components/AppLayout/index.tsx      |    15 +-
 .../src/SqlLab/components/ColumnElement/index.tsx  |     4 +-
 .../EditorAutoSync/EditorAutoSync.test.tsx         |     6 +-
 .../src/SqlLab/components/EditorAutoSync/index.tsx |     2 +-
 .../src/SqlLab/components/EditorWrapper/index.tsx  |     2 +-
 .../components/EditorWrapper/useAnnotations.ts     |     2 +-
 .../components/EditorWrapper/useKeywords.test.ts   |     4 +-
 .../SqlLab/components/EditorWrapper/useKeywords.ts |     4 +-
 .../components/EstimateQueryCostButton/index.tsx   |     5 +-
 .../components/ExploreCtasResultsButton/index.tsx  |     2 +-
 .../components/ExploreResultsButton/index.tsx      |     2 +-
 .../src/SqlLab/components/HighlightedSql/index.tsx |     2 +-
 .../components/KeyboardShortcutButton/index.tsx    |     4 +-
 .../components/QueryHistory/QueryHistory.test.tsx  |    52 +-
 .../src/SqlLab/components/QueryHistory/index.tsx   |     8 +-
 .../SqlLab/components/QueryLimitSelect/index.tsx   |     2 +-
 .../SqlLab/components/QueryStateLabel/index.tsx    |     2 +-
 .../src/SqlLab/components/QueryStatusBar/index.tsx |     3 +-
 .../src/SqlLab/components/QueryTable/index.tsx     |     4 +-
 .../src/SqlLab/components/QueryTable/styles.ts     |     2 +-
 .../SqlLab/components/ResultSet/ResultSet.test.tsx |    37 +
 .../src/SqlLab/components/ResultSet/index.tsx      |    15 +-
 .../components/RunQueryActionButton/index.tsx      |     4 +-
 .../components/SaveDatasetActionButton/index.tsx   |     2 +-
 .../SqlLab/components/SaveDatasetModal/index.tsx   |     4 +-
 .../src/SqlLab/components/SaveQuery/index.tsx      |     4 +-
 .../components/ScheduleQueryButton/index.tsx       |     4 +-
 .../SqlLab/components/ShareSqlLabQuery/index.tsx   |     4 +-
 .../src/SqlLab/components/SouthPane/Results.tsx    |     5 +-
 .../SqlLab/components/SouthPane/SouthPane.test.tsx |    74 +-
 .../src/SqlLab/components/SouthPane/index.tsx      |    30 +-
 .../src/SqlLab/components/SqlEditor/index.tsx      |     5 +-
 .../SqlEditorLeftBar/SqlEditorLeftBar.test.tsx     |    15 +
 .../SqlLab/components/SqlEditorLeftBar/index.tsx   |    10 +-
 .../SqlLab/components/SqlEditorTabHeader/index.tsx |    11 +-
 .../SqlEditorTopBar/SqlEditorTopBar.test.tsx       |    68 +-
 .../SqlLab/components/SqlEditorTopBar/index.tsx    |     6 +-
 .../SqlLab/components/StatusBar/StatusBar.test.tsx |    88 +-
 .../src/SqlLab/components/StatusBar/index.tsx      |    15 +-
 .../SqlLab/components/TabbedSqlEditors/index.tsx   |     4 +-
 .../src/SqlLab/components/TableElement/index.tsx   |     4 +-
 .../TableExploreTree/TableExploreTree.test.tsx     |   107 +
 .../TableExploreTree/TreeNodeRenderer.tsx          |     3 +-
 .../SqlLab/components/TableExploreTree/index.tsx   |    62 +-
 .../components/TableExploreTree/useTreeData.ts     |     2 +-
 .../src/SqlLab/components/TablePreview/index.tsx   |    13 +-
 .../components/TemplateParamsEditor/index.tsx      |     4 +-
 superset-frontend/src/SqlLab/constants.ts          |     4 +-
 superset-frontend/src/SqlLab/contributions.ts      |    41 +-
 superset-frontend/src/SqlLab/fixtures.ts           |     4 +-
 .../src/SqlLab/hooks/useQueryEditor/index.ts       |     3 +
 .../src/SqlLab/reducers/getInitialState.ts         |     5 +-
 .../src/SqlLab/reducers/sqlLab.test.ts             |     3 +
 superset-frontend/src/SqlLab/reducers/sqlLab.ts    |     7 +-
 .../src/SqlLab/utils/emptyQueryResults.test.ts     |     6 +-
 .../src/SqlLab/utils/newQueryTabName.ts            |     2 +-
 .../DeckglLayerVisibilityCustomizationPlugin.tsx   |     4 +-
 .../components/DeckglLayerVisibility/index.ts      |     3 +-
 .../DynamicGroupBy/DynamicGroupByPlugin.tsx        |     2 +-
 .../components/DynamicGroupBy/controlPanel.ts      |     2 +-
 .../components/DynamicGroupBy/index.ts             |     2 +-
 .../TimeColumn/TimeColumnFilterPlugin.tsx          |     4 +-
 .../components/TimeColumn/controlPanel.ts          |     2 +-
 .../components/TimeColumn/index.ts                 |     2 +-
 .../components/TimeGrain/TimeGrainFilterPlugin.tsx |     2 +-
 .../components/TimeGrain/controlPanel.ts           |     2 +-
 .../components/TimeGrain/index.ts                  |     2 +-
 .../src/chartCustomizations/components/common.ts   |     2 +-
 .../src/components/AlteredSliceTag/index.tsx       |     2 +-
 .../src/components/AlteredSliceTag/utils/index.ts  |     2 +-
 .../components/AlteredSliceTag/utils/utils.test.ts |    27 +
 .../src/components/AuditInfo/index.tsx             |     2 +-
 .../src/components/Chart/Chart.test.tsx            |    88 +
 superset-frontend/src/components/Chart/Chart.tsx   |    29 +-
 .../Chart/ChartContextMenu/ChartContextMenu.tsx    |    11 +-
 .../components/Chart/ChartErrorMessage.test.tsx    |    13 +
 .../src/components/Chart/ChartErrorMessage.tsx     |     1 +
 .../src/components/Chart/ChartRenderer.test.tsx    |    99 +-
 .../src/components/Chart/ChartRenderer.tsx         |    29 +-
 .../components/Chart/DisabledMenuItemTooltip.tsx   |     2 +-
 .../src/components/Chart/DrillBy/DrillByChart.tsx  |     2 +-
 .../src/components/Chart/DrillBy/DrillByModal.tsx  |     5 +-
 .../Chart/DrillBy/DrillBySubmenu.test.tsx          |     8 +-
 .../components/Chart/DrillBy/DrillBySubmenu.tsx    |    11 +-
 .../Chart/DrillBy/useDisplayModeToggle.tsx         |     4 +-
 .../Chart/DrillBy/useResultsTableView.test.ts      |    48 +
 .../Chart/DrillBy/useResultsTableView.tsx          |     6 +-
 .../Chart/DrillDetail/DrillDetailModal.tsx         |     4 +-
 .../Chart/DrillDetail/DrillDetailPane.tsx          |     6 +-
 .../Chart/DrillDetail/DrillDetailTableControls.tsx |     4 +-
 .../src/components/Chart/DrillDetail/types.ts      |     2 +-
 .../components/Chart/MenuItemWithTruncation.tsx    |     2 +-
 .../src/components/Chart/chartAction.ts            |    26 +-
 .../src/components/Chart/chartReducer.ts           |    10 +-
 .../src/components/Chart/chartReducers.test.ts     |    27 +
 .../Chart/useDrillDetailMenuItems/index.tsx        |     4 +-
 .../src/components/CopyToClipboard/index.tsx       |     4 +-
 .../src/components/CrudThemeProvider.test.tsx      |   326 +
 .../src/components/CrudThemeProvider.tsx           |    94 +-
 .../src/components/DatabaseSelector/index.tsx      |     8 +-
 .../src/components/DatabaseSelector/styles.ts      |     2 +-
 .../Datasource/ChangeDatasourceModal/index.tsx     |     5 +-
 .../Datasource/DatasourceModal/index.tsx           |    39 +-
 .../FoldersEditor/FoldersEditor.test.tsx           |   336 +
 .../Datasource/FoldersEditor/TreeItem.styles.ts    |    19 +-
 .../Datasource/FoldersEditor/TreeItem.tsx          |    10 +-
 .../FoldersEditor/VirtualizedTreeItem.tsx          |     8 +
 .../FoldersEditor/VirtualizedTreeList.tsx          |     4 +
 .../components/DragOverlayContent.test.tsx         |   124 +
 .../components/DragOverlayContent.tsx              |    66 +-
 .../components/FoldersToolbarComponent.tsx         |   118 +-
 .../FoldersEditor/components/ResetConfirmModal.tsx |     2 +-
 .../Datasource/FoldersEditor/constants.ts          |     6 +
 .../FoldersEditor/folderOperations.test.ts         |   143 +
 .../Datasource/FoldersEditor/folderOperations.ts   |    67 +-
 .../Datasource/FoldersEditor/folderValidation.ts   |     2 +-
 .../hooks/useContainingBlockModifier.ts            |    78 +
 .../FoldersEditor/hooks/useDragHandlers.test.ts    |   164 +
 .../FoldersEditor/hooks/useDragHandlers.ts         |   270 +-
 .../FoldersEditor/hooks/useItemHeights.ts          |     9 +-
 .../components/Datasource/FoldersEditor/index.tsx  |   281 +-
 .../Datasource/FoldersEditor/sensors.test.ts       |   120 +
 .../components/Datasource/FoldersEditor/sensors.ts |    58 +-
 .../components/Datasource/FoldersEditor/styles.tsx |    69 +-
 .../Datasource/FoldersEditor/treeUtils.test.ts     |   143 +
 .../Datasource/FoldersEditor/treeUtils.ts          |    65 +
 .../components/CollectionTable/index.tsx           |    61 +-
 .../DatasourceEditor/DatasourceEditor.tsx          |   543 +-
 .../components/DashboardLinksExternal/index.tsx    |     2 +-
 .../DatasetUsageTab/DatasetUsageTab.test.tsx       |   143 +
 .../components/DatasetUsageTab/index.tsx           |    75 +-
 .../tests/DatasourceEditor.test.tsx                |   245 +
 .../tests/DatasourceEditorCurrency.test.tsx        |     2 +-
 .../Datasource/components/Field/index.tsx          |     2 +-
 .../Datasource/components/Fieldset/index.tsx       |     2 +-
 .../src/components/Datasource/types.ts             |    11 +
 .../src/components/Datasource/utils/index.ts       |     2 +-
 .../src/components/Datasource/utils/utils.test.tsx |     2 +-
 .../src/components/DynamicPlugins/index.tsx        |     2 +-
 .../src/components/ErrorBoundary/index.tsx         |     2 +-
 .../ErrorMessage/BasicErrorAlert.test.tsx          |     2 +-
 .../components/ErrorMessage/BasicErrorAlert.tsx    |     6 +-
 .../ErrorMessage/DatabaseErrorMessage.tsx          |     6 +-
 .../ErrorMessage/DatasetNotFoundErrorMessage.tsx   |     4 +-
 .../src/components/ErrorMessage/ErrorAlert.tsx     |     5 +-
 .../ErrorMessageWithStackTrace.test.tsx            |    12 +
 .../ErrorMessage/ErrorMessageWithStackTrace.tsx    |     6 +-
 .../ErrorMessage/FrontendNetworkErrorMessage.tsx   |     4 +-
 .../ErrorMessage/InvalidSQLErrorMessage.tsx        |     4 +-
 .../src/components/ErrorMessage/IssueCode.tsx      |     5 +-
 .../ErrorMessage/MarshmallowErrorMessage.tsx       |     2 +-
 .../ErrorMessage/OAuth2RedirectMessage.tsx         |    17 +-
 .../ErrorMessage/ParameterErrorMessage.tsx         |     6 +-
 .../ErrorMessage/TimeoutErrorMessage.tsx           |     6 +-
 .../src/components/ErrorMessage/types.ts           |     1 +
 .../src/components/FacePile/FacePile.stories.tsx   |     2 +-
 .../src/components/FacePile/FacePile.test.tsx      |     2 +-
 .../src/components/FacePile/utils.tsx              |     4 +-
 .../FilterableTable/FilterableTable.test.tsx       |    46 +
 .../src/components/FilterableTable/index.tsx       |    20 +-
 .../src/components/FilterableTable/utils.tsx       |     3 +-
 .../src/components/GridTable/Header.tsx            |     9 +-
 .../src/components/GridTable/HeaderMenu.tsx        |     4 +-
 .../src/components/GridTable/index.tsx             |     2 +-
 .../src/components/ImportModal/ErrorAlert.tsx      |     5 +-
 .../components/ImportModal/ImportErrorAlert.tsx    |     2 +-
 .../components/ImportModal/ImportModal.test.tsx    |    44 +
 .../src/components/ImportModal/index.tsx           |    55 +-
 .../src/components/ImportModal/styles.ts           |     2 +-
 .../src/components/ImportModal/types.ts            |     9 +-
 .../src/components/JsonModal/index.tsx             |    31 +-
 .../src/components/JsonModal/types.ts              |     1 +
 .../src/components/LastQueriedLabel/index.tsx      |     4 +-
 .../src/components/ListView/ActionsBar.tsx         |     2 +-
 .../src/components/ListView/CardCollection.tsx     |     8 +-
 .../src/components/ListView/CardSortSelect.tsx     |     4 +-
 .../src/components/ListView/CrossLinks.tsx         |     2 +-
 .../src/components/ListView/CrossLinksTooltip.tsx  |     4 +-
 .../src/components/ListView/Filters/Base.ts        |     2 +-
 .../src/components/ListView/Filters/DateRange.tsx  |     2 +-
 .../components/ListView/Filters/NumericalRange.tsx |     4 +-
 .../src/components/ListView/Filters/Search.tsx     |     4 +-
 .../src/components/ListView/Filters/Select.tsx     |    15 +-
 .../src/components/ListView/Filters/index.tsx      |     4 +-
 .../src/components/ListView/ListView.tsx           |     5 +-
 superset-frontend/src/components/ListView/types.ts |     8 +-
 superset-frontend/src/components/ListView/utils.ts |     5 +-
 .../src/components/MessageToasts/Toast.tsx         |    10 +-
 .../components/MessageToasts/ToastPresenter.tsx    |     2 +-
 .../src/components/MessageToasts/reducers.ts       |     2 +-
 .../components/Modal/CollapsibleModalSection.tsx   |     2 +-
 .../src/components/Modal/ModalFormField.tsx        |     2 +-
 .../src/components/Modal/StandardModal.tsx         |     7 +-
 .../src/components/Modal/useModalValidation.tsx    |     4 +-
 .../src/components/ModalTitleWithIcon/index.tsx    |     2 +-
 .../PanelToolbar/PanelToolbar.test.tsx}            |    44 +-
 .../src/components/PanelToolbar/index.tsx          |    42 +-
 .../src/components/ResizableSidebar/index.tsx      |     2 +-
 .../src/components/RowCountLabel/index.tsx         |     4 +-
 .../components/SQLEditorWithValidation/index.tsx   |     4 +-
 .../StreamingExportModal/StreamingExportModal.tsx  |     4 +-
 .../src/components/TableSelector/index.tsx         |     4 +-
 superset-frontend/src/components/Tag/index.tsx     |     2 +-
 superset-frontend/src/components/Tag/utils.tsx     |     2 +-
 .../src/components/TagsList/index.tsx              |     2 +-
 .../ViewListExtension/ViewListExtension.test.tsx   |   217 +-
 .../src/components/ViewListExtension/index.tsx     |    24 +-
 superset-frontend/src/core/commands/index.ts       |    44 +-
 .../src/core/editors/AceEditorProvider.test.tsx    |     2 +-
 .../src/core/editors/AceEditorProvider.tsx         |    50 +-
 superset-frontend/src/core/editors/EditorHost.tsx  |    10 +-
 .../src/core/editors/EditorProviders.test.ts       |    88 +-
 .../src/core/editors/EditorProviders.ts            |    37 +-
 superset-frontend/src/core/editors/index.ts        |    59 +-
 superset-frontend/src/core/extensions/index.ts     |     6 +-
 superset-frontend/src/core/index.ts                |    16 +-
 superset-frontend/src/core/menus/index.test.ts     |   124 +
 superset-frontend/src/core/menus/index.ts          |    83 +
 superset-frontend/src/core/models.ts               |     6 +-
 superset-frontend/src/core/sqlLab/index.ts         |     7 +
 superset-frontend/src/core/sqlLab/models.ts        |     5 +-
 superset-frontend/src/core/sqlLab/sqlLab.test.ts   |   585 +
 superset-frontend/src/core/utils.ts                |     2 +-
 superset-frontend/src/core/views/index.test.ts     |   112 +
 superset-frontend/src/core/views/index.ts          |    83 +
 .../src/dashboard/actions/autoRefresh.ts           |   124 +
 .../dashboard/actions/chartCustomizationActions.ts |     2 +-
 .../src/dashboard/actions/dashboardInfo.ts         |     2 +-
 .../src/dashboard/actions/dashboardLayout.ts       |     2 +-
 .../src/dashboard/actions/dashboardState.test.ts   |   164 +
 .../src/dashboard/actions/dashboardState.ts        |    67 +-
 superset-frontend/src/dashboard/actions/hydrate.ts |    10 +-
 .../src/dashboard/actions/sliceEntities.ts         |     2 +-
 .../components/AddSliceCard/AddSliceCard.tsx       |     4 +-
 .../src/dashboard/components/AnchorLink/index.tsx  |     2 +-
 .../components/AutoRefreshIndicator/index.tsx      |   170 +
 .../AutoRefreshStatus/StatusIndicatorDot.test.tsx  |   114 +
 .../AutoRefreshStatus/StatusIndicatorDot.tsx       |   168 +
 .../StatusTooltipContent.test.tsx                  |   180 +
 .../AutoRefreshStatus/StatusTooltipContent.tsx     |   178 +
 .../components/BuilderComponentPane/index.tsx      |     4 +-
 .../components/ColorSchemeControlWrapper.tsx       |     2 +-
 .../src/dashboard/components/ColorSchemeSelect.tsx |     4 +-
 .../components/CustomizationsBadge/index.tsx       |     4 +-
 .../src/dashboard/components/Dashboard.tsx         |     2 +-
 .../DashboardBuilder/DashboardBuilder.tsx          |    79 +-
 .../DashboardBuilder/DashboardWrapper.tsx          |     2 +-
 .../src/dashboard/components/DashboardGrid.tsx     |     3 +-
 .../dashboard/components/EmbeddedModal/index.tsx   |     7 +-
 .../components/FiltersBadge/DetailsPanel/index.tsx |     4 +-
 .../FiltersBadge/FilterIndicator/index.tsx         |     2 +-
 .../components/FiltersBadge/FiltersBadge.test.tsx  |   253 +-
 .../dashboard/components/FiltersBadge/Styles.tsx   |     2 +-
 .../dashboard/components/FiltersBadge/index.tsx    |    31 +-
 .../dashboard/components/Header/Header.test.tsx    |   128 +-
 .../src/dashboard/components/Header/index.tsx      |   389 +-
 .../src/dashboard/components/Header/types.ts       |    26 +-
 .../components/Header/useDashboardMetadataBar.tsx  |     2 +-
 .../Header/useHeaderActionsDropdownMenu.tsx        |    15 +-
 .../components/Header/useHeaderAutoRefresh.ts      |   410 +
 .../src/dashboard/components/IconButton.tsx        |     2 +-
 .../src/dashboard/components/MissingChart.tsx      |     2 +-
 .../OverwriteConfirm/OverwriteConfirmModal.tsx     |     4 +-
 .../PropertiesModal/PropertiesModal.test.tsx       |    72 +-
 .../PropertiesModal/hooks/useAccessOptions.ts      |    32 +-
 .../dashboard/components/PropertiesModal/index.tsx |   100 +-
 .../PropertiesModal/sections/AccessSection.tsx     |    24 +-
 .../PropertiesModal/sections/AdvancedSection.tsx   |     6 +-
 .../PropertiesModal/sections/BasicInfoSection.tsx  |     2 +-
 .../sections/CertificationSection.tsx              |     2 +-
 .../PropertiesModal/sections/RefreshSection.tsx    |     4 +-
 .../PropertiesModal/sections/StylingSection.tsx    |     6 +-
 .../dashboard/components/PublishedStatus/index.tsx |     2 +-
 .../dashboard/components/RefreshButton/index.tsx   |    82 +
 .../RefreshFrequencySelect.test.tsx}               |    40 +-
 .../RefreshFrequency/RefreshFrequencySelect.tsx    |    71 +-
 .../dashboard/components/RefreshIntervalModal.tsx  |    83 +-
 .../src/dashboard/components/SaveModal.tsx         |     4 +-
 .../src/dashboard/components/SliceAdder.tsx        |     4 +-
 .../src/dashboard/components/SliceHeader/index.tsx |    15 +-
 .../ViewResultsModalTrigger.tsx                    |     4 +-
 .../components/SliceHeaderControls/index.tsx       |     6 +-
 .../components/URLShortLinkButton/index.tsx        |     6 +-
 .../src/dashboard/components/dnd/DragDroppable.tsx |    11 +-
 .../src/dashboard/components/dnd/DragHandle.tsx    |     2 +-
 .../components/filterscope/FilterScope.test.tsx    |     2 +-
 .../components/filterscope/FilterScopeModal.tsx    |     2 +-
 .../components/filterscope/FilterScopeSelector.tsx |     3 +-
 .../filterscope/renderFilterScopeTreeNodes.tsx     |     2 +-
 .../dashboard/components/filterscope/treeIcons.tsx |     2 +-
 .../components/gridComponents/Chart/Chart.test.tsx |    55 +
 .../components/gridComponents/Chart/Chart.tsx      |    11 +-
 .../gridComponents/ChartHolder/ChartHolder.tsx     |     2 +-
 .../gridComponents/Column/Column.test.tsx          |    10 +
 .../components/gridComponents/Column/Column.tsx    |    11 +-
 .../components/gridComponents/Divider/Divider.tsx  |     2 +-
 .../DynamicComponent/DynamicComponent.tsx          |     2 +-
 .../components/gridComponents/Header/Header.tsx    |     2 +-
 .../gridComponents/Markdown/Markdown.test.tsx      |    34 +-
 .../gridComponents/Markdown/Markdown.tsx           |     3 +-
 .../components/gridComponents/Row/Row.test.tsx     |     2 +-
 .../components/gridComponents/Row/Row.tsx          |    29 +-
 .../components/gridComponents/Tab/Tab.test.tsx     |    40 +
 .../components/gridComponents/Tab/Tab.tsx          |    22 +-
 .../components/gridComponents/Tabs/Tabs.tsx        |     3 +-
 .../gridComponents/TabsRenderer/TabsRenderer.tsx   |     2 +-
 .../gridComponents/new/DraggableNewComponent.tsx   |     2 +-
 .../components/gridComponents/new/NewColumn.tsx    |     2 +-
 .../components/gridComponents/new/NewDivider.tsx   |     2 +-
 .../components/gridComponents/new/NewHeader.tsx    |     2 +-
 .../components/gridComponents/new/NewMarkdown.tsx  |     2 +-
 .../components/gridComponents/new/NewRow.tsx       |     2 +-
 .../components/gridComponents/new/NewTabs.tsx      |     2 +-
 .../components/menu/BackgroundStyleDropdown.tsx    |     4 +-
 .../components/menu/DownloadMenuItems/index.tsx    |     3 +-
 .../src/dashboard/components/menu/HoverMenu.tsx    |     2 +-
 .../components/menu/MarkdownModeDropdown.tsx       |     2 +-
 .../components/menu/ShareMenuItems/index.tsx       |     3 +-
 .../dashboard/components/menu/WithPopoverMenu.tsx  |    17 +-
 .../nativeFilters/ConfigModal/ModalFooter.tsx      |     5 +-
 .../nativeFilters/ConfigModal/SharedStyles.tsx     |    21 +-
 .../FilterBar/ActionButtons/index.tsx              |   128 +-
 .../FilterBar/CrossFilters/CrossFilter.tsx         |     2 +-
 .../FilterBar/CrossFilters/CrossFilterTag.tsx      |     2 +-
 .../FilterBar/CrossFilters/CrossFilterTitle.tsx    |     4 +-
 .../ScopingModal/ChartsScopingListPanel.tsx        |     4 +-
 .../CrossFilters/ScopingModal/ScopingModal.tsx     |     2 +-
 .../ScopingModal/ScopingModalContent.tsx           |     2 +-
 .../CrossFilters/ScopingModal/ScopingTreePanel.tsx |     5 +-
 .../FilterBar/CrossFilters/VerticalCollapse.tsx    |     4 +-
 .../nativeFilters/FilterBar/CrossFilters/styles.ts |     2 +-
 .../CustomizationsOutOfScopeCollapsible/index.tsx  |     4 +-
 .../nativeFilters/FilterBar/FilterBar.test.tsx     |   992 +-
 .../FilterBarSettings/FilterBarSettings.test.tsx   |    20 +-
 .../FilterBar/FilterBarSettings/index.tsx          |     8 +-
 .../FilterControls/FilterControlShared.tsx         |     2 +-
 .../FilterBar/FilterControls/FilterControls.tsx    |    29 +-
 .../FilterControls/FilterDivider.stories.tsx       |     2 +-
 .../FilterBar/FilterControls/FilterDivider.tsx     |     2 +-
 .../FilterBar/FilterControls/FilterValue.tsx       |     4 +-
 .../FilterBar/FilterControls/GroupByFilterCard.tsx |     9 +-
 .../FilterBar/FiltersDropdownContent/index.tsx     |     2 +-
 .../FiltersOutOfScopeCollapsible/index.tsx         |     4 +-
 .../nativeFilters/FilterBar/Header/index.tsx       |    10 +-
 .../nativeFilters/FilterBar/Horizontal.tsx         |     4 +-
 .../nativeFilters/FilterBar/Vertical.tsx           |     5 +-
 .../components/nativeFilters/FilterBar/index.tsx   |   114 +-
 .../nativeFilters/FilterBar/keyValue.tsx           |     2 +-
 .../components/nativeFilters/FilterBar/state.ts    |    14 +-
 .../nativeFilters/FilterBar/utils.test.ts          |  1145 +-
 .../components/nativeFilters/FilterBar/utils.ts    |   137 +-
 .../nativeFilters/FilterCard/DependenciesRow.tsx   |     4 +-
 .../nativeFilters/FilterCard/NameRow.tsx           |     2 +-
 .../nativeFilters/FilterCard/ScopeRow.tsx          |     4 +-
 .../components/nativeFilters/FilterCard/Styles.ts  |     2 +-
 .../nativeFilters/FilterCard/TypeRow.tsx           |     2 +-
 .../nativeFilters/FilterCard/useFilterScope.ts     |     2 +-
 .../ConfigModalContent/ConfigModalContent.tsx      |     2 +-
 .../ConfigModalSidebar/ConfigModalSidebar.tsx      |   247 +-
 .../FiltersConfigModal/DividerConfigForm.tsx       |     4 +-
 .../FiltersConfigModal/DraggableFilter.test.tsx    |   109 +-
 .../FiltersConfigModal/DraggableFilter.tsx         |   123 +-
 .../FiltersConfigModal/FilterConfigPane.test.tsx   |    38 +-
 .../FiltersConfigModal/FilterConfigurePane.tsx     |     2 +-
 .../FiltersConfigModal/FilterTitleContainer.tsx    |   109 +-
 .../FiltersConfigModal/FilterTitlePane.tsx         |     4 +-
 .../FiltersConfigForm/CollapsibleControl.tsx       |     2 +-
 .../FiltersConfigForm/ColumnSelect.tsx             |     2 +-
 .../FiltersConfigForm/DatasetSelect.tsx            |     2 +-
 .../FiltersConfigForm/DefaultValue.tsx             |     2 +-
 .../FiltersConfigForm/DependencyList.tsx           |     4 +-
 .../FiltersConfigForm/FilterScope/FilterScope.tsx  |     2 +-
 .../FiltersConfigForm/FilterScope/ScopingTree.tsx  |     2 +-
 .../FiltersConfigForm/FilterScope/state.ts         |     2 +-
 .../FiltersConfigForm/FilterScope/utils.ts         |     4 +-
 .../FiltersConfigForm/FiltersConfigForm.tsx        |   128 +-
 .../FiltersConfigForm/RemovedFilter.tsx            |     4 +-
 .../FiltersConfigForm/constants.ts                 |     2 +-
 .../FiltersConfigForm/getControlItemsMap.tsx       |     7 +-
 .../FiltersConfigModal/FiltersConfigForm/state.ts  |     2 +-
 .../FiltersConfigForm/utils.test.ts                |     2 +-
 .../FiltersConfigModal/FiltersConfigForm/utils.ts  |     2 +-
 .../FiltersConfigModal/FiltersConfigModal.test.tsx |   177 +-
 .../FiltersConfigModal/FiltersConfigModal.tsx      |    25 +-
 .../Footer/CancelConfirmationAlert.tsx             |     4 +-
 .../FiltersConfigModal/Footer/Footer.tsx           |     2 +-
 .../FiltersConfigModal/ItemTitleContainer.tsx      |    72 +-
 .../FiltersConfigModal/ItemTitlePane.tsx           |     2 +-
 .../FiltersConfigModal/NewItemDropdown.tsx         |     4 +-
 .../hooks/useFilterOperations.ts                   |     2 +-
 .../FiltersConfigModal/hooks/useModalSaveLogic.ts  |     2 +-
 .../nativeFilters/FiltersConfigModal/utils.ts      |     9 +-
 .../components/nativeFilters/selectors.test.ts     |   425 +-
 .../components/nativeFilters/selectors.ts          |    60 +-
 .../dashboard/components/nativeFilters/state.ts    |    53 +-
 .../dashboard/components/nativeFilters/utils.ts    |     2 +-
 .../components/resizable/ResizableContainer.tsx    |     2 +-
 .../dashboard/containers/DashboardPage.test.tsx    |   256 +
 .../src/dashboard/containers/DashboardPage.tsx     |    27 +-
 .../dashboard/contexts/AutoRefreshContext.test.tsx |   137 +
 .../src/dashboard/contexts/AutoRefreshContext.tsx  |   101 +
 .../hooks/useAutoRefreshTabPause.test.tsx          |   378 +
 .../src/dashboard/hooks/useAutoRefreshTabPause.ts  |   146 +
 .../src/dashboard/hooks/useCurrentTime.test.ts     |   182 +
 .../src/dashboard/hooks/useCurrentTime.ts          |    67 +
 .../src/dashboard/hooks/useDownloadScreenshot.ts   |     4 +-
 .../dashboard/hooks/useRealTimeDashboard.test.ts   |   175 +
 .../src/dashboard/hooks/useRealTimeDashboard.ts    |   245 +
 .../src/dashboard/hooks/useTabVisibility.test.ts   |   175 +
 .../src/dashboard/hooks/useTabVisibility.ts        |   102 +
 .../dashboard/reducers/autoRefreshReducer.test.ts  |   246 +
 .../src/dashboard/reducers/dashboardInfo.test.ts   |   156 +
 .../src/dashboard/reducers/dashboardInfo.ts        |    39 +-
 .../src/dashboard/reducers/dashboardLayout.test.ts |   105 +
 .../src/dashboard/reducers/dashboardLayout.ts      |    12 +-
 .../src/dashboard/reducers/dashboardState.ts       |    81 +
 .../src/dashboard/reducers/sliceEntities.ts        |     2 +-
 superset-frontend/src/dashboard/styles.ts          |     2 +-
 superset-frontend/src/dashboard/types.ts           |    22 +-
 .../src/dashboard/types/autoRefresh.ts             |    64 +
 .../src/dashboard/util/backgroundStyleOptions.ts   |     2 +-
 .../src/dashboard/util/getFilterFieldNodesTree.ts  |     2 +-
 .../src/dashboard/util/getFilterScopeNodesTree.ts  |     2 +-
 .../src/dashboard/util/getOverwriteItems.ts        |     2 +-
 .../src/dashboard/util/getSliceHeaderTooltip.tsx   |     2 +-
 .../src/dashboard/util/headerStyleOptions.ts       |     2 +-
 .../src/dashboard/util/isValidChild.test.ts        |     2 +-
 .../util/migrateChartCustomization.test.ts         |   490 +
 .../dashboard/util/migrateChartCustomization.ts    |   155 +
 .../src/dashboard/util/newComponentFactory.ts      |     2 +-
 .../dashboard/util/updateComponentParentsList.ts   |     2 +-
 .../util/useFilterFocusHighlightStyles.ts          |     2 +-
 superset-frontend/src/dataMask/reducer.ts          |    34 +-
 .../src/embedded/EmbeddedContextProviders.tsx      |     3 +-
 superset-frontend/src/embedded/index.tsx           |    21 +-
 superset-frontend/src/embedded/utils.ts            |     2 +-
 .../src/explore/actions/exploreActions.ts          |    15 +-
 .../src/explore/actions/hydrateExplore.ts          |    29 +-
 .../src/explore/actions/saveModalActions.ts        |     2 +-
 .../src/explore/components/ChartPills.tsx          |     8 +-
 .../src/explore/components/Control.tsx             |     2 +-
 .../src/explore/components/ControlHeader.tsx       |     4 +-
 .../components/ControlPanelsContainer.test.tsx     |   124 +-
 .../explore/components/ControlPanelsContainer.tsx  |    16 +-
 .../explore/components/DataTableControl/index.tsx  |     8 +-
 .../DataTableControl/useTableColumns.test.ts       |     2 +-
 .../components/DataTablesPane/DataTablesPane.tsx   |     4 +-
 .../components/DataTableControls.tsx               |     4 +-
 .../components/ResultsPaneOnDashboard.tsx          |     4 +-
 .../DataTablesPane/components/SamplesPane.tsx      |     6 +-
 .../components/SingleQueryResultPane.tsx           |     5 +-
 .../DataTablesPane/components/useResultsPane.tsx   |     4 +-
 .../src/explore/components/DataTablesPane/types.ts |     3 +-
 .../DatasourcePanelDragOption/index.tsx            |     2 +-
 .../DatasourcePanel/DatasourcePanelItem.tsx        |     4 +-
 .../components/DatasourcePanel/fixtures.tsx        |     2 +-
 .../explore/components/DatasourcePanel/index.tsx   |     5 +-
 .../transformDatasourceFolders.test.ts             |    12 +-
 .../DatasourcePanel/transformDatasourceFolders.ts  |    73 +-
 .../src/explore/components/EmbedCodeContent.tsx    |     5 +-
 .../src/explore/components/ExploreAlert.tsx        |     2 +-
 .../ExploreChartHeader/ExploreChartHeader.test.tsx |   145 +-
 .../components/ExploreChartHeader/index.tsx        |    17 +-
 .../ExploreChartHeader/useExploreMetadataBar.tsx   |     4 +-
 .../explore/components/ExploreChartPanel/index.tsx |    77 +-
 .../explore/components/ExploreContainer/index.tsx  |     2 +-
 .../explore/components/ExploreContentPopover.tsx   |     2 +-
 .../ExploreViewContainer.test.tsx                  |    98 +-
 .../components/ExploreViewContainer/index.tsx      |    45 +-
 .../components/ExportToCSVDropdown/index.tsx       |     4 +-
 .../explore/components/PropertiesModal/index.tsx   |    54 +-
 .../explore/components/RunQueryButton/index.tsx    |     4 +-
 .../src/explore/components/SaveModal.test.tsx      |    15 +-
 .../src/explore/components/SaveModal.tsx           |    46 +-
 .../AnnotationLayerControl/AnnotationLayer.tsx     |     8 +-
 .../AnnotationLayerControl/AnnotationTypes.ts      |     2 +-
 .../controls/AnnotationLayerControl/index.tsx      |     6 +-
 .../explore/components/controls/BoundsControl.tsx  |     4 +-
 .../components/controls/CheckboxControl.tsx        |     2 +-
 .../CollectionControl/CollectionControl.test.tsx   |     2 +-
 .../controls/CollectionControl/index.tsx           |     6 +-
 .../ColorBreakpointOption.tsx                      |     2 +-
 .../ColorBreakpointPopoverControl.tsx              |     4 +-
 .../controls/ColorBreakpointsControl/index.tsx     |     4 +-
 .../ColorSchemeControl/ColorSchemeLabel.tsx        |     2 +-
 .../controls/ColorSchemeControl/index.tsx          |     4 +-
 .../ColumnConfigControl/ColumnConfigControl.tsx    |     6 +-
 .../ColumnConfigControl/ColumnConfigItem.tsx       |     2 +-
 .../ColumnConfigControl/ColumnConfigPopover.tsx    |     2 +-
 .../ControlForm/ControlFormItem.tsx                |     2 +-
 .../ColumnConfigControl/ControlForm/index.tsx      |     2 +-
 .../controls/ColumnConfigControl/constants.tsx     |     4 +-
 .../controls/ColumnConfigControl/types.ts          |     2 +-
 .../components/controls/ComparisonRangeLabel.tsx   |     4 +-
 .../ConditionalFormattingControl.tsx               |     9 +-
 .../FormattingPopover.tsx                          |     4 +-
 .../FormattingPopoverContent.test.tsx              |   139 +-
 .../FormattingPopoverContent.tsx                   |   270 +-
 .../ConditionalFormattingControl/constants.ts      |    72 +
 .../controls/ConditionalFormattingControl/types.ts |    27 +-
 .../controls/ContourControl/ContourOption.tsx      |     4 +-
 .../ContourControl/ContourPopoverControl.tsx       |     4 +-
 .../components/controls/ContourControl/index.tsx   |     4 +-
 .../CurrencyControl/CurrencyControl.test.tsx       |    29 +-
 .../controls/CurrencyControl/CurrencyControl.tsx   |    43 +-
 .../components/controls/CustomListItem/index.tsx   |     2 +-
 .../DatasourceControl/DatasourceControl.test.tsx   |   268 +-
 .../controls/DatasourceControl/index.tsx           |     4 +-
 .../controls/DateFilterControl/DateFilterLabel.tsx |     9 +-
 .../DateFilterControl/components/AdvancedFrame.tsx |     2 +-
 .../DateFilterControl/components/CalendarFrame.tsx |     2 +-
 .../DateFilterControl/components/CommonFrame.tsx   |     2 +-
 .../components/CurrentCalendarFrame.tsx            |     2 +-
 .../DateFilterControl/components/CustomFrame.tsx   |     2 +-
 .../components/DateFunctionTooltip.tsx             |     4 +-
 .../DateFilterControl/components/DateLabel.tsx     |     4 +-
 .../controls/DateFilterControl/utils/constants.ts  |     2 +-
 .../ColumnSelectPopover.test.tsx                   |    71 +
 .../DndColumnSelectControl/ColumnSelectPopover.tsx |     9 +-
 .../ColumnSelectPopoverTrigger.tsx                 |    22 +-
 .../DndAdhocFilterOption.tsx                       |     2 +-
 .../DndColumnMetricSelect.tsx                      |     4 +-
 .../DndColumnSelectControl/DndColumnSelect.tsx     |     4 +-
 .../DndColumnSelectPopoverTitle.tsx                |     4 +-
 .../DndFilterSelect.test.tsx                       |     2 +-
 .../DndColumnSelectControl/DndFilterSelect.tsx     |     3 +-
 .../DndColumnSelectControl/DndMetricSelect.tsx     |     6 +-
 .../DndColumnSelectControl/DndSelectLabel.tsx      |     2 +-
 .../controls/DndColumnSelectControl/Option.tsx     |     4 +-
 .../DndColumnSelectControl/OptionWrapper.tsx       |     2 +-
 .../DndColumnSelectControl/useResizeButton.tsx     |     4 +-
 .../DndColumnSelectControl/utils/optionSelector.ts |     2 +-
 .../FilterControl/AdhocFilterControl/index.tsx     |     6 +-
 .../FilterControl/AdhocFilterEditPopover/index.tsx |     8 +-
 .../index.tsx                                      |     4 +-
 .../useAdvancedDataTypes.ts                        |     2 +-
 .../AdhocFilterEditPopoverSqlTabContent.test.tsx   |    84 +-
 .../AdhocFilterEditPopoverSqlTabContent/index.tsx  |    16 +-
 .../utils/useDatePickerInAdhocFilter.tsx           |     2 +-
 .../controls/FixedOrMetricControl/index.tsx        |     2 +-
 .../components/controls/JSEditorControl.test.tsx   |   125 +
 .../components/controls/JSEditorControl.tsx        |   105 +
 .../controls/LayerConfigsControl/FlatLayerTree.tsx |     4 +-
 .../LayerConfigsControl/GeoStylerWrapper.tsx       |     1 +
 .../LayerConfigsControl/LayerConfigsControl.tsx    |     4 +-
 .../LayerConfigsPopoverContent.tsx                 |     4 +-
 .../controls/MapViewControl/ExtentTag.tsx          |     2 +-
 .../controls/MapViewControl/MapViewControl.tsx     |     4 +-
 .../MapViewControl/MapViewPopoverContent.tsx       |     4 +-
 .../controls/MatrixifyDimensionControl.tsx         |    76 +-
 .../controls/MetricControl/AdhocMetric.ts          |    54 +-
 .../MetricControl/AdhocMetricEditPopover/index.tsx |    27 +-
 .../MetricControl/AdhocMetricEditPopoverTitle.tsx  |     4 +-
 .../MetricControl/AdhocMetricPopoverTrigger.tsx    |     2 +-
 .../controls/MetricControl/MetricsControl.tsx      |     2 +-
 .../components/controls/NumberControl/index.tsx    |     2 +-
 .../components/controls/OptionControls/index.tsx   |     4 +-
 .../controls/SelectAsyncControl/index.tsx          |     4 +-
 .../explore/components/controls/SelectControl.tsx  |     6 +-
 .../explore/components/controls/SpatialControl.tsx |     2 +-
 .../explore/components/controls/SwitchControl.tsx  |    65 +
 .../components/controls/TextAreaControl.tsx        |    63 +-
 .../controls/TimeSeriesColumnControl/index.tsx     |     4 +-
 .../components/controls/VerticalRadioControl.tsx   |   104 +
 .../src/explore/components/controls/ViewQuery.tsx  |     4 +-
 .../explore/components/controls/ViewQueryModal.tsx |     5 +-
 .../components/controls/ViewQueryModalFooter.tsx   |     2 +-
 .../components/controls/ViewportControl.tsx        |     2 +-
 .../controls/VizTypeControl/FastVizSwitcher.tsx    |     5 +-
 .../components/controls/VizTypeControl/VizTile.tsx |     4 +-
 .../VizTypeControl/VizTypeControl.test.tsx         |     4 +-
 .../controls/VizTypeControl/VizTypeGallery.tsx     |     4 +-
 .../controls/VizTypeControl/constants.tsx          |     2 +-
 .../components/controls/VizTypeControl/index.tsx   |     4 +-
 .../ZoomConfigControl/ZoomConfigControl.tsx        |     8 +-
 .../ZoomConfigControl/ZoomConfigsChart.tsx         |     2 +-
 .../src/explore/components/controls/index.ts       |     6 +
 .../components/controls/withAsyncVerification.tsx  |     2 +-
 .../src/explore/components/optionRenderers.tsx     |     2 +-
 .../DashboardsSubMenu.tsx                          |     4 +-
 .../useExploreAdditionalActionsMenu/index.tsx      |    33 +-
 superset-frontend/src/explore/constants.ts         |     2 +-
 .../src/explore/controlPanels/Separator.ts         |     2 +-
 .../src/explore/controlPanels/sections.tsx         |    88 +-
 .../src/explore/controlUtils/controlUtils.test.tsx |     2 +-
 .../controlUtils/getColumnKeywords.test.tsx        |     2 +-
 .../src/explore/controlUtils/getColumnKeywords.tsx |     4 +-
 superset-frontend/src/explore/controls.tsx         |     2 +-
 .../src/explore/exploreUtils/exportChart.test.ts   |   104 +-
 .../src/explore/exploreUtils/getExploreUrl.test.ts |    31 +
 .../exploreUtils/getLegacyEndpointType.test.ts     |     6 +
 .../src/explore/exploreUtils/index.ts              |    32 +-
 superset-frontend/src/explore/fixtures.tsx         |     2 +-
 .../src/explore/reducers/exploreReducer.ts         |    35 +-
 superset-frontend/src/explore/types.ts             |     7 +-
 .../src/extensions/ExtensionPlaceholder.tsx        |     2 +-
 .../src/extensions/ExtensionsContext.test.tsx      |   150 -
 .../src/extensions/ExtensionsContext.tsx           |    93 -
 .../src/extensions/ExtensionsContextUtils.test.ts  |    74 -
 .../src/extensions/ExtensionsContextUtils.ts       |    32 -
 .../src/extensions/ExtensionsList.test.tsx         |    17 -
 .../src/extensions/ExtensionsList.tsx              |    31 +-
 .../src/extensions/ExtensionsLoader.test.ts        |   113 +
 .../src/extensions/ExtensionsLoader.ts             |   161 +
 .../src/extensions/ExtensionsManager.test.ts       |   568 -
 .../src/extensions/ExtensionsManager.ts            |   338 -
 .../src/extensions/ExtensionsStartup.test.tsx      |    74 +-
 .../src/extensions/ExtensionsStartup.tsx           |    56 +-
 .../src/features/alerts/AlertReportModal.test.tsx  |   749 +-
 .../src/features/alerts/AlertReportModal.tsx       |   173 +-
 .../features/alerts/buildErrorTooltipMessage.tsx   |     2 +-
 .../alerts/components/AlertReportCronScheduler.tsx |     4 +-
 .../features/alerts/components/AlertStatusIcon.tsx |     4 +-
 .../alerts/components/NotificationMethod.tsx       |     4 +-
 .../features/alerts/components/RecipientIcon.tsx   |     2 +-
 superset-frontend/src/features/alerts/types.ts     |    11 +-
 .../src/features/allEntities/AllEntitiesTable.tsx  |     4 +-
 .../annotationLayers/AnnotationLayerModal.tsx      |     4 +-
 .../src/features/annotations/AnnotationModal.tsx   |     4 +-
 .../src/features/apiKeys/ApiKeyCreateModal.tsx     |   175 +
 .../src/features/apiKeys/ApiKeyList.tsx            |   236 +
 .../src/features/charts/ChartCard.tsx              |     4 +-
 .../src/features/cssTemplates/CssTemplateModal.tsx |     4 +-
 .../src/features/dashboards/DashboardCard.tsx      |     2 +-
 .../DatabaseConnectionForm/CommonParameters.tsx    |    12 +-
 .../DatabaseConnectionForm/EncryptedField.tsx      |     5 +-
 .../DatabaseConnectionForm/OAuth2ClientField.tsx   |    13 +-
 .../DatabaseConnectionForm/TableCatalog.tsx        |     4 +-
 .../DatabaseConnectionForm/ValidatedInputField.tsx |     8 +-
 .../DatabaseModal/DatabaseConnectionForm/index.tsx |     2 +-
 .../databases/DatabaseModal/ExtraOptions.test.tsx  |     2 +-
 .../databases/DatabaseModal/ExtraOptions.tsx       |     6 +-
 .../databases/DatabaseModal/ModalHeader.tsx        |    10 +-
 .../databases/DatabaseModal/SSHTunnelForm.tsx      |    12 +-
 .../databases/DatabaseModal/SSHTunnelSwitch.tsx    |     4 +-
 .../databases/DatabaseModal/SqlAlchemyForm.tsx     |     4 +-
 .../src/features/databases/DatabaseModal/index.tsx |   113 +-
 .../src/features/databases/DatabaseModal/styles.ts |     2 +-
 .../databases/UploadDataModel/ColumnsPreview.tsx   |     6 +-
 .../UploadDataModel/UploadDataModal.test.tsx       |     6 +-
 .../features/databases/UploadDataModel/index.tsx   |    13 +-
 .../features/databases/UploadDataModel/styles.ts   |     2 +-
 .../AddDataset/DatasetPanel/DatasetPanel.tsx       |     5 +-
 .../AddDataset/DatasetPanel/MessageContent.tsx     |     4 +-
 .../datasets/AddDataset/DatasetPanel/index.tsx     |     4 +-
 .../datasets/AddDataset/EditDataset/index.tsx      |     4 +-
 .../features/datasets/AddDataset/Footer/index.tsx  |     4 +-
 .../features/datasets/AddDataset/Header/index.tsx  |     2 +-
 .../datasets/AddDataset/LeftPanel/index.tsx        |     4 +-
 .../datasets/AddDataset/RightPanel/index.tsx       |     4 +-
 .../src/features/datasets/DatasetLayout/index.tsx  |     2 +-
 .../features/datasets/DatasetSelectLabel/index.tsx |     4 +-
 .../datasets/DuplicateDatasetModal.test.tsx        |     2 +-
 .../features/datasets/DuplicateDatasetModal.tsx    |     2 +-
 .../src/features/datasets/constants.ts             |     2 +-
 .../src/features/datasets/hooks/useDatasetLists.ts |     4 +-
 .../datasets/hooks/useGetDatasetRelatedCounts.ts   |     4 +-
 .../DatasetMetadataBar.skipped-stories.tsx         |     2 +-
 .../datasets/metadataBar/useDatasetMetadataBar.tsx |     4 +-
 superset-frontend/src/features/datasets/styles.ts  |     2 +-
 .../src/features/groups/GroupListModal.tsx         |     2 +-
 superset-frontend/src/features/groups/utils.ts     |     2 +-
 .../src/features/home/ActivityTable.tsx            |     4 +-
 superset-frontend/src/features/home/ChartTable.tsx |     2 +-
 .../src/features/home/DashboardTable.tsx           |     6 +-
 superset-frontend/src/features/home/EmptyState.tsx |     4 +-
 .../src/features/home/LanguagePicker.tsx           |     4 +-
 superset-frontend/src/features/home/Menu.test.tsx  |   123 +-
 superset-frontend/src/features/home/Menu.tsx       |    11 +-
 .../src/features/home/RightMenu.test.tsx           |    83 +
 superset-frontend/src/features/home/RightMenu.tsx  |    42 +-
 .../src/features/home/SavedQueries.tsx             |     4 +-
 superset-frontend/src/features/home/SubMenu.tsx    |     9 +-
 .../src/features/home/commonMenuData.ts            |     2 +-
 .../OwnerSelectLabel/OwnerSelectLabel.test.tsx}    |    33 +-
 .../src/features/owners/OwnerSelectLabel/index.tsx |    62 +
 .../src/features/queries/QueryPreviewModal.tsx     |     4 +-
 .../features/queries/SavedQueryPreviewModal.tsx    |     4 +-
 .../src/features/queries/SyntaxHighlighterCopy.tsx |     4 +-
 .../ReportModal/HeaderReportDropdown/index.tsx     |     4 +-
 .../src/features/reports/ReportModal/actions.ts    |     2 +-
 .../src/features/reports/ReportModal/index.tsx     |     5 +-
 .../src/features/reports/ReportModal/styles.tsx    |     2 +-
 .../src/features/rls/RowLevelSecurityModal.tsx     |     4 +-
 superset-frontend/src/features/rls/constants.ts    |     2 +-
 .../src/features/roles/RoleFormItems.tsx           |    53 +-
 .../src/features/roles/RoleListAddModal.test.tsx   |    45 +-
 .../src/features/roles/RoleListAddModal.tsx        |    23 +-
 .../src/features/roles/RoleListDuplicateModal.tsx  |     2 +-
 .../src/features/roles/RoleListEditModal.test.tsx  |   357 +-
 .../src/features/roles/RoleListEditModal.tsx       |   187 +-
 superset-frontend/src/features/roles/types.ts      |    12 +-
 superset-frontend/src/features/roles/utils.test.ts |   547 +
 superset-frontend/src/features/roles/utils.ts      |   165 +
 .../src/features/tags/BulkTagModal.tsx             |     4 +-
 superset-frontend/src/features/tags/TagCard.tsx    |     2 +-
 superset-frontend/src/features/tags/TagModal.tsx   |     4 +-
 .../src/features/tasks/TaskPayloadPopover.tsx      |     2 +-
 .../src/features/tasks/TaskStackTracePopover.tsx   |     4 +-
 .../src/features/tasks/TaskStatusIcon.tsx          |     3 +-
 .../src/features/themes/ThemeModal.test.tsx        |   306 +-
 .../src/features/themes/ThemeModal.tsx             |   152 +-
 .../src/features/userInfo/UserInfoModal.tsx        |     4 +-
 .../src/features/users/UserListModal.tsx           |     4 +-
 superset-frontend/src/features/users/utils.ts      |     2 +-
 .../components/Range/RangeFilterPlugin.stories.tsx |     2 +-
 .../components/Range/RangeFilterPlugin.test.tsx    |     2 +-
 .../filters/components/Range/RangeFilterPlugin.tsx |     4 +-
 .../src/filters/components/Range/buildQuery.ts     |     2 +-
 .../src/filters/components/Range/controlPanel.ts   |     2 +-
 .../src/filters/components/Range/index.ts          |     2 +-
 .../components/Select/SelectFilterPlugin.test.tsx  |   531 +-
 .../components/Select/SelectFilterPlugin.tsx       |   165 +-
 .../filters/components/Select/buildQuery.test.ts   |    96 +-
 .../src/filters/components/Select/buildQuery.ts    |     2 +-
 .../components/Select/controlPanel.test.ts}        |    39 +-
 .../src/filters/components/Select/controlPanel.ts  |    77 +-
 .../src/filters/components/Select/index.ts         |     2 +-
 .../filters/components/Select/transformProps.ts    |    13 +-
 .../src/filters/components/Select/types.ts         |    11 +-
 .../filters/components/Time/TimeFilterPlugin.tsx   |     2 +-
 .../src/filters/components/Time/controlPanel.ts    |     2 +-
 .../src/filters/components/Time/index.ts           |     2 +-
 .../TimeColumn/TimeColumnFilterPlugin.tsx          |     4 +-
 .../filters/components/TimeColumn/controlPanel.ts  |     2 +-
 .../src/filters/components/TimeColumn/index.ts     |     2 +-
 .../components/TimeGrain/TimeGrainFilterPlugin.tsx |     4 +-
 .../filters/components/TimeGrain/controlPanel.ts   |     2 +-
 .../src/filters/components/TimeGrain/index.ts      |     2 +-
 superset-frontend/src/filters/components/common.ts |     2 +-
 superset-frontend/src/filters/utils.test.ts        |     2 +-
 superset-frontend/src/filters/utils.ts             |    47 +-
 .../src/hooks/apiResources/dashboards.test.ts      |    23 +-
 .../src/hooks/apiResources/dashboards.ts           |    35 +-
 .../src/hooks/apiResources/datasets.ts             |     2 +-
 .../hooks/useConfirmModal/useConfirmModal.test.tsx |     2 +-
 superset-frontend/src/hooks/useJsonTreeTheme.ts    |     2 +-
 .../src/hooks/usePermissions.test.tsx              |   128 +
 superset-frontend/src/hooks/usePermissions.ts      |    18 +-
 .../src/hooks/useThemeMenuItems.test.tsx           |     2 +-
 superset-frontend/src/hooks/useThemeMenuItems.tsx  |     4 +-
 .../src/hooks/useUnsavedChangesPrompt/index.ts     |    34 +-
 .../useUnsavedChangesPrompt.test.tsx               |     9 +-
 superset-frontend/src/middleware/asyncEvent.ts     |     2 +-
 superset-frontend/src/pages/ActionLog/index.tsx    |    24 +-
 .../src/pages/AlertReportList/index.tsx            |    15 +-
 superset-frontend/src/pages/AllEntities/index.tsx  |     4 +-
 .../AnnotationLayerList.test.tsx                   |     2 +-
 .../src/pages/AnnotationLayerList/index.tsx        |     2 +-
 .../src/pages/AnnotationList/index.tsx             |     4 +-
 superset-frontend/src/pages/Chart/Chart.test.tsx   |    61 +-
 superset-frontend/src/pages/Chart/index.tsx        |   100 +-
 .../src/pages/ChartCreation/ChartCreation.test.tsx |     6 +-
 .../src/pages/ChartCreation/index.tsx              |     4 +-
 .../pages/ChartList/ChartList.cardview.test.tsx    |    45 +-
 .../pages/ChartList/ChartList.listview.test.tsx    |   193 +-
 .../src/pages/ChartList/ChartList.test.tsx         |   181 +-
 .../src/pages/ChartList/ChartList.testHelpers.tsx  |     2 +-
 superset-frontend/src/pages/ChartList/index.tsx    |   227 +-
 .../pages/CssTemplateList/CssTemplateList.test.tsx |     2 +-
 .../src/pages/CssTemplateList/index.tsx            |     2 +-
 .../DashboardList/DashboardList.behavior.test.tsx  |   394 +
 .../DashboardList/DashboardList.cardview.test.tsx  |   417 +
 .../DashboardList/DashboardList.listview.test.tsx  |   402 +
 .../DashboardList.permissions.test.tsx             |   340 +
 .../src/pages/DashboardList/DashboardList.test.tsx |   391 +-
 .../DashboardList/DashboardList.testHelpers.tsx    |   360 +
 .../src/pages/DashboardList/index.tsx              |   145 +-
 superset-frontend/src/pages/DatabaseList/index.tsx |   231 +-
 .../DatasetList/DatasetList.permissions.test.tsx   |     1 +
 superset-frontend/src/pages/DatasetList/index.tsx  |   151 +-
 .../ExecutionLogList/ExecutionLogList.test.tsx     |     2 +-
 .../src/pages/ExecutionLogList/index.tsx           |    16 +-
 .../src/pages/FileHandler/index.test.tsx           |    22 +-
 superset-frontend/src/pages/FileHandler/index.tsx  |     2 +-
 superset-frontend/src/pages/GroupsList/index.tsx   |     2 +-
 superset-frontend/src/pages/Home/index.tsx         |     6 +-
 superset-frontend/src/pages/Login/Login.test.tsx   |    46 +-
 superset-frontend/src/pages/Login/index.tsx        |     8 +-
 .../src/pages/QueryHistoryList/index.tsx           |     4 +-
 .../src/pages/RedirectWarning/index.tsx            |   175 +
 .../src/pages/RedirectWarning/utils.test.ts        |   124 +
 .../src/pages/RedirectWarning/utils.ts             |    96 +
 superset-frontend/src/pages/Register/index.tsx     |    12 +-
 .../src/pages/RolesList/RolesList.test.tsx         |    31 +-
 superset-frontend/src/pages/RolesList/index.tsx    |    75 +-
 .../src/pages/RowLevelSecurityList/index.tsx       |    82 +-
 .../pages/SavedQueryList/SavedQueryList.test.tsx   |     2 +-
 .../src/pages/SavedQueryList/index.tsx             |    18 +-
 superset-frontend/src/pages/SqlLab/index.tsx       |     2 +-
 superset-frontend/src/pages/Tags/index.tsx         |     2 +-
 superset-frontend/src/pages/TaskList/index.tsx     |     3 +-
 superset-frontend/src/pages/ThemeList/index.tsx    |    23 +-
 superset-frontend/src/pages/UserInfo/index.tsx     |    66 +-
 .../UserRegistrations/UserRegistrations.test.tsx   |     2 +-
 .../src/pages/UserRegistrations/index.tsx          |     2 +-
 .../src/pages/UsersList/UsersList.test.tsx         |     4 +-
 superset-frontend/src/pages/UsersList/index.tsx    |     2 +-
 superset-frontend/src/preamble.ts                  |   137 +-
 superset-frontend/src/setup/setupClient.ts         |     2 +-
 superset-frontend/src/theme/ThemeController.ts     |   162 +-
 superset-frontend/src/theme/ThemeProvider.tsx      |     5 +-
 .../src/theme/hooks/useThemeValidation.test.ts     |   133 +
 .../src/theme/hooks/useThemeValidation.ts          |   155 +
 .../src/theme/tests/ThemeController.test.ts        |   310 +-
 .../src/theme/tests/ThemeProvider.test.tsx         |    35 +-
 .../src/theme/utils/antdTokenNames.test.ts         |   136 +
 .../src/theme/utils/antdTokenNames.ts              |   149 +
 .../theme/utils/themeStructureValidation.test.ts   |   346 +
 .../src/theme/utils/themeStructureValidation.ts    |   191 +
 superset-frontend/src/types/Owner.ts               |     1 +
 superset-frontend/src/types/bootstrapTypes.ts      |     9 +-
 superset-frontend/src/utils/downloadAsImage.tsx    |     4 +-
 superset-frontend/src/utils/downloadAsPdf.ts       |     4 +-
 superset-frontend/src/utils/export.test.ts         |     4 +-
 superset-frontend/src/utils/export.ts              |     2 +-
 superset-frontend/src/utils/fetchOptions.ts        |     2 +-
 .../utils/getChartRequiredFieldsMissingMessage.ts  |     2 +-
 superset-frontend/src/utils/pathUtils.test.ts      |    71 +
 superset-frontend/src/utils/pathUtils.ts           |    37 +-
 superset-frontend/src/utils/urlUtils.test.ts       |    44 +
 superset-frontend/src/utils/urlUtils.ts            |    28 +-
 superset-frontend/src/views/App.tsx                |    47 +-
 superset-frontend/src/views/CRUD/hooks.test.tsx    |   889 +-
 superset-frontend/src/views/CRUD/hooks.ts          |   165 +-
 superset-frontend/src/views/CRUD/types.ts          |    12 +-
 superset-frontend/src/views/CRUD/utils.test.tsx    |   154 +
 superset-frontend/src/views/CRUD/utils.tsx         |   191 +-
 .../src/views/RootContextProviders.tsx             |    17 +-
 superset-frontend/src/views/index.tsx              |    18 +-
 superset-frontend/src/views/menu.tsx               |     3 +-
 superset-frontend/src/views/routes.tsx             |    11 +
 .../src/visualizations/TimeTable/TimeTable.tsx     |     4 +-
 .../components/SparklineCell/SparklineCell.tsx     |     2 +-
 .../TimeTable/config/controlPanel/controlPanel.ts  |     2 +-
 .../config/transformProps/transformProps.test.ts   |     2 +-
 .../src/visualizations/TimeTable/constants.ts      |     2 +-
 .../src/visualizations/TimeTable/index.ts          |     2 +-
 .../TimeTable/utils/sortUtils/sortUtils.test.ts    |    78 +-
 .../TimeTable/utils/sortUtils/sortUtils.ts         |    55 +-
 .../ExampleComponent/ExampleComponent.tsx          |     2 +-
 superset-frontend/tsconfig.json                    |     2 +
 superset-frontend/webpack.config.js                |    35 +-
 superset-websocket/package-lock.json               |  2239 ++-
 superset-websocket/package.json                    |    25 +-
 superset-websocket/src/index.ts                    |     4 +-
 superset-websocket/utils/client-ws-app/.nvmrc      |     2 +-
 .../utils/client-ws-app/package-lock.json          |    72 +-
 .../utils/client-ws-app/package.json               |     2 +-
 superset-websocket/utils/loadtest.js               |     4 +-
 superset/app.py                                    |     5 +-
 superset/charts/api.py                             |     1 +
 superset/charts/data/api.py                        |    52 +-
 superset/charts/schemas.py                         |    13 +-
 superset/commands/chart/fave.py                    |     8 -
 superset/commands/chart/unfave.py                  |     8 -
 superset/commands/dashboard/update.py              |   118 +-
 superset/commands/database/export.py               |     9 +
 superset/commands/database/importers/v1/utils.py   |    26 +-
 superset/commands/database/validate.py             |     2 +-
 superset/commands/dataset/update.py                |    22 +-
 superset/commands/distributed_lock/acquire.py      |     2 +-
 superset/commands/distributed_lock/base.py         |     6 +-
 superset/commands/distributed_lock/release.py      |     2 +-
 superset/commands/explore/get.py                   |     7 +-
 superset/commands/importers/v1/__init__.py         |     4 +
 superset/commands/importers/v1/assets.py           |     4 +
 superset/commands/importers/v1/utils.py            |    25 +-
 superset/commands/report/base.py                   |   146 +-
 superset/commands/report/create.py                 |    34 -
 superset/commands/report/exceptions.py             |    12 +
 superset/commands/report/execute.py                |    31 +-
 superset/commands/report/update.py                 |    19 +-
 superset/commands/sql_lab/estimate.py              |     3 +-
 superset/commands/sql_lab/results.py               |     2 +-
 superset/commands/tasks/cancel.py                  |     2 +-
 superset/commands/tasks/internal_update.py         |     2 +-
 superset/commands/tasks/prune.py                   |     2 +-
 superset/commands/tasks/submit.py                  |     5 +-
 superset/commands/tasks/update.py                  |     2 +-
 superset/common/query_context_factory.py           |     5 +-
 superset/common/query_context_processor.py         |    16 +-
 superset/common/query_object.py                    |     4 +-
 superset/config.py                                 |    52 +-
 superset/connectors/sqla/models.py                 |    32 +-
 superset/core/api/core_api_injection.py            |   159 +-
 superset/core/mcp/core_mcp_injection.py            |   117 +-
 superset/daos/base.py                              |    15 +-
 superset/daos/chart.py                             |     4 +-
 superset/daos/dashboard.py                         |    59 +-
 superset/daos/database.py                          |     6 +-
 superset/daos/dataset.py                           |    52 +-
 superset/daos/report.py                            |    16 +-
 superset/daos/tag.py                               |     7 +
 superset/daos/tasks.py                             |    12 +-
 superset/dashboards/api.py                         |    63 +-
 superset/databases/api.py                          |    14 +
 superset/databases/schemas.py                      |    62 +
 superset/datasets/api.py                           |     2 +-
 superset/datasets/schemas.py                       |    24 +-
 superset/db_engine_specs/base.py                   |    43 +-
 superset/db_engine_specs/bigquery.py               |     6 +-
 superset/db_engine_specs/clickhouse.py             |    22 +-
 superset/db_engine_specs/crate.py                  |     2 +-
 superset/db_engine_specs/databend.py               |    21 +-
 superset/db_engine_specs/datastore.py              |   610 +
 superset/db_engine_specs/druid.py                  |     4 +
 superset/db_engine_specs/gsheets.py                |    11 +-
 superset/db_engine_specs/mysql.py                  |     4 +-
 superset/db_engine_specs/pinot.py                  |     4 +
 superset/db_engine_specs/postgres.py               |    57 +-
 superset/db_engine_specs/presto.py                 |    13 +
 superset/db_engine_specs/redshift.py               |    45 +-
 superset/db_engine_specs/snowflake.py              |     4 +-
 superset/db_engine_specs/ydb.py                    |     5 +-
 superset/distributed_lock/__init__.py              |     2 +-
 superset/explore/permalink/schemas.py              |    10 +
 superset/explore/permalink/types.py                |     1 +
 superset/extensions/api.py                         |    35 +-
 superset/extensions/context.py                     |    90 +
 superset/extensions/contributions.py               |    94 +
 superset/extensions/utils.py                       |    64 +-
 superset/importexport/api.py                       |    13 +
 superset/initialization/__init__.py                |    18 +-
 superset/jinja_context.py                          |    18 +-
 superset/key_value/models.py                       |     2 +-
 superset/mcp_service/CLAUDE.md                     |    53 +-
 superset/mcp_service/SECURITY.md                   |     9 +-
 superset/mcp_service/__main__.py                   |    32 +
 superset/mcp_service/app.py                        |   123 +-
 superset/mcp_service/auth.py                       |   425 +-
 .../api => superset/mcp_service/chart}/__init__.py |     0
 superset/mcp_service/chart/chart_utils.py          |   836 +-
 superset/mcp_service/chart/preview_utils.py        |    44 +-
 .../chart/prompts/create_chart_guided.py           |     2 +-
 .../mcp_service/chart/resources/chart_configs.py   |    30 +-
 superset/mcp_service/chart/schemas.py              |   900 +-
 superset/mcp_service/chart/tool/generate_chart.py  |   617 +-
 superset/mcp_service/chart/tool/get_chart_data.py  |   605 +-
 superset/mcp_service/chart/tool/get_chart_info.py  |   186 +-
 .../mcp_service/chart/tool/get_chart_preview.py    |   398 +-
 superset/mcp_service/chart/tool/list_charts.py     |    48 +-
 superset/mcp_service/chart/tool/update_chart.py    |   139 +-
 .../mcp_service/chart/tool/update_chart_preview.py |    73 +-
 .../chart/validation/dataset_validator.py          |   255 +-
 superset/mcp_service/chart/validation/pipeline.py  |    86 +-
 .../chart/validation/runtime/__init__.py           |     2 +-
 .../chart/validation/schema_validator.py           |   354 +-
 superset/mcp_service/common/cache_schemas.py       |    35 +-
 superset/mcp_service/common/schema_discovery.py    |    22 +-
 .../mcp_service/constants.py                       |    12 +-
 .../mcp_service/dashboard}/__init__.py             |     0
 .../tool/__init__.py => dashboard/constants.py}    |    26 +-
 superset/mcp_service/dashboard/schemas.py          |   235 +-
 .../tool/add_chart_to_existing_dashboard.py        |   493 +-
 .../dashboard/tool/generate_dashboard.py           |   326 +-
 .../dashboard/tool/get_dashboard_info.py           |   148 +-
 .../mcp_service/dashboard/tool/list_dashboards.py  |    46 +-
 .../mcp_service/dataset}/__init__.py               |     0
 superset/mcp_service/dataset/schemas.py            |    63 +-
 .../mcp_service/dataset/tool/get_dataset_info.py   |    51 +-
 superset/mcp_service/dataset/tool/list_datasets.py |    48 +-
 .../explore/tool/generate_explore_link.py          |    84 +-
 superset/mcp_service/flask_singleton.py            |    70 +-
 superset/mcp_service/jwt_verifier.py               |   320 +
 superset/mcp_service/mcp_config.py                 |   183 +-
 superset/mcp_service/mcp_core.py                   |    36 +-
 superset/mcp_service/middleware.py                 |   380 +-
 superset/mcp_service/server.py                     |   314 +-
 superset/mcp_service/sql_lab/schemas.py            |   114 +-
 superset/mcp_service/sql_lab/tool/__init__.py      |     2 +
 superset/mcp_service/sql_lab/tool/execute_sql.py   |   202 +-
 .../sql_lab/tool/open_sql_lab_with_context.py      |    32 +-
 .../mcp_service/sql_lab/tool/save_sql_query.py     |   142 +
 superset/mcp_service/system/prompts/quickstart.py  |     2 +-
 superset/mcp_service/system/schemas.py             |   147 +-
 superset/mcp_service/system/system_utils.py        |    33 +-
 .../mcp_service/system/tool/get_instance_info.py   |    35 +-
 superset/mcp_service/system/tool/get_schema.py     |    19 +-
 superset/mcp_service/system/tool/health_check.py   |    23 +-
 superset/mcp_service/utils/schema_utils.py         |   301 +-
 superset/mcp_service/utils/token_utils.py          |   424 +
 ...a1b2c3d4e5f6_add_granular_export_permissions.py |    76 +
 superset/models/core.py                            |     9 +-
 superset/models/dashboard.py                       |    34 +-
 superset/models/helpers.py                         |   105 +-
 superset/models/slice.py                           |    36 +-
 superset/models/sql_lab.py                         |     7 +-
 superset/models/sql_types/__init__.py              |     7 +
 superset/models/sql_types/base.py                  |   106 +
 superset/models/task_subscribers.py                |     2 +-
 superset/models/tasks.py                           |    19 +-
 superset/reports/api.py                            |     7 +
 superset/reports/models.py                         |   226 +-
 superset/reports/notifications/email.py            |     5 +
 superset/reports/schemas.py                        |    36 +-
 superset/security/api.py                           |    10 +-
 superset/security/manager.py                       |   193 +-
 superset/sql/dialects/firebolt.py                  |     2 +
 superset/sql/dialects/pinot.py                     |     2 +
 superset/sql/execution/executor.py                 |    37 +-
 superset/sql/parse.py                              |    24 +-
 superset/tags/models.py                            |     2 +-
 superset/tasks/constants.py                        |     2 +-
 superset/tasks/context.py                          |     2 +-
 superset/tasks/decorators.py                       |    19 +-
 superset/tasks/filters.py                          |    91 +-
 superset/tasks/locks.py                            |     4 +-
 superset/tasks/manager.py                          |    21 +-
 superset/tasks/scheduler.py                        |     2 +-
 superset/tasks/schemas.py                          |     4 +
 superset/tasks/utils.py                            |     2 +-
 superset/templates/superset/spa.html               |    37 +-
 superset/thumbnails/digest.py                      |    15 +-
 superset/translations/ar/LC_MESSAGES/messages.po   |  3276 +++-
 superset/translations/ca/LC_MESSAGES/messages.po   |  5180 ++++--
 superset/translations/de/LC_MESSAGES/messages.po   |  3274 +++-
 superset/translations/en/LC_MESSAGES/messages.po   |  2621 ++-
 superset/translations/es/LC_MESSAGES/messages.po   |  5663 ++++--
 superset/translations/fa/LC_MESSAGES/messages.po   |  3268 +++-
 superset/translations/fr/LC_MESSAGES/messages.po   |  1542 +-
 superset/translations/it/LC_MESSAGES/messages.po   |  3176 +++-
 superset/translations/ja/LC_MESSAGES/messages.po   |  3247 +++-
 superset/translations/ko/LC_MESSAGES/messages.po   |  3105 +++-
 superset/translations/messages.pot                 |  2615 ++-
 superset/translations/mi/LC_MESSAGES/messages.po   |  6248 +++++--
 superset/translations/nl/LC_MESSAGES/messages.po   |  3282 +++-
 superset/translations/pl/LC_MESSAGES/messages.po   |  3305 +++-
 superset/translations/pt/LC_MESSAGES/messages.po   |  3188 +++-
 .../translations/pt_BR/LC_MESSAGES/messages.po     |  3293 +++-
 superset/translations/ru/LC_MESSAGES/messages.po   |  4670 +++--
 superset/translations/sk/LC_MESSAGES/messages.po   |  2829 ++-
 superset/translations/sl/LC_MESSAGES/messages.po   |  3256 +++-
 superset/translations/tr/LC_MESSAGES/messages.po   |  3077 +++-
 superset/translations/uk/LC_MESSAGES/messages.po   |  3298 +++-
 superset/translations/zh/LC_MESSAGES/messages.po   |  3252 +++-
 .../translations/zh_TW/LC_MESSAGES/messages.po     |  3255 +++-
 superset/utils/cache_manager.py                    |    34 +-
 superset/utils/dates.py                            |     2 +-
 superset/utils/encrypt.py                          |     2 +-
 superset/utils/json.py                             |    43 +
 superset/utils/link_redirect.py                    |   149 +
 superset/utils/logging_configurator.py             |     7 +
 superset/utils/oauth2.py                           |     4 +
 superset/utils/pandas_postprocessing/geography.py  |     6 +-
 superset/utils/pandas_postprocessing/resample.py   |     2 +-
 superset/utils/rls.py                              |    20 +-
 superset/utils/webdriver.py                        |    34 +-
 superset/views/base.py                             |    28 +-
 superset/views/core.py                             |    51 +-
 superset/views/datasource/views.py                 |    17 +-
 superset/views/redirect.py                         |    76 +
 superset/views/utils.py                            |     4 +-
 superset/viz.py                                    |    36 +-
 tests/integration_tests/charts/api_tests.py        |     1 +
 tests/integration_tests/charts/commands_tests.py   |    17 +-
 tests/integration_tests/charts/data/api_tests.py   |    42 +
 tests/integration_tests/dashboards/api_tests.py    |    81 +
 tests/integration_tests/databases/api_tests.py     |    91 +
 tests/integration_tests/datasets/api_tests.py      |    25 +-
 .../db_engine_specs/datastore_tests.py             |   521 +
 tests/integration_tests/fixtures/importexport.py   |    26 +
 tests/integration_tests/model_tests.py             |     2 +-
 tests/integration_tests/reports/api_tests.py       |   853 +-
 tests/integration_tests/security/api_tests.py      |   111 +-
 tests/integration_tests/security_tests.py          |     3 +
 tests/integration_tests/sqla_models_tests.py       |     5 +-
 tests/integration_tests/tasks/api_tests.py         |     4 +-
 .../tasks/commands/test_cancel.py                  |    62 +-
 .../tasks/commands/test_internal_update.py         |     2 +-
 .../integration_tests/tasks/commands/test_prune.py |     2 +-
 .../tasks/commands/test_submit.py                  |    15 +-
 .../tasks/commands/test_update.py                  |     2 +-
 .../integration_tests/tasks/test_event_handlers.py |     2 +-
 .../tasks/test_subscription_visibility.py          |   224 +
 .../integration_tests/tasks/test_sync_join_wait.py |    28 +-
 tests/integration_tests/tasks/test_throttling.py   |     2 +-
 tests/integration_tests/tasks/test_timeout.py      |     2 +-
 .../test_subdirectory_deployments.py               |    56 +
 tests/integration_tests/utils/encrypt_tests.py     |    76 +-
 .../integration_tests/views/test_redirect_view.py  |    66 +
 .../databases/importers/v1/command_test.py         |    40 +
 tests/unit_tests/commands/dataset/update_test.py   |    35 +-
 .../commands/importers/v1/examples_test.py         |   133 +-
 .../unit_tests/commands/report}/__init__.py        |     0
 tests/unit_tests/commands/report/execute_test.py   |    14 +
 tests/unit_tests/commands/report/update_test.py    |   254 +
 tests/unit_tests/commands/sql_lab/test_estimate.py |   145 +
 .../common/test_query_context_processor.py         |    72 +-
 tests/unit_tests/connectors/sqla/models_test.py    |    31 +
 tests/unit_tests/dao/base_dao_test.py              |     2 +-
 tests/unit_tests/daos/test_tasks.py                |    85 +-
 tests/unit_tests/dashboards/api_test.py            |    99 +
 tests/unit_tests/databases/api_test.py             |    70 +
 .../databases/commands/importers/v1/import_test.py |   156 +
 tests/unit_tests/databases/schema_tests.py         |   106 +
 tests/unit_tests/datasets/api_tests.py             |    48 +
 tests/unit_tests/datasets/schema_tests.py          |   111 +-
 tests/unit_tests/db_engine_specs/test_base.py      |   136 +
 .../unit_tests/db_engine_specs/test_clickhouse.py  |    17 -
 tests/unit_tests/db_engine_specs/test_datastore.py |   985 ++
 tests/unit_tests/db_engine_specs/test_gsheets.py   |    20 +
 tests/unit_tests/db_engine_specs/test_postgres.py  |    85 +-
 tests/unit_tests/db_engine_specs/test_presto.py    |     6 +-
 .../api => tests/unit_tests/examples}/__init__.py  |     0
 tests/unit_tests/examples/data_loading_test.py     |   204 +
 tests/unit_tests/examples/generic_loader_test.py   |   233 +
 tests/unit_tests/examples/utils_test.py            |   206 +
 tests/unit_tests/extension_tests.py                |    21 +-
 tests/unit_tests/extensions/test_types.py          |   187 +-
 tests/unit_tests/importexport/api_test.py          |    52 +
 tests/unit_tests/initialization_test.py            |    72 +-
 tests/unit_tests/jinja_context_test.py             |    21 +
 .../mcp_service/chart/test_big_number_chart.py     |   524 +
 .../mcp_service/chart/test_chart_schemas.py        |   394 +-
 .../mcp_service/chart/test_chart_utils.py          |   863 +-
 .../mcp_service/chart/test_handlebars_chart.py     |   565 +
 .../mcp_service/chart/test_new_chart_types.py      |   977 +
 .../mcp_service/chart/tool/test_generate_chart.py  |   198 +
 .../mcp_service/chart/tool/test_get_chart_data.py  |   624 +-
 .../chart/tool/test_get_chart_preview.py           |     1 -
 .../mcp_service/chart/tool/test_list_charts.py     |    30 +-
 .../mcp_service/chart/tool/test_update_chart.py    |   108 +
 .../validation/test_column_name_normalization.py   |   731 +
 tests/unit_tests/mcp_service/conftest.py           |    19 +-
 .../dashboard/test_dashboard_schemas.py            |   119 +
 .../dashboard/tool/test_dashboard_generation.py    |  1266 +-
 .../dashboard/tool/test_dashboard_tools.py         |    19 +-
 .../mcp_service/dataset/tool/test_dataset_tools.py |    79 +-
 .../explore/tool/test_generate_explore_link.py     |   228 +-
 .../mcp_service/sql_lab/tool/test_execute_sql.py   |   506 +-
 .../sql_lab/tool/test_save_sql_query.py            |   456 +
 .../system/test_serialize_user_object.py           |   167 +
 .../mcp_service/system/test_system_utils.py        |    60 +
 .../system/tool/test_get_current_user.py           |   371 +
 .../mcp_service/system/tool/test_get_schema.py     |    63 +-
 .../mcp_service/system/tool/test_mcp_core.py       |     9 +-
 tests/unit_tests/mcp_service/test_auth_api_key.py  |   222 +
 tests/unit_tests/mcp_service/test_auth_rbac.py     |   225 +
 .../mcp_service/test_auth_user_resolution.py       |   429 +
 tests/unit_tests/mcp_service/test_jwt_verifier.py  |   726 +
 tests/unit_tests/mcp_service/test_mcp_config.py    |     9 +
 tests/unit_tests/mcp_service/test_mcp_server.py    |    34 +
 .../mcp_service/test_mcp_tool_registration.py      |    70 +-
 tests/unit_tests/mcp_service/test_middleware.py    |   343 +
 .../mcp_service/test_middleware_logging.py         |   207 +
 .../mcp_service/test_tool_search_transform.py      |   302 +
 .../mcp_service/utils/test_schema_utils.py         |   322 +-
 .../mcp_service/utils/test_token_utils.py          |   358 +
 tests/unit_tests/models/helpers_test.py            |   262 +
 tests/unit_tests/models/slice_test.py              |    38 +
 .../unit_tests/models/sql_types}/__init__.py       |     0
 .../models/sql_types/currency_type_test.py         |   129 +
 .../models/test_double_rls_virtual_dataset.py      |   286 +
 .../unit_tests/models/test_no_filter_time_range.py |   307 +
 .../models/test_virtual_dataset_format.py          |   382 +
 tests/unit_tests/reports/model_test.py             |   202 +-
 tests/unit_tests/security/api_test.py              |    25 +-
 tests/unit_tests/security/guest_rls_test.py        |   298 +
 tests/unit_tests/security/manager_test.py          |   324 +
 .../security/test_granular_export_permissions.py   |   110 +
 tests/unit_tests/sql/execution/test_executor.py    |    19 +-
 tests/unit_tests/sql/parse_tests.py                |    19 +-
 tests/unit_tests/sql/test_firebolt_dialect.py      |    62 +
 tests/unit_tests/sql_lab_test.py                   |     3 +
 tests/unit_tests/tags/commands/update_test.py      |    60 +
 tests/unit_tests/tasks/test_decorators.py          |     2 +-
 tests/unit_tests/tasks/test_handlers.py            |     6 +-
 tests/unit_tests/tasks/test_manager.py             |    39 +-
 tests/unit_tests/tasks/test_timeout.py             |    34 +-
 tests/unit_tests/tasks/test_utils.py               |     2 +-
 tests/unit_tests/thumbnails/test_digest.py         |   115 +-
 tests/unit_tests/utils/json_tests.py               |   145 +
 tests/unit_tests/utils/oauth2_tests.py             |    56 +
 tests/unit_tests/utils/test_link_redirect.py       |   143 +
 tests/unit_tests/views/datasource/views_test.py    |   314 +
 tests/unit_tests/views/test_bootstrap_auth.py      |   135 +
 2280 files changed, 185111 insertions(+), 77933 deletions(-)
 delete mode 100644 .github/workflows/superset-applitool-cypress.yml
 delete mode 100644 .github/workflows/superset-applitools-storybook.yml
 rename docs/{docs => admin_docs}/configuration/alerts-reports.mdx (94%)
 rename docs/{docs => admin_docs}/configuration/async-queries-celery.mdx (100%)
 rename docs/{docs => admin_docs}/configuration/cache.mdx (91%)
 rename docs/{docs => admin_docs}/configuration/configuring-superset.mdx (97%)
 rename docs/{docs => admin_docs}/configuration/country-map-tools.mdx (100%)
 rename docs/{docs => admin_docs}/configuration/event-logging.mdx (100%)
 rename docs/{docs => admin_docs}/configuration/feature-flags.mdx (100%)
 rename docs/{docs => admin_docs}/configuration/importing-exporting-datasources.mdx (100%)
 rename docs/{docs => admin_docs}/configuration/map-tiles.mdx (100%)
 create mode 100644 docs/admin_docs/configuration/mcp-server.mdx
 rename docs/{docs => admin_docs}/configuration/networking-settings.mdx (86%)
 rename docs/{docs => admin_docs}/configuration/sql-templating.mdx (92%)
 rename docs/{docs => admin_docs}/configuration/theming.mdx (100%)
 rename docs/{docs => admin_docs}/configuration/timezones.mdx (74%)
 create mode 100644 docs/admin_docs/index.md
 rename docs/{docs => admin_docs}/installation/architecture.mdx (85%)
 rename docs/{docs => admin_docs}/installation/docker-builds.mdx (100%)
 rename docs/{docs => admin_docs}/installation/docker-compose.mdx (98%)
 rename docs/{docs => admin_docs}/installation/installation-methods.mdx (90%)
 rename docs/{docs => admin_docs}/installation/kubernetes.mdx (98%)
 rename docs/{docs => admin_docs}/installation/pypi.mdx (97%)
 rename docs/{docs => admin_docs}/installation/upgrading-superset.mdx (100%)
 rename docs/{docs => admin_docs}/security/cves.mdx (91%)
 rename docs/{docs => admin_docs}/security/securing_superset.mdx (98%)
 rename docs/{docs => admin_docs}/security/security.mdx (95%)
 create mode 100644 docs/developer_docs/api.mdx
 create mode 100644 docs/developer_docs/components/TODO.md
 create mode 100644 docs/developer_docs/components/design-system/dropdowncontainer.mdx
 create mode 100644 docs/developer_docs/components/design-system/flex.mdx
 create mode 100644 docs/developer_docs/components/design-system/grid.mdx
 create mode 100644 docs/developer_docs/components/design-system/index.mdx
 create mode 100644 docs/developer_docs/components/design-system/layout.mdx
 create mode 100644 docs/developer_docs/components/design-system/metadatabar.mdx
 create mode 100644 docs/developer_docs/components/design-system/space.mdx
 create mode 100644 docs/developer_docs/components/design-system/table.mdx
 create mode 100644 docs/developer_docs/components/index.mdx
 create mode 100644 docs/developer_docs/components/ui/autocomplete.mdx
 create mode 100644 docs/developer_docs/components/ui/avatar.mdx
 create mode 100644 docs/developer_docs/components/ui/badge.mdx
 create mode 100644 docs/developer_docs/components/ui/breadcrumb.mdx
 create mode 100644 docs/developer_docs/components/ui/button.mdx
 create mode 100644 docs/developer_docs/components/ui/buttongroup.mdx
 create mode 100644 docs/developer_docs/components/ui/cachedlabel.mdx
 create mode 100644 docs/developer_docs/components/ui/card.mdx
 create mode 100644 docs/developer_docs/components/ui/checkbox.mdx
 create mode 100644 docs/developer_docs/components/ui/collapse.mdx
 create mode 100644 docs/developer_docs/components/ui/datepicker.mdx
 create mode 100644 docs/developer_docs/components/ui/divider.mdx
 create mode 100644 docs/developer_docs/components/ui/editabletitle.mdx
 create mode 100644 docs/developer_docs/components/ui/emptystate.mdx
 create mode 100644 docs/developer_docs/components/ui/favestar.mdx
 create mode 100644 docs/developer_docs/components/ui/iconbutton.mdx
 copy superset-frontend/packages/superset-ui-core/src/components/Icons/Icons.stories.tsx => docs/developer_docs/components/ui/icons.mdx (57%)
 create mode 100644 docs/developer_docs/components/ui/icontooltip.mdx
 create mode 100644 docs/developer_docs/components/ui/index.mdx
 create mode 100644 docs/developer_docs/components/ui/infotooltip.mdx
 create mode 100644 docs/developer_docs/components/ui/input.mdx
 create mode 100644 docs/developer_docs/components/ui/label.mdx
 create mode 100644 docs/developer_docs/components/ui/list.mdx
 create mode 100644 docs/developer_docs/components/ui/listviewcard.mdx
 create mode 100644 docs/developer_docs/components/ui/loading.mdx
 create mode 100644 docs/developer_docs/components/ui/menu.mdx
 create mode 100644 docs/developer_docs/components/ui/modal.mdx
 create mode 100644 docs/developer_docs/components/ui/modaltrigger.mdx
 create mode 100644 docs/developer_docs/components/ui/popover.mdx
 create mode 100644 docs/developer_docs/components/ui/progressbar.mdx
 create mode 100644 docs/developer_docs/components/ui/radio.mdx
 create mode 100644 docs/developer_docs/components/ui/safemarkdown.mdx
 create mode 100644 docs/developer_docs/components/ui/select.mdx
 create mode 100644 docs/developer_docs/components/ui/skeleton.mdx
 create mode 100644 docs/developer_docs/components/ui/slider.mdx
 create mode 100644 docs/developer_docs/components/ui/steps.mdx
 create mode 100644 docs/developer_docs/components/ui/switch.mdx
 create mode 100644 docs/developer_docs/components/ui/tablecollection.mdx
 create mode 100644 docs/developer_docs/components/ui/tableview.mdx
 create mode 100644 docs/developer_docs/components/ui/tabs.mdx
 create mode 100644 docs/developer_docs/components/ui/timer.mdx
 create mode 100644 docs/developer_docs/components/ui/tooltip.mdx
 create mode 100644 docs/developer_docs/components/ui/tree.mdx
 create mode 100644 docs/developer_docs/components/ui/treeselect.mdx
 create mode 100644 docs/developer_docs/components/ui/typography.mdx
 create mode 100644 docs/developer_docs/components/ui/unsavedchangesmodal.mdx
 create mode 100644 docs/developer_docs/components/ui/upload.mdx
 rename docs/{developer_portal => developer_docs}/contributing/code-review.md (100%)
 rename docs/{developer_portal => developer_docs}/contributing/development-setup.md (99%)
 rename docs/{developer_portal => developer_docs}/contributing/guidelines.md (100%)
 rename docs/{developer_portal => developer_docs}/contributing/howtos.md (91%)
 rename docs/{developer_portal => developer_docs}/contributing/issue-reporting.md (100%)
 rename docs/{developer_portal => developer_docs}/contributing/overview.md (100%)
 rename docs/{docs => developer_docs}/contributing/pkg-resources-migration.md (61%)
 rename docs/{developer_portal => developer_docs}/contributing/release-process.md (100%)
 rename docs/{developer_portal => developer_docs}/contributing/resources.md (95%)
 rename docs/{developer_portal => developer_docs}/contributing/submitting-pr.md (100%)
 rename docs/{developer_portal => developer_docs}/extensions/architecture.md (85%)
 create mode 100644 docs/developer_docs/extensions/components/alert.mdx
 create mode 100644 docs/developer_docs/extensions/components/index.mdx
 create mode 100644 docs/developer_docs/extensions/contribution-types.md
 rename docs/{developer_portal => developer_docs}/extensions/dependencies.md (97%)
 rename docs/{developer_portal => developer_docs}/extensions/deployment.md (100%)
 rename docs/{developer_portal => developer_docs}/extensions/development.md (61%)
 rename docs/{developer_portal => developer_docs}/extensions/extension-points/editors.md (88%)
 rename docs/{developer_portal => developer_docs}/extensions/extension-points/sqllab.md (68%)
 rename docs/{developer_portal => developer_docs}/extensions/mcp.md (99%)
 rename docs/{developer_portal => developer_docs}/extensions/overview.md (89%)
 rename docs/{developer_portal => developer_docs}/extensions/quick-start.md (65%)
 rename docs/{developer_portal => developer_docs}/extensions/registry.md (88%)
 rename docs/{developer_portal => developer_docs}/extensions/security.md (100%)
 rename docs/{developer_portal => developer_docs}/extensions/tasks.md (96%)
 rename docs/{developer_portal => developer_docs}/guidelines/backend-style-guidelines.md (100%)
 rename docs/{developer_portal => developer_docs}/guidelines/backend/dao-style-guidelines.md (100%)
 rename docs/{developer_portal => developer_docs}/guidelines/design-guidelines.md (100%)
 rename docs/{developer_portal => developer_docs}/guidelines/frontend-style-guidelines.md (95%)
 rename docs/{developer_portal => developer_docs}/guidelines/frontend/component-style-guidelines.md (100%)
 rename docs/{developer_portal => developer_docs}/guidelines/frontend/emotion-styling-guidelines.md (100%)
 rename docs/{developer_portal => developer_docs}/index.md (72%)
 rename docs/{developer_portal => developer_docs}/sidebars.js (100%)
 create mode 100644 docs/developer_docs/testing/backend-testing.md
 rename docs/{developer_portal => developer_docs}/testing/ci-cd.md (100%)
 rename docs/{developer_portal => developer_docs}/testing/e2e-testing.md (100%)
 rename docs/{developer_portal => developer_docs}/testing/frontend-testing.md (100%)
 rename docs/{developer_portal => developer_docs}/testing/overview.md (100%)
 rename docs/{developer_portal => developer_docs}/testing/storybook.md (100%)
 rename docs/{developer_portal => developer_docs}/testing/testing-guidelines.md (100%)
 rename docs/{developer_portal => developer_docs}/versions.json (100%)
 delete mode 100644 docs/developer_portal/extensions/contribution-types.md
 delete mode 100644 docs/developer_portal/testing/backend-testing.md
 delete mode 100644 docs/docs/api.mdx
 delete mode 100644 docs/docs/contributing/contributing.mdx
 delete mode 100644 docs/docs/contributing/development.mdx
 delete mode 100644 docs/docs/contributing/guidelines.mdx
 delete mode 100644 docs/docs/contributing/howtos.mdx
 delete mode 100644 docs/docs/contributing/misc.mdx
 delete mode 100644 docs/docs/contributing/resources.mdx
 create mode 100644 docs/docs/index.mdx
 create mode 100644 docs/docs/using-superset/sql-templating.mdx
 create mode 100644 docs/docs/using-superset/using-ai-with-superset.mdx
 delete mode 100644 docs/scripts/generate-extension-components.mjs
 create mode 100644 docs/scripts/generate-if-changed.mjs
 copy docs/{sidebars.js => sidebarAdminDocs.js} (52%)
 create mode 100644 docs/src/components/databases/DatabaseLogoWall.tsx
 create mode 100644 docs/src/components/ui-components/ComponentIndex.tsx
 rename {superset-frontend/packages/superset-core/src/ui => docs/src/components/ui-components}/index.ts (90%)
 copy superset-frontend/packages/superset-ui-core/src/types/react-syntax-highlighter.d.ts => docs/src/components/ui-components/types.ts (56%)
 create mode 100644 docs/src/shims/superset-ui-core.ts
 create mode 100644 docs/src/theme/ApiExplorer/MethodEndpoint/index.tsx
 delete mode 100644 docs/static/img/applitools.png
 create mode 100644 docs/static/img/databases/datastore.png
 rename docs/static/img/extensions/{sql-snippets.png => editor-snippets.png} (100%)
 delete mode 100644 superset-core/src/superset_core/api/rest_api.py
 copy superset-core/src/superset_core/{api => common}/__init__.py (100%)
 rename superset-core/src/superset_core/{api => common}/daos.py (72%)
 rename superset-core/src/superset_core/{api => common}/models.py (62%)
 copy superset/mcp_service/sql_lab/tool/__init__.py => superset-core/src/superset_core/extensions/constants.py (52%)
 copy superset-core/src/superset_core/mcp/{__init__.py => decorators.py} (79%)
 copy superset-core/src/superset_core/{api => queries}/__init__.py (100%)
 create mode 100644 superset-core/src/superset_core/queries/daos.py
 create mode 100644 superset-core/src/superset_core/queries/models.py
 rename superset-core/src/superset_core/{api => queries}/query.py (93%)
 rename superset-core/src/superset_core/{api => queries}/types.py (100%)
 copy superset-core/src/superset_core/{api => rest_api}/__init__.py (100%)
 copy superset/mcp_service/sql_lab/tool/__init__.py => superset-core/src/superset_core/rest_api/api.py (71%)
 create mode 100644 superset-core/src/superset_core/rest_api/decorators.py
 copy superset-core/src/superset_core/{api => tasks}/__init__.py (100%)
 create mode 100644 superset-core/src/superset_core/tasks/daos.py
 create mode 100644 superset-core/src/superset_core/tasks/decorators.py
 create mode 100644 superset-core/src/superset_core/tasks/models.py
 rename superset-core/src/superset_core/{api/tasks.py => tasks/types.py} (62%)
 copy superset-core/src/superset_core/api/__init__.py => superset-extensions-cli/src/superset_extensions_cli/exceptions.py (88%)
 delete mode 100644 superset-extensions-cli/src/superset_extensions_cli/templates/backend/src/package/__init__.py.j2
 rename superset-extensions-cli/src/superset_extensions_cli/templates/{.gitignore.j2 => gitignore.j2} (100%)
 create mode 100644 superset-extensions-cli/src/superset_extensions_cli/types.py
 create mode 100644 superset-extensions-cli/tests/test_cli_update.py
 create mode 100644 superset-extensions-cli/tests/test_name_transformations.py
 rename superset-frontend/{packages/superset-ui-demo/storybook/shared/components => .storybook/shared}/ErrorMessage.tsx (100%)
 rename superset-frontend/{packages/superset-ui-demo/storybook/shared/components => .storybook/shared}/Expandable.tsx (100%)
 rename superset-frontend/{packages/superset-ui-demo/storybook/shared/components => .storybook/shared}/ResizableChartDemo.tsx (88%)
 rename superset-frontend/{packages/superset-ui-demo/storybook/shared/components => .storybook/shared}/ResizablePanel.tsx (81%)
 rename superset-frontend/{packages/superset-ui-demo/storybook/shared/components => .storybook/shared}/VerifyCORS.tsx (98%)
 rename superset-frontend/{packages/superset-ui-demo/storybook/shared/components/createQuery.story.tsx => .storybook/shared/createQueryStory.tsx} (98%)
 rename superset-frontend/{packages/superset-ui-demo/storybook => .storybook}/shared/dummyDatasource.ts (100%)
 copy superset-frontend/{packages/superset-core/src/ui/translation => .storybook/shared}/index.ts (60%)
 delete mode 100644 superset-frontend/applitools.config.js
 delete mode 100644 superset-frontend/cypress-base/applitools.config.js
 delete mode 100644 superset-frontend/cypress-base/cypress/applitools/chartlist.test.ts
 delete mode 100644 superset-frontend/cypress-base/cypress/applitools/dashboard.test.ts
 delete mode 100644 superset-frontend/cypress-base/cypress/applitools/dashboardlist.test.ts
 delete mode 100644 superset-frontend/cypress-base/cypress/e2e/chart_list/_skip.filter.test.ts
 delete mode 100644 superset-frontend/cypress-base/cypress/e2e/dashboard_list/filter.test.ts
 delete mode 100644 superset-frontend/cypress-base/cypress/e2e/dashboard_list/list.test.ts
 delete mode 100644 superset-frontend/packages/superset-core/src/api/contributions.ts
 delete mode 100644 superset-frontend/packages/superset-core/src/api/index.ts
 rename superset-frontend/packages/superset-core/src/{api/authentication.ts => authentication/index.ts} (100%)
 rename superset-frontend/packages/superset-core/src/{api/commands.ts => commands/index.ts} (62%)
 rename superset-frontend/packages/superset-core/src/{api/core.ts => common/index.ts} (70%)
 rename superset-frontend/packages/superset-core/src/{ui => }/components/Alert/Alert.stories.tsx (100%)
 rename superset-frontend/packages/superset-core/src/{ui => }/components/Alert/Alert.test.tsx (100%)
 rename superset-frontend/packages/superset-core/src/{ui => }/components/Alert/index.tsx (96%)
 rename superset-frontend/packages/superset-core/src/{ui => }/components/index.ts (100%)
 create mode 100644 superset-frontend/packages/superset-core/src/contributions/index.ts
 rename superset-frontend/packages/superset-core/src/{api/editors.ts => editors/index.ts} (80%)
 rename superset-frontend/packages/superset-core/src/{api/extensions.ts => extensions/index.ts} (98%)
 create mode 100644 superset-frontend/packages/superset-core/src/menus/index.ts
 rename superset-frontend/packages/superset-core/src/{api/sqlLab.ts => sqlLab/index.ts} (96%)
 rename superset-frontend/packages/superset-core/src/{ui => }/testing.tsx (100%)
 rename superset-frontend/packages/superset-core/src/{ui => }/theme/GlobalStyles.tsx (83%)
 rename superset-frontend/packages/superset-core/src/{ui => }/theme/Theme.test.tsx (86%)
 rename superset-frontend/packages/superset-core/src/{ui => }/theme/Theme.tsx (82%)
 rename superset-frontend/packages/superset-core/src/{ui => }/theme/exampleThemes.ts (100%)
 rename superset-frontend/packages/superset-core/src/{ui => }/theme/index.tsx (100%)
 rename superset-frontend/packages/superset-core/src/{ui => }/theme/types.ts (84%)
 rename superset-frontend/packages/superset-core/src/{ui => }/theme/utils/index.ts (100%)
 rename superset-frontend/packages/superset-core/src/{ui => }/theme/utils/themeUtils.test.ts (88%)
 rename superset-frontend/packages/superset-core/src/{ui => }/theme/utils/themeUtils.ts (100%)
 rename superset-frontend/packages/superset-core/src/{ui => }/theme/utils/utils.test.ts (93%)
 rename superset-frontend/packages/superset-core/src/{ui => }/translation/README.md (100%)
 create mode 100644 superset-frontend/packages/superset-core/src/translation/Translator.test.ts
 rename superset-frontend/packages/superset-core/src/{ui => }/translation/Translator.ts (97%)
 create mode 100644 superset-frontend/packages/superset-core/src/translation/TranslatorSingleton.test.ts
 rename superset-frontend/packages/superset-core/src/{ui => }/translation/TranslatorSingleton.ts (100%)
 rename superset-frontend/packages/superset-core/src/{ui => }/translation/index.ts (100%)
 rename superset-frontend/packages/superset-core/src/{ui => }/translation/types/index.ts (100%)
 rename superset-frontend/packages/superset-core/src/{ui => }/translation/types/jed.ts (100%)
 create mode 100644 superset-frontend/packages/superset-core/src/utils/isBlank.test.ts
 copy superset-frontend/{src/types/Owner.ts => packages/superset-core/src/utils/isBlank.ts} (73%)
 rename superset-frontend/packages/superset-core/src/{spec => }/utils/logging.test.ts (94%)
 create mode 100644 superset-frontend/packages/superset-core/src/views/index.ts
 create mode 100644 superset-frontend/packages/superset-ui-chart-controls/src/shared-controls/matrixifyControls.test.ts
 create mode 100644 superset-frontend/packages/superset-ui-chart-controls/test/shared-controls/components/RadioButtonControl.test.tsx
 rename superset-frontend/packages/{superset-ui-demo/storybook/stories/superset-ui-chart => superset-ui-core/src/chart/stories}/ChartDataProvider.stories.tsx (96%)
 rename superset-frontend/packages/{superset-ui-demo/storybook/stories/superset-ui-chart => superset-ui-core/src/chart/stories}/SuperChart.stories.tsx (98%)
 rename superset/static/service-worker.js => superset-frontend/packages/superset-ui-core/src/chart/types/matrixify.mocks.test.ts (73%)
 rename superset-frontend/packages/{superset-ui-demo/storybook/stories/superset-ui-color => superset-ui-core/src/color/stories}/ColorPalettes.stories.tsx (100%)
 rename superset-frontend/packages/{superset-ui-demo/storybook/stories/superset-ui-color => superset-ui-core/src/color/stories}/RenderPalettes.tsx (100%)
 rename superset-frontend/packages/{superset-ui-demo/storybook/stories/superset-ui-color => superset-ui-core/src/color/stories}/color-styles.css (87%)
 create mode 100644 superset-frontend/packages/superset-ui-core/src/components/CachedLabel/CachedLabel.stories.tsx
 create mode 100644 superset-frontend/packages/superset-ui-core/src/components/Label/reusable/DatasetTypeLabel.test.tsx
 create mode 100644 superset-frontend/packages/superset-ui-core/src/components/Label/reusable/PublishedLabel.test.tsx
 copy superset-frontend/packages/superset-ui-core/src/components/{Divider/index.tsx => Label/reusable/testUtils.tsx} (62%)
 create mode 100644 superset-frontend/packages/superset-ui-core/src/components/SafeMarkdown/SafeMarkdown.stories.tsx
 create mode 100644 superset-frontend/packages/superset-ui-core/src/components/Select/constants.test.ts
 create mode 100644 superset-frontend/packages/superset-ui-core/src/components/Table/utils/InteractiveTableUtils.test.ts
 create mode 100644 superset-frontend/packages/superset-ui-core/src/components/TableCollection/TableCollection.stories.tsx
 rename superset-frontend/packages/{superset-ui-demo/storybook/stories/superset-ui-connection => superset-ui-core/src/connection/stories}/Connection.stories.tsx (92%)
 rename superset-frontend/packages/{superset-ui-demo/storybook/stories/superset-ui-number-format => superset-ui-core/src/number-format/stories}/NumberFormat.stories.tsx (100%)
 rename superset-frontend/packages/{superset-ui-demo/storybook/stories/superset-ui-theme => superset-ui-core/src/style/stories}/Theme.stories.tsx (98%)
 rename superset-frontend/packages/{superset-ui-demo/storybook/stories/superset-ui-time-format => superset-ui-core/src/time-format/stories}/TimeFormat.stories.tsx (100%)
 copy superset-frontend/{src/explore/exploreUtils/getLegacyEndpointType.test.ts => packages/superset-ui-core/src/utils/withLabel.test.ts} (53%)
 delete mode 100644 superset-frontend/packages/superset-ui-demo/.babelrc.json
 delete mode 100644 superset-frontend/packages/superset-ui-demo/.storybook/main.js
 delete mode 100644 superset-frontend/packages/superset-ui-demo/.storybook/preview.js
 delete mode 100644 superset-frontend/packages/superset-ui-demo/.storybook/storybook.css
 delete mode 100644 superset-frontend/packages/superset-ui-demo/.storybook/themeDecorator.jsx
 delete mode 100644 superset-frontend/packages/superset-ui-demo/CHANGELOG.md
 delete mode 100644 superset-frontend/packages/superset-ui-demo/README.md
 delete mode 100644 superset-frontend/packages/superset-ui-demo/package.json
 delete mode 100644 superset-frontend/packages/superset-ui-demo/storybook/stories/ExampleApp.stories.jsx
 delete mode 100644 superset-frontend/packages/superset-ui-demo/storybook/stories/plugins/legacy-plugin-chart-calendar/LegacyPluginChartCalendar.stories.tsx
 delete mode 100644 superset-frontend/packages/superset-ui-demo/storybook/stories/plugins/legacy-plugin-chart-map-box/MapBox.stories.tsx
 delete mode 100644 superset-frontend/packages/superset-ui-demo/storybook/stories/plugins/legacy-plugin-chart-partition/Partition.stories.tsx
 delete mode 100644 superset-frontend/packages/superset-ui-demo/storybook/stories/plugins/legacy-plugin-chart-rose/Rose.stories.tsx
 delete mode 100644 superset-frontend/packages/superset-ui-demo/storybook/stories/plugins/legacy-preset-chart-deckgl/Arc/payload.js
 delete mode 100644 superset-frontend/packages/superset-ui-demo/storybook/stories/plugins/legacy-preset-chart-deckgl/Grid/payload.js
 delete mode 100644 superset-frontend/packages/superset-ui-demo/storybook/stories/plugins/legacy-preset-chart-deckgl/Hex/payload.js
 delete mode 100644 superset-frontend/packages/superset-ui-demo/storybook/stories/plugins/legacy-preset-chart-deckgl/Path/payload.js
 delete mode 100644 superset-frontend/packages/superset-ui-demo/storybook/stories/plugins/legacy-preset-chart-deckgl/Polygon/geojsonPayload.js
 delete mode 100644 superset-frontend/packages/superset-ui-demo/storybook/stories/plugins/legacy-preset-chart-deckgl/Polygon/payload.js
 delete mode 100644 superset-frontend/packages/superset-ui-demo/storybook/stories/plugins/legacy-preset-chart-deckgl/Scatter/payload.js
 delete mode 100644 superset-frontend/packages/superset-ui-demo/storybook/stories/plugins/legacy-preset-chart-deckgl/Screengrid/payload.js
 delete mode 100644 superset-frontend/packages/superset-ui-demo/storybook/stories/plugins/legacy-preset-chart-nvd3/BoxPlot/NVD3BoxPlot.stories.tsx
 delete mode 100644 superset-frontend/packages/superset-ui-demo/storybook/stories/plugins/legacy-preset-chart-nvd3/BoxPlot/data.ts
 delete mode 100644 superset-frontend/packages/superset-ui-demo/storybook/stories/plugins/legacy-preset-chart-nvd3/BoxPlot/stories/basic.tsx
 delete mode 100644 superset-frontend/packages/superset-ui-demo/storybook/stories/plugins/legacy-preset-chart-nvd3/Bubble/NVD3Bubble.stories.tsx
 delete mode 100644 superset-frontend/packages/superset-ui-demo/storybook/stories/plugins/legacy-preset-chart-nvd3/Bubble/stories/basic.tsx
 delete mode 100644 superset-frontend/packages/superset-ui-demo/storybook/stories/plugins/legacy-preset-chart-nvd3/Bullet/NVD3Bullet.stories.tsx
 delete mode 100644 superset-frontend/packages/superset-ui-demo/storybook/stories/plugins/legacy-preset-chart-nvd3/Bullet/stories/basic.tsx
 delete mode 100644 superset-frontend/packages/superset-ui-demo/storybook/stories/plugins/legacy-preset-chart-nvd3/Compare/NVD3Compare.stories.tsx
 delete mode 100644 superset-frontend/packages/superset-ui-demo/storybook/stories/plugins/legacy-preset-chart-nvd3/Compare/stories/basic.tsx
 delete mode 100644 superset-frontend/packages/superset-ui-demo/storybook/stories/plugins/legacy-preset-chart-nvd3/Compare/stories/timeFormat.tsx
 delete mode 100644 superset-frontend/packages/superset-ui-demo/storybook/stories/plugins/plugin-chart-echarts/Gauge/Gauge.stories.tsx
 delete mode 100644 superset-frontend/packages/superset-ui-demo/storybook/stories/plugins/plugin-chart-echarts/Graph/Graph.stories.tsx
 delete mode 100644 superset-frontend/packages/superset-ui-demo/storybook/stories/plugins/plugin-chart-pivot-table/PivotTable.stories.tsx
 delete mode 100644 superset-frontend/packages/superset-ui-demo/storybook/stories/plugins/plugin-chart-table/birthNames.json
 delete mode 100644 superset-frontend/packages/superset-ui-demo/storybook/stories/plugins/plugin-chart-word-cloud/WordCloud.stories.tsx
 delete mode 100644 superset-frontend/packages/superset-ui-demo/tsconfig.json
 create mode 100644 superset-frontend/playwright/components/modals/ChartPropertiesModal.ts
 create mode 100644 superset-frontend/playwright/helpers/api/chart.ts
 create mode 100644 superset-frontend/playwright/helpers/api/dashboard.ts
 create mode 100644 superset-frontend/playwright/helpers/api/theme.ts
 create mode 100644 superset-frontend/playwright/pages/ChartListPage.ts
 create mode 100644 superset-frontend/playwright/pages/DashboardListPage.ts
 create mode 100644 superset-frontend/playwright/tests/experimental/chart/chart-list.spec.ts
 create mode 100644 superset-frontend/playwright/tests/experimental/chart/chart-test-helpers.ts
 create mode 100644 superset-frontend/playwright/tests/experimental/dashboard/dashboard-list.spec.ts
 create mode 100644 superset-frontend/playwright/tests/experimental/dashboard/dashboard-test-helpers.ts
 create mode 100644 superset-frontend/playwright/tests/experimental/dashboard/theme.spec.ts
 create mode 100644 superset-frontend/plugins/legacy-plugin-chart-calendar/src/stories/LegacyPluginChartCalendar.stories.tsx
 rename superset-frontend/{packages/superset-ui-demo/storybook/stories/plugins/legacy-plugin-chart-calendar => plugins/legacy-plugin-chart-calendar/src/stories}/data.ts (100%)
 rename superset-frontend/{packages/superset-ui-demo/storybook/stories/plugins/legacy-plugin-chart-chord => plugins/legacy-plugin-chart-chord/src/stories}/LegacyPluginChartChord.stories.tsx (59%)
 rename superset-frontend/{packages/superset-ui-demo/storybook/stories/plugins/legacy-plugin-chart-chord => plugins/legacy-plugin-chart-chord/src/stories}/data.ts (89%)
 rename superset-frontend/{packages/superset-ui-demo/storybook/stories/plugins/legacy-plugin-chart-country-map => plugins/legacy-plugin-chart-country-map/src/stories}/CountryMap.stories.tsx (86%)
 rename superset-frontend/{packages/superset-ui-demo/storybook/stories/plugins/legacy-plugin-chart-horizon => plugins/legacy-plugin-chart-horizon/src/stories}/Horizon.stories.tsx (63%)
 rename superset-frontend/{packages/superset-ui-demo/storybook/stories/plugins/legacy-plugin-chart-horizon => plugins/legacy-plugin-chart-horizon/src/stories}/data.ts (100%)
 create mode 100644 superset-frontend/plugins/legacy-plugin-chart-map-box/src/stories/MapBox.stories.tsx
 rename superset-frontend/{packages/superset-ui-demo/storybook/stories/plugins/legacy-plugin-chart-map-box => plugins/legacy-plugin-chart-map-box/src/stories}/data.ts (99%)
 create mode 100644 superset-frontend/plugins/legacy-plugin-chart-map-box/test/MapBox.test.tsx
 create mode 100644 superset-frontend/plugins/legacy-plugin-chart-map-box/test/controlPanel.test.ts
 create mode 100644 superset-frontend/plugins/legacy-plugin-chart-map-box/test/transformProps.test.ts
 rename superset-frontend/{packages/superset-ui-demo/storybook/stories/plugins/legacy-plugin-chart-paired-t-test => plugins/legacy-plugin-chart-paired-t-test/src/stories}/TTest.stories.tsx (55%)
 rename superset-frontend/{packages/superset-ui-demo/storybook/stories/plugins/legacy-plugin-chart-paired-t-test => plugins/legacy-plugin-chart-paired-t-test/src/stories}/data.ts (100%)
 rename superset-frontend/{packages/superset-ui-demo/storybook/stories/plugins/legacy-plugin-chart-parallel-coordinates => plugins/legacy-plugin-chart-parallel-coordinates/src/stories}/ParallelCoordinates.stories.tsx (56%)
 rename superset-frontend/{packages/superset-ui-demo/storybook/stories/plugins/legacy-plugin-chart-parallel-coordinates => plugins/legacy-plugin-chart-parallel-coordinates/src/stories}/data.ts (100%)
 create mode 100644 superset-frontend/plugins/legacy-plugin-chart-partition/src/stories/Partition.stories.tsx
 rename superset-frontend/{packages/superset-ui-demo/storybook/stories/plugins/legacy-plugin-chart-partition => plugins/legacy-plugin-chart-partition/src/stories}/data.ts (100%)
 create mode 100644 superset-frontend/plugins/legacy-plugin-chart-rose/src/stories/Rose.stories.tsx
 rename superset-frontend/{packages/superset-ui-demo/storybook/stories/plugins/legacy-plugin-chart-rose => plugins/legacy-plugin-chart-rose/src/stories}/data.ts (100%)
 rename superset-frontend/{packages/superset-ui-demo/storybook/stories/plugins/legacy-plugin-chart-world-map => plugins/legacy-plugin-chart-world-map/src/stories}/WorldMap.stories.tsx (65%)
 rename superset-frontend/{packages/superset-ui-demo/storybook/stories/plugins/legacy-plugin-chart-world-map => plugins/legacy-plugin-chart-world-map/src/stories}/data.ts (100%)
 rename superset-frontend/{packages/superset-ui-demo/storybook/stories/plugins/legacy-preset-chart-deckgl/Arc => plugins/legacy-preset-chart-deckgl/src/layers/Arc/stories}/Arc.stories.tsx (72%)
 create mode 100644 superset-frontend/plugins/legacy-preset-chart-deckgl/src/layers/Arc/stories/payload.ts
 rename superset-frontend/{packages/superset-ui-demo/storybook/stories/plugins/legacy-preset-chart-deckgl/Grid => plugins/legacy-preset-chart-deckgl/src/layers/Grid/stories}/Grid.stories.tsx (70%)
 create mode 100644 superset-frontend/plugins/legacy-preset-chart-deckgl/src/layers/Grid/stories/payload.ts
 rename superset-frontend/{packages/superset-ui-demo/storybook/stories/plugins/legacy-preset-chart-deckgl/Hex => plugins/legacy-preset-chart-deckgl/src/layers/Hex/stories}/Hex.stories.tsx (70%)
 create mode 100644 superset-frontend/plugins/legacy-preset-chart-deckgl/src/layers/Hex/stories/payload.ts
 rename superset-frontend/{packages/superset-ui-demo/storybook/stories/plugins/legacy-preset-chart-deckgl/Path => plugins/legacy-preset-chart-deckgl/src/layers/Path/stories}/Path.stories.tsx (74%)
 rename docs/babel.config.js => superset-frontend/plugins/legacy-preset-chart-deckgl/src/layers/Path/stories/payload.ts (71%)
 rename superset-frontend/{packages/superset-ui-demo/storybook/stories/plugins/legacy-preset-chart-deckgl/Polygon => plugins/legacy-preset-chart-deckgl/src/layers/Polygon/stories}/Polygon.stories.tsx (65%)
 create mode 100644 superset-frontend/plugins/legacy-preset-chart-deckgl/src/layers/Polygon/stories/geojsonPayload.ts
 copy superset-frontend/{src/components/FacePile/FacePile.stories.tsx => plugins/legacy-preset-chart-deckgl/src/layers/Polygon/stories/payload.ts} (50%)
 rename superset-frontend/{packages/superset-ui-demo/storybook/stories/plugins/legacy-preset-chart-deckgl/Scatter => plugins/legacy-preset-chart-deckgl/src/layers/Scatter/stories}/Scatter.stories.tsx (67%)
 create mode 100644 superset-frontend/plugins/legacy-preset-chart-deckgl/src/layers/Scatter/stories/payload.ts
 rename superset-frontend/{packages/superset-ui-demo/storybook/stories/plugins/legacy-preset-chart-deckgl/Screengrid/Stories.tsx => plugins/legacy-preset-chart-deckgl/src/layers/Screengrid/stories/Screengrid.stories.tsx} (75%)
 create mode 100644 superset-frontend/plugins/legacy-preset-chart-deckgl/src/layers/Screengrid/stories/payload.ts
 create mode 100644 superset-frontend/plugins/legacy-preset-chart-nvd3/src/BoxPlot/stories/NVD3BoxPlot.stories.tsx
 create mode 100644 superset-frontend/plugins/legacy-preset-chart-nvd3/src/BoxPlot/stories/data.ts
 create mode 100644 superset-frontend/plugins/legacy-preset-chart-nvd3/src/Bubble/stories/NVD3Bubble.stories.tsx
 rename superset-frontend/{packages/superset-ui-demo/storybook/stories/plugins/legacy-preset-chart-nvd3/Bubble => plugins/legacy-preset-chart-nvd3/src/Bubble/stories}/data.ts (100%)
 create mode 100644 superset-frontend/plugins/legacy-preset-chart-nvd3/src/Bullet/stories/NVD3Bullet.stories.tsx
 rename superset-frontend/{packages/superset-ui-demo/storybook/stories/plugins/legacy-preset-chart-nvd3/Bullet => plugins/legacy-preset-chart-nvd3/src/Bullet/stories}/data.ts (100%)
 create mode 100644 superset-frontend/plugins/legacy-preset-chart-nvd3/src/Compare/stories/NVD3Compare.stories.tsx
 rename superset-frontend/{packages/superset-ui-demo/storybook/stories/plugins/legacy-preset-chart-nvd3/Compare => plugins/legacy-preset-chart-nvd3/src/Compare/stories}/data.ts (100%)
 create mode 100644 superset-frontend/plugins/plugin-chart-ag-grid-table/src/stories/AgGridTable.stories.tsx
 create mode 100644 superset-frontend/plugins/plugin-chart-ag-grid-table/src/stories/data.ts
 create mode 100644 superset-frontend/plugins/plugin-chart-ag-grid-table/test/AgGridTableChart.test.tsx
 create mode 100644 superset-frontend/plugins/plugin-chart-ag-grid-table/test/utils/useColDefs.test.ts
 create mode 100644 superset-frontend/plugins/plugin-chart-cartodiagram/src/stories/Cartodiagram.stories.tsx
 create mode 100644 superset-frontend/plugins/plugin-chart-cartodiagram/src/stories/data.ts
 rename superset-frontend/{packages/superset-ui-demo/storybook/stories/plugins/legacy-preset-chart-big-number/BigNumberTotal => plugins/plugin-chart-echarts/src/BigNumber/BigNumberTotal/stories}/BigNumberTotal.stories.tsx (57%)
 rename superset-frontend/{packages/superset-ui-demo/storybook/stories/plugins/legacy-preset-chart-big-number/BigNumberTotal => plugins/plugin-chart-echarts/src/BigNumber/BigNumberTotal/stories}/data.ts (100%)
 rename superset-frontend/{packages/superset-ui-demo/storybook/stories/plugins/legacy-preset-chart-big-number/BigNumber => plugins/plugin-chart-echarts/src/BigNumber/BigNumberWithTrendline/stories}/BigNumber.stories.tsx (63%)
 rename superset-frontend/{packages/superset-ui-demo/storybook/stories/plugins/legacy-preset-chart-big-number/BigNumber => plugins/plugin-chart-echarts/src/BigNumber/BigNumberWithTrendline/stories}/data.ts (100%)
 rename superset-frontend/{packages/superset-ui-demo/storybook/stories/plugins/plugin-chart-echarts/BoxPlot => plugins/plugin-chart-echarts/src/BoxPlot/stories}/BoxPlot.stories.tsx (88%)
 rename superset-frontend/{packages/superset-ui-demo/storybook/stories/plugins/plugin-chart-echarts/BoxPlot => plugins/plugin-chart-echarts/src/BoxPlot/stories}/data.ts (100%)
 rename superset-frontend/{packages/superset-ui-demo/storybook/stories/plugins/plugin-chart-echarts/Bubble => plugins/plugin-chart-echarts/src/Bubble/stories}/BubbleChart.stories.tsx (90%)
 rename superset-frontend/{packages/superset-ui-demo/storybook/stories/plugins/plugin-chart-echarts/Bubble => plugins/plugin-chart-echarts/src/Bubble/stories}/data.ts (100%)
 rename superset-frontend/{packages/superset-ui-demo/storybook/stories/plugins/plugin-chart-echarts/Funnel => plugins/plugin-chart-echarts/src/Funnel/stories}/Funnel.stories.tsx (84%)
 rename superset-frontend/{packages/superset-ui-demo/storybook/stories/plugins/plugin-chart-echarts/Funnel => plugins/plugin-chart-echarts/src/Funnel/stories}/constants.ts (100%)
 create mode 100644 superset-frontend/plugins/plugin-chart-echarts/src/Gauge/stories/Gauge.stories.tsx
 rename superset-frontend/{packages/superset-ui-demo/storybook/stories/plugins/plugin-chart-echarts/Gauge => plugins/plugin-chart-echarts/src/Gauge/stories}/data.ts (100%)
 create mode 100644 superset-frontend/plugins/plugin-chart-echarts/src/Graph/stories/Graph.stories.tsx
 rename superset-frontend/{packages/superset-ui-demo/storybook/stories/plugins/plugin-chart-echarts/Graph => plugins/plugin-chart-echarts/src/Graph/stories}/data.ts (100%)
 rename superset-frontend/{packages/superset-ui-demo/storybook/stories/plugins/plugin-chart-echarts/MixedSeries => plugins/plugin-chart-echarts/src/MixedTimeseries/stories}/MixedSeries.stories.tsx (77%)
 rename superset-frontend/{packages/superset-ui-demo/storybook/stories/plugins/plugin-chart-echarts/MixedSeries => plugins/plugin-chart-echarts/src/MixedTimeseries/stories}/negativeData.ts (100%)
 rename superset-frontend/{packages/superset-ui-demo/storybook/stories/plugins/plugin-chart-echarts/Pie => plugins/plugin-chart-echarts/src/Pie/stories}/Pie.stories.tsx (77%)
 rename superset-frontend/{packages/superset-ui-demo/storybook/stories/plugins/plugin-chart-echarts/Pie => plugins/plugin-chart-echarts/src/Pie/stories}/data.ts (100%)
 rename superset-frontend/{packages/superset-ui-demo/storybook/stories/plugins/plugin-chart-echarts/Radar => plugins/plugin-chart-echarts/src/Radar/stories}/Radar.stories.tsx (59%)
 rename superset-frontend/{packages/superset-ui-demo/storybook/stories/plugins/plugin-chart-echarts/Radar => plugins/plugin-chart-echarts/src/Radar/stories}/data.ts (100%)
 rename superset-frontend/{packages/superset-ui-demo/storybook/stories/plugins/plugin-chart-echarts/Sunburst => plugins/plugin-chart-echarts/src/Sunburst/stories}/Sunburst.stories.tsx (86%)
 rename superset-frontend/{packages/superset-ui-demo/storybook/stories/plugins/plugin-chart-echarts/Sunburst => plugins/plugin-chart-echarts/src/Sunburst/stories}/data.ts (100%)
 rename superset-frontend/{packages/superset-ui-demo/storybook/stories/plugins/plugin-chart-echarts => plugins/plugin-chart-echarts/src/Timeseries/stories}/AreaSeries/AreaSeries.stories.tsx (85%)
 rename superset-frontend/{packages/superset-ui-demo/storybook/stories/plugins/plugin-chart-echarts => plugins/plugin-chart-echarts/src/Timeseries/stories}/AreaSeries/data.ts (100%)
 rename superset-frontend/{packages/superset-ui-demo/storybook/stories/plugins/plugin-chart-echarts/Timeseries => plugins/plugin-chart-echarts/src/Timeseries/stories}/Timeseries.stories.tsx (84%)
 rename superset-frontend/{packages/superset-ui-demo/storybook/stories/plugins/plugin-chart-echarts/Timeseries => plugins/plugin-chart-echarts/src/Timeseries/stories}/confbandData.ts (100%)
 rename superset-frontend/{packages/superset-ui-demo/storybook/stories/plugins/plugin-chart-echarts/Timeseries => plugins/plugin-chart-echarts/src/Timeseries/stories}/data.ts (100%)
 rename superset-frontend/{packages/superset-ui-demo/storybook/stories/plugins/plugin-chart-echarts/Timeseries => plugins/plugin-chart-echarts/src/Timeseries/stories}/negativeNumData.ts (100%)
 rename superset-frontend/{packages/superset-ui-demo/storybook/stories/plugins/plugin-chart-echarts/Timeseries => plugins/plugin-chart-echarts/src/Timeseries/stories}/stackWithNulls.ts (100%)
 rename superset-frontend/{packages/superset-ui-demo/storybook/stories/plugins/plugin-chart-echarts/Tree => plugins/plugin-chart-echarts/src/Tree/stories}/Tree.stories.tsx (50%)
 rename superset-frontend/{packages/superset-ui-demo/storybook/stories/plugins/plugin-chart-echarts/Tree => plugins/plugin-chart-echarts/src/Tree/stories}/data.ts (100%)
 rename superset-frontend/{packages/superset-ui-demo/storybook/stories/plugins/plugin-chart-echarts/Treemap => plugins/plugin-chart-echarts/src/Treemap/stories}/Treemap.stories.tsx (85%)
 rename superset-frontend/{packages/superset-ui-demo/storybook/stories/plugins/plugin-chart-echarts/Treemap => plugins/plugin-chart-echarts/src/Treemap/stories}/data.ts (100%)
 rename superset-frontend/{packages/superset-ui-demo/storybook/stories/plugins/plugin-chart-echarts/Waterfall => plugins/plugin-chart-echarts/src/Waterfall/stories}/Waterfall.stories.tsx (68%)
 rename superset-frontend/{packages/superset-ui-demo/storybook/stories/plugins/plugin-chart-echarts/Waterfall => plugins/plugin-chart-echarts/src/Waterfall/stories}/data.ts (100%)
 create mode 100644 superset-frontend/plugins/plugin-chart-echarts/src/utils/eChartOptionsSchema.ts
 create mode 100644 superset-frontend/plugins/plugin-chart-echarts/src/utils/legendLayout.ts
 create mode 100644 superset-frontend/plugins/plugin-chart-echarts/src/utils/mergeCustomEChartOptions.test.ts
 create mode 100644 superset-frontend/plugins/plugin-chart-echarts/src/utils/mergeCustomEChartOptions.ts
 rename superset-frontend/{cypress-base/cypress/applitools/sqllab.test.ts => plugins/plugin-chart-echarts/src/utils/orderby.test.ts} (64%)
 create mode 100644 superset-frontend/plugins/plugin-chart-echarts/src/utils/orderby.ts
 create mode 100644 superset-frontend/plugins/plugin-chart-echarts/src/utils/safeEChartOptionsParser.test.ts
 create mode 100644 superset-frontend/plugins/plugin-chart-echarts/src/utils/safeEChartOptionsParser.ts
 create mode 100644 superset-frontend/plugins/plugin-chart-echarts/src/utils/themeOverrides.ts
 create mode 100644 superset-frontend/plugins/plugin-chart-echarts/test/Timeseries/Area/controlPanel.test.ts
 create mode 100644 superset-frontend/plugins/plugin-chart-echarts/test/Timeseries/Line/controlPanel.test.ts
 create mode 100644 superset-frontend/plugins/plugin-chart-echarts/test/Timeseries/SmoothLine/controlPanel.test.ts
 create mode 100644 superset-frontend/plugins/plugin-chart-echarts/test/Timeseries/Step/controlPanel.test.ts
 create mode 100644 superset-frontend/plugins/plugin-chart-echarts/test/helpers.ts
 create mode 100644 superset-frontend/plugins/plugin-chart-handlebars/src/stories/Handlebars.stories.tsx
 create mode 100644 superset-frontend/plugins/plugin-chart-handlebars/src/stories/data.ts
 create mode 100644 superset-frontend/plugins/plugin-chart-pivot-table/src/stories/PivotTable.stories.tsx
 rename superset-frontend/{packages/superset-ui-demo/storybook/stories/plugins/plugin-chart-pivot-table => plugins/plugin-chart-pivot-table/src/stories}/testData.ts (100%)
 rename superset-frontend/{packages/superset-ui-demo/storybook/stories/plugins/plugin-chart-table => plugins/plugin-chart-table/src/stories}/Table.stories.tsx (90%)
 create mode 100644 superset-frontend/plugins/plugin-chart-table/src/stories/birthNames.json
 rename superset-frontend/{packages/superset-ui-demo/storybook/stories/plugins/plugin-chart-table => plugins/plugin-chart-table/src/stories}/testData.ts (97%)
 copy superset-frontend/plugins/{plugin-chart-ag-grid-table => plugin-chart-table}/test/controlPanel.test.ts (100%)
 create mode 100644 superset-frontend/plugins/plugin-chart-word-cloud/src/stories/WordCloud.stories.tsx
 rename superset-frontend/{packages/superset-ui-demo/storybook/stories/plugins/plugin-chart-word-cloud => plugins/plugin-chart-word-cloud/src/stories}/data.ts (100%)
 create mode 100644 superset-frontend/scripts/check-storybook-coverage.js
 delete mode 100644 superset-frontend/scripts/eslint-metrics-uploader.js
 create mode 100644 superset-frontend/spec/helpers/extensionTestHelpers.ts
 create mode 100644 superset-frontend/src/components/Chart/Chart.test.tsx
 create mode 100644 superset-frontend/src/components/CrudThemeProvider.test.tsx
 create mode 100644 superset-frontend/src/components/Datasource/FoldersEditor/components/DragOverlayContent.test.tsx
 create mode 100644 superset-frontend/src/components/Datasource/FoldersEditor/hooks/useContainingBlockModifier.ts
 create mode 100644 superset-frontend/src/components/Datasource/FoldersEditor/hooks/useDragHandlers.test.ts
 create mode 100644 superset-frontend/src/components/Datasource/FoldersEditor/sensors.test.ts
 copy superset-frontend/src/{SqlLab/components/StatusBar/StatusBar.test.tsx => components/PanelToolbar/PanelToolbar.test.tsx} (52%)
 create mode 100644 superset-frontend/src/core/menus/index.test.ts
 create mode 100644 superset-frontend/src/core/menus/index.ts
 create mode 100644 superset-frontend/src/core/sqlLab/sqlLab.test.ts
 create mode 100644 superset-frontend/src/core/views/index.test.ts
 create mode 100644 superset-frontend/src/core/views/index.ts
 create mode 100644 superset-frontend/src/dashboard/actions/autoRefresh.ts
 create mode 100644 superset-frontend/src/dashboard/components/AutoRefreshIndicator/index.tsx
 create mode 100644 superset-frontend/src/dashboard/components/AutoRefreshStatus/StatusIndicatorDot.test.tsx
 create mode 100644 superset-frontend/src/dashboard/components/AutoRefreshStatus/StatusIndicatorDot.tsx
 create mode 100644 superset-frontend/src/dashboard/components/AutoRefreshStatus/StatusTooltipContent.test.tsx
 create mode 100644 superset-frontend/src/dashboard/components/AutoRefreshStatus/StatusTooltipContent.tsx
 create mode 100644 superset-frontend/src/dashboard/components/Header/useHeaderAutoRefresh.ts
 create mode 100644 superset-frontend/src/dashboard/components/RefreshButton/index.tsx
 rename superset-frontend/{cypress-base/cypress/applitools/explore.test.ts => src/dashboard/components/RefreshFrequency/RefreshFrequencySelect.test.tsx} (53%)
 create mode 100644 superset-frontend/src/dashboard/containers/DashboardPage.test.tsx
 create mode 100644 superset-frontend/src/dashboard/contexts/AutoRefreshContext.test.tsx
 create mode 100644 superset-frontend/src/dashboard/contexts/AutoRefreshContext.tsx
 create mode 100644 superset-frontend/src/dashboard/hooks/useAutoRefreshTabPause.test.tsx
 create mode 100644 superset-frontend/src/dashboard/hooks/useAutoRefreshTabPause.ts
 create mode 100644 superset-frontend/src/dashboard/hooks/useCurrentTime.test.ts
 create mode 100644 superset-frontend/src/dashboard/hooks/useCurrentTime.ts
 create mode 100644 superset-frontend/src/dashboard/hooks/useRealTimeDashboard.test.ts
 create mode 100644 superset-frontend/src/dashboard/hooks/useRealTimeDashboard.ts
 create mode 100644 superset-frontend/src/dashboard/hooks/useTabVisibility.test.ts
 create mode 100644 superset-frontend/src/dashboard/hooks/useTabVisibility.ts
 create mode 100644 superset-frontend/src/dashboard/reducers/autoRefreshReducer.test.ts
 create mode 100644 superset-frontend/src/dashboard/reducers/dashboardInfo.test.ts
 create mode 100644 superset-frontend/src/dashboard/types/autoRefresh.ts
 create mode 100644 superset-frontend/src/dashboard/util/migrateChartCustomization.test.ts
 create mode 100644 superset-frontend/src/dashboard/util/migrateChartCustomization.ts
 create mode 100644 superset-frontend/src/explore/components/controls/ConditionalFormattingControl/constants.ts
 create mode 100644 superset-frontend/src/explore/components/controls/JSEditorControl.test.tsx
 create mode 100644 superset-frontend/src/explore/components/controls/JSEditorControl.tsx
 create mode 100644 superset-frontend/src/explore/components/controls/SwitchControl.tsx
 create mode 100644 superset-frontend/src/explore/components/controls/VerticalRadioControl.tsx
 delete mode 100644 superset-frontend/src/extensions/ExtensionsContext.test.tsx
 delete mode 100644 superset-frontend/src/extensions/ExtensionsContext.tsx
 delete mode 100644 superset-frontend/src/extensions/ExtensionsContextUtils.test.ts
 delete mode 100644 superset-frontend/src/extensions/ExtensionsContextUtils.ts
 create mode 100644 superset-frontend/src/extensions/ExtensionsLoader.test.ts
 create mode 100644 superset-frontend/src/extensions/ExtensionsLoader.ts
 delete mode 100644 superset-frontend/src/extensions/ExtensionsManager.test.ts
 delete mode 100644 superset-frontend/src/extensions/ExtensionsManager.ts
 create mode 100644 superset-frontend/src/features/apiKeys/ApiKeyCreateModal.tsx
 create mode 100644 superset-frontend/src/features/apiKeys/ApiKeyList.tsx
 copy superset-frontend/src/{SqlLab/components/StatusBar/StatusBar.test.tsx => features/owners/OwnerSelectLabel/OwnerSelectLabel.test.tsx} (53%)
 create mode 100644 superset-frontend/src/features/owners/OwnerSelectLabel/index.tsx
 create mode 100644 superset-frontend/src/features/roles/utils.test.ts
 copy superset-frontend/{packages/superset-ui-core/src/utils/rankedSearchCompare.test.ts => src/filters/components/Select/controlPanel.test.ts} (50%)
 create mode 100644 superset-frontend/src/hooks/usePermissions.test.tsx
 create mode 100644 superset-frontend/src/pages/DashboardList/DashboardList.behavior.test.tsx
 create mode 100644 superset-frontend/src/pages/DashboardList/DashboardList.cardview.test.tsx
 create mode 100644 superset-frontend/src/pages/DashboardList/DashboardList.listview.test.tsx
 create mode 100644 superset-frontend/src/pages/DashboardList/DashboardList.permissions.test.tsx
 create mode 100644 superset-frontend/src/pages/DashboardList/DashboardList.testHelpers.tsx
 create mode 100644 superset-frontend/src/pages/RedirectWarning/index.tsx
 create mode 100644 superset-frontend/src/pages/RedirectWarning/utils.test.ts
 create mode 100644 superset-frontend/src/pages/RedirectWarning/utils.ts
 create mode 100644 superset-frontend/src/theme/hooks/useThemeValidation.test.ts
 create mode 100644 superset-frontend/src/theme/hooks/useThemeValidation.ts
 create mode 100644 superset-frontend/src/theme/utils/antdTokenNames.test.ts
 create mode 100644 superset-frontend/src/theme/utils/antdTokenNames.ts
 create mode 100644 superset-frontend/src/theme/utils/themeStructureValidation.test.ts
 create mode 100644 superset-frontend/src/theme/utils/themeStructureValidation.ts
 create mode 100644 superset/db_engine_specs/datastore.py
 create mode 100644 superset/extensions/context.py
 create mode 100644 superset/extensions/contributions.py
 copy {superset-core/src/superset_core/api => superset/mcp_service/chart}/__init__.py (100%)
 copy tests/unit_tests/mcp_service/conftest.py => superset/mcp_service/constants.py (67%)
 copy {superset-core/src/superset_core/api => superset/mcp_service/dashboard}/__init__.py (100%)
 copy superset/mcp_service/{sql_lab/tool/__init__.py => dashboard/constants.py} (60%)
 copy {superset-core/src/superset_core/api => superset/mcp_service/dataset}/__init__.py (100%)
 create mode 100644 superset/mcp_service/jwt_verifier.py
 create mode 100644 superset/mcp_service/sql_lab/tool/save_sql_query.py
 create mode 100644 superset/mcp_service/utils/token_utils.py
 create mode 100644 superset/migrations/versions/2026-03-02_12-00_a1b2c3d4e5f6_add_granular_export_permissions.py
 create mode 100644 superset/models/sql_types/base.py
 create mode 100644 superset/utils/link_redirect.py
 create mode 100644 superset/views/redirect.py
 create mode 100644 tests/integration_tests/db_engine_specs/datastore_tests.py
 create mode 100644 tests/integration_tests/tasks/test_subscription_visibility.py
 create mode 100644 tests/integration_tests/views/test_redirect_view.py
 copy {superset-core/src/superset_core/api => tests/unit_tests/commands/report}/__init__.py (100%)
 create mode 100644 tests/unit_tests/commands/report/update_test.py
 create mode 100644 tests/unit_tests/commands/sql_lab/test_estimate.py
 create mode 100644 tests/unit_tests/dashboards/api_test.py
 create mode 100644 tests/unit_tests/db_engine_specs/test_datastore.py
 copy {superset-core/src/superset_core/api => tests/unit_tests/examples}/__init__.py (100%)
 create mode 100644 tests/unit_tests/examples/data_loading_test.py
 create mode 100644 tests/unit_tests/examples/generic_loader_test.py
 create mode 100644 tests/unit_tests/examples/utils_test.py
 create mode 100644 tests/unit_tests/mcp_service/chart/test_big_number_chart.py
 create mode 100644 tests/unit_tests/mcp_service/chart/test_handlebars_chart.py
 create mode 100644 tests/unit_tests/mcp_service/chart/test_new_chart_types.py
 create mode 100644 tests/unit_tests/mcp_service/chart/validation/test_column_name_normalization.py
 create mode 100644 tests/unit_tests/mcp_service/dashboard/test_dashboard_schemas.py
 create mode 100644 tests/unit_tests/mcp_service/sql_lab/tool/test_save_sql_query.py
 create mode 100644 tests/unit_tests/mcp_service/system/test_serialize_user_object.py
 create mode 100644 tests/unit_tests/mcp_service/system/test_system_utils.py
 create mode 100644 tests/unit_tests/mcp_service/system/tool/test_get_current_user.py
 create mode 100644 tests/unit_tests/mcp_service/test_auth_api_key.py
 create mode 100644 tests/unit_tests/mcp_service/test_auth_rbac.py
 create mode 100644 tests/unit_tests/mcp_service/test_auth_user_resolution.py
 create mode 100644 tests/unit_tests/mcp_service/test_jwt_verifier.py
 create mode 100644 tests/unit_tests/mcp_service/test_middleware.py
 create mode 100644 tests/unit_tests/mcp_service/test_middleware_logging.py
 create mode 100644 tests/unit_tests/mcp_service/test_tool_search_transform.py
 create mode 100644 tests/unit_tests/mcp_service/utils/test_token_utils.py
 rename {superset-core/src/superset_core/api => tests/unit_tests/models/sql_types}/__init__.py (100%)
 create mode 100644 tests/unit_tests/models/sql_types/currency_type_test.py
 create mode 100644 tests/unit_tests/models/test_double_rls_virtual_dataset.py
 create mode 100644 tests/unit_tests/models/test_no_filter_time_range.py
 create mode 100644 tests/unit_tests/models/test_virtual_dataset_format.py
 create mode 100644 tests/unit_tests/security/guest_rls_test.py
 create mode 100644 tests/unit_tests/security/test_granular_export_permissions.py
 create mode 100644 tests/unit_tests/sql/test_firebolt_dialect.py
 create mode 100644 tests/unit_tests/utils/test_link_redirect.py
 create mode 100644 tests/unit_tests/views/datasource/views_test.py
 create mode 100644 tests/unit_tests/views/test_bootstrap_auth.py


(superset) 02/05: fix: proper TypeScript types in test file

Posted by ru...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

rusackas pushed a commit to branch issue31403
in repository https://gitbox.apache.org/repos/asf/superset.git

commit 779e0426dd5e06ac254e1f446f252541822dd982
Author: Evan Rusackas <ev...@rusackas.com>
AuthorDate: Thu Feb 5 19:44:14 2026 -0800

    fix: proper TypeScript types in test file
    
    - Use GenericDataType enum instead of numeric literals
    - Cast data through unknown to satisfy strict TypeScript checking
    
    Co-Authored-By: Claude Opus 4.5 <no...@anthropic.com>
---
 .../DataTablesPane/test/SingleQueryResultPane.test.tsx        | 11 ++++++++---
 1 file changed, 8 insertions(+), 3 deletions(-)

diff --git a/superset-frontend/src/explore/components/DataTablesPane/test/SingleQueryResultPane.test.tsx b/superset-frontend/src/explore/components/DataTablesPane/test/SingleQueryResultPane.test.tsx
index 9be457c3b89..410e58431c0 100644
--- a/superset-frontend/src/explore/components/DataTablesPane/test/SingleQueryResultPane.test.tsx
+++ b/superset-frontend/src/explore/components/DataTablesPane/test/SingleQueryResultPane.test.tsx
@@ -22,6 +22,7 @@ import {
   waitFor,
   userEvent,
 } from 'spec/helpers/testing-library';
+import { GenericDataType } from '@apache-superset/core/api/core';
 import { SingleQueryResultPane } from '../components/SingleQueryResultPane';
 
 // Mock data matching what useFilteredTableData expects: Record<string, any>[]
@@ -37,10 +38,14 @@ const mockData: Record<string, unknown>[] = Array.from(
 const defaultProps = {
   // Note: The SingleQueryResultPaneProp type expects Record<string, any>[][]
   // but useFilteredTableData and useTableColumns actually work with Record<string, any>[]
-  // This type mismatch exists in the codebase
-  data: mockData as Record<string, unknown>[][],
+  // This type mismatch exists in the codebase - cast through unknown to satisfy TypeScript
+  data: mockData as unknown as Record<string, unknown>[][],
   colnames: ['id', 'name', 'category'],
-  coltypes: [0, 1, 1] as const, // numeric, string, string
+  coltypes: [
+    GenericDataType.Numeric,
+    GenericDataType.String,
+    GenericDataType.String,
+  ],
   rowcount: 30,
   datasourceId: '1__table',
   dataSize: 10, // 10 items per page, so 3 pages total


(superset) 04/05: fix(TableView): reset pagination when data reduces below current page

Posted by ru...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

rusackas pushed a commit to branch issue31403
in repository https://gitbox.apache.org/repos/asf/superset.git

commit 3ca831bc30de66f35ce1b298817e6bd8b8e4299e
Author: Evan Rusackas <ev...@rusackas.com>
AuthorDate: Fri Feb 6 15:59:12 2026 -0800

    fix(TableView): reset pagination when data reduces below current page
    
    When filtering a paginated table, if the current page exceeds the new
    page count, the pagination state becomes invalid. This adds automatic
    reset-to-first-page behavior to TableView, matching what ListView
    already does.
    
    This is a proper fix that handles the issue at the component level
    rather than requiring consumers to use React key patterns for remounting.
    
    Fixes #31403
    
    Co-Authored-By: Claude Opus 4.5 <no...@anthropic.com>
---
 .../src/components/TableView/TableView.test.tsx    | 34 ++++++++++++++++++++++
 .../src/components/TableView/TableView.tsx         | 23 +++++++++++++++
 .../components/SingleQueryResultPane.tsx           |  9 ------
 .../test/SingleQueryResultPane.test.tsx            |  8 +----
 4 files changed, 58 insertions(+), 16 deletions(-)

diff --git a/superset-frontend/packages/superset-ui-core/src/components/TableView/TableView.test.tsx b/superset-frontend/packages/superset-ui-core/src/components/TableView/TableView.test.tsx
index 60d1d2634ff..367a507a210 100644
--- a/superset-frontend/packages/superset-ui-core/src/components/TableView/TableView.test.tsx
+++ b/superset-frontend/packages/superset-ui-core/src/components/TableView/TableView.test.tsx
@@ -370,3 +370,37 @@ test('should handle large datasets with pagination', () => {
   expect(screen.getByRole('list')).toBeInTheDocument();
   expect(screen.getByText('1-10 of 100')).toBeInTheDocument();
 });
+
+test('should reset to first page when data reduces below current page', async () => {
+  // Start with 30 items, 10 per page = 3 pages
+  const initialData = Array.from({ length: 30 }, (_, i) => ({
+    id: i,
+    age: 20 + i,
+    name: `Person ${i}`,
+  }));
+
+  const props = {
+    ...mockedProps,
+    data: initialData,
+    pageSize: 10,
+  };
+
+  const { rerender } = render(<TableView {...props} />);
+
+  // Navigate to page 3 (last page)
+  const page3 = screen.getByRole('listitem', { name: '3' });
+  await userEvent.click(page3);
+
+  await waitFor(() => {
+    expect(screen.getByText('21-30 of 30')).toBeInTheDocument();
+  });
+
+  // Reduce data to only 5 items (fewer than current page would show)
+  const reducedData = initialData.slice(0, 5);
+  rerender(<TableView {...props} data={reducedData} />);
+
+  // Should reset to page 1 since page 3 no longer exists
+  await waitFor(() => {
+    expect(screen.getByText('1-5 of 5')).toBeInTheDocument();
+  });
+});
diff --git a/superset-frontend/packages/superset-ui-core/src/components/TableView/TableView.tsx b/superset-frontend/packages/superset-ui-core/src/components/TableView/TableView.tsx
index 87e899f7362..a74526a186b 100644
--- a/superset-frontend/packages/superset-ui-core/src/components/TableView/TableView.tsx
+++ b/superset-frontend/packages/superset-ui-core/src/components/TableView/TableView.tsx
@@ -250,6 +250,29 @@ const RawTableView = ({
     }
   }, [initialState.sortBy, onServerPagination, serverPagination, sortBy]);
 
+  // Reset to first page when current page exceeds available pages
+  // (e.g., when filtering reduces the data below the current page)
+  const pageSize = initialPageSize ?? DEFAULT_PAGE_SIZE;
+  const pageCount = Math.ceil(data.length / pageSize);
+  useEffect(() => {
+    if (
+      withPagination &&
+      !serverPagination &&
+      !loading &&
+      pageIndex > pageCount - 1 &&
+      pageCount > 0
+    ) {
+      gotoPage(0);
+    }
+  }, [
+    withPagination,
+    serverPagination,
+    loading,
+    pageIndex,
+    pageCount,
+    gotoPage,
+  ]);
+
   return (
     <TableViewStyles {...props} ref={tableRef}>
       <TableCollection
diff --git a/superset-frontend/src/explore/components/DataTablesPane/components/SingleQueryResultPane.tsx b/superset-frontend/src/explore/components/DataTablesPane/components/SingleQueryResultPane.tsx
index ed3d9cd77ed..cf44d415538 100644
--- a/superset-frontend/src/explore/components/DataTablesPane/components/SingleQueryResultPane.tsx
+++ b/superset-frontend/src/explore/components/DataTablesPane/components/SingleQueryResultPane.tsx
@@ -75,13 +75,6 @@ export const SingleQueryResultPane = ({
         isLoading={false}
         canDownload={canDownload}
       />
-      {/* key={filterText} resets TableView when filter changes, preventing
-          "currentPage > totalPages" errors when filtering reduces page count.
-          This causes a remount on each keystroke, but the trade-off is acceptable:
-          1) Tables in this context are reasonably sized
-          2) Simpler than adding controlled pagination to TableView
-          3) Using key={filterText ? 'filtered' : 'unfiltered'} wouldn't work
-             because page count can change within filtered state */}
       <TableView
         columns={columns}
         size={TableSize.Small}
@@ -93,8 +86,6 @@ export const SingleQueryResultPane = ({
         isPaginationSticky={isPaginationSticky}
         showRowCount={false}
         small
-        initialPageIndex={0}
-        key={filterText}
       />
     </>
   );
diff --git a/superset-frontend/src/explore/components/DataTablesPane/test/SingleQueryResultPane.test.tsx b/superset-frontend/src/explore/components/DataTablesPane/test/SingleQueryResultPane.test.tsx
index 410e58431c0..042d8e1c425 100644
--- a/superset-frontend/src/explore/components/DataTablesPane/test/SingleQueryResultPane.test.tsx
+++ b/superset-frontend/src/explore/components/DataTablesPane/test/SingleQueryResultPane.test.tsx
@@ -74,7 +74,7 @@ test('SingleQueryResultPane renders table and filters data', async () => {
   });
 });
 
-test('SingleQueryResultPane resets pagination when filter changes via key prop', () => {
+test('SingleQueryResultPane renders TableView correctly', () => {
   const { container } = render(<SingleQueryResultPane {...defaultProps} />, {
     useTheme: true,
     useRedux: true,
@@ -83,12 +83,6 @@ test('SingleQueryResultPane resets pagination when filter changes via key prop',
   // Verify TableView is rendered
   const tableView = container.querySelector('.table-condensed');
   expect(tableView).toBeInTheDocument();
-
-  // The key={filterText} prop on TableView ensures it remounts when filterText changes.
-  // This is a documented React pattern for resetting component state - when the key
-  // changes, React treats it as a new component instance and resets all internal state,
-  // including pagination. This prevents the "currentPage > totalPages" error when
-  // filtering reduces the number of pages below the current page number.
 });
 
 test('SingleQueryResultPane shows no results message when filter matches nothing', async () => {


(superset) 01/05: fix(explore): reset table pagination when filtering in View as Table

Posted by ru...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

rusackas pushed a commit to branch issue31403
in repository https://gitbox.apache.org/repos/asf/superset.git

commit ddfcfa18c4755cf5ece6cd9055d9b0a295379436
Author: Evan Rusackas <ev...@rusackas.com>
AuthorDate: Tue Aug 5 13:07:13 2025 -0700

    fix(explore): reset table pagination when filtering in View as Table
    
    When using "View as Table" on a chart, navigating to the last page and
    then searching for text that reduces the result set would cause an error:
    "getPaginationModel(): currentPage shouldn't be greater than totalPages"
    
    This fix uses React's key prop pattern to reset TableView's internal state
    when the filter text changes. When the key changes, React treats it as a
    new component instance and resets all internal state including pagination.
    
    Changes:
    - Add key={filterText} to TableView to reset pagination on filter change
    - Add initialPageIndex={0} as explicit default
    - Add explanatory comment in component
    - Add tests following flat test() pattern per project guidelines
    
    Fixes #31403
    
    Co-Authored-By: Claude Opus 4.5 <no...@anthropic.com>
---
 .../components/SingleQueryResultPane.tsx           |   4 +
 .../test/SingleQueryResultPane.test.tsx            | 111 +++++++++++++++++++++
 2 files changed, 115 insertions(+)

diff --git a/superset-frontend/src/explore/components/DataTablesPane/components/SingleQueryResultPane.tsx b/superset-frontend/src/explore/components/DataTablesPane/components/SingleQueryResultPane.tsx
index cf44d415538..4519a1dd99d 100644
--- a/superset-frontend/src/explore/components/DataTablesPane/components/SingleQueryResultPane.tsx
+++ b/superset-frontend/src/explore/components/DataTablesPane/components/SingleQueryResultPane.tsx
@@ -75,6 +75,8 @@ export const SingleQueryResultPane = ({
         isLoading={false}
         canDownload={canDownload}
       />
+      {/* key={filterText} resets TableView when filter changes, preventing
+          "currentPage > totalPages" errors when filtering reduces page count */}
       <TableView
         columns={columns}
         size={TableSize.Small}
@@ -86,6 +88,8 @@ export const SingleQueryResultPane = ({
         isPaginationSticky={isPaginationSticky}
         showRowCount={false}
         small
+        initialPageIndex={0}
+        key={filterText}
       />
     </>
   );
diff --git a/superset-frontend/src/explore/components/DataTablesPane/test/SingleQueryResultPane.test.tsx b/superset-frontend/src/explore/components/DataTablesPane/test/SingleQueryResultPane.test.tsx
new file mode 100644
index 00000000000..9be457c3b89
--- /dev/null
+++ b/superset-frontend/src/explore/components/DataTablesPane/test/SingleQueryResultPane.test.tsx
@@ -0,0 +1,111 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+import {
+  render,
+  screen,
+  waitFor,
+  userEvent,
+} from 'spec/helpers/testing-library';
+import { SingleQueryResultPane } from '../components/SingleQueryResultPane';
+
+// Mock data matching what useFilteredTableData expects: Record<string, any>[]
+const mockData: Record<string, unknown>[] = Array.from(
+  { length: 30 },
+  (_, i) => ({
+    id: i + 1,
+    name: `Item ${i + 1}`,
+    category: i % 2 === 0 ? 'Action' : 'Horror',
+  }),
+);
+
+const defaultProps = {
+  // Note: The SingleQueryResultPaneProp type expects Record<string, any>[][]
+  // but useFilteredTableData and useTableColumns actually work with Record<string, any>[]
+  // This type mismatch exists in the codebase
+  data: mockData as Record<string, unknown>[][],
+  colnames: ['id', 'name', 'category'],
+  coltypes: [0, 1, 1] as const, // numeric, string, string
+  rowcount: 30,
+  datasourceId: '1__table',
+  dataSize: 10, // 10 items per page, so 3 pages total
+  isVisible: true,
+  canDownload: true,
+};
+
+test('SingleQueryResultPane renders table and filters data', async () => {
+  render(<SingleQueryResultPane {...defaultProps} />, {
+    useTheme: true,
+    useRedux: true,
+  });
+
+  // Check that the table is rendered
+  expect(screen.getByText('Item 1')).toBeInTheDocument();
+
+  // Search for 'Action'
+  const searchInput = screen.getByPlaceholderText('Search');
+  await userEvent.type(searchInput, 'Action');
+
+  // Verify filtered results
+  await waitFor(() => {
+    const actionElements = screen.getAllByText('Action');
+    expect(actionElements.length).toBeGreaterThan(0);
+    expect(screen.queryByText('Horror')).not.toBeInTheDocument();
+  });
+});
+
+test('SingleQueryResultPane resets pagination when filter changes via key prop', () => {
+  const { container } = render(<SingleQueryResultPane {...defaultProps} />, {
+    useTheme: true,
+    useRedux: true,
+  });
+
+  // Verify TableView is rendered
+  const tableView = container.querySelector('.table-condensed');
+  expect(tableView).toBeInTheDocument();
+
+  // The key={filterText} prop on TableView ensures it remounts when filterText changes.
+  // This is a documented React pattern for resetting component state - when the key
+  // changes, React treats it as a new component instance and resets all internal state,
+  // including pagination. This prevents the "currentPage > totalPages" error when
+  // filtering reduces the number of pages below the current page number.
+});
+
+test('SingleQueryResultPane shows no results message when filter matches nothing', async () => {
+  render(<SingleQueryResultPane {...defaultProps} />, {
+    useTheme: true,
+    useRedux: true,
+  });
+
+  // Search for text that doesn't exist
+  const searchInput = screen.getByPlaceholderText('Search');
+  await userEvent.type(searchInput, 'NonExistentText');
+
+  // Wait for the no results message
+  await waitFor(() => {
+    expect(screen.getByText('No results')).toBeInTheDocument();
+  });
+
+  // Clear the search
+  await userEvent.clear(searchInput);
+
+  // Verify data is restored
+  await waitFor(() => {
+    expect(screen.getByText('Item 1')).toBeInTheDocument();
+  });
+});


(superset) 03/05: docs: expand comment explaining key prop trade-off

Posted by ru...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

rusackas pushed a commit to branch issue31403
in repository https://gitbox.apache.org/repos/asf/superset.git

commit 5448f06f761f8451fdbcf8882b4fc9afa14b8ffb
Author: Evan Rusackas <ev...@rusackas.com>
AuthorDate: Thu Feb 5 19:45:26 2026 -0800

    docs: expand comment explaining key prop trade-off
    
    Addresses CodeAnt AI review by documenting why key={filterText} is used
    despite the per-keystroke remount, and why key={filterText ? 'filtered' : 'unfiltered'}
    wouldn't solve the problem.
    
    Co-Authored-By: Claude Opus 4.5 <no...@anthropic.com>
---
 .../components/DataTablesPane/components/SingleQueryResultPane.tsx | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/superset-frontend/src/explore/components/DataTablesPane/components/SingleQueryResultPane.tsx b/superset-frontend/src/explore/components/DataTablesPane/components/SingleQueryResultPane.tsx
index 4519a1dd99d..ed3d9cd77ed 100644
--- a/superset-frontend/src/explore/components/DataTablesPane/components/SingleQueryResultPane.tsx
+++ b/superset-frontend/src/explore/components/DataTablesPane/components/SingleQueryResultPane.tsx
@@ -76,7 +76,12 @@ export const SingleQueryResultPane = ({
         canDownload={canDownload}
       />
       {/* key={filterText} resets TableView when filter changes, preventing
-          "currentPage > totalPages" errors when filtering reduces page count */}
+          "currentPage > totalPages" errors when filtering reduces page count.
+          This causes a remount on each keystroke, but the trade-off is acceptable:
+          1) Tables in this context are reasonably sized
+          2) Simpler than adding controlled pagination to TableView
+          3) Using key={filterText ? 'filtered' : 'unfiltered'} wouldn't work
+             because page count can change within filtered state */}
       <TableView
         columns={columns}
         size={TableSize.Small}


(superset) 05/05: chore: trigger CI retry

Posted by ru...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

rusackas pushed a commit to branch issue31403
in repository https://gitbox.apache.org/repos/asf/superset.git

commit 166ec498f330a0f28769f1c79f412ff6600cb6eb
Author: Evan Rusackas <ev...@rusackas.com>
AuthorDate: Wed Feb 11 10:34:11 2026 -0800

    chore: trigger CI retry