From 4ab4d9934070b03064fd54a9f82c43e49676273c Mon Sep 17 00:00:00 2001 From: iris Date: Sun, 31 May 2026 13:45:04 +0200 Subject: [PATCH] tabs.js + docs: drop #272 + #275 cookies (#712 batch 8) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit #272 (show approval requested-at — closed) ×2 in tabs.js (live ApprovalAdded fallback note + amber stale chip comment) + ×1 in docs/web-ui.md (Approval card identity header). #275 (select all for meta inputs — closed) ×1 in tabs.js (bulk-select rationale) + ×1 in docs/web-ui.md (M3T4 1NPUTS tree control note). The amber-stale chip line in tabs.js now points at docs/web-ui.md::Approval card for the rendered spec instead of the closed issue. --- docs/web-ui.md | 4 ++-- frontend/packages/dashboard/src/tabs.js | 6 +++--- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/docs/web-ui.md b/docs/web-ui.md index 99368f6f..51a6a6f9 100644 --- a/docs/web-ui.md +++ b/docs/web-ui.md @@ -248,7 +248,7 @@ every fetched input at every depth (`hyperhive`, `hyperhive/nixpkgs`, `agent-`, `agent-/mcp-`, …), each shown once at its shallowest path. `read_meta_inputs` walks the lock graph with a `visited` set — `follows` aliases and rev-less -nodes are skipped (issue #275). A `select all / select none` +nodes are skipped. A `select all / select none` control sits above the tree. Checking inputs + submitting bumps the lock in `/meta/` and rebuilds the selected agents in sequence; each outcome reaches the manager as a `rebuilt` @@ -552,7 +552,7 @@ renderApprovals`) with three stacked sections: `apply_commit`) the short proposal sha as ``, and a right-aligned `requested ago` relative time from `ApprovalView.requested_at` — amber once the request has been - pending ≥ 1h so a stale approval stands out (issue #272). + pending ≥ 1h so a stale approval stands out. - **what-changed body** — the manager's description, then drill-in triggers: `↳ view diff` opens the diff in the side panel; `↳ commit on forge ↗` deep-links the proposal commit diff --git a/frontend/packages/dashboard/src/tabs.js b/frontend/packages/dashboard/src/tabs.js index ad009f35..c5460031 100644 --- a/frontend/packages/dashboard/src/tabs.js +++ b/frontend/packages/dashboard/src/tabs.js @@ -1446,7 +1446,7 @@ window.marked = marked; // The ApprovalAdded event carries no requested_at; a live-added // approval was queued just now, so client-now is accurate — and // consistent with how fmtAgo compares everything to client-now. - // A later /api/state cold-load swaps in the server value. (#272) + // A later /api/state cold-load swaps in the server value. requested_at: ev.requested_at != null ? ev.requested_at : Math.floor(Date.now() / 1000), }; @@ -1627,7 +1627,7 @@ window.marked = marked; if (isApply && a.sha_short) head.append(el('code', {}, a.sha_short)); // When the approval was requested — relative time, right-aligned. // Goes amber once it's been pending an hour so a stale request is - // obvious at a glance. (issue #272) + // obvious at a glance (see docs/web-ui.md::Approval card). if (a.requested_at != null) { const ageSec = Math.max(0, Math.floor(Date.now() / 1000 - a.requested_at)); head.append(el('span', { @@ -1755,7 +1755,7 @@ window.marked = marked; 'data-confirm': 'update selected meta flake inputs + rebuild affected agents?', }); // Bulk select — the full input tree gets long; ticking each box - // one by one is tedious (issue #275). + // one by one is tedious. const bulk = el('div', { class: 'meta-inputs-bulk' }); const selAll = el('button', { type: 'button', class: 'meta-bulk-btn' }, 'select all'); const selNone = el('button', { type: 'button', class: 'meta-bulk-btn' }, 'select none');