[object Object]

← back to Ticket System

board: add distinct Parked nav tab (🩷) separate from Blocked — Steve TK-12103 request 2026-09-24

a4c4988f58741623c1d49869c1c7fd2ddba2effc · 2026-09-24 10:13:33 -0700 · Steve Abrams

Files touched

Diff

commit a4c4988f58741623c1d49869c1c7fd2ddba2effc
Author: Steve Abrams <steve@designerwallcoverings.com>
Date:   Thu Sep 24 10:13:33 2026 -0700

    board: add distinct Parked nav tab (🩷) separate from Blocked — Steve TK-12103 request 2026-09-24
---
 board.html | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/board.html b/board.html
index bf445115..9163e472 100644
--- a/board.html
+++ b/board.html
@@ -123,7 +123,7 @@
 </style></head><body>
 <div class="stickytop">
 <div class="topnav">
-  <nav class="globalnav" aria-label="Fleet viewer"><button data-section="all">All</button><button data-section="open">Open</button><button data-section="blocked">Blocked</button><button data-section="doing">Doing</button><button data-section="nondw" title="Tickets NOT related to Designer Wallcoverings">Non-DW</button><button data-section="agents">Agents</button><button data-section="skills">Skills</button></nav>
+  <nav class="globalnav" aria-label="Fleet viewer"><button data-section="all">All</button><button data-section="open">Open</button><button data-section="blocked">Blocked</button><button data-section="doing">Doing</button><button data-section="parked" title="Durably parked tickets (parked.mjs registry) — held out of the active queue">🩷 Parked</button><button data-section="nondw" title="Tickets NOT related to Designer Wallcoverings">Non-DW</button><button data-section="agents">Agents</button><button data-section="skills">Skills</button></nav>
   <button id="navPosBtn" class="navpos" title="Move nav bar below the toolbar" aria-label="Toggle nav bar position">⤓ Nav</button>
 </div>
 <header>
@@ -232,7 +232,7 @@ const LS=(k,d)=>{try{return JSON.parse(localStorage.getItem(k))??d}catch(e){retu
 let DATA=[], AGENTS=[], SKILLS=[], q='';
 const URLSTATE=new URLSearchParams(location.search);
 let SECTION=URLSTATE.get('section')||LS('tkSection','blocked'), LAYOUT=URLSTATE.get('layout')||LS('tkLayout','grid');
-if(!['all','open','blocked','doing','agents','skills','nondw'].includes(SECTION))SECTION='blocked';if(!['grid','kv'].includes(LAYOUT))LAYOUT='grid';
+if(!['all','open','blocked','doing','parked','agents','skills','nondw'].includes(SECTION))SECTION='blocked';if(!['grid','kv'].includes(LAYOUT))LAYOUT='grid';
 let CATALOG_SORT=LS('tkCatalogSort','name'), CATALOG_DIR=LS('tkCatalogDir',1), CATALOG_COLS=LS('tkCatalogCols',4);
 let sortKey=LS('tkSortKey','created_at'), sortDir=LS('tkSortDir',-1); if(!CK.includes(sortKey))sortKey='created_at';
 let VIEW=LS('tkView','task');
@@ -297,7 +297,7 @@ const DW_KW=/wallcover|wallpaper/i;                                    // DW wal
 const DW_VENDOR=/(^|[^a-z])(sanderson|stroheim|muralsource|kravet|greenland|malibu|gracie|astek|fabricut|groundworks|rebel-walls|thibaut|schumacher|koroseal|scalamandre|maya-?romanoff|winfield|phillip-?jeffries|brewster|wallquest|carnegie|designtex|momentum|versa|elitis|fromental|fentucci|hollywood|novasuede|philipperomano|mdc)($|[^a-z])/i;
 const DW_EXTRA=new Set(['norma','greenland-onboard','sample-followup','sample-followup-sweep','interiordesignershowroom','marketing-command-center','all-designerwallcoverings','consulting-designerwallcoverings-com','mfr-review-viewer','mfr-review-viewer-corruption','designersalesreps','vendor-command-center','discontinued-agent']);
 function isDW(t){const p=String(t.project||'').toLowerCase().trim();if(!p||DW_DENY.has(p))return false;return DW_EXTRA.has(p)||DW_RE.test(p)||DW_VENDOR.test(p)||DW_KW.test(p);}
-function match(t){if(VIEW!=='all'&&(t.kind||'task')!==VIEW)return false;if(['open','blocked','doing'].includes(SECTION)&&t.status!==SECTION)return false;if(['open','blocked','doing'].includes(SECTION)&&t.parked)return false;/*TK-11946: parked held out of the active queue (mirrors /kanban parked lane)*/if(SECTION==='nondw'&&isDW(t))return false;if(!q)return true;
+function match(t){if(VIEW!=='all'&&(t.kind||'task')!==VIEW)return false;if(['open','blocked','doing'].includes(SECTION)&&t.status!==SECTION)return false;if(['open','blocked','doing'].includes(SECTION)&&t.parked)return false;/*TK-11946: parked held out of the active queue (mirrors /kanban parked lane)*/if(SECTION==='parked'&&!(t.parked&&['open','doing','blocked'].includes(t.status)))return false;if(SECTION==='nondw'&&isDW(t))return false;if(!q)return true;
   // search the FULL thread — every comment (note/win/challenge/cody incl.) + every action — not just lastText
   const thread=[...(t.comments||[]).map(c=>c.text),...(t.actions||[]).map(a=>a.text)].join(' ');
   const hay=(t.id+' '+t.title+' '+(t.project||'')+' '+(t.assignee||'')+' '+t.status+' '+(t.kind||'task')+' '+JSON.stringify(t.schedule||{})+' '+thread).toLowerCase();
@@ -369,7 +369,7 @@ function renderCatalog(){
 function syncUrl(){const u=new URL(location.href);u.searchParams.set('section',SECTION);u.searchParams.set('layout',LAYOUT);history.replaceState(null,'',u);}
 function setSection(section){SECTION=section;save('tkSection',SECTION);syncUrl();q='';$('#q').value='';document.querySelectorAll('[data-section]').forEach(b=>b.classList.toggle('on',b.dataset.section===SECTION));render();}
 function initSectionTabs(){
-  const nav=$('.globalnav'),keys=['all','open','blocked','doing','nondw','agents','skills'];
+  const nav=$('.globalnav'),keys=['all','open','blocked','doing','parked','nondw','agents','skills'];
   let order=LS('tkSectionOrder',keys).filter(k=>keys.includes(k));for(const k of keys)if(!order.includes(k))order.push(k);
   const apply=()=>{for(const k of order){const b=nav.querySelector(`[data-section="${k}"]`);if(b)nav.appendChild(b);}};apply();
   nav.querySelectorAll('[data-section]').forEach(b=>{b.draggable=true;b.title='Drag to reorder tabs';

← 58609090 auto-data-snapshot: 2026-09-23T16:24:32 (1 data files) — TK-  ·  back to Ticket System  ·  auto-data-snapshot: 2026-09-24T10:46:49 (4 data files) — TK- 40646cc2 →