Merge pull request #77 from zonghaoyuan/feat/legal-pages

feat(web): add privacy & terms pages for Google OAuth verification
This commit is contained in:
Zonghao Yuan
2026-06-14 23:06:54 +08:00
committed by GitHub
4 changed files with 427 additions and 9 deletions
+3 -3
View File
@@ -132,7 +132,7 @@ docker compose up -d
## 团队与愿景
我们是一群来自清华大学、兰州大学、西安交通大学等高校的年轻人。
我们是一群来自清华大学、兰州大学等高校的年轻人。
一方面,我们本来就是galgame、乙女游戏、FMV、AI角色扮演游戏这类游戏的深度用户,在享受游戏体验的同时,也会想象如果能选择不被预设的剧情选项,或者和对话的AI角色深度互动而不只是通过聊天软件聊天,该是多么愉快刺激的体验。
@@ -145,9 +145,9 @@ docker compose up -d
联系方式:hi@infiplot.com
欢迎扫码加入 **InfiPlot 测交流群**QQ 群号 `575404333`),一起反馈体验、参与共建:
欢迎扫码加入 **InfiPlot 测交流群**QQ 群号 `575404333`),一起反馈体验、参与共建:
<img src="public/qq-group.webp" alt="InfiPlot 测交流群 QQ 二维码" width="200" />
<img src="public/qq-group.webp" alt="InfiPlot 测交流群 QQ 二维码" width="200" />
---
+11 -6
View File
@@ -1742,7 +1742,7 @@ export default function HomePage() {
>
<i className="fa-solid fa-file-import text-sm" />
<span className="pointer-events-none absolute -bottom-8 left-1/2 -translate-x-1/2 whitespace-nowrap rounded bg-clay-900 px-2 py-1 font-sans text-[11px] text-cream-50 opacity-0 transition-opacity group-hover:opacity-100">
infiplot剧情
</span>
</button>
</div>
@@ -1846,7 +1846,7 @@ export default function HomePage() {
<div>
<p className="text-[10px] smallcaps text-clay-500 mb-3"> </p>
<p className="font-serif italic text-clay-700 text-base leading-relaxed">
西 <span className="not-italic">one-shot</span>
<span className="not-italic">oneshot</span>
</p>
</div>
@@ -1888,7 +1888,7 @@ export default function HomePage() {
<p className="text-[10px] smallcaps text-clay-500 mb-3"> </p>
<img
src="/qq-group.webp"
alt="InfiPlot 测交流群 QQ 群二维码(群号 575404333"
alt="InfiPlot 测交流群 QQ 群二维码(群号 575404333"
width={760}
height={760}
loading="lazy"
@@ -1903,9 +1903,9 @@ export default function HomePage() {
<div className="hairline-full w-full mt-14 md:mt-20 mb-12 md:mb-16" />
<p className="mx-auto max-w-3xl text-center font-sans text-xs md:text-[13px] leading-[1.85] text-clay-500">
使ing^-^
使
<br />
使
<br />
AI
{analyticsOn && (
@@ -1928,8 +1928,13 @@ export default function HomePage() {
<footer className="mx-auto w-full max-w-[1640px] px-6 md:px-16 pb-10 mt-auto">
<div className="hairline-full w-full mb-5" />
<div className="flex flex-col items-center text-[10px] smallcaps text-clay-500">
<div className="flex flex-col items-center gap-2 text-[10px] smallcaps text-clay-500">
<span>© 2026 InfiPlot. All rights reserved.</span>
<span className="flex items-center gap-3 normal-case tracking-normal text-[11px]">
<a href="/privacy" className="hover:text-ember-500 transition-colors"></a>
<span className="text-clay-300">·</span>
<a href="/terms" className="hover:text-ember-500 transition-colors"></a>
</span>
</div>
</footer>
+217
View File
@@ -0,0 +1,217 @@
import type { Metadata } from "next";
import Link from "next/link";
export const metadata: Metadata = {
title: "隐私政策 — InfiPlot",
description: "InfiPlot 隐私政策:了解我们如何收集、使用和保护您的个人信息。",
};
export default function PrivacyPage() {
return (
<main className="mx-auto w-full max-w-3xl px-6 md:px-16 py-16 md:py-24">
<Link
href="/"
className="inline-flex items-center gap-2 text-clay-500 hover:text-ember-500 transition-colors text-sm mb-12"
>
<i className="fa-solid fa-arrow-left text-xs" />
<span></span>
</Link>
<h1 className="font-serif text-3xl md:text-4xl text-clay-900 mb-4">
</h1>
<p className="text-sm text-clay-500 mb-12">
2026 6 14 &nbsp;|&nbsp; 2026 6 14
</p>
<div className="hairline-full w-full mb-12" />
<div className="space-y-10 text-clay-800 text-[15px] leading-[1.85]">
<section>
<h2 className="font-serif text-xl text-clay-900 mb-3"></h2>
<p>
InfiPlot"我们" AI
使
InfiPlot 使
</p>
</section>
<section>
<h2 className="font-serif text-xl text-clay-900 mb-3">
</h2>
<p className="mb-3">
Google GitHub
</p>
<ul className="list-disc pl-6 space-y-1">
<li></li>
<li></li>
<li> URL</li>
</ul>
<p className="mt-3">
</p>
<p className="mt-3">
AI
</p>
</section>
<section>
<h2 className="font-serif text-xl text-clay-900 mb-3">
使
</h2>
<p></p>
<ul className="list-disc pl-6 space-y-1 mt-3">
<li>
<strong></strong>
</li>
<li>
<strong></strong>
</li>
<li>
<strong></strong>
使
</li>
</ul>
<p className="mt-3">
广
</p>
</section>
<section>
<h2 className="font-serif text-xl text-clay-900 mb-3">
</h2>
<p>
{" "}
<a
href="https://supabase.com/"
target="_blank"
rel="noopener noreferrer"
className="text-ember-500 hover:text-ember-400 transition-colors underline decoration-clay-900/20 underline-offset-2"
>
Supabase
</a>{" "}
Supabase
TLS
</p>
</section>
<section>
<h2 className="font-serif text-xl text-clay-900 mb-3">
</h2>
<p>
广
</p>
</section>
<section>
<h2 className="font-serif text-xl text-clay-900 mb-3">
</h2>
<p>
{" "}
<a
href="mailto:hi@infiplot.com"
className="text-ember-500 hover:text-ember-400 transition-colors"
>
hi@infiplot.com
</a>{" "}
30
</p>
</section>
<section>
<h2 className="font-serif text-xl text-clay-900 mb-3">
</h2>
<p>
使{" "}
<a
href="https://umami.is/"
target="_blank"
rel="noopener noreferrer"
className="text-ember-500 hover:text-ember-400 transition-colors underline decoration-clay-900/20 underline-offset-2"
>
Umami
</a>{" "}
访使
Cookie
</p>
</section>
<section>
<h2 className="font-serif text-xl text-clay-900 mb-3">
Google API
</h2>
<p>
InfiPlot Google API
使{" "}
<a
href="https://developers.google.com/terms/api-services-user-data-policy"
target="_blank"
rel="noopener noreferrer"
className="text-ember-500 hover:text-ember-400 transition-colors underline decoration-clay-900/20 underline-offset-2"
>
Google API Services User Data Policy
</a>
使Limited Use
</p>
<ul className="list-disc pl-6 space-y-1 mt-3">
<li></li>
<li> Google 广</li>
<li> Google </li>
<li> Google </li>
<li> Google AI/ML </li>
</ul>
</section>
<section>
<h2 className="font-serif text-xl text-clay-900 mb-3">
</h2>
<p>
InfiPlot
13 13
</p>
</section>
<section>
<h2 className="font-serif text-xl text-clay-900 mb-3">
</h2>
<p>
"最后更新"使
</p>
</section>
<section>
<h2 className="font-serif text-xl text-clay-900 mb-3"></h2>
<p>
使
</p>
<p className="mt-3">
{" "}
<a
href="mailto:hi@infiplot.com"
className="text-ember-500 hover:text-ember-400 transition-colors"
>
hi@infiplot.com
</a>
</p>
</section>
</div>
<div className="hairline-full w-full mt-16 mb-8" />
<footer className="text-center text-[10px] smallcaps text-clay-500 pb-10">
<span>© 2026 InfiPlot. All rights reserved.</span>
</footer>
</main>
);
}
+196
View File
@@ -0,0 +1,196 @@
import type { Metadata } from "next";
import Link from "next/link";
export const metadata: Metadata = {
title: "服务条款 — InfiPlot",
description: "InfiPlot 服务条款:使用 InfiPlot 服务前请阅读本条款。",
};
export default function TermsPage() {
return (
<main className="mx-auto w-full max-w-3xl px-6 md:px-16 py-16 md:py-24">
<Link
href="/"
className="inline-flex items-center gap-2 text-clay-500 hover:text-ember-500 transition-colors text-sm mb-12"
>
<i className="fa-solid fa-arrow-left text-xs" />
<span></span>
</Link>
<h1 className="font-serif text-3xl md:text-4xl text-clay-900 mb-4">
</h1>
<p className="text-sm text-clay-500 mb-12">
2026 6 14 &nbsp;|&nbsp; 2026 6 14
</p>
<div className="hairline-full w-full mb-12" />
<div className="space-y-10 text-clay-800 text-[15px] leading-[1.85]">
<section>
<h2 className="font-serif text-xl text-clay-900 mb-3">
</h2>
<p>
InfiPlot"我们""本服务" AI
</p>
<p className="mt-3">
使使
</p>
</section>
<section>
<h2 className="font-serif text-xl text-clay-900 mb-3">
</h2>
<p>
GoogleGitHub
</p>
</section>
<section>
<h2 className="font-serif text-xl text-clay-900 mb-3">
</h2>
<p>使</p>
<ul className="list-disc pl-6 space-y-1 mt-3">
<li></li>
<li>使 API</li>
<li></li>
<li></li>
</ul>
</section>
<section>
<h2 className="font-serif text-xl text-clay-900 mb-3">
AI
</h2>
<p>
AI
AI AI
</p>
<p className="mt-3">
AI
使
AI
</p>
</section>
<section>
<h2 className="font-serif text-xl text-clay-900 mb-3">
</h2>
<p>
InfiPlot {" "}
<a
href="https://www.gnu.org/licenses/agpl-3.0.html"
target="_blank"
rel="noopener noreferrer"
className="text-ember-500 hover:text-ember-400 transition-colors underline decoration-clay-900/20 underline-offset-2"
>
AGPL-3.0
</a>{" "}
</p>
<p className="mt-3">
</p>
</section>
<section>
<h2 className="font-serif text-xl text-clay-900 mb-3">
</h2>
<p>
AI {" "}
<Link
href="/privacy"
className="text-ember-500 hover:text-ember-400 transition-colors underline decoration-clay-900/20 underline-offset-2"
>
</Link>
</p>
</section>
<section>
<h2 className="font-serif text-xl text-clay-900 mb-3">
</h2>
<p>
使
</p>
<p className="mt-3">
</p>
</section>
<section>
<h2 className="font-serif text-xl text-clay-900 mb-3">
</h2>
<p>
"现状""可用"
</p>
</section>
<section>
<h2 className="font-serif text-xl text-clay-900 mb-3">
</h2>
<p>
InfiPlot
使使
</p>
</section>
<section>
<h2 className="font-serif text-xl text-clay-900 mb-3">
</h2>
<p>
</p>
<ul className="list-disc pl-6 space-y-1 mt-3">
<li></li>
<li></li>
<li></li>
</ul>
</section>
<section>
<h2 className="font-serif text-xl text-clay-900 mb-3">
</h2>
<p>
使
</p>
</section>
<section>
<h2 className="font-serif text-xl text-clay-900 mb-3"></h2>
<p>
</p>
<p className="mt-3">
{" "}
<a
href="mailto:hi@infiplot.com"
className="text-ember-500 hover:text-ember-400 transition-colors"
>
hi@infiplot.com
</a>
</p>
</section>
</div>
<div className="hairline-full w-full mt-16 mb-8" />
<footer className="text-center text-[10px] smallcaps text-clay-500 pb-10">
<span>© 2026 InfiPlot. All rights reserved.</span>
</footer>
</main>
);
}