Skip to content

v0.21.3

Choose a tag to compare

@github-actions github-actions released this 16 Aug 01:11
· 24 commits to main since this release

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 out start, 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 with Unknown 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