From 8e5e0a7feaca1e34ecaaf05a0fd811241a10a78a Mon Sep 17 00:00:00 2001
From: Linghong
Date: Sat, 22 Aug 2026 04:52:00 +0000
Subject: [PATCH] =?UTF-8?q?=E5=81=9A=E6=96=B9=E6=A1=88=E5=85=A5=E5=8F=A3?=
=?UTF-8?q?=E6=94=B9=E5=9B=9E=E4=B8=A4=E6=9E=9A=E6=A8=A1=E5=BC=8F=20chip?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
上一版把「做方案」做成输入框工具栏里的单个开关,默认不选中。问题是默认态没有
任何文字说明"现在会做游戏",只有"做方案没被选中"——它读起来像筛选标签而不是
模式分叉,把默认态藏了起来;而且模式选择混进了附件/发送那排动作按钮里,层级也
是错的。
改成合并前的形态:输入框上方一排常驻 chip,做游戏(默认)与做方案两个都可见,
选中态填色。两个互斥选项都重要时分段控件才是标准解法,单开关只适用于"关是明显
默认且功能人尽皆知";做方案是这条分支要暴露的新链路,最缺的就是可发现性,而且
点错起的是另一条 runtime 链(委派、澄清 pending、GDD 审批),不该藏在一次猜测
性的点击里。样式与容器沿用合并前已上线的类名。
做素材不加回来:master 已把它并进直连构建,与做游戏同链,再列一枚就是两个按钮
干同一件事。占位文案随模式变(做游戏/做方案各一句),副标题保持 master 的固定
问候语——合并前那版副标题与占位是同一句话,重复两遍。
Co-Authored-By: Claude Opus 5
---
.../src/view/home/index.tsx | 92 +++++++++++++------
1 file changed, 62 insertions(+), 30 deletions(-)
diff --git a/apps/ai-game-creator-shell/src/view/home/index.tsx b/apps/ai-game-creator-shell/src/view/home/index.tsx
index f60c95354..6c6b2718e 100644
--- a/apps/ai-game-creator-shell/src/view/home/index.tsx
+++ b/apps/ai-game-creator-shell/src/view/home/index.tsx
@@ -2,6 +2,8 @@ import {
FileText,
FolderKanban,
FolderOpen,
+ Gamepad2,
+ type LucideIcon,
Plus,
Sparkles,
} from 'lucide-react';
@@ -19,6 +21,31 @@ import { type HomeDraft, useLauncherHomeDraftStore } from './useHomeDraftStore';
export type { HomeAttachmentDraft, HomeDraft } from './useHomeDraftStore';
+// 首页只在做游戏与做方案之间分叉:做素材已被 master 并进直连构建,与做游戏同链,
+// 再列一枚 chip 就是两个按钮干同一件事。做方案要委派子 Agent、挂澄清 pending、过
+// GDD 审批,是另一条 runtime 链,必须在建项目之前就把 startMode 定下来,所以两个
+// 选项都常驻可见,而不是拿一枚开关把默认态藏起来。
+const HOME_START_MODES: readonly ProjectStartMode[] = [
+ 'direct-build',
+ 'planning',
+];
+
+const HOME_START_MODE_ITEMS: Record<
+ ProjectStartMode,
+ { label: string; placeholder: string; icon: LucideIcon }
+> = {
+ 'direct-build': {
+ label: '做游戏',
+ placeholder: '今天想把什么灵感做成游戏',
+ icon: Gamepad2,
+ },
+ planning: {
+ label: '做方案',
+ placeholder: '今天有什么设计需要帮你整理',
+ icon: FileText,
+ },
+};
+
export type HomeProjectRow = {
path: string;
name: string;
@@ -56,13 +83,8 @@ export default function HomeView({
);
const [homeCreationBusy, setHomeCreationBusy] = useState(false);
const homeCreationBusyRef = useRef(false);
- // 首页只保留「做方案」一个开关:做游戏 / 做素材 沿用 master 的直连默认,走
- // direct-build;立项策划要委派子 Agent、挂澄清 pending、过 GDD 审批,只能由
- // planning 起链,所以必须在建项目之前就把 startMode 定下来。
- const [planningSelected, setPlanningSelected] = useState(false);
- const startMode: ProjectStartMode = planningSelected
- ? 'planning'
- : 'direct-build';
+ const [startMode, setStartMode] = useState('direct-build');
+ const activeStartMode = HOME_START_MODE_ITEMS[startMode];
async function createFromHome() {
if (homeCreationBusyRef.current) {
@@ -118,6 +140,34 @@ export default function HomeView({
+
+ {HOME_START_MODES.map((mode) => {
+ const item = HOME_START_MODE_ITEMS[mode];
+ const ModeIcon = item.icon;
+ const isActive = mode === startMode;
+ return (
+
+ );
+ })}
+
{status}
@@ -127,38 +177,20 @@ export default function HomeView({
>
{
void createFromHome();
}}
>
-
-
-
-
+