From f43d242d901f88f0d00d967c2ace9441ae5cd929 Mon Sep 17 00:00:00 2001 From: Wes McKinney Date: Sun, 5 Apr 2026 14:26:58 -0500 Subject: [PATCH 1/2] fix: allow viewing prompt for queued jobs with stored prompts Jobs that store prompts at enqueue time (task, fix, compact, insights) had viewable prompts but the TUI only checked for done/running status. Extend the prompt-viewable condition to include queued jobs. Co-Authored-By: Claude Opus 4.6 (1M context) --- cmd/roborev/tui/handlers_review.go | 2 +- cmd/roborev/tui/nav.go | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/cmd/roborev/tui/handlers_review.go b/cmd/roborev/tui/handlers_review.go index 29a3324f..9e6d215b 100644 --- a/cmd/roborev/tui/handlers_review.go +++ b/cmd/roborev/tui/handlers_review.go @@ -15,7 +15,7 @@ func (m model) handlePromptKey() (tea.Model, tea.Cmd) { if job.Status == storage.JobStatusDone { m.promptFromQueue = true return m, m.fetchReviewForPrompt(job.ID) - } else if job.Status == storage.JobStatusRunning && job.Prompt != "" { + } else if (job.Status == storage.JobStatusRunning || job.Status == storage.JobStatusQueued) && job.Prompt != "" { jobCopy := *job m.currentReview = &storage.Review{ Agent: job.Agent, diff --git a/cmd/roborev/tui/nav.go b/cmd/roborev/tui/nav.go index 0b658f0e..a14ff979 100644 --- a/cmd/roborev/tui/nav.go +++ b/cmd/roborev/tui/nav.go @@ -60,7 +60,7 @@ func (m *model) findPrevPromptableJob() int { for i := m.selectedIdx + 1; i < len(m.jobs); i++ { job := m.jobs[i] if m.isJobVisible(job) && - (job.Status == storage.JobStatusDone || (job.Status == storage.JobStatusRunning && job.Prompt != "")) { + (job.Status == storage.JobStatusDone || (job.Prompt != "" && (job.Status == storage.JobStatusRunning || job.Status == storage.JobStatusQueued))) { return i } } @@ -73,7 +73,7 @@ func (m *model) findNextPromptableJob() int { for i := m.selectedIdx - 1; i >= 0; i-- { job := m.jobs[i] if m.isJobVisible(job) && - (job.Status == storage.JobStatusDone || (job.Status == storage.JobStatusRunning && job.Prompt != "")) { + (job.Status == storage.JobStatusDone || (job.Prompt != "" && (job.Status == storage.JobStatusRunning || job.Status == storage.JobStatusQueued))) { return i } } From eeb480f5d96f158546ce546f7605538baf4544b5 Mon Sep 17 00:00:00 2001 From: Wes McKinney Date: Mon, 6 Apr 2026 14:14:55 -0500 Subject: [PATCH 2/2] fix: handle queued jobs in prompt-view navigation The prompt navigation (left/right arrows in prompt view and auto-navigation after pagination) only rebuilt currentReview for done and running jobs. Navigating to a queued stored-prompt job would show the previous job's prompt instead. Co-Authored-By: Claude Opus 4.6 (1M context) --- cmd/roborev/tui/handlers.go | 4 ++-- cmd/roborev/tui/handlers_msg.go | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/cmd/roborev/tui/handlers.go b/cmd/roborev/tui/handlers.go index fe4a6c47..f397bbf4 100644 --- a/cmd/roborev/tui/handlers.go +++ b/cmd/roborev/tui/handlers.go @@ -283,7 +283,7 @@ func (m model) handleNextKey() (tea.Model, tea.Cmd) { job := m.jobs[nextIdx] if job.Status == storage.JobStatusDone { return m, m.fetchReviewForPrompt(job.ID) - } else if job.Status == storage.JobStatusRunning && job.Prompt != "" { + } else if (job.Status == storage.JobStatusRunning || job.Status == storage.JobStatusQueued) && job.Prompt != "" { m.currentReview = &storage.Review{ Agent: job.Agent, Prompt: job.Prompt, @@ -404,7 +404,7 @@ func (m model) handlePrevKey() (tea.Model, tea.Cmd) { job := m.jobs[prevIdx] if job.Status == storage.JobStatusDone { return m, m.fetchReviewForPrompt(job.ID) - } else if job.Status == storage.JobStatusRunning && job.Prompt != "" { + } else if (job.Status == storage.JobStatusRunning || job.Status == storage.JobStatusQueued) && job.Prompt != "" { m.currentReview = &storage.Review{ Agent: job.Agent, Prompt: job.Prompt, diff --git a/cmd/roborev/tui/handlers_msg.go b/cmd/roborev/tui/handlers_msg.go index 32103be5..a5bf3263 100644 --- a/cmd/roborev/tui/handlers_msg.go +++ b/cmd/roborev/tui/handlers_msg.go @@ -200,7 +200,7 @@ func (m model) handleJobsMsg(msg jobsMsg) (tea.Model, tea.Cmd) { job := m.jobs[nextIdx] if job.Status == storage.JobStatusDone { return m, m.fetchReviewForPrompt(job.ID) - } else if job.Status == storage.JobStatusRunning && job.Prompt != "" { + } else if (job.Status == storage.JobStatusRunning || job.Status == storage.JobStatusQueued) && job.Prompt != "" { m.currentReview = &storage.Review{ Agent: job.Agent, Prompt: job.Prompt,