Commit Graph

1602 Commits

Author SHA1 Message Date
Mauro 2462ddea85 Swift 6 migration for NSE (#5608)
* swift 6 support for NSE and concurrency safe implementations for it

* enforcing required Sendable conformance for swift 6 migration in NSE

* use Mutex to access the string builder cache

* use an async stream to update timeline items diffs

* fix for Sendable appHooks
2026-05-21 20:21:57 +02:00
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 13128d9869 Provide a default implementation for the NotificationToneManager and fix the NotificationSettingsScreen preview tests 2026-05-21 12:37:52 +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
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 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
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
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 2217803825 update all the timeline item views to use the new implemementation with nstextattachment 2026-05-12 14:46:18 +02: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
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
renovate[bot] 367c7da7ce Update dependency MapLibre to v6.26.0 (#5549) 2026-05-07 13:33:32 +03:00
Element CI 34e96aee26 Prepare next release 2026-05-06 05:48:43 -07:00
Mauro Romito 2ce32d00ef update SDK to 26.05.06 2026-05-06 13:04:11 +02:00
Doug 0355e9f708 Add an OAuthPresenterHook. (#5545)
* Add an OAuthPresenterHook.

* Update the enterprise submodule.
2026-05-06 10:29:25 +01:00
Doug 0acbc41432 Rename OIDC to OAuth. (#5525)
* Rename OIDC to OAuth.

* Update the enterprise submodule.
2026-05-05 14:07:06 +01:00
renovate[bot] aaf81e00f3 Update dependency PostHog to v3.57.2 (#5540) 2026-05-05 14:32:58 +03:00
renovate[bot] d3b24a63b5 Update EmbeddedElementCall and PostHog 2026-05-05 08:44:45 +03:00
renovate[bot] 272c8ca764 Update dependency PostHog to v3.57.0 (#5532)
* Update dependency PostHog to v3.57.0

* Run XcodeGen, update Package.resolved and Settings.bundle
2026-05-04 14:10:32 +03:00
renovate[bot] 5f5fc15c11 Update dependency element-hq/compound-design-tokens to v10.1.1 (#5526)
* Update dependency element-hq/compound-design-tokens to v10.1.1

* Fix Compound workflow.

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Doug <douglase@element.io>
2026-05-01 23:52:06 +01:00
renovate[bot] d1ac160e7b Update dependency PostHog to v3.56.0 (#5529)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Element CI <ci@element.io>
2026-05-01 17:56:57 +01:00
renovate[bot] c1184b748d Update XcodeGen (#5520)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Element CI <ci@element.io>
2026-04-30 16:10:14 +01:00
Mauro 76f744b9c4 Live Location Sharing - handle server echoes (#5514)
* Track active live location sessions by ID instead of timeout.

# Conflicts:
#	ElementX/Sources/Services/Location/LiveLocationManager.swift

* implemented a system to promote starting session to active sesessions to send locations at the right time, and a system to remove a local session if it's handled by an external device.

* pr suggestions

---------

Co-authored-by: Doug <douglase@element.io>
2026-04-30 13:18:36 +00:00
Doug 63592e48c1 Remove support for handling SPA calls within the app. (#5515)
* Remove support for handling SPA call links.

They were a stop-gap solution whilst we were building support for embedded room calling.

* Simplify ElementCallConfiguration now that there is only 1 type of call to handle.

* Remove the unused overlayModule from NavigationRoomCoordinator.
2026-04-29 19:32:38 +01:00
Mauro Romito dc26e9eb5c update sdk to 26.04.28 2026-04-29 10:28:21 +02:00
ElementRobot 434cc2d9d4 Bump the calendar version ready for the next release (#5505)
Co-authored-by: Element CI <ci@element.io>
2026-04-29 08:01:03 +01:00
Doug 7bce116d9e Update the SDK, handling OIDC/OAuth API breaks. (#5497)
Update the SDK handling API breaks.
2026-04-27 14:46:53 +01:00
Doug 0087b5a4e5 Fix a bug where the onboarding flow was dismissed by logging out. (#5481)
* Fix a bug where the onboarding flow was dismissed by logging out.

* Add some tests for the available actions while we're here.

---------

Co-authored-by: Stefan Ceriu <stefan.ceriu@gmail.com>
2026-04-27 14:33:09 +01:00
Element CI ecc2f80f05 Run XcodeGen, update Package.resolved and Settings.bundle 2026-04-24 18:57:44 +03:00
Mauro 5d1132c75b Update SDK to 26.04.23 (#5478)
updated sdk, and added error management on the send LLS API
2026-04-24 13:07:16 +02:00
Element CI dc1670015c Prepare next release 2026-04-21 09:43:26 -07:00
Doug 4e1c855467 Update the SDK. (#5456) 2026-04-21 17:20:12 +03:00
amshak 2a6f94ff48 Notification Decoration Revised (#5312)
1. I removed the grey dots for when there is activity in rooms set to mentions or mute.
2. For all unread rooms, I made the message preview text bold for better legibility
3. For rooms with no unreads, I made the font weight regular, again for legibility

We have also mergeg the new room list activity rendering with the existing feature hide unread badge feature flag and provide 3 variations: current production behavior, no badge but bolding, and no bolding and no badge
2026-04-21 14:12:07 +03:00
Valere Fedronic d49a6e5a5d Support for ongoing voice vs video call + joining (#5399) 2026-04-21 09:11:52 +00:00
Mauro Romito b0d7da383f implement annotation animations in MapLibreMapView 2026-04-20 10:17:27 +02:00
Mauro Romito 22545d1463 package resolved 2026-04-17 15:22:15 +02:00
Mauro Romito acb9bcb290 update project
# Conflicts:
#	ElementX.xcodeproj/project.pbxproj
2026-04-17 15:22:15 +02:00
Mauro bfb1036aa0 LLS Sheet implementation (#5420)
* Add LiveLocationSheet and refactor existing views to share code

* Implement logic for highlighting a specific LLS from a user once selected in the sheet

* Updated tests, project and added new previews for the LLS sheet.

# Conflicts:
#	PreviewTests/Sources/__Snapshots__/PreviewTests/liveLocationRoomTimelineView.Bubbles-iPad-pseudo.png
#	PreviewTests/Sources/__Snapshots__/PreviewTests/liveLocationRoomTimelineView.Bubbles-iPhone-pseudo.png

* add Equatable conformance to CLLocationCoordinate2D
2026-04-17 11:13:16 +00:00
Doug eef4a2497a Add support for homeserver capabilities to disable the UserDetailsEditScreen UI. (#5421)
Add support for homeserver capabilities to disable editing your user profile.

Also updates editable avatar size/formatting to match the latest Figma at the same time.
2026-04-17 11:52:46 +01:00
Stefan Ceriu 8f0f652420 Fix various warnings 2026-04-17 10:55:48 +03:00
Stefan Ceriu d43089ee59 Manually update project and resolved packages following Renovate XcodeGen update 2026-04-17 10:47:33 +03:00
Element CI 984d213b2b Prepare next release 2026-04-16 06:30:26 -07:00
Mauro Romito 9121ce6f45 update sdk to 26.04.16 2026-04-16 12:01:42 +02:00
Mauro 602d779e3a Render LiveLocations in the map (#5394) 2026-04-14 18:27:34 +02:00