feat(case-ui): agents roster + awaiting-you banner; Hebraize drafts table
All checks were successful
G12 Leak-Guard / leak-guard (pull_request) Successful in 3s
Lint — undefined names / undefined-names (pull_request) Successful in 10s

- Agents tab: render the AgentStatusWidget roster at the top of the activity
  feed ("who's doing what right now") and surface pending agent interactions in
  an amber "ממתין לתשובתך" banner above the timeline (mockup 18i key wins).
- Drafts tab: Hebraize the drafts-table headers File/Size/Date → קובץ/גודל/תאריך
  (mockup 18h).

All existing feed logic, mutations and interaction forms preserved.
tsc --noEmit + eslint clean.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-06-30 19:06:48 +00:00
parent 331c712762
commit fa2fc9390c
2 changed files with 18 additions and 3 deletions

View File

@@ -5,6 +5,7 @@ import { Button } from "@/components/ui/button";
import { Textarea } from "@/components/ui/textarea";
import { Badge } from "@/components/ui/badge";
import { Markdown } from "@/components/ui/markdown";
import { AgentStatusWidget } from "@/components/cases/agent-status-widget";
import {
useAgentActivity,
useSendComment,
@@ -689,6 +690,7 @@ export function AgentActivityFeed({
const comments = data.comments ?? [];
const interactions = data.interactions ?? [];
const pendingCount = interactions.filter((i) => i.status === "pending").length;
// Unified, time-sorted feed: comments + interactions interleaved.
type FeedItem =
@@ -716,6 +718,19 @@ export function AgentActivityFeed({
return (
<div className="flex flex-col h-full">
{/* agent roster — who's doing what right now (mockup 18i) */}
<div className="mb-3 rounded-lg border border-rule bg-parchment/40 px-3 py-2.5">
<AgentStatusWidget caseNumber={caseNumber} />
</div>
{/* pending interactions surfaced to the top (mockup 18i — awaiting you) */}
{pendingCount > 0 && (
<div className="mb-3 rounded-lg border border-amber-300 bg-amber-50 px-4 py-2.5 text-[0.82rem] font-semibold text-amber-800 flex items-center gap-2">
<Clock className="w-4 h-4" />
ממתין לתשובתך {pendingCount} {pendingCount === 1 ? "בקשה" : "בקשות"} בהמשך הזרם
</div>
)}
{/* Issue summary bar */}
<div className="flex items-center gap-2 px-2 py-2 border-b border-rule mb-2 flex-wrap">
{data.issues.map((iss) => (

View File

@@ -396,9 +396,9 @@ export function DraftsPanel({
<table className="w-full text-sm">
<thead>
<tr className="bg-rule-soft/40 text-ink-muted text-[0.75rem]">
<th className="text-start px-4 py-2 font-medium">File</th>
<th className="text-start px-4 py-2 font-medium">Size</th>
<th className="text-start px-4 py-2 font-medium">Date</th>
<th className="text-start px-4 py-2 font-medium">קובץ</th>
<th className="text-start px-4 py-2 font-medium">גודל</th>
<th className="text-start px-4 py-2 font-medium">תאריך</th>
<th className="px-4 py-2" />
</tr>
</thead>