Commit Graph

36 Commits

Author SHA1 Message Date
serversdown 3ee0cae31e fix(settings): add SFM Forward tab to settings dialog (v1.5.1)
v1.5.0 shipped the forwarder module + INI keys but the settings
dialog wasn't extended, so the only way operators could enable
forwarding was hand-editing config.ini.  This adds a sixth tab
("SFM Forward") with:

  - Forward events to SFM    checkbox
  - SFM Server URL           entry + Test button (GETs /health)
  - Forward Interval (sec)   spinbox
  - Quiescence (sec)         spinbox
  - Missing-Report Grace     spinbox
  - HTTP Timeout             spinbox
  - State File               entry + Browse...

Save-time guard: enabling the forwarder without a URL raises a
validation error rather than silently saving a non-functional
config.

Patch release — same on-disk INI schema, no config migration.
2026-05-10 00:01:25 +00:00
serversdown f4ec6ef945 feat(forward): SFM event forwarder (v1.5.0)
When SFM_FORWARD_ENABLED=true and SFM_URL is set, every Blastware
event binary in the ACH watch folder is forwarded to an SFM server's
/db/import/blastware_file endpoint as a multipart POST.  The paired
<binary>.TXT ASCII report (which Blastware's ACH writes alongside
each event) is shipped in the same request, letting the SFM server
index the full per-channel stats — PPV, ZC Freq, Time of Peak, Peak
Acceleration / Displacement, Peak Vector Sum + time, sensor
self-check Pass/Fail per channel, and monitor-log timestamps —
without depending on the still-undecoded BW waveform body codec.

New module event_forwarder.py:
  - is_event_binary() filename matcher (BW's <P><serial3><stem>.<ext>
    scheme; rejects .MLG, .TXT, .log, .ini, .h5, etc.)
  - ForwardState (.json file keyed by sha256 — idempotent across
    restarts and auto-updates)
  - find_pending_events() with quiescence + grace-period guards
  - Hand-rolled multipart encoder (stdlib-only)
  - forward_event_pair() / forward_pending() — POST loop with
    structured per-event outcomes

Wired into series3_watcher.run_watcher() on its own cadence
(SFM_FORWARD_INTERVAL_SECONDS, default 60s) so it doesn't slow the
existing 5-min heartbeat scan.

Default-off: existing 1.4.x deployments keep their old behaviour
after auto-updating until an operator sets SFM_URL +
SFM_FORWARD_ENABLED=true and restarts.

17 unit tests in test_event_forwarder.py cover filename matching,
state idempotency, scan logic (quiescence, grace, max age,
already-forwarded, .TXT pairing), multipart byte shape, and an
end-to-end POST against a tiny stdlib http.server fake.

Bumps version 1.4.4 → 1.5.0 (minor — additive feature, no API break).
Requires SFM server v0.16+ for the paired-.TXT import endpoint.
2026-05-09 00:03:31 +00:00
claude 010016d515 bump to 1.4.4 (the nonupdate update)
chore: clean up code, deprecate status config.
2026-03-17 21:54:15 -04:00
claude 439feb9942 Feat: Update settings tab implemented.
Auto-updates now configurable (URL, source (gitea or private server), log activity for auto updates.
fix: Update now hardened to prevent installation of corrupt or incorrect .exe files. (security to be hardened in the future)
2026-03-17 21:08:37 -04:00
claude d2a8c2d928 Update to v1.4.2
Feat: tray icon now shows API/watcher health rather than unit ages. unit submenu removed, now handled by recieving software.

Chore: remove old unneeded code from deprecated features (console colorization, Missing/pending age limits)
2026-03-17 16:02:24 -04:00
claude 3303e22843 fix: update version to v1.4.2 and improve status reporting in tray
feat: now sends watcher_status via payload to terra-view
2026-03-17 15:23:55 -04:00
claude d2fd3b7182 docs: v1.4.1 changelog entry 2026-03-17 14:29:46 -04:00
claude 1d94c5dd04 docs: delete deprecated client specific readme 2026-03-17 14:26:59 -04:00
claude 814b6f915e fix: settings dialog now runs in its own thread, increasing responsiveness. 2026-03-17 13:36:35 -04:00
claude 9cfdebe553 fix: watcher correctly uses AppData directory, not program files. 2026-03-17 03:40:04 -04:00
claude f773e1dac9 fix: tray icon more legible 2026-03-17 03:27:53 -04:00
claude 326658ed26 doc: readme bummped to 1.4.1 2026-03-17 01:23:01 -04:00
claude 504ee1d470 bugfix: log directory now writes to appdata folder, avoiding permissions issues. log folder accessible from tray icon.
doc: deployment/build doc added
2026-03-17 01:10:40 -04:00
claude e67b6eb89f Feat: v1.4.1 - Windows installer updated. 2026-03-16 20:00:42 -04:00
claude 1b8c63025f doc: update readme v1.4 2026-03-13 17:52:59 -04:00
claude 0807e09047 feat: windows installer with remote updates and remote management added. 2026-03-13 17:40:28 -04:00
claude 00956c022a Rename to series 3 watcher 2026-03-12 19:14:30 -04:00
claude 9b20d93f4c chore: cleanup gitignore 2026-03-05 23:10:44 -05:00
claude d404bf6542 refactor: Rename emitter to agent, update related files and logging paths 2026-03-03 17:10:47 -05:00
claude 0d5fa7677f chore: Config-template.ini added to repo. .gitignore updated. 2026-03-03 16:13:01 -05:00
claude 44476248c3 chore: config.ini now added to git ignore. See config template for schema 2026-03-03 16:09:39 -05:00
claude fa56b93c8f Merge branch 'main' into dev 2025-12-04 17:25:36 -05:00
claude 58ba506f54 docs updated 2025-12-04 17:24:20 -05:00
claude 62a4ca2b1c Update README header formatting 2025-12-04 17:22:30 -05:00
claude f29943f8e4 Add version information to README 2025-12-04 17:16:59 -05:00
claude 35e3292f01 Merge pull request #4 from serversdwn/dev
Roster deprecated, v1.2
2025-12-04 17:16:23 -05:00
claude 73204ee92e Roster deprecated 2025-12-04 16:22:31 -05:00
claude 47718e7cad Merge pull request #3 from serversdwn/dev
Update to 1.1.0
2025-12-02 01:33:29 -05:00
claude 9074277ff3 config update 2025-12-02 01:31:37 -05:00
claude 551fdae106 v1.1 w/ api funtion added 2025-12-01 16:30:08 -05:00
claude a03d4a1f05 Add API_URL support + POST reporting logic 2025-11-20 18:24:57 -05:00
claude 142998251c Merge pull request #2 from serversdwn/dev
Merge pull request #1 from serversdwn/main
2025-11-20 18:03:59 -05:00
claude de3b46a09e Merge pull request #1 from serversdwn/main
Update ROSTER_URL in config.ini
2025-11-20 17:09:12 -05:00
claude 08c54f992c Update ROSTER_URL in config.ini
example config
2025-11-18 02:57:14 -05:00
claude 1cf10f0023 added README.md file 2025-11-17 12:15:04 -05:00
claude 5dc78096cd v1.0.0 – stable baseline emitter 2025-11-17 12:12:10 -05:00