forked from Rockachopa/Timmy-time-dashboard
Replace in-memory MessageLog with SQLite-backed implementation. Same API surface (append/all/clear/len) so zero caller changes needed. - data/chat.db stores messages with role, content, timestamp, source - Lazy DB connection (opened on first use, not at import time) - Retention policy: oldest messages pruned when count > 500 - New .recent(limit) method for efficient last-N queries - Thread-safe with explicit locking - WAL mode for concurrent read performance - Test isolation: conftest redirects DB to tmp_path per test - 8 new tests: persistence, retention, concurrency, source field Closes #46