840 Commits
Author SHA1 Message Date
R Midhun SureshandGitHub 01640bb8d6 Remove code to round newSize on resize (#34543)
This never actually fixed the issue of the call elements being blurry
due to fractional pixels. But it also causes other issues like the
max/min width of the left panel never being persisted in settings.
2026-08-05 10:13:38 +00:00
hayyaksiandGitHub 3e043a6f3a Do not ask for a room address when the room already has one (#34499) 2026-08-05 09:51:32 +00:00
RiotRobot a2a996ae50 v1.12.25 2026-08-05 09:08:08 +00:00
hayyaksiandGitHub 386a66c19c Show the filename in the audio player title when the event has one (#34479)
MAudioBody passed the event body straight to the player, so an audio message
sent with a caption showed the caption text instead of the file name. It now
uses presentableTextForFile, the same helper m.file and m.image already use.

Fixes https://github.com/element-hq/element-web/issues/31116
2026-08-05 08:56:26 +00:00
Michael TelatynskiandGitHub 88553b93b5 Stabilise Vitest MatrixChat test (#34555)
* Stabilise Vitest MatrixChat test

* Ignore post-teardown exceptions in vitest

* Iterate
2026-08-05 08:51:02 +00:00
renovate[bot]GitHubrenovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
dd80fa8697 Update dependency postcss-nested to v8 (#34540)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-08-05 08:50:52 +00:00
8bb0e5d590 [create-pull-request] automated change (#34564)
Co-authored-by: t3chguy <2403652+t3chguy@users.noreply.github.com>
2026-08-05 07:25:44 +00:00
hayyaksiandGitHub a2e4b7e395 Treat an unset profile field as unchanged in collapsed membership summaries (#34493) 2026-08-04 17:37:14 +00:00
hayyaksiandGitHub 74ac300f72 Open space settings when editing a space topic (#34477)
SpaceRoomView renders RoomTopic for the space home view, but the Edit topic button in
the topic dialog dispatched open_room_settings unconditionally, so a space opened the
room settings dialog instead of its own.

Branch on room.isSpaceRoom() and use the existing showSpaceSettings() helper.
2026-08-04 17:36:17 +00:00
RiotRobot 675fd031ed Upgrade dependency to matrix-js-sdk@42.1.0 2026-08-04 14:45:38 +00:00
renovate[bot]GitHubrenovate[bot] <29139614+renovate[bot]@users.noreply.github.com>Michael Telatynski
239ef1cdea Update Node.js to f725017 (#34538)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Michael Telatynski <7t3chguy@gmail.com>
2026-08-04 12:19:48 +00:00
Michael TelatynskiandGitHub 4aa1a3549e Enable oxlint restriction ruleset (#34307)
* Remove stale max-len disablements

* Remove stale camelCase & naming-convention disablements

* Remove stale ban-ts-comment disablements

* Remove stale no-var disablements

* Remove stale no-empty-property disablements

* Remove stale react rule disablements

* Remove stale no-constant-condition disablements

* Remove stale no-unused-vars disablements

* Remove stale disablements for disabled rules

* fixup camelcase

* Remove dead code

* Tidy code

* Tweak oxlint config

* Use oxlint to apply jsx/tsx extension consistently

* Fix import

* Fix imports

* Rename affected snapshots

* Update more imports

* Enable restriction ruleset

* Make code comply with new rules

* Make code comply with react/button-has-type

* Make code comply with typescript/non-nullable-type-assertion-style

* Comply with node/no-process-env

* Comply with unicorn/prefer-node-protocol

* Comply with unicorn/import-style

* Comply with unicorn/no-process-exit

* Comply with no-proto

* Comply with node/handle-callback-err

* Comply with import/no-commonjs

* Comply with node/no-path-concat

* Comply with unicorn/no-length-as-slice-end

* Comply with unicorn/no-document-cookie

* Comply with unicorn/prefer-module

* Comply with typescript/prefer-literal-enum-member

* Comply with jsx-a11y/anchor-ambiguous-text

* Tweak oxlint config

* Fix resolves

* Iterate

* Iterate

* Iterate

* Iterate

* Iterate

* Iterate

* Iterate
2026-08-04 09:15:07 +00:00
Will HuntandGitHub ca3cf40040 Add a Module API for accessing storage helper functions. (#34284)
* Add a Module API for accessing the Platform.

* Drop overkill module test

* drop unused sample file

* fix import

* Update module API

* fix typo

* fix typo again

* and again

* update api
2026-08-04 08:44:38 +00:00
Michael TelatynskiandGitHub df43921ab9 Attempt to stabilise vitest (#34547) 2026-08-04 07:49:53 +00:00
renovate[bot]GitHubrenovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
481bfb32c5 Update testcontainers docker digests (#34529)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-08-03 11:30:54 +00:00
renovate[bot]GitHubrenovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
229f7a66bd Update dependency postcss to v8.5.25 (#34531)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-08-03 11:30:25 +00:00
rizzlerandGitHub fbe7dbd646 fix member list scroll bug where invited 3PID users replace joined members (#34427)
* Update MemberListView.tsx

* Update MemberListViewModel.ts

* simplify 3PID invite keys to getStateKey and added regression test

* Use state_key for 3PID invite keys and set up test state before initial render

* Format common.tsx with oxfmt
2026-08-03 10:18:29 +00:00
Thore CimbalandClaude Fable 5 c51b68194a rebrand: alle Icons ersetzt - Windows-.ico und Web-Icons fehlten noch
Gestern wurden nur icon.png und icon.icns getauscht; Windows (.ico) und der
Web-Client (res/vector-icons/, manifest.json) trugen weiter das Element-Icon.

Dazu ein echter Fehler behoben: die Icons wurden mit PIL.thumbnail() erzeugt -
das skaliert NUR nach unten. Das 277px-Motiv wurde in 1024er-Icons daher nie
vergroessert und fuellte ueberall bloss 54% x 38% der Flaeche. Jetzt mit resize()
aus dem 1024er-Original: 81% Breite statt 54%.

Ersetzt: web/res/vector-icons/{24,120,144,152,180,512,1024}.png, manifest.json
(name/short_name -> ThreadNet), desktop/build/icon.{png,ico,icns}.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01PKhFj1S3UdD6xL2fbWPeYj
2026-08-02 12:00:00 +00:00
rbondessonandGitHub 4be2863fa8 Move EventTile to shared components - #3b (#34459)
* Refactor redacted body to use render-only view model props

* Fix oxfmt issues

* Missing mock function for MBodyFacytory-test

* Convert to vitest
2026-07-31 05:18:50 +00:00
rbondessonandGitHub 82b313828a Move EventTile to shared components - #3a (#34458)
* Refactor Mjolnir body to use render-only view model actions

* Extracted isMjolnirBodyAllowed from MessageEvent

* Converted the new test file to vitest
2026-07-30 14:50:57 +00:00
rbondessonandGitHub d4d4794f7e Move EventTile to shared components - #4a (#34469)
* Add EventTile root properties to view model

* Move render-related event reads into the vm

* Remove duplicate root derivation in UnwrappedEventTile

* Move data-has-reply derivation into EventTileViewModel

* Move getEventDisplayInfo() and dependencies into EventTileViewModel

* Add tests for improved coverage

* Cleanup and comments

* Fix: Replacement events have a fallback tile but must not show their own reply chain

* Combine dependency and prop updates into one atomic VM update

* Remove property which was never read and fix oxfmt issue
2026-07-30 13:35:09 +00:00
Michael TelatynskiandGitHub 27906ce6e7 Migrate more tests to vitest (#34355)
* Remove doubled-up I18n Provider. ModalManager already provides this.

* Reconfigure svgr into a vite-friendly `?react` resource query

* Move InviteDialog test to vitest

* Move RoomHeader tests to Vitest

* Share serializer between Jest & Vitest

* Attempt to stabilise InviteDialog test

* Fix async leaks

* Migrate more tests to vitest

* Migrate MatrixChat test to vitest

* Deflake

* Iterate

* Iterate

* Iterate
2026-07-30 09:11:29 +00:00
Michael TelatynskiandGitHub 42253a7ae5 Make apps/web/playwright comply with strict mode (#34403)
* Make apps/web/playwright comply with strict mode

Otherwise it sometimes fails to compile matrix-js-sdk as strict mode & noImplicitAny both impact how overloads are asserted

* Iterate
2026-07-30 09:07:03 +00:00
Johannes MarbachandGitHub 4a18eac927 Allow widgets to receive MatrixRTC slot events (#34373)
Signed-off-by: Johannes Marbach <n0-0ne+github@mailbox.org>
2026-07-29 15:49:54 +00:00
Michael TelatynskiandGitHub 0ae908b851 Replace short-lived no-mobile-guide-redirect cookie with SessionStorage (#34350)
* Replace short-lived no-mobile-guide-redirect cookie with SessionStorage

* Add coverage
2026-07-29 15:37:07 +00:00
Michael TelatynskiandGitHub e3cf63610c Update Twemoji credits links (#34461)
* Update Twemoji credit links

As https://twemoji.twitter.com/ is dead

* Update links as we actually use jdecked/twemoji now
2026-07-29 15:17:25 +00:00
Florian DurosandGitHub 7f8c4cef80 Room list: persist section state (expanded/collapsed) (#34351)
* Add new setting to store section state

* Store section state in device settings

* Wire up section header view model and new section functions

* Update room list vm tests

* Add e2e test on section state persistence

* Use more intuitive syntax for SectionExpansionState

* Formatting

* Fix chats section staying expanded

* Add CHAT section case in e2e test
2026-07-29 13:56:40 +00:00
renovate[bot]GitHubrenovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
f56cd560ce Update testcontainers docker digests (#34460)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-07-29 13:50:08 +00:00
Thore Cimbal 42285021cb feat: client-side ClamAV scanning for encrypted rooms (Issue #19)
Synapse's own check_media_file_for_spam module can never see E2EE
attachment content - only the client ever holds the decryption key.
Adds two hooks that call a self-hosted scan service
(https://axion1337.chat/_scan, deployed separately in the gitops repo):

- DecryptFile.ts: scans every decrypted attachment (image/audio/video/
  file all funnel through this one function via MediaEventHelper)
  before returning it as a Blob.
- ContentMessages.ts: scans plaintext before encryption/upload in
  uploadFile(), the shared function behind all attachment uploads
  (main file, thumbnails, voice messages), regardless of room
  encryption state.

New ContentScanRejectedError surfaces through the existing error-
rendering paths (MediaProcessingError, upload failure dialog) using
the same pattern as DecryptError/DownloadError/UploadFailedError.

Live-tested: EICAR blocked pre-upload in encrypted rooms and DMs;
receive-side hook also blocks EICAR sent by an unpatched client
(app.element.io), confirming it isn't just self-protection for our
own uploads. Fails open on scanner errors so an outage can't block
all uploads/downloads.
2026-07-29 12:00:00 +00:00
Thore Cimbal 44305556c3 fix: restore executable bit on remaining desktop/CI scripts
The earlier script-permission fix (5e3254d) only covered scripts
invoked by apps/web's own Dockerfile/CI at the time. Found 9 more
non-executable scripts (644 instead of 755) while building the
Electron desktop app via apps/desktop/dockerbuild - same root cause,
different invocation paths.
2026-07-29 12:00:00 +00:00
55c41d9aa9 [create-pull-request] automated change (#34456)
Co-authored-by: t3chguy <2403652+t3chguy@users.noreply.github.com>
2026-07-29 08:48:21 +00:00
Michael TelatynskiandGitHub bbec915fb0 Enable more oxlint rules (#34189)
* Fix type imports

* Fix jsdoc

* Fixup types

* Fix stray awaits on non-thenables

* Fixup imports

* Fix splats

* Fix this-context on callbacks

* Memoise react contexts

* Prefer find/flatMap

* Make oxlint happier about our React keys

* Avoid unsafe default function params

* Fixup jsdoc

* Fixup contexts

* Switch from eslint to oxlint

* Some oxlint-related tweaks

* Iterate

* Partial revert to defer some changes and shrink diff

* Iterate

* Add eslint-plugin-element-call and enable the copyright rule

* Set strictStorePkgContentCheck

* Iterate

* Enable forwardRef oxlint rule

* Enable no-unused-vars oxlint rule

* Enable no-implied-eval oxlint rule

* Enable no-duplicate-type-constituents oxlint rule

* Enable explicit-length-check oxlint rule

* Enable prefer-number-properties oxlint rule

* Enable no-callback-in-promise oxlint rule

* Enable no-require-imports oxlint rule

* Remove disablement of most unicorn oxlint rules

* Enable no-conditional-tests oxlint rule

* Enable promise-valid-params oxlint rule

* Enable require-unicode-regexp oxlint rule

* Remove max-len comments as we use oxfmt for formatting

* Enable majority of oxlint `suspicious` rules

* Iterate

* Fix oxlint type-aware lint running without dependencies built
2026-07-29 08:26:07 +00:00
renovate[bot]GitHubrenovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
e8848e4746 Update dependency postcss to v8.5.23 (#34439)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-07-28 22:39:53 +00:00
ea38041c87 Fix joinRoom failing when the roomviewstore state changes. (#34180)
* Fix joinRoom failing when the roomviewstore state changes.

* drive by type fix

* Help debugging failed dispatches

* Use proper types and include roomId in RoomViewStore tests

* remove focus

* Update apps/web/src/stores/RoomViewStore.tsx

Co-authored-by: R Midhun Suresh <hi@midhun.dev>

* fmt

* Add a test for coverage

---------

Co-authored-by: R Midhun Suresh <hi@midhun.dev>
2026-07-28 16:41:36 +00:00
renovate[bot]GitHubrenovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
82a22f7869 Update testcontainers docker digests (#34436)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-07-28 14:43:29 +00:00
renovate[bot]GitHubrenovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
edd1452f5c Update nginxinc/nginx-unprivileged:alpine-slim Docker digest to 22f839c (#34434)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-07-28 14:34:59 +00:00
Michael TelatynskiandGitHub dfa6a58073 Add additional configuration options to Banner module (#34384)
* Add additional configuration options to Banner module

* Iterate

* Iterate
2026-07-28 14:18:50 +00:00
RiotRobot 4b4a520517 v1.12.25-rc.1 2026-07-28 14:11:23 +00:00
RiotRobot c7a180e172 v1.12.25-rc.0 2026-07-28 13:58:49 +00:00
RiotRobot 58368ed250 Upgrade dependency to matrix-js-sdk@42.1.0-rc.0 2026-07-28 13:27:37 +00:00
Thore Cimbal 306cca041c fix: pin matrix-js-sdk to a working commit, use our own Element Call fork
The floating github:matrix-org/matrix-js-sdk#develop reference was
resolved to a stale commit missing src/oidc/authorize.ts (breaking the
webpack build). Investigated moving to the current develop HEAD instead
(191908da) - turned out to be worse, not better: that commit renamed the
entire src/oidc/ module to src/oauth/ with a materially different API
(generateOidcAuthorizationUrl/completeAuthorizationCodeGrant/OidcError
don't exist under those names anymore). Rather than porting our OIDC
login code to the new API sight-unseen, pinned to d19cb751 - the last
develop commit before that rename, verified to have both the file at
the expected path and the exact exports apps/web imports.

Also switched the Element Call embedded widget dependency from
upstream's @element-hq/element-call-embedded to our own published fork
(@sorb/threadnet-call-embedded@0.19.2-threadnet.5) - a full rebuild was
otherwise silently bundling the unmodified upstream widget, discarding
every Element Call customization (Video-tab quality settings, German
translations, codec list fix).
2026-07-28 12:00:00 +00:00
Will HuntandGitHub df7924df02 Fix various dialogs failing to open due to containing linked text (#34304)
* Wrap Dialog in LinkedTextContent

* actually use originalMxModuleApi

* lint

* fmt
2026-07-28 11:48:56 +00:00
rbondessonandGitHub 4decd338fb Move EventTile to shared components - #2 (#33828)
* Add pure sender render inputs to EventTileViewModel

* Move sender/avatar normalization to EventTile

* Split sender and avatar adapters into focused leaf components

* Add tests for the sender and avatar adapters

* Fix sonar issues

* Make sender profile consume pure member info

* Collapse sender adapter onto snapshot-driven props

* Share current-member resolution for event and reply tiles

* Fix Prettier issues

* Keep settings preview on historical sender profiles

* Update the proprty name to reflect the use of the event-time sender data instead of resolving the current room member

* Fix Sonar issue

* Tighten member to MemberInfo | null in the view model
2026-07-27 09:26:06 +00:00
c82bddf1b0 [create-pull-request] automated change (#34423)
Co-authored-by: t3chguy <2403652+t3chguy@users.noreply.github.com>
2026-07-27 07:42:27 +00:00
R Midhun SureshandGitHub 67206624a0 Auto Collapse Behaviour - Collapse left panel during calls (#33771)
* Add call resize behaviour

* Export behaviour from behaviours.ts

* Fix e2e tests

* Fix lint

* Move test to vitest

* Pass call-store instead of global access

* Fix broken collapse behaviour on strict mode

* Remove unused variable from test
2026-07-24 12:45:34 +00:00
renovate[bot]GitHubrenovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
5d27663f26 Update testcontainers docker digests (#34413)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-07-24 11:56:59 +00:00
renovate[bot]GitHubrenovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
04208eae44 Update dependency @testing-library/jest-dom to v7 (#34418)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-07-24 10:49:58 +00:00
renovate[bot]GitHubrenovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
671b1258fe Update dependency @element-hq/element-call-embedded to v0.22.0 (#34415)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-07-24 09:15:42 +00:00
5bcfe5aee6 [create-pull-request] automated change (#34409)
Co-authored-by: t3chguy <2403652+t3chguy@users.noreply.github.com>
2026-07-24 07:21:47 +00:00
Michael TelatynskiandGitHub 106d6024b2 Remove support for MSC3391 & MSC3852 (#34400)
* Remove support for MSC3391 & MSC3852

As they were both rejected & closed.

Synapse already removed support for MSC3852 which means it already did nothing: https://github.com/element-hq/synapse/pull/19430

* Update snapshot
2026-07-23 13:18:00 +00:00