- Add InviteCompressor for terminal-friendly calendar invite summaries
- Add test fixtures for large group invite and cancellation emails
- Compress To/CC headers to single line with '... (+N more)' truncation
- Add 'h' keybinding to toggle between compressed and full headers
- EnvelopeHeader now shows first 2 recipients by default
- Create calendar_parser.py module with ICS parsing support
- Add test_calendar_parsing.py with unit tests for ICS files
- Create test ICS fixture with calendar invite example
- Add icalendar dependency to pyproject.toml
- Add calendar detection to notification_detector.py
- Research and document best practices for ICS parsing libraries
- 4-week implementation roadmap:
- Week 1: Foundation (detection, parsing, basic display)
- Week 2: Mail App Integration (viewer, actions)
- Week 3: Advanced Features (Graph API sync)
- Week 4: Calendar Sync Integration (two-way sync)
Key capabilities:
- Parse ICS calendar files (text/calendar content type)
- Extract event details (summary, attendees, method, status)
- Detect cancellation vs invite vs update vs request
- Display calendar events in TUI with beautiful formatting
- Accept/Decline/Tentative/Remove actions
- Integration path with Microsoft Graph API (future)
Testing:
- Unit tests for parsing cancellations and invites
- Test fixture with real Outlook calendar example
- All tests passing
This addresses your need for handling calendar invites like:
"CANCELED: Technical Refinement"
with proper detection, parsing, and display capabilities.
- Add test mailbox with 5 sample emails for integration testing
- Add himalaya_test_config.toml for local Maildir backend testing
- Create 12 integration tests covering search by from/to/subject/body
- Fix search results display to clear list and show message when 0 results
- Add clear_content() method to ContentContainer widget