diff --git a/apps/web/src/components/plan/proposed-plan.tsx b/apps/web/src/components/plan/proposed-plan.tsx
index f361e860..ccc9b2cd 100644
--- a/apps/web/src/components/plan/proposed-plan.tsx
+++ b/apps/web/src/components/plan/proposed-plan.tsx
@@ -2,7 +2,7 @@ import { PlanViewer } from "./plan-viewer";
import { useProposedPlan } from "../thread/agent-inbox/hooks/useProposedPlan";
import { PlanItem } from "@open-swe/shared/open-swe/types";
import { useStream } from "@langchain/langgraph-sdk/react";
-import { X, ArrowDown } from "lucide-react";
+import { X, ArrowRight } from "lucide-react";
export function ProposedPlan({
originalPlanItems,
@@ -47,7 +47,7 @@ export function ProposedPlan({
className="group flex cursor-pointer flex-col items-center gap-2 transition-all"
>
{changesMade ? "Submit changes" : "Continue"}
diff --git a/apps/web/src/components/v2/manager-chat.tsx b/apps/web/src/components/v2/manager-chat.tsx
index f856d217..9993df67 100644
--- a/apps/web/src/components/v2/manager-chat.tsx
+++ b/apps/web/src/components/v2/manager-chat.tsx
@@ -8,7 +8,6 @@ import { AnimatePresence, motion } from "framer-motion";
import { Bot, Copy, CopyCheck, ArrowUp, User, AlertCircle } from "lucide-react";
import { Textarea } from "../ui/textarea";
import { Button } from "../ui/button";
-import { cn } from "@/lib/utils";
import { isAIMessageSDK } from "@/lib/langchain-messages";
import { BasicMarkdownText } from "../thread/markdown-text";
import { ErrorState } from "./types";
@@ -70,6 +69,13 @@ interface ManagerChatProps {
isLoading: boolean;
cancelRun: () => void;
errorState?: ErrorState | null;
+ githubUser?: {
+ login: string;
+ avatar_url: string;
+ html_url: string;
+ name: string | null;
+ email: string | null;
+ };
}
function extractResponseFromMessage(message: Message): string {
@@ -93,6 +99,7 @@ export function ManagerChat({
isLoading,
cancelRun,
errorState,
+ githubUser,
}: ManagerChatProps) {
return (
@@ -112,23 +119,35 @@ export function ManagerChat({
return (
-
+
{message.type === "human" ? (
-
-
-
+ githubUser?.avatar_url ? (
+
+

+
+ ) : (
+
+
+
+ )
) : (
-
+
)}
- {message.type === "human" ? "You" : "Agent"}
+ {message.type === "human"
+ ? githubUser?.login || "You"
+ : "Open SWE"}
diff --git a/apps/web/src/components/v2/thread-view.tsx b/apps/web/src/components/v2/thread-view.tsx
index 9a7a4ef1..376222a0 100644
--- a/apps/web/src/components/v2/thread-view.tsx
+++ b/apps/web/src/components/v2/thread-view.tsx
@@ -43,6 +43,7 @@ import {
} from "@open-swe/shared/open-swe/custom-node-events";
import { StickToBottom } from "use-stick-to-bottom";
import { TokenUsage } from "./token-usage";
+import { useUser } from "@/hooks/useUser";
interface ThreadViewProps {
stream: ReturnType
>;
@@ -88,6 +89,7 @@ export function ThreadView({
displayThread,
onBackToHome,
}: ThreadViewProps) {
+ const { user } = useUser();
const [chatInput, setChatInput] = useState("");
const [selectedTab, setSelectedTab] = useState<"planner" | "programmer">(
"planner",
@@ -325,6 +327,7 @@ export function ThreadView({
isLoading={stream.isLoading}
cancelRun={cancelRun}
errorState={errorState}
+ githubUser={user || undefined}
/>
{/* Right Side - Actions & Plan */}