Skip to content

A double-clickable macOS app, so no terminal is required - #2

Merged
hotpixelgroup merged 3 commits into
masterfrom
macos-app
Jul 25, 2026
Merged

A double-clickable macOS app, so no terminal is required#2
hotpixelgroup merged 3 commits into
masterfrom
macos-app

Conversation

@hotpixelgroup

Copy link
Copy Markdown
Owner

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 be
for. 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 the
node 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 setup
becomes 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

  • Built the bundle; macOS reports it as com.apple.application-bundle, ad-hoc signed
  • Ran the launcher from an empty home directory: it cloned, started the console,
    detected no binary, and streamed setup → build into the browser
  • Confirmed the first-run screen renders (screenshot in the thread)
  • python3 -m py_compile, sh -n on both new scripts

Checklist

  • I ran it
  • Console touched? python3 -m py_compile contrib/vibes/bitcoin-vibes
  • Installer touched? sh -n on the new scripts
  • UI touched? Setup panel is a role="status" live region and reads at 375px
  • src/ touched? No — consensus untouched, a fresh install is still stock Core

Known 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.

hotpixelgroup and others added 3 commits July 25, 2026 12:21
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>
@hotpixelgroup
hotpixelgroup merged commit 6e60b0e into master Jul 25, 2026
2 checks passed
@hotpixelgroup
hotpixelgroup deleted the macos-app branch July 25, 2026 19:43
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