0
) {
return (
-
+
{props.scratchpad.map((note, i) => (
-
-
+
{renderHeaderIcon()}
{renderHeaderContent()}
@@ -707,15 +708,24 @@ function ActionItem(props: ActionItemProps) {
- {renderContent()}
+
+ {expanded && (
+
+ {renderContent()}
+
+ )}
+
);
}
export function ActionStep(props: ActionStepProps) {
- const [showReasoning, setShowReasoning] = useState(true);
- const [showSummary, setShowSummary] = useState(true);
-
const reasoningText =
"reasoningText" in props ? props.reasoningText : undefined;
const summaryText = "summaryText" in props ? props.summaryText : undefined;
@@ -724,21 +734,41 @@ export function ActionStep(props: ActionStepProps) {
(action: ActionItemProps) => action.status === "done",
);
+ const [showReasoning, setShowReasoning] = useState(!!reasoningText);
+ const [showSummary, setShowSummary] = useState(!!summaryText);
+
return (
-
-
+
+
- {showReasoning && (
-
- {reasoningText || "No reasoning provided."}
-
- )}
+
+ {showReasoning && (
+
+
+
+ {reasoningText || "No reasoning provided."}
+
+
+
+ )}
+
@@ -751,19 +781,36 @@ export function ActionStep(props: ActionStepProps) {
{summaryText && anyActionDone && (
-
+
- {showSummary && (
-
- {summaryText}
-
- )}
+
+ {showSummary && (
+
+
+
+ {summaryText}
+
+
+
+ )}
+
)}
diff --git a/apps/web/src/components/gen-ui/code-review-started.tsx b/apps/web/src/components/gen-ui/code-review-started.tsx
index 7ea91f5b..2b71a13b 100644
--- a/apps/web/src/components/gen-ui/code-review-started.tsx
+++ b/apps/web/src/components/gen-ui/code-review-started.tsx
@@ -1,8 +1,8 @@
"use client";
-import { Sparkles } from "lucide-react";
+import { FileSearch } from "lucide-react";
import { Badge } from "../ui/badge";
-import { Check } from "lucide-react";
+import { Clock } from "lucide-react";
import { cn } from "@/lib/utils";
type CodeReviewStartedProps = {
@@ -13,36 +13,34 @@ export function CodeReviewStarted({ status = "done" }: CodeReviewStartedProps) {
return (
{/* Header */}
-
-
+
+
-
- Code review started
-
+ Code review
-
- In Progress
+
+ In progress
-
- Analyzing code for best practices and potential improvements
+
+ Analyzing code quality
diff --git a/apps/web/src/components/gen-ui/conversation-summary.tsx b/apps/web/src/components/gen-ui/conversation-summary.tsx
index dd9e4427..4a5302c7 100644
--- a/apps/web/src/components/gen-ui/conversation-summary.tsx
+++ b/apps/web/src/components/gen-ui/conversation-summary.tsx
@@ -1,5 +1,6 @@
import { FileText, ChevronDown, Check } from "lucide-react";
import { useState } from "react";
+import { AnimatePresence, motion } from "framer-motion";
import { MarkdownText } from "../thread/markdown-text";
import { cn } from "@/lib/utils";
import { Button } from "../ui/button";
@@ -15,18 +16,18 @@ export function ConversationHistorySummary({ summary }: { summary: string }) {
return (
{/* Header */}
-
+
@@ -37,7 +38,7 @@ export function ConversationHistorySummary({ summary }: { summary: string }) {
Complete
@@ -64,13 +65,23 @@ export function ConversationHistorySummary({ summary }: { summary: string }) {
{/* Content */}
- {expanded && (
-
- )}
+
+ {expanded && (
+
+
+
+ )}
+
);
}
diff --git a/apps/web/src/components/gen-ui/pull-request-opened.tsx b/apps/web/src/components/gen-ui/pull-request-opened.tsx
index f9458174..9fd34322 100644
--- a/apps/web/src/components/gen-ui/pull-request-opened.tsx
+++ b/apps/web/src/components/gen-ui/pull-request-opened.tsx
@@ -1,6 +1,7 @@
"use client";
import { useState } from "react";
+import { AnimatePresence, motion } from "framer-motion";
import {
GitPullRequest,
Loader2,
@@ -43,7 +44,7 @@ export function PullRequestOpened({
return (
Preparing
@@ -53,7 +54,7 @@ export function PullRequestOpened({
return (
Opening
@@ -64,7 +65,7 @@ export function PullRequestOpened({
return (
Draft
@@ -74,7 +75,7 @@ export function PullRequestOpened({
return (
Opened
@@ -110,18 +111,18 @@ export function PullRequestOpened({
return (
{/* Header */}
-
+
{isDraft ? (
) : (
@@ -178,18 +179,28 @@ export function PullRequestOpened({
{/* Content */}
- {expanded && description && status === "done" && (
-
-
-
- Description
-
-
- {description}
-
-
-
- )}
+
+ {expanded && description && status === "done" && (
+
+
+
+
+ Description
+
+
+ {description}
+
+
+
+
+ )}
+
);
}
diff --git a/apps/web/src/components/gen-ui/push-changes.tsx b/apps/web/src/components/gen-ui/push-changes.tsx
index 7c7d7fc6..366b17f7 100644
--- a/apps/web/src/components/gen-ui/push-changes.tsx
+++ b/apps/web/src/components/gen-ui/push-changes.tsx
@@ -72,16 +72,16 @@ export function PushChanges({
return (
{reasoningText && (
-
+
{showReasoning && (
-
+
{reasoningText}
)}
diff --git a/apps/web/src/components/gen-ui/replanning-step.tsx b/apps/web/src/components/gen-ui/replanning-step.tsx
index 0af524ec..ca8a315f 100644
--- a/apps/web/src/components/gen-ui/replanning-step.tsx
+++ b/apps/web/src/components/gen-ui/replanning-step.tsx
@@ -34,7 +34,9 @@ export function ReplanningStep({
case "generating":
return ;
case "done":
- return ;
+ return (
+
+ );
}
};
@@ -52,16 +54,16 @@ export function ReplanningStep({
return (
{reasoningText && (
-
+
{showReasoning && (
-
+
{reasoningText}
)}
diff --git a/apps/web/src/components/gen-ui/task-review.tsx b/apps/web/src/components/gen-ui/task-review.tsx
index 4be30231..a0eb5426 100644
--- a/apps/web/src/components/gen-ui/task-review.tsx
+++ b/apps/web/src/components/gen-ui/task-review.tsx
@@ -42,7 +42,7 @@ export function MarkTaskCompleted({
);
case "done":
return (
-
+
);
}
};
@@ -61,16 +61,16 @@ export function MarkTaskCompleted({
return (
{reasoningText && (
-
+
{showReasoning && (
-
+
{reasoningText}
)}
@@ -185,10 +185,10 @@ export function MarkTaskIncomplete({
return (
{reasoningText && (
-
+
diff --git a/apps/web/src/components/plan/proposed-plan.tsx b/apps/web/src/components/plan/proposed-plan.tsx
index bedb6577..f361e860 100644
--- a/apps/web/src/components/plan/proposed-plan.tsx
+++ b/apps/web/src/components/plan/proposed-plan.tsx
@@ -1,8 +1,8 @@
import { PlanViewer } from "./plan-viewer";
-import { Button } from "../ui/button";
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";
export function ProposedPlan({
originalPlanItems,
@@ -28,21 +28,32 @@ export function ProposedPlan({
setPlanItems={setPlanItems}
isProposedPlan={true}
/>
-
-
- {changesMade ? "Submit" : "Approve"}
-
-
- Reject
-
+
+
+
+
+
+
+
+ Reject
+
+
+
+
+
+
+ {changesMade ? "Submit changes" : "Continue"}
+
+
+
);
diff --git a/apps/web/src/components/tasks/index.tsx b/apps/web/src/components/tasks/index.tsx
index b5397126..ca6bd19b 100644
--- a/apps/web/src/components/tasks/index.tsx
+++ b/apps/web/src/components/tasks/index.tsx
@@ -102,10 +102,12 @@ export function TasksSidebar({
switch (state) {
case "completed":
return (
-
+
);
case "current":
- return
;
+ return (
+
+ );
default:
return
;
}
@@ -140,7 +142,7 @@ export function TasksSidebar({
return (
@@ -161,7 +163,7 @@ export function TasksSidebar({
variant="ghost"
size="sm"
onClick={onClose}
- className="h-8 w-8 p-0 hover:bg-gray-100 dark:hover:bg-gray-800"
+ className="h-8 w-8 p-0 hover:bg-gray-100 dark:hover:bg-gray-700/50"
>
@@ -174,7 +176,7 @@ export function TasksSidebar({
Task