From 6f9db5cc9ca6f9529e15786ca0e573007705540b Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Thu, 27 Aug 2026 21:13:01 +0000 Subject: [PATCH 1/4] Add copy prompt dialog Co-authored-by: pelikhan <4175913+pelikhan@users.noreply.github.com> --- docs/components/OpsWizard.astro | 76 ++++++++++++++++++++++++++++++++- 1 file changed, 75 insertions(+), 1 deletion(-) diff --git a/docs/components/OpsWizard.astro b/docs/components/OpsWizard.astro index ce10c46..fd85f28 100644 --- a/docs/components/OpsWizard.astro +++ b/docs/components/OpsWizard.astro @@ -161,6 +161,16 @@ const agents = [

       
       

+ +
+

Prompt copied

+

+ Create a repository, then paste the copied prompt into the starter text box to start setting up your control + plane. +

+ +
+
@@ -271,8 +281,19 @@ const agents = [ const installHint = form.querySelector("[data-agent-install-hint]"); const copyButton = form.querySelector("[data-copy-prompt]"); const copyLabel = copyButton?.querySelector(".copy-label"); + const copyDialog = form.querySelector("[data-copy-dialog]"); + const copyDialogClose = form.querySelector("[data-copy-dialog-close]"); let resetCopyLabel: ReturnType | undefined; + function openCopyDialog() { + if (!copyDialog) return; + if (typeof copyDialog.showModal === "function") { + if (!copyDialog.open) copyDialog.showModal(); + return; + } + copyDialog.setAttribute("open", ""); + } + function render() { const operation = selected(form, "operation"); const agent = selected(form, "agent"); @@ -296,9 +317,10 @@ const agents = [ clearTimeout(resetCopyLabel); try { await navigator.clipboard.writeText(prompt); - if (status) status.textContent = "Prompt copied. Paste it into your agent and it takes over from there."; + if (status) status.textContent = "Prompt copied. Create a repository, then paste it into the starter text box."; if (copyLabel) copyLabel.textContent = "Copied"; copyButton.classList.add("is-copied"); + openCopyDialog(); resetCopyLabel = setTimeout(() => { if (copyLabel) copyLabel.textContent = "Copy prompt"; copyButton.classList.remove("is-copied"); @@ -308,6 +330,11 @@ const agents = [ } }); + copyDialogClose?.addEventListener("click", () => copyDialog?.close()); + copyDialog?.addEventListener("click", (event) => { + if (event.target === copyDialog) copyDialog.close(); + }); + render(); }); } @@ -603,6 +630,53 @@ const agents = [ background: var(--sl-color-green); } + .copy-dialog { + max-width: min(26rem, calc(100% - 2rem)); + border: 1px solid color-mix(in srgb, var(--sl-color-text-accent) 50%, transparent); + border-radius: 0.875rem; + background: var(--sl-color-bg); + padding: 0; + color: var(--sl-color-white); + box-shadow: 0 1.5rem 4rem color-mix(in srgb, var(--sl-color-black) 55%, transparent); + } + + .copy-dialog::backdrop { + background: color-mix(in srgb, var(--sl-color-black) 65%, transparent); + } + + .copy-dialog-card { + display: flex; + flex-direction: column; + gap: 0.875rem; + padding: 1.25rem; + } + + .copy-dialog-card p { + margin: 0; + color: var(--sl-color-gray-2); + font-size: var(--sl-text-sm); + line-height: 1.6; + } + + .copy-dialog-card .copy-dialog-title { + color: var(--sl-color-white); + font-size: var(--sl-text-lg); + font-weight: 700; + line-height: 1.2; + } + + .copy-dialog-close { + align-self: flex-start; + border: 1px solid var(--sl-color-text-accent); + border-radius: 0.375rem; + background: var(--sl-color-text-accent); + padding: 0.35rem 0.9rem; + color: var(--sl-color-black); + font-size: var(--sl-text-xs); + font-weight: 600; + cursor: pointer; + } + @media (prefers-reduced-motion: reduce) { .option-card, .option-check, From 2af8aa30ef670997737ba2cc8bf775c4a8f0a3d0 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Thu, 27 Aug 2026 21:14:29 +0000 Subject: [PATCH 2/4] Address copy dialog review Co-authored-by: pelikhan <4175913+pelikhan@users.noreply.github.com> --- docs/components/OpsWizard.astro | 2 -- 1 file changed, 2 deletions(-) diff --git a/docs/components/OpsWizard.astro b/docs/components/OpsWizard.astro index fd85f28..b35e44b 100644 --- a/docs/components/OpsWizard.astro +++ b/docs/components/OpsWizard.astro @@ -289,9 +289,7 @@ const agents = [ if (!copyDialog) return; if (typeof copyDialog.showModal === "function") { if (!copyDialog.open) copyDialog.showModal(); - return; } - copyDialog.setAttribute("open", ""); } function render() { From bd7f5653665e5086bcd79fe625b9cd592e0a62d8 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Thu, 27 Aug 2026 21:15:04 +0000 Subject: [PATCH 3/4] Improve copy dialog accessibility Co-authored-by: pelikhan <4175913+pelikhan@users.noreply.github.com> --- docs/components/OpsWizard.astro | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/components/OpsWizard.astro b/docs/components/OpsWizard.astro index b35e44b..b73a9ce 100644 --- a/docs/components/OpsWizard.astro +++ b/docs/components/OpsWizard.astro @@ -161,9 +161,9 @@ const agents = [

       
       

- +
-

Prompt copied

+

Prompt copied

Create a repository, then paste the copied prompt into the starter text box to start setting up your control plane. From 04c9b0de982c784e4682334c527f88f9fccfc770 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Thu, 27 Aug 2026 21:15:52 +0000 Subject: [PATCH 4/4] Reset copy state when dialog closes Co-authored-by: pelikhan <4175913+pelikhan@users.noreply.github.com> --- docs/components/OpsWizard.astro | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/docs/components/OpsWizard.astro b/docs/components/OpsWizard.astro index b73a9ce..051169a 100644 --- a/docs/components/OpsWizard.astro +++ b/docs/components/OpsWizard.astro @@ -292,6 +292,11 @@ const agents = [ } } + function resetCopyState() { + if (copyLabel) copyLabel.textContent = "Copy prompt"; + copyButton?.classList.remove("is-copied"); + } + function render() { const operation = selected(form, "operation"); const agent = selected(form, "agent"); @@ -319,16 +324,17 @@ const agents = [ if (copyLabel) copyLabel.textContent = "Copied"; copyButton.classList.add("is-copied"); openCopyDialog(); - resetCopyLabel = setTimeout(() => { - if (copyLabel) copyLabel.textContent = "Copy prompt"; - copyButton.classList.remove("is-copied"); - }, 2400); + resetCopyLabel = setTimeout(resetCopyState, 2400); } catch { if (status) status.textContent = "Copy failed. Select the prompt text and copy it manually."; } }); copyDialogClose?.addEventListener("click", () => copyDialog?.close()); + copyDialog?.addEventListener("close", () => { + clearTimeout(resetCopyLabel); + resetCopyState(); + }); copyDialog?.addEventListener("click", (event) => { if (event.target === copyDialog) copyDialog.close(); });