## What's Changed
### Bug Fixes
- Fix Log Browser UI freeze on low-end devices — show in-memory messages instantly, append new entries via debounced listener instead of re-reading entire log file
- Fix crash from corrupted UTF-8 in log files during pruning
- Fix Android crash-restart loop: ensure provideFlutterEngine never returns null
- Prevent WebFPlugin crash on Android by catching Throwable
- Fix Android crash on startup: foreground service and WebFPlugin NPE
- Fix SMTP multipart boundary for attachments
- Fix email folder rail label visibility on desktop
- Fix Windows self-update: extract ZIP bundle, stage with .bat script
- Fix missing COLLECTION_NAME in blog and chat templates
- Fix nav to only show apps with actual public content
- Fix ContactService crash: set storage before initializeApp in _loadAllowedPubkeys
- Fix CLI compilation: remove Flutter-only imports from email_relay_service
### Features & Improvements
- Fix email threading, notifications, and attachment handling
- Add 10MB email attachment handling and thread delivery
- Add encrypted offline email cache replay and desktop notifications
- Unify device navigation: auto-detect public apps instead of hardcoding
### Localization
- Complete pt_PT key coverage for common and contacts
- Refactor locale key ownership and expand music translations