[object Object]

← 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 →