feat(desktop): add iOS Simulator panel auto-open preference - #3913
Conversation
Signed-off-by: JiangJiahao <jiangjiahao@xd.com>
|
| Filename | Overview |
|---|---|
| apps/desktop/src/main/mcp-integrations/ios-simulator-preferences.ts | 新增具备默认值、规范化、原子写入和 owner scope 校验的模拟器展示偏好存储。 |
| apps/desktop/src/main/maker-ipc/iosSimulatorHandlers.ts | 新增受信偏好 IPC,并在异步操作前后校验 owner 边界及写入参数。 |
| apps/desktop/src/main/mcp-integrations/ios-simulator.ts | 将启动模拟器和启动 App 后的自动聚焦接入偏好门禁,同时保留显式聚焦路径。 |
| apps/desktop/src/preload/preload.ts | 通过窄化且类型化的 preload 方法向主 Renderer 暴露偏好读写能力。 |
| apps/desktop/src/renderer/features/plugin/IOSSimulatorPreferences.tsx | 新增带加载、乐观更新、失败回滚和重复提交保护的偏好 Switch。 |
| apps/desktop/src/renderer/features/plugin/GhostPluginDetailView.tsx | 在 iOS Simulator Host capability 的配置区域挂载新增偏好控件。 |
Sequence Diagram
sequenceDiagram
participant U as 用户
participant R as 插件详情 Renderer
participant P as Preload
participant M as Main IPC
participant S as Owner-scoped 偏好存储
participant H as iOS Simulator Host
U->>R: 切换自动打开设置
R->>P: setAutoOpenEmbeddedPanel(enabled)
P->>M: 固定 IPC channel + boolean payload
M->>M: 校验 sender、参数与 owner scope
M->>S: 原子写入当前 owner 的偏好
S-->>M: 返回规范化偏好
M-->>R: 更新 Switch 状态
H->>S: start_instance / launch_app 成功后读取偏好
alt 自动打开已开启
H->>R: 请求聚焦内置模拟器面板
else 自动打开已关闭
H-->>H: 保持面板当前状态
end
Reviews (1): Last reviewed commit: "feat(desktop): add iOS Simulator panel a..." | Re-trigger Greptile
|
这个 PR 新增了 iOS 模拟器「自动打开内置模拟器面板」开关,属于面向用户的产品/UI 变化,需要维护者确认后才能继续合并。 请维护者直接在本 PR 上 Approve;如果要改,请 Request Changes。作者这边不用再催合并,球不在你这边。 讨论 issue:#3918 |
|
命中 UI 路径(apps/desktop/src/renderer/features/plugin/GhostPluginDetailView.tsx / apps/desktop/src/renderer/features/plugin/IOSSimulatorPreferences.tsx)但 description 未附界面效果证据——建议补充改动后效果:截图/录屏,或改动后界面的 HTML 页面(```html 代码块、.html 附件或在线预览链接),便于确认界面符合 DESIGN.md 设计规范 |
|
@horizon554 👋 这个 PR 现在在等维护者确认,确认之前流程不会合并它 —— 不是卡住了,也不是在等你再改一版(你推的改动流程都读到了,判的就是最新一版代码)。
这条是流程自动发的状态提醒(同一版代码只发一次),不用回复。 |
|
合进主干了。iOS Simulator 面板现在能记住「启动实例后要不要自动打开」,默认开、详情页可关,手动 |

这次改了什么
摘要
在 iOS 模拟器插件详情页增加 Host 管理的“自动打开内置模拟器面板”开关,默认开启。关闭后,
start_instance和launch_app仍照常执行,只是不再自动展开 Cindy 右侧模拟器面板;用户仍可手动打开面板,设备创建、所有权、WDA、输入、截图等能力均不受影响。变更类型
feat新功能fix缺陷修复refactor/perf重构或性能优化docs/test/chore文档、测试或工程维护范围
start_instance/launch_app自动聚焦门禁、五语文案和回归测试。UI 变化
docs/design-rules/DESIGN.md§2 Color Palette & Roles、§10 Theme System & Token Reference:颜色使用现有语义 token,支持 Light / Dark,不增加裸颜色。DESIGN.md§3 Typography Rules、§4 Cards & Containers / Inputs & Forms、§5 Layout Principles:复用既有字号阶梯、圆角卡片、间距和 Switch primitive。DESIGN.md§11 Voice & Content:标题描述动作,说明关闭后的行为边界;同步 zh-CN / zh-TW / en / ja / ko。怎么验证的
自动验证
补充说明:未分片的全量门禁在 31,113 个 Desktop 用例并发运行时两次命中未改动的
deviceOp.test.ts3 秒文件监听超时;该用例与同批另一个偶发用例单独复跑 106/106 通过。随后使用仓库/CI 已支持的两个顺序分片完整跑绿,未跳过覆盖,也未修改无关测试。手工验证
start_instance后右侧内置模拟器面板自动打开。start_instance,操作成功且右侧面板未自动打开。未执行的验证
launch_app的开关分支;Host 单测覆盖了开启时自动聚焦、关闭时不聚焦。风险
风险分类
影响与回滚
start_instance/launch_app成功后始终请求打开内置面板;已写入的偏好文件会变为无害未读配置。提交前检查
git commit -s,见 DCO)