From 4399e8db710a7f94a8851fc2f5ae6617dd40d1f4 Mon Sep 17 00:00:00 2001 From: Claude Date: Fri, 21 Aug 2026 03:50:12 +0000 Subject: [PATCH 1/2] ai-stack: state "skip = stay fully local" on the prompt line itself MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The instruction was only in explanatory text a few lines above the actual prompt (prompt_text "Cloud providers to add []:") — easy to miss once that's scrolled past, especially since the bracketed default shows empty but doesn't say what empty means. User feedback: the screen itself should say it, not just text above it. Now reads "Cloud providers to add (blank = skip, stay fully local):". --- services/ai-stack.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/services/ai-stack.sh b/services/ai-stack.sh index 7c49bbd..1792822 100644 --- a/services/ai-stack.sh +++ b/services/ai-stack.sh @@ -73,7 +73,7 @@ install_ai-stack() { echo "" local CLOUD_CHOICES="" - prompt_text "Cloud providers to add []:" "" CLOUD_CHOICES + prompt_text "Cloud providers to add (blank = skip, stay fully local):" "" CLOUD_CHOICES # Parallel arrays: display name, OpenAI-compatible base URL, and entered key declare -a CLOUD_NAMES=() CLOUD_URLS=() CLOUD_KEYS=() From b4eccbd02d2f8ae582710fbd8ace08ae06a75120 Mon Sep 17 00:00:00 2001 From: Claude Date: Fri, 21 Aug 2026 03:51:41 +0000 Subject: [PATCH 2/2] ai-stack: accept 0 as an explicit "skip cloud providers" choice MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Blank already meant skip, but user feedback wanted a keystroke that says so explicitly rather than just leaving the input empty. Added "0) Skip — stay fully local" to the menu, updated the prompt to mention it, and handled "0" as a silent no-op in the choice loop (previously it would have fallen through to the "Ignoring unknown choice" warning). --- services/ai-stack.sh | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/services/ai-stack.sh b/services/ai-stack.sh index 1792822..b3c4821 100644 --- a/services/ai-stack.sh +++ b/services/ai-stack.sh @@ -68,12 +68,13 @@ install_ai-stack() { log_info " 2) DeepInfra Cheapest host for open models, zero-retention. Key: https://deepinfra.com/dash/api_keys" log_info " 3) OpenAI GPT-5.x, o-series, gpt-image. Key: https://platform.openai.com/api-keys" log_info " 4) OpenRouter One key, 300+ models. Key: https://openrouter.ai/keys" + log_info " 0) Skip — stay fully local" echo "" - log_info " Example: '1 2' wires Groq + DeepInfra. Leave blank to stay fully local." + log_info " Example: '1 2' wires Groq + DeepInfra." echo "" local CLOUD_CHOICES="" - prompt_text "Cloud providers to add (blank = skip, stay fully local):" "" CLOUD_CHOICES + prompt_text "Cloud providers to add (0 or blank = skip, stay fully local):" "" CLOUD_CHOICES # Parallel arrays: display name, OpenAI-compatible base URL, and entered key declare -a CLOUD_NAMES=() CLOUD_URLS=() CLOUD_KEYS=() @@ -81,6 +82,7 @@ install_ai-stack() { for _c in $CLOUD_CHOICES; do _cname="" ; _curl="" case "$_c" in + 0) continue ;; 1) _cname="Groq"; _curl="https://api.groq.com/openai/v1" ;; 2) _cname="DeepInfra"; _curl="https://api.deepinfra.com/v1/openai" ;; 3) _cname="OpenAI"; _curl="https://api.openai.com/v1" ;;