* 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
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.
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.
* 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>
* Always overwrite module API files
* Report if the module API changes unexpected in CI
* Update docs
* Add command to the matrix
* actually filter by project
* fixed collpased url preview logo aspect ratio for chrome because chromium doesnt understand that aspect ratio means aspect ratio
* updated pngs
* update snapshot
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).
apps/web/Dockerfile invokes scripts/docker-link-repos.sh and
scripts/docker-package.sh directly (no bash prefix) - without +x this
fails immediately on any fresh clone/full rebuild. The same bug also
affects fetchdep.sh, get-version-from-git.sh, layered.sh,
normalize-version.sh, and playwright-common/playwright-screenshots.sh,
all invoked directly the same way by this repo's own GitHub Actions
workflows (build.yml, tests.yml, static_analysis.yaml, docs.yml) - so
this was also silently breaking CI, not just Docker builds.
Draw a styled 32px macOS title bar
Replace the per-surface drag-strip hacks with a single full-width title
bar band matching the design: canvas background, hairline separator, and
draggable. Recentre the traffic lights for the taller band. Dialogs and
floating overlays stay clickable when they reach into the band while the
rest of the bar remains draggable.
* 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
* 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