A double-clickable macOS app, so no terminal is required - #2
Merged
Conversation
The repo was professional but the install was still developer-shaped: open a terminal, paste a curl command, wait. This adds Bitcoin Vibes.app. - contrib/vibes/macos/build-app.sh builds the bundle (and --dmg). The app is a 452K launcher, not the node: on first open it fetches the source into ~/Library/Application Support/Bitcoin Vibes and the console compiles the node there, so the app stays small and updates itself on each launch by fast-forward only -- never clobbering local decrees. - launcher.sh restores a usable PATH (Finder gives almost none), finds python3, and reports every failure in a native dialog instead of into the void. If Apple's command line tools are missing it triggers the installer rather than failing mysteriously. - the console gains --app: with no terminal to print to, first-run setup runs as an ordinary streamed job and the operator watches dependency installation and the build in the browser, on a progress bar, in the same marble UI as everything else. Verified: the bundle registers as com.apple.application-bundle, is ad-hoc signed, and the launcher clones and starts the console from a clean home directory. Not notarised, so Gatekeeper wants right-click -> Open the first time. Said plainly in the docs rather than papered over. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
…minal Also gitignores dist/, the app build output. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Setup announced 'Your node is ready' while bitcoind had already died on startup — found while testing the app against a machine that already had a node on the regtest ports. Any user whose node fails for any reason (port taken, datadir locked, disk full) would have been told it worked. start_node now waits for the node to actually answer RPC before reporting success, gives up if the process exits first, and surfaces bitcoind's own last error line. Setup treats a failed start as a failed setup instead of congratulating the operator. Verified both directions: with the ports taken it reports ok:false and explains why; on a free machine it still starts and reports height. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What this changes
Adds Bitcoin Vibes.app — a double-clickable macOS launcher, so running a
node no longer requires opening a terminal.
Why
The repo reads like a professional project, but the front door was still
curl … | sh. That is a wall for exactly the people this project claims to befor. This removes it.
The app is a 452K launcher, not the node. On first open it fetches the source
into
~/Library/Application Support/Bitcoin Vibes, and the console compiles thenode there — so the bundle stays small, and each launch fast-forwards the source
without ever clobbering local decrees.
The interesting part is
--app: with no terminal to print to, first-run setupbecomes an ordinary streamed job, and the operator watches dependency
installation and the build in the browser, on a progress bar, in the same
marble UI as everything else.
How you tested it
com.apple.application-bundle, ad-hoc signeddetected no binary, and streamed
setup → buildinto the browserpython3 -m py_compile,sh -non both new scriptsChecklist
python3 -m py_compile contrib/vibes/bitcoin-vibessh -non the new scriptsrole="status"live region and reads at 375pxsrc/touched? No — consensus untouched, a fresh install is still stock CoreKnown limitation
Not notarised, so Gatekeeper asks for right-click → Open on first launch. Stated
plainly in the docs rather than papered over. Notarising needs an Apple Developer
account and is a separate change.