3325 Commits

Author SHA1 Message Date
Stefan Ceriu 02b114d40b Make ClientProxy.pauseServices async and drop its completion block
`pauseServices` took a completion block only because it was historically
called from `deinit`, which can't await (the SE-0371 note). `deinit` now
stops the sync itself, so the sole remaining caller is the AppCoordinator,
which can await instead.

Make `pauseServices` async and update the AppCoordinator background-task
and lifecycle call sites to await it, calling the OS-facing completions
(endBackgroundTask / setTaskCompleted) afterwards. This also removes the
`MainActor.assumeIsolated` workaround — awaiting a @MainActor method hops
onto the main actor cleanly — and fixes a latent bug where a nil `self` in
the background app refresh expiration handler would skip setTaskCompleted.
2026-06-17 15:17:06 +03:00
Stefan Ceriu 04fd1bfd0e Serialise client pausing and resuming to fix the foreground resume race
Pause and resume previously ran as independent, unsynchronised tasks:
`pauseServices` stopped the sync and paused the client from a detached
`Task`, while `resumeServices` resumed and started the sync directly.
With no ordering between them, a late background pause could land after a
foreground resume — leaving the client suspended and the sync stopped
while the app was active, which broke everything until the next relaunch.

Route both through a single serialised reconciler: each request records
the desired state and chains onto the previous transition, and the
reconcile always drives the SDK to the *latest* desired state. Transitions
can no longer interleave and the most recent intent always wins.

On deinit we no longer pause the client — it's being deallocated, so the
SDK tears it down anyway; we just stop the sync and cancel the delegate.
2026-06-17 15:17:06 +03:00
Element CI c76052e8a2 Run XcodeGen, update Package.resolved and Settings.bundle 2026-06-17 08:52:00 +03:00
Element CI cb491ab4ac Run XcodeGen, update Package.resolved and Settings.bundle 2026-06-17 08:52:00 +03:00
Mauro Romito dc29be5898 voiceover reads add avatar when there is no avatar yet 2026-06-16 18:25:37 +02:00
Mauro Romito a87005fe5b add ishHeader trait were required 2026-06-16 17:34:13 +02:00
Mauro Romito 39be0dcfde Set pin a11y improvements 2026-06-16 16:58:44 +02:00
Mauro Romito 8bcc7efc49 Create new room - remove wrong header trait 2026-06-16 15:37:55 +02:00
Mauro Romito b3f0402a4d add a11y labels to media upload preview screen 2026-06-16 13:14:12 +02:00
Stefan Ceriu 3d90a43175 Wrap selected text in a markdown link when pasting a URL over it
Pasting a single link on top of a selection in the message composer now
produces a markdown link, e.g. selecting "Google" and pasting
"google.com" yields "[Google](google.com)". Non-link clipboard
contents and pastes without a selection keep their existing behaviour.
2026-06-16 13:15:04 +03:00
Stefan Ceriu 0ce7a5ea13 Log Sentry crash events through MXLog
Mirror crashes into our own logs via Sentry's beforeSend hook so the full crash
log ships with rageshakes. Adds a SentryEvent extension to extract the formatted
crash log from the event.
2026-06-16 12:13:10 +03:00
Daniel Anderson 434b3aab83 Report a phantom call to CallKit on PushKit early-return paths
iOS kills the app if a VoIP push isn't followed by reportNewIncomingCall, so
report an immediately ended call on every early-return path, named after the
room. A duplicate of an ongoing call is reported as answered elsewhere and an
expired push as a missed call that can be tapped to call back.

Signed-off-by: Daniel Anderson <daniel.anderson@toptal.com>
2026-06-16 12:11:37 +03:00
Element CI 70152f9ba1 Translations update 2026-06-15 20:10:16 +02:00
Stefan Ceriu 67fdbac526 Setup proper logging for MapLibre and location views. 2026-06-12 09:47:25 +03:00
Mauro Romito c2909aa9b8 bump rte to 2.42.0 2026-06-11 11:42:40 +02:00
Stefan Ceriu 5ba94609b7 Disable client pausing and resuming because of timing issues against deeplinking 2026-06-10 17:28:56 +03:00
Mauro Romito 44284de1e7 migrate the share extension to swift 6 2026-06-08 16:01:54 +02:00
Mauro Romito d22caf1a13 fix preview tests broken by a swiftformat rule, 2026-06-08 13:36:03 +02:00
Mauro Romito 6ec1f0eb10 swiftformat 2026-06-08 13:36:03 +02:00
Element CI 34ada2d933 Translations update 2026-06-08 13:36:03 +02:00
Doug 097d055dbe Some more tweaks to compound for User Status. (#5708)
* Add a plain list modifier to Compound.

* Move ElementTextFieldStyle into Compound and support more styles from the Figma

- More accurately reflects our Liquid Glass updates.
- Adds support for the .raised style.

* Update Element X snapshots.
2026-06-05 15:59:34 +01:00
Stefan Ceriu 21d2f59b26 Rename AppCoordinator pause and resume methods to be more explicit on their target. 2026-06-05 14:54:36 +03:00
Stefan Ceriu c0f20ce34c Re-enable the client pausing and resuming feature for nightly and debug builds 2026-06-05 14:54:36 +03:00
Stefan Ceriu 393abe6fa5 Make sure client services are resumed before handling app routes. 2026-06-05 14:54:36 +03:00
Stefan Ceriu 713af64fc6 Switch the clientProxy's start/stop sync semantics to service pausing and resuming to better match underlying behaviors 2026-06-05 14:54:36 +03:00
Stefan Ceriu e4a7322250 Expose the async nature of the ClientProxy startSync method 2026-06-05 14:54:36 +03:00
Mauro da5360c8e8 Hide user dot and track own user marker in Live Location mode. (#5707)
* added a new tracking mode for following a marker and the logic for switching such tracking mode

* implemented the follow marker tracking mode

* improved and added new tests
2026-06-05 13:51:57 +02:00
Stefan Ceriu 3b1d418ff1 Correctly handle user profile dismissals in the RoomMembersFlowCoordinator
A user profile screen presented from the root of the MembersFlowCoordinator would
go back to the initial state when dismissed. Unfortunately this wasn't being handled
(like in the roomMemberDetails case) and would lead to the FlowCoordinator not
finishing itself.

Both cases now go to the initial state and that's what triggers the finished call.
2026-06-05 13:49:34 +03:00
Michael b2de4dd81d Render user and room alias links in a room's topic view (#5709) 2026-06-05 11:24:59 +01:00
Stefan Ceriu ee82ed976e Automatically adjust the ElementCall PiP when changing orientations 2026-06-05 11:05:53 +03:00
Stefan Ceriu 92086d66c3 Add flip options to the MediaUploadPreview image edit screen 2026-06-05 11:05:03 +03:00
Element CI 3aebbc50a5 Run XcodeGen, update Package.resolved and Settings.bundle 2026-06-04 09:21:55 +03:00
Stefan Ceriu 56d5f72f01 Rename RoomTimelineItemFixtures to just TimelineFixtures 2026-06-04 09:14:58 +03:00
Stefan Ceriu 9615e184ad Switch to using proper SDK Mocks everywhere. 2026-06-04 09:14:58 +03:00
Element CI d2f1e5caed Run XcodeGen, update Package.resolved and Settings.bundle 2026-06-03 17:19:09 +02:00
Doug 32ccb004d0 Re-order the call buttons to match the Figma and Element Web. (#5696) 2026-06-03 11:53:49 +01:00
Mauro Romito 30025ee884 fix for the timestamp state change creating clipping
less verbose comment

less verbos
2026-06-03 12:51:57 +02:00
Doug e9f66bda37 Use the new crop icon from Compound. (#5691) 2026-06-03 11:11:39 +01:00
Stefan Ceriu 2e7b2d1487 Regenerate the mocks 2026-06-03 08:57:04 +03:00
Stefan Ceriu a6cad41b12 Remove all underlyingFoo mock property usage (unnecessary) 2026-06-03 08:57:04 +03:00
Stefan Ceriu dc91a0d5e9 Move the old MockTimelineController to the mocks folder and TimelineControllerMock 2026-06-03 08:57:04 +03:00
Stefan Ceriu 6ad1654d97 Convert the old MockTimelineController to the generated TimelineControllerMock 2026-06-03 08:57:04 +03:00
mredig d66a968afd Connect settings app route and action from logout screen 2026-06-03 08:25:50 +03:00
Daniel Anderson 4c8becc99e Clear incoming-call state on every path that ends a ringing call
Four end paths each cleaned up partially.

Signed-off-by: Daniel Anderson <daniel.anderson@toptal.com>
2026-06-02 15:43:20 +03:00
Stefan Ceriu c22c6deb1a Disable client pausing and resuming because of timing issues against deeplinking 2026-06-02 11:22:48 +03:00
Aaron Thornburgh dc7454d161 Updates to File Info Bottom Sheet (#5667)
* Updates to File Info Bottom Sheet

Removing buttons, changing labels, adding a title

* Update the underlying actions rather than fixing it at the screen-level.

* Fix the media details sheet height now there's a navigation title.

* Record preview snapshots

---------

Co-authored-by: Doug <douglase@element.io>
Co-authored-by: Element CI <ci@element.io>
2026-06-01 14:00:55 +01:00
Element CI 24b9143901 Translations update 2026-06-01 12:23:01 +01:00
Mauro Romito 6b584ccf65 use readHeight instead on geometry change in the top section of the home screen 2026-05-29 17:17:31 +02:00
Mauro Romito 63d33efb5e fix the issue where the empty state overlaps the banner if present 2026-05-29 17:49:11 +03:00
Doug 0c9c06047a Restrict the dynamic range of avatars to prevent them from displaying HDR content.
It makes no sense to scroll through the room list/timeline and the screen to be going in and out of HDR.
2026-05-29 17:48:49 +03:00