1
0
mirror of https://github.com/element-hq/element-web.git synced 2026-10-24 23:19:26 +03:00
Commit Graph

1289 Commits

Author SHA1 Message Date
ElementRobot
4574916c67 [create-pull-request] automated change (#35421)
Co-authored-by: t3chguy <2403652+t3chguy@users.noreply.github.com>
2026-10-13 08:03:39 +00:00
Michael Telatynski
f82a8eafe3 Fix more race conditions in routing (#35385)
* Fix more race conditions in routing

Claude assisted

It identified 2 issues:
+ Malformed percent-encoding was unhandled
+ Routing could race with the browser handler causing the latest hash to be ignored

* Fix playwright utility `goTo` being racy

Fixes https://github.com/element-hq/element-web/issues/28872

* Workaround for happy-dom issue https://github.com/capricorn86/happy-dom/issues/2479
2026-10-13 07:53:33 +00:00
renovate[bot]
b8ddf92e7e Update pnpm (#35354)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-10-13 07:49:22 +00:00
Johannes Marbach
aed4ed399c Bump matrix-widget-api to 1.20.0 (#35424) 2026-10-12 19:10:45 +00:00
Andy Balaam
b369540cc2 Ensure 'Can't confirm?' is primary only if no other options are available (#35406) 2026-10-12 14:26:15 +00:00
Matthew Hodgson
efca432abd Fix blank maps by bundling the maplibre-gl worker explicitly (#35423)
* Fix blank maps by bundling the maplibre-gl worker explicitly

maplibre-gl v6 locates its tile-parsing worker from `import.meta.url`,
which webpack inlines as a file:// path. maplibre rejects that, so no
worker is spawned and maps render only their background with no error.
Build the worker as its own entry and point maplibre at it.

* Resolve the maplibre worker inside the hashed bundle directory

The webpack public path is the webapp root, not the bundle directory,
so the worker URL pointed at a file that does not exist and maplibre
hung silently. Ask webpack for the entry's full filename instead.

* Test that maplibre is pointed at the bundled worker
2026-10-12 14:06:56 +00:00
mxandreas
702043ca57 Don't allow to skip device verification by default (#35364)
* Reapply not allowing skip device verification by default.

Reverts the revert commit 417fa60b0e.

* Switch to a new local store entry to check if verification is enforced, that is only set when the force_verification is true at the login.

* Test that force_verification does not affect existing sessions.

* Update test title

Co-authored-by: Michael Telatynski <7t3chguy@gmail.com>

* Fix formatting

Co-authored-by: Michael Telatynski <7t3chguy@gmail.com>

* Fix test title

Co-authored-by: Michael Telatynski <7t3chguy@gmail.com>

* Address review comments for 'should not force verification on reload if force_verification is enabled after login' test.

---------

Co-authored-by: Michael Telatynski <7t3chguy@gmail.com>
2026-10-12 13:27:34 +00:00
Timo
5fbc912664 Use hash version for @element-hq/element-call-component + remove livekit-client (#35430)
* Use hash version for @element-hq/element-call-component

Otherwise renovate will pull in incompatible version bumps.

* remove livekit-client
2026-10-12 13:10:21 +00:00
Andy Balaam
ba531b906d Remodel "Can't confirm" dialog to match designs (#35375) 2026-10-09 13:47:03 +00:00
David Baker
1ddb4049e0 Update compound-web to 10.3.1 (#35390)
* Update compound-web to 10.3.1

To fix tooltip overflow bug

* Fix success to accent

* snapshot/test updates

* Gah the snapshots

* more snapshots

* Last lot of snapshots, hopefully

* Change the brittle CSS override to reflect the new CSS

* Same hack on date picker context menu

* s/success/accent/ and another padding override

* Update for really tiny font rendering differences
2026-10-09 12:20:01 +00:00
Michael Telatynski
f03ce37cce Deflake playwright tests (#35392)
* Deflake decryption-failure-messages playwright test

By waiting for things to happen in the right order

* Deflake sliding-sync playwright test

By waiting for things to happen in the right order
2026-10-09 11:17:23 +00:00
ElementRobot
0e9c433a39 [create-pull-request] automated change (#35326)
Co-authored-by: t3chguy <2403652+t3chguy@users.noreply.github.com>
2026-10-09 09:16:03 +00:00
Johannes Marbach
d89ee058f2 Remove feature_disable_call_per_sender_encryption (#35396) 2026-10-09 08:48:34 +00:00
Michael Telatynski
ec6c5ea7ab Fix flaky room-list-panel playwright tests (#35389)
Testing drag and drop is fun...
2026-10-09 08:04:21 +00:00
David Langley
263a2b56d9 Run DeviceListener rechecks one at a time (#35053)
recheck() started a new check on every crypto, sync or account-data event,
so several could run at once, each writing its verdict when it finished.
"Not verified" is decided after a couple of local reads; "ok" only after
the full chain of checks, some hitting the server. So around a
verification, an older "not verified" could land after a newer "ok" and
stick, with no further event to correct it - leaving the app asking the
user to verify a device they had just verified.

Run rechecks one at a time. If more are requested while one is running,
run just one more afterwards, so the last result written is always the
newest.

Fixes #33784
Fixes #33787
Fixes #29451

Signed-off-by: David Langley <davidl@element.io>
2026-10-08 14:40:04 +00:00
Florian Duros
52f5cb57f9 Move string.copyPlaintext and Email.looksValid to shared utils (#35361)
* Move copyPlaintext to shared utils

* Move emailLooksValid to shared-utils

* Update shared utils README

* Keep original copyright for clipboard.ts
2026-10-08 14:26:15 +00:00
Johannes Marbach
83cbced152 Use MatrixRTC slots behind labs flag (#34392)
* Use MatrixRTC slots behind labs flag

* Remove superfluous act's

* Remove outdated ensureSlotOpen wrapper

* Add description for labs togglec

* Add doc strings for slot methods

* Throw from the slot functions when the feature flag is off

* Log when opening slot fails

* Assert on slot ID

* Adapt to JS SDK changes
2026-10-08 14:11:21 +00:00
renovate[bot]
e395689fdf Update docker.io/docker/dockerfile Docker tag to v1.28 (#35387)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-10-08 11:29:35 +00:00
Will Hunt
56ec209d49 Drop support for migrating libolm sessions (#35138)
* Remove the libolm to rust crypto store migration

* Add LegacyCryptoUnsupportedView to shared-components

* Show LegacyCryptoUnsupportedView when an unmigrated libolm crypto store is found

* Replace crypto migration e2e test with legacy crypto store test

* Cleanup loadSession, reduce congivitive complexity.

* Improve centering and spacing of view

* update snap

* changes for review

* lint

* Don't format the dump file

* Re-add missing files
2026-10-08 11:27:39 +00:00
renovate[bot]
4717d533c8 Update dependency sanitize-html to v2.18.0 (#35351)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-10-08 09:05:32 +00:00
Timo
5491852d7e Add functional members to the element call capabilities (#35323) 2026-10-08 08:37:02 +00:00
Florian Duros
d0c778e8c4 Update Pill and PillInput design (#35370)
* Update compound design tokens to 11.2.0

* Update Pill design

* Update PillInput design

* Update screenshots

* Update snapshots

* Update ImageView snapshot

* Update e2e screenshots
2026-10-08 08:15:25 +00:00
Michael Telatynski
eb891a22b4 Refactor UserIdentityWarning to fix race conditions (#35372)
Which caused a flaky test

Fixes https://github.com/element-hq/element-web/issues/35170
2026-10-08 00:30:10 +00:00
Michael Telatynski
41d5cc1d3b Switch audio-player.spec.ts to using a retrying assertion (#35373)
To deflake some tests
2026-10-07 17:19:32 +00:00
Florian Duros
fa48f2ce54 Allow module dialogs without a title (#35362)
Make DialogOptions.title optional and add ariaLabel so a dialog with no title keeps an accessible name.
2026-10-07 12:53:27 +00:00
Michael Telatynski
573b2abb74 Refactor hooks to use React 19's useEffectEvent (#35368)
Can in theory avoid some race conditions in renders
2026-10-07 11:51:48 +00:00
Andy Balaam
32a835405b Offer 'Sign out' on the identity reset page if there is no other option (#35307)
* Offer 'Sign out' on the identity reset page if there is no other option

* Fix incorrect prop documentation after review

* Update comments to reflect the 'Sign out' variant
2026-10-07 11:08:38 +00:00
renovate[bot]
6c2e29e27b Update testcontainers docker digests (#35365)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-10-07 09:27:40 +00:00
renovate[bot]
dc238bef71 Update dependency @sentry/browser to v11 (#35355)
* Update dependency @sentry/browser to v11

* Update Sentry inboundFiltersIntegration to eventFiltersIntegration

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Michael Telatynski <7t3chguy@gmail.com>
2026-10-07 08:56:48 +00:00
Paul Chobert
161aef320f Stop writing removed legacy mention rules from the Labs notification settings (#35035)
* Stop writing removed legacy mention rules from labs notification settings

Matrix v1.17 removed the legacy text-matching mention push rules
(.m.rule.contains_display_name, .m.rule.contains_user_name,
.m.rule.roomnotif) from the base rule set (MSC4210), and Synapse is
about to stop serving them by default. The labs notification settings
page wrote those three rules on every save regardless. Against a server
that no longer serves them the page never converges: Synapse currently
accepts the writes with 200 without serving the rules, so the "Update"
banner never clears and the page stays locked, and once the server
answers 404 as the spec requires every save fails.

The reconciler now only writes the legacy rules when they are present
in the rules fetched from the server, the same way the intentional
rules are gated on supportsIntentionalMentions.

Adds reconciler tests with the legacy rules absent and present, and
Playwright specs that run against Synapse with msc4210_enabled both
off and on.

* Split the labs mention rules e2e helper into explicit steps

Replace the shared parameterised test with small helpers that each spec
calls in order, so neither spec branches on the server mode. Each spec
asserts its own precondition and its own final state of the legacy rule.

Clicking "Proceed" is now unconditional and waits for the banner. Every
fresh account shows it, and the old one-shot presence check raced the
push rules fetch.

* Update copyright holder in labs mention rules e2e tests

* Cover all legacy mention rules in the labs notification e2e tests

* Keep proceeding until the labs update banner is gone in e2e tests

While the server serves the legacy mention rules, one click on "Proceed"
does not always unlock the labs notification settings page. The page writes
a legacy rule and its intentional counterpart in parallel, and
monitorSyncedPushRules copies the legacy rule's actions onto the intentional
one whenever a sync shows them out of step. When that sync lands between
the two writes, the monitor puts the old actions back, the page re-reads
the rules, still sees a difference and keeps the banner until the user
proceeds again.

That race is in the app and predates these tests, which are about which
rules get written. It made the served-mode spec flaky, so the helper now
proceeds until the banner is gone.

* Give the labs update banner click a timeout in e2e tests

click() waits for the "Proceed" button to be visible. On a retry the banner
may already be gone, which is why the helper checks for it before clicking.
A banner that goes away between that check and the click would still make
click() wait until the test times out, so the click now gives up after a
second and the next attempt finds the banner gone.
2026-10-07 07:47:24 +00:00
renovate[bot]
30c3d0ddd7 Update dependency postcss-preset-env to v11.6.0 (#35350)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-10-06 23:26:18 +00:00
renovate[bot]
386d96bf78 Update electron (#35335)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-10-06 21:26:06 +00:00
renovate[bot]
7e0a4fbecd Update testcontainers docker digests (#35333)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-10-06 17:20:39 +00:00
renovate[bot]
ebac4c64f6 Update dependency @element-hq/element-call-embedded to v0.26.1 (#35334)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-10-06 16:40:34 +00:00
Michael Telatynski
ed149b72d4 Clean up leftover bits relating to the React SDK Module API (#35332)
* Clean up leftover bits relating to the React SDK Module API

* Whoops and the .gitignore
2026-10-06 15:04:57 +00:00
Will Hunt
3c3db95f1a Fix sliding sync invite flake (#35342) 2026-10-06 15:00:32 +00:00
Andy Balaam
417fa60b0e Revert "Do not allow skip device verification by default (#35259)" (#35343)
This reverts commit 789de241d3.
2026-10-06 14:56:46 +00:00
Michael Telatynski
edc85b8e7b Fix Debian control file Maintainer field (#35338)
Ubuntu upgrade got stricter on the format
2026-10-06 14:39:19 +00:00
renovate[bot]
69319bf8f6 Update electron-builder to v26.17.0 (#35336)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-10-06 14:30:46 +00:00
renovate[bot]
56442f44b1 Update rust:bookworm Docker digest to fbc3a35 (#35341)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-10-06 14:29:50 +00:00
renovate[bot]
01e2eb7bfb Update nginxinc/nginx-unprivileged:alpine-slim Docker digest to 1517d8c (#35340)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-10-06 14:29:40 +00:00
Michael Telatynski
816ccc50ce Merge remote-tracking branch 'origin/master' into develop
# Conflicts:
#	apps/web/package.json
#	pnpm-lock.yaml
2026-10-06 13:30:02 +01:00
Michael Telatynski
063a046cfa Deflake more vitest tests (#35327)
* Fix leaking effect which caused flaky test

Fixes https://github.com/element-hq/element-web/issues/35279

* Deflake Wywiwyg test

Handles a race condition with the composer setup being nonatomic

Fixes https://github.com/element-hq/element-web/issues/35321
2026-10-06 12:01:27 +00:00
mxandreas
789de241d3 Do not allow skip device verification by default (#35259)
* Change the default of `force_verification` to `true`.

* Fix tests for not skipping verification by default.

* Fix tests and snapshots for not skipping verification by default.

* Update screenshots.
2026-10-06 09:12:47 +00:00
ElementRobot
eb2093cf1b [create-pull-request] automated change (#35121)
Co-authored-by: dbkr <986903+dbkr@users.noreply.github.com>
Co-authored-by: David Baker <dbkr@users.noreply.github.com>
2026-10-06 07:44:09 +00:00
Hugh Nimmo-Smith
cd558745a7 Log getPickleKey() failures consistently (#34955)
* Refactor getPickleKey so that it can throw

* Review feedback

* Clarification on why errors are just logged

* Tests for pickling utils

* Revert Service Worker behaviour for pickle key not set

* Try and simplify tryDecryptToken() some more

Make it the caller's responsibility to handle edge cases sensibly.

* Rest of merge

* Additional test coverage
2026-10-05 16:12:55 +00:00
Michael Telatynski
2d42295702 Fix some Vitest flake issues (#35317)
* Fix flaky vitest test MatrixChat QR login

Fixes https://github.com/element-hq/element-web/issues/35295

* Fix flaky vitest screenshot test

Fixes https://github.com/element-hq/element-web/issues/35284
2026-10-05 14:16:38 +00:00
Hugh Nimmo-Smith
a0ad56456c Refactor Sign in with QR to use new SDK types (#35249)
* Rename rendezvous to flow in LoginWithQR

* Use SignInWithQRFlow and SignInWithQRSecrets for sign in with QR

* Additional test cases
2026-10-05 14:00:40 +00:00
David Baker
066518dfd7 Collection of EN string changes, Pt. 2 (#35289)
* Collection of EN string changes, Pt. 2

The webapp itself

* Sort i18n file

* Update tests/snapshots

and also change the rest of the "room" strings to "chat"

* more tests / snapshots

* More snapshots / tests

* More tests & snapshots

* Even more tests / snapshots

* More snapshots / tests

* Playwright screenshots pt. 1

* More screenshots

* More tests / screenshots

* One more 'devices'
2026-10-05 13:19:59 +01:00
Robin
36a6691b92 Don't use internal CallMembership constructor (#35316)
The constructor of CallMembership is not meant to be invoked outside of matrix-js-sdk's tests, and is documented as such.
2026-10-05 10:53:38 +00:00