* 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
* Use the old state machine configuration style.
* Test starting the space settings flow in UI tests.
* Test starting the create space room flow in UI tests.
* 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.
* feat: Display an icon in the room header for rooms with shared history
* fix: Apply suggestions from code review
- Simplifies `isRoomHistoryShared` expressions using type inferrence.
- Adds failure messages to unit test.
Co-authored-by: Doug <6060466+pixlwave@users.noreply.github.com>
* fix: Remove extension method in favour of field on configuration.
* fix: Distinguish between `shared` and `worldReadable` icons.
* refactor: Use `RoomHistorySharingState` enum with extension methods
---------
Co-authored-by: Doug <6060466+pixlwave@users.noreply.github.com>
* Fix inline code being rendered as blocks.
And make blocks non-greedy as well as only scrolling when needed.
* Rename the bubble layout priorities.
* Add an InlineCode attribute so that the builder also strips links from these too.
* Split up the snapshot tests into individual cases.
This should make it much easier to see *what* has changed when regenerating.
* Remove attributed string backed codeblock background color
* Add code block support to attributed string componentization
* Render code blocks within their own custom horizontal scroll view within the timeline
* Update preview test snapshots
* Introduce a attributed string component type instead of a 2 different booleans.
* Rename PaginationState.timelineEndReached to PaginationState.endReached.
* Rename PaginationState to TimelinePaginationState.
Also renames PaginationStatus to PaginationState so that a TimelinePaginationState consists of the forward and backward pagination states.
* Add the empty state to SpaceScreen.
Only has 1 of the 2 buttons for now.
* Add support for SpaceFilters on the SpaceServiceProxy level and a screen that renders them
* Add aliases to a couple of space room mocks
* Update translations and related snapshots
* Add a feature flag for space filters
* Add a new room summary provider filter that takes a list of room identifiers next to the normal state filters
This will take the SpaceFilter's descendants and combine it with the normal filters to reduce the rooms shown
* Add a new space filter button to the home screen and link it to the SpaceFiltersScreen and the actual RoomSummaryProvider room list filters
* Bump the RustSDK to v26.01.20-2 for SpaceFilter support.
* Add a cancellation button to the space filters screen
* Make the filter presentation mode liquidy, move the sheet to within the home screen.
* Address PR comments
* Expand the space flow UI tests to include the add rooms screen.
Also fixes some failures in these tests due to the room/space title now being a button.
* Expand the space flow UI tests to include the space members screen.
* Reset AppSettings before running preview tests.
* create space flow implementation
# Conflicts:
# ElementX/Sources/FlowCoordinators/SpacesTabFlowCoordinator.swift
* create space flow fully implemented and working
* updated tests and updated the create room camera button UI
* updated the avatar button in the create room screen, and added power level overrides for spaces
* update power level content overrides to behave just as EW, and removed ask to join when creating a space regardless of the FF
* updated UI tests snapshots
* invite for a public space should always be forced to 50
* pr suggestions + PL override fix
* fix a missed code change
* Rename SpaceListScreen to SpacesScreen
To avoid confusion with the SpaceRoomListProxy.
* Rename SpaceExplorerFlowCoordinator to SpacesTabFlowCoordinator and ChatsFlowCoordinator to ChatsTabFlowCoordinator.
* Update proxies ready for adding rooms to a space.
- ClientProxy.recentlyVisitedRooms to take a filter and to return room proxies.
- Expose SpaceServiceProxy.addChildToSpace.
* Implement the SpaceAddRoomsScreen.
* Fix the designs of the selected carousels.
Add more snapshot tests for inviting users.
* Fix for screen using wrong avatar size.
* Added an FF to create spaces + empty spaces list state
* removed learn more button and improved spacing
* updated toolbar for chats and spaces to match ios 26 designs
* Adds the remaining parts for showing/scanning a QR code to link a new device.
* Refactor the QRCodeLoginService to work the same way as the LinkNewDeviceService.
* Simplify QR errors even more and use the correct error state for deviceAlreadySignedIn.
* Remove the pre-defined padding on TitleAndIcon and use it in the QRCodeLoginScreen too.
* Update FullscreenDialog to allow different horizontal padding in each section.
* Move BigIcon into Compound.
* Replace the old server selection image asset with the \.host icon.
* Add a new TitleAndIcon component to Compound.
* Add the ability to override TitleAndIcon's padding.
* Tidy-up Rust to Swift mapping.
* Refactor out a dedicated QRCodeErrorView.
* Use the new QRCodeErrorView for most error state snapshots.
* Simplify QRCodeErrorView structure.
Also updates the background to match the designs.
* Fix a small compile error in the unit tests.
* Add a LinkNewDeviceService that exposes the SDK's grant QR code login methods.
* Add a flow coordinator for linking a new device.
Changes the presentation too.
* Remove `eraseToStream` now that `any AsyncSequence` is available to us.
* Remove the now unnecessary backport of Mutex.
* Silence a couple more deprecation warnings.
* fix: Set trust requirement even if `setEncryption` is `false`.
- Calls `builder.decryptionSettings` with sender trust requirement,
even if `setEncryption` is false`.
- Fixes https://github.com/element-hq/element-x-ios/issues/4702
* docs: Add doc comment explaining necessity of fix.
* feat: Set `roomKeyRecipientStrategy` alongside trust requirement.