From 499cab08fde32db21256002acf6ef0e41a58a77d Mon Sep 17 00:00:00 2001 From: spacedandy-agents-simplex <342056592+spacedandy-agents-simplex@users.noreply.github.com> Date: Thu, 15 Oct 2026 12:31:56 +0000 Subject: [PATCH] ci: install ui as a command for the Claude job A wrapper in /usr/local/bin runs the helper from the checkout, so Claude's Bash tool finds ui on PATH whatever environment it builds for its shell. First Claude run: [claude-test] --- .github/workflows/desktop-linux.yml | 5 ++++- scripts/ci/desktop-linux/claude-test.sh | 4 ++-- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/.github/workflows/desktop-linux.yml b/.github/workflows/desktop-linux.yml index 9587262a69..da18ec3e9b 100644 --- a/.github/workflows/desktop-linux.yml +++ b/.github/workflows/desktop-linux.yml @@ -379,10 +379,13 @@ jobs: working-directory: apps/multiplatform run: ./gradlew --no-daemon --console=plain -Psimplex.assets.dir=../../assets :desktop:createDistributable - - name: Install Claude Code + # ui goes on every shell's PATH, where Claude's Bash tool finds it whatever environment it builds + - name: Install Claude Code and the ui command run: | npm install --prefix "$RUNNER_TEMP/claude-code" "@anthropic-ai/claude-code@$CLAUDE_CODE_VERSION" echo "$RUNNER_TEMP/claude-code/node_modules/.bin" >> "$GITHUB_PATH" + printf '#!/bin/sh\nexec %s/scripts/ci/desktop-linux/ui "$@"\n' "$PWD" | sudo tee /usr/local/bin/ui + sudo chmod +x /usr/local/bin/ui - name: Start the app at the chat list run: scripts/ci/desktop-linux/smoke-test.sh apps/multiplatform/release/main/app/simplex "$RUNNER_TEMP/claude-test/screens" onboarding diff --git a/scripts/ci/desktop-linux/claude-test.sh b/scripts/ci/desktop-linux/claude-test.sh index f9b12d8950..259d74d89e 100755 --- a/scripts/ci/desktop-linux/claude-test.sh +++ b/scripts/ci/desktop-linux/claude-test.sh @@ -3,7 +3,7 @@ # Runs Claude Code to repeat the directory search with the ui helper, as claude-test.md describes, and passes when # its final message ends with "CLAUDE-TEST: PASS". # Usage: scripts/ci/desktop-linux/claude-test.sh -# Expects the app at the chat list (smoke-test.sh ... onboarding) with UI_OUT under , claude on PATH, +# Expects the app at the chat list (smoke-test.sh ... onboarding) with UI_OUT under , claude and ui on PATH, # CLAUDE_MODEL and CLAUDE_CODE_OAUTH_TOKEN. Claude works in : the screenshots, its report.md and the # prompt it was given end up there. The transcript is kept outside it, where Claude can't write. @@ -29,7 +29,7 @@ EOF claude --version cd "$out" status=0 -PATH="$here:$PATH" claude -p "$(cat prompt.md)" \ +claude -p "$(cat prompt.md)" \ --model "$CLAUDE_MODEL" \ --max-turns 60 \ --max-budget-usd 4 \