From eb1c0c35f2087a4d276965e174fb8c679a9f3e47 Mon Sep 17 00:00:00 2001 From: OpenShell-Community Dev Date: Sun, 15 Mar 2026 18:44:48 +0000 Subject: [PATCH] fix: provision sandbox before user pastes in the API key --- brev/welcome-ui/app.js | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/brev/welcome-ui/app.js b/brev/welcome-ui/app.js index ae6880f..4ba3de2 100644 --- a/brev/welcome-ui/app.js +++ b/brev/welcome-ui/app.js @@ -161,9 +161,9 @@ /** * Five-state CTA button: - * 1. API empty + tasks running -> "Waiting for API key…" (disabled) - * 2. API valid + tasks running -> "Provisioning Sandbox…" (disabled, spinner) - * 3. API empty + tasks complete -> "Waiting for API key…" (disabled) + * 1. !installTriggered -> "Waiting for API key…" (disabled) + * 2. installTriggered + !sandboxReady -> "Provisioning Sandbox…" (disabled, spinner) + * 3. sandbox ready + !key valid -> "Waiting for API key…" (disabled) * 4. API valid + sandbox ready + !key -> "Configuring API key…" (disabled, spinner) * 5. API valid + sandbox ready + key -> "Open OpenShell" (enabled) */ @@ -213,7 +213,7 @@ btnSpinner.hidden = true; btnSpinner.style.display = "none"; btnLaunchLabel.textContent = "Update API key to retry"; - } else if (!sandboxReady && keyValid) { + } else if (!sandboxReady && installTriggered) { btnLaunch.disabled = true; btnLaunch.classList.remove("btn--ready"); btnSpinner.hidden = false; @@ -260,6 +260,7 @@ setLogIcon(logGatewayIcon, null); logReady.hidden = true; updateButtonState(); + setSandboxChecklistCreating(); try { const res = await fetch("/api/install-openclaw", { @@ -430,6 +431,7 @@ } apiKeyInput.focus(); updateButtonState(); + if (!installTriggered && !installFailed) triggerInstall(); }); cardOther.addEventListener("click", () => {