Skip to content

fix(sync): route brew installs through InstallWithProgress#96

Merged
fullstackjam merged 1 commit into
mainfrom
fix/sync-progress-bar
May 19, 2026
Merged

fix(sync): route brew installs through InstallWithProgress#96
fullstackjam merged 1 commit into
mainfrom
fix/sync-progress-bar

Conversation

@fullstackjam
Copy link
Copy Markdown
Collaborator

Summary

  • openboot install invoked with a saved sync source (the normal "resume last sync" path) was going through sync.Execute → bare brew.Install / brew.InstallCask, which pipes brew's raw non-TTY output straight through. Result: no StickyProgress bar, no byte-level cask download tracking — same binary as curl|bash but visibly different UX.
  • Wizard path (curl|bash, first-time install) uses brew.InstallWithProgress and renders the bar correctly. This PR unifies the two paths by routing the sync flow's formulae+casks through the same call.
  • Tap and npm steps stay separate (different package managers, different concerns). Dry-run counts preserved: len(formulae) + len(casks) on success, 0 on early error — matches the existing executeSyncStep semantic and keeps test/integration/sync_integration_test.go passing unchanged.

Test plan

  • go vet ./... — clean
  • make test-unit — full L1 passes (including TestIntegration_Execute_DryRun_* which assert per-step install counts)
  • Manual: clear a cask's brew cache (rm -f "$(brew --cache --cask <name>)"*), run ./openboot install with a sync source pointing at a config that includes that cask, confirm the StickyProgress bar fills as bytes accumulate

The sync flow (used by `openboot install` when a saved sync source
exists) called brew.Install / brew.InstallCask directly, bypassing the
StickyProgress + CacheTracker path that the wizard flow uses. The visible
symptom: re-running `openboot install` showed brew's raw `Cask X #
Downloading 425.8MB/ 2.9GB` output instead of the byte-proportional
progress bar — even though curl|bash (first-time install) rendered it
fine.

Run formulae and casks through brew.InstallWithProgress as a single
combined step. Tap and npm steps stay separate. Dry-run counts are
preserved (per-category lengths summed on success, 0 on early error).
@fullstackjam fullstackjam merged commit 0a493d2 into main May 19, 2026
12 checks passed
@fullstackjam fullstackjam deleted the fix/sync-progress-bar branch May 19, 2026 15:40
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.

1 participant