Fixed
- Fixed the mandatory startup updater loop when the active
free-coding-modelsbinary is installed under one npm prefix but another Node/npm manager shadowsnpminPATH. The updater now detects the npm prefix that owns the currently running package, installs into that exact prefix, and verifies that the active package version changed before relaunching. - Improved updater fallback instructions so manual recovery commands include the owning npm binary and
--prefixtarget when needed, instead of pointing users at a different global install. - Stabilized the router dashboard SSE endpoints so
/api/eventsand/stream/eventsflush an initial frame immediately and tests/clients do not hang while waiting for the first broadcast.
Changed
- Restored the normal startup update path and live OpenRouter/release-date startup behavior after the temporary local debug bypass used to diagnose the update loop.
Added
- Added regression coverage for npm-prefix-aware update command generation so future updater changes do not reintroduce the same cross-prefix loop.