feat: configurable menu bar position for mailbox view (#298) #303

Merged
guettlibot merged 8 commits from issue-298-fix into main 2026-05-27 20:07:13 +00:00
8 Commits
Author SHA1 Message Date
Thomas SharedInboxandClaude Sonnet 4.6 3df8b67002 fix: wrap bottom bar menu button in Builder to get Scaffold context
Scaffold.of() requires a descendant context of the Scaffold widget.
Using the State's build context (which is the Scaffold's parent) caused
an assertion failure when tapping the 'Open folders' button.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-27 22:05:39 +02:00
Thomas SharedInboxandClaude Sonnet 4.6 907fdd06b1 fix: update E2E test tooltip to match new bottom nav bar
The default menu position is now bottom, rendering a BottomAppBar with
tooltip 'Open folders' instead of the AppBar's auto-generated 'Open
navigation menu' tooltip.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-27 21:58:51 +02:00
Thomas SharedInboxandClaude Sonnet 4.6 8025bbc1be feat: configurable menu bar position for mailbox view (#298)
Move the folder navigation drawer trigger to the bottom by default,
matching the issue request. Add a user preferences DB table (schema v34)
and a settings screen so users can switch back to the top hamburger menu.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-27 21:51:15 +02:00
Thomas SharedInboxandClaude Sonnet 4.6 100ca9d8a1 fix: show full discrepancy details in account list (#296)
The sync health row displayed "Discrepancies found" but never showed
what the discrepancies were. Parse the stored JSON summary to show
totals (missing locally, missing on server, flag mismatches). Also
wrap the status text in Flexible so long messages are not clipped.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-27 21:16:01 +02:00
Thomas SharedInboxandClaude Sonnet 4.6 3d47af177a feat: show URL tooltip on long-press of unsubscribe chip (#294)
Wrap the ActionChip in a Tooltip whose message is the resolved
unsubscribe URI, so a long-press (mobile) or hover (desktop) reveals
the URL before the user taps.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-27 21:01:26 +02:00
Thomas SharedInboxandClaude Sonnet 4.6 f6a37eaa16 fix: prevent HTML email content from being cut off horizontally (#288)
HTML emails often use fixed-width tables (e.g. <table width="600">) that
exceed the WebView viewport, causing the right portion of the email to be
clipped with no way to scroll. Fix by injecting CSS that:

- Adds `overflow-x: hidden` to body so wide content does not escape the viewport
- Sets `max-width: 100%` on all elements (via `*`) to scale down wide containers
- Forces `table { width: 100%; }` so fixed-pixel-width email tables reflow to fit
- Adds `td/th { overflow-wrap/word-break }` for wrapping in table cells
- Adds `pre { white-space: pre-wrap; }` so pre-formatted text wraps instead of
  stretching the page

Adds a regression test that asserts all four CSS rules are present in the
generated HTML.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-27 19:50:30 +02:00
Thomas SharedInboxandClaude Sonnet 4.6 156b040b92 chore: exclude email_action_helpers.dart from unit coverage gate
It is a Flutter UI helper (showDialog, showModalBottomSheet, BuildContext)
covered by widget/integration tests, not unit tests — consistent with the
other UI screens already in _excluded.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-27 19:32:01 +02:00
Thomas SharedInboxandClaude Sonnet 4.6 e6c1288afe feat: align single and multi-mail actions, add archive to detail view (#287)
- Extract resolveMailboxByRole() helper shared by both screens so archive
  and mark-as-spam use identical dialog-based flows on single and batch actions
- Add Archive button to EmailDetailScreen app bar (was missing)
- Reorder single-mail actions to match batch toolbar: Reply, Forward,
  Archive, Delete, Spam, Move, Snooze, Flag
- Move "Mark as unread" from standalone icon button to the popup submenu
- Update _markAsSpam in detail screen to use shared helper (shows
  choose/create dialog instead of a bare snackbar when no junk folder)
- Update tests: fix broken snackbar assertion, add tests for Archive
  button presence, archive dialog, and mark-as-unread in submenu

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-27 19:32:01 +02:00