All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
- Windows: Docker Desktop now installs via WinGet (
Docker.DockerDesktop) after WSL is available. Runs with the default WSL-enabled bootstrap path and is skipped when-SkipWSLis used; the finish message prints manual Docker setup steps for skipped/deferred installs. - Domain docs and ADR scaffolding for installer behavior decisions.
- Windows: Claude Code now uses Anthropic's auto-updating native installer (
https://claude.ai/install.ps1) instead of the WinGet package, so fresh installs receive Claude Code background updates. Existing npm or WinGet Claude installs are removed first to avoid PATH conflicts. - Windows: Codex CLI now runs
npm install -g @openai/codex@lateston every run so stale global installs are upgraded.
- Windows:
uv python find 3.12no longer aborts a fresh install withNativeCommandErrorwhen Python 3.12 is absent; the expected miss is probed with stderr muted beforeuv python install 3.12runs. - Windows: elevated self-relaunch now works from the documented
irm ... | iexone-liner by re-running the canonical bootstrap URL when no local script path exists.
1.4.0 - 2026-04-16
- pnpm activated via Corepack (bundled with Node ≥16.10). No global
npm install— pnpm is managed as a Corepack shim, which plays nicely with per-projectpackageManagerfields inpackage.json. Falls back tonpm install -g pnpmifcorepackisn't available. - Windows Terminal (
Microsoft.WindowsTerminal) added to Base tools. Default on Windows 11, useful for Windows 10 users who are still onconhost.exe. - CLI utilities section with eight tools:
ripgrep(BurntSushi.ripgrep.MSVC),fd(sharkdp.fd),bat(sharkdp.bat),jq(jqlang.jq),fzf(junegunn.fzf),lazygit(JesseDuffield.lazygit),yazi(sxyazi.yazi), andPowerToys(Microsoft.PowerToys). lazygit and yazi match the macOS bootstrap. ripgrep is also used internally by Claude Code.
- First-time runs on a clean machine now take noticeably longer because of the additional installs. Re-runs remain idempotent —
WinGetInstallshort-circuits when each package is already present. - PowerToys is a large install (~200MB) that ships several Windows-wide utilities (Run, FancyZones, PowerRename, etc.). Skip via
-SkipWSLis unrelated; if you don't want PowerToys, comment out the corresponding line inbootstrap.ps1before running.
1.3.0 - 2026-04-16
- GitHub CLI (
gh) installed via winget (GitHub.cli) in the Base tools section. Lets you authenticate with GitHub and interact with repos from the terminal without leaving the installer.
- Re-runs no longer duplicate work that's already done.
fnm install --ltspreviously emittedInstalling Node vX.Y.Zfollowed immediately bywarning: Version already installed; it's now skipped when fnm reports any installed Node.uv python install 3.12is now gated onuv python find 3.12exit code — skipped when 3.12 is already managed.npm install -g @openai/codexis now gated onnpm ls -g @openai/codex— skipped when already installed. - Claude Code migration from npm (pre-v1.2.0) is now automatic. On re-run, if
@anthropic-ai/claude-codeis still present via npm, it is silently uninstalled before the native winget binary resolves, so there's only oneclaudeon PATH.
1.2.0 - 2026-04-16
- Windows: Claude Code now installs as a native binary via winget (
Anthropic.ClaudeCode) instead of vianpm install -g @anthropic-ai/claude-code. Anthropic's documentation marks npm installation as deprecated and recommends the native installer. WinGet was chosen over theirm https://claude.ai/install.ps1 | iexnative installer because it preserves the proxy-compatibility promise of commitd24ad9b(Zscaler and similar proxies blockirm | iex). This eliminates an entire class of fnm/npm PATH fragility bugs that drove v1.1.0 through v1.1.2 patch releases. - README + SECURITY.md install-source tables updated to reflect the new Claude Code install path.
- Manual updates for Claude Code. The
irm | iexnative installer auto-updates Claude Code in the background; the winget install does not. Runwinget upgrade Anthropic.ClaudeCodeperiodically to stay current. Users who prefer auto-updates and are not behind a proxy that blocks piped remote execution can install viairm https://claude.ai/install.ps1 | iexinstead. - Codex CLI still installs via npm. OpenAI does not publish a winget package for Codex CLI.
1.1.2 - 2026-04-16
- Windows: WSL section no longer crashes with
Cannot bind argument to parameter 'Path' because it is an empty stringwhen the installer is invoked viairm | iex.$PSCommandPathis empty in that case, so the wsl/setup.sh second-phase step now guards on script-on-disk and prints clone-and-run instructions otherwise. - Windows: reboot-detection regex on
wsl --installoutput now matches the commonChanges will not be effective until the system is rebootedphrasing (previous regex only caughtreboot is required/reboot your computervariants and missed past-tenserebooted).
1.1.1 - 2026-04-16
- Windows: removed
fnm use --ltscall that several recent fnm builds from winget reject withunexpected argument '--lts' found.fnm install --ltsalready activates the version in the current shell, so the follow-up call was both redundant and broken. - Windows: Claude Code and Codex install sections now re-activate fnm before calling
npm install -g, then check$LASTEXITCODEand throw a clear error when npm fails. Prevents silent failures where the script continued and halted later with a confusing "Missing command: claude" message.
1.1.0 - 2026-04-16
- macOS bootstrap script (
macos/bootstrap.sh) with Homebrew-driven install of the full toolchain, plus structure checks for the repo - macOS extras:
lazygitandyaziinstalled via Homebrew - WSL provisioning now installs
chromium-browservia apt for Playwright/headless workflows - ChatGPT custom-instructions builder prompt under
prompts/ SECURITY.mdpolicy and an[Unreleased]section in the changelog
- Windows: hardened
bootstrap.ps1against real-world friction on managed/school/enterprise machines — PATH now merges (not overwrites) session and registry scopes so fnm's Node stays resolvable; winget install checks now require both exit code and package-id match for idempotency; thedev-bootstrap: fnmprofile snippet upgrades in place on re-runs; fnm is invoked with--shell powershelland eager-activates the default Node sonpmworks in the home dir; the concrete LTS version is resolved rather than the fragilelts-latestalias; uv's managed Python dir is prepended to PATH so the Microsoft Storepython.exealias inWindowsAppsstops shadowing the real interpreter;wsl --installnow detects "reboot required" output and bails out cleanly with next-step guidance - Replaced
irm | iexinstallers with winget/npm to bypass corporate proxies (e.g., Zscaler) that block piped remote execution - Corrected GitHub org URLs throughout README (
Jarvis-AojDevStuio→AojdevStudio) and Buy Me a Coffee username format
- README now prefixes Windows install one-liners with
Set-ExecutionPolicy -Scope Processso the installer works on managed machines where the defaultRestrictedpolicy blocksiex, and documents theuv run pythonpattern (and why it's needed on Windows)
v1.0.0 - 2026-02-04
- Initial Windows developer bootstrap script (
bootstrap.ps1) with automated tool installation - WSL setup script (
wsl/setup.sh) for Linux environment configuration - Support for installing Git, Node.js (via fnm), Python, VS Code, Docker Desktop, and Windows Terminal
- Post-install README notes and guidance for new developers
- Sudo preflight check for WSL setup to prevent permission issues
- AGENTS.md with repository guidelines for AI-assisted development
- GitHub FUNDING.yml for project sponsorship
- Comprehensive README with project story, architecture diagram, installation walkthrough, and FAQ
- Project assets including hero banner, architecture diagram, and podcast clip
- fnm error guidance improved for clearer troubleshooting
- Installer finish messaging improved for better user experience
- WSL setup script marked as executable for proper permissions
- README overhauled from minimal stub into comprehensive project documentation
- YouTube thumbnail replaced with GitHub-hosted video embed for cleaner presentation