- EmailTreeModel: hierarchical model for grouped email view (QTreeView)
- DateGroupProxyModel: proxy model for date-based grouping logic
- MailListView: migrated from QTableView to QTreeView with grouping support
- ReaderView: subject frame with shadow, avatar moved to header, body inside header
- MainWindow: frameless with rounded corners, 1px border, edge resize, no status bar
- Stability fixes for grouping mode switch:
* Proper tree cleanup (no double-delete of root)
* Bounds checking on all array accesses
* Null pointer checks in index/parent/data methods
* Date validity checks before grouping
* Index validation before accessing m_emails
- CentralWidget with bottom-left/bottom-right radius 8px
- Event filter on central widget to forward mouse events for resize
- Consolidated windowFlags (Qt::Window | Frameless | MinMax | Close)
- setMouseTracking(true) for cursor updates
- Removed WA_TranslucentBackground causing black corners
- Status bar fully removed (setStatusBar(nullptr))
- ReaderView: complete rewrite with CSS styling, headers, attachments, zoom, find, dark mode, image blocking
- Categories: DAO + UI tree widget with colors, nested categories, assignment
- Rules engine: DAO + evaluation + actions (move, mark read, flag, delete, category, forward)
- Templates: DAO + editor + manager with variables support
- Signatures: DAO + manager + auto-per-account + manual selector in compose
- ComposeView: signature combo, template selector, auto-signature on new email
- MainWindow: frameless with rounded corners, 1px border, resize from edges, no status bar
- Database: new tables (Category, MailCategory, Rule, Template, Signature) with indexes