chore: complete @yume → @infiplot rename (post-PR#9)

PR #9 已完成首页和 layout 的视觉品牌迁移,此 commit 补齐剩余的
技术性改名 —— workspace 包名、source import、localStorage 键、
CSS keyframe、内部 header logo、.env.example、README。

- @yume/* → @infiplot/* (6 package.json + 17 imports + lockfile)
- localStorage/sessionStorage: yume:* → infiplot:*
  (含 PR #9 新增的 yume:hintClosed)
- CSS keyframe yume-ripple → infiplot-ripple
- new/play 页面 header logo "云梦" → "InfiPlot"
- 代码注释中的「云梦」style 形容词删除(layout.tsx, page.tsx)
- 根 package.json name + description(描述跟齐 staging
  "AI 实时交互剧情游戏")
- README: tagline / Vercel deploy URL / 目录树 / engine 描述

保留:prompts.ts 的 LLM 体裁术语「视觉小说/galgame」、CustomForm
placeholder 的「视觉小说画风」(图像模型识别的风格名词)。

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
yuanzonghao
2026-06-02 09:27:00 +08:00
parent 5d0a5bb756
commit 8eda27f241
37 changed files with 103 additions and 103 deletions
+6 -6
View File
@@ -4,7 +4,7 @@ import { useRouter } from "next/navigation";
import { useEffect, useRef, useState } from "react";
/* ============================================================================
InfiPlot · 首页(云梦编辑式视觉风格 · 居中构图,呼应低保真原型)
InfiPlot · 首页(编辑式视觉风格 · 居中构图,呼应低保真原型)
- 顶部 Header:左上角衬线 wordmark logo
- Hero 控制区(居中):标题 / prompt 输入框 + 开始 / 5 个类别选择器
- 统一瀑布流(居中定宽):7 张主推 + 16 张画廊,按性向整体 crossfade 切换
@@ -399,7 +399,7 @@ export default function HomePage() {
const [prompt, setPrompt] = useState("");
const inputRef = useRef<HTMLTextAreaElement>(null);
// 顶部使用提示:默认展示,用户可点 × 永久关闭(localStorage:yume:hintClosed)。
// 顶部使用提示:默认展示,用户可点 × 永久关闭(localStorage:infiplot:hintClosed)。
const [hintClosed, setHintClosed] = useState(false);
const styleRow = OPTS.findIndex((o) => o.modal);
@@ -432,7 +432,7 @@ export default function HomePage() {
useEffect(() => {
try {
if (localStorage.getItem("yume:hintClosed") === "1") setHintClosed(true);
if (localStorage.getItem("infiplot:hintClosed") === "1") setHintClosed(true);
} catch {
/* ignore */
}
@@ -449,7 +449,7 @@ export default function HomePage() {
const closeHint = () => {
setHintClosed(true);
try {
localStorage.setItem("yume:hintClosed", "1");
localStorage.setItem("infiplot:hintClosed", "1");
} catch {
/* ignore */
}
@@ -496,7 +496,7 @@ export default function HomePage() {
const audioEnabled = voice === "开启";
sessionStorage.setItem(
"yume:custom",
"infiplot:custom",
JSON.stringify({ worldSetting, styleGuide, audioEnabled }),
);
router.push("/play?custom=1");
@@ -610,7 +610,7 @@ export default function HomePage() {
))}
</div>
{/* 使用提示:可被用户永久关闭(localStorage:yume:hintClosed */}
{/* 使用提示:可被用户永久关闭(localStorage:infiplot:hintClosed */}
{!hintClosed && (
<div className="relative mx-auto mt-10 md:mt-12 max-w-[640px] rounded-sm border border-clay-900/10 bg-cream-100/50 px-8 py-3.5">
<p className="font-serif text-[13px] md:text-sm leading-relaxed text-clay-500">