/** * Lineage per-subdomain account-deletion page — `lineage.freno.me/deletion` * (see `./deletion-content.ts`). * * Migrated from `src/routes/deletion/life-and-lineage.tsx` (which is now a * 308 redirect to this public URL — see `LEGACY_DELETION_REDIRECT_TARGET`). * * Served at the public browser path `/deletion` (vercel.json host rewrites * `lineage.freno.me/*` → the internal `/lineage/*` route prefix, leaving the * browser URL clean. The nav-config "Account * Deletion" entry points at this path. * * Deletion flow: * - Reuses the shared `DeletionForm` component, now generalized to forward * a `product` discriminator to the `misc.sendDeletionRequestEmail` * mutation. For Lineage we pass `product="lineage"` + the legacy * cooldown cookie name (`deletionRequestSent`) so an in-flight cooldown * from the old `/deletion/life-and-lineage` route is honored across the * 308 redirect (no forced re-send). * - On the server, the mutation sends a Lineage-branded email to * michael@freno.me + the requester; Mike then manually drops the central * account row + the user's per-user Turso remote-save DB after the 24h * grace window (`LINEAGE_CONFIG.DELETION_GRACE_PERIOD_MS`). This is the * SAME flow the legacy page used — only the URL + branding moved. * * Site-awareness: * - `` reads `useSite()` → lineage title suffix + canonical are * derived automatically. * - No auth — the deletion request is email-based (the requester may be * locked out of their account), NOT an authenticated self-delete. * * Acceptance: `lineage.localhost:3000/deletion` renders the deletion form; * the form posts to the correct tRPC mutation (Lineage-branded email). */ import { PageHead } from "~/components/PageHead"; import { EdgeCacheHeaders } from "~/components/EdgeCacheHeaders"; import SubdomainHeader from "~/components/SubdomainHeader"; import DeletionForm from "~/components/DeletionForm"; import { DELETION_PRODUCT_KEY, DELETION_COOKIE_NAME, DELETION_GRACE_PERIOD_LABEL, PAGE_META } from "~/routes/lineage/deletion-content"; export default function LineageDeletionPage() { return ( <>
What will happen:
Once you send, if a match to the email provided is found in our system, a {DELETION_GRACE_PERIOD_LABEL} grace period is started where you can request a cancellation of the account deletion. Once the grace period ends, the account's entry in our central database will be completely removed, and your individual database storing your remote saves will also be deleted. No data related to the account is retained in any way.
); }