v0.183.1
A patch release: four fixes, no configuration changes.
Fixed
-
A config save no longer leaves a plugin's background loop running on stale objects (#3593, #3636). Every config reload re-runs each plugin's
register(), but a background surface that survived the reload was only sent itsreload(cfg)hook. pr-reviewer's sweep has no hook, so after a save it kept using the first dispatcher while the newly registered webhook used a second one. The two couldn't see each other's in-flight reviews, and the same PR head got reviewed twice. Now a surviving surface is restarted from the new registration when it has noreloadhook and its newstopdiffers from the old one:- The old surface is stopped and given 10 s to finish, then cancelled. The replacement starts only once the old one has ended, so two generations never run at once.
- Reloads are handled one at a time, so two quick saves can't start a surface twice.
- If the replacement fails to start, the previous one is restarted and an error is logged. It is never left silently dead.
- Surfaces with a
reloadhook (Discord, chat gateways, the project-board loop) and surfaces whosestopis unchanged (terminal sessions, delegate health) behave exactly as before.
To stop the duplicate reviews, update agents that host pr-reviewer and restart them.
-
The fleet deck no longer sends the same steer twice (#3622, #3637). If a steer was queued just as its turn ended, two separate checks could each decide it hadn't been delivered. The first re-sent it as a new turn, and the second sent it again. A steer that has already been handled is now skipped. The deck's in-flight-steer test and the supervisor's crash-restart test (#3549) now wait for the state they check instead of a fixed delay, so they no longer flake on slow CI runners.
-
New-agent setup waits for a bundle's questions before Create or Next (#3632, #3634). After you pick a bundle archetype, its questions load in the background. Until they arrived, a fast Create (button or Enter) in the New Agent dialog went past the required answers and was refused by the server. A fast Next in the Setup Wizard skipped the set-up step and later left Finish disabled with no explanation. Both now wait until the questions have loaded. If loading fails, an inline error with Retry is shown. Screen readers now read the help line under folder-picker and text fields.
-
Fleet members built on
protoagent:latestnow rebuild when a new base image is published (#3574, #3635). Nothing ever sent theprotoagent-base-publishedevent that matt, roxy and ava listen for, so they fell behind until someone rebuilt them by hand.docker-publish.ymlnow sends it after the image is pushed and verified, with the image, digest,sha-tag and version. A failed send is a warning and never fails the image publish.