← back to Ticket System
fix(board): DTD chip stuck on 'analyzing…' — start poll on load + self-heal loadDTD so it clears when a run finishes
10915c3e4d17cc14d0e5ecee92c9d51ba38704d9 · 2026-08-13 08:27:12 -0700 · Steve Abrams
Files touched
Diff
commit 10915c3e4d17cc14d0e5ecee92c9d51ba38704d9
Author: Steve Abrams <steve@designerwallcoverings.com>
Date: Thu Aug 13 08:27:12 2026 -0700
fix(board): DTD chip stuck on 'analyzing…' — start poll on load + self-heal loadDTD so it clears when a run finishes
---
board.html | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/board.html b/board.html
index 3381cd26..8b2f7efe 100644
--- a/board.html
+++ b/board.html
@@ -245,7 +245,7 @@ function renderDtdChip(){if(DTD.running){dtdChip('<b>analyzing…</b>');return;}
const v=DTD.verdicts;if(!v||!v.tickets){dtdChip('—');return;}
const arr=Object.values(v.tickets);const yes=arr.filter(x=>x.verdict==='yes').length;
dtdChip(`<b>${yes}</b>✓ / <b>${arr.length-yes}</b>✗ · ${v.ranAt?new Date(v.ranAt).toLocaleString(undefined,{month:'short',day:'numeric',hour:'numeric',minute:'2-digit'}):''}`);}
-async function loadDTD(){try{const r=await fetch(location.origin+'/api/dtd').then(r=>r.json());DTD.running=!!r.running;DTD.verdicts=r.verdicts||DTD.verdicts;renderDtdChip();render();}catch(e){}}
+async function loadDTD(){try{const r=await fetch(location.origin+'/api/dtd').then(r=>r.json());DTD.running=!!r.running;DTD.verdicts=r.verdicts||DTD.verdicts;renderDtdChip();render();if(DTD.running&&!dtdPoll)pollDTD();}catch(e){}}
let dtdPoll=null;
function pollDTD(){if(dtdPoll)clearInterval(dtdPoll);let n=0;dtdPoll=setInterval(async()=>{await loadDTD();n++;if(!DTD.running||n>80){clearInterval(dtdPoll);dtdPoll=null;}},5000);}
function renderPills(){
@@ -313,5 +313,5 @@ async function load(){
}catch(e){$('#tbody').innerHTML=`<tr><td>load failed: ${esc(e.message)}</td></tr>`;}
}
window.addEventListener('hashchange',()=>{const hq=decodeURIComponent((location.hash.match(/[#&]q=([^&]+)/)||[])[1]||'');setQ(hq);});
-renderColMenu(); renderPillMenu(); renderDetMenu(); $('#dmBtn').classList.toggle('off',!DM_ON); load(); loadDTD(); setInterval(load,30000);
+renderColMenu(); renderPillMenu(); renderDetMenu(); $('#dmBtn').classList.toggle('off',!DM_ON); load(); loadDTD().then(()=>{ if(DTD.running) pollDTD(); }); setInterval(load,30000);
</script></body></html>
← a1c6c32e ticket board: group + multi-select, batched-DTD run-now yes/
·
back to Ticket System
·
dtd-run: --cap flag + auto-chunk large sweeps (33/panel call a3720755 →