From 8389572cbbb528d4ff1066378654b2348f1dd2b7 Mon Sep 17 00:00:00 2001 From: Yaojia Wang Date: Tue, 7 Jul 2026 18:18:18 +0200 Subject: [PATCH 01/66] =?UTF-8?q?feat(frontend):=20=E8=BF=9B=E6=9D=A5?= =?UTF-8?q?=E5=8D=B3=E5=86=99=E2=80=94=E2=80=94=E8=90=BD=E5=9C=B0=E9=A1=B5?= =?UTF-8?q?=E3=80=8C=E7=9B=B4=E6=8E=A5=E5=BC=80=E5=A7=8B=E5=86=99=E3=80=8D?= =?UTF-8?q?=E7=9B=B4=E8=BE=BE=E7=A9=BA=E7=99=BD=E7=BC=96=E8=BE=91=E5=99=A8?= =?UTF-8?q?=EF=BC=8C=E6=95=B2=E5=AD=97=E5=90=8E=E5=BB=B6=E8=BF=9F=E8=90=BD?= =?UTF-8?q?=E5=BA=93?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Phase 0(写作工作台重构):新增 /write 草稿编辑器入口,只有敲入实质正文并停顿后 才懒建占位「未命名草稿」项目并种入首章草稿(useDeferredDraft,双重幂等闸 + 草稿落库 非致命降级),随即 replace 换入完整工作台;空进空出不落库,杜绝孤儿草稿。 落地页 CTA 改为「直接开始写」为主、「先立项」(立项向导)为辅。 --- apps/web/app/page.tsx | 50 +++++--- apps/web/app/write/page.tsx | 6 + apps/web/components/start/DraftComposer.tsx | 58 +++++++++ apps/web/lib/start/useDeferredDraft.test.ts | 134 ++++++++++++++++++++ apps/web/lib/start/useDeferredDraft.ts | 95 ++++++++++++++ 5 files changed, 327 insertions(+), 16 deletions(-) create mode 100644 apps/web/app/write/page.tsx create mode 100644 apps/web/components/start/DraftComposer.tsx create mode 100644 apps/web/lib/start/useDeferredDraft.test.ts create mode 100644 apps/web/lib/start/useDeferredDraft.ts diff --git a/apps/web/app/page.tsx b/apps/web/app/page.tsx index 48d8def..441d137 100644 --- a/apps/web/app/page.tsx +++ b/apps/web/app/page.tsx @@ -1,5 +1,5 @@ import Link from "next/link"; -import { BookOpen, Plus } from "lucide-react"; +import { BookOpen, PenLine, Plus } from "lucide-react"; import { AppShell } from "@/components/AppShell"; import { BackendDownNotice } from "@/components/BackendDownNotice"; @@ -28,13 +28,22 @@ export default async function DashboardPage() { title="我的作品" description="从一个灵感进入正文、设定、审稿与验收闭环。" actions={ - -