From b5487e4bc29e70ff3075216c42bf4a49ba4bb4f7 Mon Sep 17 00:00:00 2001 From: pseudo <27822378+pseudoseed@users.noreply.github.com> Date: Fri, 30 Oct 2026 00:09:12 -0600 Subject: [PATCH] fix(ship): the Mac build finds cargo without a hand-set PATH Co-Authored-By: Claude Opus 5.5 --- .agents/skills/ship-pseudocode/SKILL.md | 1 + .agents/skills/ship-pseudocode/scripts/_common.sh | 6 ++++-- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/.agents/skills/ship-pseudocode/SKILL.md b/.agents/skills/ship-pseudocode/SKILL.md index d06d97fa00319..ca296e22876dd 100644 --- a/.agents/skills/ship-pseudocode/SKILL.md +++ b/.agents/skills/ship-pseudocode/SKILL.md @@ -126,6 +126,7 @@ been done. | --------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | `ERR_UNKNOWN_FILE_EXTENSION ".ts"` | Node 20 on PATH. The ship scripts pick Node 26; a hand-run command must too. | | `command not found: vp` | `node_modules/.bin` missing from PATH. | +| `Rust/Cargo and the requested Rust target` | Rust missing. `brew install rustup`, then `rustup default stable`; `_common.sh` puts its `cargo` on PATH. | | App bundle named `T3 Code.app` | `T3CODE_APP_NAME` not exported for the desktop build. | | `skipped macOS notarization` | No notarytool keychain profile named `pseudocode`. `ROTATION.md` step 6. | | `codesign ... errSecInternalComponent` | The keychain holding the signing key is locked, so `codesign` sees the identity but cannot use the key. | diff --git a/.agents/skills/ship-pseudocode/scripts/_common.sh b/.agents/skills/ship-pseudocode/scripts/_common.sh index a6d6613f64a34..2d0ca407245ef 100644 --- a/.agents/skills/ship-pseudocode/scripts/_common.sh +++ b/.agents/skills/ship-pseudocode/scripts/_common.sh @@ -6,15 +6,17 @@ repo_root() { # /usr/bin first: Xcode's export step passes rsync flags only Apple's rsync accepts. # Node 26, the version package.json pins: the build scripts are TypeScript that Node strips types from. +# Cargo: the desktop build compiles a Rust resource monitor; Homebrew's rustup is keg-only. setup_path() { - local root="$1" node26 + local root="$1" node26 rustup_bin node26="$(ls -d "$HOME"/.nvm/versions/node/v26.* 2>/dev/null | sort -V | tail -1 || true)" [ -n "$node26" ] || node26="$(brew --prefix node@26 2>/dev/null || true)" if [ -z "$node26" ] || [ ! -x "$node26/bin/node" ]; then echo "Node 26 is required. Install it with: brew install node@26" >&2 exit 1 fi - export PATH="/usr/bin:$node26/bin:$root/node_modules/.bin:$PATH" + rustup_bin="$(brew --prefix rustup 2>/dev/null || true)/bin" + export PATH="/usr/bin:$node26/bin:$rustup_bin:$HOME/.cargo/bin:$root/node_modules/.bin:$PATH" } # Branding and identifiers live in .env.local. The desktop build reads T3CODE_APP_NAME and