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