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(); }} >
- - - - +