feat: release v0.2.0 profiles, chat, freeze, and bots

Ship the product pass on the v0.1.3 schema with additive migrations, a replica migration lock, and bot accounts kept out of people lists.
This commit is contained in:
ahp
2026-10-10 16:42:35 +03:30
parent 8586bbafcc
commit 22d92c133d
85 changed files with 10510 additions and 1341 deletions
+7 -53
View File
@@ -1,58 +1,12 @@
"use client";
import Link from "next/link";
import { BrandMark } from "@/components/brand-mark";
import { Button } from "@/components/ui/button";
import { useAuth, useAuthHydrated } from "@/lib/auth-store";
import { Home, LogIn, Trees } from "lucide-react";
import { NotFoundState } from "@/components/not-found-state";
export default function NotFound() {
const hydrated = useAuthHydrated();
const user = useAuth((s) => s.user);
const loggedIn = hydrated && !!user;
return (
<div className="mx-auto flex max-w-lg flex-col items-center px-4 py-16 text-center">
<div className="relative w-full overflow-hidden rounded-2xl border-2 border-border bg-card px-8 py-14 shadow-offset">
<div className="dot-grid dot-grid-primary pointer-events-none absolute -end-10 -top-10 h-40 w-40 opacity-60" aria-hidden />
<p className="text-7xl font-black tabular-nums text-primary/25">۴۰۴</p>
<div className="mt-4 flex justify-center">
<BrandMark locale="fa" size="lg" />
</div>
<h1 className="mt-6 text-2xl font-black tracking-tight">این مسیر پیدا نشد</h1>
<p className="mt-3 text-sm leading-relaxed text-muted-foreground">
{loggedIn
? "این آدرس در سامانه نیست. از درخت مهارت یا مرکز ادامه دهید."
: "صفحه‌ای که دنبالش بودید پیدا نشد. می‌توانید به خانه برگردید یا وارد حساب شوید."}
</p>
<div className="mt-8 flex flex-wrap items-center justify-center gap-3">
{loggedIn ? (
<>
<Button asChild className="gap-2">
<Link href="/cap">
<Trees className="h-4 w-4" /> درخت مهارت
</Link>
</Button>
<Button asChild variant="outline" className="gap-2">
<Link href="/unwrap?tab=community">مرکز · حمایت</Link>
</Button>
</>
) : (
<>
<Button asChild className="gap-2">
<Link href="/">
<Home className="h-4 w-4" /> خانه
</Link>
</Button>
<Button asChild variant="outline" className="gap-2">
<Link href="/login">
<LogIn className="h-4 w-4" /> ورود
</Link>
</Button>
</>
)}
</div>
</div>
</div>
<NotFoundState
title="صفحه پیدا نشد"
description="این آدرس در سامانه نیست. از خانه می‌توانید دوباره شروع کنید."
href="/"
actionLabel="بازگشت به خانه"
/>
);
}