diff --git a/apps/web/app/(app)/[emailAccountId]/assistant/Rules.tsx b/apps/web/app/(app)/[emailAccountId]/assistant/Rules.tsx
index e5e02eefff..2f6e373d5d 100644
--- a/apps/web/app/(app)/[emailAccountId]/assistant/Rules.tsx
+++ b/apps/web/app/(app)/[emailAccountId]/assistant/Rules.tsx
@@ -17,12 +17,7 @@ import {
import { useMemo } from "react";
import { LoadingContent } from "@/components/LoadingContent";
import { Button } from "@/components/ui/button";
-import {
- Card,
- CardContent,
- CardDescription,
- CardHeader,
-} from "@/components/ui/card";
+import { Card, CardDescription, CardHeader } from "@/components/ui/card";
import {
DropdownMenu,
DropdownMenuContent,
@@ -494,7 +489,7 @@ export function Rules({
) : (
-
+
)}
@@ -551,21 +546,11 @@ export function ActionBadges({
);
}
-function NoRules({ onCreateRule }: { onCreateRule: () => void }) {
+function NoRules() {
return (
- <>
-
-
- You don't have any rules yet.
-
- You can teach your AI assistant how to handle your emails by chatting
- with it or create rules manually.
-
-
-
-
-
- >
+
+ You don't have any rules yet.
+
);
}
diff --git a/apps/web/app/(app)/[emailAccountId]/setup/SetupContent.tsx b/apps/web/app/(app)/[emailAccountId]/setup/SetupContent.tsx
index 8ce6998ae5..65e468daaa 100644
--- a/apps/web/app/(app)/[emailAccountId]/setup/SetupContent.tsx
+++ b/apps/web/app/(app)/[emailAccountId]/setup/SetupContent.tsx
@@ -10,6 +10,7 @@ import {
type LucideIcon,
ChromeIcon,
} from "lucide-react";
+import { useLocalStorage } from "usehooks-ts";
import { PageHeading, SectionDescription } from "@/components/Typography";
import { Card } from "@/components/ui/card";
import { prefixPath } from "@/utils/path";
@@ -112,6 +113,8 @@ const StepItem = ({
completed,
actionText,
linkProps,
+ onMarkDone,
+ showMarkDone,
}: {
href: string;
icon: React.ReactNode;
@@ -122,12 +125,18 @@ const StepItem = ({
completed: boolean;
actionText: string;
linkProps?: { target?: string; rel?: string };
+ onMarkDone?: () => void;
+ showMarkDone?: boolean;
}) => {
+ const handleMarkDone = (e: React.MouseEvent) => {
+ e.preventDefault();
+ e.stopPropagation();
+ onMarkDone?.();
+ };
+
return (
-
@@ -144,7 +153,7 @@ const StepItem = ({
-
+
{completed ? (
) : (
-
- {actionText}
-
+ <>
+ {showMarkDone && (
+
+ )}
+
+
+ {actionText}
+
+ >
)}
-
+
);
};
@@ -182,6 +207,15 @@ function Checklist({
isBulkUnsubscribeConfigured: boolean;
isAiAssistantConfigured: boolean;
}) {
+ const [isExtensionInstalled, setIsExtensionInstalled] = useLocalStorage(
+ "inbox-zero-extension-installed",
+ false,
+ );
+
+ const handleMarkExtensionDone = () => {
+ setIsExtensionInstalled(true);
+ };
+
return (
@@ -217,8 +251,8 @@ function Checklist({
icon={
}
iconBg="bg-purple-100 dark:bg-purple-900/50"
iconColor="text-purple-500 dark:text-purple-400"
- title="Unsubscribe from emails you don't read"
- timeEstimate="5 minutes"
+ title="Unsubscribe from a newsletter you don't read"
+ timeEstimate="2 minutes"
completed={isBulkUnsubscribeConfigured}
actionText="View"
/>
@@ -243,8 +277,10 @@ function Checklist({
iconColor="text-orange-500 dark:text-orange-400"
title="Install the Inbox Zero Tabs extension"
timeEstimate="1 minute"
- completed={false}
+ completed={isExtensionInstalled}
actionText="Install"
+ onMarkDone={handleMarkExtensionDone}
+ showMarkDone={true}
/>
)}
diff --git a/version.txt b/version.txt
index 72bbbbb225..3e1f981c4d 100644
--- a/version.txt
+++ b/version.txt
@@ -1 +1 @@
-v2.9.19
+v2.9.20