7d22442bad
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). - series4_ingest: mirror_api_url/mirror_sfm_url/mirror_sfm_state_file config; best-effort heartbeat mirror; isolated event-mirror pass after the primary. - settings dialog: new 'Mirror' tab. - 9 new tests incl. the isolation invariant (down mirror = fast no-op that never touches primary state). 42 passing. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
33 lines
771 B
JSON
33 lines
771 B
JSON
{
|
|
"thordata_path": "C:\\THORDATA",
|
|
"scan_interval": 60,
|
|
|
|
"api_url": "",
|
|
"api_timeout": 5,
|
|
"api_interval": 300,
|
|
"source_id": "",
|
|
"source_type": "series4_watcher",
|
|
"local_timezone": "America/New_York",
|
|
|
|
"enable_logging": true,
|
|
"log_file": "C:\\Users\\%USERNAME%\\AppData\\Local\\ThorWatcher\\agent_logs\\thor_watcher.log",
|
|
"log_retention_days": 30,
|
|
|
|
"update_source": "gitea",
|
|
"update_url": "",
|
|
|
|
"sfm_forward_enabled": false,
|
|
"sfm_url": "",
|
|
"sfm_forward_interval": 60,
|
|
"sfm_quiescence_seconds": 5,
|
|
"sfm_missing_report_grace_seconds": 60,
|
|
"sfm_http_timeout": 60,
|
|
"sfm_state_file": "",
|
|
"sfm_max_forwards_per_pass": 500,
|
|
"sfm_max_event_age_days": 365,
|
|
|
|
"mirror_api_url": "",
|
|
"mirror_sfm_url": "",
|
|
"mirror_sfm_state_file": ""
|
|
}
|