Override `accountConnectionStatusProvider` in the Android E2E test so `CircularProgressIndicator` never appears.
`_AccountTile` in `lib/ui/screens/account_list_screen.dart` watches `accountConnectionStatusProvider(account.id)` (defined at `lib/di.dart:118`). It is a `FutureProvider.autoDispose.family` that connects to the real IMAP server. While loading, it shows a `CircularProgressIndicator` in the tile's trailing widget. That continuously-running animation prevents `pumpAndSettle()` from ever settling in Flutter integration tests on Android, causing frame-pump storms that can drop the `StreamBuilder`'s data state and make `tap(aliceTile)` find 0 widgets.
The current workaround in `integration_test/app_e2e_test.dart` is to replace `pumpAndSettle()` with `pump(300ms)` inside `pumpUntil`. The real fix is to override the provider so it completes immediately — no spinner ever enters the tree.
1. In `integration_test/app_e2e_test.dart`, add `accountConnectionStatusProvider` to the `overrides` list passed to `app.main(...)`:
1. After adding the override, revert `pumpUntil` back to using `pumpAndSettle()` instead of `pump(const Duration(milliseconds: 300))` — the original comment about `CircularProgressIndicator` and the bounded-pump workaround can both be removed.
1. Verify the Linux UI E2E test still passes (`task integration-ui`) and the Android E2E test passes (`task integration-android`).
Constraints: only `integration_test/app_e2e_test.dart` should be modified. No production code changes.
---
When I download and install the apk, then the app starts, but closes again immediatly.
I want an automated test, which ensures the apk is functional.
If that test fails, then the upload should not be done.
---
I opened an account. How to get back to the list of accounts?
I saw no way to do that.
---
I opened a mailbox. I search for "foo bar". I want to see all mails containing foo and bar. Not
mails containing "foo bar" exactly.
---
I search for "foo". Now I see all mails containing "foo". I want to easily do the common actions on
the selected mails: Delete, Archive, Move to Folder, Move to Junk, ...
---
How can I edit the Sieve Filter?
---
When adding a new account, and no well-known file was found, not exact hint in DNS, then
SMTP/IMAP/JMAP should use the mx record as fallback.
---
How can I edit Sieve Scripts? Afaik this feature was added.
---
Replace the custom TextField-in-AppBar search implementation in
lib/ui/screens/email_list_screen.dart with Flutter's built-in SearchBar / SearchAnchor widget
(Flutter 3.x).
Goals:
Remove the _isSearching bool, the _searchController, the slide animation, and the manual Timer
debounce
Use SearchAnchor + SearchBar to drive the _searchQuery state that filters the email list
Keep the existing filter logic untouched — just replace the input mechanism
The search bar should live in the AppBar area; if SearchAnchor doesn't fit cleanly there, use
SearchBar standalone with onChanged (no debounce needed — let the user control submit, or accept
instant filter)
Preserve all existing AppBar actions (compose, sync, settings) when search is not active
Update or remove any tests in integration_test/ that relied on the old search widget tree