You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@superset.apache.org by ru...@apache.org on 2026/06/16 17:40:38 UTC
(superset) branch tdd/issue-32972-export-stable-chart-ids updated (42648f72936 -> 09db6dc6445)
This is an automated email from the ASF dual-hosted git repository.
rusackas pushed a change to branch tdd/issue-32972-export-stable-chart-ids
in repository https://gitbox.apache.org/repos/asf/superset.git
discard 42648f72936 fix(export): harden chart id stabilization for native/cross filters
discard d861fe344f3 fix(export): strip env-local chartId from dashboard position_json export (#32972)
discard 506db607b2d style(test): remove time-sensitive language and redundant import in #32972 regression test
discard a5ef9435922 test(export): dashboard export must not leak env-local chartIds
add 74d1c83ec52 ci: preserve PR translation updates during regression checks (#40581)
add 2b8e31bf688 ci(docs): skip Netlify docs preview on PRs that don't touch docs (#40590)
add bffc3fc58fa chore(deps-dev): bump @babel/eslint-parser from 7.28.6 to 7.29.7 in /superset-frontend (#40615)
add f77fa3ae39c chore(deps-dev): bump @babel/plugin-transform-runtime from 7.29.0 to 7.29.7 in /superset-frontend (#40614)
add efdfefeea26 chore(deps-dev): bump @typescript-eslint/eslint-plugin from 8.59.4 to 8.60.0 in /superset-frontend (#40613)
add aa8b474c58a chore(deps-dev): bump @babel/plugin-transform-export-namespace-from from 7.27.1 to 7.29.7 in /superset-frontend (#40611)
add a06eb8fc781 chore(deps): bump react-arborist from 3.7.0 to 3.8.0 in /superset-frontend (#40610)
add 8731974e5c4 chore(deps-dev): bump @babel/preset-react from 7.28.5 to 7.29.7 in /superset-frontend (#40609)
add ce602fc5a8a chore(deps-dev): bump @babel/types from 7.29.0 to 7.29.7 in /superset-frontend (#40608)
add 3f0fbbaac96 chore(deps-dev): update @babel/types requirement from ^7.29.0 to ^7.29.7 in /superset-frontend/plugins/plugin-chart-pivot-table (#40605)
add 8beea849528 chore(deps-dev): bump @typescript-eslint/parser from 8.59.4 to 8.60.0 in /docs (#40600)
add 70aa96458ac chore(deps-dev): bump @babel/cli from 7.28.6 to 7.29.7 in /superset-frontend (#40599)
add f04221a06ca chore(deps-dev): bump webpack from 5.107.1 to 5.107.2 in /docs (#40597)
add 986148d9244 chore(deps-dev): bump typescript-eslint from 8.59.4 to 8.60.0 in /superset-websocket (#40596)
add 94092d2f720 chore(deps-dev): bump @babel/preset-typescript from 7.28.5 to 7.29.7 in /superset-frontend (#40604)
add 41059c68bba chore(deps-dev): bump @babel/plugin-transform-modules-commonjs from 7.28.6 to 7.29.7 in /superset-frontend (#40603)
add 861e668f743 chore(deps-dev): bump @babel/preset-env from 7.29.5 to 7.29.7 in /superset-frontend (#40601)
add 41da35e9db0 chore(deps-dev): bump typescript-eslint from 8.59.4 to 8.60.0 in /docs (#40598)
add 365914f1c76 chore(deps-dev): bump @typescript-eslint/eslint-plugin from 8.59.4 to 8.60.0 in /superset-websocket (#40595)
add c29591b3b1b chore(deps): update @babel/runtime requirement from ^7.29.2 to ^7.29.7 in /superset-frontend/packages/superset-ui-core (#40606)
add a6d2c954803 chore(deps): migrate MCP service JWT errors from authlib.jose to joserfc (#40582)
add 817a35f445d fix(mcp): deny deactivated user accounts in MCP authentication (#40631)
add c6faa50338b fix(cli): encrypt sqlalchemy_uri password on import_datasources (#31983) (#40584)
add 2abbb64e6bc feat(gsheets): restore public/private sheet selector (#40466)
add e2ed9896399 fix(reports): skip permalink when dashboard state has no anchor or filters (#40530)
add 052e567f775 fix: guard dynamic dispatch and bound a regex quantifier (#40547)
add ca8855dc037 fix(mcp): generic auth errors, required token expiry, and safer auth logging (#40646)
add aba6ea536cc fix(dashboard): prevent "undefined undefined" owner names in properties modal (#40528)
add ddb647cd3ae fix(dashboard): clear undo history (#40569)
add 88abd41c8b8 fix(sql-lab): prevent crash when host shell lacks useAppDispatch export (#40591)
add 7275116f4cd fix(world-map): preserve bubbles and exclude only null metrics from color scale (#39926)
add fc0245bdb06 fix(charts): show non-filterable columns in metric section for table … (#39524)
add 699e741c69d fix(time-comparison): shift offset filter when X-axis is adhoc Custom SQL (#40586)
add d26a7aac3dd fix(dashboard): hide Edit button in embedded dashboards (#40687)
add 4996d7c277f fix: avoid warning spam when default spinner SVG is missing (#40481)
add 093b43c7a58 fix(exports,email,logs): csv formula escaping, subject CRLF stripping, UTC log pruning (#40645)
add 1632b235ae8 fix(sqllab): surface stacktrace in SQL Lab error responses (#28248) (#40585)
add 24422c83114 test(histogram): metric filters require aggregation in buildQuery (#30330) (#40617)
add 242c27a9743 test(presto): 401 Unauthorized must surface as CONNECTION_ACCESS_DENIED_ERROR (#33554) (#40618)
add 1b8099811b8 fix(chart-list): sort by changed_on instead of last_saved_at (#39984)
add d2d46169bf6 fix(explore): tighten popover title-to-tabs spacing to 12px (#40410)
add 19c2b67d09a fix(websocket): validate last_id query param format (#40626)
add 86fa5bb46f0 feat(table v2): agGridTableChart add row numer column (#39284)
add 4d2b10d916e chore(excel): strip document metadata from Excel exports (#40661)
add b97d3ef520b fix(api,sql): use json_response in Api.query and log dialect fallback (#40644)
add 00dd31494d1 fix: sanitize URL sinks and trim sensitive log fields (#40546)
add 616c2432780 fix(deps): revert joserfc JWT error migration — fastmcp still uses authlib (#40688)
add 49f3dbba733 fix(dashboard): address post-approval review feedback on #40528 (#40685)
add 8508af3201c chore(key_value): prune expired entries from the key-value store (#40663)
add a9df2c7e5ea fix(mcp): address post-approval review feedback on auth logging PR #40646 (#40684)
add 3e589436fa6 fix(reports): sanitize error text in email notification template (#40641)
add 6eaee211aad fix(sqllab): require dataset match for raw query access (#40409)
add 17d1a45bc94 feat(ydb): switch to native YDB sqlglot dialect (#40170)
add 8c62f533d7c fix(core): restrict allowed CSS properties in sanitized HTML (#40627)
add 6abee0289b8 fix(reports): guard SUCCESS-state report execution against duplicate sends and stuck WORKING state (#40657)
add 9af6746dbe1 fix(models): HTML-escape data-controlled values in dashboard_link and Slice.icons (#40639)
add a2a369cb5c8 fix(charts): sanitize tooltip HTML across nvd3, rose and partition plugins (#40502)
add 3bbb35e8a33 ci(bashlib): drop the dead bc-based NONCE (perf + reliability) (#40691)
add c54990c861b fix(plugin-chart-ag-grid-table): validate filter values/operators in state converter (#40623)
add ac522ded1c4 fix(ssh-tunnel): validate server_address format (SSRF defense-in-depth) (#40665)
add 0b9764aed56 fix(mcp): honor AUTH_ROLE_ADMIN and warn on permission-less protected tools (#40659)
add 12bef03f4af fix(jinja): apply consistent escaping to url_param values from request args (#40633)
add df21fe65718 chore(mcp): return a generic error from the webdriver pool-stats endpoint (#40559)
add fa41769a08a fix(embedded): enforce configured allowed domains for postMessage origin (#40629)
add b9dc9d722e6 fix(export): sanitize user-supplied CSV export filename (charts + SQL Lab) (#40632)
add 8e4a460cc71 fix(charts): apply DISALLOWED_SQL_FUNCTIONS gate to adhoc expressions (#40568)
add faa76f67412 fix(embedding): add optional dataset allowlist to guest tokens (#39302)
add 725f5ed2a90 fix(api): enforce per-object ownership validation in chart, dataset, and report commands (#39303)
add f7f50a79770 fix(sqllab): quote CTAS target identifiers and validate tmp_table_name format (#40245)
add cf08a5ebf75 feat(docker): add environment-based debugger control (#40327)
add 3191b0fdcd5 fix: apply dashboard access check in related_objects endpoints (#40333)
add 61b32d1b7d0 fix(chart): standardize dashboard validation across chart create/update (#40336)
add 56fd991efde fix(dataset): unify validation for stored and adhoc SQL expressions (#40392)
add 77c2bed5f72 fix(dashboards): narrow datasets payload to callers with read access (#40396)
add b8a2f925ee4 fix(views): enforce per-chart access check in legacy form_data endpoint (#40497)
add e3ba85b1a5e fix(redirect): normalize browser-stripped whitespace before protocol-relative check (#40566)
add c914df5a67c ci: harden CI against Docker Hub registry flakes (retries + auth) (#40700)
add accc94da516 fix(users): show 0 for null login_count and fail_login_count (#40281)
add e5ff6de790b chore: correct typos in config.py and models_test.py comments (#40706)
add cb2a56d16e0 chore: guard recursive merge keys and invoke subprocess without a shell (#40558)
add e5c7200551a ci: gate expensive test workflows at the job level (#40718)
add 001834470b8 fix(mcp): escape LIKE wildcards in MCP list tool search filters (#40682)
add f4dfb7f0266 fix(mcp): fall back to form_data spatial query for Deck.gl charts (#40339)
add fcb1e299ace fix(nvd3): sanitize generateMultiLineTooltipContent output (#40612)
add 6ea4e227856 refactor(nvd3): extract testable generateAnnotationTooltipContent helper (#40620)
add 80ea36c852f fix(db_engine_specs): escape schema name in regex; document safe filter pattern (#40642)
add c373da1bb91 ci: add cancel-in-progress concurrency to PR helper workflows (#40725)
add 80a5f6b787e fix(calendar): Fix day offset in Calendar Heatmap visualization (#34564)
add 2be2246a003 chore(deps-dev): bump gevent from 24.2.1 to 26.4.0 (#40378)
add 43fde2fb07e fix(charts): enforce DISALLOWED_SQL_FUNCTIONS and DISALLOWED_SQL_TABLES at chart-data execution (#40567)
add 6a125bf774b fix(jinja): expose dialect-escaped companion value on get_filters() (#40531)
add 9d1bc6b2ccb fix(i18n): don't flag intentional string deletions as translation regressions (#40716)
add cf5307d0c6f ci: reduce Cypress parallelism from 6 shards to 2 (#40717)
add 5ba60d51fd0 ci: gate CodeQL analysis at the job level for docs-only PRs (#40724)
add 41572dbf9df fix(chart): restrict owner lookup to users with write access (#39304)
add 696705794b1 ci: gate docker image builds at the job level (#40723)
add 966c243db6f ci: drop removed Cypress shards from required status checks (#40770)
add aa547da9607 fix: remove registration_hash in the registrations API (#40643)
add bdb081329fb feat(websocket): validate WebSocket upgrade Origin against an allowlist (#40625)
add ff5e43c8a09 ci: add timeout-minutes to compute-heavy workflow jobs (#40743)
add 8dcc7e7eec2 ci: stable required-check anchors for skippable matrix test jobs (#40772)
add ddb09f468d8 fix(plugin-chart-ag-grid-table): enforce numeric bounds for range (BETWEEN) filters (#40607)
add 23d18743bdb fix(deck.gl): strip all JS-executed form_data keys when JavaScript controls are disabled (#40602)
add c505c70c52e fix(databases): do not render existing encrypted field value in edit mode (#40628)
add 75d94ff466a fix(SafeMarkdown): block script-executing link protocols regardless of EscapeMarkdownHtml (#40622)
add cd5bdf11acc fix(playwright): de-flake list-view delete and bulk-export specs (#39980)
add 9a31362fa5e fix(reports): stamp email subject date at send time, not import time (#40693)
add 7d69f76127a fix(mcp): API key authentication for MCP — transport, validation, and RBAC (#39604)
add 6f97d9817e1 fix(database): preserve engine_information when creating database connection (#38107)
add 80a3df3550e ci: run full Python-version matrix on push, current-only on PRs (#40722)
add 3f94c9db2d5 chore(deps): bump query-string from 9.3.1 to 9.4.0 in /superset-frontend (#40742)
add cbd731e6614 chore(deps-dev): bump webpack from 5.107.1 to 5.107.2 in /superset-frontend (#40741)
add 09cd2c26cdc chore(deps): bump react-map-gl from 8.1.0 to 8.1.1 in /superset-frontend (#40740)
add 6662529306e chore(deps): bump react-syntax-highlighter from 16.1.0 to 16.1.1 in /superset-frontend (#40739)
add 0ad09d5cd0e chore(deps): bump dompurify from 3.4.8 to 3.4.7 in /superset-frontend/packages/superset-ui-core (#40737)
add ddeec68c88a chore(deps): bump dompurify from 3.4.5 to 3.4.7 in /superset-frontend/plugins/legacy-preset-chart-nvd3 (#40735)
add 0d1b702ce8d feat(extensions): static supply-chain controls — denylist + version policy (#40668)
add 7d323dc0ae3 fix(filters): Enable decimal values in Range filter slider (#34742)
add 639866625db fix(echarts): Show full labels in bar chart tooltips (#34759)
add f5f4a415981 chore(deps-dev): bump @babel/register from 7.29.3 to 7.29.7 in /superset-frontend (#40757)
add 937eff6d52c chore(deps-dev): bump oxlint from 1.66.0 to 1.67.0 in /superset-frontend (#40755)
add 04939c94cc4 chore(deps-dev): bump @babel/node from 7.29.0 to 7.29.7 in /superset-frontend (#40752)
add 94c1a1b1f20 chore(deps-dev): bump @babel/runtime-corejs3 from 7.29.2 to 7.29.7 in /superset-frontend (#40751)
add ccce0cab187 chore(deps): bump content-disposition from 2.0.0 to 2.0.1 in /superset-frontend (#40750)
add 74060987082 fix(dashboard-filter): Consider dashboard filters to charts not declared in the dashboard position (#40774)
add 79c74af2e9d ci: cache npm downloads in frontend-heavy workflows (#40744)
add 875673f6707 fix(asyncEvent): use Map for job listener/retry registries (#40747)
add 42367afb25c fix(reports): add per-tile animation wait to prevent partial ECharts renders in tiled screenshots (#40694)
add 98c096df056 chore(deps): bump @babel/runtime from 7.29.2 to 7.29.7 in /superset-frontend (#40753)
add 45a616439bb chore(deps): update dayjs requirement from ^1.11.20 to ^1.11.21 in /superset-frontend/packages/superset-ui-core (#40736)
add aa4092ba682 fix(mcp): add select_columns lean defaults to get_dashboard_info, get_chart_info, get_dataset_info (#40473)
add fa42b13eb83 fix(dataset): preserve numeric column types when pydruid infers STRING from first-row value (#40677)
add 601f9c2b8c3 fix(embedded): add guest token to streaming exports (#40712)
add 55bb75efe6d fix(dashboard): prevent filter dropdown button from disappearing during layout recalculations (#38193)
add 645aa3b1df4 chore(deps-dev): bump eslint-plugin-prettier from 5.5.5 to 5.5.6 in /superset-frontend (#40795)
add 81192048572 fix(dashboard): sort Dynamic Group By display values alphabetically (#40220)
add 108e40cbb61 feat(duration-format): replace pretty-ms with native Intl.DurationFormat for localized duration formatting (#39330)
add 550c80f640a chore(lint): convert ChartRenderer, Chart, DrillByChart to function components (#39459)
add 70ee6e21eb6 chore(deps-dev): bump @babel/core from 7.29.0 to 7.29.7 in /superset-frontend (#40800)
add b069b6caf6c chore(deps-dev): bump terser-webpack-plugin from 5.6.0 to 5.6.1 in /superset-frontend (#40797)
add 20024ce3af2 chore(deps-dev): bump eslint-plugin-react-you-might-not-need-an-effect from 0.10.2 to 0.10.4 in /superset-frontend (#40796)
add 44777cc1109 chore(deps): bump @ant-design/icons from 6.2.3 to 6.2.5 in /superset-frontend (#40794)
add 2aca35cb68d chore(deps): bump react-map-gl from 8.1.0 to 8.1.1 in /superset-frontend (#40793)
add e956f82224b fix(dashboard): prevent divider display controls from reverting on second save (#40696)
add 1623ceda73d fix(result_set): preserve JSON/JSONB data as objects instead of strings (#38172)
add 19d01521bf5 fix(dashboard): replace chartsInScope references at import time (#38171)
add 81bc3088e22 fix(dashboard): prevent stale favorite status errors after navigation (#38156)
add 863e93539ae fix(dashboard): clean up JSON formatting and contribution suffix in V… (#40683)
add 0984839788f ci: required-check anchors for cypress-matrix and playwright-tests (unblock docs-only PRs) (#40780)
add 7eaaffde896 ci: cache npm downloads in the translations workflow (#40779)
add 7f452e40966 chore(deps): bump @ant-design/icons from 6.2.3 to 6.2.5 in /docs (#40792)
add 5a6306983e5 docs: add social media links to website footer and README (#38108)
add 4715cfd3725 chore(deps-dev): bump eslint-plugin-prettier from 5.5.5 to 5.5.6 in /docs (#40791)
add 2babb480818 chore(deps): bump ioredis from 5.10.1 to 5.11.0 in /superset-websocket (#40734)
add 3d7021fdf95 chore(deps): bump hot-shots from 14.3.1 to 15.0.0 in /superset-websocket (#40789)
add 151df43d9d0 fix(docker): prevent static asset 404s by waiting for webpack dev server (#38161)
add 6b0d7479399 fix: cache warmup using WebDriver for reliable authentication (#38449)
add 381b99ae84b fix(csv): respect CSV_EXPORT config for decimal separator and delimiter (#38170)
add b85a2cdab15 fix: ODPS (MaxCompute) data source table preview failed (#38174)
add 84aaaaa6b08 fix(mcp): filter sensitive database columns from list_databases loaded-metadata (#40771)
add ef7379c47e3 chore(mcp): remove low-value list/info tools that fail agent-native policy (#40690)
add 6348aa19173 chore(deps-dev): update taos-ws-py requirement from >=0.3.8 to >=0.6.9 (#40831)
add d3f07a7ba54 chore(deps-dev): update playwright requirement from <2,>=1.37.0 to >=1.60.0,<2 (#40829)
add 2463eb65b1c chore(deps-dev): bump python-ldap from 3.4.5 to 3.4.7 (#40827)
add 9da45363542 chore(deps-dev): update oceanbase-py requirement from >=0.0.1 to >=0.0.1.2 (#40824)
add 849f297e9d2 chore(deps-dev): update sqlalchemy-vertica-python requirement from <0.7,>=0.5.9 to >=0.6.3,<0.7 (#40826)
add 138e405cb60 chore(deps): bump xlsxwriter from 3.0.9 to 3.2.9 (#40825)
add c0a12f4cfb5 chore(deps-dev): update sqlalchemy-kusto requirement from <4,>=3.0.0 to >=3.1.2,<4 (#40828)
add 9bb700ff0df chore(deps-dev): bump concurrently from 9.2.1 to 10.0.0 in /superset-frontend (#40798)
add 5da63d716be fix(toasts): stop the toast overlay from covering controls behind it (#40805)
add 06f95f53623 refactor(explore): migrate Explore Controls from react-dnd to @dnd-kit (#37880)
add 21189ae130a fix(dashboard): update browser tab title when dashboard is renamed (#40730)
add 7c7ab88a602 feat(ListView): expose expandable prop (#40765)
add dc423b22b31 feat(embedded): support themeMode URL param for initial theme (#40760)
add a5fe47ee715 docs(footer): render social icons as uniform white (#40854)
add b4eda37fbf9 chore(deps-dev): bump baseline-browser-mapping from 2.10.32 to 2.10.33 in /superset-frontend (#40849)
add 983f2818b0e chore(deps-dev): bump @swc/plugin-emotion from 14.10.0 to 14.12.0 in /superset-frontend (#40848)
add c5d795c1f11 chore(deps): bump react-syntax-highlighter from 16.1.0 to 16.1.1 in /superset-frontend (#40847)
add 709fd52b0b3 chore(deps-dev): bump tsx from 4.22.3 to 4.22.4 in /superset-frontend (#40845)
add 534d2191ffe chore(deps): bump react-draggable from 4.5.0 to 4.6.0 in /superset-frontend (#40844)
add c6ecaf9642b chore(deps): bump js-yaml from 4.1.1 to 4.2.0 in /docs (#40843)
add 228ac0d5687 chore(deps): bump baseline-browser-mapping from 2.10.32 to 2.10.33 in /docs (#40842)
add ba6e9cc90fa chore(deps-dev): bump eslint from 10.4.0 to 10.4.1 in /superset-websocket (#40840)
add 507cf936877 test(dashboard): API-created dashboards should link charts from position_json (#32966) (#40816)
add 911bb9dcdac fix: harden ZIP safety checks (total-size cap, zero-division guard) and extension path matching (#40664)
add 580be2cf32d fix(extensions-cli): constrain backend include patterns to the backend directory (#40593)
add e9e92451120 test(mixed-chart): dashboard filters should reach both Mixed chart queries (#29519) (#40818)
add 8fdabc44f50 chore(deps): update react-draggable requirement from ^4.5.0 to ^4.6.0 in /superset-frontend/packages/superset-ui-core (#40841)
add 1e8438a478f test(dashboard): migrate favorite toggle Cypress spec to RTL (#40872)
add fe9818226d7 fix(viz): gate stacktrace behind SHOW_STACKTRACE and allowlist resample method (#40636)
add 8eda626466d fix: raise random_key entropy and add expiry to async query tokens (#40638)
add 837f41986d5 fix: reject default guest/async JWT secrets at startup (#40649)
add 3afbb48188b fix(uploads,dao): add zip-safety check to columnar reader and cap DAO page size (#40637)
add fb0e7fecafa ci: authenticate Docker Hub pulls for service containers (#40875)
add 1188cfef1d4 ci: make Docker-build npm ci resilient to transient network blips (#40874)
add c58408d76c4 fix(revert 40875): "ci: authenticate Docker Hub pulls for service containers" failed (#40879)
add d7ddf2023da fix(theme): SDK theme config overrides dashboard-level theme in embedded mode (#40763)
add 2f71771b561 fix(sqllab): prevent corrupted query state from blocking SQL Lab access (#40580)
add 56c856e802d fix(explore): require Update Chart for Matrixify dimension changes (#40851)
add 3259a4a781e fix(translation): update german translation for slider range (#40902)
add 443fd7bcee5 fix(assets): Support uploading tags using the assets import endpoint (#38343)
add 9105adc67b2 fix(mcp): return a generic message when a request is unauthenticated (#40861)
add a32b7b15234 fix(migrations): replay user_favorite_tag migration for 3.0.x upgraders (#38157)
add f70cd8b5b89 feat(embedded-sdk): add fetchGuestToken timeout and clean up refresh timer (#40870)
add 62084f4015e feat(websocket): improve operational logging and crash safety (#40868)
add 7b1e1e5668a fix(charts): route CSV result format through the escaping CSV writer (#40859)
add 95d46073cbe feat(websocket): add backpressure handling for slow consumers (#40857)
add b64dd4af4a1 fix(mcp): handle JWKS fetch network errors during token verification (#40869)
add 0133ebc9f26 feat(mcp): log successful JWT authentication events (#40864)
add 58d29e07797 chore(deps-dev): bump concurrently from 10.0.0 to 10.0.3 in /superset-frontend (#40897)
add 6681ab571d8 perf(websocket): yield to the event loop while processing large event batches (#40866)
add bf9ad4d2ba3 fix: set charset via content_type to avoid malformed Content-Type headers (#40658)
add 17fb7a7c757 chore(helm): bump app version to 6.1.0 (#40862)
add 7a3b8f49c7b chore(deps): bump actions/checkout from 6.0.2 to 6.0.3 (#40892)
add 6311e2c315e fix: use pd.to_numeric in df_metrics_to_num to handle string-encoded numerics from ClickHouse (#40190)
add f51736437d0 chore(deps): bump shell-quote from 1.8.3 to 1.8.4 in /docs (#40910)
add efa88b9b7f4 chore(deps-dev): bump eslint-import-resolver-typescript from 4.4.4 to 4.4.5 in /superset-frontend (#40899)
add 39490894389 chore(deps-dev): bump oxlint from 1.67.0 to 1.68.0 in /superset-frontend (#40898)
add 065578e48a5 fix(commands,api): enforce command validation, sanitize export filename/token, set cache TTLs (#40655)
add 336384bc673 chore(deps): bump react-map-gl from 8.1.0 to 8.1.1 in /superset-frontend (#40896)
add 8117488fd82 feat(websocket): add configurable per-channel and total connection limits (#40856)
add f9ba11961ad chore(deps-dev): bump @typescript-eslint/eslint-plugin from 8.60.0 to 8.60.1 in /superset-frontend (#40895)
add ff4783f1e43 chore(deps): bump github/codeql-action from 4.36.0 to 4.36.1 (#40894)
add 2d1b17d1ca8 chore(deps-dev): bump @typescript-eslint/parser from 8.60.0 to 8.60.1 in /docs (#40893)
add eeaa213475b chore(deps): update react requirement from ^19.2.6 to ^19.2.7 in /superset-frontend/plugins/legacy-plugin-chart-chord (#40890)
add 9b4aaaa0808 chore(deps-dev): bump @typescript-eslint/parser from 8.60.0 to 8.60.1 in /superset-websocket (#40889)
add ab0fa5c3c87 test(dashboard): add regression tests for certification field clearing (#40758)
add 76f334f252e fix(i18n): stop fuzzy-matching new strings so adding one doesn't fail babel-extract (#40909)
add c88438ad35d chore(deps-dev): bump typescript-eslint from 8.60.0 to 8.60.1 in /superset-websocket (#40887)
add 88ea96d4172 chore(deps-dev): bump typescript-eslint from 8.60.0 to 8.60.1 in /docs (#40891)
add a0cf7984098 fix(embedded): add Sec-Fetch-Dest defense-in-depth check on the embedded view (#40667)
add 568f34d6d8b fix(mcp): enforce audience, algorithm, issuer binding, and token scopes (strict mode) (#40653)
add 004101a7520 fix(rls): apply standard datasource access checks in RLS rule commands (#40650)
add 00e3682aaf1 fix(dashboard): URL-encode native_filters in permalink redirect (#40660)
add 543ad04ca05 chore(deps): bump pyarrow from 20.0.0 to 24.0.0 (#39756)
add d51753dfdcf chore(lint): convert reactify.tsx to function component (#39458)
add c0e78f39d7b fix: replace deprecated appbuilder.app with current_app (#40876)
add 1bfdb19e889 test(dashboard): RTL coverage for native filter modal and sidebar (#40778)
add 0a1e51f542a fix(schemas): tighten guest dataset fields, external_url protocols, ssh creds, prophet bounds (#40640)
add 08b8bdecbd4 fix(charts): tighten chart schema input validation (query_context JSON, prophet/rolling bounds) (#40634)
add 2b584113919 chore(deps): bump ag-grid-react from 35.3.0 to 35.3.1 in /superset-frontend (#40928)
add 3d1253c9925 build(major,dev-deps): upgrade Storybook from v8 to v10 (#40713)
add 5a0e3f15ca7 feat(embedded): add guest token revocation support (#40671)
add f27424d72e3 fix(embedded): show filter bar controls on embedded dashboards with tabs (#39417)
add cc5a3ddd05d test(dashboard-filter): RTL coverage for horizontal filter bar (#40782)
add 248ccadecd8 fix(extensions): load extensions async to avoid blocking initial page render (#40915)
add 3380496e9fb feat(i18n): add Romanian (ro) translations (#36712)
add 4f69949c101 chore(deps-dev): bump eslint-plugin-storybook from 10.4.1 to 10.4.2 in /superset-frontend (#40949)
add c3df60c12b1 chore(deps): bump selenium from 4.32.0 to 4.44.0 (#40945)
add 320965612d6 chore(deps-dev): update clickhouse-connect requirement from <2.0,>=0.13.0 to >=1.1.1,<2.0 (#40944)
add 0f597058067 chore(deps): bump wtforms from 3.2.1 to 3.2.2 (#40943)
add c9c05d8d0a8 chore(deps-dev): update thrift requirement from <1.0.0,>=0.14.1 to >=0.23.0,<1.0.0 (#40942)
add 11af932099e chore(deps): bump dompurify from 3.4.7 to 3.4.8 in /superset-frontend/plugins/legacy-preset-chart-nvd3 (#40937)
add 5f06e66cf1c chore(deps): bump @deck.gl/mapbox from 9.3.2 to 9.3.3 in /superset-frontend (#40927)
add ef574092094 chore(deps): bump ag-grid-community from 35.3.0 to 35.3.1 in /superset-frontend/packages/superset-ui-core (#40923)
add 97058d2cf09 chore(deps): bump fuse.js from 7.3.0 to 7.4.1 in /superset-frontend (#40922)
add a8a1d9c17d6 chore(deps): bump morgan from 1.10.1 to 1.11.0 in /superset-websocket/utils/client-ws-app (#40921)
add 6cd9bdee0bf chore(deps-dev): bump @formatjs/intl-durationformat from 0.10.3 to 0.10.13 in /superset-frontend (#40925)
add b2c5a1ecb33 chore(deps): bump jsonpath-ng from 1.7.0 to 1.8.0 (#40940)
add aa872cd0a14 chore(deps): bump dompurify from 3.4.9 to 3.4.8 in /superset-frontend/packages/superset-ui-core (#40938)
add 7d046340dc1 chore(deps): bump ag-grid-react from 35.3.0 to 35.3.1 in /superset-frontend/packages/superset-ui-core (#40924)
add b1d965932d7 chore(deps-dev): bump @typescript-eslint/eslint-plugin from 8.60.0 to 8.60.1 in /superset-websocket (#40888)
add f79a88c6857 test(core): add unit tests for split function (#40819)
add da9756ef143 chore(issue template): bump version numbers to reflect 6.1.0 released (#40479)
add 046b1b61b38 fix(maps): preserve OSM styles and configurable renderer defaults (#40804)
add 97073340cce chore(deps-dev): update sqlalchemy-exasol requirement from <8.0,>=2.4.0 to >=7.0.0,<8.0 (#40946)
add cc2845168d5 chore(deps-dev): update starrocks requirement from >=1.0.0 to >=1.3.3 (#40939)
add 2b18dc0a5c4 fix(radar): apply number formatter to tooltip (#37033)
add 6c5ad1e9124 fix(sqllab): apply SQL controls (RLS/DML/disallowed) to cost estimation (#40662)
add db7e1c67d81 feat(build): update Node version to v24 (#40835)
add 32ae0afcac0 chore(deps): bump github/codeql-action from 4.36.1 to 4.36.2 (#40966)
add 378473a6fe5 fix(matrixify): Set singular metric field for pie and other single-me… (#40852)
add 42d0c4436e5 fix(permalink): accept null entries in activeTabs for v5-imported dashboards (#40969)
add 058be4b904b test(core): cover invalid raster tile URL fallback in mapStyles (#40974)
add b0d7880ac0f fix: use Series.iloc for positional access in generate_join_column (#40936)
add 74845eaf0b5 fix(deps): cap paramiko <4.0 to keep SSH tunneling working (#40973)
add 9938ee273f1 feat: terminate active sessions when an account is disabled (#40695)
add 663b47aa750 feat: support guest-token revocation per embedded dashboard (#40676)
add 814b72c6f91 feat(security): force password change on first use (opt-in) (#40669)
add 2f008afca93 fix(mcp): add dataset_id to update_chart to support rebinding chart datasource (#40853)
add 8ed7ebb5b70 chore(i18n): lint + dev warning for eager t() in controlPanel configs (#40379)
add 9e7e1ecdbc3 chore(deps): bump ioredis from 5.11.0 to 5.11.1 in /superset-websocket (#40989)
add e7337eacfc3 chore(deps-dev): bump sqlalchemy-bigquery from 1.15.0 to 1.17.0 (#41016)
add a8e26c254f4 chore(deps-dev): bump tiktoken from 0.12.0 to 0.13.0 (#41013)
add daff4fd87e1 chore(deps-dev): update pymssql requirement from <3,>=2.2.8 to >=2.3.13,<3 (#41012)
add 4a5c0d9042a chore(deps): bump joi from 17.13.3 to 17.13.4 in /docs (#41009)
add b05fe4857e5 fix(chart): require chart access for query_context-only updates (#40648)
add 8d315dd2b6c fix(UI): remove getPopupContainer prop causing dual scrollbars in dropdown (#36059)
add e4f82109e46 fix(mcp): suppress AuthlibDeprecationWarning from authlib.jose imports (#40977)
add ca0596bca2e chore(deps-dev): bump progress from 1.6 to 1.6.1 (#41014)
add 6487cf03c59 fix(security): Add input validation to cancel_query_id to prevent injection (#36722)
add a41869ec7d5 fix(dashboard): build example-export sample data through the dataset query path (#40976)
add e5986b32ffb fix(charts): evaluate access before rendering query filters; isolate macro env (#40982)
add aa3d2b9e81e fix(dashboard): validate native-filter data requests against filter targets (#40979)
add 5fb13f102a3 fix(network): validate target hostname in outbound requests (#39301)
add 3c6239363b1 fix(db): preserve percent encoding in database passwords (#36783)
add 9d167dfada1 fix: type error bug in convert_tbl_column_to_sqla_col (#31780)
add d120b1c2506 feat(security): enforce password complexity policy (min length + common-password blocklist) (#40670)
add 02f32469b05 fix(pandas-postprocessing): resolve SettingWithCopyWarning in histogram and boxplot (#36605)
add 13145e8ad8f fix: Tooltip not displayed on bottom edge of the map (#37105)
add 6b682b1aa1e fix(pivot_table): next try refreshed pr for fixing sorting in pivot table (#38080)
add df0668eda5f feat(api): return uuid in POST response for dataset, chart, and dashboard (#37806)
add c0fbe243e8b fix(echarts): cap tooltip at 80vh with internal scroll (#37022)
add e7ecf5479af chore(deps): bump flask-wtf from 1.2.2 to 1.3.0 (#41015)
add 669ddb2913a test(gauge): gauge should paint configured interval colors on a dashboard (#28766) (#40821)
add 48feb432dea test(pie): guard NULL + named group values all render as slices (#33174) (#41018)
add 99bdacd2e1d fix(explore): theme SQL autocomplete completion highlight consistently (#41005)
add c9344986969 fix(dashboard): do not add importer as owner when overwriting existing dashboard (#38615)
add 9f815656254 feat(uploads): add optional max file size for data uploads (#40860)
add 9ec9c8658b8 fix(query_context_processor): apply CSV encoding to follow the encoding settings of 'CSV_EXPORT' (#34806)
add f88f1fad04d fix(table): sort metric columns numerically regardless of display format (#39775)
add 2734bde504c fix(chart): Allow Admin non-owner to save chart (#37175)
add d66895c5662 build(dev-deps): update `webpack`-related packages to next major version (#41022)
add 9d2f625e550 feat(encrypt): selectable encryption engine + AES-GCM re-encryption migrator (#40654)
add 2dd8fe362f3 fix(DynamicEditableTitle): preserve in-flight edits when title prop changes (#39861)
add 820e3d18d3d fix(mcp): make search_tools query optional to fix null content on tool discovery (#40906)
add dd3a61156b1 fix(handlebars): register a dayjs-backed formatDate helper (#32960) (#40817)
add e5b6642b186 test(pivot-table): embedded E2E that collapse state survives scrolling (#33406) (#40820)
add a1bc3c67eda fix(embedded): skip CSRF token fetch for guest streaming chart exports (#41004)
add 38cc70de2f7 test(chart): URL params land on each query in chart-data request (#40913)
add 5a97e01d6e8 test(dashboard): migrate standalone mode Cypress spec to RTL (#40914)
add b656b1d4770 fix(reports): escape LIKE wildcards in text filter and preserve typed screenshot width (#40980)
add bf5daf0a1e2 fix(mcp): redirect stdio click echo without recursion (#40814)
add 2d8447af423 chore(deps-dev): bump baseline-browser-mapping from 2.10.33 to 2.10.34 in /superset-frontend (#41041)
add a435002293e chore(deps-dev): bump @types/jquery from 4.0.0 to 4.0.1 in /superset-frontend (#41040)
add 66733a5d725 chore(deps): bump codecov/codecov-action from 6.0.1 to 7.0.0 (#41039)
add 9d72a39e108 chore(deps): bump caniuse-lite from 1.0.30001793 to 1.0.30001797 in /docs (#41038)
add 5719f8e349b chore(deps-dev): bump @types/node from 25.9.1 to 25.9.2 in /superset-frontend (#41037)
add b5ca00d06bc chore(deps-dev): bump @types/node from 25.9.3 to 25.9.2 in /superset-frontend/packages/superset-ui-core (#41035)
add 886bb200d0e chore(deps): bump react-arborist from 3.8.0 to 3.10.1 in /superset-frontend (#41033)
add 919c6eddc1f chore(deps-dev): bump @types/node from 25.9.1 to 25.9.2 in /superset-websocket (#41032)
add 8093197c979 chore(deps): bump baseline-browser-mapping from 2.10.33 to 2.10.34 in /docs (#41036)
add 11e35eca3b8 chore(deps-dev): bump eslint from 8.57.1 to 10.4.1 in /superset-frontend (#40846)
add dad7dae4f65 chore(deps): bump launch-editor from 2.9.1 to 2.14.1 in /superset-frontend (#41065)
add 48b755470f5 chore(deps): bump form-data from 4.0.5 to 4.0.6 in /superset-frontend (#41063)
add b078ae4b51d chore(deps): bump launch-editor from 2.11.1 to 2.14.1 in /docs (#41062)
add 1ae115981f8 chore(deps): bump form-data from 4.0.5 to 4.0.6 in /superset-frontend/cypress-base (#41061)
add 9e2c4533c8a chore(deps): bump @babel/core from 7.28.6 to 7.29.7 in /docs (#41058)
add 073599bd0cc chore(deps-dev): bump @babel/core from 7.25.2 to 7.29.6 in /superset-embedded-sdk (#41057)
add 4b96b91b536 feat(mcp): add aggregation field to BigNumberChartConfig for Big Number with Trendline (#40775)
add 379435b7eb5 feat(ssh_tunnel): add opt-in server host key verification (#40673)
add 09b4bc51a32 fix(charts): rename deprecated query object fields in schema before QueryObject construction (#41056)
add e16bb29faf9 fix(embedded): allow guests to apply a Time Grain native filter (#32768) (#41017)
add c1b5d05f83b fix(bigquery): set default dataset from schema in adjust_engine_params (#40776)
add 4ae9980e4cd chore(ci): remove unused Claude PR Assistant workflow (#41081)
add f56524bb710 chore(frontend): remove unused modules flagged by knip (#41072)
add 28aedc82c3a fix(upload): database field shows validation warning after selecting a database (#41078)
add 6e2db42d980 chore(lint): convert dashboard components to function components (#39460)
add 1311d040bac feat(deckgl): add point radius controls for GeoJSON layer (#33247)
add a69f9eb00d0 chore(deps-dev): bump oxlint from 1.68.0 to 1.69.0 in /superset-frontend (#41094)
add fe625a917ed chore(deps-dev): bump @typescript-eslint/parser from 8.60.1 to 8.61.0 in /docs (#41093)
add 0c696cea7ed chore(deps): bump google-auth-library from 10.6.2 to 10.7.0 in /superset-frontend (#41091)
add 9d8287e1bd7 chore(deps-dev): bump @typescript-eslint/parser from 8.60.1 to 8.61.0 in /superset-websocket (#41090)
add 0ec7e7df997 chore(deps): bump dompurify from 3.4.8 to 3.4.9 in /superset-frontend (#41089)
add d839cca9958 chore(deps-dev): update pyocient requirement from <2,>=1.0.15 to >=1.0.15,<4 (#40941)
add 1a4941eee5a chore(deps-dev): bump hdbcli from 2.28.20 to 2.28.21 (#41084)
add c90b2571d70 chore(deps-dev): bump xlrd from 2.0.1 to 2.0.2 (#41083)
add 7cb4990403f feat(mcp): add create_dataset tool to register physical tables as datasets (#40340)
add 7b4efacbc2e fix(charts): add default padding to match other charts (#36895)
add 01ed81785e5 fix(dashboard): required filters reliably apply default + Apply enables on change (#40470)
add 6d08e79259a feat(security): Add extension hooks for custom access control, ownership, and asset lifecycle (#40707)
add 257dafeec51 fix(query): don't mutate ad-hoc ORDER BY expressions when building queries (#40993)
add e7d1c08dce6 test(export): dashboard export must not leak env-local chartIds
add 6f833fd695d style(test): remove time-sensitive language and redundant import in #32972 regression test
add da6fd77afb1 fix(export): strip env-local chartId from dashboard position_json export (#32972)
add 09db6dc6445 fix(export): harden chart id stabilization for native/cross filters
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 (42648f72936)
\
N -- N -- N refs/heads/tdd/issue-32972-export-stable-chart-ids (09db6dc6445)
You should already have received notification emails for all of the O
revisions, and so the following emails describe only the N revisions
from the common base, B.
Any revisions marked "omit" are not gone; other references still
refer to them. Any revisions marked "discard" are gone forever.
No new revisions were added by this update.
Summary of changes:
.asf.yaml | 14 +-
.github/ISSUE_TEMPLATE/bug-report.yml | 2 +-
.github/dependabot.yml | 32 -
.github/workflows/bashlib.sh | 4 -
.github/workflows/bump-python-package.yml | 3 +-
.github/workflows/check-python-deps.yml | 15 +-
.github/workflows/check_db_migration_confict.yml | 2 +-
.github/workflows/claude.yml | 88 -
.github/workflows/codeql-analysis.yml | 39 +-
.github/workflows/dependency-review.yml | 4 +-
.github/workflows/docker.yml | 58 +-
.github/workflows/embedded-sdk-release.yml | 6 +-
.github/workflows/embedded-sdk-test.yml | 6 +-
.github/workflows/generate-FOSSA-report.yml | 2 +-
.github/workflows/github-action-validator.yml | 10 +-
.github/workflows/issue_creation.yml | 3 +-
.github/workflows/labeler.yml | 5 +
.github/workflows/latest-release-tag.yml | 46 +-
.github/workflows/license-check.yml | 6 +-
.github/workflows/pr-lint.yml | 10 +-
.github/workflows/pre-commit.yml | 14 +-
.github/workflows/release.yml | 4 +-
.github/workflows/showtime-trigger.yml | 6 +-
.github/workflows/superset-app-cli.yml | 2 +-
.github/workflows/superset-docs-deploy.yml | 8 +-
.github/workflows/superset-docs-verify.yml | 14 +-
.github/workflows/superset-e2e.yml | 154 +-
.github/workflows/superset-extensions-cli.yml | 9 +-
.github/workflows/superset-frontend.yml | 12 +-
.github/workflows/superset-helm-lint.yml | 4 +-
.github/workflows/superset-helm-release.yml | 2 +-
.github/workflows/superset-playwright.yml | 56 +-
.../workflows/superset-python-integrationtest.yml | 97 +-
.github/workflows/superset-python-presto-hive.yml | 58 +-
.github/workflows/superset-python-unittest.yml | 60 +-
.github/workflows/superset-translations.yml | 18 +-
.github/workflows/superset-websocket.yml | 3 +-
.github/workflows/supersetbot.yml | 4 +-
.github/workflows/tag-release.yml | 15 +-
.github/workflows/tech-debt.yml | 4 +-
Dockerfile | 9 +-
README.md | 5 +
SECURITY.md | 2 +-
UPDATING.md | 154 +
docker-compose.yml | 25 +
docker/docker-bootstrap.sh | 18 +-
docs/.nvmrc | 2 +-
docs/admin_docs/configuration/cache.mdx | 33 +
docs/admin_docs/installation/pypi.mdx | 9 +-
.../version-6.1.0/installation/pypi.mdx | 9 +-
.../contributing/development-setup.md | 2 +
docs/docusaurus.config.ts | 17 +
docs/i18n/en/docusaurus-theme-classic/footer.json | 2 +-
docs/netlify.toml | 14 +-
docs/package.json | 16 +-
docs/sip/authenticated-encryption-at-rest.md | 136 +
docs/src/styles/main.css | 52 +-
docs/static/img/community/reddit-symbol.svg | Bin 0 -> 1995 bytes
docs/static/img/community/slack-symbol.svg | Bin 0 -> 1911 bytes
docs/yarn.lock | 478 +-
helm/superset/Chart.yaml | 4 +-
helm/superset/README.md | 2 +-
pyproject.toml | 56 +-
requirements/base.in | 2 +-
requirements/base.txt | 20 +-
requirements/development.txt | 32 +-
scripts/translations/babel_update.sh | 13 +-
.../translations/check_translation_regression.py | 182 +-
scripts/uv-pip-compile.sh | 23 +-
superset-embedded-sdk/.nvmrc | 2 +-
superset-embedded-sdk/README.md | 116 +-
superset-embedded-sdk/package-lock.json | 288 +-
.../src/guestTokenRefresh.test.ts | 8 +
superset-embedded-sdk/src/guestTokenRefresh.ts | 1 +
superset-embedded-sdk/src/index.ts | 81 +-
.../src/withTimeout.test.ts | 28 +-
.../src/withTimeout.ts | 42 +-
.../src/superset_extensions_cli/cli.py | 24 +-
superset-extensions-cli/tests/test_cli_build.py | 150 +
superset-frontend/.eslintignore | 34 -
superset-frontend/.eslintrc.js | 523 -
superset-frontend/.eslintrc.minimal.js | 124 -
superset-frontend/.nvmrc | 2 +-
superset-frontend/.storybook/{main.js => main.mjs} | 38 +-
superset-frontend/.storybook/preview.jsx | 6 +-
.../.storybook/shared/ResizableChartDemo.tsx | 2 +-
superset-frontend/babel.config.js | 1 +
.../cypress/e2e/dashboard/actions.test.js | 67 -
.../cypress-base/cypress/e2e/dashboard/utils.ts | 12 -
superset-frontend/cypress-base/package-lock.json | 88 +-
.../eslint-plugin-i18n-strings/index.ts | 80 +
.../no-eager-t-in-config.test.ts | 86 +
.../no-template-vars.test.ts | 7 +-
.../eslint-plugin-icons/no-fontawesome.test.ts | 5 +-
superset-frontend/eslint.config.minimal.js | 137 +
superset-frontend/jest.config.js | 2 +-
superset-frontend/oxlint.json | 12 +-
superset-frontend/package-lock.json | 16171 +++++++-----------
superset-frontend/package.json | 123 +-
.../packages/superset-core/package.json | 10 +-
.../packages/superset-core/src/menus/index.ts | 36 +-
.../superset-core/src/theme/GlobalStyles.tsx | 15 +
.../packages/superset-core/src/theme/types.ts | 6 +
.../src/translation/TranslatorSingleton.test.ts | 69 +-
.../src/translation/TranslatorSingleton.ts | 31 +-
.../packages/superset-core/src/views/index.ts | 32 +-
.../src/operators/boxplotOperator.ts | 2 +-
.../src/shared-controls/matrixifyControls.tsx | 1 -
.../superset-ui-chart-controls/src/types.ts | 10 +-
.../src/utils/D3Formatting.ts | 2 +-
.../packages/superset-ui-core/package.json | 21 +-
.../Matrixify/MatrixifyGridGenerator.test.ts | 49 +
.../components/Matrixify/MatrixifyGridGenerator.ts | 1 +
.../src/chart/components/reactify.tsx | 147 +-
.../AsyncAceEditor/AsyncAceEditor.test.tsx | 13 +
.../src/components/AsyncAceEditor/index.tsx | 17 +-
.../AutoComplete/AutoComplete.stories.tsx | 2 +-
.../components/Breadcrumb/Breadcrumb.stories.tsx | 2 +-
.../components/CachedLabel/CachedLabel.stories.tsx | 4 +-
.../src/components/Checkbox/Checkbox.stories.tsx | 2 +-
.../DropdownContainer/DropdownContainer.tsx | 31 +-
.../DynamicEditableTitle.regression.test.tsx | 39 +-
.../src/components/DynamicEditableTitle/index.tsx | 29 +-
.../components/EmptyState/EmptyState.stories.tsx | 2 +-
.../src/components/FaveStar/FaveStar.stories.tsx | 2 +-
.../src/components/Grid/Grid.stories.tsx | 2 +-
.../components/IconButton/IconButton.stories.tsx | 2 +-
.../src/components/Input/Input.stories.tsx | 2 +-
.../src/components/Label/Label.stories.tsx | 4 +-
.../src/components/Layout/Layout.stories.tsx | 2 +-
.../ListViewCard/ListViewCard.stories.tsx | 2 +-
.../src/components/ListViewCard/index.tsx | 3 +-
.../src/components/Modal/Modal.tsx | 22 +-
.../superset-ui-core/src/components/Modal/types.ts | 2 +-
.../src/components/Radio/Radio.stories.tsx | 2 +-
.../SafeMarkdown/SafeMarkdown.stories.tsx | 2 +-
.../src/components/SafeMarkdown/SafeMarkdown.tsx | 49 +-
.../src/components/Skeleton/Skeleton.stories.tsx | 2 +-
.../src/components/Switch/Switch.stories.tsx | 2 +-
.../src/components/Table/Table.stories.tsx | 4 +-
.../ActionCell/ActionCell.stories.tsx | 2 +-
.../Table/cell-renderers/ActionCell/fixtures.ts | 2 +-
.../BooleanCell/BooleanCell.stories.tsx | 2 +-
.../ButtonCell/ButtonCell.stories.tsx | 4 +-
.../cell-renderers/NullCell/NullCell.stories.tsx | 2 +-
.../NumericCell/NumericCell.stories.tsx | 2 +-
.../cell-renderers/TimeCell/TimeCell.stories.tsx | 2 +-
.../src/components/Table/index.tsx | 2 +
.../TableCollection/TableCollection.stories.tsx | 2 +-
.../TableCollection/TableCollection.test.tsx | 6 +
.../src/components/TableCollection/index.tsx | 31 +-
.../TimezoneSelector/TimezoneSelector.stories.tsx | 2 +-
.../src/components/Tree/Tree.stories.tsx | 2 +-
.../components/TreeSelect/TreeSelect.stories.tsx | 2 +-
.../components/Typography/Typography.stories.tsx | 2 +-
.../src/components/Upload/Upload.stories.tsx | 2 +-
.../src/connection/SupersetClientClass.ts | 3 +-
.../superset-ui-core/src/number-format/README.md | 6 +-
.../factories/createDurationFormatter.ts | 47 +-
.../utils/getIntlDurationFormatter.ts} | 22 +-
.../src/number-format/utils/parseMilliseconds.ts | 57 +
.../superset-ui-core/src/query/types/Dashboard.ts | 1 -
.../superset-ui-core/src/utils/html.test.tsx | 29 +
.../packages/superset-ui-core/src/utils/html.tsx | 46 +-
.../packages/superset-ui-core/src/utils/index.ts | 1 +
.../superset-ui-core/src/utils/mapStyles.test.ts | 295 +
.../superset-ui-core/src/utils/mapStyles.ts | 251 +
.../test/chart/components/reactify.test.tsx | 89 +-
.../test/components/SafeMarkdown.test.tsx | 58 +
.../factories/createDurationFormatter.test.ts | 25 +-
.../utils/getIntlDurationFormatter.test.ts | 38 +
.../number-format/utils/parseMilliseconds.test.ts | 148 +
.../superset-ui-core/test/utils/tooltip.test.ts | 21 +-
.../packages/superset-ui-core/types/intl.d.ts | 73 +
.../playwright/components/ListView/BulkSelect.ts | 84 +-
.../playwright/components/ListView/index.ts | 1 +
.../components/modals/DeleteConfirmationModal.ts | 32 +-
.../playwright/pages/ChartListPage.ts | 33 +-
.../playwright/pages/DashboardListPage.ts | 33 +-
.../playwright/pages/DatasetListPage.ts | 39 +-
superset-frontend/playwright/pages/ExplorePage.ts | 21 +
.../playwright/tests/chart/chart-list.spec.ts | 103 +-
.../tests/chart/handlebars-format-date.spec.ts | 104 +
.../tests/dashboard/dashboard-list.spec.ts | 137 +-
.../tests/dashboard/gauge-interval-colors.spec.ts | 202 +
.../mixed-chart-dashboard-filters.spec.ts | 203 +
.../playwright/tests/dataset/dataset-list.spec.ts | 128 +-
.../tests/embedded/pivot-collapse-state.spec.ts | 309 +
superset-frontend/playwright/utils/constants.ts | 7 +-
.../legacy-plugin-chart-calendar/src/utils.ts | 4 +-
.../src/vendor/cal-heatmap.ts | 27 +-
.../test/utils.test.ts | 125 +-
.../plugins/legacy-plugin-chart-chord/package.json | 2 +-
.../src/CountryMap.ts | 27 +-
.../src/ReactCountryMap.tsx | 5 +
.../legacy-plugin-chart-partition/src/Partition.ts | 3 +-
.../plugins/legacy-plugin-chart-rose/src/Rose.ts | 13 +-
.../legacy-plugin-chart-world-map/src/WorldMap.ts | 5 +-
.../test/WorldMap.test.ts | 57 +-
.../plugins/legacy-preset-chart-nvd3/package.json | 4 +-
.../plugins/legacy-preset-chart-nvd3/src/utils.ts | 55 +-
.../legacy-preset-chart-nvd3/test/utils.test.ts | 174 +
.../src/AgGridTableChart.tsx | 4 +
.../plugin-chart-ag-grid-table/src/consts.ts | 2 +
.../src/controlPanel.tsx | 18 +-
.../src/stateConversion.ts | 30 +-
.../src/styles/index.tsx | 6 +
.../src/transformProps.ts | 2 +
.../plugin-chart-ag-grid-table/src/types.ts | 2 +
.../src/utils/agGridFilterConverter.ts | 33 +-
.../src/utils/useColDefs.ts | 69 +-
.../test/controlPanel.test.tsx | 71 +
.../test/stateConversion.test.ts | 73 +
.../test/utils/agGridFilterConverter.test.ts | 61 +
.../test/utils/useColDefs.test.ts | 240 +
.../plugins/plugin-chart-echarts/package.json | 2 +-
.../BigNumberWithTrendline/transformProps.test.ts | 4 +-
.../src/Histogram/buildQuery.ts | 15 +-
.../src/Radar/transformProps.ts | 5 +-
.../plugin-chart-echarts/src/Radar/utils.ts | 7 +-
.../src/Timeseries/transformProps.ts | 6 +-
.../plugin-chart-echarts/src/components/Echart.tsx | 7 +-
.../src/utils/tooltip.test.tsx | 87 +
.../plugin-chart-echarts/src/utils/tooltip.ts | 75 +-
.../test/Histogram/buildQuery.test.ts | 81 +
.../test/Pie/transformProps.test.ts | 43 +
.../plugin-chart-echarts/test/Radar/utils.test.ts | 55 +
.../test/Timeseries/transformProps.test.ts | 97 +
.../plugins/plugin-chart-handlebars/package.json | 2 +-
.../src/components/Handlebars/HandlebarsViewer.tsx | 19 +
.../src/plugin/controls/columns.tsx | 8 +-
.../src/plugin/controls/metrics.tsx | 8 +-
.../test/components/formatDateHelper.test.ts | 70 +
.../plugins/plugin-chart-pivot-table/package.json | 2 +-
.../src/react-pivottable/utilities.ts | 173 +-
.../test/react-pivottable/tableRenders.test.tsx | 193 +
.../plugin-chart-point-cluster-map/package.json | 2 +-
.../src/MapLibre.tsx | 9 +-
.../src/controlPanel.ts | 53 +-
.../src/transformProps.ts | 16 +-
.../src/utils/mapControls.ts | 60 +
.../src/utils/mapbox.ts | 24 +-
.../test/MapLibre.test.tsx | 67 +-
.../test/controlPanel.test.ts | 83 +
.../test/transformProps.test.ts | 37 +
.../plugins/plugin-chart-table/src/Styles.tsx | 1 +
.../plugins/plugin-chart-table/src/TableChart.tsx | 11 +-
.../plugin-chart-table/src/controlPanel.tsx | 6 +-
.../plugin-chart-table/test/TableChart.test.tsx | 77 +
.../plugin-chart-table/test/controlPanel.test.tsx | 71 +
.../plugins/preset-chart-deckgl/package.json | 4 +-
.../src/CategoricalDeckGLContainer.tsx | 17 +-
.../src/DeckGLContainer.test.tsx | 240 +
.../preset-chart-deckgl/src/DeckGLContainer.tsx | 11 +-
.../preset-chart-deckgl/src/Multi/Multi.tsx | 15 +-
.../plugins/preset-chart-deckgl/src/factory.tsx | 17 +-
.../src/layers/Geojson/Geojson.test.ts | 122 -
.../src/layers/Geojson/Geojson.test.tsx | 457 +
.../src/layers/Geojson/Geojson.tsx | 46 +-
.../src/layers/Geojson/controlPanel.ts | 50 +-
.../src/layers/Polygon/Polygon.test.tsx | 115 +-
.../src/layers/Polygon/Polygon.tsx | 12 +-
.../src/utilities/Shared_DeckGL.test.ts | 161 +
.../src/utilities/Shared_DeckGL.tsx | 136 +-
.../preset-chart-deckgl/src/utils/mapbox.test.ts} | 36 +-
.../preset-chart-deckgl/src/utils/mapbox.ts | 24 +-
superset-frontend/scripts/check-custom-rules.js | 57 +
.../scripts/oxlint-metrics-uploader.js | 6 +-
.../spec/fixtures/mockNativeFilters.ts | 20 +
superset-frontend/spec/helpers/setup.ts | 4 +
superset-frontend/spec/helpers/testing-library.tsx | 7 +
.../src/SqlLab/components/AppLayout/index.tsx | 4 +-
.../src/SqlLab/components/EditorAutoSync/index.tsx | 2 +-
.../src/SqlLab/components/EditorWrapper/index.tsx | 7 +-
.../SqlLab/components/EditorWrapper/useKeywords.ts | 2 +-
.../components/ExploreCtasResultsButton/index.tsx | 2 +-
.../src/SqlLab/components/PopEditorTab/index.tsx | 2 +-
.../SqlLab/components/QueryAutoRefresh/index.tsx | 2 +-
.../SqlLab/components/QueryLimitSelect/index.tsx | 2 +-
.../src/SqlLab/components/QueryTable/index.tsx | 2 +-
.../src/SqlLab/components/ResultSet/index.tsx | 6 +-
.../SqlLab/components/SaveDatasetModal/index.tsx | 9 +-
.../src/SqlLab/components/SouthPane/index.tsx | 6 +-
.../src/SqlLab/components/SqlEditor/index.tsx | 2 +-
.../SqlLab/components/SqlEditorLeftBar/index.tsx | 2 +-
.../SqlLab/components/SqlEditorTabHeader/index.tsx | 2 +-
.../SqlEditorTopBar/useDatabaseSelector.ts | 2 +-
.../src/SqlLab/components/StatusBar/index.tsx | 4 +-
.../SqlLab/components/TabbedSqlEditors/index.tsx | 19 +-
.../src/SqlLab/components/TableElement/index.tsx | 2 +-
.../SqlLab/components/TableExploreTree/index.tsx | 2 +-
.../components/TableExploreTree/useTreeData.ts | 2 +-
.../src/SqlLab/components/TablePreview/index.tsx | 2 +-
.../SqlLab/hooks/useAppDispatch.ts} | 17 +-
.../SqlLab/hooks/useAppSelector.ts} | 13 +-
.../DynamicGroupBy/DynamicGroupByPlugin.test.tsx | 81 +
.../DynamicGroupBy/DynamicGroupByPlugin.tsx | 19 +-
.../components/DynamicGroupBy/types.ts | 1 -
superset-frontend/src/components/Chart/Chart.tsx | 506 +-
.../src/components/Chart/ChartRenderer.test.tsx | 83 +-
.../src/components/Chart/ChartRenderer.tsx | 732 +-
.../src/components/Chart/DrillBy/DrillByChart.tsx | 4 +-
.../Chart/urlParamsForwarding.integration.test.ts | 113 +
.../src/components/CrudThemeProvider.test.tsx | 55 +
.../src/components/CrudThemeProvider.tsx | 19 +-
.../DatasourceEditor/DatasourceEditor.tsx | 3 +-
.../components/ErrorMessage/ErrorAlert.stories.tsx | 2 +-
.../src/components/GenericLink/index.tsx | 4 +-
.../src/components/ListView/ListView.test.tsx | 5 +-
.../src/components/ListView/ListView.tsx | 35 +-
superset-frontend/src/components/ListView/utils.ts | 22 +-
.../MessageToasts/ToastPresenter.test.tsx | 10 +
.../components/MessageToasts/ToastPresenter.tsx | 4 +-
.../src/components/PanelToolbar/index.tsx | 5 +-
.../RowCountLabel/RowCountLabel.stories.tsx | 4 +-
.../useStreamingExport.test.ts | 199 +
.../StreamingExportModal/useStreamingExport.ts | 29 +-
.../src/components/Tag/Tag.stories.tsx | 2 +-
.../src/components/TagsList/TagsList.stories.tsx | 2 +-
.../src/core/editors/EditorHost.test.tsx | 3 +-
superset-frontend/src/core/editors/EditorHost.tsx | 53 +-
.../src/core/editors/EditorProviders.ts | 14 +
superset-frontend/src/core/editors/index.ts | 18 +
superset-frontend/src/core/menus/index.ts | 53 +
superset-frontend/src/core/views/index.ts | 55 +-
.../actions/dashboardState.certification.test.ts | 127 +
.../src/dashboard/actions/dashboardState.test.ts | 331 +-
.../src/dashboard/actions/dashboardState.ts | 100 +-
.../src/dashboard/components/Dashboard.tsx | 369 +-
.../DashboardBuilder/DashboardBuilder.test.tsx | 56 +
.../DashboardBuilder/DashboardWrapper.test.tsx | 53 +-
.../dashboard/components/DashboardBuilder/utils.ts | 9 +-
.../src/dashboard/components/DashboardGrid.tsx | 468 +-
.../dashboard/components/Header/Header.test.tsx | 44 +
.../src/dashboard/components/Header/index.tsx | 3 +-
.../dashboard/components/PropertiesModal/index.tsx | 20 +-
.../PropertiesModal/sections/AccessSection.tsx | 6 +-
.../components/PropertiesModal/utils.test.ts | 90 +
.../dashboard/components/PropertiesModal/utils.ts | 81 +
.../dashboard/components/PublishedStatus/index.tsx | 96 +-
.../src/dashboard/components/SliceAdder.tsx | 579 +-
.../UndoRedoKeyListeners.test.tsx | 34 +
.../components/UndoRedoKeyListeners/index.tsx | 70 +-
.../src/dashboard/components/dnd/DragDroppable.tsx | 21 +-
.../components/filterscope/FilterScopeModal.tsx | 62 +-
.../filterscope/FilterScopeSelector.test.tsx | 265 +
.../components/filterscope/FilterScopeSelector.tsx | 825 +-
.../components/gridComponents/Chart/Chart.tsx | 8 +-
.../components/gridComponents/Divider/Divider.tsx | 82 +-
.../components/gridComponents/Header/Header.tsx | 263 +-
.../gridComponents/Markdown/Markdown.tsx | 530 +-
.../gridComponents/new/DraggableNewComponent.tsx | 68 +-
.../components/menu/BackgroundStyleDropdown.tsx | 31 +-
.../src/dashboard/components/menu/HoverMenu.tsx | 71 +-
.../components/menu/MarkdownModeDropdown.tsx | 30 +-
.../components/menu/WithPopoverMenu.test.tsx | 8 +-
.../dashboard/components/menu/WithPopoverMenu.tsx | 293 +-
.../nativeFilters/ConfigModal/BaseConfigModal.tsx | 148 -
.../nativeFilters/FilterBar/FilterBar.test.tsx | 147 +
.../FilterControls.overflow.test.tsx | 305 +
.../FilterBar/FilterControls/FilterValue.test.tsx | 228 +
.../FilterBar/FilterControls/FilterValue.tsx | 5 +-
.../FilterControls/GroupByFilterCard.test.tsx | 41 +
.../FilterBar/FilterControls/GroupByFilterCard.tsx | 36 +-
.../FilterBar/HorizontalFilterBar.test.tsx | 155 +-
.../nativeFilters/FilterBar/utils.test.ts | 7 +-
.../components/nativeFilters/FilterBar/utils.ts | 10 +-
.../FiltersConfigForm/FiltersConfigForm.tsx | 2 +-
.../FiltersConfigModal/FiltersConfigModal.test.tsx | 270 +
.../FiltersConfigModal/FiltersConfigModal.tsx | 18 +-
.../FiltersConfigModal/NativeFiltersModal.test.tsx | 28 +-
.../components/nativeFilters/state.test.ts | 504 +-
.../dashboard/components/nativeFilters/state.ts | 76 +-
.../dashboard/containers/DashboardPage.test.tsx | 220 +-
.../src/dashboard/containers/DashboardPage.tsx | 26 +-
.../util/charts/getFormDataWithExtraFilters.ts | 12 -
.../util/logging/findTopLevelComponentIds.ts | 113 -
.../logging/getLoadStatsPerTopLevelComponent.ts | 59 -
.../util/migrateChartCustomization.test.ts | 24 +-
.../dashboard/util/migrateChartCustomization.ts | 7 +-
.../src/dashboard/util/permissionUtils.ts | 4 +-
superset-frontend/src/dataMask/reducer.test.ts | 32 +
superset-frontend/src/dataMask/reducer.ts | 64 +-
.../src/embedded/EmbeddedContextProviders.tsx | 5 +-
.../src/embedded/getInitialThemeMode.test.ts | 66 +
.../getInitialThemeMode.ts} | 25 +-
superset-frontend/src/embedded/index.tsx | 30 +-
.../src/embedded/originValidation.test.ts | 112 +
superset-frontend/src/embedded/originValidation.ts | 91 +
.../src/explore/actions/hydrateExplore.ts | 8 +-
.../explore/components/ControlHeader.stories.tsx | 4 +-
.../components/useGridResultTable.tsx | 37 +-
.../DataTablesPane/test/DataTablesPane.test.tsx | 40 +
.../DatasourcePanelDragOption.test.tsx | 16 +-
.../DatasourcePanelDragOption/index.tsx | 44 +-
.../ExploreChartHeader/ExploreChartHeader.test.tsx | 53 +-
.../ExploreContainer/ExploreContainer.test.tsx | 120 +-
.../ExploreContainer/ExploreDndContext.test.tsx | 125 +
.../ExploreContainer/ExploreDndContext.tsx | 244 +
.../explore/components/ExploreContainer/index.tsx | 81 +-
.../src/explore/components/SaveModal.test.tsx | 16 +
.../src/explore/components/SaveModal.tsx | 12 +-
.../controls/CollectionControl/index.tsx | 4 +-
.../components/controls/ContourControl/index.tsx | 2 +
.../controls/ControlPopover/ControlPopover.tsx | 1 +
.../DndColumnMetricSelect.test.tsx | 273 +-
.../DndColumnSelect.test.tsx | 24 +-
.../DndColumnSelectControl/DndColumnSelect.tsx | 5 +
.../DndFilterSelect.test.tsx | 329 +-
.../DndColumnSelectControl/DndFilterSelect.tsx | 2 +
.../DndMetricSelect.test.tsx | 258 +-
.../DndColumnSelectControl/DndMetricSelect.tsx | 5 +
.../DndColumnSelectControl/DndSelectLabel.test.tsx | 9 +-
.../DndColumnSelectControl/DndSelectLabel.tsx | 83 +-
.../DndColumnSelectControl/OptionWrapper.test.tsx | 55 +-
.../DndColumnSelectControl/OptionWrapper.tsx | 90 +-
.../DndColumnSelectControl/dndTestUtils.ts | 120 +
.../AdhocFilterOption/AdhocFilterOption.test.tsx | 2 +-
.../OptionControls/OptionControls.test.tsx | 21 +-
.../components/controls/OptionControls/index.tsx | 109 +-
.../src/explore/exploreUtils/index.ts | 2 +
superset-frontend/src/explore/types.ts | 1 +
.../src/extensions/ExtensionsStartup.tsx | 29 +-
.../DatabaseConnectionForm.test.tsx | 85 +
.../DatabaseConnectionForm/EncryptedField.test.tsx | 210 +-
.../DatabaseConnectionForm/EncryptedField.tsx | 80 +-
.../OAuth2ClientField.test.tsx | 82 +
.../DatabaseConnectionForm/OAuth2ClientField.tsx | 78 +-
.../DatabaseConnectionForm/TableCatalog.test.tsx | 87 +
.../DatabaseConnectionForm/TableCatalog.tsx | 18 +-
.../DatabaseModal/DatabaseConnectionForm/index.tsx | 112 +-
.../databases/DatabaseModal/SqlAlchemyForm.tsx | 5 +-
.../databases/DatabaseModal/index.test.tsx | 153 +
.../src/features/databases/DatabaseModal/index.tsx | 65 +-
.../src/features/databases/DatabaseModal/styles.ts | 11 +-
.../UploadDataModel/UploadDataModal.test.tsx | 26 +
.../features/databases/UploadDataModel/index.tsx | 7 +-
superset-frontend/src/features/databases/types.ts | 4 +
.../DatasetPanel/DatasetPanel.stories.tsx | 2 +-
.../reports/ReportModal/ReportModal.test.tsx | 25 +
.../src/features/reports/ReportModal/index.tsx | 5 +-
superset-frontend/src/features/tags/TagCard.tsx | 126 -
.../src/features/tasks/TaskStatusIcon.tsx | 4 +
.../src/features/tasks/timeUtils.test.ts | 6 +-
superset-frontend/src/features/tasks/timeUtils.ts | 72 +-
.../components/Range/RangeFilterPlugin.stories.tsx | 2 +-
.../components/Range/RangeFilterPlugin.test.tsx | 159 +-
.../filters/components/Range/RangeFilterPlugin.tsx | 26 +
.../Select/SelectFilterPlugin.stories.tsx | 2 +-
.../src/middleware/asyncEvent.test.ts | 28 +
superset-frontend/src/middleware/asyncEvent.ts | 32 +-
.../pages/ChartList/ChartList.listview.test.tsx | 5 +-
superset-frontend/src/pages/ChartList/index.tsx | 7 +-
.../src/pages/DashboardList/index.tsx | 3 +
superset-frontend/src/pages/DatasetList/index.tsx | 6 +
superset-frontend/src/pages/SqlLab/index.tsx | 40 +-
superset-frontend/src/pages/TaskList/index.tsx | 7 +-
.../UserRegistrations/UserRegistrations.test.tsx | 7 +-
.../src/pages/UserRegistrations/index.tsx | 14 -
superset-frontend/src/pages/UsersList/index.tsx | 4 +-
superset-frontend/src/preamble.test.ts | 113 +
superset-frontend/src/preamble.ts | 3 +-
superset-frontend/src/setup/setupFormatters.ts | 15 +-
superset-frontend/src/theme/ThemeController.ts | 15 +
superset-frontend/src/theme/ThemeProvider.tsx | 9 +-
.../src/theme/tests/ThemeController.test.ts | 18 +
.../src/theme/tests/ThemeProvider.test.tsx | 1 +
superset-frontend/src/types/Dashboard.ts | 1 +
superset-frontend/src/types/bootstrapTypes.ts | 3 +
superset-frontend/src/utils/getOwnerName.test.ts | 12 +
superset-frontend/src/utils/getOwnerName.ts | 5 +-
superset-frontend/src/utils/navigationUtils.ts | 11 +-
superset-websocket/.nvmrc | 2 +-
superset-websocket/Dockerfile | 18 +-
superset-websocket/README.md | 19 +
superset-websocket/config.example.json | 3 +-
superset-websocket/package-lock.json | 715 +-
superset-websocket/package.json | 18 +-
superset-websocket/spec/index.test.ts | 465 +-
superset-websocket/src/config.ts | 50 +-
superset-websocket/src/index.ts | 227 +-
superset-websocket/src/logger.ts | 1 +
superset-websocket/utils/client-ws-app/.nvmrc | 2 +-
.../utils/client-ws-app/package-lock.json | 118 +-
.../utils/client-ws-app/package.json | 2 +-
superset/async_events/async_query_manager.py | 13 +-
superset/charts/api.py | 29 +-
superset/charts/client_processing.py | 13 +-
superset/charts/data/api.py | 23 +-
superset/charts/data/dashboard_filter_context.py | 30 +-
superset/charts/filters.py | 18 +-
superset/charts/schemas.py | 81 +-
superset/cli/guest_token.py | 54 +
superset/cli/update.py | 38 +-
superset/commands/chart/create.py | 12 +-
.../chart/data/create_async_job_command.py | 5 +
superset/commands/chart/fave.py | 8 +-
superset/commands/chart/unfave.py | 8 +-
superset/commands/chart/update.py | 35 +-
superset/commands/chart/warm_up_cache.py | 19 +-
superset/commands/dashboard/create.py | 16 +-
superset/commands/dashboard/delete.py | 5 +-
superset/commands/dashboard/export_example.py | 70 +-
superset/commands/dashboard/filter_state/create.py | 9 +-
superset/commands/dashboard/importers/v1/utils.py | 150 +-
superset/commands/database/create.py | 2 +
superset/commands/database/exceptions.py | 5 +
.../commands/database/ssh_tunnel/exceptions.py | 8 +
superset/commands/database/test_connection.py | 10 +-
superset/commands/database/uploaders/base.py | 41 +
.../commands/database/uploaders/columnar_reader.py | 8 +
superset/commands/dataset/create.py | 8 +
superset/commands/dataset/duplicate.py | 8 +-
superset/commands/dataset/importers/v0.py | 18 +-
superset/commands/dataset/importers/v1/utils.py | 71 +-
superset/commands/dataset/update.py | 51 +-
superset/commands/dataset/warm_up_cache.py | 12 +-
superset/commands/explore/form_data/create.py | 11 +-
superset/commands/explore/get.py | 7 +-
superset/commands/export/assets.py | 18 +-
superset/commands/logs/prune.py | 5 +-
superset/commands/report/base.py | 46 +-
superset/commands/report/execute.py | 83 +-
superset/commands/security/create.py | 2 +
superset/commands/security/delete.py | 9 +-
superset/commands/security/exceptions.py | 10 +-
superset/commands/security/update.py | 2 +
superset/commands/security/utils.py | 42 +
superset/commands/sql_lab/estimate.py | 98 +-
superset/commands/streaming_export/base.py | 67 +-
superset/commands/tag/create.py | 35 +
superset/commands/tag/delete.py | 40 +-
superset/commands/tag/utils.py | 17 +-
superset/commands/temporary_cache/create.py | 1 +
superset/commands/temporary_cache/delete.py | 1 +
superset/commands/temporary_cache/update.py | 1 +
superset/commands/utils.py | 9 +-
superset/common/query_context.py | 2 +-
superset/common/query_context_processor.py | 17 +-
superset/common/utils/dataframe_utils.py | 10 +-
superset/config.py | 182 +-
superset/connectors/sqla/models.py | 75 +-
superset/constants.py | 1 +
superset/daos/base.py | 52 +-
superset/daos/dashboard.py | 2 +-
superset/daos/database.py | 75 +
superset/daos/key_value.py | 32 +
superset/dashboards/api.py | 36 +-
superset/dashboards/filters.py | 12 +-
superset/dashboards/permalink/schemas.py | 8 +-
superset/dashboards/schemas.py | 81 +-
superset/databases/api.py | 63 +-
superset/databases/schemas.py | 43 +-
superset/databases/ssh_tunnel/models.py | 10 +
superset/dataframe.py | 18 +-
superset/datasets/api.py | 14 +-
superset/db_engine_specs/__init__.py | 8 +
superset/db_engine_specs/base.py | 64 +-
superset/db_engine_specs/bigquery.py | 35 +-
superset/db_engine_specs/druid.py | 26 +
superset/db_engine_specs/impala.py | 29 +-
superset/db_engine_specs/mysql.py | 5 +
superset/db_engine_specs/ocient.py | 8 +-
superset/db_engine_specs/odps.py | 201 +
superset/db_engine_specs/postgres.py | 5 +
superset/db_engine_specs/presto.py | 6 +
superset/db_engine_specs/redshift.py | 5 +
superset/db_engine_specs/singlestore.py | 5 +
superset/db_engine_specs/snowflake.py | 5 +
superset/db_engine_specs/trino.py | 6 +
superset/db_engine_specs/ydb.py | 2 +-
superset/embedded/view.py | 18 +
superset/extensions/metadb.py | 11 +-
superset/extensions/ssh.py | 134 +-
superset/extensions/utils.py | 85 +-
superset/initialization/__init__.py | 78 +-
superset/jinja_context.py | 100 +-
.../action_log => key_value/commands}/__init__.py | 0
superset/key_value/commands/prune.py | 143 +
superset/key_value/shared_entries.py | 13 +
superset/key_value/types.py | 3 +
superset/key_value/utils.py | 31 +-
superset/mcp_service/__init__.py | 13 +
superset/mcp_service/__main__.py | 26 +-
superset/mcp_service/action_log/schemas.py | 302 -
superset/mcp_service/action_log/tool/__init__.py | 24 -
.../action_log/tool/get_action_log_info.py | 97 -
.../action_log/tool/list_action_logs.py | 152 -
superset/mcp_service/app.py | 77 +-
superset/mcp_service/auth.py | 448 +-
superset/mcp_service/bin/superset-mcp.js | 4 +-
superset/mcp_service/chart/chart_helpers.py | 153 +
superset/mcp_service/chart/chart_utils.py | 3 +
superset/mcp_service/chart/schemas.py | 86 +
superset/mcp_service/chart/tool/get_chart_data.py | 25 +-
superset/mcp_service/chart/tool/get_chart_info.py | 17 +-
.../chart/tool/get_chart_type_schema.py | 8 +
superset/mcp_service/chart/tool/update_chart.py | 142 +-
superset/mcp_service/chart/validation/pipeline.py | 6 +-
superset/mcp_service/common/schema_discovery.py | 85 +-
superset/mcp_service/composite_token_verifier.py | 199 +
superset/mcp_service/constants.py | 4 +-
superset/mcp_service/css_template/schemas.py | 280 -
superset/mcp_service/css_template/tool/__init__.py | 24 -
.../css_template/tool/get_css_template_info.py | 108 -
.../css_template/tool/list_css_templates.py | 150 -
superset/mcp_service/dashboard/schemas.py | 49 +
.../dashboard/tool/get_dashboard_info.py | 17 +-
superset/mcp_service/dataset/schemas.py | 162 +-
superset/mcp_service/dataset/tool/__init__.py | 4 +-
.../mcp_service/dataset/tool/create_dataset.py | 171 +
.../mcp_service/dataset/tool/get_dataset_info.py | 16 +-
superset/mcp_service/jwt_verifier.py | 194 +-
superset/mcp_service/mcp_config.py | 189 +-
superset/mcp_service/mcp_core.py | 12 +
superset/mcp_service/middleware.py | 11 +-
superset/mcp_service/plugin/dao.py | 23 -
superset/mcp_service/plugin/schemas.py | 213 -
superset/mcp_service/plugin/tool/__init__.py | 24 -
.../mcp_service/plugin/tool/get_plugin_info.py | 101 -
superset/mcp_service/plugin/tool/list_plugins.py | 123 -
.../mcp_service/screenshot/webdriver_config.py | 16 +-
superset/mcp_service/screenshot/webdriver_pool.py | 6 +-
superset/mcp_service/server.py | 74 +-
superset/mcp_service/storage.py | 4 +-
superset/mcp_service/system/tool/get_schema.py | 55 +-
superset/mcp_service/theme/__init__.py | 16 -
superset/mcp_service/theme/schemas.py | 305 -
superset/mcp_service/theme/tool/__init__.py | 24 -
superset/mcp_service/theme/tool/get_theme_info.py | 116 -
superset/mcp_service/theme/tool/list_themes.py | 147 -
superset/mcp_service/utils/error_sanitization.py | 44 +-
superset/mcp_service/utils/permissions_utils.py | 19 +-
superset/migrations/shared/catalogs.py | 18 +-
...00-00_ce6bd21901ab_migrate_deckgl_and_mapbox.py | 70 +-
...ae2559c05_replay_user_favorite_tag_migration.py | 81 +
...00-00_b7c9d1e2f3a4_add_password_must_change.py} | 39 +-
...c8d2e3f4a5b6_add_guest_token_revoked_before.py} | 36 +-
...-00_f7a1c93e0b21_add_sessions_invalidated_at.py | 177 +
...40c08b4be_add_server_host_key_to_ssh_tunnels.py | 50 +
superset/models/core.py | 26 +-
superset/models/dashboard.py | 13 +-
superset/models/embedded_dashboard.py | 4 +
superset/models/helpers.py | 100 +-
superset/models/slice.py | 14 +-
superset/models/sql_lab.py | 27 +-
superset/models/user_attributes.py | 22 +-
superset/queries/saved_queries/api.py | 3 +-
superset/reports/filters.py | 11 +-
superset/reports/notifications/email.py | 24 +-
superset/reports/notifications/webhook.py | 60 +-
superset/result_set.py | 90 +-
superset/row_level_security/api.py | 21 +-
superset/security/api.py | 30 +-
superset/security/guest_token.py | 75 +-
superset/security/manager.py | 613 +-
superset/security/password_change.py | 211 +
superset/security/password_complexity.py | 125 +
superset/security/session_invalidation.py | 205 +
superset/semantic_layers/mapper.py | 7 +-
superset/sql/execution/celery_task.py | 6 +-
superset/sql/parse.py | 73 +-
superset/sql_lab.py | 19 +-
superset/sqllab/api.py | 8 +
superset/sqllab/schemas.py | 14 +-
superset/sqllab/validators.py | 6 +-
superset/tasks/cache.py | 204 +-
superset/tasks/scheduler.py | 16 +
.../templates/superset}/loading.svg | Bin
superset/templates/superset/spa.html | 2 +-
superset/themes/api.py | 3 +-
superset/translations/ar/LC_MESSAGES/messages.po | 83 +-
superset/translations/ca/LC_MESSAGES/messages.po | 89 +-
superset/translations/cs/LC_MESSAGES/messages.po | 89 +-
superset/translations/de/LC_MESSAGES/messages.po | 87 +-
superset/translations/en/LC_MESSAGES/messages.po | 76 +-
superset/translations/es/LC_MESSAGES/messages.po | 91 +-
superset/translations/fa/LC_MESSAGES/messages.po | 85 +-
superset/translations/fi/LC_MESSAGES/messages.po | 100 +-
superset/translations/fr/LC_MESSAGES/messages.po | 89 +-
superset/translations/it/LC_MESSAGES/messages.po | 77 +-
superset/translations/ja/LC_MESSAGES/messages.po | 87 +-
superset/translations/ko/LC_MESSAGES/messages.po | 76 +-
superset/translations/lv/LC_MESSAGES/messages.po | 87 +-
superset/translations/messages.pot | 70 +-
superset/translations/mi/LC_MESSAGES/messages.po | 87 +-
superset/translations/nl/LC_MESSAGES/messages.po | 83 +-
superset/translations/pl/LC_MESSAGES/messages.po | 83 +-
superset/translations/pt/LC_MESSAGES/messages.po | 77 +-
.../translations/pt_BR/LC_MESSAGES/messages.po | 83 +-
superset/translations/requirements.txt | 5 +-
superset/translations/ro/LC_MESSAGES/messages.po | 16267 +++++++++++++++++++
superset/translations/ru/LC_MESSAGES/messages.po | 95 +-
superset/translations/sk/LC_MESSAGES/messages.po | 89 +-
superset/translations/sl/LC_MESSAGES/messages.po | 83 +-
superset/translations/th/LC_MESSAGES/messages.po | 100 +-
superset/translations/tr/LC_MESSAGES/messages.po | 79 +-
superset/translations/uk/LC_MESSAGES/messages.po | 87 +-
superset/translations/zh/LC_MESSAGES/messages.po | 80 +-
.../translations/zh_TW/LC_MESSAGES/messages.po | 80 +-
superset/utils/core.py | 41 +-
superset/utils/csv.py | 22 +-
superset/utils/encrypt.py | 330 +-
superset/utils/excel.py | 24 +
superset/utils/json.py | 31 +-
superset/utils/link_redirect.py | 14 +-
superset/utils/network.py | 51 +
superset/utils/pandas_postprocessing/boxplot.py | 5 +-
superset/utils/pandas_postprocessing/histogram.py | 2 +-
superset/utils/schema.py | 34 +-
superset/utils/screenshot_utils.py | 8 +
superset/utils/screenshots.py | 16 +-
superset/utils/webdriver.py | 95 +-
superset/views/api.py | 21 +-
superset/views/base.py | 52 +-
superset/views/base_api.py | 14 +-
superset/views/core.py | 11 +-
superset/views/datasource/utils.py | 17 +-
superset/views/datasource/views.py | 24 +
superset/views/sql_lab/schemas.py | 7 +-
superset/views/sql_lab/views.py | 53 +-
superset/views/users/api.py | 4 +
superset/views/utils.py | 19 +-
superset/viz.py | 62 +-
tests/integration_tests/celery_tests.py | 138 +-
tests/integration_tests/charts/api_tests.py | 59 +-
tests/integration_tests/charts/commands_tests.py | 61 +-
tests/integration_tests/cli_tests.py | 102 +
tests/integration_tests/core_tests.py | 30 +-
tests/integration_tests/dao/base_dao_test.py | 69 +
tests/integration_tests/dashboards/api_tests.py | 169 +
tests/integration_tests/datasets/api_tests.py | 3 +
tests/integration_tests/datasets/commands_tests.py | 20 +-
.../db_engine_specs/base_engine_spec_tests.py | 7 +-
.../db_engine_specs/bigquery_tests.py | 7 +
tests/integration_tests/embedded/test_view.py | 66 +
...ce6bd21901ab_migrate_deckgl_and_mapbox__test.py | 233 +-
.../queries/saved_queries/api_tests.py | 39 +
.../commands/execute_dashboard_report_tests.py | 4 +-
tests/integration_tests/result_set_tests.py | 34 +-
.../security/password_complexity_tests.py | 70 +
.../security/session_invalidation_tests.py | 79 +
tests/integration_tests/security_tests.py | 250 +
tests/integration_tests/sql_lab/commands_tests.py | 29 +
tests/integration_tests/sqllab_tests.py | 34 +-
tests/integration_tests/strategy_tests.py | 56 +-
tests/integration_tests/tags/commands_tests.py | 4 +
tests/integration_tests/tasks/test_cache.py | 95 -
tests/integration_tests/tasks/test_utils.py | 77 -
.../test_database_password_encoding.py | 108 +
tests/integration_tests/thumbnails_tests.py | 16 +-
.../async_events/async_query_manager_tests.py | 67 +
.../unit_tests/charts/data}/__init__.py | 0
.../charts/data/streaming_filename_test.py | 59 +
tests/unit_tests/charts/test_chart_data_api.py | 31 +
tests/unit_tests/charts/test_client_processing.py | 157 +
.../charts/test_dashboard_filter_context.py | 80 +-
tests/unit_tests/charts/test_schemas.py | 268 +
.../plugin => tests/unit_tests/cli}/__init__.py | 0
tests/unit_tests/cli/guest_token_test.py | 58 +
.../chart/create_async_job_command_test.py | 51 +
.../commands/chart/test_access_checks.py | 147 +
tests/unit_tests/commands/chart/update_test.py | 62 +-
.../commands/chart/warm_up_cache_test.py | 6 +
.../commands/dashboard/export_example_test.py | 102 +
.../commands/dashboard/filter_state_create_test.py | 72 +
.../commands/databases/columnar_reader_test.py | 36 +-
.../commands/databases/upload_command_test.py | 147 +
tests/unit_tests/commands/dataset/test_create.py | 9 +-
.../unit_tests/commands/dataset/test_duplicate.py | 103 +
.../commands/dataset/test_warm_up_cache.py | 115 +
tests/unit_tests/commands/dataset/update_test.py | 160 +
.../commands/explore/form_data/test_create.py | 39 +
tests/unit_tests/commands/export_test.py | 9 +
.../commands/importers/v1/assets_test.py | 6 +-
.../unit_tests/commands/logs}/__init__.py | 0
tests/unit_tests/commands/logs/prune_test.py | 54 +
tests/unit_tests/commands/report/execute_test.py | 128 +-
.../commands/report/test_create_recipients.py | 14 +-
tests/unit_tests/commands/report/update_test.py | 37 +
.../unit_tests/commands/security}/__init__.py | 0
tests/unit_tests/commands/security/rls_test.py | 196 +
.../sql_lab/streaming_export_command_test.py | 194 +
tests/unit_tests/commands/sql_lab/test_estimate.py | 212 +
.../commands/temporary_cache_create_test.py | 63 +
tests/unit_tests/common/test_dataframe_utils.py | 25 +
.../common/test_query_context_processor.py | 135 +-
tests/unit_tests/connectors/sqla/models_test.py | 237 +-
tests/unit_tests/connectors/sqla/utils_test.py | 1 +
tests/unit_tests/dao/base_dao_test.py | 51 +
tests/unit_tests/daos/test_report_dao.py | 37 +
.../commands/importers/v1/import_test.py | 49 +
.../dashboards/commands/importers/v1/utils_test.py | 174 +
tests/unit_tests/dashboards/schema_tests.py | 195 +
tests/unit_tests/databases/api_test.py | 49 +-
.../databases/commands/importers/v1/import_test.py | 150 +
tests/unit_tests/databases/filters_test.py | 2 +-
tests/unit_tests/databases/schema_tests.py | 46 +
.../datasets/commands/importers/v1/import_test.py | 143 +-
tests/unit_tests/db_engine_specs/test_base.py | 77 +
tests/unit_tests/db_engine_specs/test_bigquery.py | 87 +-
.../test_cancel_query_validation.py | 476 +
tests/unit_tests/db_engine_specs/test_druid.py | 116 +
tests/unit_tests/db_engine_specs/test_impala.py | 73 +-
tests/unit_tests/db_engine_specs/test_odps.py | 174 +
tests/unit_tests/db_engine_specs/test_presto.py | 24 +
tests/unit_tests/extension_tests.py | 2 +-
tests/unit_tests/extensions/ssh_test.py | 233 +-
tests/unit_tests/extensions/test_utils.py | 96 +
tests/unit_tests/fixtures/assets_configs.py | 2 +
.../unit_tests/initialization}/__init__.py | 0
.../check_async_query_secret_test.py | 140 +
tests/unit_tests/jinja_context_test.py | 172 +
tests/unit_tests/key_value/prune_test.py | 168 +
.../key_value/test_shared_entries_migration.py | 47 +
tests/unit_tests/key_value/utils_test.py | 45 +
.../unit_tests/mcp_service/action_log/__init__.py | 16 -
.../mcp_service/action_log/tool/__init__.py | 16 -
.../action_log/tool/test_action_log_tools.py | 401 -
.../mcp_service/chart/test_big_number_chart.py | 87 +
.../mcp_service/chart/test_chart_helpers.py | 651 +
.../mcp_service/chart/tool/test_get_chart_info.py | 91 +-
.../mcp_service/chart/tool/test_update_chart.py | 293 +-
.../mcp_service/css_template/__init__.py | 16 -
.../mcp_service/css_template/tool/__init__.py | 16 -
.../css_template/tool/test_css_template_tools.py | 280 -
.../dashboard/tool/test_dashboard_tools.py | 72 +
.../database/tool/test_database_tools.py | 42 +
.../dataset/tool/test_create_dataset.py | 585 +
.../mcp_service/dataset/tool/test_dataset_tools.py | 59 +
tests/unit_tests/mcp_service/plugin/__init__.py | 16 -
.../unit_tests/mcp_service/plugin/tool/__init__.py | 16 -
.../mcp_service/plugin/tool/test_plugin_tools.py | 172 -
.../mcp_service/system/tool/test_get_schema.py | 149 +-
.../mcp_service/system/tool/test_mcp_core.py | 76 +
tests/unit_tests/mcp_service/test_auth_api_key.py | 414 +-
tests/unit_tests/mcp_service/test_auth_rbac.py | 149 +-
.../mcp_service/test_auth_user_resolution.py | 166 +-
.../mcp_service/test_composite_token_verifier.py | 345 +
tests/unit_tests/mcp_service/test_jwt_verifier.py | 368 +-
tests/unit_tests/mcp_service/test_mcp_config.py | 213 +
tests/unit_tests/mcp_service/test_mcp_server.py | 23 +
.../mcp_service/test_mcp_tool_registration.py | 53 +-
tests/unit_tests/mcp_service/test_middleware.py | 6 +-
.../mcp_service/test_tool_search_transform.py | 140 +-
tests/unit_tests/mcp_service/theme/__init__.py | 16 -
.../unit_tests/mcp_service/theme/tool/__init__.py | 16 -
.../mcp_service/theme/tool/test_theme_tools.py | 267 -
.../mcp_service/utils/test_error_sanitization.py | 70 +
.../mcp_service/utils/test_permissions_utils.py | 37 +-
tests/unit_tests/models/dashboard_test.py | 52 +
tests/unit_tests/models/helpers_test.py | 259 +-
tests/unit_tests/models/slice_test.py | 25 +-
.../models/test_core_database_password_encoding.py | 196 +
tests/unit_tests/reports/filters_test.py | 44 +
.../reports/notifications/email_tests.py | 56 +-
.../reports/notifications/webhook_tests.py | 46 +
tests/unit_tests/result_set_test.py | 188 +-
.../check_translation_regression_test.py | 179 +
tests/unit_tests/security/audit_log_test.py | 8 +-
.../security/guest_token_revocation_test.py | 242 +
tests/unit_tests/security/manager_test.py | 436 +-
.../security/test_granular_export_permissions.py | 11 +
.../security/test_guest_token_dataset_allowlist.py | 273 +
.../security/test_guest_token_revocation.py | 157 +
tests/unit_tests/security/test_password_change.py | 223 +
.../security/test_password_complexity.py | 113 +
tests/unit_tests/security/test_permission_hooks.py | 204 +
.../security/test_session_invalidation.py | 214 +
.../common => tests/unit_tests/server}/__init__.py | 0
.../server/test_gunicorn_gevent_smoke.py | 162 +
tests/unit_tests/sql/execution/test_celery_task.py | 60 +
tests/unit_tests/sql/parse_tests.py | 104 +-
tests/unit_tests/sql_lab_execution_context.py | 3 +-
tests/unit_tests/sql_lab_test.py | 3 +
.../common => tests/unit_tests/sqllab}/__init__.py | 0
tests/unit_tests/sqllab/api_test.py | 64 +
tests/unit_tests/tasks/test_cache.py | 136 +
tests/unit_tests/test_mcp_stdio_entrypoint.py | 108 +
tests/unit_tests/test_sqllab_error_stacktrace.py | 282 +
tests/unit_tests/test_viz_get_df_payload.py | 133 +
tests/unit_tests/utils/csv_tests.py | 63 +
tests/unit_tests/utils/encrypt_test.py | 373 +
tests/unit_tests/utils/excel_tests.py | 37 +-
tests/unit_tests/utils/test_core.py | 96 +
tests/unit_tests/utils/test_link_redirect.py | 29 +
tests/unit_tests/utils/test_network.py | 133 +
tests/unit_tests/utils/test_screenshot_utils.py | 26 +
tests/unit_tests/utils/test_split.py | 81 +
tests/unit_tests/views/test_base.py | 40 +
tests/unit_tests/views/test_base_theme_helpers.py | 56 +-
tests/unit_tests/views/test_utils.py | 48 +
892 files changed, 67349 insertions(+), 24350 deletions(-)
delete mode 100644 .github/workflows/claude.yml
create mode 100644 docs/sip/authenticated-encryption-at-rest.md
create mode 100644 docs/static/img/community/reddit-symbol.svg
create mode 100644 docs/static/img/community/slack-symbol.svg
rename superset-frontend/src/dashboard/util/charts/useAllChartIds.ts => superset-embedded-sdk/src/withTimeout.test.ts (55%)
rename superset-frontend/src/hooks/useMemoCompare.ts => superset-embedded-sdk/src/withTimeout.ts (54%)
delete mode 100644 superset-frontend/.eslintignore
delete mode 100644 superset-frontend/.eslintrc.js
delete mode 100644 superset-frontend/.eslintrc.minimal.js
rename superset-frontend/.storybook/{main.js => main.mjs} (83%)
delete mode 100644 superset-frontend/cypress-base/cypress/e2e/dashboard/actions.test.js
create mode 100644 superset-frontend/eslint-rules/eslint-plugin-i18n-strings/no-eager-t-in-config.test.ts
create mode 100644 superset-frontend/eslint.config.minimal.js
rename superset-frontend/{src/hooks/useOpenerRef.ts => packages/superset-ui-core/src/number-format/utils/getIntlDurationFormatter.ts} (71%)
create mode 100644 superset-frontend/packages/superset-ui-core/src/number-format/utils/parseMilliseconds.ts
create mode 100644 superset-frontend/packages/superset-ui-core/src/utils/mapStyles.test.ts
create mode 100644 superset-frontend/packages/superset-ui-core/src/utils/mapStyles.ts
create mode 100644 superset-frontend/packages/superset-ui-core/test/number-format/utils/getIntlDurationFormatter.test.ts
create mode 100644 superset-frontend/packages/superset-ui-core/test/number-format/utils/parseMilliseconds.test.ts
create mode 100644 superset-frontend/packages/superset-ui-core/types/intl.d.ts
create mode 100644 superset-frontend/playwright/tests/chart/handlebars-format-date.spec.ts
create mode 100644 superset-frontend/playwright/tests/dashboard/gauge-interval-colors.spec.ts
create mode 100644 superset-frontend/playwright/tests/dashboard/mixed-chart-dashboard-filters.spec.ts
create mode 100644 superset-frontend/playwright/tests/embedded/pivot-collapse-state.spec.ts
create mode 100644 superset-frontend/plugins/plugin-chart-ag-grid-table/test/stateConversion.test.ts
create mode 100644 superset-frontend/plugins/plugin-chart-echarts/src/utils/tooltip.test.tsx
create mode 100644 superset-frontend/plugins/plugin-chart-echarts/test/Histogram/buildQuery.test.ts
create mode 100644 superset-frontend/plugins/plugin-chart-echarts/test/Radar/utils.test.ts
create mode 100644 superset-frontend/plugins/plugin-chart-handlebars/test/components/formatDateHelper.test.ts
create mode 100644 superset-frontend/plugins/plugin-chart-point-cluster-map/src/utils/mapControls.ts
create mode 100644 superset-frontend/plugins/preset-chart-deckgl/src/DeckGLContainer.test.tsx
delete mode 100644 superset-frontend/plugins/preset-chart-deckgl/src/layers/Geojson/Geojson.test.ts
create mode 100644 superset-frontend/plugins/preset-chart-deckgl/src/layers/Geojson/Geojson.test.tsx
create mode 100644 superset-frontend/plugins/preset-chart-deckgl/src/utilities/Shared_DeckGL.test.ts
rename superset-frontend/{src/dashboard/util/setPeriodicRunner.ts => plugins/preset-chart-deckgl/src/utils/mapbox.test.ts} (59%)
copy superset-frontend/{packages/superset-ui-core/src/components/Table/cell-renderers/NullCell/NullCell.stories.tsx => src/SqlLab/hooks/useAppDispatch.ts} (56%)
copy superset-frontend/{packages/superset-ui-core/src/components/Table/cell-renderers/NullCell/NullCell.stories.tsx => src/SqlLab/hooks/useAppSelector.ts} (70%)
create mode 100644 superset-frontend/src/chartCustomizations/components/DynamicGroupBy/DynamicGroupByPlugin.test.tsx
create mode 100644 superset-frontend/src/components/Chart/urlParamsForwarding.integration.test.ts
create mode 100644 superset-frontend/src/dashboard/actions/dashboardState.certification.test.ts
create mode 100644 superset-frontend/src/dashboard/components/PropertiesModal/utils.test.ts
create mode 100644 superset-frontend/src/dashboard/components/PropertiesModal/utils.ts
create mode 100644 superset-frontend/src/dashboard/components/filterscope/FilterScopeSelector.test.tsx
delete mode 100644 superset-frontend/src/dashboard/components/nativeFilters/ConfigModal/BaseConfigModal.tsx
create mode 100644 superset-frontend/src/dashboard/components/nativeFilters/FilterBar/FilterControls/FilterControls.overflow.test.tsx
create mode 100644 superset-frontend/src/dashboard/components/nativeFilters/FilterBar/FilterControls/FilterValue.test.tsx
create mode 100644 superset-frontend/src/dashboard/components/nativeFilters/FilterBar/FilterControls/GroupByFilterCard.test.tsx
delete mode 100644 superset-frontend/src/dashboard/util/logging/findTopLevelComponentIds.ts
delete mode 100644 superset-frontend/src/dashboard/util/logging/getLoadStatsPerTopLevelComponent.ts
create mode 100644 superset-frontend/src/embedded/getInitialThemeMode.test.ts
rename superset-frontend/src/{utils/isDashboardVirtualizationEnabled.ts => embedded/getInitialThemeMode.ts} (54%)
create mode 100644 superset-frontend/src/embedded/originValidation.test.ts
create mode 100644 superset-frontend/src/embedded/originValidation.ts
create mode 100644 superset-frontend/src/explore/components/ExploreContainer/ExploreDndContext.test.tsx
create mode 100644 superset-frontend/src/explore/components/ExploreContainer/ExploreDndContext.tsx
create mode 100644 superset-frontend/src/explore/components/controls/DndColumnSelectControl/dndTestUtils.ts
create mode 100644 superset-frontend/src/features/databases/DatabaseModal/DatabaseConnectionForm/DatabaseConnectionForm.test.tsx
create mode 100644 superset-frontend/src/features/databases/DatabaseModal/DatabaseConnectionForm/TableCatalog.test.tsx
delete mode 100644 superset-frontend/src/features/tags/TagCard.tsx
create mode 100644 superset-frontend/src/preamble.test.ts
create mode 100644 superset/cli/guest_token.py
create mode 100644 superset/commands/security/utils.py
create mode 100644 superset/db_engine_specs/odps.py
rename superset/{mcp_service/action_log => key_value/commands}/__init__.py (100%)
create mode 100644 superset/key_value/commands/prune.py
delete mode 100644 superset/mcp_service/action_log/schemas.py
delete mode 100644 superset/mcp_service/action_log/tool/__init__.py
delete mode 100644 superset/mcp_service/action_log/tool/get_action_log_info.py
delete mode 100644 superset/mcp_service/action_log/tool/list_action_logs.py
create mode 100644 superset/mcp_service/composite_token_verifier.py
delete mode 100644 superset/mcp_service/css_template/schemas.py
delete mode 100644 superset/mcp_service/css_template/tool/__init__.py
delete mode 100644 superset/mcp_service/css_template/tool/get_css_template_info.py
delete mode 100644 superset/mcp_service/css_template/tool/list_css_templates.py
create mode 100644 superset/mcp_service/dataset/tool/create_dataset.py
delete mode 100644 superset/mcp_service/plugin/dao.py
delete mode 100644 superset/mcp_service/plugin/schemas.py
delete mode 100644 superset/mcp_service/plugin/tool/__init__.py
delete mode 100644 superset/mcp_service/plugin/tool/get_plugin_info.py
delete mode 100644 superset/mcp_service/plugin/tool/list_plugins.py
delete mode 100644 superset/mcp_service/theme/__init__.py
delete mode 100644 superset/mcp_service/theme/schemas.py
delete mode 100644 superset/mcp_service/theme/tool/__init__.py
delete mode 100644 superset/mcp_service/theme/tool/get_theme_info.py
delete mode 100644 superset/mcp_service/theme/tool/list_themes.py
create mode 100644 superset/migrations/versions/2026-04-22_19-00_31dae2559c05_replay_user_favorite_tag_migration.py
copy superset/{mcp_service/__init__.py => migrations/versions/2026-06-01_00-00_b7c9d1e2f3a4_add_password_must_change.py} (54%)
copy superset/{mcp_service/__init__.py => migrations/versions/2026-06-01_00-10_c8d2e3f4a5b6_add_guest_token_revoked_before.py} (53%)
create mode 100644 superset/migrations/versions/2026-06-02_10-00_f7a1c93e0b21_add_sessions_invalidated_at.py
create mode 100644 superset/migrations/versions/2026-06-03_10-00_78a40c08b4be_add_server_host_key_to_ssh_tunnels.py
create mode 100644 superset/security/password_change.py
create mode 100644 superset/security/password_complexity.py
create mode 100644 superset/security/session_invalidation.py
copy {superset-frontend/packages/superset-ui-core/src/components/assets/images => superset/templates/superset}/loading.svg (100%)
create mode 100644 superset/translations/ro/LC_MESSAGES/messages.po
create mode 100644 tests/integration_tests/security/password_complexity_tests.py
create mode 100644 tests/integration_tests/security/session_invalidation_tests.py
delete mode 100644 tests/integration_tests/tasks/test_cache.py
delete mode 100644 tests/integration_tests/tasks/test_utils.py
create mode 100644 tests/integration_tests/test_database_password_encoding.py
rename {superset/mcp_service/css_template => tests/unit_tests/charts/data}/__init__.py (100%)
create mode 100644 tests/unit_tests/charts/data/streaming_filename_test.py
rename {superset/mcp_service/plugin => tests/unit_tests/cli}/__init__.py (100%)
create mode 100644 tests/unit_tests/cli/guest_token_test.py
create mode 100644 tests/unit_tests/commands/chart/create_async_job_command_test.py
create mode 100644 tests/unit_tests/commands/chart/test_access_checks.py
create mode 100644 tests/unit_tests/commands/dashboard/filter_state_create_test.py
create mode 100644 tests/unit_tests/commands/databases/upload_command_test.py
create mode 100644 tests/unit_tests/commands/dataset/test_duplicate.py
create mode 100644 tests/unit_tests/commands/dataset/test_warm_up_cache.py
copy {superset-core/src/superset_core/common => tests/unit_tests/commands/logs}/__init__.py (100%)
create mode 100644 tests/unit_tests/commands/logs/prune_test.py
copy {superset-core/src/superset_core/common => tests/unit_tests/commands/security}/__init__.py (100%)
create mode 100644 tests/unit_tests/commands/security/rls_test.py
create mode 100644 tests/unit_tests/commands/temporary_cache_create_test.py
create mode 100644 tests/unit_tests/dashboards/schema_tests.py
create mode 100644 tests/unit_tests/db_engine_specs/test_cancel_query_validation.py
create mode 100644 tests/unit_tests/db_engine_specs/test_odps.py
create mode 100644 tests/unit_tests/extensions/test_utils.py
copy {superset-core/src/superset_core/common => tests/unit_tests/initialization}/__init__.py (100%)
create mode 100644 tests/unit_tests/initialization/check_async_query_secret_test.py
create mode 100644 tests/unit_tests/key_value/prune_test.py
delete mode 100644 tests/unit_tests/mcp_service/action_log/__init__.py
delete mode 100644 tests/unit_tests/mcp_service/action_log/tool/__init__.py
delete mode 100644 tests/unit_tests/mcp_service/action_log/tool/test_action_log_tools.py
delete mode 100644 tests/unit_tests/mcp_service/css_template/__init__.py
delete mode 100644 tests/unit_tests/mcp_service/css_template/tool/__init__.py
delete mode 100644 tests/unit_tests/mcp_service/css_template/tool/test_css_template_tools.py
create mode 100644 tests/unit_tests/mcp_service/dataset/tool/test_create_dataset.py
delete mode 100644 tests/unit_tests/mcp_service/plugin/__init__.py
delete mode 100644 tests/unit_tests/mcp_service/plugin/tool/__init__.py
delete mode 100644 tests/unit_tests/mcp_service/plugin/tool/test_plugin_tools.py
create mode 100644 tests/unit_tests/mcp_service/test_composite_token_verifier.py
delete mode 100644 tests/unit_tests/mcp_service/theme/__init__.py
delete mode 100644 tests/unit_tests/mcp_service/theme/tool/__init__.py
delete mode 100644 tests/unit_tests/mcp_service/theme/tool/test_theme_tools.py
create mode 100644 tests/unit_tests/mcp_service/utils/test_error_sanitization.py
create mode 100644 tests/unit_tests/models/dashboard_test.py
create mode 100644 tests/unit_tests/models/test_core_database_password_encoding.py
create mode 100644 tests/unit_tests/scripts/translations/check_translation_regression_test.py
create mode 100644 tests/unit_tests/security/guest_token_revocation_test.py
create mode 100644 tests/unit_tests/security/test_guest_token_dataset_allowlist.py
create mode 100644 tests/unit_tests/security/test_guest_token_revocation.py
create mode 100644 tests/unit_tests/security/test_password_change.py
create mode 100644 tests/unit_tests/security/test_password_complexity.py
create mode 100644 tests/unit_tests/security/test_permission_hooks.py
create mode 100644 tests/unit_tests/security/test_session_invalidation.py
copy {superset-core/src/superset_core/common => tests/unit_tests/server}/__init__.py (100%)
create mode 100644 tests/unit_tests/server/test_gunicorn_gevent_smoke.py
copy {superset-core/src/superset_core/common => tests/unit_tests/sqllab}/__init__.py (100%)
create mode 100644 tests/unit_tests/sqllab/api_test.py
create mode 100644 tests/unit_tests/tasks/test_cache.py
create mode 100644 tests/unit_tests/test_mcp_stdio_entrypoint.py
create mode 100644 tests/unit_tests/test_sqllab_error_stacktrace.py
create mode 100644 tests/unit_tests/utils/encrypt_test.py
create mode 100644 tests/unit_tests/utils/test_network.py
create mode 100644 tests/unit_tests/utils/test_split.py
create mode 100644 tests/unit_tests/views/test_utils.py