diff --git a/apps/web/app/(app)/onboarding/page.tsx b/apps/web/app/(app)/onboarding/page.tsx index ac554055..fb4403c1 100644 --- a/apps/web/app/(app)/onboarding/page.tsx +++ b/apps/web/app/(app)/onboarding/page.tsx @@ -53,7 +53,7 @@ function XIcon({ className }: { className?: string }) { fill="currentColor" aria-hidden="true" > - + ) } @@ -66,7 +66,7 @@ function LinkedInIcon({ className }: { className?: string }) { fill="currentColor" aria-hidden="true" > - + ) } @@ -76,7 +76,7 @@ function SubmitArrow() { Submit @@ -809,7 +809,7 @@ export default function OnboardingPage() { Finishing your first save

- Most finish in under a minute. Below is optional — ways to add + Most finish in under a minute. Below is optional: ways to add more later.

@@ -948,7 +948,7 @@ export default function OnboardingPage() {

Your first save is ready. When you want more, use Integrations - for browser, phone, editor, and AI tools — all in one place. + for browser, phone, editor, and AI tools, all in one place.

diff --git a/apps/web/app/(auth)/login/new/page.tsx b/apps/web/app/(auth)/login/new/page.tsx index 421d0f06..82d0fd48 100644 --- a/apps/web/app/(auth)/login/new/page.tsx +++ b/apps/web/app/(auth)/login/new/page.tsx @@ -313,7 +313,7 @@ export default function LoginPage() { Google @@ -378,7 +378,7 @@ export default function LoginPage() { @@ -399,7 +399,7 @@ export default function LoginPage() { diff --git a/apps/web/app/api/emails/welcome/route.tsx b/apps/web/app/api/emails/welcome/route.tsx index d8f6c59f..ecc26964 100644 --- a/apps/web/app/api/emails/welcome/route.tsx +++ b/apps/web/app/api/emails/welcome/route.tsx @@ -3,7 +3,7 @@ import { ImageResponse } from "next/og" export async function GET() { return new ImageResponse( -
+
Google Logo
-
+
{pluginInfo ? ( {pluginInfo.name}
-
+
{pluginInfo ? ( {pluginInfo.name} - Upgrading... + Upgrading… ) : ( "Upgrade to Pro \u2014 $19/month" @@ -418,9 +418,9 @@ function AuthConnectContent() {

- {status === "creating" && `Connecting ${displayName}...`} + {status === "creating" && `Connecting ${displayName}…`} {status === "success" && - `Success! Redirecting back to ${displayName}...`} + `Success! Redirecting back to ${displayName}…`}

diff --git a/apps/web/app/ref/[code]/page.tsx b/apps/web/app/ref/[code]/page.tsx index 2086d6b4..23f5ce3a 100644 --- a/apps/web/app/ref/[code]/page.tsx +++ b/apps/web/app/ref/[code]/page.tsx @@ -82,8 +82,8 @@ export default function ReferralPage() { return (
- -

Checking invitation...

+ +

Checking invitation…

) @@ -119,8 +119,8 @@ export default function ReferralPage() { {/* Welcome Card */} -
- +
+
You're invited to supermemory! @@ -181,9 +181,9 @@ export default function ReferralPage() { className="shrink-0 border-white/10 hover:bg-white/5" > {copiedLink ? ( - + ) : ( - + )}
@@ -193,7 +193,7 @@ export default function ReferralPage() { variant="outline" className="w-full border-white/10 text-white hover:bg-white/5" > - + Share this link
diff --git a/apps/web/app/ref/page.tsx b/apps/web/app/ref/page.tsx index 853ed900..9c97cdd6 100644 --- a/apps/web/app/ref/page.tsx +++ b/apps/web/app/ref/page.tsx @@ -16,8 +16,8 @@ export default function ReferralHomePage() {
-
- +
+
Missing Referral Code diff --git a/apps/web/app/upgrade-mcp/page.tsx b/apps/web/app/upgrade-mcp/page.tsx index 0b4fb05b..fbe52520 100644 --- a/apps/web/app/upgrade-mcp/page.tsx +++ b/apps/web/app/upgrade-mcp/page.tsx @@ -152,7 +152,7 @@ export default function MigrateMCPPage() {
- +
@@ -177,7 +177,7 @@ export default function MigrateMCPPage() { className="text-sm font-medium text-slate-200 flex items-center gap-2" htmlFor="mcpUrl" > - + MCP URL
@@ -231,13 +231,13 @@ export default function MigrateMCPPage() { > {migrateMutation.isPending ? ( <> - - Migrating documents... + + Migrating documents… ) : ( <> Start Upgrade - + )} @@ -260,7 +260,7 @@ export default function MigrateMCPPage() {
- +

Migration completed successfully!

diff --git a/apps/web/components/add-document/connections.tsx b/apps/web/components/add-document/connections.tsx index 5814f55c..955a0345 100644 --- a/apps/web/components/add-document/connections.tsx +++ b/apps/web/components/add-document/connections.tsx @@ -409,7 +409,7 @@ export function ConnectContent({ selectedProject }: ConnectContentProps) { className="bg-[#14161A] rounded-[12px] px-4 py-3 flex items-center justify-between gap-3" >
- +

{config.title}

@@ -431,7 +431,7 @@ export function ConnectContent({ selectedProject }: ConnectContentProps) { className="bg-[#4BA0FA] text-black hover:bg-[#4BA0FA]/90 text-[14px] font-medium px-3 h-8 disabled:opacity-50 disabled:cursor-not-allowed transition-colors" > {isConnecting ? ( - + ) : ( "Connect" )} @@ -443,7 +443,7 @@ export function ConnectContent({ selectedProject }: ConnectContentProps) { type="button" className="bg-[#4BA0FA] text-black hover:bg-[#4BA0FA]/90 px-1.5 h-8 flex items-center transition-colors" > - + @@ -463,7 +463,7 @@ export function ConnectContent({ selectedProject }: ConnectContentProps) { > {label} {gdriveSyncScope === scope && ( - + )} ))} @@ -483,7 +483,7 @@ export function ConnectContent({ selectedProject }: ConnectContentProps) { className="bg-[#4BA0FA] text-black hover:bg-[#4BA0FA]/90 text-[14px] font-medium px-3 py-1.5 h-8" > {isConnecting ? ( - + ) : ( "Connect" )} @@ -524,7 +524,7 @@ export function ConnectContent({ selectedProject }: ConnectContentProps) { className="flex items-center gap-1.5 bg-[#4BA0FA] text-black hover:bg-[#4BA0FA]/90 disabled:opacity-50 disabled:cursor-not-allowed text-[13px] font-medium rounded-full h-8 px-3 transition-colors shrink-0" > {isAnyConnecting ? ( - + ) : ( <> + Add a connection @@ -650,14 +650,14 @@ export function ConnectContent({ selectedProject }: ConnectContentProps) { id="no-active-connections" className="bg-[#14161A] shadow-inside-out rounded-[12px] px-4 py-6 h-full mb-4 flex flex-col justify-center items-center" > - + {!isProUser ? ( <>

{isUpgrading || autumn.isLoading ? ( - - Upgrading... + + Upgrading… ) : ( <> @@ -676,19 +676,19 @@ export function ConnectContent({ selectedProject }: ConnectContentProps) {

- + Unlimited memories
- + 10 connections
- + Advanced search
- + Priority support
diff --git a/apps/web/components/add-document/file.tsx b/apps/web/components/add-document/file.tsx index 67e70d01..b9212bc3 100644 --- a/apps/web/components/add-document/file.tsx +++ b/apps/web/components/add-document/file.tsx @@ -210,10 +210,10 @@ export function FileContent({ multiple onChange={handleFileSelect} disabled={isSubmitting} - className="absolute inset-0 w-full h-full opacity-0 cursor-pointer disabled:cursor-not-allowed" + className="absolute inset-0 size-full opacity-0 cursor-pointer disabled:cursor-not-allowed" accept={FILE_ACCEPT} /> -
+
{hasItems ? ( diff --git a/apps/web/components/add-document/index.tsx b/apps/web/components/add-document/index.tsx index ee7efee9..eb286cff 100644 --- a/apps/web/components/add-document/index.tsx +++ b/apps/web/components/add-document/index.tsx @@ -311,54 +311,27 @@ export function AddDocument({
{isMobile && ( -
-
- - Plan usage - - - {isLoadingUsage +
+ 0 ? "< 1" : Math.round(planUsagePct)}% used`} - -
-
-
80 - ? "#ef4444" - : hasPaidPlan - ? "linear-gradient(to right, #4BA0FA 80%, #002757 100%)" - : "#0054AD", - }} - title={`${formatUsageNumber(tokensUsed)} tokens · ${formatUsageNumber(searchesUsed)} queries`} - /> -
- {!isLoadingUsage && ( -

- {formatUsageNumber(tokensUsed)} tokens ·{" "} - {formatUsageNumber(searchesUsed)} queries -

- )} + : `${tokensToCredits(tokensUsed)} / ${tokensToCredits(tokensLimit)}` + } + percent={tokensPercent} + active={hasPaidPlan} + /> +
)} @@ -448,7 +421,7 @@ export function AddDocument({ {isUpgrading ? ( <> - Upgrading... + Upgrading… ) : ( "Upgrade to Pro" @@ -545,7 +518,7 @@ export function AddDocument({ {isSubmitting ? ( <> - Adding... + Adding… ) : ( <> diff --git a/apps/web/components/add-document/link.tsx b/apps/web/components/add-document/link.tsx index 2efb67dc..93e8821a 100644 --- a/apps/web/components/add-document/link.tsx +++ b/apps/web/components/add-document/link.tsx @@ -173,7 +173,7 @@ export function LinkContent({ {isPreviewLoading ? ( <> - Loading... + Loading… ) : ( "Preview Link" @@ -216,7 +216,7 @@ export function LinkContent({ {title { e.currentTarget.style.display = "none" e.currentTarget.parentElement?.classList.add("opacity-50") @@ -228,7 +228,7 @@ export function LinkContent({
) : (
- +
)}
diff --git a/apps/web/components/add-space-modal.tsx b/apps/web/components/add-space-modal.tsx index be666083..7c9f3cf3 100644 --- a/apps/web/components/add-space-modal.tsx +++ b/apps/web/components/add-space-modal.tsx @@ -150,7 +150,7 @@ export function AddSpaceModal({

- Creating... + Creating… ) : ( <> diff --git a/apps/web/components/chat/index.tsx b/apps/web/components/chat/index.tsx index 4a148929..8ef1d22c 100644 --- a/apps/web/components/chat/index.tsx +++ b/apps/web/components/chat/index.tsx @@ -69,12 +69,12 @@ function ChatEmptyStatePlaceholder({ id="chat-empty-state" className="flex flex-col items-center justify-center h-full" > -
- - +
+ +
-

Ask me anything about your memories...

+

Ask me anything about your memories…

{isLoadingThreads ? (
- +
) : threads.length === 0 ? (
@@ -659,7 +659,7 @@ export function ChatSidebar({ e.stopPropagation() deleteThread(thread.id) }} - className="h-7 w-7 bg-red-500 text-white hover:bg-red-600" + className="size-7 bg-red-500 text-white hover:bg-red-600" > @@ -671,7 +671,7 @@ export function ChatSidebar({ e.stopPropagation() setConfirmingDeleteId(null) }} - className="h-7 w-7" + className="size-7" > @@ -685,7 +685,7 @@ export function ChatSidebar({ e.stopPropagation() setConfirmingDeleteId(thread.id) }} - className="ml-2 h-7 w-7" + className="ml-2 size-7" > @@ -883,7 +883,7 @@ export function ChatSidebar({ ))} {(status === "submitted" || status === "streaming") && (
- +
)}
@@ -965,10 +965,10 @@ export function ChatSidebar({ isResponding={status === "submitted" || status === "streaming"} activeStatus={ status === "submitted" - ? "Thinking..." + ? "Thinking…" : status === "streaming" - ? "Structuring response..." - : "Waiting for input..." + ? "Structuring response…" + : "Waiting for input…" } onExpandedChange={setIsInputExpanded} chainOfThoughtComponent={ diff --git a/apps/web/components/chat/input/actions.tsx b/apps/web/components/chat/input/actions.tsx index 44f8132f..f8122f8e 100644 --- a/apps/web/components/chat/input/actions.tsx +++ b/apps/web/components/chat/input/actions.tsx @@ -29,7 +29,7 @@ export function SendButton({ > Send Icon diff --git a/apps/web/components/chat/message/agent-message.tsx b/apps/web/components/chat/message/agent-message.tsx index 28f34919..63fb84f5 100644 --- a/apps/web/components/chat/message/agent-message.tsx +++ b/apps/web/components/chat/message/agent-message.tsx @@ -165,11 +165,9 @@ function BashToolDisplay({ part }: { part: ToolCallDisplayPart }) { : "text-white/70", )} > - {cmd ?? "..."} + {cmd ?? "…"} - {isLoading && ( - running... - )} + {isLoading && running…} {isDone && !hasOutput && ( done )} @@ -261,7 +259,7 @@ function ToolCallDisplay({ part }: { part: ToolCallDisplayPart }) { > {label} - {isLoading && running...} + {isLoading && running…} {isDone && done} {isError && error} {expanded ? ( diff --git a/apps/web/components/connect-ai-modal.tsx b/apps/web/components/connect-ai-modal.tsx index 70487cd6..b0691258 100644 --- a/apps/web/components/connect-ai-modal.tsx +++ b/apps/web/components/connect-ai-modal.tsx @@ -351,7 +351,7 @@ export function ConnectAIModal({ {/* Step 1: Client Selection */}
-
+
1

Select Your AI Client

@@ -373,7 +373,7 @@ export function ConnectAIModal({ type="button" >
-
+
{clientName} { analytics.mcpInstallCmdCopied() - toast.success("Opening Cursor installer...") + toast.success("Opening Cursor installer…") }} > {createMcpApiKeyMutation.isPending ? (
- +
) : ( <> @@ -684,7 +684,7 @@ export function ConnectAIModal({ @@ -919,8 +919,8 @@ export function ConnectAIModal({ > {migrateMCPMutation.isPending ? ( <> - - Migrating... + + Migrating… ) : ( "Migrate" diff --git a/apps/web/components/dashboard-view.tsx b/apps/web/components/dashboard-view.tsx index a29faf88..8649899b 100644 --- a/apps/web/components/dashboard-view.tsx +++ b/apps/web/components/dashboard-view.tsx @@ -454,7 +454,7 @@ function MemoryOfDayCard({ data }: { data: MemoryOfDay }) { type="button" onClick={() => router.push(href)} className={cn( - "group w-full h-full text-left bg-surface-card/60 backdrop-blur-md rounded-[18px] p-3 flex flex-col justify-between transition-colors cursor-pointer shadow-[0_12px_40px_rgba(0,0,0,0.22)]", + "group size-full text-left bg-surface-card/60 backdrop-blur-md rounded-[18px] p-3 flex flex-col justify-between transition-colors cursor-pointer shadow-[0_12px_40px_rgba(0,0,0,0.22)]", dmSansClassName(), )} > @@ -873,7 +873,7 @@ export function DashboardView({ onClick={() => onOpenDocument(doc)} className="group flex w-full items-center gap-3 rounded-lg px-2.5 py-2 text-left transition-colors hover:bg-surface-hover" > -
+
{isLink ? ( ) : ( diff --git a/apps/web/components/document-cards/file-preview.tsx b/apps/web/components/document-cards/file-preview.tsx index 9965d9be..2f0015fa 100644 --- a/apps/web/components/document-cards/file-preview.tsx +++ b/apps/web/components/document-cards/file-preview.tsx @@ -95,7 +95,7 @@ export const FilePreview = memo(function FilePreview({ key={retryKey} src={document.url} alt={document.title || "Image preview"} - className="relative max-w-full max-h-full w-auto h-auto object-contain z-10" + className="relative max-w-full max-h-full size-auto object-contain z-10" onError={handleImageError} loading="lazy" /> @@ -106,7 +106,7 @@ export const FilePreview = memo(function FilePreview({

{label} diff --git a/apps/web/components/document-cards/note-preview.tsx b/apps/web/components/document-cards/note-preview.tsx index ef16948b..34bcadba 100644 --- a/apps/web/components/document-cards/note-preview.tsx +++ b/apps/web/components/document-cards/note-preview.tsx @@ -13,7 +13,7 @@ export function NotePreview({ document }: { document: DocumentWithMemories }) { return (

- +

Note

diff --git a/apps/web/components/document-cards/notion-preview.tsx b/apps/web/components/document-cards/notion-preview.tsx index f514e4aa..aebc4edc 100644 --- a/apps/web/components/document-cards/notion-preview.tsx +++ b/apps/web/components/document-cards/notion-preview.tsx @@ -73,9 +73,9 @@ export function NotionPreview({
{/* Decorative dots mimicking Notion's block handles */}
-
-
-
+
+
+
@@ -118,7 +118,7 @@ export function NotionPreview({
@@ -159,7 +159,7 @@ export function NotionPreview({ if (block.type === "bullet") { return (
-
+

{block.text}

diff --git a/apps/web/components/document-cards/tweet-preview.tsx b/apps/web/components/document-cards/tweet-preview.tsx index ba3b8d0f..807ba5b9 100644 --- a/apps/web/components/document-cards/tweet-preview.tsx +++ b/apps/web/components/document-cards/tweet-preview.tsx @@ -105,7 +105,7 @@ function CustomTweetMedia({ Tweet media {isVideo && (
diff --git a/apps/web/components/document-cards/website-preview.tsx b/apps/web/components/document-cards/website-preview.tsx index 067004fc..509b1e64 100644 --- a/apps/web/components/document-cards/website-preview.tsx +++ b/apps/web/components/document-cards/website-preview.tsx @@ -32,7 +32,7 @@ export const WebsitePreview = memo(function WebsitePreview({ {document.title setImageError(true)} loading="lazy" /> diff --git a/apps/web/components/document-cards/youtube-preview.tsx b/apps/web/components/document-cards/youtube-preview.tsx index 008ce35d..14089661 100644 --- a/apps/web/components/document-cards/youtube-preview.tsx +++ b/apps/web/components/document-cards/youtube-preview.tsx @@ -42,7 +42,7 @@ export const YoutubePreview = memo(function YoutubePreview({