diff --git a/apps/mobile/src/agent-ui.tsx b/apps/mobile/src/agent-ui.tsx
index ead833976..3f5716093 100644
--- a/apps/mobile/src/agent-ui.tsx
+++ b/apps/mobile/src/agent-ui.tsx
@@ -164,21 +164,6 @@ export function TaskCard({
);
}
-export function ChatWork() {
- const { data } = useAgentWorkspace();
- const tasks = [...(data?.tasks || [])]
- .filter(activeTask)
- .sort((a, b) => b.createdAt.localeCompare(a.createdAt))
- .slice(0, 2);
- if (!tasks.length) return null;
- return (
-
- {tasks.map((task) => (
-
- ))}
-
- );
-}
export function AgentActivityScreen() {
const { data } = useAgentWorkspace();
const [filter, setFilter] = useState("All");
diff --git a/apps/mobile/src/chat.tsx b/apps/mobile/src/chat.tsx
index 746ce12d2..fb04389ee 100644
--- a/apps/mobile/src/chat.tsx
+++ b/apps/mobile/src/chat.tsx
@@ -94,8 +94,8 @@ export function WorkspaceTools() {
name: "use_desktop",
description: "Show the agent working on the computer's desktop",
parameters: displayParameters,
- render: ({ toolCallId, result, status }) => (
-
+ render: ({ result, status }) => (
+
),
});
useRenderTool({
@@ -653,7 +653,6 @@ export function ChatScreen({
{!!latestDesktop && (
message.role === "tool" && message.toolCallId === latestDesktop,
diff --git a/apps/mobile/src/desktop-tool-card.tsx b/apps/mobile/src/desktop-tool-card.tsx
index cce31a1a6..2f8e07cf3 100644
--- a/apps/mobile/src/desktop-tool-card.tsx
+++ b/apps/mobile/src/desktop-tool-card.tsx
@@ -30,7 +30,6 @@ export function DesktopToolCard({
live = false,
loading,
}: {
- toolCallId: string;
live?: boolean;
result: unknown;
loading: boolean;
diff --git a/apps/mobile/src/screens.tsx b/apps/mobile/src/screens.tsx
index 5f2345a84..b1357dc6b 100644
--- a/apps/mobile/src/screens.tsx
+++ b/apps/mobile/src/screens.tsx
@@ -4,7 +4,6 @@ import {
ArrowDownToLine,
ArrowUpRight,
CalendarDays,
- Check,
CheckCheck,
ChevronLeft,
ChevronRight,
@@ -29,7 +28,6 @@ import {
Pressable,
Text,
TextInput,
- useWindowDimensions,
View,
} from "react-native";
import type {
@@ -51,7 +49,6 @@ import {
ErrorNotice,
IconButton,
LinkRow,
- Mascot,
relativeDate,
resultSummary,
SectionHeading,
@@ -68,322 +65,6 @@ function todayDate() {
function eventDate(event: CalendarEvent) {
return event.allDay ? event.start : localDateTime(event.start, event.timeZone).date;
}
-export function TodayScreen() {
- const { workspace: w, navigate, open, ask } = useWorkspace();
- const wide = useWindowDimensions().width > 1180;
- const pending = w.actions.filter((a) => a.status === "awaiting_review");
- const unread = w.mail.filter((m) => m.unread);
- const today = todayDate();
- const events = w.events
- .filter((e) => eventDate(e) === today)
- .sort((a, b) => a.start.localeCompare(b.start));
- return (
-
-
-
-
-
- A little clarity, every day
-
-
- Your day, with a little{"\n"}more room to breathe.
-
-
- {events.length ? `${events.length} things on your calendar` : "Your calendar has room"}
- {unread.length ? `, ${unread.length} unread emails` : ""}.{"\n"}Let’s make space for
- what matters.
-
-
-
- {wide && (
-
-
-
-
-
-
- A lighter day
-
-
-
- Everything, together
-
-
- )}
-
-
- {[
- {
- label: "UNREAD EMAILS",
- value: unread.length,
- note: "A fresh look at your inbox",
- icon: Mail,
- section: "mail" as const,
- tint: colors.sky,
- },
- {
- label: "ON THE CALENDAR",
- value: events.length,
- note: "Make room for your priorities",
- icon: CalendarDays,
- section: "calendar" as const,
- tint: colors.green,
- },
- {
- label: "WAITING FOR YOU",
- value: pending.length,
- note: "Your review keeps things moving",
- icon: ShieldCheck,
- section: "activity" as const,
- tint: colors.lavender,
- },
- ].map((item) => (
- navigate(item.section)}
- style={{ flex: 1, minWidth: 180 }}
- >
-
-
- {item.label}
-
-
-
-
-
- {String(item.value).padStart(2, "0")}
-
- {item.note}
-
-
- ))}
-
-
-
- navigate("calendar")}
- />
- {events.length ? (
- events.slice(0, 3).map((e, i) => )
- ) : (
-
- )}
- open({ type: "event" })}
- style={[
- s.row,
- {
- gap: 8,
- paddingTop: 15,
- marginTop: 9,
- borderTopWidth: 1,
- borderTopColor: colors.line,
- },
- ]}
- >
-
- Make time for something
-
-
-
- navigate("mail")}
- />
- {w.mail.length ? (
- w.mail.slice(0, 3).map((m, i) => (
- open({ type: "mail", mail: m })}
- style={[
- s.row,
- {
- gap: 12,
- paddingVertical: 13,
- borderTopWidth: i ? 1 : 0,
- borderTopColor: colors.line,
- },
- ]}
- >
-
-
-
- {m.sender}
- {timeLabel(m.date)}
-
-
- {m.subject}
-
-
- {m.body.replace(/\n/g, " ")}
-
-
- {m.unread && (
-
- )}
-
- ))
- ) : (
-
- )}
-
-
-
-
-
-
- Start with a thought. We’ll take it from there.
-
- {[
- "What needs my attention today?",
- "Help me catch up on my inbox",
- "Show my recent documents",
- ].map((prompt) => (
- ask(prompt)}
- style={[
- s.between,
- { borderTopWidth: 1, borderTopColor: "#E1E2D9", paddingVertical: 13 },
- ]}
- >
- {prompt}
-
-
- ))}
-
-
- navigate("activity")}
- />
- {pending.length
- ? pending
- .slice(0, 3)
- .map((a) => (
- open({ type: "review", action: a })}
- icon={ShieldCheck}
- tint={colors.lavender}
- />
- ))
- : w.activity.slice(0, 3).map((a) => (
-
-
-
-
-
- {a.title}
- {relativeDate(a.date)}
-
-
- ))}
- {!pending.length && !w.activity.length && (
-
- Your workspace is ready. Things you do here will appear in your activity.
-
- )}
-
-
-
- );
-}
function Avatar({ name, index = 0 }: { name: string; index?: number }) {
return (
;
-}
-
export type { ComputerCommand, ComputerDirectory, ComputerSnapshot } from "./computer.ts";