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:
@@ -1,5 +1,5 @@
|
||||
import { requestBeatAudio } from "@yume/engine";
|
||||
import type { BeatAudioRequest } from "@yume/types";
|
||||
import { requestBeatAudio } from "@infiplot/engine";
|
||||
import type { BeatAudioRequest } from "@infiplot/types";
|
||||
import { NextResponse } from "next/server";
|
||||
import { loadEngineConfig } from "@/lib/config";
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import { requestInsertBeat } from "@yume/engine";
|
||||
import type { InsertBeatRequest } from "@yume/types";
|
||||
import { requestInsertBeat } from "@infiplot/engine";
|
||||
import type { InsertBeatRequest } from "@infiplot/types";
|
||||
import { NextResponse } from "next/server";
|
||||
import { loadEngineConfig } from "@/lib/config";
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import { requestScene } from "@yume/engine";
|
||||
import type { SceneRequest } from "@yume/types";
|
||||
import { requestScene } from "@infiplot/engine";
|
||||
import type { SceneRequest } from "@infiplot/types";
|
||||
import { NextResponse } from "next/server";
|
||||
import { loadEngineConfig } from "@/lib/config";
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import { startSession } from "@yume/engine";
|
||||
import type { StartRequest } from "@yume/types";
|
||||
import { startSession } from "@infiplot/engine";
|
||||
import type { StartRequest } from "@infiplot/types";
|
||||
import { NextResponse } from "next/server";
|
||||
import { loadEngineConfig } from "@/lib/config";
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import { visionDecide } from "@yume/engine";
|
||||
import type { VisionRequest } from "@yume/types";
|
||||
import { visionDecide } from "@infiplot/engine";
|
||||
import type { VisionRequest } from "@infiplot/types";
|
||||
import { NextResponse } from "next/server";
|
||||
import { loadEngineConfig } from "@/lib/config";
|
||||
|
||||
|
||||
@@ -54,7 +54,7 @@
|
||||
}
|
||||
}
|
||||
|
||||
@keyframes yume-ripple {
|
||||
@keyframes infiplot-ripple {
|
||||
0% {
|
||||
width: 14px;
|
||||
height: 14px;
|
||||
|
||||
@@ -2,7 +2,7 @@ import type { Metadata } from "next";
|
||||
import { Cormorant_Garamond, Inter } from "next/font/google";
|
||||
import "./globals.css";
|
||||
|
||||
// Editorial 云梦 fonts: drive tailwind `font-serif`/`font-sans` via
|
||||
// Editorial fonts: drive tailwind `font-serif`/`font-sans` via
|
||||
// --font-serif / --font-sans across every page (home, /play, /new, CustomForm).
|
||||
const cormorant = Cormorant_Garamond({
|
||||
subsets: ["latin"],
|
||||
|
||||
@@ -10,7 +10,7 @@ export default function NewPage() {
|
||||
className="text-[10px] smallcaps text-clay-700 hover:text-clay-900 transition-colors flex items-center gap-2"
|
||||
>
|
||||
<i className="fa-solid fa-arrow-left text-[9px]" />
|
||||
云梦
|
||||
InfiPlot
|
||||
</Link>
|
||||
<span className="text-[10px] smallcaps text-clay-500">
|
||||
编 织 一 个 世 界
|
||||
|
||||
@@ -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">
|
||||
|
||||
@@ -24,9 +24,9 @@ import type {
|
||||
Session,
|
||||
StartResponse,
|
||||
VisionResponse,
|
||||
} from "@yume/types";
|
||||
} from "@infiplot/types";
|
||||
|
||||
const MUTED_STORAGE_KEY = "yume:muted";
|
||||
const MUTED_STORAGE_KEY = "infiplot:muted";
|
||||
|
||||
// Cap how long we wait for the browser to download + decode a scene image
|
||||
// before giving up and rendering anyway. Runware's CDN is normally <2s for a
|
||||
@@ -485,7 +485,7 @@ function PlayInner() {
|
||||
const p = PRESETS.find((x) => x.id === presetId);
|
||||
if (p) payload = { worldSetting: p.worldSetting, styleGuide: p.styleGuide };
|
||||
} else if (params.get("custom") === "1") {
|
||||
const stored = sessionStorage.getItem("yume:custom");
|
||||
const stored = sessionStorage.getItem("infiplot:custom");
|
||||
if (stored) {
|
||||
try {
|
||||
const parsed = JSON.parse(stored) as {
|
||||
@@ -890,7 +890,7 @@ function PlayInner() {
|
||||
className="text-[10px] smallcaps text-clay-600 hover:text-clay-900 transition-colors flex items-center gap-2"
|
||||
>
|
||||
<i className="fa-solid fa-arrow-left text-[9px]" />
|
||||
云梦
|
||||
InfiPlot
|
||||
</Link>
|
||||
<div className="flex items-center gap-3 text-[10px] smallcaps text-clay-500 num">
|
||||
<span>第 · {String(sceneCount).padStart(3, "0")} · 幕</span>
|
||||
|
||||
Reference in New Issue
Block a user