Adds a new ImageTrustedSenders Drift table (schema v37) that stores email addresses for which remote images are loaded automatically (per device, not per account)
When the user taps "Load remote images", the sender's address is saved and a 3-second snackbar appears with a "Settings" hyperlink to undo the choice in preferences
Both EmailDetailScreen and ThreadDetailScreen check the trusted senders list on open and auto-load images for known senders
The Preferences screen gains a new "Trusted image senders" section listing all saved senders with individual remove buttons
Test plan
dart run build_runner build regenerates database.g.dart cleanly (schema v37)
flutter analyze — no issues
Migration test updated: checks image_trusted_senders table exists after upgrade and fresh install
FakeUserPreferencesRepository updated with three new interface methods
All 490 unit + widget tests pass (1 pre-existing golden test failure unrelated to this change)
## Summary
Closes #377
- Adds a new `ImageTrustedSenders` Drift table (schema v37) that stores email addresses for which remote images are loaded automatically (per device, not per account)
- When the user taps "Load remote images", the sender's address is saved and a 3-second snackbar appears with a "Settings" hyperlink to undo the choice in preferences
- Both `EmailDetailScreen` and `ThreadDetailScreen` check the trusted senders list on open and auto-load images for known senders
- The Preferences screen gains a new "Trusted image senders" section listing all saved senders with individual remove buttons
## Test plan
- [x] `dart run build_runner build` regenerates `database.g.dart` cleanly (schema v37)
- [x] `flutter analyze` — no issues
- [x] Migration test updated: checks `image_trusted_senders` table exists after upgrade and fresh install
- [x] `FakeUserPreferencesRepository` updated with three new interface methods
- [x] All 490 unit + widget tests pass (1 pre-existing golden test failure unrelated to this change)
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Summary
Closes #377
ImageTrustedSendersDrift table (schema v37) that stores email addresses for which remote images are loaded automatically (per device, not per account)EmailDetailScreenandThreadDetailScreencheck the trusted senders list on open and auto-load images for known sendersTest plan
dart run build_runner buildregeneratesdatabase.g.dartcleanly (schema v37)flutter analyze— no issuesimage_trusted_senderstable exists after upgrade and fresh installFakeUserPreferencesRepositoryupdated with three new interface methods🤖 Generated with Claude Code