448 Commits

Author SHA1 Message Date
David Baker d533522663 Fix misaligned display name on desktop (#33623)
* Fix misaligned display name on desktop

Move the usermenu custom class to the whole thing, not just the button

* Update comment

* Update snapshot
2026-05-26 14:02:01 +00:00
R Midhun Suresh bc7ac39d5b Use the separator as border between roomlist and main panel (#33598)
* Remove border from roomlist container

The separator will act as the border so we no longer need the roomlist
border.

* Use pointer events to detect click event

Otherwise the onClick handler would run when you resize the panel.

* Support showing the border in separator

* Update tests

* Disable double click behaviour on separator

* Fix screenshot tests failing
2026-05-26 11:22:41 +01:00
Michael Telatynski f0342ddbd2 Add support for m.recent_emoji account data event (#33172)
* Improve types in AccountSettingsHandler

* Add support for `m.recent_emoji` account data event

Maintains read-compatibility with `io.element.recent_emoji`

* Iterate

* Make ts happier

* Improve coverage

* Improve coverage

* Improve coverage
2026-05-26 08:30:02 +00:00
David Baker 5cfb68962d Fix missed await in ChangePassword (#33588)
Looks like this probably ought to be awaited, anyway, although
I'm not convinced it's the cause of the flake I'm seeing.
2026-05-26 08:08:33 +00:00
rbondesson 15626733b1 Fix copyright texts (#33613) 2026-05-26 07:44:43 +00:00
Zack 384db1faaf Move E2ePadlock icon colors to CSS module (#33577)
* Move E2ePadlock icon colors to CSS module

* update react id labelling

* Update E2eMessageSharedIcon snapshots
2026-05-26 07:13:15 +00:00
rbondesson 5486a22922 Refactor EventTile using the MVVM pattern - #5b (#33600)
* Extract EventTile E2E padlock state

* Refactor EventTile E2E padlock rendering after review comments
2026-05-26 06:36:05 +00:00
ElementRobot f3bbf2c67a [create-pull-request] automated change (#33508)
Co-authored-by: t3chguy <2403652+t3chguy@users.noreply.github.com>
2026-05-26 06:12:35 +00:00
renovate[bot] d63792f672 Update dependency caniuse-lite to v1.0.30001793 (#33552)
* Update dependency caniuse-lite to v1.0.30001793

* Update browser support tests

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: David Baker <dbkr@users.noreply.github.com>
2026-05-25 14:23:38 +00:00
rbondesson 40fbe1fae1 Stabilise flaky QR code rendering tests (#33593)
* Stabilise QR code rendering tests

* Extract QR mocking code to test-utils
2026-05-25 07:10:10 +00:00
renovate[bot] 5a2f246577 Update electron (#33562)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-05-23 21:32:32 +00:00
renovate[bot] f88b2a4d4d Update docker.io/docker/dockerfile Docker tag to v1.24 (#33561)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-05-23 21:32:04 +00:00
renovate[bot] c38fed97a2 Update npm non-major dependencies (#33557)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-05-23 21:30:33 +00:00
renovate[bot] 1a78597e72 Update pnpm to v10.33.4 (#33558)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-05-23 19:38:40 +00:00
renovate[bot] fb64fcfd47 Update jest (#33556)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-05-23 18:57:31 +00:00
Andy Balaam db92f80e90 Simplify DeviceListener recheck logic using a failedCheck method (#32982)
* Extract the logic for a failed recheck into a method

This will allow us to simplify the logic that calls it.

* Remove unneeded log items

These are already known at the time of logging due to the surrounding
logic.

* Remove now-unneeded initial 'all is ok' check in DeviceListener
2026-05-22 22:10:13 +00:00
renovate[bot] 7ce244c0be Update css (#33560)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-05-22 21:32:17 +00:00
renovate[bot] 8afb7943a6 Update testcontainers docker digests (#33551)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-05-22 18:26:05 +00:00
rbondesson 03360eb260 Refactor EventTile using the MVVM pattern - #5a (#33587)
* Extract EventTile receipt state

* Extract EventTile thread state

* Extract EventTile reaction relation state

* Extract EventTile reply-chain state

* Keep reply chain collapse wiring in EventTile

* Reuse message event eligibility for receipts
2026-05-22 18:25:32 +00:00
renovate[bot] 6574863fcd Update rust:bullseye Docker digest to 28afaeb (#33550)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-05-22 17:22:21 +00:00
renovate[bot] 50ee22413f Update dependency sanitize-html to v2.17.4 [SECURITY] (#33583)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-05-22 16:05:38 +00:00
David Baker 5a1d7385f8 Hopefully bust another flake (#33584)
I guess this sometimes takes more than a second (!?)
2026-05-22 16:00:57 +00:00
rbondesson 7285293b7b Make shared-components tiles render identically outside Element Web - # 3 (#33529)
* Clean up unused app/web styling for ReactionsRow

* Align shared Storybook theme root with app/web

* Move PlayPauseButton styling into shared component

* Use closest compound icon color for all crypto events in both app/web and Storybook

* Updated snapshot

* Experimental strict color matching threshold for playwright

* Experimental color matching threshold for playwright

* Revert color matching threshold for playwright to the default value

* Updated screenshots after matching icon size in audio player with other media body components

* Changed icon color for crypto events accroding to recommendation from the design team

* Use --cpd-color-icon-primary for all crypto events

* Updated snapshots and screenshots after icon color changes

* Updated app/web snapshots and screenshots
2026-05-22 16:00:38 +00:00
Florian Duros 375fc140a6 Room list: reduce font size of sections (#33580)
* feat: reduce font size of section

* test: update existing screenshots

* test: update playwright screenshots
2026-05-22 15:55:27 +00:00
rbondesson 53fba7ff71 Mocking PasswordScorer.scorePassword to reduce risk of flakiness (#33591)
Co-authored-by: David Baker <dbkr@users.noreply.github.com>
2026-05-22 15:29:55 +00:00
David Baker 7e3d6bf562 Fix playwright tests (#33592)
* Fix playwright tests

The screenshot reporter was using an import that no longer works as
of playwright 1.60. Inline the function instead as it doesn't seem
to be importable.

* Our custom expect was importing itself?

How did that ever work?

* Nope, that doesn't seem to help

and also it was aiming the in in playwright common which should be the 2nd level of extension

* Provide non-overridden version of the same function

as per comment
2026-05-22 15:01:08 +01:00
renovate[bot] 63c2bb5aab Update playwright to v1.60.0 (#33565)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-05-22 11:44:06 +01:00
renovate[bot] 1175325fcd Update Node.js to 44aeb8a (#33549)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-05-21 16:47:34 +00:00
renovate[bot] 34c49b13f9 Update nginxinc/nginx-unprivileged:alpine-slim Docker digest to 01cb660 (#33548)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-05-21 16:47:11 +00:00
rbondesson 70e59c6221 Refactor EventTile using the MVVM pattern - #4 (#33539)
* Extract EventTile interaction state transitions

* Fix sonar issues
2026-05-21 13:41:58 +00:00
David Baker 4b0600f593 Press tab instead of blurring in playwright test (#33576)
This was flaking a lot: try a regular keypress instead of trying to
blur the element (which is closer to an actual user interaction anyway).
2026-05-21 13:00:50 +00:00
rbondesson 80024991aa Stabilise React useId values in DOM snapshots in element-web (#33579)
* Stabilise React useId values in DOM snapshots - app/web

* Stabilise React useId values in DOM snapshots - shared components

* Update additional snapshots

* Added comments and changed replace pattern to 'react-use-id-N'
2026-05-21 13:30:05 +01:00
R Midhun Suresh 7ce368537b Stabilize playwright tests by making the left panel constant width (#33451)
* Move css injection to panel.ts

- Inject css on event

* Upgrade package

* Fix playwright tests

* Remove RR instead of masking it

* Fix wrong import

* Fix playwright tests

* Fix more playwright tests

* Catch error and add comment
2026-05-21 09:49:03 +01:00
renovate[bot] f615cf7fab Update dependency @element-hq/element-call-embedded to v0.19.3 (#33546)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-05-20 15:44:23 +00:00
Andy Balaam df229eac2c Simplify DeviceListener logic: consider recovery disabled if backup is disabled (#32979)
If backup is disabled, recovery is implicitly disabled too, so there is
no need to warn about recovery being broken.
2026-05-20 15:04:40 +00:00
Andy Balaam 66cd1336e5 Remove the closeToast function and replace with calls to rejectToast (#33541) 2026-05-20 15:04:29 +00:00
David Baker 90ba56c1ce Make viewRoomByName dismiss toasts on each retry (#33542)
Otherwise it can just race, as per comment
2026-05-20 14:26:08 +00:00
Zack 223a861535 Move E2ePadlock to shared components (#33538)
* Move E2ePadlock to shared components

* Add storybook images

* Move translation to shared components

* Fix E2ePadlock story accessibility

* Update E2eMessageSharedIcon test for padlock role
2026-05-20 13:20:17 +00:00
David Baker b5aa339243 Increase timeout on wysiwig test (#33540)
To hopefully make it not flake
2026-05-20 10:54:59 +00:00
Florian Duros 4b6e0b7ebf Fix pinned message banner disappearing when a pinned message event is unkown (#33534)
* fix: remove unknown event when fetching pinned message events

* test: update tsts
2026-05-20 09:40:09 +00:00
rbondesson d41ff70057 Refactor EventTile using the MVVM pattern - #3 (#33516)
* Introduce thin EventTile view model snapshot

* Fix errors after merge conflict resolution
2026-05-20 08:32:05 +00:00
David Baker 0140563b64 Tweak new user menu design (#33444)
* Tweak new user menu design

* Update screenshots

* More screenshots

* Add story with no avatar

* add story to test

* Expand the menu so it actually shows what it's supposed to show

* Use the open parameter

which is the param to open the menu

* snapshot

* Add test for normal open menu version

* Move menu to the right of the avatar

and make it appear on top of the display name

* Fix user menu layout

* screenshots

* snapshot

* screenshots

* more screenshots

* Shift toasts to the left slightly

So they completely cover the display name of the user menu when
it's expanded. Also down slightly so they're level with the user menu.

* Tweak toast border radius & position

to match & sit on top of the user menu

* Close toasts in cider tests

* Only close the toast if it's actually there

* Fix some toasts to be dismissed & update screenshots

more to come though

* Make closeKeyStorageToast actually optional

* Fix some more toasts & races

* Screenshots again again (again)

* More screenshots

* Convert to rejectToast

* Fix toast rejectors to not wait and update screenshots

* Apparently 1ms is not long enough
2026-05-19 13:10:14 +00:00
R Midhun Suresh 00ccc97c79 Call Tile - Improve tile alignment in modern and bubble layout (#33478)
* Tile must have same indent as messages

* Align the call tiles between the bubbles
2026-05-19 09:18:30 +00:00
Will Hunt 02b6520f09 Module API for adding new file upload mechanisms (#33355)
* Initial reword of upload to MVVM.

* Update tests

* More incremental improvements

* Refactor tests to use helper method for composer uploads.

* Add drag and drop tests

* lint

* Add commentary

* fixup test

* More precise selector

* Retarget uploads

* lint

* fixup

* one more type

* update snap

* Fixup composerUploadFiles

* fix import

* lint

* Copy and paste fixes too

* Add tests for pasting

* Add tests for pasting files.

* Remove redundant fn

* rm comment

* tidy up

* Test cleanup

* More clean up

* another fix

* Begin fleshing out

* Park changes

* More stuff

* Use condensed version

* Cleanup tests

* more cleaning

* last bity

* Add a test for the composer

* Park up changes

* Rewrite Measured to be a functional component

* Add tests to cover narrow viewports

* lint

* breakpoint is optional

* Cleanup

* Support narrow mode

* fixup

* begone

* Provide default value

* add label

* fixup test

* update copyright

* cleanup

* Be a bit more lazy with FileDropTarget

* remove a debug statement

* Fixup

* fix two snaps

* Update screenshot

* and the other one

* Update snaps

* unfake CIDER

* update screens again

* remove extra test

* Undo accidental snapshots

* Bit of tidyup

* fixup

* even more tidyup

* may drag and drop file

* tidy up again

* snap snap snap

* Use load to make sonarQube happy

* Bunch of refactors

* More cleanup

* cleanup debug code

* tweaks

* remove a test we no longer need

* make it happy

* fix import

* fixup

* Update snaps

* typo

* one off

* Add tests

* lint

* remove only

* Reduce screenshot scope

* fix snapshot usage

* cleanup
2026-05-18 21:41:38 +00:00
Andy Balaam 66b739fea9 Remove an impossible case in DeviceListener (#32977)
* Remove an impossible case in DeviceListener

We only reach this branch if recoveryIsOk is false, which means
recoveryDisabled can't be true.

* Add a test for when recovery is bad but backup is disabled
2026-05-18 18:18:56 +00:00
Richard van der Hoff b51891ae2a Update dependency matrix-seshat to v4.3.0 (#33526)
Seshat 4.3.0 improves some error messages, which I hope will help resolve https://github.com/element-hq/element-web/issues/33501.

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-05-18 16:51:44 +00:00
Andy Balaam 5be0b778db Change all toast rejection code to use the rejectToast utility (#33025) 2026-05-18 16:31:52 +00:00
Will Hunt 5156e88c9d Reduce screenshot scope (#33522) 2026-05-18 12:35:53 +00:00
Andy Balaam d1a9f95e20 Use the toasts utils instead of the toasts fixture in playwright tests (#33495) 2026-05-18 11:44:08 +00:00
Andy Balaam bf820c5ba4 Remodel DeviceListener ifs to be more uniform (#32976)
We enter this chain of `if`s if at lease one of the boolean flags is false. This
change attempts to make the logic clearer by ensuring that each branch of the if
matches exactly one of those booleans.

Justifying this change: if `secretStorageStatus.defaultKeyId === null` then
`recoveryKeyIsOk` will be false, except in the strange case where recovery is
disabled, in which case we should not be dealing with problems with recovery
anyway, so if we previously entered this branch it would have been a bug. All
existing tests pass so it looks like we didn't consider this case.
2026-05-18 11:24:20 +00:00