v0.0.4
✨ Added
- In-place router restarts — the router replaces itself with its new binary in the same process and hands over its listening sockets, so requests made during a restart wait a moment instead of being refused.
POST /restarton the router's control API — asks a running router to restart once its in-flight requests finish, and reports whether it will restart in place.
🔧 Changed
switchboard service restartnow asks the router to restart in place and says which way it will go (it restarts in placeorlaunchd starts it again) — older routers still stop and are restarted by launchd.- Config, upgrade and time-zone changes now trigger an in-place restart rather than an exit, so launchd no longer has to start an upgraded binary afresh, which macOS has been seen to refuse.
- A router whose binary is briefly missing during
brew upgraderetries for a couple of seconds before falling back to exiting for launchd.
🐛 Fixed
service restartnow refuses with a reason for a router run by hand or one whose config isn't valid, instead of stopping it with nothing to start it again.- A stop signal received while the router is finishing its requests to restart now stops it immediately instead of restarting.