Commit Graph

479 Commits

Author SHA1 Message Date
Mauro
3acb558980 Open Live Locations map on tapping on the banner (#5477)
* Implemented opening the LLS on our own user when tapping on the banner

* added a test for moving the map as soon as the first update arrives.

* updated preview tests
2026-04-24 13:19:07 +02:00
Mauro
36fd7b2660 LocationSharingScreen: fix indefinite loading on the center to location button in non picker mode (#5469) 2026-04-22 16:36:15 +00:00
ElementRobot
024978b220 Translations update (#5452)
* Translations update

* translation updates

---------

Co-authored-by: Mauro Romito <mauro.romito@element.io>
2026-04-21 13:24:41 +01:00
amshak
b16bbdcc72 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
Mauro Romito
4edebeeb75 updated the UI for the live locations distance to match designs. 2026-04-21 12:32:50 +02:00
Valere Fedronic
50ae841d78 Support for ongoing voice vs video call + joining (#5399) 2026-04-21 09:11:52 +00:00
Mauro Romito
58a6d0a33f fix invite users confirmation sheet strings 2026-04-20 18:33:44 +02:00
Aaron Thornburgh
f540c5a79a Replace the Cancel button with a Close button on the Space Filters screen. (#5408)
* Updated placement and type of button

Moved the "X"/Close button from the left to the right, and made it a primary action.

* Update snapshots.

---------

Co-authored-by: Doug <douglase@element.io>
2026-04-17 16:14:17 +01:00
Mauro
2e9a499fc3 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
350c04b0f3 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
Aaron Thornburgh
ce0363ad20 Update the icon for "Remove this device" on the Settings screen. (#5415)
* SettingsScreen > Update the icon for "Remove this device"

Change the icon from "Sign Out" to "Close"

* Update snapshots.

---------

Co-authored-by: Doug <douglase@element.io>
2026-04-17 10:34:02 +00:00
Doug
945e34baa6 Tweak the font/icon sizes on the Space visibility label. (#5396) 2026-04-17 09:57:18 +00:00
Stefan Ceriu
84746a7567 Update preview snapshots following iOS 26.4 workflow migration. 2026-04-17 12:01:06 +03:00
Doug
a3bb30bc3d Upgrade the project to use Xcode 26.4 (and the 26.4 simulator for tests). (#5375)
* Upgrade the project to use Xcode 26.4 (and iOS 26.4 when running tests).

* Update the test OS assertions.

* updated preview tests

# Conflicts:
#	PreviewTests/Sources/__Snapshots__/PreviewTests/homeScreenInviteCell.iPhone-en-GB-0.png
#	PreviewTests/Sources/__Snapshots__/PreviewTests/homeScreenInviteCell.iPhone-pseudo-0.png

* update compound preview tests

---------

Co-authored-by: Mauro Romito <mauro.romito@element.io>
2026-04-16 14:33:20 +02:00
Doug
a0baa82471 Use a VStack for invite buttons when the HStack doesn't fit. (#5403)
The Accept/Decline labels were being wrapped onto 2 lines.
2026-04-16 13:01:53 +01:00
Skye Elliot
477bf859c5 Prompt user when inviting users with uncached identities (#5331)
If the user attempts to invite someone (to a room or creating a DM) whose identity is not cached, we prompt them to make sure this was their intention.
2026-04-14 14:51:58 +03:00
Stefan Ceriu
03fbf8fbd5 Add an action to the newly introduced FloatingDateBadge that scrolls the timeline to that day. (#5350)
and replace the TimelnieTableViewController's `floatingDateText` with a pure date.
2026-04-14 11:27:27 +03:00
Doug
252e2f75df Verify Element X with an existing Element Classic account. (#5374)
* Read and import the secrets from ClassicAppAccounts.

* Record snapshots.

* Add some documentation, tidy up tests and fix the dismissal of the backup instructions.

* Workaround flakey tests (the fulfilments weren't always firing).

* Allow a custom Classic App deep link URL to be configured.
2026-04-13 15:30:09 +01:00
Doug
e3a074b8b2 Remove the Spaces Announcement sheet. (#5376) 2026-04-10 17:49:28 +01:00
Mauro
2d2295bcc1 Live Location Sharing Banner (#5370)
* Live Location Sharing Banner

# Conflicts:
#	ElementX.xcodeproj/project.pbxproj

* updated the top banner modifier and the top banner views

# Conflicts:
#	ElementX/Resources/Localizations/en-US.lproj/Localizable.strings
#	ElementX/Resources/Localizations/en.lproj/Localizable.strings

* improved the stopping function from the timeline item

* stop live location sharing before starting a new one.

* added some tests for LiveLocationManager

* pr suggestions
2026-04-10 14:50:42 +02:00
Valere Fedronic
ec00eac164 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
Doug
d34c38d48a Add a view with instructions for enabling backups in Element Classic. (#5359)
No presentation logic yet.
2026-04-08 11:03:30 +01:00
Stefan Ceriu
33fe72041f Update reply view border corner radii and color
And also update relating preview test snapshots
2026-04-01 18:42:45 +03:00
Stefan Ceriu
26e659dce9 Add RoomThreadListScreen preview snapshots. 2026-03-31 18:21:14 +03:00
Stefan Ceriu
ba810116a0 Add a new RoomThreadListScreen and hook it up to the RoomThreadListService
It will automatically paginate to fill the screen and update the list as updates come in.
2026-03-31 18:21:14 +03:00
Mauro Romito
fcbb7ab057 reactively determine with a timer if the lls timeline item has expired or not.
Move mockToday410/420/430 to private Date extension in LiveLocationRoomTimelineView

Agent-Logs-Url: https://github.com/element-hq/element-x-ios/sessions/d2136882-1acc-455d-a363-815e0fb73e89

Co-authored-by: Velin92 <34335419+Velin92@users.noreply.github.com>

fix
2026-03-31 14:29:04 +02:00
Doug
6a79651834 Add support for iOS 26.4 emoji reactions and ensure older ESS versions still work. (#5329)
* Update the SDK and EmojiBase (with support for iOS 26.4 emojis).

* Update snapshots

(We use 26.1 so the snapshot doesn't support the new emoji)
2026-03-31 13:26:51 +01:00
Mauro Romito
7296b09a17 implemented the UI to render the formatted floating date 2026-03-30 14:05:31 +02:00
Aaron Thornburgh
b4d6fe43c3 Update Send button bg color (#5170)
* Update Send button bg color

Change the gradient bg to accent/rest.

* Tidy-up ComposerToolbar to match iOS 18 Figma.

Also simplifies the tests a bit.

* Add a .glassEffect to Compound's SendButton.

* Add a border to TimelineReplyView.

Also use the same sizes in both the message bubbles and the composer.

* Change icon size and container in message bubbles

- Container size = 36x36px
- Icon size = 24x24px

* Update icon of reply contents to be 24x24

* Update the VoiceMessageButton to match the designs.

* Adopt Liquid Glass in the ComposerToolbar.

* Generate and fix snapshots.

---------

Co-authored-by: Doug <douglase@element.io>
2026-03-25 17:42:10 +00:00
Mauro
8934f68f7b Render the live location timeline item (#5209)
* created the data for the timeline item

# Conflicts:
#	ElementX/Sources/Other/Logging/Tracing.swift
#	ElementX/Sources/Services/Authentication/AuthenticationService.swift
#	ElementX/Sources/Services/Authentication/LinkNewDeviceService.swift

* Implemented the LLS timeline item

* updated preview tests

* pr and design suggestions

* previewscrollview is debug only
2026-03-24 10:34:00 +01:00
amshak
f42ec2d0ce Changed ordering of Room details screen (#5290)
* Changed ordering of Room details screen

Added media, polls and pinned section on top, because the user is more likely to access those.

* Update snapshots.
2026-03-20 15:12:53 +00:00
Aaron Thornburgh
10597ec9be 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
Aaron Thornburgh
c3ed417b8f Update container shape of the File TimelineItem's icon. (#5288)
* Change corner radius of icon container

From round to 4px

* Update snapshots.
2026-03-20 14:08:57 +00:00
Stefan Ceriu
0567b75cfb Update preview test snapshots following component design changes 2026-03-19 16:41:27 +02:00
Stefan Ceriu
90062cf896 Update preview test snapshots 2026-03-19 14:18:22 +02:00
Mauro
9442b6981f 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
7a383cb855 Translations update (#5212)
* Translations update

* updated previews

---------

Co-authored-by: Mauro Romito <mauro.romito@element.io>
2026-03-16 16:51:17 +01:00
Doug
67162381a8 Fix the AuthenticationStartScreen with large Dynamic Type sizes. (#5191)
* Allow AuthenticationStartLogo to be scaled and fix dark mode when not on a gradient.

* Fix the layout of AuthenticationStartScreen with large Dynamic Type sizes.
2026-03-12 14:18:19 +00:00
Mauro Romito
0bb86a1edc improved location sheets presentations and addressed some pr suggestions 2026-03-09 18:14:41 +01:00
Mauro Romito
4633b0b140 implementing static location sheet 2026-03-09 18:14:41 +01:00
Mauro
2b0771c43c 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
Stefan Ceriu
5e41016d5e Fix new redundantSendable and redundantSwiftTestingSuite swiftformat errors 2026-03-04 17:02:11 +02:00
Doug
70b322dd80 Make sure the inviter's avatar is hidden in the JoinRoomScreen. (#5151)
* Make sure the inviter's avatar is hidden in the JoinRoomScreen.

* Update preview tests to use an inviter that has an avatar…

* Also hide avatars in the Space invite avatar pile.
2026-02-27 15:02:42 +00:00
renovate[bot]
aafb467e85 Update dependency element-hq/compound-design-tokens to v6.10.1 (#5123)
* Update dependency element-hq/compound-design-tokens to v6.10.0

* Further Compound updates.

The gradients have been simplified and are now opaque.

* Missed snapshots.

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Doug <douglase@element.io>
2026-02-25 21:45:10 +00:00
Stefan Ceriu
f6510c8577 Simplify LinkNewDeviceScreen preview test setup and fix preview and accessibility test reliability. 2026-02-25 09:07:45 +02:00
Mauro Romito
1594a5048b preview tests fully migrated to swift testing 2026-02-23 18:44:32 +01:00
Mauro Romito
e9afb31172 updated preview tests 2026-02-19 22:40:31 +01:00
Florian
5f724941ee Voice message: variable play back speed (#5121)
* Implement voice message variable playback speed

* Move playback speed string to Untranslated

https://github.com/element-hq/element-x-ios/pull/5121#discussion_r2822631371

* Address review feedback for voice message playback speed

- Persist voice message playback speed as an enum in AppSettings instead of storing an index.
- Update playback speed cycling to derive from enum allCases and safely fall back to `.default` if the stored value cannot be resolved.
- Apply runtime speed updates in AudioPlayer only when the player is in the `.playing` state.
- Keep MediaPlayerProviderTests formatting/indentation style intact while retaining mock playback speed setup.
- Regenerate preview snapshots for:
  - PlaybackSpeedButton
  - VoiceMessageRoomPlaybackView
  - VoiceMessageRoomTimelineView

* Move VoiceMessagePlaybackSpeed outside AppSettings, remove speedRatio

* Stabilize PlaybackSpeedButton width

* Sync voice-message speed label

- Add voiceMessagePlaybackSpeed to TimelineViewState and bind it from appSettings.$voiceMessagePlaybackSpeed.
- Pass that timeline-level speed into VoiceMessageRoomPlaybackView and use it for PlaybackSpeedButton, so labels update consistently across items.
- Use @EnvironmentObject in VoiceMessageRoomTimelineContent so the view re-renders when timeline context state changes.
- In WaveformInteractionModifier, add .allowsHitTesting(showCursor) to the cursor interaction view so hidden pre-playback cursor hit area does not steal taps from the speed button.
2026-02-19 22:40:31 +01:00
Mauro
f7f47049b1 Unify session verification with Android (#5116)
* session verification now does not have a waiting screen, but the initial state instead presents a loading state. Everything is also handled with one single action

* use progress view in place of the spinner icon

* change progress view tint
2026-02-17 17:59:14 +01:00
Doug
8e6f9f482b Lock the Link New Device flow to portrait and improve Cancel/Try Again handling. (#5094)
* Lock the LinkNewDeviceScreen to portrait.

* Add cancel buttons to the QR Code errors and handle cancel/startOver correctly.

* Use the shared QRCodeErrorView in the LinkNewDeviceScreen.

* Clarify the different QR Error/ErrorStates a bit more.

* Update snapshots.
2026-02-12 11:21:24 +00:00