Commit Graph

24 Commits

Author SHA1 Message Date
1c00512661 Improve IMAP reconnection and error handling in polling
Refactored PollInboxAsync to better handle IMAP connection drops and protocol errors by reconnecting and resuming processing as needed. Switched from using a using statement to explicit disposal in a finally block. Now logs and recovers from transient IMAP issues, and ensures proper cancellation handling by rethrowing OperationCanceledException. This increases service robustness and reliability.
2026-04-12 14:23:16 +01:00
387c0dc155 Commit pre-existing working changes (multi-account, blocked domains, overrides) 2026-04-12 10:10:58 +01:00
8aa35469fc Fix Verdict:Error from prose-wrapped AI responses 2026-04-12 10:08:57 +01:00
5c801cef4b Fix spam folder not found: add Junk Email to candidate names 2026-04-12 09:59:58 +01:00
b5f8b7300b Fix spam folder detection — search two levels deep, try common names 2026-04-12 09:50:24 +01:00
27c6d12183 Stop grid jumping: event-driven refresh instead of 5-second timer 2026-04-12 09:19:47 +01:00
4d8342b658 Fix activity log refresh losing scroll position and selection 2026-04-12 09:13:43 +01:00
66cca61b21 fix: address code review findings (critical + important + minor)
Critical fixes:
- C1: Fix GDI handle leak in IconGenerator (lazy singletons + DestroyIcon)
- C2: Add appsettings.json to .gitignore, provide template
- C3: Properly dispose IHost on exit

Important fixes:
- I1: Add SpamGuardOptionsValidator for startup config validation
- I3: Use UID range queries instead of SearchQuery.All
- I4: Only scan recent Sent messages after initial full scan
- I5: Atomic file writes (write-to-temp, then rename)
- I6: Set 30s HTTP timeout and base address on HttpClient
- I7: Remove duplicate AddSingleton<EmailClassifier> (DI conflict)
- I8: Better HTML stripping (script/style removal, entity decoding)

Minor fixes:
- M1: Delete placeholder UnitTest1.cs
- M2: Wire MaxActivityLogEntries config to ActivityLog constructor
- M4: Log warnings instead of bare catch blocks
- M5: Dispose JsonDocument instances
- M8: Use AppContext.BaseDirectory for appsettings.json path
- M9: Truncate NotifyIcon.Text to 127 chars

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-07 11:57:12 +01:00
cd9adc5a54 chore: remove placeholder icons (generated at runtime) 2026-04-07 11:47:56 +01:00
98e2da745a feat: wire up Program.cs with DI, background services, and tray UI
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-07 11:47:01 +01:00
f907f9e8f1 feat: add system tray UI with status icon, tooltip, and context menu 2026-04-07 11:45:20 +01:00
a3a8f2e4be feat: add ActivityLogForm with color-coded DataGridView 2026-04-07 11:45:10 +01:00
3401cfce34 feat: add InboxMonitorService with classification pipeline and spam moving 2026-04-07 11:44:14 +01:00
807b3ebb7f feat: add programmatic tray icon generation (green/yellow/red) 2026-04-07 11:42:49 +01:00
7568d3d288 feat: add TrustedSenderService to scan Sent folder for trusted contacts 2026-04-07 11:42:40 +01:00
bd42cc3382 feat: add EmailClassifier with Claude API integration and response parsing
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-07 11:41:45 +01:00
78f5ca864d feat: add ImapClientFactory for IMAP connection management 2026-04-07 11:40:27 +01:00
b45d6dffc1 feat: add thread-safe ActivityLog with bounded capacity 2026-04-07 11:40:18 +01:00
f0760aa32b feat: add TrustedSenderStore with case-insensitive lookup and persistence
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-07 11:39:37 +01:00
b11aea93d6 feat: add ProcessedUidStore with persistence and pruning
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-07 11:39:31 +01:00
0ee0a43b6a feat: add configuration model and appsettings.json 2026-04-07 11:38:07 +01:00
ad87e1c2c5 feat: add EmailSummary, ClassificationResult, and ActivityEntry models 2026-04-07 11:38:04 +01:00
05afcbde6a fix: set net8.0-windows target and UseWindowsForms for WinForms support 2026-04-07 11:37:25 +01:00
75dd1662b2 feat: scaffold SpamGuard solution with project structure 2026-04-07 11:35:41 +01:00