← back to Ticket System
Make popup Run Now single-click
2fa673ea1b607fae485099ee10c1b9565a549811 · 2026-09-02 15:28:16 -0700 · Steve Abrams
Files touched
Diff
commit 2fa673ea1b607fae485099ee10c1b9565a549811
Author: Steve Abrams <steve@designerwallcoverings.com>
Date: Wed Sep 2 15:28:16 2026 -0700
Make popup Run Now single-click
---
board.html | 5 +----
1 file changed, 1 insertion(+), 4 deletions(-)
diff --git a/board.html b/board.html
index b3f06ed2..573eb59a 100644
--- a/board.html
+++ b/board.html
@@ -346,12 +346,9 @@ async function post(url,body){const r=await fetch(location.origin+url,{method:'P
$('#clearBtn').onclick=()=>{SEL.clear();render();syncBar();};
$('#runProfile').onchange=e=>{RUN_PROFILE=e.target.value;save('tkRunProfile',RUN_PROFILE);};
const setRunMsg=t=>{const e=$('#runmsg');if(e)e.textContent=t||'';};
-let runArmedAt=0;
$('#runBtn').onclick=async()=>{const ids=selIds();if(!ids.length){setRunMsg('select ticket(s) first');return;}
const label=($('#runProfile').selectedOptions[0]&&$('#runProfile').selectedOptions[0].textContent)||RUN_PROFILE;
- // non-blocking two-click arm — confirm() can be suppressed by the browser and silently no-op the run
- if(Date.now()-runArmedAt>4000){runArmedAt=Date.now();$('#runBtn').textContent=`▶ Run ${ids.length} · click again`;setRunMsg(`opens ${ids.length} iTerm2 ${label} window(s) — click Run again to confirm`);setTimeout(()=>{const b=$('#runBtn');if(b)b.textContent='▶ Run Now';},4000);return;}
- runArmedAt=0;$('#runBtn').textContent='▶ Run Now';$('#runBtn').disabled=true;setRunMsg('launching '+ids.length+'…');
+ $('#runBtn').disabled=true;setRunMsg(`launching ${ids.length} ${label} session(s)…`);
try{const r=await post('/api/run',{ids,profile:RUN_PROFILE});if(r.error)throw new Error(r.error);const sk=(r.skipped&&r.skipped.length)?(' · skipped '+r.skipped.length):'';setRunMsg(`launched ${(r.launched||[]).length}${sk} — windows opening (check the feed if none appear)`);}catch(e){setRunMsg('run failed: '+e.message);}finally{$('#runBtn').disabled=false;SEL.clear();load();}};
$('#stopBtn').onclick=async()=>{const ids=selIds();if(!ids.length)return;if(!confirm(`Stop ${ids.length} ticket(s) FOREVER (TicketStopped)? Reversible via Reopen.`))return;
try{await post('/api/stop',{ids});}catch(e){alert('stop failed: '+e.message);}SEL.clear();load();};
← 9a172ef3 board: Run Now no longer depends on confirm()/alert() (brows
·
back to Ticket System
·
Keep ticket control popup visible 77a5723b →