v2.23.1
Fixed
Background fleet memory auto-scan now actually runs.
With auto-scan enabled, server memories could stay stale indefinitely — the scan never ran a single cycle. The loop slept the full configured interval (24h by default) before its first scan, and the last-run marker lived only in memory, resetting on every launch. Since the app rarely stays open for a whole interval, each restart restarted the clock and the first cycle never arrived.
- Persistent schedule — the last-run timestamp is now stored in
~/.servonaut/memory_scan_state.json(atomic write, fails soft), so the schedule survives restarts. - Catch-up on launch — after a short startup grace, if the interval has already elapsed since the last run, the scan runs immediately instead of waiting out another full interval. A cycle skipped because the instance list hasn't loaded retries shortly after rather than burning a full interval.
- Live status updates — a background cycle now updates the Fleet Memory table in real time (per-instance progress + repopulate) and refreshes the instance-list memory column, without interrupting you with a dialog. The Fleet Memory status line shows a real "next in ~Xh" countdown that persists across restarts.
Upgrade: pipx upgrade servonaut (or pip install -U servonaut). Shortly after your next launch, any stale servers get a catch-up memory scan automatically.