From 8bffe142ce36973bc7f43af9905d91687d828ebe Mon Sep 17 00:00:00 2001 From: Spencer Bull Date: Mon, 21 Sep 2026 20:42:26 -0500 Subject: [PATCH] Answer npx for upstream's installer so the menu install does not stop to ask Upstream's installer runs `npx playwright install chromium` for the browser tools, and npx asks before fetching a package it does not have. Over ssh, with no terminal, it goes ahead; in the floating terminal the menu opens for choosing Hermes it printed "Ok to proceed? (y)" and waited, so an install a user had every reason to walk away from sat there until someone typed y. The mise-built Hermes this replaces never asked anything. `--skip-setup` already answers the wizard the same way, and the app's own bootstrap never had a terminal to ask in. Co-Authored-By: Claude Fable 5.1 --- bin/omarchy-install-hermes-cli | 4 +++- test/shell.d/hermes-desktop-install-test.sh | 9 +++++++-- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/bin/omarchy-install-hermes-cli b/bin/omarchy-install-hermes-cli index 157df912..01165223 100755 --- a/bin/omarchy-install-hermes-cli +++ b/bin/omarchy-install-hermes-cli @@ -436,7 +436,9 @@ fi if [[ $runtime_present == "false" ]]; then echo "Setting up the Hermes runtime..." - bash /usr/share/hermes-desktop/install.sh --skip-setup --branch main --commit "$release_commit" --force-commit --dir "$runtime" --hermes-home "$HERMES_HOME" + # npx stops to ask before fetching Playwright for the browser tools, and in + # the terminal the menu opens for this nobody is there to say yes. + npm_config_yes=true bash /usr/share/hermes-desktop/install.sh --skip-setup --branch main --commit "$release_commit" --force-commit --dir "$runtime" --hermes-home "$HERMES_HOME" if ! runtime_ready; then echo "Hermes runtime setup did not complete. Re-run this command after resolving the installer error." >&2 exit 1 diff --git a/test/shell.d/hermes-desktop-install-test.sh b/test/shell.d/hermes-desktop-install-test.sh index 022498a1..9d5671f1 100644 --- a/test/shell.d/hermes-desktop-install-test.sh +++ b/test/shell.d/hermes-desktop-install-test.sh @@ -54,6 +54,7 @@ cat >"$test_tmp/share/install.sh" <<'MOCK' #!/bin/bash set -e printf '%s\n' "$@" >"$OMARCHY_TEST_ROOT/install-args" +printf '%s\n' "${npm_config_yes:-unset}" >"$OMARCHY_TEST_ROOT/install-npx-answer" [[ ${OMARCHY_TEST_INSTALL_FAIL:-0} != 1 ]] || exit 7 commit=$OMARCHY_TEST_RELEASE_COMMIT force=false @@ -209,7 +210,7 @@ new_home() { # The app opens in the background, so a run that got that far is joined to it # before anything is asserted; one that stopped earlier started nothing. run_installer() { - HOME="$test_home" HERMES_HOME="${OMARCHY_TEST_HOME:-$hermes_home}" PATH="$test_tmp/bin:$test_home/.local/bin:$PATH" \ + HOME="$test_home" HERMES_HOME="${OMARCHY_TEST_HOME:-$hermes_home}" PATH="$test_tmp/bin:$test_home/.local/bin:$PATH" npm_config_yes= \ bash "$test_tmp/installer" >"$test_tmp/output" 2>&1 || return for (( attempt=0; attempt<200; attempt++ )); do if grep -q '^launch' "$test_tmp/events"; then return 0; fi @@ -219,7 +220,7 @@ run_installer() { } # ~/.local/bin is on PATH the way Omarchy puts it there, after the mocks. run_cli() { - HOME="$test_home" HERMES_HOME="${OMARCHY_TEST_HOME:-$hermes_home}" PATH="$test_tmp/bin:$test_home/.local/bin:$PATH" \ + HOME="$test_home" HERMES_HOME="${OMARCHY_TEST_HOME:-$hermes_home}" PATH="$test_tmp/bin:$test_home/.local/bin:$PATH" npm_config_yes= \ bash "$test_tmp/bin/omarchy-install-hermes-cli" "$@" >"$test_tmp/output" 2>&1 } assert_stopped() { @@ -230,6 +231,10 @@ new_home fresh run_installer || fail "fresh setup succeeds" "$(cat "$test_tmp/output")" expected=$(printf '%s\n' --skip-setup --branch main --commit "$release_commit" --force-commit --dir "$runtime" --hermes-home "$hermes_home") [[ $(cat "$test_tmp/install-args") == "$expected" ]] || fail "upstream installer receives the pinned main arguments" +# npx asks before fetching a package it does not have, Playwright's included, +# and the floating terminal the menu opens has nobody to answer. The runners +# clear the variable, so only the installer can have set it. +[[ $(cat "$test_tmp/install-npx-answer") == "true" ]] || fail "upstream installer runs with npx's question answered" "$(cat "$test_tmp/install-npx-answer")" [[ $(head -2 "$test_tmp/events") == $'package hermes-desktop\nbootstrap' ]] || fail "the package precedes runtime bootstrap" "$(cat "$test_tmp/events")" [[ $(sed -n '3p' "$test_tmp/events") == build-stamp ]] || fail "upstream build stamp follows the app copy" "$(cat "$test_tmp/events")" [[ $(tail -1 "$test_tmp/events") == launch ]] || fail "the app opens only once setup and the theme hand-over are in place" "$(cat "$test_tmp/events")"