Skip to content

v0.5.2 — Legacy column reads and session leak

Choose a tag to compare

@aaronsb aaronsb released this 28 Jul 02:27
· 39 commits to main since this release
v0.5.2
98edc0d

[0.5.2] - 2026-07-27

Fixed

  • Status total percentage read a dead column — playtimed status computed the Total progress bar from the legacy daily_total column while Gaming used the current per-day limits, so a stale value could render nonsense (789% against a real 100%). Both now measure against daily_limits, completing the migration started in 0.5.1
  • History coloured every row against a flat limit — playtimed history compared each day's gaming time to the legacy gaming_limit column instead of that day's own budget, marking weekday rows red against a weekend allowance. Each row is now coloured against its own day's limit
  • Warns column always showed 0 — playtimed history read the warnings_sent counter, which the daemon never increments; warnings are recorded as the warned_30/warned_15/warned_5 flags. The column now derives its count from those flags
  • Sessions leaked on unclean daemon exit — active sessions are tracked in memory only, so a crash, reboot, or SIGKILL left rows with no end_time while the next poll opened fresh ones for the same processes. Open sessions are now closed on shutdown, and any left behind by a previous run are reconciled at startup

Added

  • ActivityDB.get_open_sessions(), close_session(), and get_last_poll_at() supporting session reconciliation
  • Sessions closed at an unverified upper bound record a NULL duration and display as unknown rather than being credited with playtime that may never have happened — they drop out of per-app aggregates instead of inflating them
  • shutdown and orphaned end reasons distinguish a clean daemon stop from a session recovered after an unclean exit