Commit Graph

4205 Commits

Author SHA1 Message Date
Danny eae464ecd7 Timeline: add a Jump to Unread button and a new-message badge on the scroll-to-bottom button. (#5506)
* Timeline: add a Jump to Unread button and a new-message badge on the scroll-to-bottom button.

* Rename scrollToFirstUnread to scrollToReadMarker for consistency with isReadMarkerVisible.

* Cache readMarkerUniqueID and unreadMessageCount as stored properties on TimelineState.

* TimelineViewModel: rename newTimelineItems and drop redundant ordering comment.

* Use Compound chevron icons in TimelineScrollButton.

* Fix TimelineScrollButton layout at large dynamic type sizes.

* Add a trailingAccessory slot to topBanners and use it to dodge banners with the jump-to-read-marker button.

* Put jump-to-read-marker behind a developer-options feature flag.

* Fine-tune TimelineScrollButton sizing and badge colour.

* Remove TimelineScrollButton chevron offset that was compensating for SF Symbol centering.

* Drop the new-messages count, replace with a presence dot.

* Move both timeline scroll buttons to bottom-right and revert topBanners trailingAccessory slot.

* Position TimelineScrollButton badge above for up direction and below for down direction.

* Add long-press mark-as-read pill to the timeline scroll buttons

* Read isSwitchingTimelines from state in updateHasNewMessagesAtBottom.

* Use assertionFailure when scrollToReadMarker is called with no read marker.

* Add TimelineScrollButton preview snapshots.

* (fix) design and various self-review issues

* (fix) suppress scroll button tap after long-press

* (feat) fall back to RoomInfo.fullyReadEventID for jump-to-unread

* (fix) hide jump-to-unread immediately after mark-as-read

* (fix) align with newer matrix-rust-sdk surface

* Bump the RustSDK to v26.05.20

---------

Signed-off-by: Daniel Anderson <daniel.anderson@toptal.com>
Co-authored-by: Stefan Ceriu <stefan.ceriu@gmail.com>
2026-05-21 15:03:32 +03:00
Stefan Ceriu ccec2dff6e Update some preview test snapshots 2026-05-21 12:37:52 +03:00
Stefan Ceriu 357094691d Bump the enterprise submodule 2026-05-21 12:37:52 +03:00
Stefan Ceriu ab82068740 Make the AnalyticsServiceMock default a variable as well, for consistency. 2026-05-21 12:37:52 +03:00
Stefan Ceriu 13128d9869 Provide a default implementation for the NotificationToneManager and fix the NotificationSettingsScreen preview tests 2026-05-21 12:37:52 +03:00
mredig e04993dc61 githook scripts point to potential local custom scripts 2026-05-20 19:38:30 +03:00
Stefan Ceriu 4736c1b47c Update the enterprise submodule following unit test fixes 2026-05-20 18:32:51 +03:00
Stefan Ceriu b3a9a8081b Update the enterprise submodule to fix xcodegen validation errors 2026-05-20 17:22:54 +03:00
Stefan Ceriu bc83e798f4 Update the enterprise submodule. 2026-05-20 16:30:26 +03:00
Michael dd0de4d7b0 Custom Notification Tones (#5527)
* added foundation for custom notifications

* feat: add localizations for tone names

also, if available, include the pro sound in the element x sound list

* use a static file location to store the notification tone

and update the file at that location when selected

* if there's a problem previewing or setting the alert tone, toast the user with the error

* rename tone directory

* create NotificationToneManager to handle tone business logic

* conform to project formatting

* assign custom sound to actual notifications

* dry up notification generation in the nse

* add compilation condition for including notification alert tone and remove from share extension

* swift format had some opinions

* flatten the notification tone ui, removing system/elementx designations

* fix stored file url breaking due to sandbox path changes

* tone manager can import custom tones and provide a list of imported tones

* ui support for custom tones

* can delete custom imported tones

* sort the custom tones

* add additional preset sounds

* can choose caf files for custom sounds and fix location persistence issues

* store sound locations with relative links

this is a better solution than storing bookmarks since bookmark resolution can be variable and differ from freshly derived urls

* add docs for new notification features

* run tone conversion in background

* resolved several ai found issues

* added protocol and mocks for notification tone manager

* added tests for notification settings screen vm interactions with the tone manager

* add tests for notification tone manager

* rename element tone names per feedback

* move custom tone option to the top of the notification tone list

* rename Tone to Sound for consistency with Android

* remove additional bundled tones

* restore accidentally deleted Element Default sound file

* system alert tones are filtered by what's available on the system prior to finalizing the collection

* Add a couple more caf file conversion log statements

* Simplify the notification sound conversion logic

* Update notification sound strings in sync with Android

* update xcodeproj after rebase

* remove conditional compilation and include NotificationAlertSound in share extension

* Use AudioPlayer instead of custom tone previewer and remove the previewer

* rename NotificationTone

* Consolidate and move errors to top of NotificationToneManager

* tone manager no longer depends on userinterfacecontroller

* Move static Tone properties to NotificationToneManager

* resolve view model initializer feedback

* update xcodeproj

* fatalerror when tone manager cannot init

* Remove banner icon on alert tone error

* fixup review feedback

* Moved URL handling to NotificationToneManager
2026-05-20 15:40:34 +03:00
renovate[bot] cb1c89be9d Update XcodeGen (#5610) 2026-05-20 08:33:44 +03:00
Michael 5a07c98afc Make AnalyticsService mockable via `AnalyticsServiceProtocol (#5599)
* Create AnalyticsServiceProtocol and conform AnalyticsService

* Replace AnalyticsService properties and arguments with AnalyticsServiceProtocol

* Inline AnalyticsServiceMock replacing old mock

* handle more complex AnalyticsServiceMock callsites

* move documentation from AnalyticsService to AnalyticsServiceProtocol
2026-05-20 08:23:58 +03:00
Element CI 946cb53559 Prepare next release 2026-05-19 02:19:10 -07:00
Mauro Romito b3e6373750 update sdk to 26.05.18 2026-05-18 17:40:17 +02:00
Atridad Lahiji 96230fcc36 Fixing Room List in Spaces View Not Rendering Some Rooms (#5595)
Removed drawingGroup call in SpaceRoomCell and fix #5306
2026-05-18 16:23:09 +03:00
ElementRobot 087bf9a2c8 Translations update (#5604)
* Translations update

* Translations update

* update the name of the theme keys

---------

Co-authored-by: Element CI <ci@element.io>
Co-authored-by: Mauro Romito <mauro.romito@element.io>
2026-05-18 11:16:18 +00:00
Mauro 6c0aaa7a58 Invite the DM recipient to a new room (#5588)
* handle the details to invite users flow.

* implemented the room creation in the invite screen, and its dismissal + navigaton to the newly created room

* updated preview and unit tests

* pr suggestions
2026-05-18 10:08:07 +02:00
Mauro Romito 9ed47c61b7 possible fix for the top banner having it's pieces slide and appear independently 2026-05-17 14:40:47 +03:00
Stefan Ceriu 4ff58f8756 Hook up client pausing and resuming next to sync starting and stopping for nightly and debug builds.
This will hopefully close all file descriptors and prevent the system from killing the app in the background.
Reported in https://github.com/matrix-org/matrix-rust-sdk/issues/6366 and implemented in https://github.com/matrix-org/matrix-rust-sdk/pull/6495
2026-05-17 14:37:55 +03:00
Stefan Ceriu 579b63d331 Remove unused method 2026-05-17 14:37:55 +03:00
Stefan Ceriu 16715ea1c2 Remove the focused ComposerToolbar accessibility test and preview
The automatically focused keyboard is creating false positives when running accessibility
tests and doesn't bring any value in the previews. Simplest solution is to remove it.
2026-05-16 16:54:32 +03:00
Stefan Ceriu e8c7d0761f Wait for the search field to be usable and remove unnecessary sleeps. 2026-05-16 16:54:22 +03:00
Stefan Ceriu 42b3507eaa Fix wrong keyboard type on some iPhone UI test snapshots. 2026-05-15 10:19:29 +03:00
Mauro Romito a4a857003c use isDM from the SDK to determine if a spaceRoom, a joinedRoom or a notificationItem are from a dm room. 2026-05-14 13:47:44 +02:00
Michael ff5dcb040d Replace the ServiceLocator with direct dependency injection (#5548)
Removes the ServiceLocator singleton and instead directly injects the dependencies it was holding for more control over instantiation of the various component subtrees and better visibility over how they're being used.
2026-05-14 09:45:49 +03:00
Stefan Ceriu f70182d09a Add a developer option button for marking every single room as read (#5582)
This will use an underlying SDK method and send a private read receipt plus a fully read marker in every single room the user is part of. It will most likely be a long operation that will get rate limited so the task is set to run detached for as long as it takes.
2026-05-13 19:46:52 +03:00
Stefan Ceriu 6aec4f210a Bump the RustSDK to v26.05.13 2026-05-13 16:48:11 +03:00
Element CI c99d079279 Prepare next release 2026-05-13 04:04:52 -07:00
Mauro Romito 690a177f6b apply last character font size to the attachment 2026-05-13 12:40:01 +02:00
Element CI 25318175b9 Prepare next release 2026-05-12 09:16:06 -07:00
Mauro Romito 5763e152b8 update SDK to 26.05.12 (v0.17 of the main repo)
# Conflicts:
#	ElementX.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved
2026-05-12 17:55:16 +02:00
Mauro Romito 07fc022a65 prevent replies to LLS timeline items, and live location sharing in threads 2026-05-12 17:26:02 +02:00
Stefan Ceriu 212ac17d0b Add media upload preview cropping capability for images (#5575)
Start using [Mantis](https://github.com/guoyingtao/Mantis) to crop and rotate images
before upload.
2026-05-12 17:04:08 +03:00
Mauro Romito d60f5d6efb UI tests updated 2026-05-12 14:46:18 +02:00
Mauro Romito 8318198601 update preview tests (also improved the strings for ltr and rtl testing) 2026-05-12 14:46:18 +02:00
Mauro Romito 2217803825 update all the timeline item views to use the new implemementation with nstextattachment 2026-05-12 14:46:18 +02:00
Mauro Romito 686753721e new implementation based on the usage of NSTextAttachment to allocate space for the timestamp 2026-05-12 14:46:18 +02:00
Mauro Romito deac31e48d remove code related to the previous bidi usage implementation of whitespaces for the timestamp label 2026-05-12 14:46:18 +02:00
Valere 2582293c06 call: Only group voice/video call if threads developer option is on 2026-05-12 10:39:05 +03:00
Doug 008975c7b0 Let Element Call manage the safe areas within the web view. (#5573)
* Let Element Call manage the safe areas within the web view.

* Update Element Call to 0.19.3.
2026-05-11 18:04:00 +01:00
Doug e235e3ba81 Link new device with QR code tweaks. (#5563)
* Hook up Rust's InvalidCheckCode failure to the right state when linking a new device.

* Automatically regenerate a new QR code instead of ending the flow when it expires.
2026-05-11 14:22:34 +01:00
Stefan Ceriu ded86dd66e Fix settings UI test by making sure the analytics button is visible before attempting to tap it. 2026-05-11 15:37:38 +03:00
Stefan Ceriu a5d07cf1f3 Fix start chat UI flow after allowing avatars to be selected from files too 2026-05-11 15:37:38 +03:00
Stefan Ceriu 80385bbc1e Fix start chat flow UI test snapshots after enabling the room directory by default 2026-05-11 15:37:38 +03:00
Stefan Ceriu 42d726cd50 Fix room roles and permissions UI test snapshots after adding live location sharing 2026-05-11 15:37:38 +03:00
Valere Fedronic ba23153ab4 feat: Render declined calls in DM timeline (#5512)
* feat: Render declined calls in DM timeline

* Record preview snapshots

* review: Use CallIntent constant

* review: clean-up

* Record preview snapshots

* review: Move private field to the bottom with MARK: - Private

* review: Male CallIntent a string enum to use rawValue

---------

Co-authored-by: Element CI <ci@element.io>
2026-05-11 14:51:30 +03:00
ElementRobot 2b3cd27129 Translations update (#5569)
Co-authored-by: Element CI <ci@element.io>
2026-05-11 11:43:18 +01:00
Doug bd2c775ff7 Fix an accessibility test failure. (#5571) 2026-05-11 11:28:37 +01:00
Michael 3b1f5cca94 Add editorconfig to enforce style guides naturally in the editor (#5564)
add editorconfig to enforce style guides naturally in the editor
2026-05-11 11:10:03 +01:00
renovate[bot] 70d47f1169 Update actions/add-to-project action to v2 2026-05-11 09:59:07 +03:00