{"version":"2.1.227","anchor":"break-reminders-gain-a-persistent-active-time-ledger","canonical_anchor":"break-reminders-gain-a-persistent-active-time-ledger","heading":"Break reminders gain a persistent active-time ledger","tier":"use","area":"Break Reminders","scope":null,"heads_up":null,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.227\/e\/break-reminders-gain-a-persistent-active-time-ledger","release_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.227","markdown":"### Break reminders gain a persistent active-time ledger\n\nBreak reminders now track active time on disk, so they survive restarts once you enable them.\n\n**What**\n\nTime spent actively working is now written to disk, so break reminders can survive a restart. The ledger lives in `active-time.json` in the config directory, or under an `active-time-ledger` key when a storage backend is present, and holds start, end and active-seconds windows pruned to one year. Reminders themselves still only fire when the `breakReminder.enabled` setting is turned on, documented as defaulting to false, alongside the existing `breakThresholdMinutes`.\n\n**Details**\n\n- a failed read logs \"active-time ledger read failed\" and falls back to an empty ledger rather than erroring\n- the periodic flush timer is an empty early return in this build, so nothing is written on a schedule; writes happen only when something explicitly flushes\n\n**Evidence**\n\n`active-time ledger read failed`\n\n- Area: Break Reminders\n- Names: `breakThresholdMinutes`\n- Tier: Use it now\n- Useful: 3\/5\n- Signal: 3\/5"}