- Extend move-to UI state/content to support inbox category entries
and category selection handling.
- Adjust reducer, UI mapper, and tests for inbox categories and destination mapping scenarios.
ET-6275
- Add `MoveDestinationMapper` to convert Rust `MoveDestination` trees into app `MailLabel` models.
- Wire message/conversation repositories to use the new mapper instead of the legacy `toMailLabels` helper.
- Remove move-to conversion responsibility from `ActionsMapper`.
ET-6275
- Update message/conversation move-to contracts to expose full Rust move
destinations instead of only system-folder subsets.
- Rename move-to fetch use cases to *MoveToDestinations for API clarity.
- Simplify domain Get*MoveToLocations use cases to rely on repository output
directly (remove custom-folder side-channel merge logic).
ET-6276
- Allow selecting a new active category from mailbox
- Propagate category selection through UI, vm and domain layers
- Update Rust scroller to reflect active category change
- Handle errors and provide user feedback on failure
ET-6046
- New CategoryViewChanged scroller update added
- New categories added as system labels
Rust changes:
- [ET-6126] Obey Mail Settings for Category View in Scrollers
- [ET-6131] Eager auth refresh for migrated sessions + autoheal
- Change-label scroller's command should modify the category view state
- Android .apk contains libgopenpgp-sys.so
NOJIRA
- Renamed firstPage to anchorItem to refer to the initial item pointed by Cursor
- Defined and used LocalItemId typealias when Id may refer to conversation or message
- Organised Mutex protected parts of cursor repositories
ET-4801
Solution:
- Add MessageCursorRepository to manage cursor lifecycle
- Delegate getConversationCursor to the new repository
- Limit RustMessageListQuery to reusing the active paginator only
- First try to reuse Mailbox scroller to create a cursor
- Fall back to a separate cursor scroller scoped to the repository
ET-4801
Problem: Dark mode via CSS media query is not reliably supported on older
WebView versions (< v100).
Solution:
- detect WebView media query capability based on version
- disable media-query-based dark mode when unsupported
- Apply WebView dark mode fallback before processing message body
ET-5932
- Rust scrollers are not progressed on creation, so reload may return
an empty list until fetch_more is called.
- When PageToLoad.All is requested and the paginator was just created,
call nextPage instead of reload. Existing paginators still use reload.
- Prevents empty mailbox states observed in notification and screen
transition flows.
ET-5843
- initialize or reuse the correct paginator for the location of the conversation
This prevents cursors from being created with incorrect/default label
values (e.g. labelId=0) when opening conversations from notifications
or other flows where the mailbox context is not yet established.
ET-5843
- Add scrollerId to Rust scroller update/domain flow and expand
logging to make scroller issues traceable across creation,
update, and disconnect.
ET-5700
- observing “fetch new” start/end events from the Rust message scroller
- Defined MessageScrollerFetchNewStatus domain model
- Mapper to map local data to domain model
- Updated query, local data source and repository classes
ET-5069