From 0a93ad5a9f8f402e5f1f7b19c129d354dc348050 Mon Sep 17 00:00:00 2001 From: "v.lagerev" Date: Sat, 9 May 2026 13:00:45 +0300 Subject: [PATCH] =?UTF-8?q?chore(deps):=20bump=20matrix-js-sdk=2040.2.0=20?= =?UTF-8?q?=E2=86=92=2041.4.0=20with=20SessionMembershipData=20barrel=20an?= =?UTF-8?q?d=20EC=20sticky-event=20capability=20extension?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/ai/architecture.md | 2 +- package-lock.json | 28 +++++++++---------- package.json | 2 +- src/app/features/call/CallMemberCard.tsx | 6 ++-- .../developer-tools/DevelopTools.tsx | 2 +- src/app/features/room/RoomTimeline.tsx | 2 +- src/app/hooks/useIncomingRtcNotifications.ts | 2 +- src/app/plugins/call/utils.ts | 13 +++++++++ 8 files changed, 35 insertions(+), 22 deletions(-) diff --git a/docs/ai/architecture.md b/docs/ai/architecture.md index cceb54ff..1ccc7337 100644 --- a/docs/ai/architecture.md +++ b/docs/ai/architecture.md @@ -209,7 +209,7 @@ i18next + `react-i18next`. Translations in `public/locales/{en,ru}/*.json`, orga ## Key Libraries - **React 18.2** + React Router DOM 6 -- **matrix-js-sdk 38.2** — Matrix protocol +- **matrix-js-sdk 41.4** — Matrix protocol (exact pin, see `docs/plans/matrix_js_sdk_upgrade.md` for the M0..M4 bump trail) - **folds 2.6** — UI component library - **jotai 2.6** — State management - **vanilla-extract** — Type-safe CSS (compile-time → no runtime theme switching without reload) diff --git a/package-lock.json b/package-lock.json index 88e658c8..3e11c1fb 100644 --- a/package-lock.json +++ b/package-lock.json @@ -52,7 +52,7 @@ "jotai": "2.6.0", "linkify-react": "4.3.2", "linkifyjs": "4.3.2", - "matrix-js-sdk": "40.2.0", + "matrix-js-sdk": "41.4.0", "matrix-widget-api": "1.17.0", "millify": "6.1.0", "pdfjs-dist": "4.2.67", @@ -2856,9 +2856,9 @@ } }, "node_modules/@matrix-org/matrix-sdk-crypto-wasm": { - "version": "17.1.0", - "resolved": "https://registry.npmjs.org/@matrix-org/matrix-sdk-crypto-wasm/-/matrix-sdk-crypto-wasm-17.1.0.tgz", - "integrity": "sha512-yKPqBvKlHSqkt/UJh+Z+zLKQP8bd19OxokXYXh3VkKbW0+C44nPHsidSwd3SH+RxT+Ck2PDRwVcVXEnUft+/2g==", + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/@matrix-org/matrix-sdk-crypto-wasm/-/matrix-sdk-crypto-wasm-18.2.0.tgz", + "integrity": "sha512-puyZefvq6sHfqlmkri8umhA44724H2JL0YtX8wlvhGuNl8awX/Q1tZyW2Iekm9ZJP7BtuOqlNdg9oQd6iaGbNw==", "license": "Apache-2.0", "engines": { "node": ">= 18" @@ -10647,13 +10647,13 @@ "license": "Apache-2.0" }, "node_modules/matrix-js-sdk": { - "version": "40.2.0", - "resolved": "https://registry.npmjs.org/matrix-js-sdk/-/matrix-js-sdk-40.2.0.tgz", - "integrity": "sha512-wqb1Oq34WB9r0njxw8XiNsm8DIvYeGfCn3wrVrDwj8HMoTI0TvLSY1sQ+x6J2Eg27abfVwInxLKyxLp+dROFXQ==", + "version": "41.4.0", + "resolved": "https://registry.npmjs.org/matrix-js-sdk/-/matrix-js-sdk-41.4.0.tgz", + "integrity": "sha512-xlYXXb91T89rELlnZCRfrDd4Gpkv+F0owvsaSZ8709jR1upf/zVMpOK8d3jpvW9KFkrCkoSwTRE+zqmLqzYfhA==", "license": "Apache-2.0", "dependencies": { "@babel/runtime": "^7.12.5", - "@matrix-org/matrix-sdk-crypto-wasm": "^17.0.0", + "@matrix-org/matrix-sdk-crypto-wasm": "^18.1.0", "another-json": "^0.2.0", "bs58": "^6.0.0", "content-type": "^1.0.4", @@ -10662,7 +10662,7 @@ "matrix-events-sdk": "0.0.1", "matrix-widget-api": "^1.16.1", "oidc-client-ts": "^3.0.1", - "p-retry": "7", + "p-retry": "8", "sdp-transform": "^3.0.0", "unhomoglyph": "^1.0.6", "uuid": "13" @@ -11336,15 +11336,15 @@ } }, "node_modules/p-retry": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-7.1.1.tgz", - "integrity": "sha512-J5ApzjyRkkf601HpEeykoiCvzHQjWxPAHhyjFcEUP2SWq0+35NKh8TLhpLw+Dkq5TZBFvUM6UigdE9hIVYTl5w==", + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-8.0.0.tgz", + "integrity": "sha512-kFVqH1HxOHp8LupNsOys7bSV09VYTRLxarH/mokO4Rqhk6wGi70E0jh4VzvVGXfEVNggHoHLAMWsQqHyU1Ey9A==", "license": "MIT", "dependencies": { - "is-network-error": "^1.1.0" + "is-network-error": "^1.3.0" }, "engines": { - "node": ">=20" + "node": ">=22" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" diff --git a/package.json b/package.json index 10886b63..45ebf51b 100644 --- a/package.json +++ b/package.json @@ -84,7 +84,7 @@ "jotai": "2.6.0", "linkify-react": "4.3.2", "linkifyjs": "4.3.2", - "matrix-js-sdk": "40.2.0", + "matrix-js-sdk": "41.4.0", "matrix-widget-api": "1.17.0", "millify": "6.1.0", "pdfjs-dist": "4.2.67", diff --git a/src/app/features/call/CallMemberCard.tsx b/src/app/features/call/CallMemberCard.tsx index 6e3485d0..46903f80 100644 --- a/src/app/features/call/CallMemberCard.tsx +++ b/src/app/features/call/CallMemberCard.tsx @@ -1,4 +1,4 @@ -import { CallMembership, SessionMembershipData } from 'matrix-js-sdk/lib/matrixrtc/CallMembership'; +import { CallMembership, SessionMembershipData } from 'matrix-js-sdk/lib/matrixrtc'; import React, { useState } from 'react'; import { Avatar, Box, Icon, Icons, Text } from 'folds'; import { useMatrixClient } from '../../hooks/useMatrixClient'; @@ -43,7 +43,7 @@ export function CallMemberCard({ member }: CallMemberCardProps) { return ( {truncatedMembers.map((member) => ( - + ))} {members.length > max && ( { - await mx.setRoomAccountData(room.roomId, type, content); + await mx.setRoomAccountData(room.roomId, type as never, content as never); }, [mx, room.roomId] ); diff --git a/src/app/features/room/RoomTimeline.tsx b/src/app/features/room/RoomTimeline.tsx index 0d411bb4..b4b80b04 100644 --- a/src/app/features/room/RoomTimeline.tsx +++ b/src/app/features/room/RoomTimeline.tsx @@ -27,7 +27,7 @@ import { HTMLReactParserOptions } from 'html-react-parser'; import classNames from 'classnames'; import { ReactEditor } from 'slate-react'; import { Editor } from 'slate'; -import { SessionMembershipData } from 'matrix-js-sdk/lib/matrixrtc/CallMembership'; +import { SessionMembershipData } from 'matrix-js-sdk/lib/matrixrtc'; import to from 'await-to-js'; import { useAtomValue, useSetAtom } from 'jotai'; import { diff --git a/src/app/hooks/useIncomingRtcNotifications.ts b/src/app/hooks/useIncomingRtcNotifications.ts index c4c2e057..b7d69b21 100644 --- a/src/app/hooks/useIncomingRtcNotifications.ts +++ b/src/app/hooks/useIncomingRtcNotifications.ts @@ -29,7 +29,7 @@ import { } from 'matrix-js-sdk'; import { IRTCNotificationContent } from 'matrix-js-sdk/lib/matrixrtc/types'; import { MatrixRTCSessionManagerEvents } from 'matrix-js-sdk/lib/matrixrtc/MatrixRTCSessionManager'; -import { CallMembership, SessionMembershipData } from 'matrix-js-sdk/lib/matrixrtc/CallMembership'; +import { CallMembership, SessionMembershipData } from 'matrix-js-sdk/lib/matrixrtc'; import { MatrixRTCSessionEvent } from 'matrix-js-sdk/lib/matrixrtc/MatrixRTCSession'; import { useMatrixClient } from './useMatrixClient'; import { mDirectAtom } from '../state/mDirectList'; diff --git a/src/app/plugins/call/utils.ts b/src/app/plugins/call/utils.ts index 7c7009a8..837ec70d 100644 --- a/src/app/plugins/call/utils.ts +++ b/src/app/plugins/call/utils.ts @@ -96,6 +96,19 @@ export function getCallCapabilities( EventType.RoomRedaction, 'io.element.call.reaction', 'org.matrix.msc4310.rtc.decline', + // MSC4310 — final stable name added alongside the unstable prefix to ease + // future SDK transition (Element Web bundle already requests both). + 'm.rtc.decline', + // MSC4143 / MSC4354 sticky-event RTC membership. Sticky events go through + // the room-event path (`_unstable_sendStickyEvent` / `_unstable_getStickyEvents`), + // not state events — so capability here is `forRoomEvent`, not `forStateEvent`. + // Vojo's homeserver currently advertises `org.matrix.msc4354: false` and EC + // bundle uses legacy `m.call.member` state events, so today this path is + // not exercised; allowlist matches the Element Web pattern for forward-compat + // when either bundle or server flips. Both unstable (`org.matrix.msc4143.rtc.member`) + // and stable (`m.rtc.member`) names registered for the same reason. + 'org.matrix.msc4143.rtc.member', + 'm.rtc.member', ].forEach((type) => { capabilities.add(WidgetEventCapability.forRoomEvent(EventDirection.Send, type).raw); capabilities.add(WidgetEventCapability.forRoomEvent(EventDirection.Receive, type).raw);