406 Commits

Author SHA1 Message Date
Mauro Romito 5ba9296a65 new location request permission strings 2026-07-09 14:54:24 +02:00
Mauro a2c1ca06dd Content Scanning View (#5831)
* implement a MediaView to delegate at the view level the usage of the content scanner service, to determine how to render the media.

* fix for a small design mismatch

* fix for greedy error state

* updated naming

* just making some screenshot that have been affected by a string change on Localazy

* pr suggestions + updated strings
2026-07-06 16:15:27 +02:00
ElementRobot bfd3756671 Translations update (#5802)
Co-authored-by: Element CI <ci@element.io>
2026-06-29 11:12:13 +01:00
Doug f3da459d16 Ensure that the current user is the device owner before linking a new device. (#5773) 2026-06-26 16:24:18 +01:00
Mauro Romito 24af5804d6 use … in place of ... 2026-06-23 15:38:41 +02:00
Mauro Romito 2dc4a24333 update preview tests 2026-06-23 15:38:41 +02:00
Mauro Romito d60b41a05f Add a programmatic label to the join room by address field
The field relied on its placeholder for a label, which VoiceOver only reads
while empty. Set a persistent accessibility label so it's always announced.

Addresses #5256.
2026-06-23 15:38:41 +02:00
Mauro Romito 87d18fe8e3 migrated the max answers poll feature strings to localazy 2026-06-23 13:05:48 +02:00
amshak 9f92e181b0 Added a chevron to collapsed call buttons in the DM (#5755)
* Added a chevron to collapsed call buttons in the DM

This makes the context menu more intuitive and easy to find. Inspired by the collapsed state of call buttons in Whatsapp that I saw recently

* Shortening video/voice call button strings

Currently the text is unnecessarily long, I have reduced to button text

# Conflicts:
#	ElementX/Sources/Generated/Strings+Untranslated.swift

* Move translations to localazy

---------

Co-authored-by: Stefan Ceriu <stefan.ceriu@gmail.com>
2026-06-22 13:23:37 +03:00
Mauro Romito f32b9eeb26 Mark RoomSummary extensions as nonisolated
The RoomSummary struct is nonisolated, so its CustomStringConvertible and
helper extensions should be too.
2026-06-19 13:45:38 +02:00
Mauro Romito 8a4e4d1903 Give the media upload preview a descriptive VoiceOver title
The QLPreviewItem used the media's file name as its title, which VoiceOver
read as cryptic alt text. Provide a descriptive "Photo preview" / "Video
preview" title based on the media type instead.

Addresses #5240, #5241.
2026-06-19 13:45:38 +02:00
Stefan Ceriu fbbdb6f5f7 Fix iOS specific notification sound localizable keys. 2026-06-19 14:11:28 +03:00
Mauro a520d94760 Swift 6 Migration (#5733)
* Enable Swift 6.2 with default main actor isolation for the app target

Turn on SWIFT_VERSION 6.2, SWIFT_APPROACHABLE_CONCURRENCY and SWIFT_DEFAULT_ACTOR_ISOLATION = MainActor for the ElementX target, matching the NSE and Share Extension (which already use 6.2 without the main actor default).

# Conflicts:
#	ElementX.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved

* Update the code generation templates for Swift 6

Emit nonisolated/@unchecked Sendable mocks and nonisolated string enums, and mark async mock methods @concurrent so they keep suspending like the real implementations (otherwise intermediate states are unobservable in tests). Includes the regenerated mocks and strings.

# Conflicts:
#	ElementX/Sources/Mocks/Generated/GeneratedMocks.swift

* Make the data layer and services nonisolated and Sendable

Annotate the value-type models, Rust SDK proxy wrappers, timeline item graph, settings, logging and NSE-shared types as nonisolated, and conform the service protocols to Sendable so their existentials can cross isolation boundaries. These types run off the main actor and no longer inherit the target's default main actor isolation.

* Adopt the new isolation across call sites, mocks and signatures

Update call sites, closure signatures and mock configuration helpers to match the nonisolated/Sendable data layer, including the main actor isolated mock inits and the @Sendable filter on recentlyVisitedRooms.

^ Conflicts:
^	ElementX/Sources/Services/SecureBackup/SecureBackupController.swift

* Remove redundant @MainActor annotations

With the app target defaulting to main actor isolation, the explicit @MainActor on view models, coordinators, views and their protocols is no longer required.

* Fix concurrency hotspots surfaced by the migration

Resolve the room summary main-thread deadlock by moving diff processing onto AsyncStreams, add the SDKListener.onMainActor FIFO bridge for SDK callbacks, hop KVO/timer/UIKit callbacks to the main actor via assumeIsolated, add isolated deinits, and apply the few justified nonisolated(unsafe) escapes for queue-confined Apple APIs.

* Fix the unit tests for Swift 6 concurrency

Hop the waitForConfirmation body onto the caller's actor (Swift Testing runs confirmation closures off-actor), and adjust the affected suites and async signatures.

* offload diffs on concurrent threads instead of main actor

* make room info protocols sendable

* use a task group for fetching data so that everything runs concurrently in the TextRoomTimelineView when getting the preview.

* use the generic onMainActor implementation, which already makes a stream and send the continuation on the main actor.

* small pr comments issues being addressed

* update enterprise

* Update StaticCode to 1.1.0 and specify the required Swift isolation.

* fix ElementCallServiceTests

* update enterprise

* re-generate mocks

* update enterprise

* enterprise new code conformed to swift 6

---------

Co-authored-by: Doug <douglase@element.io>
2026-06-18 17:55:31 +02:00
Mauro Romito dc29be5898 voiceover reads add avatar when there is no avatar yet 2026-06-16 18:25:37 +02:00
Element CI 34ada2d933 Translations update 2026-06-08 13:36:03 +02:00
Element CI 24b9143901 Translations update 2026-06-01 12:23:01 +01:00
Element CI 0f976a49aa Translations update 2026-05-25 16:50:05 +03:00
Stefan Ceriu 9609fa4616 Add notification setting sound translatables 2026-05-21 17:59:04 +03:00
Stefan Ceriu 3bbf31bea6 Add jump to unread translatable 2026-05-21 17:59:04 +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
ElementRobot 2b3cd27129 Translations update (#5569)
Co-authored-by: Element CI <ci@element.io>
2026-05-11 11:43:18 +01:00
Mauro Romito 53669a606c Add the setting to change live location permissions to the change permissions screen. 2026-05-06 13:53:36 +02:00
Mauro Romito 680a9a587c Show alert if user has not beacon and beaconInfo permissions in the room. 2026-05-05 15:10:38 +02:00
Element CI f0aac9295b Translations update 2026-05-04 15:28:22 +03:00
Stefan Ceriu 53a54c1b90 Allow the mac app to chose room avatars directly from files instead of the photo library 2026-04-30 14:58:08 +03:00
Doug 8f815aafb2 Update TimelineMediaPreviewDetailsView to match the latest design. (#5513)
Update the TimelineMediaPreviewDetailsView design.
2026-04-29 19:34:22 +01:00
Doug e373969354 Update the Deactivate Account strings (and icon) to call it Delete Account. (#5458)
Use the new strings and icon.

Snapshots have already been updated.
2026-04-21 15:50:27 +01:00
ElementRobot fb94b3fc63 Translations update (#5452)
* Translations update

* translation updates

---------

Co-authored-by: Mauro Romito <mauro.romito@element.io>
2026-04-21 13:24:41 +01:00
Mauro Romito 915007850e fix invite users confirmation sheet strings 2026-04-20 18:33:44 +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
Mauro Romito 122f0371db translation update 2026-04-13 11:40:22 +02:00
Mauro Romito 11dd6f0323 order strings alphabetically by key after downloading them 2026-04-10 16:21:57 +02:00
ElementRobot a7bfef0efa Translations update 2026-04-10 10:55:52 +02:00
Valere Fedronic b05ab3ac0b Add support for starting voice calls from a DM (#5305)
* feat: Start voice call from DM

* rename voiceCall:bool to isVoiceCall

* review: Fix a typo

* review: use one displayCall(bool) instead of 2 actions

* review: Add a new specific preview for DM calls

* combine startCall and startVoiceCall in single enum with isVoiceCall

* review: add isVoiceCall to presentCallScreen action

* review: Use proper a11y for voice vs  video

* add voice/video options to UserProfile Screen

* fixup: move config params to the roomInfo object

* review: Revert changes on preview as the toolbar cannot be snapshot'd

* review: Extract call controls in specific file

* oups: Add voice call option in room details screen

* Update room details screenshots

* Update user profile screenshots

* Update room member details screenshots

* fixup: remove dead code
2026-04-09 16:22:31 +01:00
ElementRobot 70fdfed634 Translations update (#5357) 2026-04-07 11:32:54 +01:00
Mauro Romito 960183d516 implement the start live location handling in the LocationSharingScreenViewModel 2026-04-03 14:19:42 +02:00
Mauro Romito d67c1a93db implemented the usage of the live location manager permission handling in the location sharing screen. 2026-03-31 12:58:27 +02:00
ElementRobot 9b4fc23c2e Translations update 2026-03-30 13:54:04 +02:00
ElementRobot 610c296125 Translations update (#5295) 2026-03-23 17:20:23 +00:00
Aaron Thornburgh 0601b3248a Use an iOS 26 close button and re-order some sections in SettingsScreen. (#5281)
* Settings > Change Done button to Close

Do it!

* Change ordering of menu item sections

Swap manage app section with manage account section.

* Use a primaryAction placement for the close button.

* Generate the preview snapshots.

* Merge the Manage account and Manage devices actions.

---------

Co-authored-by: Doug <douglase@element.io>
2026-03-20 15:00:10 +00:00
Mauro dfee18e511 Rename Sign Out to Remove Device + Update SDK 26.03.18 (#5280)
* update the sdk

* updated preview tests

# Conflicts:
#	ElementX/Sources/Screens/Timeline/View/Style/TimelineItemSendInfoLabel.swift
#	ElementX/Sources/Screens/Timeline/View/TimelineItemViews/LiveLocationRoomTimelineView.swift

* update sdk to 26.03.18 + regenerated preview tests after sign out copy change

* updated UI tests

* pr suggestions
2026-03-18 17:34:45 +01:00
ElementRobot a4e5445e81 Translations update (#5212)
* Translations update

* updated previews

---------

Co-authored-by: Mauro Romito <mauro.romito@element.io>
2026-03-16 16:51:17 +01:00
Mauro Romito 18ffaec2e1 improved location sheets presentations and addressed some pr suggestions 2026-03-09 18:14:41 +01:00
Mauro Romito 9e68da4ff0 implementing static location sheet 2026-03-09 18:14:41 +01:00
Mauro bbbb2e9dee Refactor and redesign Location Sharing Screen (#5155)
* refactored the static location screen to the location sharing screen

# Conflicts:
#	UnitTests/Sources/LocationSharingScreenViewModelTests.swift

# Conflicts:
#	ElementX.xcodeproj/project.pbxproj

* implemented a custom pin with an overlayable view

* implemented the render of the user when the location is sender instead of the pin type

* removed description and body they are not used at all.

* reimplemented single button for sharing this or user location + implemented an experimental way to update annotations

* removed unnecessary @Suite description

* implemented a way to display the alert on top of the sheet and added a spinner to the center user location button

* fixed alerts strings

* fixed a failing test

* improved preview tests
2026-03-06 12:51:16 +01:00
ElementRobot 4441cac284 Translations update (#5158) 2026-03-02 11:29:00 +00:00
Mauro Romito 3dfcb6912f improved the code so that we can use the AudioPlayerState directly to check the playback speed and added localization 2026-02-19 22:40:31 +01:00
Mauro 0e40cc7008 Fix A11y tests (#5104)
* replace NavigationStack with ElementNavigationStack to allow the content to be rendered without a NavigationStack in a11y tests

* fix a11y tests

* update xcodeproject

* swiftformat fix

* use iOS 26.1 for CI

* use a wrapper to solve the issue for a11y tests

* ElementNavigationStack only uses the trick in DEBUG mode, and added a swiftlint rule to prevent the usage of NavigationStack
2026-02-13 16:45:58 +01:00
Mauro Romito c9cd4cb1dd 1. Updated the space selection UI 2. Paginate spaces after room creation 3. Pre-selected space creation defaults to space members access. 2026-02-09 18:22:41 +01:00
Doug 7532a792b7 Add boot detection in the NSE and use this to inform the user that there may be more notifications. (#5054)
* Add an initial implementation of the receivedWhileOfflineNotification.

* Only deliver a single receivedWhileOffline notification per boot and clarify the API.

* Add a 15-minute threshold for the receiveWhileOfflineNotification.
2026-02-06 15:18:09 +00:00