From 6437814f25f28c534afcc2810bcc50adf9302b77 Mon Sep 17 00:00:00 2001 From: Mahesh Sanikommu Date: Mon, 11 May 2026 13:11:04 -0700 Subject: [PATCH] feat: add X-App-Source header to Nova + remove notify checkbox (#926) Co-authored-by: Ishaan Gupta Co-authored-by: Vedant Mahajan Co-authored-by: Akhilesh Arora --- apps/web/app/layout.tsx | 1 + apps/web/components/settings/account.tsx | 24 ---------------------- apps/web/hooks/use-account-settings.ts | 4 +++- apps/web/public/images/plugins/cursor.png | Bin 0 -> 35690 bytes packages/lib/api.ts | 6 ++++++ packages/lib/auth.ts | 1 + 6 files changed, 11 insertions(+), 25 deletions(-) create mode 100644 apps/web/public/images/plugins/cursor.png diff --git a/apps/web/app/layout.tsx b/apps/web/app/layout.tsx index dfc12a0c..9b4553a8 100644 --- a/apps/web/app/layout.tsx +++ b/apps/web/app/layout.tsx @@ -54,6 +54,7 @@ export default function RootLayout({ "https://api.supermemory.ai" } includeCredentials={true} + headers={{ "X-App-Source": "nova" }} > diff --git a/apps/web/components/settings/account.tsx b/apps/web/components/settings/account.tsx index bb447a6c..30227779 100644 --- a/apps/web/components/settings/account.tsx +++ b/apps/web/components/settings/account.tsx @@ -192,7 +192,6 @@ export default function Account() { const autumn = useCustomer() const [isUpgrading, setIsUpgrading] = useState(false) const [emailConfirm, setEmailConfirm] = useState("") - const [notifyWhenDeleted, setNotifyWhenDeleted] = useState(false) const [isDeleteDialogOpen, setIsDeleteDialogOpen] = useState(false) const [isClosingAccount, setIsClosingAccount] = useState(false) const [switchingOrgId, setSwitchingOrgId] = useState(null) @@ -287,7 +286,6 @@ export default function Account() { try { await deleteUserAccount.mutateAsync({ confirmation: user.email, - notifyOnComplete: notifyWhenDeleted, }) clearActiveOrg() try { @@ -298,7 +296,6 @@ export default function Account() { } setIsDeleteDialogOpen(false) setEmailConfirm("") - setNotifyWhenDeleted(false) window.location.assign("/login/new") } catch (e) { const msg = e instanceof Error ? e.message : "Something went wrong" @@ -701,7 +698,6 @@ export default function Account() { setIsDeleteDialogOpen(open) if (!open) { setEmailConfirm("") - setNotifyWhenDeleted(false) } }} > @@ -909,26 +905,6 @@ export default function Account() { />
- diff --git a/apps/web/hooks/use-account-settings.ts b/apps/web/hooks/use-account-settings.ts index b6eea595..ca2fae62 100644 --- a/apps/web/hooks/use-account-settings.ts +++ b/apps/web/hooks/use-account-settings.ts @@ -20,6 +20,7 @@ export function useAccountMemberships() { queryFn: async () => { const res = await fetch(`${API_BASE}/v3/auth/account/memberships`, { credentials: "include", + headers: { "X-App-Source": "nova" }, }) if (!res.ok) { throw new Error("Failed to load organizations") @@ -41,6 +42,7 @@ export function useLeaveNonOwnerMemberships() { { method: "POST", credentials: "include", + headers: { "X-App-Source": "nova" }, }, ) if (!res.ok) { @@ -73,7 +75,7 @@ export function useDeleteUserAccount() { const res = await fetch(`${API_BASE}/v3/auth/account/delete`, { method: "POST", credentials: "include", - headers: { "Content-Type": "application/json" }, + headers: { "Content-Type": "application/json", "X-App-Source": "nova" }, body: JSON.stringify({ confirmation, ...(notifyOnComplete === true ? { notifyOnComplete: true } : {}), diff --git a/apps/web/public/images/plugins/cursor.png b/apps/web/public/images/plugins/cursor.png new file mode 100644 index 0000000000000000000000000000000000000000..6e4e95e6c062861d76b398b58e510c88f12b24a9 GIT binary patch literal 35690 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 literal 0 HcmV?d00001 diff --git a/packages/lib/api.ts b/packages/lib/api.ts index 169c41e5..f2d13b47 100644 --- a/packages/lib/api.ts +++ b/packages/lib/api.ts @@ -253,6 +253,12 @@ export const apiSchema = createSchema({ export const $fetch = createFetch({ baseURL: `${process.env.NEXT_PUBLIC_BACKEND_URL ?? "https://api.supermemory.ai"}/v3`, credentials: "include", + headers: { "X-App-Source": "nova" }, + onRequest: (context: { headers: Headers }) => { + if (!context.headers.has("X-App-Source")) { + context.headers.set("X-App-Source", "nova") + } + }, retry: { attempts: 3, delay: 100, diff --git a/packages/lib/auth.ts b/packages/lib/auth.ts index 081c1053..ae44e6bd 100644 --- a/packages/lib/auth.ts +++ b/packages/lib/auth.ts @@ -13,6 +13,7 @@ export const authClient = createAuthClient({ baseURL: process.env.NEXT_PUBLIC_BACKEND_URL ?? "https://api.supermemory.ai", fetchOptions: { credentials: "include", + headers: { "X-App-Source": "nova" }, }, plugins: [ usernameClient(),