From 9e8241b187cc5aefe81b297c22ec18137ef484cf Mon Sep 17 00:00:00 2001 From: Claude Date: Sat, 11 Jul 2026 23:52:41 +0000 Subject: [PATCH 1/2] fix(vscode-cloud): install Bun alongside Node.js in the container image Every other language runtime (Python, Go, Rust, Java, PHP, Ruby, Node.js) gets a dedicated, reliable install step in the Dockerfile, but Bun was missing one entirely and only had a chance of being installed indirectly through the unrelated shell-setup script run much later in the build. Co-Authored-By: Claude Sonnet 5 Claude-Session: https://claude.ai/code/session_01TG2cCdrv6Bo9uUxBeyZivb --- apps/vscode-cloud/Dockerfile | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/apps/vscode-cloud/Dockerfile b/apps/vscode-cloud/Dockerfile index 68730e3..c080cd9 100644 --- a/apps/vscode-cloud/Dockerfile +++ b/apps/vscode-cloud/Dockerfile @@ -75,6 +75,12 @@ RUN curl -fsSL https://deb.nodesource.com/setup_20.x | bash - \ && apt-get install -y --no-install-recommends nodejs \ && rm -rf /var/lib/apt/lists/* +# ── Bun ─────────────────────────────────────────────────────────────────────── +# Installed system-wide (BUN_INSTALL=/usr/local) so it's on PATH for every user, +# same as the npm globals below via NPM_CONFIG_PREFIX. +RUN curl -fsSL https://bun.sh/install | BUN_INSTALL=/usr/local bash \ + && chmod -R a+rx /usr/local/bin/bun + # ── Global npm tools ────────────────────────────────────────────────────────── # AI coding CLIs + TypeScript + language servers for VS Code IntelliSense ENV NPM_CONFIG_PREFIX=/usr/local From fdc1a54ee2f150ac766b1ea527ac89f46e8e995c Mon Sep 17 00:00:00 2001 From: Claude Date: Sat, 11 Jul 2026 23:54:09 +0000 Subject: [PATCH 2/2] fix(server-shell-setup): always install bun alongside node.js Selecting the "node" component on its own (rather than "all") never pulled in bun, even though the two are meant to be paired. install_components now appends bun to the selection whenever node is present. Co-Authored-By: Claude Sonnet 5 Claude-Session: https://claude.ai/code/session_01TG2cCdrv6Bo9uUxBeyZivb --- packages/server-shell-setup/README.md | 2 +- packages/server-shell-setup/install-shell.sh | 8 +++++++- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/packages/server-shell-setup/README.md b/packages/server-shell-setup/README.md index 96d719e..26dbd0d 100644 --- a/packages/server-shell-setup/README.md +++ b/packages/server-shell-setup/README.md @@ -54,7 +54,7 @@ wget -qO- tinyurl.com/shellsetup | bash -s -- starship,docker,node | `nushell` | Data-oriented shell that handles structured data natively | | `nvim` | Neovim with [NvChad](https://nvchad.com) config pre-installed | | `helix` | Modal terminal editor written in Rust, no config needed | -| `node` | Node.js via [Volta](https://volta.sh) version manager (no sudo issues); also installs pnpm, yarn, git0, vite, turbo | +| `node` | Node.js via [Volta](https://volta.sh) version manager (no sudo issues); also installs pnpm, yarn, git0, vite, turbo, and bun | | `bun` | Fast JavaScript runtime, bundler, and package manager | | `docker` | Docker with rootless mode enabled | | `starship` | Cross-shell prompt configured for bash, fish, and nushell | diff --git a/packages/server-shell-setup/install-shell.sh b/packages/server-shell-setup/install-shell.sh index ea72f54..10d8daf 100644 --- a/packages/server-shell-setup/install-shell.sh +++ b/packages/server-shell-setup/install-shell.sh @@ -16,7 +16,7 @@ # - nushell: Data-oriented shell with structured data handling # - nvim: Neovim text editor with NvChad configuration # - helix: Modern terminal-based text editor with Rust -# - node: Node.js via Volta version manager +# - node: Node.js via Volta version manager (also installs bun) # - bun: Fast JavaScript runtime, bundler, transpiler and package manager # - pacstall: Package manager for Debian/Ubuntu (like AUR for Arch) # - docker: Docker container platform with rootless mode @@ -938,6 +938,12 @@ install_components() { # Always install base dependencies install_base_deps + # Bun pairs with Node.js; make sure it's installed whenever Node.js is, + # even if "node" was selected on its own rather than via "all" + if [[ " ${COMPONENTS[*]} " == *" node "* ]] && [[ " ${COMPONENTS[*]} " != *" bun "* ]]; then + COMPONENTS+=("bun") + fi + # Install selected components for component in "${COMPONENTS[@]}"; do case "$component" in