From d31df7c1b3156672cd99c110b6d6e376eb2e983f Mon Sep 17 00:00:00 2001
From: Assaf Barnir
Date: Sat, 19 Sep 2026 08:31:28 +0000
Subject: [PATCH] Make privacy and terms of use easier to find
Keep canonical URLs at /privacy and /terms, alias /tos, and surface both
in the footer bar, contact, about, and machine-readable indexes.
---
app/about/page.tsx | 15 +++++++++++++++
app/contact/page.tsx | 13 +++++++++++++
app/index.md/route.ts | 2 +-
app/llms.txt/route.ts | 5 +++++
components/Footer.tsx | 11 ++++++++---
next.config.ts | 6 ++++++
6 files changed, 48 insertions(+), 4 deletions(-)
diff --git a/app/about/page.tsx b/app/about/page.tsx
index e56ba36..274f2e4 100644
--- a/app/about/page.tsx
+++ b/app/about/page.tsx
@@ -104,6 +104,21 @@ export default async function AboutPage() {
explains how to use each of them.
+
+
+
Legal
+
+ How the directory handles data is on the{' '}
+
+ privacy page
+
+ . Use of the site and the public catalog API is covered by the{' '}
+
+ terms of use
+
+ .
+
diff --git a/next.config.ts b/next.config.ts
index 62daf00..360e223 100644
--- a/next.config.ts
+++ b/next.config.ts
@@ -16,6 +16,12 @@ const nextConfig: NextConfig = {
// Middleware sets Vary too, but the renderer overwrites it on the HTML
// branch, so declare it here as well — otherwise a CDN can cache the HTML
// variant and hand it to an agent that asked for Markdown.
+ async redirects() {
+ return [
+ { source: "/tos", destination: "/terms", permanent: true },
+ { source: "/TOS", destination: "/terms", permanent: true },
+ ];
+ },
async rewrites() {
return [{ source: "/SKILL.md", destination: "/skill.md" }];
},