Skip to content

Commit f70befb

Browse files
committed
Merge remote-tracking branch 'upstream/master' into synodim
2 parents cc2a583 + c7c0e91 commit f70befb

File tree

186 files changed

+3892
-2835
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

186 files changed

+3892
-2835
lines changed

.github/CODEOWNERS

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
# Ignore translations as those will be updated by GHA for Localazy download
2121
/src/i18n/strings
2222
/src/i18n/strings/en_EN.json @element-hq/element-web-reviewers
23-
# Ignore the synapse plugin as this is updated by GHA for docker image updating
23+
# Ignore the synapse & mas plugins as this is updated by GHA for docker image updating
2424
/playwright/testcontainers/synapse.ts
25+
/playwright/testcontainers/mas.ts
2526

.github/PULL_REQUEST_TEMPLATE.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
## Checklist
44

5+
- [ ] I have read through [review guidelines](../docs/review.md) and [CONTRIBUTING.md](../CONTRIBUTING.md).
56
- [ ] Tests written for new code (and old code if feasible).
67
- [ ] New or updated `public`/`exported` symbols have accurate [TSDoc](https://tsdoc.org/) documentation.
78
- [ ] Linter and other CI checks pass.

CHANGELOG.md

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,27 @@
1+
Changes in [1.11.111](https://github.com/element-hq/element-web/releases/tag/v1.11.111) (2025-09-10)
2+
====================================================================================================
3+
## ✨ Features
4+
5+
* Do not hide media from your own user by default ([#29797](https://github.com/element-hq/element-web/pull/29797)). Contributed by @Half-Shot.
6+
* Remember whether sidebar is shown for calls when switching rooms ([#30262](https://github.com/element-hq/element-web/pull/30262)). Contributed by @bojidar-bg.
7+
* Open the proper integration settings on integrations disabled error ([#30538](https://github.com/element-hq/element-web/pull/30538)). Contributed by @Half-Shot.
8+
* Show a "progress" dialog while invites are being sent ([#30561](https://github.com/element-hq/element-web/pull/30561)). Contributed by @richvdh.
9+
* Move the room list to the new ListView(backed by react-virtuoso) ([#30515](https://github.com/element-hq/element-web/pull/30515)). Contributed by @langleyd.
10+
11+
## 🐛 Bug Fixes
12+
13+
* [Backport staging] Ensure container starts if it is mounted with an empty /modules directory. ([#30705](https://github.com/element-hq/element-web/pull/30705)). Contributed by @RiotRobot.
14+
* Fix room joining over federation not specifying vias or using aliases ([#30641](https://github.com/element-hq/element-web/pull/30641)). Contributed by @t3chguy.
15+
* Fix stable-suffixed MSC4133 support ([#30649](https://github.com/element-hq/element-web/pull/30649)). Contributed by @dbkr.
16+
* Fix i18n of message when a setting is disabled ([#30646](https://github.com/element-hq/element-web/pull/30646)). Contributed by @dbkr.
17+
* ListView should not handle the arrow keys if there is a modifier applied ([#30633](https://github.com/element-hq/element-web/pull/30633)). Contributed by @langleyd.
18+
* Make BaseDialog's div keyboard focusable and fix test. ([#30631](https://github.com/element-hq/element-web/pull/30631)). Contributed by @langleyd.
19+
* Fix: Allow triple-click text selection to flow around pills ([#30349](https://github.com/element-hq/element-web/pull/30349)). Contributed by @AlirezaMrtz.
20+
* Watch for a 'join' action to know when the call is connected ([#29492](https://github.com/element-hq/element-web/pull/29492)). Contributed by @robintown.
21+
* Fix: add missing tooltip and aria-label to lock icon next to composer ([#30623](https://github.com/element-hq/element-web/pull/30623)). Contributed by @florianduros.
22+
* Don't render context menu when scrolling ([#30613](https://github.com/element-hq/element-web/pull/30613)). Contributed by @langleyd.
23+
24+
125
Changes in [1.11.110](https://github.com/element-hq/element-web/releases/tag/v1.11.110) (2025-08-27)
226
====================================================================================================
327
## ✨ Features

Dockerfile

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
# syntax=docker.io/docker/dockerfile:1.17-labs@sha256:9187104f31e3a002a8a6a3209ea1f937fb7486c093cbbde1e14b0fa0d7e4f1b5
22

33
# Builder
4-
FROM --platform=$BUILDPLATFORM node:22-bullseye@sha256:2d63e0f812d023c4c764e83d7e30dc94949304443ebc372d5c445e63a5ae49c1 AS builder
4+
FROM --platform=$BUILDPLATFORM node:22-bullseye@sha256:9e34ba52e1f3c31ed9bd4d0bcf784f5909db17cda61c220e29c8d7a8ebfb402e AS builder
55

66
# Support custom branch of the js-sdk. This also helps us build images of element-web develop.
77
ARG USE_CUSTOM_SDKS=false
@@ -19,7 +19,7 @@ RUN /src/scripts/docker-package.sh
1919
RUN cp /src/config.sample.json /src/webapp/config.json
2020

2121
# App
22-
FROM nginxinc/nginx-unprivileged:alpine-slim@sha256:e61b77b27c8f3124fad6d19e894ca5b603bcaf6a34a2df035511299dfa6fad35
22+
FROM nginxinc/nginx-unprivileged:alpine-slim@sha256:ea6c4b8b568824ea94cd1fabd47e1c4e7c0c04744f344a3793f7e9c8ac3a3636
2323

2424
# Need root user to install packages & manipulate the usr directory
2525
USER root

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ Element has several tiers of support for different environments:
2727
- Best effort
2828
- Definition:
2929
- Issues **accepted**, regressions **do not block** the release
30-
- The wider Element Products(including Element Call and the Enterprise Server Suite) do still not officially support these browsers.
30+
- The wider Element Products (including Element Call and the Enterprise Server Suite) do still not officially support these browsers.
3131
- The element web project and its contributors should keep the client functioning and gracefully degrade where other sibling features (E.g. Element Call) may not function.
3232
- Last major release of Firefox ESR and Chrome/Edge Extended Stable
3333
- Community Supported

docker/docker-entrypoint.d/18-load-element-modules.sh

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,10 +14,9 @@ entrypoint_log() {
1414
mkdir -p /tmp/element-web-config
1515
cp /app/config*.json /tmp/element-web-config/
1616

17-
# If there are modules to be loaded
18-
if [ -d "/modules" ]; then
17+
# If the module directory exists AND the module directory has modules in it
18+
if [ -d "/modules" ] && [ "$( ls -A '/modules' )" ]; then
1919
cd /modules
20-
2120
for MODULE in *
2221
do
2322
# If the module has a package.json, use its main field as the entrypoint

knip.ts

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,13 @@ export default {
4242
"util",
4343
// Embedded into webapp
4444
"@element-hq/element-call-embedded",
45+
46+
// Used by matrix-js-sdk, which means we have to include them as a
47+
// dependency so that // we can run `tsc` (since we import the typescript
48+
// source of js-sdk, rather than the transpiled and annotated JS like you
49+
// would with a normal library).
50+
"@types/content-type",
51+
"@types/sdp-transform",
4552
],
4653
ignoreBinaries: [
4754
// Used in scripts & workflows

package.json

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "element-web",
3-
"version": "1.11.110",
3+
"version": "1.11.111",
44
"description": "Element: the future of secure communication",
55
"author": "New Vector Ltd.",
66
"repository": {
@@ -75,7 +75,7 @@
7575
"resolutions": {
7676
"**/pretty-format/react-is": "19.1.1",
7777
"@playwright/test": "1.54.2",
78-
"@types/react": "19.1.9",
78+
"@types/react": "19.1.10",
7979
"@types/react-dom": "19.1.7",
8080
"oidc-client-ts": "3.3.0",
8181
"jwt-decode": "4.0.0",
@@ -96,7 +96,6 @@
9696
"@matrix-org/spec": "^1.7.0",
9797
"@sentry/browser": "^10.0.0",
9898
"@types/png-chunks-extract": "^1.0.2",
99-
"@types/react-virtualized": "^9.21.30",
10099
"@vector-im/compound-design-tokens": "^6.0.0",
101100
"@vector-im/compound-web": "^8.1.2",
102101
"@vector-im/matrix-wysiwyg": "2.39.0",
@@ -135,15 +134,15 @@
135134
"maplibre-gl": "^5.0.0",
136135
"matrix-encrypt-attachment": "^1.0.3",
137136
"matrix-events-sdk": "0.0.1",
138-
"matrix-js-sdk": "38.0.0",
137+
"matrix-js-sdk": "38.1.0",
139138
"matrix-widget-api": "^1.10.0",
140139
"memoize-one": "^6.0.0",
141140
"mime": "^4.0.4",
142141
"oidc-client-ts": "^3.0.1",
143142
"opus-recorder": "^8.0.3",
144143
"pako": "^2.0.3",
145144
"png-chunks-extract": "^1.0.0",
146-
"posthog-js": "1.259.0",
145+
"posthog-js": "1.260.1",
147146
"qrcode": "1.5.4",
148147
"re-resizable": "6.11.2",
149148
"react": "^19.0.0",
@@ -153,8 +152,7 @@
153152
"react-focus-lock": "^2.5.1",
154153
"react-string-replace": "^1.1.1",
155154
"react-transition-group": "^4.4.1",
156-
"react-virtualized": "^9.22.5",
157-
"react-virtuoso": "^4.12.6",
155+
"react-virtuoso": "^4.14.0",
158156
"rfc4648": "^1.4.0",
159157
"sanitize-filename": "^1.6.3",
160158
"sanitize-html": "2.17.0",
@@ -187,7 +185,7 @@
187185
"@babel/runtime": "^7.12.5",
188186
"@casualbot/jest-sonar-reporter": "2.2.7",
189187
"@element-hq/element-call-embedded": "0.14.1",
190-
"@element-hq/element-web-playwright-common": "^1.4.4",
188+
"@element-hq/element-web-playwright-common": "^1.4.6",
191189
"@peculiar/webcrypto": "^1.4.3",
192190
"@playwright/test": "^1.50.1",
193191
"@principalstudio/html-webpack-inject-preload": "^1.2.7",
@@ -205,6 +203,7 @@
205203
"@testing-library/react": "^16.0.0",
206204
"@testing-library/user-event": "^14.5.2",
207205
"@types/commonmark": "^0.27.4",
206+
"@types/content-type": "^1.1.9",
208207
"@types/counterpart": "^0.18.1",
209208
"@types/css-tree": "^2.3.8",
210209
"@types/diff-match-patch": "^1.0.32",
@@ -223,11 +222,12 @@
223222
"@types/node-fetch": "^2.6.2",
224223
"@types/pako": "^2.0.0",
225224
"@types/qrcode": "^1.3.5",
226-
"@types/react": "19.1.9",
225+
"@types/react": "19.1.10",
227226
"@types/react-beautiful-dnd": "^13.0.0",
228227
"@types/react-dom": "19.1.7",
229228
"@types/react-transition-group": "^4.4.0",
230229
"@types/sanitize-html": "2.16.0",
230+
"@types/sdp-transform": "^2.4.10",
231231
"@types/semver": "^7.5.8",
232232
"@types/tar-js": "^0.3.5",
233233
"@types/ua-parser-js": "^0.7.36",

playwright/e2e/crypto/toasts.spec.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -126,7 +126,7 @@ test.describe("'Turn on key storage' toast", () => {
126126
await toast.getByRole("button", { name: "Continue" }).click();
127127

128128
// Then we see the Encryption settings dialog with an option to turn on key storage
129-
await expect(page.getByRole("checkbox", { name: "Allow key storage" })).toBeVisible();
129+
await expect(page.getByRole("switch", { name: "Allow key storage" })).toBeVisible();
130130

131131
// And when we close that
132132
await page.getByRole("button", { name: "Close dialog" }).click();
@@ -153,7 +153,7 @@ test.describe("'Turn on key storage' toast", () => {
153153
await page.getByRole("button", { name: "Go to Settings" }).click();
154154

155155
// Then we see Encryption settings again
156-
await expect(page.getByRole("checkbox", { name: "Allow key storage" })).toBeVisible();
156+
await expect(page.getByRole("switch", { name: "Allow key storage" })).toBeVisible();
157157

158158
// And when we close that, see the toast, click Dismiss, and Yes, Dismiss
159159
await page.getByRole("button", { name: "Close dialog" }).click();

playwright/e2e/crypto/utils.ts

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -300,9 +300,9 @@ export async function doTwoWaySasVerification(page: Page, verifier: JSHandle<Ver
300300
export async function enableKeyBackup(app: ElementAppPage): Promise<string> {
301301
const encryptionTab = await app.settings.openUserSettings("Encryption");
302302

303-
const keyStorageToggle = encryptionTab.getByRole("checkbox", { name: "Allow key storage" });
303+
const keyStorageToggle = encryptionTab.getByRole("switch", { name: "Allow key storage" });
304304
if (!(await keyStorageToggle.isChecked())) {
305-
await encryptionTab.getByRole("checkbox", { name: "Allow key storage" }).click();
305+
await encryptionTab.getByRole("switch", { name: "Allow key storage" }).click();
306306
}
307307

308308
await encryptionTab.getByRole("button", { name: "Set up recovery" }).click();
@@ -323,11 +323,11 @@ export async function enableKeyBackup(app: ElementAppPage): Promise<string> {
323323
export async function disableKeyBackup(app: ElementAppPage): Promise<void> {
324324
const encryptionTab = await app.settings.openUserSettings("Encryption");
325325

326-
const keyStorageToggle = encryptionTab.getByRole("checkbox", { name: "Allow key storage" });
326+
const keyStorageToggle = encryptionTab.getByRole("switch", { name: "Allow key storage" });
327327
if (await keyStorageToggle.isChecked()) {
328-
await encryptionTab.getByRole("checkbox", { name: "Allow key storage" }).click();
328+
await encryptionTab.getByRole("switch", { name: "Allow key storage" }).click();
329329
await encryptionTab.getByRole("button", { name: "Delete key storage" }).click();
330-
await encryptionTab.getByRole("checkbox", { name: "Allow key storage" }).isVisible();
330+
await encryptionTab.getByRole("switch", { name: "Allow key storage" }).isVisible();
331331

332332
// Wait for the update to account data to stick
333333
await new Promise((resolve) => setTimeout(resolve, 2000));

0 commit comments

Comments
 (0)