feat: add optional mirror server config #11

Merged
serversdown merged 2 commits from feat/mirror-dual-send into dev 2026-06-25 01:29:53 -04:00
Owner

Optional best-effort second destination: post each heartbeat and event to a mirror server (e.g. the office NAS) IN ADDITION to the primary above. Default off (blank URLs). The mirror can never delay or fail the primary; the event mirror keeps its own state file so nothing is lost while it's down. See docs/mirror-dual-send-design.md.

Optional best-effort second destination: post each heartbeat and event to a mirror server (e.g. the office NAS) IN ADDITION to the primary above. Default off (blank URLs). The mirror can never delay or fail the primary; the event mirror keeps its own state file so nothing is lost while it's down. See docs/mirror-dual-send-design.md.
serversdown added 2 commits 2026-06-25 01:29:38 -04:00
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Optional second destination so each heartbeat and event is posted to a
mirror server (the office NAS) alongside the primary — dual-write to
de-risk the migration. Default off (blank mirror URLs); existing installs
unchanged.

- event_forwarder: mirror_reachable() fast-fail probe + mirror_forward_pass()
  (reliable event mirror with its OWN state file, total exception isolation,
  never raises into the primary path).
- series3_watcher: MIRROR_API_URL/MIRROR_SFM_URL/MIRROR_SFM_STATE_FILE config;
  best-effort heartbeat mirror; isolated event-mirror pass after the primary.
- settings dialog + config-template: new 'Mirror' tab / keys.
- 8 new tests incl. the isolation invariant. 44 passing.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
serversdown merged commit 92ebbd6537 into dev 2026-06-25 01:29:53 -04:00
Sign in to join this conversation.