Important
If you are running 4.0.17 or 4.0.18, the in-portal update button cannot install this release — the broken update launcher is the very thing being replaced. Update once from the command line:
curl -fsSL https://bridgesllm.ai/install.sh | sudo bash -s -- --updateThe Dashboard update button works normally from 4.0.19 onward.
Fixed
The Dashboard update button works again. 4.0.17 introduced an authenticated update launcher that is handed to systemd-run. systemd rewrites its own escapes before Bash ever parses the text: $$ collapses to a literal $, and ${...} is replaced with the unit environment value — empty for anything the shell owns.
That silently turned /proc/$$/fd/3 into /proc/$/fd/3, which is not a path, and blanked both the release key fingerprint and a size check. Every in-portal update failed immediately at step 1 with:
/usr/bin/stat: cannot statx '/proc/$/fd/3': No such file or directory
No release was downloaded and nothing was installed. 4.0.18 inherited the same launcher. 4.0.16 predates it, which is why 4.0.16 → 4.0.17 succeeded and 4.0.17 onward could not update at all.
The launcher no longer contains any construct systemd can rewrite. File descriptors are named with /dev/fd/N, the argument list is capped at nine so no ${10} is required, and the single parameter expansion has been replaced.
Nothing about the security of the update path changed. The fd-to-path identity comparison, release key fingerprint, both ed25519 signatures, manifest schema and version, and installer version are all still verified before any downloaded installer executes.
Testing
Added a regression suite asserting both launcher scripts are byte-identical under systemd argument expansion, so any future $$ or ${...} fails immediately. The model of systemd's behaviour is itself verified against the running systemd-run, so it cannot drift silently.
The fix was confirmed by driving the real launcher through systemd-run against real signed artifacts: the shipped constructs reproduce exit 70 and the exact statx error above, while the corrected ones pass every authentication step.
4.0.17 and 4.0.18 have both been withdrawn. Their signed artifacts were removed from this repository and from https://bridgesllm.ai/releases/, which now return 404 — 4.0.17 because it held every signed-in user at the workspace curtain, and 4.0.18 because it inherited the broken update launcher described above and left hosts unable to update themselves again. Both tags and their source history are intentionally left in place; they record what shipped.