diff --git a/README.md b/README.md index c6fa488..a35175e 100644 --- a/README.md +++ b/README.md @@ -1551,6 +1551,22 @@ Things I chose while building, with the reasoning: (one fixture per format, including a text PDF and a scanned PDF), 15/15 language preservation, 24/24 activity/scoring/feed checks and 11/11 real-model browser checks. +## Legal pages + +Freezmo ships its own plain-language documents, in both app languages, rendered by +`components/LegalPage.tsx` from `lib/legal.ts`: + +| Page | What it says | +| --- | --- | +| `/privacy` | Local-first storage, the key never leaving the browser, the three opt-in server copies (sync, reminders, reports), what the server does *not* store, and the third parties (Ollama, your browser's push service). | +| `/terms` | Free software under GPL-3.0-only with no warranty, your own Ollama key and its limits, fair use of the instance, your content, availability and liability. | +| `/cookies` | No cookies at all (verified: no `Set-Cookie`, no `document.cookie`), what the strictly-necessary local storage holds, no tracking, and how to clear it. | + +A cookie notice (`components/CookieConsent.tsx`) tells every new browser the same thing once and +remembers the dismissal (`freezmo.consent.v1`). It sits below the immersive feeds in the stacking +order, so it can never cover a study session, and above the phone tab bar. Settings links all three +documents. The documents describe what the code actually does — keep them in step with it. + ## License Freezmo is free software, licensed under the **GNU General Public License, version 3 only** diff --git a/app/cookies/page.tsx b/app/cookies/page.tsx new file mode 100644 index 0000000..788dee6 --- /dev/null +++ b/app/cookies/page.tsx @@ -0,0 +1,20 @@ +import { AppHeader } from "@/components/AppHeader"; +import { LegalPage } from "@/components/LegalPage"; +import { Sidebar, SidebarOffset } from "@/components/Sidebar"; + +export const metadata = { + title: "Cookie policy", +}; + +export default function CookiesPage() { + return ( +