- tabs.tsx: +FiGrid icon, +AppsView placeholder, +apes:apps descriptor (order 902, profile 推到 903) - locales.ts: +apesApps/apesAppsTitle/apesAppsHint zh/en 4 key - tests: 3→4 tab 断言 (id 列表/contract/order 严格递增/disposer/i18n zh+en) 4 个 apes:* tab: tasks(900) / agents(901) / apps(902) / profile(903) gate: typecheck + build + test 1250 passed / 9 skipped / 0 failed (无回归)
- 独立 src/client/apes/ 模块 (D1=B), index.tsx 仅 3 处最小改动 - 3 个静态占位 tab (react-icons FiList/FiCpu/FiUser), order 900+ 排在上游 builtins 之后 - 隔离 i18n 命名空间 'apes' (不碰上游 betterSidebar 字典), zh/en 双语 - index.tsx: attachApesLocale + 字典注册 + registerApesTabs effect - tests/apes-tabs.spec.ts: 9 测试 (注册契约 + disposer + i18n zh/en/兜底) gate: typecheck + build + test 1250 passed / 9 skipped / 0 failed apps tab 延后 Phase 1b, messages 已砍 (无 DSH message-stream API)