From 010016d515ef86d323ef9ce9583cb908b1cf88d2 Mon Sep 17 00:00:00 2001 From: serversdwn Date: Tue, 17 Mar 2026 21:54:15 -0400 Subject: [PATCH] bump to 1.4.4 (the nonupdate update) chore: clean up code, deprecate status config. --- CHANGELOG.md | 5 +++++ README.md | 6 ++---- build.bat | 7 ++++++- config-template.ini | 2 -- installer.iss | 2 +- series3_tray.py | 2 +- series3_watcher.py | 4 +--- settings_dialog.py | 14 ++------------ 8 files changed, 18 insertions(+), 24 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index baf7b95..174b4dc 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,11 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 --- +## [1.4.4] - 2026-03-17 + +### Removed +- `OK_HOURS` and `MISSING_HOURS` config keys and Settings dialog fields removed — unit status thresholds are calculated by terra-view from raw `age_minutes`, not by the watcher. These fields had no effect since v1.4.2. + ## [1.4.3] - 2026-03-17 ### Added diff --git a/README.md b/README.md index 0456d2d..4f5af2e 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -# Series 3 Watcher v1.4.3 +# Series 3 Watcher v1.4.4 Monitors Instantel **Series 3 (Minimate)** call-in activity on a Blastware server. Runs as a **system tray app** that starts automatically on login, reports heartbeats to terra-view, and self-updates from Gitea. @@ -71,8 +71,6 @@ All settings live in `config.ini`. The Setup Wizard covers every field, but here | Key | Description | |-----|-------------| | `SCAN_INTERVAL_SECONDS` | How often to scan the folder (default `300`) | -| `OK_HOURS` | Age threshold for OK status (default `12`) | -| `MISSING_HOURS` | Age threshold for Missing status (default `24`) | | `MLG_HEADER_BYTES` | Bytes to read from each `.MLG` header for unit ID (default `2048`) | | `RECENT_WARN_DAYS` | Log unsniffable files newer than this window | @@ -123,7 +121,7 @@ To view connected watchers: **Settings → Developer → Watcher Manager**. ## Versioning -Follows **Semantic Versioning**. Current release: **v1.4.3**. +Follows **Semantic Versioning**. Current release: **v1.4.4**. See `CHANGELOG.md` for full history. --- diff --git a/build.bat b/build.bat index f2474ac..93037dd 100644 --- a/build.bat +++ b/build.bat @@ -23,6 +23,11 @@ if exist "%~dp0icon.ico" ( pyinstaller --onefile --windowed --name "%EXE_NAME%" series3_tray.py ) +REM Copy versioned exe to plain name for Inno Setup +copy /Y "dist\%EXE_NAME%.exe" "dist\series3-watcher.exe" + echo. -echo Done. Check dist\%EXE_NAME%.exe +echo Done. +echo Gitea upload: dist\%EXE_NAME%.exe +echo Inno Setup: dist\series3-watcher.exe (copy of above) pause diff --git a/config-template.ini b/config-template.ini index a2e52a6..fd03b34 100644 --- a/config-template.ini +++ b/config-template.ini @@ -14,8 +14,6 @@ MAX_EVENT_AGE_DAYS = 365 # Scanning SCAN_INTERVAL_SECONDS = 30 -OK_HOURS = 12 -MISSING_HOURS = 24 # Logging ENABLE_LOGGING = True diff --git a/installer.iss b/installer.iss index 9cf5410..1dd056a 100644 --- a/installer.iss +++ b/installer.iss @@ -3,7 +3,7 @@ [Setup] AppName=Series 3 Watcher -AppVersion=1.4.2 +AppVersion=1.4.4 AppPublisher=Terra-Mechanics Inc. DefaultDirName={pf}\Series3Watcher DefaultGroupName=Series 3 Watcher diff --git a/series3_tray.py b/series3_tray.py index 75044cc..2914440 100644 --- a/series3_tray.py +++ b/series3_tray.py @@ -1,5 +1,5 @@ """ -Series 3 Watcher — System Tray Launcher v1.4.3 +Series 3 Watcher — System Tray Launcher v1.4.4 Requires: pystray, Pillow, tkinter (stdlib) Run with: pythonw series3_tray.py (no console window) diff --git a/series3_watcher.py b/series3_watcher.py index 2c7da2e..b5881cf 100644 --- a/series3_watcher.py +++ b/series3_watcher.py @@ -60,8 +60,6 @@ def load_config(path: str) -> Dict[str, Any]: return { "WATCH_PATH": get_str("SERIES3_PATH", r"C:\Blastware 10\Event\autocall home"), "SCAN_INTERVAL": get_int("SCAN_INTERVAL_SECONDS", 300), - "OK_HOURS": float(get_int("OK_HOURS", 12)), - "MISSING_HOURS": float(get_int("MISSING_HOURS", 24)), "ENABLE_LOGGING": get_bool("ENABLE_LOGGING", True), "LOG_FILE": get_str("LOG_FILE", os.path.join( os.environ.get("LOCALAPPDATA") or os.environ.get("APPDATA") or "C:\\", @@ -219,7 +217,7 @@ def scan_latest( # --- API heartbeat / SFM telemetry helpers --- -VERSION = "1.4.3" +VERSION = "1.4.4" def _read_log_tail(log_file: str, n: int = 25) -> Optional[list]: diff --git a/settings_dialog.py b/settings_dialog.py index b65af66..e06a4cc 100644 --- a/settings_dialog.py +++ b/settings_dialog.py @@ -1,5 +1,5 @@ """ -Series 3 Watcher — Settings Dialog v1.4.3 +Series 3 Watcher — Settings Dialog v1.4.4 Provides a Tkinter settings dialog that doubles as a first-run wizard. @@ -30,8 +30,6 @@ DEFAULTS = { "SERIES3_PATH": r"C:\Blastware 10\Event\autocall home", "MAX_EVENT_AGE_DAYS": "365", "SCAN_INTERVAL_SECONDS":"300", - "OK_HOURS": "12", - "MISSING_HOURS": "24", "MLG_HEADER_BYTES": "2048", "ENABLE_LOGGING": "true", "LOG_FILE": os.path.join( @@ -229,8 +227,6 @@ class SettingsDialog: # Scanning self.var_scan_interval = tk.StringVar(value=v["SCAN_INTERVAL_SECONDS"]) - self.var_ok_hours = tk.StringVar(value=v["OK_HOURS"]) - self.var_missing_hours = tk.StringVar(value=v["MISSING_HOURS"]) self.var_mlg_header_bytes = tk.StringVar(value=v["MLG_HEADER_BYTES"]) # Logging @@ -398,9 +394,7 @@ class SettingsDialog: def _build_tab_scanning(self, nb): f = self._tab_frame(nb, "Scanning") _add_label_spinbox(f, 0, "Scan Interval (sec)", self.var_scan_interval, 10, 3600) - _add_label_spinbox(f, 1, "OK Hours", self.var_ok_hours, 1, 168) - _add_label_spinbox(f, 2, "Missing Hours", self.var_missing_hours, 1, 168) - _add_label_spinbox(f, 3, "MLG Header Bytes", self.var_mlg_header_bytes, 256, 65536) + _add_label_spinbox(f, 1, "MLG Header Bytes", self.var_mlg_header_bytes, 256, 65536) def _build_tab_logging(self, nb): f = self._tab_frame(nb, "Logging") @@ -498,8 +492,6 @@ class SettingsDialog: (self.var_api_interval, "API Interval", 30, 3600, 300), (self.var_max_event_age_days, "Max Event Age Days", 1, 3650, 365), (self.var_scan_interval, "Scan Interval", 10, 3600, 300), - (self.var_ok_hours, "OK Hours", 1, 168, 12), - (self.var_missing_hours, "Missing Hours", 1, 168, 24), (self.var_mlg_header_bytes, "MLG Header Bytes", 256, 65536, 2048), (self.var_log_retention_days, "Log Retention Days", 1, 365, 30), ] @@ -532,8 +524,6 @@ class SettingsDialog: "SERIES3_PATH": self.var_series3_path.get().strip(), "MAX_EVENT_AGE_DAYS": str(int_values["Max Event Age Days"]), "SCAN_INTERVAL_SECONDS":str(int_values["Scan Interval"]), - "OK_HOURS": str(int_values["OK Hours"]), - "MISSING_HOURS": str(int_values["Missing Hours"]), "MLG_HEADER_BYTES": str(int_values["MLG Header Bytes"]), "ENABLE_LOGGING": "true" if self.var_enable_logging.get() else "false", "LOG_FILE": self.var_log_file.get().strip(), -- 2.49.1