-
released this
2026-03-17 14:36:36 -04:00 | 7 commits to main since this releaseInstallation
New Install
- download the series3-watcher-setup.exe
- Run install wizard.
Existing Install update
- Should update automatically? (havent tested it yet tho)
[1.4.1] - 2026-03-17
Fixed
config.ininow saves toAppData\Local\Series3Watcher\instead ofProgram Files— fixes permission denied error on first-run wizard save.- Config path resolution in both
series3_tray.pyandseries3_watcher.pyupdated to usesys.frozen+LOCALAPPDATAwhen running as a PyInstaller.exe. - Status menu item now uses a callable so it updates every time the menu opens — was showing stale "Starting..." while tooltip correctly showed current status.
- Settings dialog now opens in its own thread — fixes unresponsive tabs and text fields while the watcher loop is running.
- Tray icon reverted to plain colored dot — custom icon graphic was unreadable at 16px tray size.
.icofile is still used for the.exefile icon.
Changed
- Terra-View URL field in settings wizard now accepts base URL only (e.g.
http://192.168.x.x:8000) —/api/series3/heartbeatendpoint appended automatically. - Test Connection button now hits
/healthendpoint instead of posting a fake heartbeat — no database side effects. - "terra-view URL" label capitalized to "Terra-View URL".
- Default log path updated to
AppData\Local\Series3Watcher\agent_logs\series3_watcher.log. - Installer now creates
agent_logs\folder on install. BUILDING.mdadded — step-by-step guide for building, releasing, and updating.
[1.4.0] - 2026-03-12
Added
series3_tray.py— system tray launcher usingpystray+Pillow. Color-coded icon (green=OK, amber=Pending, red=Missing, purple=Error, grey=Starting). Right-click menu shows live status, unit count, last scan age, Open Log Folder, and Exit.run_watcher(state, stop_event)inseries3_watcher.pyfor background thread use by the tray. Sharedstatedict updated on every scan cycle with status, unit list, last scan time, and last error.- Interruptible sleep in watcher loop — tray exit is immediate, no waiting out the full scan interval.
Changed
main()now callsrun_watcher()— standalone behavior unchanged.requirements.txtupdated to document tray dependencies (pystray,Pillow); watcher itself remains stdlib-only.
Downloads