fix(install): show download progress (60MB binary looked stuck)#37
Conversation
install.sh downloaded the ~60MB Bun binary with 'curl -fsSL' (silent), so after 'Installing insta…' it showed nothing for the whole download and read as a hang (user report). Now --progress-bar to a TTY (quiet when piped without one), and the message states the size. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01GMbAe5K1RfwaAcge5inX7P
|
Bugbot is not enabled for your account, so this pull request was not reviewed. Enable Bugbot in the Cursor dashboard to get automatic reviews on future PRs. |
jwfing
left a comment
There was a problem hiding this comment.
Review: fix(install): show download progress
Summary: A tightly-scoped, correct fix that shows a curl progress bar for the ~60MB binary download when stderr is a TTY and stays silent when piped headless — exactly matching the reported "looked stuck" scenario.
Requirements context: No matching spec/plan found — this repo has no docs/superpowers/ or docs/specs/ directory, so I assessed against the PR description and the surrounding install.sh logic alone.
Findings
Critical
(none)
Suggestion
- Functionality —
install.sh:88-89: in the TTY branch-sis dropped (correctly, so--progress-barisn't suppressed), but this also un-silences curl's own error output. On a failed download the user now sees curl's native error and then the script'serror: download failed (...)line — a minor double message. Purely cosmetic; if you want a single clean error you could keep-Salongside--progress-bar. Non-blocking.
Information
- Functionality —
install.sh:88: the[ -t 2 ]gate is the right test. Incurl … | sh,sh's stdin is the pipe but fd 2 stays the inherited terminal, so the progress bar shows in the exact interactive case that motivated this PR, while genuinely headless runs (CI, no TTY on stderr) fall through to-fsSLand stay quiet.-Lis retained on both paths (needed for the GitHub→S3 redirect). Verified correct. - Software engineering —
install.sh:89:$dlis expanded unquoted to intentionally word-split the flags into the command (SC2086). This is the idiomatic approach in POSIXsh(no arrays) and is safe here sincedlis built from string literals only. CI runs typecheck + vitest with no shellcheck, so this won't trip a gate; noting for awareness. - Software engineering —
install.shhas no automated test coverage in this repo (the vitest suite exercises the TS CLI, not the installer). This is pre-existing and not a regression from this PR; a quick manual smoke of both the piped (curl | sh) and fully-redirected (… 2>/dev/null) paths is worth doing before merge. - Security / Performance — no security-relevant changes (no new user input, no secrets, checksum verification untouched) and no performance considerations (one-time installer).
Verdict
approved — no Critical findings; the two notes above are non-blocking. (Informational verdict for the review bot; the GitHub green-check approval remains a separate human action.)
User report:
curl … | shprinted 'Installing insta…' then appeared to hang. Not hung — install.sh downloaded the ~60MB Bun binary withcurl -fsSL(silent, no progress bar), so the biggest step showed zero output for 15-40s. Now uses--progress-barwhen stderr is a TTY (stays silent when piped headless), and the message states the ~60MB size. install.sh is served from main (raw/CloudFront), so this is live on merge — no CLI release needed.🤖 Generated with Claude Code
https://claude.ai/code/session_01GMbAe5K1RfwaAcge5inX7P
Summary by cubic
Show a progress bar during the ~60MB binary download in install.sh so the install doesn’t look stuck. Use
curl --progress-baronly when stderr is a TTY; keep non-interactive runs quiet withcurl -fsSL, and keep the SHA256SUMS fetch silent.Written for commit b759ba4. Summary will update on new commits.