* Create a `ContentScanner` component:
- Add `:features:contentscanner:api` module with the interface.
- Implement the concrete component using the Rust SDK in `:libraries:matrix:impl`.
This can be used to both set up the content scanner media fetching in the SDK Client and manually scanning media sources from the Android side
* Create `ContentScannerUrlProvider` in a new `:features:contentscaner:api` module as a noop implementation
Use it as a placeholder for the code to instantiate a `RustContentScanner` with the fetched URL and set it as part of the SDK client.
* Expose the optional `ContentScanner` in the `@SessionScope`
* Split the storage part of the Element well-known retriever so it can be reused for the non-session bound retriever.
Also add the new `content_scanner_url` field to it.
This will be used by the enterprise code to fetch the actual content scanner url.
* Bump enterprise commit to have access to the actual content scanner url provider implementation
* Fix tests and lint issues
* Use the right namespace for `:features:contentscanner:api`, also use the right namespace for `impl`
---------
Co-authored-by: Benoit Marty <benoitm@element.io>
A local release build runs R8 over the full app and reliably runs out of
heap at the checked-in 4g default. CI has used 8g for release builds all
along via GRADLE_OPTS, so bring the local default in line with that.
Same reasoning as 6e55f2d7 (#1087), which bumped 2048m to 4g.
The LazyColumn was using reverseLayout=false when TalkBack was active to work
around a Compose accessibility traversal bug. This placed new messages at the
top of the screen, distorting the reading order for TalkBack users.
With Compose BOM 2026.06.00, reverseLayout=true now works correctly with
TalkBack traversal, so remove both workarounds:
- Always use reverseLayout=true in TimelineView
- Remove the .reversed() for expanded groups in TimelineItemGroupedEventsRow
Note: this change should be manually tested with TalkBack to verify correct
traversal order (oldest messages first, newest last).
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Set contentDescription on the ExoPlayer PlayerView so TalkBack announces
the video preview to screen reader users instead of treating it as
decorative/invisible content.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- MarkdownTextInput: set contentDescription on MarkdownEditText so TalkBack
announces a persistent label even when the field has content (fixes#6390)
- TimelineItemReadReceiptView: remove hideFromAccessibility() so the 'Seen by'
button is exposed to TalkBack; use semantics (not clearAndSetSemantics) to
preserve click action, and add Role.Button (fixes#6393)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>