v0.9.1-preview
v0.9.1-preview
Focused release: offline cache/data management hardening. No UI, workspace, or composer changes.
Offline cache pruning infrastructure
- Added
OfflineCacheRepository.pruneServerCache(serverId, maxSessions, maxAgeDays, sessionIdToPreserve), scoped entirely to one server. - The retention decision is a pure, stateless function (
sessionIdsToPrune) rather than embedded SQL logic, so the policy itself is thoroughly unit-tested independent of Room. - No schema migration was needed —
cachedAtEpochMillisalready existed on the cached session/message entities from an earlier version.
Conservative retention policy
- Keeps the 50 most recently active cached sessions per server.
- Drops anything older than 90 days.
- Always preserves an explicitly provided active/current session, when one is known.
- Messages for retained sessions are kept in full.
- Cached messages for pruned or otherwise-missing sessions are swept as orphan cleanup.
Startup-only execution
- Pruning runs once per app process start, scoped to configured servers only.
- Not tied to session-list refresh, chat send, or any other per-action path.
- No session is known to be "active" this early in the app's lifecycle, so nothing is preserved by default at startup.
Explicitly unchanged / out of scope
- Logout behavior is unchanged: cookies may clear, but the offline cache is never cleared on logout.
- No user-facing cache management UI was added.
- No changes to custom header encryption (still plaintext DataStore; remains documented future work).
- Workspace and other control-plane screens (Tasks, Skills, Memory, Profiles, Projects, Insights) remain in-memory only — this release does not add offline support for them.
Docs
- README's "Current Features" now describes the retention policy; the previous "cache grows unbounded" note was removed since it's no longer accurate. Workspace/control-plane screens are still not claimed as offline-capable.
Debug preview build, not for production distribution.