Privacy policy, terms of service, cookie policy + a cookie notice

Three plain-language documents in both app languages (lib/legal.ts, rendered
by components/LegalPage.tsx): /privacy describes the local-first storage, the
key never leaving the browser and the three opt-in server copies (sync,
reminders, reports); /terms covers the GPL-3.0-only software, your own Ollama
key, fair use and liability; /cookies states what is true — no cookies at all
(no Set-Cookie, no document.cookie), strictly-necessary local storage instead,
no tracking.

A cookie notice tells every new browser the same thing once and remembers the
dismissal (freezmo.consent.v1). It sits at z-44: below the immersive study
feeds so it can never cover a session, above the phone tab bar. Settings links
all three documents. The regression suite checks the pages render with real
sections and that dismissing the notice sticks.

Version 0.1.7, SW -> freezmo-v53.
This commit is contained in:
Martin Dvořák 2026-10-12 21:26:55 +00:00
commit 464781a7fd
13 changed files with 583 additions and 2 deletions

20
app/privacy/page.tsx Normal file
View file

@ -0,0 +1,20 @@
import { AppHeader } from "@/components/AppHeader";
import { LegalPage } from "@/components/LegalPage";
import { Sidebar, SidebarOffset } from "@/components/Sidebar";
export const metadata = {
title: "Privacy policy",
};
export default function PrivacyPage() {
return (
<div className="flex min-h-dvh">
<Sidebar />
<SidebarOffset />
<main className="flex min-h-dvh min-w-0 flex-1 flex-col">
<AppHeader />
<LegalPage slug="privacy" />
</main>
</div>
);
}