review tab

This commit is contained in:
Ian Gulliver
2026-10-16 09:53:34 -07:00
parent 48ef2d6bb5
commit 2107a43ef2
8 changed files with 42 additions and 21 deletions
+13 -5
View File
@@ -7,7 +7,7 @@ import { mountLead } from "./lead.js";
import { findTask, focusedProject, focusTab, on, onEach, state, tabs } from "./state.js";
import { previewLinks } from "./preview.js";
import { mountProject } from "./project.js";
import { isReviewEvent, latestFindingCount, mountReviews } from "./reviews.js";
import { findingCount, isReviewEvent, latestReview, mountReviews } from "./reviews.js";
import { mountSettings } from "./settings.js";
import { mountStatus } from "./status.js";
import { openSwitcher } from "./switcher.js";
@@ -109,8 +109,14 @@ export function taskPane() {
let drawn = "";
let waiting = 0;
let findings = 0;
const count = (t) => (t === "inbox" ? waiting : t === "reviews" ? findings : 0);
const badge = (t) => count(t) > 0 && h("span", { class: "badge", title: t === "inbox" ? "inbox items" : "findings in the latest review" }, count(t));
let reviewing = false;
const count = (t) => (t === "inbox" ? waiting : t === "reviews" && !reviewing ? findings : 0);
const badge = (t) => {
if (t === "reviews" && reviewing) {
return h("span", { class: "spinner", title: "review in progress" });
}
return count(t) > 0 && h("span", { class: "badge", title: t === "inbox" ? "inbox items" : "findings in the latest review" }, count(t));
};
const layout = () => {
for (const { button } of buttons) {
button.hidden = false;
@@ -168,9 +174,11 @@ export function taskPane() {
const first = state.focus.tabs.filter((t, i, all) => tabs.includes(t) && all.indexOf(t) === i);
const tab = state.focus.tab;
waiting = state.inbox.filter((item) => item.task_id === state.selectedTaskId).length;
findings = latestFindingCount(state.transcript);
const latest = latestReview(state.transcript);
reviewing = latest?.state === "running";
findings = latest ? findingCount(latest) : 0;
const order = [...first, ...tabs.filter((t) => !first.includes(t))].filter(available);
const key = JSON.stringify([order, tab, waiting, findings]);
const key = JSON.stringify([order, tab, waiting, findings, reviewing]);
if (key !== drawn) {
drawn = key;
buttons = order.map((t) => {