Skip to content

feat(scripts): bootstrap.sh — full macOS/Linux port#35

Open
abdout wants to merge 2 commits into
feat/engine-integrationfrom
feat/bootstrap-sh
Open

feat(scripts): bootstrap.sh — full macOS/Linux port#35
abdout wants to merge 2 commits into
feat/engine-integrationfrom
feat/bootstrap-sh

Conversation

@abdout
Copy link
Copy Markdown
Contributor

@abdout abdout commented May 16, 2026

Summary

Real cross-platform parity for the headline cold-start command. bootstrap.sh mirrors bootstrap.ps1's 16-step idempotent flow, with brew + launchd + osascript replacing winget + schtasks + BurntToast.

Canonical pastes — both now do the same thing

# macOS / Linux
curl -fsSL https://kun.databayt.org/install.sh | bash
# Windows
irm https://kun.databayt.org/install | iex

Both run the same 16-step flow, hit the same exit codes, set up the same shell aliases, arm the same scheduled task, end with the same doctor verification.

What's in the PR

  • ~/.claude/scripts/bootstrap.sh (440 lines) — full port
  • next.config.ts/install.sh and /finish.sh now point at bootstrap.sh (was onboarding-mac.sh)
  • finish.sh — forwards to bootstrap.sh with onboarding-mac.sh as legacy fallback

Test plan

  • bash -n bootstrap.sh passes
  • Fresh macOS: curl -fsSL kun.databayt.org/install.sh | bash end-to-end
  • Linux: same paste, skip launchd step, complete with cron note
  • bootstrap.sh --dry-run walks all 16 steps without side effects
  • Plugin pre-drop works via Marketplace API (same endpoints as Drop-Plugin.ps1)

Dependencies

Stacks on feat/engine-integration (PR #34). Merge order:

#29 → #30 → #31 → #32 → #33 → #34 → this PR → #25

🤖 Generated with Claude Code

…ap.ps1

16-step idempotent flow with brew, launchd, osascript. Real cross-
platform parity for the headline cold-start command. Now both pastes
do the same architectural thing:

  curl -fsSL https://kun.databayt.org/install.sh | bash    # macOS/Linux
  irm https://kun.databayt.org/install | iex               # Windows

bootstrap.sh:
- Same 16 steps as bootstrap.ps1, same exit codes
- brew (with Homebrew auto-install) instead of winget
- npm install -g @anthropic-ai/claude-code for the CLI
- brew install --cask claude / webstorm for the GUI apps
- launchd via maintain.sh --install (Linux warns and skips)
- Marketplace plugin pre-drop using the same JetBrains API
  endpoints verified for Drop-Plugin.ps1
- sudo cache warm-up at step 1 (analog of UAC self-elevation)
- macOS vs Linux detection — package manager fallback chain
  (brew → apt-get → dnf)

next.config.ts redirects updated:
  /install.sh   → bootstrap.sh (was onboarding-mac.sh)
  /finish.sh    → bootstrap.sh

finish.sh now forwards to bootstrap.sh (with onboarding-mac.sh as
a back-compat fallback if bootstrap.sh isn't installed yet).

bash -n syntax-clean. True macOS/Linux validation needs the
respective machines.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@vercel
Copy link
Copy Markdown

vercel Bot commented May 16, 2026

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
kun Ready Ready Preview, Comment May 16, 2026 4:45pm

git clone returns exit code on failure, not a PowerShell exception,
so the original try/catch never triggered the HTTPS fallback when
SSH host key verification failed. Switched to explicit $LASTEXITCODE
check.

Surfaced on a real machine during the v2 onboarding readiness sweep:
the user's install.ps1 attempted git@github.com clone, the host key
wasn't in known_hosts, the clone failed silently with no fallback,
and the user was left without ~/codebase.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
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