Commit Graph
70060 Commits
Author SHA1 Message Date
renovate[bot]GitHubrenovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
7bc822fae1 Update react (#34282)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-07-15 12:59:57 +00:00
Florian DurosandGitHub 017661eee3 Remove spammy matrix chat log (#34275) 2026-07-15 11:36:30 +00:00
Michael TelatynskiandGitHub 04fac0a9a4 Update find-unused-settings script (#34252)
* Move more tests over to vitest

* Add exception for test_setting

* Update find-unused-settings script

To not consider usage in tests as real usage

* Remove legacy font settings

They have been being migrated for over 2 years at this point and are flagged by the script as unused

* Re-add test
2026-07-15 10:21:49 +00:00
hayyaksiandGitHub 703bd6177c Make the persistent-storage request observable and warn when it is denied (#33987)
* Make the persistent-storage request observable and warn when it is denied

The end-to-end encryption crypto store lives in IndexedDB. If the origin's storage is not
durable, Chromium can evict it under storage pressure, forcing a logout and recovery-key
re-entry. tryPersistStorage() requested navigator.storage.persist() but only logged the
boolean result, so a denial was invisible.

Make the request observable: it is now async and checks persisted() first (short-circuiting
to avoid re-requesting/re-prompting), a failure to query the state no longer blocks the
request, and a denial warns via the logger (captured by rageshakes) with a stronger
desktop-specific message. It never rejects - the sole caller treats it as fire-and-forget.

This makes the risk observable but cannot by itself guarantee durability: no Electron
main-process API can force per-origin persistence, so a complete cure needs a follow-up.

* Address review: log query errors, drop the requestStorageAccess fallback and the desktop-specific warning

- Include the caught error when the persisted-state query fails.
- Remove the document.requestStorageAccess branch: it is the Storage Access
  API (cross-site cookie/storage access), not durability, and all supported
  browsers (Safari >= 15.2 included) have navigator.storage.persist().
- Drop the desktop-specific suffix from the denial warning.
- Reword the fire-and-forget doc to avoid referencing the caller.
- Simplify the test harness: no descriptor save/restore, delete the stub in
  afterEach.
2026-07-15 10:03:25 +00:00
renovate[bot]GitHubrenovate[bot] <29139614+renovate[bot]@users.noreply.github.com>Michael Telatynski
86b5a28a32 Update npm non-major dependencies (#34263)
* Update npm non-major dependencies

* Fix pcss comments

* Run oxfmt

* Fix lockfile

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Michael Telatynski <7t3chguy@gmail.com>
2026-07-15 09:15:58 +00:00
Florian DurosandGitHub 19f7ea2f7d Fix incorrect plural form in call tile (#34272) 2026-07-15 08:59:11 +00:00
keeharandGitHub 65149798ef Give the collapsed space panel separator clearance from the macOS traffic lights (#34243)
* Space the collapsed space panel separator away from the macOS traffic lights

On macOS the frameless window draws the traffic light buttons over the top
of the space panel. The cluster is inset 9px and is roughly 52px wide, so it
ends about 61px from the window edge. The collapsed space panel is 68px wide,
which left its right-hand separator crowding the green button.

Widen the collapsed panel to 76px on macOS so the separator gets about 15px
of clearance, in line with the compound 4x spacing step. The rule is added to
the styling already injected for the macOS title bar, so it only affects the
desktop app on macOS and is removed in full screen along with the rest.

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

Notes: Fix the collapsed space panel separator sitting too close to the macOS traffic light buttons.

* Use contributor copyright header on the new test file
2026-07-15 08:52:43 +00:00
Michael TelatynskiandGitHub 0c61944ffd Move more tests over to vitest (#34249)
* Move more tests over to vitest

* Add exception for test_setting
2026-07-15 08:48:51 +00:00
renovate[bot]GitHubrenovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
cb07147d72 Update actions/setup-node action to v7 (#34261)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-07-15 08:45:52 +00:00
renovate[bot]GitHubrenovate[bot] <29139614+renovate[bot]@users.noreply.github.com>Michael Telatynski
5803106244 Update dependency sanitize-html to v2.17.6 (#34262)
* Update dependency sanitize-html to v2.17.6

* Update jest config

* Slow laptop be slow

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Michael Telatynski <7t3chguy@gmail.com>
2026-07-15 08:41:41 +00:00
renovate[bot]GitHubrenovate[bot] <29139614+renovate[bot]@users.noreply.github.com>Michael Telatynski
831ab040d0 Update dependency nx to v23.0.2 (#34259)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Michael Telatynski <7t3chguy@gmail.com>
2026-07-15 08:31:27 +00:00
e6460a5f4e Localazy Download (#34214)
* [create-pull-request] automated change

* Fix tests for notification settings label update.

* Fix lint.

* Screenshot updates for tests.

* Fix playwright E2E tests.

* Fix E2E playwright tests.

---------

Co-authored-by: t3chguy <2403652+t3chguy@users.noreply.github.com>
Co-authored-by: mxandreas <andreass@element.io>
2026-07-14 17:57:24 +00:00
renovate[bot]GitHubrenovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
64fc4a6b5d Update dependency @sentry/webpack-plugin to v5.4.0 (#34264)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-07-14 17:28:11 +00:00
renovate[bot]GitHubrenovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
e74b9f5d17 Update Node.js to 384bd20 (#34257)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-07-14 17:10:18 +00:00
renovate[bot]GitHubrenovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
b2b4a4c9d0 Update nginxinc/nginx-unprivileged:alpine-slim Docker digest to eed3e4c (#34256)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-07-14 16:20:18 +00:00
renovate[bot]GitHubrenovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
f7b8c51ee4 Update dependency eslint-plugin-storybook to v10.5.0 (#34260)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-07-14 16:13:40 +00:00
renovate[bot]GitHubrenovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
bae2f123c3 Update rust:bullseye Docker digest to 7373627 (#34258)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-07-14 16:13:00 +00:00
renovate[bot]GitHubrenovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
5a698f62b8 Update ghcr.io/element-hq/synapse:develop Docker digest to 44977b7 (#34255)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-07-14 16:12:14 +00:00
157b3d7518 Migrate Renovate config (#34251)
Co-authored-by: Michael Telatynski <7t3chguy@gmail.com>
2026-07-14 15:40:19 +01:00
David BakerandGitHub c09f572fa7 Add user status to autocomplete suggestion (#34241)
* Add user status to autocomplete suggestion

* Add test for PillCompletion titleIcon

* Convert to vitest

* Add test for UserStatusIcon

* Switch the user status icon view to be a view model based component

* Screenshots

* Add .catch

* Add test for UserProvider
2026-07-14 13:47:24 +00:00
Michael TelatynskiandGitHub 56bdadca12 Fix icon in Jitsi lobby not rendering correctly (#34246) 2026-07-14 13:45:15 +00:00
Michael TelatynskiandGitHub c93458cdd0 Have renovate update pnpm (#34245)
* Have renovate update pnpm

* Group all pnpm updates
2026-07-14 13:33:01 +00:00
Michael TelatynskiandGitHub b5fd249e38 Remove more usages of singleton store getter in favour of contexts (#34099)
* Expose SDKContextClass via window for debugging

* Remove stores from window if they are exposed via sdkContext

* Avoid usages of global store instance where React context is accessible

* Remove more usages of singleton store getter in favour of contexts

* Remove more usages of singleton store getter in favour of contexts

* Fix tests by adding SDKContext.Provider

* Fix tests by adding SDKContext.Provider

* Fix tests by adding SDKContext.Provider

* Fix tests by adding SDKContext.Provider

* Fix tests

* Fix tests

* Fix tests

* Iterate

* Fix bad merge

* Iterate

* Fix tests

* Iterate

* Iterate

* Iterate

* Iterate

* Iterate

* Improve coverage

* Improve coverage
2026-07-14 12:58:34 +00:00
hayyaksiandGitHub 9575b236c0 Automatically recover from a renderer crash instead of leaving a blank window (#33988)
* Automatically recover from a renderer crash instead of leaving a blank window

The renderer (or GPU process) could die and leave a permanent blank/white window with no
UI, escapable only by killing the whole app. Add a dedicated renderer-recovery module that
detects render-process-gone / unresponsive and reloads or recreates the renderer with capped
backoff, giving up only after repeated failures.

Route the dock-activate and window-show paths through it as well, so a crash that happened
while the window was hidden is recovered before the window is shown rather than surfacing the
white screen.

* Address review: use author copyright and drop empty beforeEach
2026-07-14 12:42:51 +00:00
hayyaksiandGitHub da500d4b7d Fetch authenticated media through the session for "Save image as" (#33997)
* Fetch authenticated media through the session for "Save image as"

The desktop "Save image as" context-menu item fetched http(s) images with the
main-process global fetch(), which bypasses the session's webRequest interceptors —
including the authenticated-media handlers in media-auth.ts that rewrite the download
URL and attach the Authorization header. On modern Synapse (authenticated media,
MSC3916) that fetch is rejected with 401/404, so saving an image failed (#32362).

Extract the save logic into a dedicated save-image.ts and fetch network URLs through
the image's Electron session (webContents.session.fetch) so the auth interceptors
apply; data: URLs are still decoded directly into a NativeImage. The module also keeps
the extension-aware encoding (jpg/jpeg/bmp/png) so its contract can be unit-tested.

* Use the contributor's own copyright header on the new save-image files
2026-07-14 11:26:06 +00:00
Michael TelatynskiandGitHub 8d94cb1c30 Update paths to include all en_EN.json files (#34244) 2026-07-14 09:06:19 +00:00
David BakerandGitHub 732716ba12 User status in room summary card (#34239) 2026-07-14 08:56:03 +00:00
David BakerandGitHub 2f612c3a9d Add user status to dm room header (#34225)
* Add user status to dm room header

Also bumps the gap on the room header items to 8px because that's
what the designs have and I'm assuming it applies to everything, not
just the user status: pending design confirmation.

* Turns out the icons did have 8px gap

but via 4px of padding for reasons I can't discern

* Adjust spacing to 1.5x

as requested by design

* add tests

* Update screenshots

* add test for user status updating
2026-07-14 08:55:04 +00:00
Michael TelatynskiandGitHub b6859885a3 Upgrade to TypeScript 7 (#34208)
* Upgrade to TypeScript 7

for massive tsc speed gains

Those on WebStorm will want to upgrade to EAP to reap the benefits of the new TSGo compiler

Some things (module-api & shared-components) which utilise unplugin-dts (and api-extractor) need to hold a copy of ts6 for its conventional lib format and API. TS7 ships with no API until TS7.1.

Other things which use eslint also need ts6 for typescript-eslint.

Some type changes were necessary as TS7 caught some issues.

* Add knip exception

* Fix bad merge
2026-07-14 08:09:03 +00:00
Michael TelatynskiandGitHub c6b52b8a73 Fix credentials fixture when used with MAS (#34234)
* Fix credentials fixture when used with MAS

Without this it'd be using a Native OAuth2 session token but Element Web wouldn't know it was OAuth2-native and thus things like logout were broken

* Test by augmenting the dehydration test which previously failed using the `user` fixture

* Discard changes to apps/web/playwright/e2e/crypto/dehydration-mas.spec.ts
2026-07-13 16:31:57 +00:00
David BakerandGitHub 157c6008d4 Bump compound-web to 9.8.0 (#34236)
* Bump compound-web to 9.8.0

* Manually unmangle pnom-lock

* Tedious class name updates

* More tedious class name updates

* This is my life now
2026-07-13 16:26:26 +00:00
SiriusandGitHub 84653bb416 Sending URL Preview Bundles (MSC 4095) (#34150)
* Fetches link previews for all links in message (instead of just the first one)

* message url component to display preview for multiple urls

* Revert visible behaviour back to only showing one URL preview

While fetching all link previews in the text message.

* Moved URL preview VM to MessageComposer

* Added com.beeper.linkpreviews to messages sent with the markdown compositor

* MSC 4452 implemented for the older (markdown) composer

* claude told me to use logger instead of console

* Previews generated with snapshot instead of vm

* moved attachPreviews to a separate file

* added attach URL previews to rich text editor

* don't let attachUrlPreviews block clearning the composer

* fixed linter errors

* moved url preview behind labs feature gate

* passed linters

* moved lab feature checking to where attach preview is used

* claude wrote some unit tests for url previewing

* fixed linter errors

* added feature to labs.md

* fixed linter errors

* fixed oxfmt error

* set previews to none if all previews failed

* resolved PR reviews besides the ones that requires a larger code change

* moved url preview VM creation to message composer

* removed delay when clearing composer url preview on message send

* minor changes to stop using globals everywhere

* moved debouncing responsibility to urlpreviewVM

* minor lint fixes

* added comment

* remove composer content from the state of urlpreview, moved it to the vm

* urlpreviewwrapper depends on the vm only

* added comments

* edited the comment

* updated snapshots

* claude fixed tests

* enable feature for tests that requires MSC4095

* updated snapshot
2026-07-13 15:31:18 +00:00
6aeb5f552b Add config param to disable client wellknown fetch (#34084)
* Add enable_client_well_known_lookups config option

Signed-off-by: David Langley <langley.dave@gmail.com>

* Gate client .well-known poll on enable_client_well_known_lookups

Signed-off-by: David Langley <langley.dave@gmail.com>

* Gate MatrixRTC foci well-known fallback on enable_client_well_known_lookups

Signed-off-by: David Langley <langley.dave@gmail.com>

---------

Signed-off-by: David Langley <langley.dave@gmail.com>
Co-authored-by: David Langley <langley.dave@gmail.com>
2026-07-13 15:27:36 +00:00
R Midhun SureshandGitHub c4606c19f8 Ongoing call tiles - Implement the view-models and store (#34198)
* Add a common view snapshot type

This will contain the common snapshot values used by both dm ongoing
call tile view and room ongoing call tile view.

* Implement the common join button component

* Implement the call icon component

* Implement the common container component

* Support single digit minutes in existing clock component

* Implement the view for duration component

* Add static profile pics to be used in storybook tests

* Implement view for member avatar component

* Implement view for face pile component

* Implement RoomOngoingCallTileView

* Implement DmOngoingCallTileView

* Support the new tiles in RootTileView

* Export all the views

* Update all the screenshots

* Implement view model for duration view

* Implement vm for face pile view

* Implement vm for member avatar view

* Expose call store via the sdk context

* Add method to get all calls in store

* Add store to track latest notification event per room

* Also expose new store via sdk context

* Create a base vm for both tiles

* Implement the room ongoing call tile vm

* Implement the dm ongoing call tile vm

* Support new tile vms in the root tile vm

* Rename getCallInRoom -> getCallOrThrow

* Change confusing comment in test

* Check existing events first and use decryption promise

* Clarify recompute vs update in code comment

* Use vi.mocked instead of ts-ignore

* Change type of size to number

* Import only the type

* Pass size as number instead of string

* Check if call is jistsi call in root tile

* Add more tests

* Rename isCallIgnored -> isCallDeclined

* Add a comment about the 10px margin

* Add comments to explain css heights and widths
2026-07-13 14:52:16 +00:00
Will HuntandGitHub a6c8a14b74 Clarify translation rules around english key changes (#34235)
* Clarify translation rules around english key changes

Hopefully clarifying the position of why we'd like PRs for english string changes

* Update translating-dev.md
2026-07-13 14:45:42 +00:00
Michael TelatynskiandGitHub f433b5b9eb Satisfy pnpm audit (#34209)
* Update pnpm

* Update js-sdk lock

* Switch from corepack to a manual pnpm install in docker otherwise it gets upset when js-sdk has a different pnpm version

* Fix pnpm install

* Fix pnpm install

* Install yarn separately now that we no longer corepack

* Iterate

* Satisfy pnpm audit

* Fix bad merge conflict
2026-07-13 14:40:31 +00:00
Michael TelatynskiandGitHub 825fab6595 Remove SpaceStore singleton (#34088)
* Remove dead code

* Remove LegacyCallHandler singleton

Route via SDKContext to cut import cycles

* Remove SpaceStore singleton

Route via SDKContext to cut import cycles

* Fix tests

* Fix tests

* Fix tests

* Fix tests

* Iterate

* Post-merge fixup

* Iterate
2026-07-13 14:31:39 +00:00
David BakerandGitHub 7206d887f9 Deflake dercryption failure test (#34158)
It sometimes raced and clicked the wrong toast.
2026-07-13 13:41:23 +00:00
R Midhun SureshandGitHub 14e4650c72 Ongoing call tiles - Implement the required views (#34197)
* Add a common view snapshot type

This will contain the common snapshot values used by both dm ongoing
call tile view and room ongoing call tile view.

* Implement the common join button component

* Implement the call icon component

* Implement the common container component

* Support single digit minutes in existing clock component

* Implement the view for duration component

* Add static profile pics to be used in storybook tests

* Implement view for member avatar component

* Implement view for face pile component

* Implement RoomOngoingCallTileView

* Implement DmOngoingCallTileView

* Support the new tiles in RootTileView

* Export all the views

* Update all the screenshots

* Add a comment about the 10px margin

* Add comments to explain css heights and widths
2026-07-13 13:20:50 +00:00
renovate[bot]GitHubrenovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
5396e18db3 Update dependency typedoc-plugin-missing-exports to v4.1.4 (#34220)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-07-13 11:39:59 +00:00
renovate[bot]GitHubrenovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
e7c44ca468 Update storybook (#34219)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-07-13 10:01:10 +00:00
renovate[bot]GitHubrenovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
a2d7dc0c0f Update dependency electron to v43.1.0 (#34233)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-07-13 09:05:53 +00:00
renovate[bot]GitHubrenovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
01c1077042 Update testcontainers docker digests (#34232)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-07-13 08:54:30 +00:00
renovate[bot]GitHubrenovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2eb957fe96 Update vite (#34221)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-07-13 07:40:23 +00:00
renovate[bot]GitHubrenovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
1625a6aeaf Update dependency @element-hq/element-call-embedded to v0.21.0 (#34222)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-07-13 07:37:56 +00:00
Michael Telatynski 707fbd960a Fix web dockerfile using wrong arch for pnpm 2026-07-13 08:46:30 +01:00
renovate[bot]GitHubrenovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
95db7cb305 Update actions/stale digest to 1e223db (#34217)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-07-12 18:41:59 +00:00
David BakerandGitHub 4518ce5c2a Add user status emoji to member list (#34210)
* Add user status emoji to member list

* snapshots
2026-07-10 15:16:23 +00:00
David BakerandGitHub f09b27db7c Add user status in user info right panel card (#34212)
* Add user status in user info right panel card

Adds a very simple view component to do so, which will be reused
in the DM room header.

Also comment the other status view so the difference is clear.

* Add screenshot

* Add test

* Rename snapshot
2026-07-10 14:45:41 +00:00
renovate[bot]GitHubrenovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
efb3c0090d Update testcontainers docker digests (#34218)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-07-10 10:18:14 +00:00