diff --git a/tooling/pql-board-html b/tooling/pql-board-html index 7fda8cd0c..c3017fb7d 100755 --- a/tooling/pql-board-html +++ b/tooling/pql-board-html @@ -138,6 +138,10 @@ PAGE = """Settled Reach — pql board #d-idrow { display: flex; align-items: center; gap: 10px; margin: 6px 0 2px; } #d-id { font: 700 15px var(--mono); color: var(--accent); } #d-prio { font: 10px/1 var(--mono); letter-spacing: .08em; text-transform: uppercase; } + #d-copy { margin-left: auto; font: 10px/1 var(--mono); letter-spacing: .06em; + text-transform: uppercase; background: none; border: 1px solid var(--line); + border-radius: 3px; color: var(--dim); padding: 5px 9px; cursor: pointer; } + #d-copy:hover { color: var(--accent); border-color: var(--accent-dim); } #d-title { font: 600 21px/1.3 var(--sans); text-wrap: balance; margin: 2px 0 14px; max-width: 46ch; } #d-status { display: flex; border: 1px solid var(--line); border-radius: 3px; @@ -289,7 +293,8 @@ function select(id, push=true){ (ch.length?`
${ch.map(p=>`${esc(p)}`).join(" → ")}
`:"")+ `
`+ `${esc(t.id)}`+ - `${esc(t.priority||"")}
`+ + `${esc(t.priority||"")}`+ + ``+ `
${esc(t.title)}
`+ `
${STATUSES.map(s=>`${s.replace("_"," ")}`).join("")}
`+ `
${meta.map(([k,v])=>`
${k}
${v}
`).join("")}
`+ @@ -300,6 +305,14 @@ function select(id, push=true){ `
${(t.description||"—").split(/\\n\\n+/).map(p=>`

${esc(p).replace(/\\n/g,"
")}

`).join("")}
`; d.scrollTop=0; d.querySelectorAll(".tchip[data-id]").forEach(el=>el.onclick=()=>select(el.dataset.id)); + const cp=document.getElementById("d-copy"); + cp.onclick=()=>{ + const txt=`viewing ${t.id} — ${t.title}`; + const done=()=>{ cp.textContent="copied"; setTimeout(()=>{cp.textContent="copy ref";},1200); }; + if(navigator.clipboard&&navigator.clipboard.writeText) + navigator.clipboard.writeText(txt).then(done,()=>window.prompt("Copy:",txt)); + else window.prompt("Copy:",txt); + }; const card=document.querySelector(`.card[data-id="${CSS.escape(id)}"]`); if(card) card.scrollIntoView({block:"nearest"}); }