Commit Graph

4536 Commits

Author SHA1 Message Date
Mauro 6967f99626 Content scanner also checks for thumbnails (#5911)
* scan also thumbnails for medias

* pr suggestion
2026-07-22 16:43:08 +02:00
Jared L cff46137b9 Report user presence on app lifecycle transitions (#5838)
* Report user presence on app lifecycle transitions

Adds a PresenceReporter driven by the app lifecycle handlers and the sharePresence setting: online when foreground-active and sharing, unavailable when backgrounded and sharing, offline when not sharing. Sends are immediate, deduped, and serialized latest-wins. Background app refresh and the NSE seed the process presence to offline so their sync requests carry no presence side effect. Presence rides on the SDK's process-global state, so every sync path is covered without touching sync lifecycle.

Signed-off-by: Jared L <48422312+lhjt@users.noreply.github.com>

* Add presence reporter tests

Pins the presence reporter invariants: the never-online sweep with sharing off, an immediate online send on foreground-active, dedupe of repeated states, latest-wins ordering of serialized sends, and the NSE offline seed.

Signed-off-by: Jared L <48422312+lhjt@users.noreply.github.com>

* wip: address review comments

Signed-off-by: Jared L <48422312+lhjt@users.noreply.github.com>

* refactor: remove obsolete presence heartbeat

Remove the shared activity snapshot, heartbeat refresh, and notification-extension freshness policy while retaining the session-scoped presence service and its serialized lifecycle reporting. Restore the NSE's intermediate one-time offline seed so the cleanup remains buildable ahead of the final sync-presence correction.

Signed-off-by: Jared L <48422312+lhjt@users.noreply.github.com>

* fix: make notification extension presence-neutral

Configure the built NSE client with offline sync presence without sending an immediate presence update. Keep notification setup non-fatal when presence configuration fails and remove the temporary production test seam.

Signed-off-by: Jared L <48422312+lhjt@users.noreply.github.com>

* chore: restore application lifecycle logging

Restore the pre-existing foreground lifecycle diagnostics that were removed during the presence refactor. Keep presence reporting session-scoped and clarify that background refresh configures the client's sync presence without an immediate update.

Signed-off-by: Jared L <48422312+lhjt@users.noreply.github.com>

---------

Signed-off-by: Jared L <48422312+lhjt@users.noreply.github.com>
2026-07-22 15:23:36 +01:00
renovate[bot] e98a19eb3f Update zizmorcore/zizmor-action action to v0.6.0 (#5917)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-07-22 15:20:16 +01:00
Valere Fedronic 0f72fe3511 Add support for active call item rendering in timeline (#5775)
* feat(timeline): Add support for active call item rendering in timeline

* Update active call as per design (show raw count of members)

* fixup project files

* revert unexpected generated mocks change

* code review

* Record preview snapshots

* revert changes on project.yml

* post rebase fix
2026-07-22 15:13:46 +01:00
Doug 94313173f0 Add a warning to the Link New Device instructions. (#5916) 2026-07-22 14:56:49 +01:00
Doug b46189d05f Add support for showing the user's own status over their avatar on the app's Settings button. (#5912)
* Add a common .inverseMask view modifier and use a blend mode for efficiency.

This also fixes the snapshot rendering 🎉

* Add support for the status emoji on the app's Setting button.

* Align the room header decoration icons with the status emoji.

* Add missing snapshots.
2026-07-22 14:53:32 +01:00
Stefan Ceriu e4f919e58f Update SearchScreen snapshots 2026-07-22 15:40:56 +03:00
Stefan Ceriu c0385ccdfa Change the first search tab name from Rooms to Chats (still untranslated for now) 2026-07-22 15:40:56 +03:00
Stefan Ceriu 6f8c5a0e76 Add more search screen tests 2026-07-22 15:40:56 +03:00
Stefan Ceriu da6eca78f0 Debounce message search only and search the active tab lazily
The search screen previously ran both the room filter and the (slow) message
query on every keystroke regardless of which tab was active, so the fast room
results were held up behind message search.

Now only the active tab is searched, and the other tab is (re)searched when it
becomes active, but only if the query actually changed since it last ran,
tracked per-tab in searchedQueries. Room search reacts to every keystroke while
message search keeps the 250ms debounce, now applied inside the messages branch
of updateFilter rather than upstream of both.
2026-07-22 15:40:56 +03:00
Stefan Ceriu 4eb0863f3a Surface search set query errors with an error indicator 2026-07-22 15:40:56 +03:00
Doug 32a54c5b71 Hook up the emoji picker to the custom status row. (#5902)
* Refactor EmojiPickerScreen to take a continuation instead of a timeline/itemID.

* Hook up the emoji picker to the custom status row.
2026-07-22 13:35:37 +01:00
Doug a6466e80e0 Update the SDK and use RoomHero.status and subscribeToOwnProfile. (#5905)
* Update the SDK and hook up the status from Room Heroes.

Also start requesting profiles via sss when the feature flag is enabled.

* Add support for subscribing to your own profile.
2026-07-22 12:18:02 +01:00
Mauro 4f03acab0c Add signed in flag to the developer options screen hook (#5914)
add signed in flag to the developer options screen hook
2026-07-22 11:40:27 +02:00
Mauro b5b28b9986 Support sending gallery messages behind a feature flag (#5909)
dds sending of multi-media "gallery" messages, gated behind the new galleryEnabled developer option (Developer Options → Room, off by default). Rendering of received galleries ships in a separate PR.

Wires sendGallery through TimelineProxy/TimelineController onto the SDK's Timeline.sendGallery.
MediaUploadPreviewScreen sends selected items as one gallery when the flag is on.
Co-authored with the original author of #5601.

NOTE: This PR allows to send gallery messages, but they won't be rendered without the gallery timeline item PR.
2026-07-21 17:25:30 +02:00
Stefan Ceriu 711cb0a05c Fix trailing_closure warning 2026-07-21 15:07:57 +03:00
Stefan Ceriu ea6475fa1e Fixed unused declaration warnings 2026-07-21 15:07:57 +03:00
Stefan Ceriu 6d74805a65 Disable swiftlint's void_function_in_ternary rule as it yields false positives. 2026-07-21 15:07:57 +03:00
Mauro Romito 5d1e15f308 Revert "Support sending gallery messages behind a feature flag"
This reverts commit 6a2ed331fa.
2026-07-21 12:44:03 +02:00
Mauro Romito 6a2ed331fa Support sending gallery messages behind a feature flag
Adds the ability to send a gallery message (multiple attachments in one message)
via the media upload preview, wired through the timeline controller/proxy to the
SDK's sendGallery. Gated by a `galleryEnabled` developer flag (default off),
matching Element X Android — with the flag off, attachments are sent as
individual messages as before.

Extends the community PR #5601, rebased onto develop. Tracking:
element-hq/element-meta#3201

Co-authored-by: svetoslav.mitov <svetoslav.mitov@sportinno.com>
2026-07-21 12:09:07 +02:00
Mauro Romito 762e5ad0ff Revert "Support sending gallery messages behind a feature flag"
This reverts commit 9a61d870d6.
2026-07-21 12:00:03 +02:00
Mauro Romito 9a61d870d6 Support sending gallery messages behind a feature flag
Adds the ability to send a gallery message (multiple attachments in one message)
via the media upload preview, wired through the timeline controller/proxy to the
SDK's sendGallery. Gated by a `galleryEnabled` developer flag (default off),
matching Element X Android — with the flag off, attachments are sent as
individual messages as before.

Extends the community PR #5601, rebased onto develop. Tracking:
element-hq/element-meta#3201

Co-authored-by: svetoslav.mitov <svetoslav.mitov@sportinno.com>
2026-07-21 11:34:44 +02:00
ElementRobot 9354d9d0c2 Re-run xcodegen. (#5907) 2026-07-21 08:49:28 +01:00
Stefan Ceriu d20f62b11b Enable client pausing and resuming for all builds
The mechanism has been running on nightly and debug builds since it was
introduced and Sentry shows the matrix-rust-sdk#6366 background teardown
panic (SwitchGuard::drop) occurring far less on nightly than on production.
Flip the default on for release builds too so store users get the fix.
2026-07-20 16:02:16 +03:00
Mauro 9093631f8b Periphery cleanup (#5893) 2026-07-20 11:16:11 +02:00
Element CI 175aca596e Translations update 2026-07-20 11:09:38 +02:00
Doug e8fffe35d2 Update snapshots. 2026-07-17 17:26:46 +01:00
Jürgen Wischer 99ba9eb235 Fix CI failures: SwiftFormat indentation and stale text field snapshot
Reformat two files to satisfy SwiftFormat's indent rule on blank lines
introduced by the accessibility fixes in this branch, and re-record the
compoundTextFieldStyle preview snapshots to match the new resting-state
border rendering on raised text fields.
2026-07-17 14:14:45 +02:00
Jürgen Wischer 003c608cc5 Revert "Add a visible custom focus ring to the standard button style"
This reverts commit 3f2434c94761877b96fe5bc2e9acc9dfc2b8db2a.
2026-07-17 14:14:45 +02:00
Jürgen Wischer c4f38cf1b2 Use accessibilityValue(_:isEnabled:) instead of an empty-Text fallback
Avoids applying an empty accessibility value when there's only one
pinned item, per review feedback.
2026-07-17 14:14:45 +02:00
Jürgen Wischer 60cd7fd5cc Give the pinned items banner an explicit accessibility label and value
The view-all button drops its visible text to an empty string while
loading, relying only on a ProgressView for feedback, so VoiceOver
users focusing it while it loads hear an unlabelled button. The main
pinned-item button also has no accessibility label/value describing
which pinned item is shown or its position, since children: .contain
leaves that to implicit merging of its sub-views. Set an explicit
label on the view-all button so it always announces its title, and
give the main button an explicit label (the pinned message) and value
(its position, reusing the existing bannerIndicatorDescription/
screenRoomPinnedBannerIndicator strings) instead of relying on
container merging.
2026-07-17 14:14:45 +02:00
Jürgen Wischer 5f6729b737 Mark the room list as frequently-updating for VoiceOver 2026-07-17 14:14:45 +02:00
Jürgen Wischer 5198533242 Add a visible custom focus ring to the standard button style 2026-07-17 14:14:45 +02:00
Jürgen Wischer 814cb99105 Show a resting-state border on raised text fields 2026-07-17 14:14:45 +02:00
Jürgen Wischer ce78d1999e Label the avatar edit button on the own-profile edit screen 2026-07-17 14:14:45 +02:00
Jürgen Wischer 7f5876c079 Expose formatting toolbar buttons as toggle controls to VoiceOver 2026-07-17 14:14:45 +02:00
Jürgen Wischer 34c41cd527 Combine poll option elements and hide the redundant progress bar from VoiceOver 2026-07-17 14:14:45 +02:00
Jürgen Wischer 3d84c611ae Combine the poll winner icon and vote count into one accessibility element 2026-07-17 14:14:45 +02:00
Jürgen Wischer 5e381e17ea Mark the onboarding start screen title as an accessibility header 2026-07-17 14:14:45 +02:00
manuroe 63c99282de Group Element Pro changes into a dedicated release notes section (#5899)
Pro-only PRs (labelled pr-element-pro) leaked into Element X release notes, causing confusion. They now group into a single Element Pro section instead of scattering through Features/Bugfixes. Granularity is dropped on purpose for these changes.
2026-07-17 14:04:25 +02:00
renovate[bot] 2f4dc6e3e4 Update actions/stale action to v10.4.0 (#5898)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-07-17 12:22:39 +01:00
Doug a0ec5ed9dd Add the UI for your own user status in the Settings screen. (#5888)
* Show the user's own Status emoji on the SettingsScreen.

* Add the UI for setting your own status.

* Add placeholder action for selecting a custom emoji and fix some accessibility issues.
2026-07-17 12:21:51 +01:00
Element CI a4a509f2de Run XcodeGen, update Package.resolved and Settings.bundle 2026-07-16 19:31:11 +02:00
Element CI edaac3eecd Run XcodeGen, update Package.resolved and Settings.bundle 2026-07-16 19:31:11 +02:00
Element CI 2f1cb3eace Run XcodeGen, update Package.resolved and Settings.bundle 2026-07-16 19:31:11 +02:00
Element CI 1158ce61fa Run XcodeGen, update Package.resolved and Settings.bundle 2026-07-16 19:31:11 +02:00
renovate[bot] 5c2c002f3f Update dependency Sentry to v9.21.0 2026-07-16 19:31:11 +02:00
Mauro Romito 3fa61c01b2 update enterprise 2026-07-16 15:58:18 +02:00
renovate[bot] f61c700092 Update dependency pointfreeco/swift-snapshot-testing to v1.19.3 2026-07-16 10:23:33 +02:00
Element CI fd5b3813d4 Prepare next release 2026-07-15 06:36:17 -07:00