Skip to content

Install remote hosts with one shell script - #1133

Merged
thesiti92 merged 6 commits into
mainfrom
remote-install-script
Oct 15, 2026
Merged

thesiti92 merged 6 commits into
mainfrom
remote-install-script

Conversation

@thesiti92

@thesiti92 thesiti92 commented Oct 14, 2026 •

Copy link
Copy Markdown
Contributor

Replaces the remote installer's seven SSH round trips, and the separate dev and hand-install paths, with one POSIX script: packages/review/remote/install.sh.

  • Desktop pipes the copy in its bundled runtime: one SSH call each to probe, install or update, and uninstall. Progress lines still drive Settings.
  • Hand installs use the same file, published beside the tarballs: curl -fsSL https://install.dev.fast/releases/<v>/remote/install.sh | sh -s -- --version <v>. They land in Desktop's layout, so Desktop updates them. An old symlinked hand install is adopted.
  • The dev install runs it with --file.
  • The on-disk layout, lock and marker are unchanged, so older Desktops and whiteboard remote uninstall keep working.
  • Updates without asking on a host with an install Desktop recognises, as VS Code updates its server; a whiteboard the user put on PATH still gets the question. Folded from Update Desktop's own remote installs without asking #1032, which this replaces.
  • Removes the per-arch target field the old hand hint needed. CI runs shellcheck on the script.

Test plan

  • Remote host, installer, probe and uninstall unit tests run the real script under /bin/sh (162 pass).
  • Container tests (WB_TEST_CONTAINERS=1), 17 pass, including new ones: an update installs beside the old version and moves the launcher; a hand install through the published script is recognised and updated; the old hand layout is adopted.
  • remote-install journey: all 12 checks, including the update (step 7), uninstall (step 10) and the hand-install line (step 11).
  • pnpm lint, typecheck (only the known diffr/packages/claude-code failure), shellcheck.

@thesiti92
thesiti92 force-pushed the remote-install-script branch from a14a08e to 6b8ac0e Compare October 14, 2026 22:06
packages/review/remote/install.sh probes, installs, updates and uninstalls in one ssh call each. Desktop pipes the copy it bundles, the release publishes it beside the tarballs for hand installs, and the dev install runs it, so all three write Desktop's layout and Desktop updates them.
Folded from #1032: a host with a Desktop or install.sh install updates like VS Code's server; a CLI the user put on PATH still gets the question.
The lock wait ran on the host with nothing written to Desktop, so an
install Desktop had abandoned kept polling for up to fifteen minutes,
then took the lock and could remove a version before its first heartbeat
failed. The wait now beats like `guard` does, and stops at once. The
heartbeat is silent on a hand install, which used to print a dot a
second on stdout.

An option without a value tripped `shift 2`: a bare shell error under
dash, an endless loop where sh is bash. `release` without `--token`
dropped a lock whose token was never written. Both now fail with a
reason, which `fail` always prints on stderr.

The dev install reads the version directory off the DONE line instead of
assuming the default root, and shows the script's reason when it fails.
A test ties the script's layout constants to the protocol's.
@thesiti92
thesiti92 force-pushed the remote-install-script branch from 53c86bd to fdc04b8 Compare October 15, 2026 00:41
@thesiti92
thesiti92 marked this pull request as ready for review October 15, 2026 00:56
@thesiti92
thesiti92 merged commit 618cfff into main Oct 15, 2026
6 checks passed
@thesiti92
thesiti92 deleted the remote-install-script branch October 15, 2026 01:08
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants