v5.11.71 — Savings that update when you look
Your savings number is now live. Open or refresh the dashboard and it recomputes on the spot — no more stale figure sitting there from hours ago.
What's better
- Live savings on refresh. The dashboard fetches a fresh
/api/savingson load and when you switch back to the tab, and patches the Savings + Overview tiles in place (fast, in-place, with alive · HH:MM:SSstamp). A browser refresh always shows current numbers. - Staleness can't silently come back. The keep-warm background refresh now heals itself onto an update-surviving path, so a plugin update no longer freezes your dashboard at an old reading. If yours was stuck, it un-sticks on the next session.
Under the hood
- New read-only
GET /api/savingsendpoint: recomputes merged savings + cache-health on demand, localhost-guarded (DNS-rebinding defense), fail-open. _heal_keepwarm_plist_pathlifts an existing launchd agent off a version-pinned cache path (macOS) at ensure-health; never resurrects a declined agent.- 11 new tests. Full suite 709 passed. Linux CI green (3.11–3.14). Dashboard verified live end-to-end in a browser.
No config needed — it just works the next time you open the dashboard.