diff --git a/automaton/dashboard/html/dashboard.js b/automaton/dashboard/html/dashboard.js index b146206..4d9a641 100644 --- a/automaton/dashboard/html/dashboard.js +++ b/automaton/dashboard/html/dashboard.js @@ -205,6 +205,7 @@ function renderDetail(task) {

Review

${reviewStatusText} ${reviewComment} +
@@ -333,8 +334,8 @@ function renderTimeline() { } async function submitReview(taskName, status) { - const comment = prompt(status === 'changes_requested' ? 'Describe what changes are needed:' : 'Optional approval comment:'); - if (comment === null) return; + const textarea = document.getElementById(`review-comment-${taskName}`); + const comment = textarea ? textarea.value : ''; try { const res = await fetch(`/api/task/${taskName}/review`, { method: 'POST', @@ -343,11 +344,8 @@ async function submitReview(taskName, status) { }); const data = await res.json(); if (data.success) { + closeDetail(); await refreshData(); - const task = state.tasks.find(t => t.name === taskName); - if (task && task.name === (state.selectedTask && state.selectedTask.name)) { - renderDetail(task); - } } } catch (err) { console.error('Review submission failed:', err); diff --git a/automaton/dashboard/html/styles.css b/automaton/dashboard/html/styles.css index b3b9914..56a0109 100644 --- a/automaton/dashboard/html/styles.css +++ b/automaton/dashboard/html/styles.css @@ -252,6 +252,8 @@ kbd { .review-btn.changes { border-color: var(--error); color: var(--error); } .review-btn.changes:hover { background: var(--error-bg); } .review-comment { font-size: 12px; color: var(--text-secondary); padding: 8px; background: var(--bg-primary); border-radius: 4px; margin-top: 4px; } +.review-textarea { width: 100%; margin-top: 8px; padding: 8px; background: var(--bg-primary); border: 1px solid var(--border-color); border-radius: 6px; color: var(--text-primary); font-size: 12px; font-family: inherit; resize: vertical; } +.review-textarea:focus { outline: none; border-color: var(--accent); } .task-card-artifacts { display: flex; flex-wrap: wrap; gap: 4px; margin-top: 6px; } .artifact-badge { font-size: 10px; padding: 1px 6px; background: var(--bg-primary); border: 1px solid var(--border-color); border-radius: 3px; color: var(--text-secondary); font-family: monospace; } diff --git a/tasks/additive-extension-model/REVIEW.md b/tasks/additive-extension-model/REVIEW.md new file mode 100644 index 0000000..b644d8d --- /dev/null +++ b/tasks/additive-extension-model/REVIEW.md @@ -0,0 +1,3 @@ +# Review +- **Status**: approved +- **Timestamp**: 2026-06-13T18:00:41.433151 diff --git a/tasks/artifact-badges/REVIEW.md b/tasks/artifact-badges/REVIEW.md new file mode 100644 index 0000000..43b2356 --- /dev/null +++ b/tasks/artifact-badges/REVIEW.md @@ -0,0 +1,3 @@ +# Review +- **Status**: approved +- **Timestamp**: 2026-06-13T18:00:48.191824 diff --git a/tasks/changelog/REVIEW.md b/tasks/changelog/REVIEW.md new file mode 100644 index 0000000..12d8da2 --- /dev/null +++ b/tasks/changelog/REVIEW.md @@ -0,0 +1,3 @@ +# Review +- **Status**: approved +- **Timestamp**: 2026-06-13T18:00:58.458316 diff --git a/tasks/dashboard-task-review/REVIEW.md b/tasks/dashboard-task-review/REVIEW.md new file mode 100644 index 0000000..d2549bd --- /dev/null +++ b/tasks/dashboard-task-review/REVIEW.md @@ -0,0 +1,3 @@ +# Review +- **Status**: approved +- **Timestamp**: 2026-06-13T18:01:27.011077 diff --git a/tasks/review-textarea/SPEC.md b/tasks/review-textarea/SPEC.md new file mode 100644 index 0000000..de397e8 --- /dev/null +++ b/tasks/review-textarea/SPEC.md @@ -0,0 +1,28 @@ +# SPEC: Replace Prompt Dialog with Inline Comment Textarea + +## Overview + +The review approval flow uses `prompt()` for comments, which is a jarring browser popup. Replace it with a textarea in the detail modal. After submission, close the modal and return to the board. + +## Changes + +### dashboard.js +- Add comment `