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

70751 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
Michael Telatynski
171955a9e2 Satisfy pnpm audit (#34990)
* Satisfy pnpm audit

* Iterate

* Iterate

* Fix Windows issues due to npm shims

By switching to pnpm/setup

* Iterate

* Hold back unrelated dep bumps

* Update pnpm to fix Windows issue
2026-10-09 17:36:06 +00:00
Florian Duros
795a9315b7 Fix restricted guest module showing excluded UI elements (#35412)
* Fix components shown to guest user

* Add tests for restricted guests shouldShowComponent
2026-10-09 16:29:48 +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
David Baker
4b3af283fb Always merge downloaded test reports (#35400)
The HTML report uploader always runs but the blob merge step is skipped
on failing jobs, so if previous steps fail then the step that's supposed
to upload an HTML report will actually upload the three blob reports
again as one zipped artifact and Dave will become very confused.
2026-10-09 11:01:19 +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
David Baker
16e939b028 Overwrite vitest blob artifacts (#35402)
As commented, if previous job flakes (but ran enough to upload a blob
report) and you retry it, the final job would still get the artifact
from the flaked run.
2026-10-09 09:01:37 +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]
80e525a6dc Update actions/download-artifact digest to 9000827 (#35383)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-10-08 09:07:01 +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
renovate[bot]
c0ecf19832 Update cloudflare/wrangler-action digest to 953926a (#35339)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-10-08 08:45:11 +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
David Langley
cfeb5e67ae Keep the new timeline at the bottom when its viewport changes height (#35374)
When the new timeline's scroller shrinks (a banner appears, the composer
grows, the window is resized), the browser keeps `scrollTop`, so a reader at
the bottom was left with the newest messages below the fold. Rows whose height
follows the window, such as collapsed code blocks, made window resizes lose
the bottom even with a resize handler in the view, because TanStack
compensated them before the handler ran.

The fix is a new hunk in our @tanstack/virtual-core patch rather than code in
TimelineView: an end-anchored list now keeps an end-pinned view pinned when
its scroll element shrinks, the same way it already does when a row grows.
It is proposed upstream to TanStack Virtual and can be dropped once released.
The rest of the patch is unchanged.
2026-10-07 23:06:20 +00:00
David Baker
4d1993cc38 Bump shared components to 0.2.1 (#35378) 2026-10-07 18:03:17 +00:00
David Langley
2ee2f13994 Codeowners device listener -> crypto team (#35377)
* Add CODEOWNERS entry for device-listener

Added new CODEOWNERS entry for device-listener directory.

* remove break
2026-10-07 17:45:02 +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
Michael Telatynski
20ffddae23 Open renovate PRs for testcontainers digests on a schedule (#35369) 2026-10-07 13: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]
a16dc9022e Update dependency stylelint to v17.16.0 (#35352)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-10-07 11:03:52 +00:00
David Langley
2f1f2b3b73 Add AI assistance checkbox to PR template (#35363) 2026-10-07 10:21:00 +00:00
Will Hunt
8ecafca54b Improve Synapse test run performance (#35099)
* Fix sliding sync invite flake

* Reduce Synapse `synapse.storage.SQL` logs to INFO

* Disable push and debug logs for further speedups

* Remove overwritten synapse log consumer from playwright-common

testcontainers keeps only the last log consumer, so the `homeserver` one always replaced it and the "synapse" buffer stayed empty.

* Set up vitest unit tests in playwright-common

The build uses a separate tsconfig so test files are not compiled into lib/.

* Add PLAYWRIGHT_CAPTURE_LOGS to save container logs for passing e2e tests

Writes each container's logs to <container>.log in the test output directory, for analysing homeserver performance.

* Re-enable push in Synapse for e2e tests

Disabling it meant opting many specs back in. Keeps the INFO root log level from 0b8294cbc2.

* update lock

* temp synapse image

* Remove temp synapse image

* fmt
2026-10-07 09:48:45 +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]
fb80ecba01 Update dependency unplugin-dts to v1.1.2 (#35367)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-10-07 09:08:42 +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
renovate[bot]
4ca56fecf7 Update dependency eslint-plugin-storybook to v10.6.1 (#35346)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-10-07 08:09:42 +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]
0545871a76 Update dependency motion to v14 (#35357)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-10-06 22:56:52 +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