v0.21.3
What's new
Fixed
- An applied update no longer takes RepoYeti down.
- An update no longer moves the daemon to a different port and kills the tab you had open.
Full notes
Fixed
- An applied update no longer takes RepoYeti down. On a downloaded release build, installing an
update stopped the daemon and started nothing in its place: the dashboard went dead and the only
way back was launching the app again by hand. The relaunch built its successor's command from
process.argv[0..1], which is the runtime and the script in a source checkout but, inside a
compiled single-file executable, is a placeholder pair pointing at a virtual path that exists only
inside the running binary. Respawning it fails immediately, and on the machines a compiled release
exists for (no runtime installed, which is the entire pitch) the command cannot resolve at all.
Nothing caught it, because the failure is in the child: the spawn call itself succeeds, so the
guard that exists precisely to never shut down without a successor saw one and stepped aside.
Second cause, same outcome, on any launch that did not spell outstart, which is the documented
"just run the .exe" path: the relaunch signal is appended as a flag, and with no other arguments
it landed in the command slot, so the successor exited withUnknown command: --relaunch. The
update itself was always written to disk correctly, so an install on an older build recovers the
moment you start it again, and this is the last time it will need to. - An update no longer moves the daemon to a different port and kills the tab you had open. The
successor was handed the port this daemon preferred, not the port it was actually serving on.
Those are the same number only until something else holds the preferred port once; after that
every update aimed the successor at the wrong one, and it uses that value for both of its jobs. So
it waited out its full 8-second handoff timeout on a socket its predecessor never held and nobody
was going to release, then bound that port rather than the one your browser was talking to,
and the open dashboard's live connection died against a daemon that was otherwise perfectly
healthy. It is now given the bound port, so the wait applies to the socket actually being freed
and the daemon keeps one address across updates. Measured on an isolated home: a daemon that had
hopped once used to relocate its successor away from the open tab, and took 8.4s to do it; it now
hands over in 1.2s on the same port.
Install
Download the bundle for your platform, extract the whole folder, and run the RepoYeti executable.
No install step or runtime is required; keep the bundled web folder beside the executable.
| Platform | Asset |
|---|---|
| Linux (x64) | repoyeti-linux-x64.tar.gz |
| macOS (Apple silicon) | repoyeti-macos-arm64.tar.gz |
| Windows (x64) | repoyeti-windows-x64.zip |
Source checkouts can update in-app. Portable-bundle installs update by downloading and extracting
the newer archive; nothing is installed without your say-so.
Full history: CHANGELOG.md
Full Changelog: v0.21.2...v0.21.3