feat: group email headers in full-screen dialog #374

Merged
guettlibot merged 1 commits from refs/pull/374/head into main 2026-06-03 20:14:15 +00:00
guettlibot commented 2026-06-03 19:56:59 +00:00 (Migrated from codeberg.org)

Closes #372

What changed

  • New widget lib/ui/widgets/email_headers_dialog.dart: full-screen header browser that organises headers into collapsible groups:

    • Headers — all standard headers (expanded by default)
    • List- Headers — all List-* headers grouped together (expanded)
    • Received — all Received headers, collapsed by default; shows the inter-hop duration between consecutive entries and highlights delays in colour (green < 30 s, orange < 5 min, red >= 5 min)
    • ARC- Headers — all ARC-* headers (above X-, expanded)
    • X-Prefix Headers — X- headers split by their second component (e.g. X-Google-* → "X-Google Headers"), sorted alphabetically, at the very bottom
  • email_detail_screen.dart: _showHeaders now uses EmailHeadersDialog; _showStructure converted from AlertDialog to Dialog.fullscreen() — satisfying "Make popup windows full screen."

  • scripts/check_coverage.dart: new widget file added to the _excluded set (UI widgets are covered by integration tests, not unit tests).

Verified

task check passes (analyze: no issues, 491 unit tests pass, coverage >= 80 %).

Closes #372 ## What changed - **New widget** `lib/ui/widgets/email_headers_dialog.dart`: full-screen header browser that organises headers into collapsible groups: - **Headers** — all standard headers (expanded by default) - **List- Headers** — all `List-*` headers grouped together (expanded) - **Received** — all `Received` headers, **collapsed by default**; shows the inter-hop duration between consecutive entries and highlights delays in colour (green < 30 s, orange < 5 min, red >= 5 min) - **ARC- Headers** — all `ARC-*` headers (above X-, expanded) - **X-Prefix Headers** — X- headers split by their second component (e.g. `X-Google-*` → "X-Google Headers"), sorted alphabetically, at the very bottom - **`email_detail_screen.dart`**: `_showHeaders` now uses `EmailHeadersDialog`; `_showStructure` converted from `AlertDialog` to `Dialog.fullscreen()` — satisfying "Make popup windows full screen." - **`scripts/check_coverage.dart`**: new widget file added to the `_excluded` set (UI widgets are covered by integration tests, not unit tests). ## Verified `task check` passes (analyze: no issues, 491 unit tests pass, coverage >= 80 %).
Sign in to join this conversation.