v1.6.0 - Optional dual-send mirror so a standby server stays a live replica. #12

Merged
serversdown merged 4 commits from dev into main 2026-06-25 10:53:30 -04:00

4 Commits

Author SHA1 Message Date
serversdown e6e4c94f19 chore(release): bump to v1.6.0 — mirror (dual-send) docs
Version bump across series3_watcher.py / tray / settings dialog / installer.iss.
CHANGELOG + README document the optional best-effort mirror server
(MIRROR_API_URL / MIRROR_SFM_URL / MIRROR_SFM_STATE_FILE, default off).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-25 05:54:20 +00:00
serversdown 92ebbd6537 Merge pull request 'feat: add optional mirror server config' (#11) from feat/mirror-dual-send into dev
Reviewed-on: #11
2026-06-25 01:29:52 -04:00
serversdown 4adaa09d75 feat: best-effort mirror (dual-send) of heartbeats + events
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>
2026-06-24 23:16:47 +00:00
serversdown 730f215e23 docs: mirror dual-send design spec
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-24 23:02:47 +00:00