2 Commits

Author SHA1 Message Date
Bendt
db58cb7a2f feat: Add CalendarInvitePanel to display invite details in mail app
- Create CalendarInvitePanel widget showing event summary, time, location,
  organizer, and attendees with accept/decline/tentative buttons
- Add is_calendar_email() to notification_detector for detecting invite emails
- Add get_raw_message() to himalaya client for exporting full MIME content
- Refactor calendar_parser.py with proper icalendar parsing (METHOD at
  VCALENDAR level, not VEVENT)
- Integrate calendar panel into ContentContainer.display_content flow
- Update tests for new calendar parsing API
- Minor: fix today's header style in calendar WeekGrid
2025-12-29 08:41:46 -05:00
Bendt
fc5c61ddd6 feat: Add calendar invite detection and handling foundation
- 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.
2025-12-28 22:02:50 -05:00