feat(dashboard): Interventions page improvements and action-confirm modal

- Move Interventions under Workstreams in the navigator
- Add action-confirm.js: shared modal component for actions requiring a
  mandatory comment (survives live-poll re-renders, unlike inline DOM mutation)
- Wire action-confirm into Interventions (Mark done) and Decisions (Resolve)
- Fix Interventions completed section: fetch all tasks and filter client-side
  so resolved interventions (needs_human=false) still appear under Completed
- Add docs/interventions.md help page with ? button on the h1
- Replace all hardcoded "Bernd" with "human" across dashboard src and docs

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-03-04 23:15:06 +01:00
parent c792ab0bc0
commit 0bdf4929fc
9 changed files with 426 additions and 31 deletions

View File

@@ -479,7 +479,7 @@ if (blocking.length === 0) {
<label>Your decision &amp; rationale</label>
<textarea class="r-text" rows="4" placeholder="State the chosen option and your reasoning…"></textarea>
<label>Decided by</label>
<input class="r-by" type="text" value="Bernd">
<input class="r-by" type="text" value="human">
<div class="dec-resolve-actions">
<button class="r-submit">Record &amp; close</button>
<span class="r-msg"></span>
@@ -512,7 +512,7 @@ if (blocking.length === 0) {
btn.addEventListener("click", async () => {
const rationale = card.querySelector(".r-text").value.trim();
const decidedBy = card.querySelector(".r-by").value.trim() || "Bernd";
const decidedBy = card.querySelector(".r-by").value.trim() || "human";
if (!rationale) { msg.textContent = "⚠ Please enter a rationale."; return; }
btn.disabled = true; btn.textContent = "Saving…";
try {