Skip to content

Releases: AojdevStudio/dev-bootstrap

v1.4.0 — pnpm + Windows Terminal + CLI utilities

16 Apr 20:51
20486aa

Choose a tag to compare

Broadened the Windows bootstrap to cover common daily-driver tools. Ten new packages across three categories.

Added

Package managers

  • pnpm activated via Corepack (bundled with Node ≥16.10). No global npm install — Corepack manages pnpm as a shim that tracks each project's packageManager field in package.json, avoiding cross-project version drift. Falls back to npm install -g pnpm if Corepack is unavailable.

Terminal + base tools

  • Windows Terminal (Microsoft.WindowsTerminal) in the Base tools section. Default on Windows 11; useful for Windows 10 users still on conhost.exe.

CLI utilities (new section)

Tool Winget ID Purpose
ripgrep BurntSushi.ripgrep.MSVC fast grep replacement (also used internally by Claude Code)
fd sharkdp.fd fast find replacement
bat sharkdp.bat cat with syntax highlighting
jq jqlang.jq JSON processor
fzf junegunn.fzf command-line fuzzy finder
lazygit JesseDuffield.lazygit TUI for git (matches macOS bootstrap)
yazi sxyazi.yazi TUI file manager (matches macOS bootstrap)
PowerToys Microsoft.PowerToys Windows power-user utility bundle

Notes

  • First-time runs on a clean machine now take noticeably longer because of the additional installs. Re-runs remain idempotent — WinGetInstall short-circuits when each package is already present, so re-running costs nothing.
  • PowerToys is a large install (~200MB) that ships several Windows-wide utilities. If you don't want it, comment out the corresponding WinGetInstall "Microsoft.PowerToys" line in your local copy of bootstrap.ps1 before running.

Upgrade

Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass -Force; irm https://raw.githubusercontent.com/AojdevStudio/dev-bootstrap/main/bootstrap.ps1 | iex

Then verify:

pnpm --version
rg --version
lazygit --version
wt.exe --version  # Windows Terminal

Full Changelog: v1.3.0...v1.4.0

v1.3.0 — GitHub CLI + fully idempotent re-runs

16 Apr 20:16
126bce1

Choose a tag to compare

Re-running the installer should do nothing when everything's already in place. This release tightens every step so that's true, and adds the GitHub CLI that a dev environment was missing.

Added

  • GitHub CLI (gh) installed via winget (GitHub.cli) in the Base tools section. Run gh auth login after install to sign in.

Fixed — idempotent re-runs

Previous runs printed noise like Installing Node v24.15.0 immediately followed by warning: Version already installed. Every step now short-circuits when the work is already done:

  • fnm install --lts — skipped when fnm list reports any installed Node.
  • uv python install 3.12 — skipped when uv python find 3.12 already resolves.
  • npm install -g @openai/codex — skipped when npm ls -g @openai/codex shows it's already installed.

Migration cleanup

If you ran v1.1.x or earlier, Claude Code was installed via npm. After upgrading to v1.2.0, you may have ended up with both the npm and winget versions of claude on PATH. The Claude Code section now detects and uninstalls the npm version silently before the native winget binary is installed, so there's only one claude executable.

You can verify after re-running:

Get-Command claude -All

Upgrade

Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass -Force; irm https://raw.githubusercontent.com/AojdevStudio/dev-bootstrap/main/bootstrap.ps1 | iex

Full Changelog: v1.2.0...v1.3.0

v1.2.0 — Claude Code via native winget binary

16 Apr 19:55
1a09fd7

Choose a tag to compare

Install-method upgrade: Claude Code now installs as a native binary via WinGet, replacing the deprecated npm install path. This eliminates an entire class of fnm/npm PATH fragility bugs that drove the v1.1.0–v1.1.2 patch releases and aligns with Anthropic's upstream recommendation.

Changed

  • Claude Code: winget install Anthropic.ClaudeCode (was: npm install -g @anthropic-ai/claude-code). Anthropic's setup docs now mark npm installation as deprecated. WinGet is chosen over the irm https://claude.ai/install.ps1 | iex native installer because it preserves the proxy-compatibility contract of commit d24ad9b — Zscaler and similar proxies block piped remote execution.
  • README + SECURITY.md install-source tables updated to match.

Why it matters

The previous npm install path required fnm to be correctly activated in the same session, npm to be on PATH, npm's global prefix to be on PATH after install, and the fnm multishell junction to survive every intervening winget/RefreshPath call. Each of those was its own fragility source. The native binary has none of those dependencies.

Manual update

The irm | iex native installer auto-updates Claude Code in the background. The winget install does not. Run this periodically to stay current:

winget upgrade Anthropic.ClaudeCode

Users who prefer auto-updates and are not behind a proxy that blocks iex can install manually via irm https://claude.ai/install.ps1 | iex instead.

Codex CLI

OpenAI does not publish a winget package for Codex CLI. Codex CLI still installs via npm install -g @openai/codex, with the fnm re-activation guard and explicit \$LASTEXITCODE check from v1.1.1 preserved.

Upgrade

Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass -Force; irm https://raw.githubusercontent.com/AojdevStudio/dev-bootstrap/main/bootstrap.ps1 | iex

If you already have Claude Code installed via npm, you'll briefly have both versions. Remove the npm one when ready:

npm uninstall -g @anthropic-ai/claude-code

Full Changelog: v1.1.2...v1.2.0

v1.1.2 — WSL iex invocation + reboot detection fixes

16 Apr 19:51
13719f5

Choose a tag to compare

Patch release addressing two WSL-path bugs surfaced during live Windows 11 testing of v1.1.1.

Fixed

  • WSL irm | iex invocation crash. $repoRoot = Split-Path -Parent $PSCommandPath threw Cannot bind argument to parameter 'Path' because it is an empty string when the installer was piped through irm | iex$PSCommandPath is empty in that case because there is no script file on disk. The wsl/setup.sh second-phase invocation now guards on $PSCommandPath being populated and pointing at a real file. When invoked via irm | iex, the script prints clone-and-run instructions for finishing WSL-side setup manually.

  • Broader reboot-required detection. wsl --install on a fresh Windows 11 machine emits Changes will not be effective until the system is rebooted. — past-tense phrasing that the v1.1.1 regex did not catch. The regex is now broadened to match any of reboot, restart, or will not be effective until, which a clean (no-reboot-required) wsl --install never emits.

Upgrade

Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass -Force; irm https://raw.githubusercontent.com/AojdevStudio/dev-bootstrap/main/bootstrap.ps1 | iex

Full Changelog: v1.1.1...v1.1.2

v1.1.1 — Windows fnm + npm install fixes

16 Apr 19:25
690b193

Choose a tag to compare

Patch release hardening the Windows installer based on a real-world test that surfaced two bugs in v1.1.0.

Fixed

  • fnm use --lts removed. Several recent fnm builds from winget reject this flag form with error: unexpected argument '--lts' found. Because PowerShell does not halt on a native command's non-zero exit code under $ErrorActionPreference = "Stop", the script silently continued past the error. fnm install --lts already activates the version in the current shell's multishell junction, so the follow-up call was both redundant and broken.

  • Silent npm install -g failures now fail loudly. On a fresh install, npm install -g @anthropic-ai/claude-code produced no visible output and Need claude later threw a confusing Missing command: claude error. The Claude Code and Codex sections now:

    1. Re-activate fnm (fnm env --use-on-cd --shell powershell | iex) immediately before each npm install -g call, so the multishell junction is guaranteed to be on PATH even after earlier winget calls.
    2. Check \$LASTEXITCODE after the npm install and throw a clear error when it's non-zero, so silent failures surface immediately instead of cascading to a misleading "Missing command" message one section later.

Upgrade

Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass -Force; irm https://raw.githubusercontent.com/AojdevStudio/dev-bootstrap/main/bootstrap.ps1 | iex

Full Changelog: v1.1.0...v1.1.1

v1.1.0 — macOS bootstrap + Windows reliability fixes

16 Apr 18:44

Choose a tag to compare

Highlights

This release adds first-class macOS support and hardens the Windows installer against real-world friction on managed, school, and enterprise machines.

Added

  • macOS bootstrap (macos/bootstrap.sh) — Homebrew-driven install of the full toolchain
  • macOS extras: lazygit and yazi
  • WSL now installs chromium-browser via apt for Playwright / headless workflows
  • ChatGPT custom-instructions builder prompt (prompts/)
  • SECURITY.md policy

Fixed (Windows bootstrap.ps1)

  • PATH now merges session + registry scopes instead of overwriting — fnm's in-session Node dir survives later RefreshPath calls
  • winget idempotency — require both exit code AND package-id match (winget can exit 0 with "No installed package found" on some versions)
  • Profile snippet upgrades in place on re-runs instead of stacking
  • fnm is invoked with --shell powershell, eager-activates the default Node, and resolves the concrete LTS version (avoids the fragile lts-latest alias — see Schniz/fnm#1203)
  • Python — uv's managed Python dir is prepended to PATH so the Microsoft Store python.exe alias in WindowsApps stops shadowing the real interpreter
  • WSL — detects "reboot required" from wsl --install and bails out cleanly with next-step guidance

Changed

  • Windows install one-liner now prefixes Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass -Force; so it works on managed machines where the default Restricted policy blocks iex
  • README documents the uv run python pattern and why it's needed on Windows
  • Replaced irm | iex installers with winget/npm to bypass corporate proxies (e.g., Zscaler)
  • Corrected GitHub org URLs throughout README (Jarvis-AojDevStuioAojdevStudio)

Install

Windows (PowerShell):

Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass -Force; irm https://raw.githubusercontent.com/AojdevStudio/dev-bootstrap/main/bootstrap.ps1 | iex

macOS (Terminal):

curl -fsSL https://raw.githubusercontent.com/AojdevStudio/dev-bootstrap/main/macos/bootstrap.sh | bash

Full changelog: v1.0.0...v1.1.0

v1.0.0 - Initial Stable Release

04 Feb 20:11
5c1da99

Choose a tag to compare

dev-bootstrap v1.0.0

Initial stable release of dev-bootstrap -- a Windows developer environment bootstrap tool that automates installation and configuration of essential development tools.

Highlights

  • Automated PowerShell bootstrap script (bootstrap.ps1) -- one-command setup for a complete Windows dev environment
  • WSL setup script (wsl/setup.sh) -- Linux environment configuration for WSL users
  • Tool chain -- Git, Node.js (via fnm), Python, VS Code, Docker Desktop, and Windows Terminal
  • Comprehensive documentation -- architecture diagram, 7-phase walkthrough, FAQ, and contributing guide
  • AI agent configuration -- AGENTS.md and skills for Claude Code, Codex CLI assisted development

Full Changelog

See CHANGELOG.md for details.