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

246 Commits

Author SHA1 Message Date
renovate[bot]
d8fe7fbfe5 Update dependency electron to v44.9.0 (#35542)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-10-20 13:06:49 +00:00
renovate[bot]
25db9c4063 Update electron (#35525)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-10-19 17:31:50 +00:00
renovate[bot]
4c6843812e Update pnpm to v12.14.0 (#35519)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-10-19 17:11:22 +00:00
renovate[bot]
b4a8541dcc Update Node.js to v24.22.0 (#35518)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-10-19 16:28:33 +00:00
renovate[bot]
29397e665b Update rust:bookworm Docker digest to e12566d (#35515)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-10-19 14:17:13 +00:00
RiotRobot
2a21153a3a Merge remote-tracking branch 'origin/master' into develop
# Conflicts:
#	apps/web/package.json
#	apps/web/playwright/e2e/crypto/toasts.spec.ts
#	apps/web/src/Lifecycle.ts
#	apps/web/src/components/structures/auth/CompleteSecurity.test.tsx
#	pnpm-lock.yaml
2026-10-16 13:18:58 +00:00
RiotRobot
ed0a1239e8 v1.12.32 2026-10-16 13:15:24 +00:00
renovate[bot]
a7da78afb8 Update playwright to v1.64.0 (#35457)
* Update playwright to v1.64.0

* Update snapshots

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Michael Telatynski <7t3chguy@gmail.com>
2026-10-13 15:01:46 +00:00
RiotRobot
959eb55816 v1.12.31 2026-10-13 12:24:11 +00:00
renovate[bot]
733b7b2afc Update electron (#35386)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-10-13 08:34:30 +00:00
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
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
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
RiotRobot
d376422554 v1.12.31-rc.1 2026-10-08 12:48:44 +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
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]
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
RiotRobot
edbe5310ff v1.12.31-rc.0 2026-10-06 13:19:35 +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
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
RiotRobot
f19cfd9030 v1.12.30 2026-09-29 13:12:42 +00:00
Bardi Harborow
63c3522b63 Remove obsolete chromium switches (#35225)
* Remove the no-op enable-usermedia-screen-capturing switch

Only Chrome's own capture permission handler reads it, which Electron does not include.

* Remove the obsolete WebRTCPipeWireCapturer feature flag

Chromium removed the feature in M133 and now always allows PipeWire capture on Wayland.
2026-09-28 16:37:18 +00:00
renovate[bot]
2687e5893a Update electron (#35232)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-09-28 11:25:03 +00:00
renovate[bot]
e2e432e0d8 Update electron (#35163)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-09-23 18:19:05 +00:00
renovate[bot]
ff22d40b0b Update rust:bookworm Docker digest to 93ce27a (#35159)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-09-23 15:47:05 +00:00
RiotRobot
0610f02757 v1.12.30-rc.1 2026-09-23 14:51:26 +00:00
RiotRobot
5b5f82fc6c v1.12.30-rc.0 2026-09-23 14:04:06 +00:00
ElementRobot
9aa127c9a3 [Backport staging] Implement the X.509 IPC into the module API (#35146)
Co-authored-by: Skye Elliot <actuallyori@gmail.com>
Co-authored-by: Michael Telatynski <7t3chguy@gmail.com>
Signed-off-by: Skye Elliot <actuallyori@gmail.com>
2026-09-23 14:32:54 +01:00
Skye Elliot
b5d4f67e15 Implement the X.509 IPC into the module API (#35135)
* feat(module-api): Add definitions for the X.509 IPC API

Signed-off-by: Skye Elliot <actuallyori@gmail.com>

* feat(desktop): Expose the X.509 IPC as a typed object

Signed-off-by: Skye Elliot <actuallyori@gmail.com>

* docs(shared-types): Add typedocs for each exposed method on `X509Api`

* tests(desktop): Add test stubs for preload.cts to fix coverage

Signed-off-by: Skye Elliot <actuallyori@gmail.com>

* fix(desktop): Enable `allowImportingTsExtensions` to allow preload test

Signed-off-by: Skye Elliot <actuallyori@gmail.com>

* chore(desktop): Revert tsconfig change, document as @ts-ignore

---------

Signed-off-by: Skye Elliot <actuallyori@gmail.com>
2026-09-22 14:57:50 +00:00
RiotRobot
6295c59624 Merge remote-tracking branch 'origin/master' into develop 2026-09-22 12:52:26 +00:00
RiotRobot
2d90d6b7b6 v1.12.29 2026-09-22 12:49:07 +00:00
ElementRobot
88095f38e1 Localazy Download (#34945)
* [create-pull-request] automated change

* Revert changes to en_EN

* revert the other en_EN file

---------

Co-authored-by: t3chguy <2403652+t3chguy@users.noreply.github.com>
Co-authored-by: David Baker <dbkr@users.noreply.github.com>
2026-09-18 13:13:28 +00:00
renovate[bot]
6a81752e01 Update playwright (#35094)
* Update playwright

* Update screenshots

* Update screenshots

* Update screenshots

* Fix failing test

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Michael Telatynski <7t3chguy@gmail.com>
2026-09-18 08:42:18 +00:00
Skye Elliot
1d53cb8a4e FOSS components of experimental X.509-based identity verification (#34973)
* feat(x509): Add `graphene-pk11` and `pkcs11js` dependencies

Signed-off-by: Skye Elliot <actuallyori@gmail.com>

* feat: Add X.509 client init options to `ClientCreationManagementApi`

Signed-off-by: Skye Elliot <actuallyori@gmail.com>

* feat(shared-types): Add X.509 IPC types

Signed-off-by: Skye Elliot <actuallyori@gmail.com>

* feat(desktop): Add the X.509 IPC module

Signed-off-by: Skye Elliot <actuallyori@gmail.com>

* test(desktop): Cover the X.509 main process

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Signed-off-by: Skye Elliot <actuallyori@gmail.com>

* feat: Deprecate `setUserVerificationCaCertsPem`

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Signed-off-by: Skye Elliot <actuallyori@gmail.com>

* test: Cover the deprecated setUserVerificationCaCertsPem shim

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Signed-off-by: Skye Elliot <actuallyori@gmail.com>

* Prepare module-api 1.18.0 release

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Signed-off-by: Skye Elliot <actuallyori@gmail.com>

* chore: Unbump module-api (will bump in a separate PR)

* chore: Add X.509 files to CODEOWNERS

* docs: Add documentation for desktop X.509 configuration

* chore: Make X.509 dependencies optional, add build justification

* chore: Updating dependencies means updating lockfile - Skye is silly

* chore: Un-approve pkcs11js auto-build - handled by electron-builder

* ci: Run glibc-check on every `.node` elf in `element-desktop`

* ci: Attempt to build element desktop in Docker

* docs: Clarify lots of things

* refactor: rename `getModule` to `getModuleInstance`

* refactor: Rename all result variables to `result`

* refactor: Invert condition in `getSession`

* refactor: Pull IPC handler out to method for quick return

* docs: More doc comments for `reloadModule`

* docs: Invert doc comment on `buildChain`

* fix: Rename `PKCS11` code to `UPSTREAM_PKCS11`

* docs: Correct old reference to non-existent enum

* docs: Correct comment indentation

* tests: Remove top-level mocking, fix errors and spelling

* docs: Remove TODO, add result comments

* feat: Read single concatenated chain rather than assembling manually

* feat: Switch to `ipcMain.handle`

* refactor: Reorder module

* docs: Tidy up documentation

* chore: Correct CODEOWNERS path for X509 fixtures

* tests: Add matrix uniformResourceIdentifier to SAN

* docs: More documentation clarifications

* docs: Improve comment on `reloadModule`

---------

Signed-off-by: Skye Elliot <actuallyori@gmail.com>
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-17 12:03:32 +00:00
Will Hunt
2cfe88578b Remove "hak" and switch to "@matrix-org/seshat" (#35047)
* Remove hak

* Remove dockerbuild

* Refactor to support new @matrix-org/seshat

* Cleanup workflows

* Update windows requirements

* Restore dockerbuild

* Reduce size of doc

* lint

* clear up unused stuff

* bump tests

* another package update
2026-09-17 10:23:01 +00:00
Oliver Kopp
90e3d43efd Set Wayland application ID to match the desktop file on Linux (#34433)
On Wayland, compositors match windows to installed applications via the
xdg-shell app_id, which Chromium derives from the desktop file name set
through app.setDesktopName(). Element never sets it, so Electron falls
back to the app name ("Element"), which matches neither the desktop file
electron-builder generates (element-desktop.desktop, named after the
executable) nor its StartupWMClass. As a result, e.g. GNOME cannot
associate Element windows with the application and shows a generic
executable icon in the dock/task switcher instead of the Element logo.

Use electron-builder's window-association support: inject desktopName
into package.json via extraMetadata (Electron reads it at startup and
uses it as the app_id) and enable linux.syncDesktopName so the generated
desktop file and its StartupWMClass are named to match. Since desktopName
is derived from the variant name, which is also linux.executableName, the
generated desktop file names are unchanged for both the stable and
nightly variants.

https://www.electron.build/linux#window-association-desktopname--syncdesktopname

Assisted-by: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_018VvCBTF5CusjukYB74DDk2

Co-authored-by: R Midhun Suresh <hi@midhun.dev>
2026-09-17 08:38:01 +00:00
renovate[bot]
b7d25fa739 Update dependency electron to v44.3.0 (#35093)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-09-16 15:39:42 +00:00
RiotRobot
fce7e9cc9f Merge remote-tracking branch 'origin/master' into develop
# Conflicts:
#	pnpm-lock.yaml
2026-09-16 12:15:15 +00:00
RiotRobot
fe37d1992f v1.12.28 2026-09-16 12:11:52 +00:00
renovate[bot]
4ba431b65e Update playwright to v1.62.0 (#34441)
* Update playwright to v1.62.0

* Make tsc happy

* Tweak pw config

* Update test snapshots

* Upgrade to playwright 1.62.1

* Add workaround

* Fix duration seconds wrongly rounding down to 0 which makes no sense for a non-zero playback

* Use round instead of ceil

* Tweak empty message length

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Michael Telatynski <7t3chguy@gmail.com>
2026-09-11 13:35:41 +00:00
renovate[bot]
82e20d6cff Update docker.io/docker/dockerfile Docker tag to v1.27 (#35025)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Michael Telatynski <7t3chguy@gmail.com>
2026-09-11 07:24:17 +00:00
Skye Elliot
05c0bb8910 Fix crash on Windows/macOS when keychain access is denied (#34922)
* fix: Fix crash on Windows/macOS when keychain access is denied

Signed-off-by: Skye Elliot <actuallyori@gmail.com>

* test(desktop): Assert getSelectedStorageBackend failures

* test(desktop): Add missing mock for degraded mode consent tests

---------

Signed-off-by: Skye Elliot <actuallyori@gmail.com>
Co-authored-by: Florian Duros <florianduros@element.io>
2026-09-10 14:17:29 +00:00
Hiroshi Shinaoka
0e969da878 Add tokenizer mode support for message search (#33048)
* feat: Add tokenizer mode support for message search

Add user-facing setting to choose tokenizer mode (language-based vs N-gram)
for local message search. N-gram tokenization supports CJK languages and
mixed-language content. Includes confirmation dialog for mode changes
(requires reindex) and automatic checkpoint recovery.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* feat: Add tokenizer mode support for event indexing (desktop side)

Add N-gram tokenizer support to Seshat search index initialization.
Refactors initEventIndex into a testable module with dependency injection,
supporting both language-based and N-gram tokenization modes. Includes
automatic database recreation fallback and unit tests.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* fix: propagate non-reindex errors instead of deleting search index

Previously, any Seshat open failure that wasn't a ReindexError would
silently delete the EventStore and recreate it, losing the user's search
index on transient errors like filesystem locks or passphrase issues.

Restore the original behavior: only handle ReindexError with recovery
logic, and propagate all other errors to the caller (which shows an
error to the user via sendError).

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* chore: update lockfile for tokenizer mode branch

* Fix tokenizer mode CI failures

* Address tokenizer mode review comments

* chore: update tokenizer mode copyright headers

* fix: address tokenizer mode lint errors

---------

Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-authored-by: Will Hunt <2072976+Half-Shot@users.noreply.github.com>
2026-09-10 09:33:46 +00:00
hayyaksi
2558854b6e Hide the macOS app on ⌘W/close instead of leaving it in a windowless limbo (#33992)
* Hide the macOS app on ⌘W/close instead of leaving it in a windowless limbo

With titleBarStyle: "hidden" and a single window, the previous close handler hid
only the BrowserWindow on macOS. That leaves Element frontmost with an empty menu
bar and no window — a "limbo state" the user has to ⌘-Tab out of (#32267).

Treat ⌘W / the red traffic-light the same as ⌘H: hide the whole application via
app.hide(), so another app becomes active and Element is brought back from the
dock. Elsewhere (with a tray) closing still hides the window to minimise to tray,
and without a tray the window is allowed to close and quit the single-window app.
A real quit already in progress always wins.

The decision is extracted into a pure resolveWindowCloseBehavior() helper so the
quit / hide-app / hide-window matrix is unit-tested. The second-instance handler
calls app.show() first on macOS, because app.hide() does not clear
BrowserWindow.isVisible() and the existing isVisible() guard would otherwise miss it.

* Test the hide and reveal behaviour, not just the decision that picks it

The close handler and the second-instance re-show still lived inline in
electron-main.ts, a module no test imports, so the only thing under test was the
pure helper that chooses between quitting, hiding the app and hiding the window.
Everything the fix actually does — preventing the default close, leaving
fullscreen first, calling app.hide() instead of window.hide(), and calling
app.show() again when a second instance arrives — was asserted nowhere, and diff
coverage came out at 45%.

Both sides now live in window-close.ts as handleWindowClose and
revealMainWindow, which is what the tests drive. resolveWindowCloseBehavior
stops being exported: with the effects testable there is no reason to assert the
intermediate string a caller never sees, and the tests read as the outcome the
user gets rather than the mechanism chosen to get there.

The two new files also carry my own copyright line rather than New Vector's,
which is what the reviewers have asked for on the sibling desktop PRs.

Tests: the platform x tray x quitting x fullscreen matrix for the close path,
including the window having already gone away, and the hidden, minimised and
non-macOS cases for the reveal path.

* Type the captured leave-fullscreen listener so the test can call it

`BrowserWindow.once` carries dozens of overloads, and `vi.mocked()` collapses them
to a single one — the `will-resize` signature, whose listener takes three required
arguments. Reading the registered listener back out of the spy therefore came back
typed as a three-argument function, so invoking it with none failed
`tsc --noEmit -p tsconfig.node.json` with TS2554 while the test itself passed.

Rather than widen the call at each site, the read now goes through one helper that
views the spy as the only signature the production code ever registers,
`(event: string, listener: () => void)`. That confines the cast to a single place
and leaves both fullscreen tests reading as the thing they simulate: macOS
finishing the leave-fullscreen animation before the hide runs.
2026-09-10 09:13:58 +00:00
renovate[bot]
4963eac5c0 Update Node.js to v24.21.0 (#35016)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-09-10 08:55:36 +00:00
renovate[bot]
0a6d4ce827 Update rust:bookworm Docker digest to 9a73a50 (#35011)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-09-10 08:50:06 +00:00
ex0ns
8b9336e5ff Fix authenticated avatar fetching for macOS Touch Bar (#34993)
* Fix authenticated avatar fetching for macOS Touch Bar

* Remove redundant avatar fetch comment
2026-09-09 13:47:43 +00:00
RiotRobot
3706626569 v1.12.28-rc.1 2026-09-09 13:37:33 +00:00