diff --git a/apps/code/src/renderer/features/inbox/components/ReportCard.tsx b/apps/code/src/renderer/features/inbox/components/ReportCard.tsx
index bf018b8f3..9c4b70c36 100644
--- a/apps/code/src/renderer/features/inbox/components/ReportCard.tsx
+++ b/apps/code/src/renderer/features/inbox/components/ReportCard.tsx
@@ -4,7 +4,8 @@ import {
inboxStatusAccentCss,
inboxStatusLabel,
} from "@features/inbox/utils/inboxSort";
-import { Flex, Text } from "@radix-ui/themes";
+import { UserIcon } from "@phosphor-icons/react";
+import { Flex, Text, Tooltip } from "@radix-ui/themes";
import type { SignalReport } from "@shared/types";
import { motion } from "framer-motion";
import type { KeyboardEvent, MouseEvent } from "react";
@@ -118,6 +119,20 @@ export function ReportCard({
{statusLabel}
+ {report.is_suggested_reviewer && (
+
+
+
+
+
+ )}
{/* Summary is outside the title row so wrapped lines align with title text (bullet + gap), not the card edge */}
diff --git a/apps/code/src/renderer/features/inbox/components/SignalsToolbar.tsx b/apps/code/src/renderer/features/inbox/components/SignalsToolbar.tsx
index 0b8d4d4d3..799eb75a9 100644
--- a/apps/code/src/renderer/features/inbox/components/SignalsToolbar.tsx
+++ b/apps/code/src/renderer/features/inbox/components/SignalsToolbar.tsx
@@ -1,14 +1,22 @@
import { useInboxSignalsFilterStore } from "@features/inbox/stores/inboxSignalsFilterStore";
+import {
+ inboxStatusAccentCss,
+ inboxStatusLabel,
+} from "@features/inbox/utils/inboxSort";
import {
CalendarPlus,
Check,
Clock,
FunnelSimple as FunnelSimpleIcon,
+ ListNumbers,
MagnifyingGlass,
TrendUp,
} from "@phosphor-icons/react";
import { Box, Flex, Popover, Text, TextField } from "@radix-ui/themes";
-import type { SignalReportOrderingField } from "@shared/types";
+import type {
+ SignalReportOrderingField,
+ SignalReportStatus,
+} from "@shared/types";
interface SignalsToolbarProps {
totalCount: number;
@@ -21,12 +29,21 @@ interface SignalsToolbarProps {
type SortOption = {
label: string;
- field: Extract;
+ field: Extract<
+ SignalReportOrderingField,
+ "priority" | "created_at" | "total_weight"
+ >;
direction: "asc" | "desc";
icon: React.ReactNode;
};
const sortOptions: SortOption[] = [
+ {
+ label: "Priority",
+ field: "priority",
+ direction: "asc",
+ icon: ,
+ },
{
label: "Strongest signal",
field: "total_weight",
@@ -47,6 +64,14 @@ const sortOptions: SortOption[] = [
},
];
+const FILTERABLE_STATUSES: SignalReportStatus[] = [
+ "ready",
+ "pending_input",
+ "in_progress",
+ "candidate",
+ "potential",
+];
+
export function SignalsToolbar({
totalCount,
filteredCount,
@@ -60,6 +85,8 @@ export function SignalsToolbar({
const sortField = useInboxSignalsFilterStore((s) => s.sortField);
const sortDirection = useInboxSignalsFilterStore((s) => s.sortDirection);
const setSort = useInboxSignalsFilterStore((s) => s.setSort);
+ const statusFilter = useInboxSignalsFilterStore((s) => s.statusFilter);
+ const toggleStatus = useInboxSignalsFilterStore((s) => s.toggleStatus);
const countLabel = isSearchActive
? `${filteredCount} of ${totalCount}`
@@ -103,10 +130,12 @@ export function SignalsToolbar({
) : null}
-
void;
+ statusFilter: SignalReportStatus[];
+ onToggleStatus: (status: SignalReportStatus) => void;
}) {
const itemClassName =
"flex w-full items-center justify-between rounded-sm px-1 py-1 text-left text-[13px] text-gray-12 transition-colors hover:bg-gray-3";
@@ -144,7 +177,7 @@ function SortMenu({