Version 1.7.0 hardens the auto-update infrastructure and introduces granular control over provider health check
frequencies.
🛡️ Hardened Auto-Update System
- Detached Restart Pattern: Resolved the EADDRINUSE port conflict on Windows. The server now spawns a detached
process that waits for the old instance to fully exit before reclaiming the port. - In-Place Updating: The update logic now detects if the local directory is writable. If so, it performs a local npm
install instead of a global one, bypassing common permission/sudo issues. - Web-UI Update option: Added an option to run the update command through the web UI.
- Environment Awareness: The system now identifies if it is running from a .git source and automatically disables
auto-updates to prevent corruption of local development environments. - Robust Version Tracking: Migrated version detection to an ESM-native import.meta.url approach, ensuring
package.json is always correctly located regardless of the execution path. - Resilient Version Parsing: Hardened the version comparison logic to strictly extract numeric x.y.z components,
preventing failures caused by pre-release tags or "unknown" strings.
⚡ Performance & Telemetry
- Per-Provider Ping Overwrites: Added support for pingIntervalMinutes in the configuration, allowing users to set
custom health-check frequencies for specific providers. This fixes a bug that prevented custom polling intervals from persisting. - Smart Scheduler: Reduced the core scheduler tick to 1 minute (from 5) to support shorter ping intervals while
introducing lastPingAt tracking to prevent redundant requests. - Manual Update Trigger: Exposed a forceCheck flag in the API and added a "Check for Updates" action in the Web UI,
bypassing the default 24-hour check window.