The Nessa app's Settings › Legal "Terms of Service" row had no Nessa-owned
document to resolve to: it linked another product's terms, and
nessa.freno.me/terms was a 404. Nessa sells an auto-renewing subscription, so
App Review 3.1.2 requires the app to link terms of use as well as a privacy
policy — the row has to land on a real document.
- src/routes/nessa/terms.tsx: the page, in the privacy.tsx house template
(EdgeCacheHeaders, site-aware PageHead, SubdomainHeader, subdomain-relative
internal links). Sections cover acceptance, the service and its limits,
accounts, community content and acceptable use, auto-renewable
subscriptions (payment, renewal, the 24-hour cancel window, managing it in
the App Store, trials, refunds, price changes), the Apple third-party
acknowledgements, IP, disclaimers and liability, termination, changes, and
contact.
- src/lib/sitemap-routes.ts: add /terms to the Nessa set, and update the
count assertion in sitemap-routes.test.ts to match.
Health and safety: Nessa is not a medical device, so section 2(c) says so
explicitly — the previous app-side link pointed at another product's terms,
which said nothing about Nessa's training features.
Deliberately left out, for Mike to decide rather than have me guess:
- No legal entity name and no governing-law clause. No Nessa page states
either today; the privacy policy speaks only as "we".
- No NAV_CONFIG entry, so the nav link-set matrix tests are untouched. The
route serves through the existing catch-all host rewrite in vercel.json;
adding a nav item is a one-line change plus a matrix update if wanted.