-
+
+ {/* Same live status icon as the code side nav, so the card and the
+ nav never disagree (generating spinner, needs-permission, cloud
+ status colors, PR state). */}
+
+
+ {task.title || "Untitled task"}
+
+
-
- {/* Same live status icon as the code side nav, so the card and the
- nav never disagree (generating spinner, needs-permission, cloud
- status colors, PR state). */}
-
-
- {task.title || "Untitled task"}
-
-
- {(meta.length > 0 || task.repository || prUrl) && (
+ {(stage || task.repository || prUrl) && (
{task.repository && (
@@ -323,9 +279,9 @@ function TaskCard({ task, onOpen }: { task: Task; onOpen: () => void }) {
{task.repository}
)}
- {meta.length > 0 && (
+ {stage && (
- {meta.join(" · ")}
+ {stage}
)}
{prUrl && (
@@ -422,29 +378,20 @@ const FeedItem = memo(function FeedItem({
onOpenTask: (task: Task) => void;
onOpenThread: (task: Task) => void;
}) {
- const prompt = useMemo(() => promptText(task), [task]);
- const isAgent = !task.created_by || task.origin_product !== "user_created";
-
return (
- {isAgent && !task.created_by ? (
-
- ) : (
- getUserInitials(task.created_by)
- )}
+
-
- {task.created_by ? userDisplayName(task.created_by) : "Agent"}
-
- {isAgent && Agent}
+ PostHog
+ Agent
@@ -452,10 +399,21 @@ const FeedItem = memo(function FeedItem({
-
-
- {prompt}
-
+
+ {/* Only attribute channel-started tasks: other origins (Slack,
+ automations) carry a created_by who didn't start it here. */}
+ {task.origin_product === "user_created" && task.created_by ? (
+ <>
+ {/* Mention-styled but rendered inert: the starter shouldn't be
+ notified about their own task. */}
+
+ @{userDisplayName(task.created_by)}
+ {" "}
+ started a new task
+ >
+ ) : (
+ "A new task was started"
+ )}
onOpenTask(task)} />
diff --git a/packages/ui/src/features/canvas/components/MentionText.tsx b/packages/ui/src/features/canvas/components/MentionText.tsx
index ffdb7834ec..ce6c4bd26a 100644
--- a/packages/ui/src/features/canvas/components/MentionText.tsx
+++ b/packages/ui/src/features/canvas/components/MentionText.tsx
@@ -8,6 +8,12 @@ type RenderSegment =
| { type: "link"; text: string; href: string }
| { type: "mention"; name: string; email: string };
+// The plain (not-the-viewer) mention chip look, also used by surfaces that
+// render a mention-styled name without real mention semantics (e.g. the
+// channel feed's "started a new task" row).
+export const mentionChipClass =
+ "rounded px-0.5 font-medium text-[var(--accent-11)]";
+
/**
* Thread message content with inline mention tokens rendered as highlighted
* `@Name` chips (a mention of the viewer gets the stronger treatment) and
@@ -52,11 +58,11 @@ export function MentionText({
return (
@{segment.name}