- Add Redis service (docker-compose) for caching accounts, messages, payment status
- Cache accounts list (5min), messages (3min), payment status (10min)
- Auto-invalidate cache on import/delete/payment-check/note-update
- Add refresh button to email list panel (force re-fetch from IMAP)
- Messages API supports refresh=true param to bypass cache
- New cache.py module with RedisCache class
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Move SQLite DB to data/ directory and track in git for portability
- Fix SQL injection in cleanup_old_emails (use parameterized query)
- Replace sync requests with async httpx in auth.py
- Enable WAL mode and foreign keys for SQLite
- Add UNIQUE constraint and foreign key to account_tags table
- Remove redundant indexes on primary key columns
- Mount data/ volume in docker-compose for persistence
- Remove unused requests dependency
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>