Skip to content

Add one-command verified installers for Linux, macOS and Windows - #29

Merged
timcash merged 2 commits into
mainfrom
feat/one-command-install-27
Nov 11, 2026
Merged

timcash merged 2 commits into
mainfrom
feat/one-command-install-27

Conversation

@timcash

@timcash timcash commented Nov 10, 2026 •

Copy link
Copy Markdown
Owner

Closes #27
Closes #28

What changed

  • Short README begins with one pasteable command for Unix and one for Windows.
  • Bootstrap commands require a successful script download before executing it.
  • Per-user installers use a single explicit release version, verify SHA-256, preserve prior installations on failure, and never start or join a node.
  • Full guide moved to docs, with platform support, version/custom-directory options, PATH, trust model, and managed-update behavior.
  • Native fixtures and actual release download/checksum/isolated --help tests cover Linux x64/ARM64, macOS ARM64 and Windows x64.

Collaboration and review

Sol (gpt-6.1-sol) and Opus (claude-opus-5-5) worked through AI app router on Legion. Opus's replacement/TLS review findings were fixed; Sol independently approved final commit 80af920c3c045bb19f3aab9378004ce1fd147d8f after its downloader-failure finding was regression-tested and fixed. No remaining blocking findings.

Verification

All seven native CI jobs passed on the exact final SHA: https://github.com/timcash/dialtone/actions/runs/42866855773

  • Installer fixture suites: 26 passed on each Unix family; 29 passed on each Windows PowerShell edition, with platform-specific intentional skips.
  • Each OS/architecture family downloaded the real v0.5.3 release, verified checksum and ran only --help under isolated state.
  • Full Linux verification and macOS/Windows integration suites passed; platform-specific ignored tests are visible in CI logs.
  • Local lint/fmt/Clippy/leak/documentation checks passed.

Live Legion/Metal processes, configuration and membership were not modified. Initial install provides HTTPS checksum integrity; release-key-signed managed-node update trust is unchanged.

Limits

Published binaries cover Linux x64/ARM64, macOS Apple Silicon and Windows x64. Intel macOS, Windows ARM64 and 32-bit targets remain unsupported. Linux ARM64 uses GNU/glibc; no unverified minimum version is claimed.

…indows (#27)

- install.sh / install.ps1: download one pinned tag (default v0.5.3), validate
  the .sha256 record, replace atomically (Windows: backup + recovery copy),
  start nothing; refuse unsupported OS/architectures before downloading
- README is now the install commands; the old guide moves to docs/guide.md and
  install details, trust model and fallbacks to docs/install.md
- Windows one-liner fetches the script with the built-in curl.exe, so legacy
  PowerShell 5.1 TLS defaults do not apply; failed or cut-off downloads install
  nothing
- tests/installers.py: local fixture tests (PS 5.1, PS 7, sh) and an opt-in
  live v0.5.3 download that re-checks the checksum and runs only --help with
  isolated state; CI runs both on Linux x64/arm64, macOS arm64 and Windows x64
- ./dialtone.sh test --only installers runs the fixture tests

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

timcash commented Nov 10, 2026

Copy link
Copy Markdown
Owner Author

Native installer CI passed on all four supported families, including the real published binary download/checksum/isolated --help smoke.

Sol's independent final review found one bootstrap edge to address before merge: a transfer that returns parseable script text but exits nonzero can still be executed by the short pipe/iex forms. The fix will require successful script download before execution, keeping a single pasteable command per shell and extending truncated-transfer regression coverage. No other blocking installer findings remain. Full repository CI is still running.

…ds (#27)

curl | sh and iex (curl.exe ... | Out-String) run whatever bytes arrived even when
curl fails: a 404 exited 0, and a complete script cut short before the promised
length installed. Both README one-liners and the pinned forms in docs/install.md
now keep the script in memory and run it only when curl succeeded:

  sh -c 's=$(curl -fsSL .../install.sh) && eval "$s"'
  $s = curl.exe -fsSL .../install.ps1 | Out-String; if ($LASTEXITCODE) { throw ... }; iex $s

The README tests now run on sh as well as PowerShell, add a complete-but-short
download (must fail, request nothing, install nothing), and run the documented
pinned one-command forms.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

timcash commented Nov 10, 2026

Copy link
Copy Markdown
Owner Author

Fixed the downloader-status finding in 80af920c3c045bb19f3aab9378004ce1fd147d8f. Both README commands now download fully into memory and require curl success before execution. Regression tests cover 404, multiple truncation points, and a parseable script with an incomplete declared transfer. The old commands demonstrably fail these regressions; the corrected commands pass.

Local final tests: PowerShell 5.1 and 7 each 29 passed/4 intentional skips, Git Bash 25 passed/8 intentional skips, lint passed. Native CI is rerunning on the new SHA; Sol is rechecking the exact fix. Existing install scripts and signed-update trust are unchanged by this correction.

timcash commented Nov 10, 2026

Copy link
Copy Markdown
Owner Author

Sol's independent exact-commit review APPROVED 80af920c3c045bb19f3aab9378004ce1fd147d8f with no remaining blockers. It verified the downloader-status fix and regression coverage. Opus's earlier installer findings are also resolved.

Final-SHA native Linux x64, Linux ARM64, and Windows installer jobs have passed. macOS is queued, and full repository checks are running. Merge remains gated on completion of this CI run: https://github.com/timcash/dialtone/actions/runs/42866855773

@timcash
timcash marked this pull request as ready for review November 10, 2026 17:41
@timcash
timcash merged commit e75febb into main Nov 11, 2026
7 checks passed
@timcash timcash mentioned this pull request Nov 11, 2026
5 tasks done
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.

Review and verify the one-command installer with Opus Simplify cross-platform installation with Sol and Opus

1 participant