feat(macOS): 按 IDEA 风格优化项目与分支切换弹窗 - #350
Conversation
xiaoyumuxi
commented
Aug 30, 2026
@lithe review |
Lithe Review结论: ❓ 审查未完成 审查状态: |
1lck
left a comment
There was a problem hiding this comment.
整体视觉方向和自定义弹层的接入方式可以理解,编译、macOS 全量测试和服务边界检查也都通过。不过当前新 UI 引入了一个会阻断首次发布分支的回归,以及三个对用户承诺了行为但没有真正实现的状态,因此这轮先 Request changes。
最需要先修的是无 upstream 分支的 Push:Core 已经支持自动选择远端并设置 upstream,UI 不应提前禁用。其余请将 Push tags / Don’t show 真正接入操作与持久化,或暂时移除;Recent 区域也需要真实的最近分支来源,不能直接取按 refname 排序的前两项。建议为首次 push 和这些对话框选项补最小的行为测试。
验证:./scripts/verify-service-boundaries.sh 通过;./scripts/test-macos.sh 通过(79 suites,692 tests);git diff --check 通过。
| .tint(LitheTheme.accent) | ||
| .keyboardShortcut(.defaultAction) | ||
| .lithePointer() | ||
| .disabled(reference.upstreamShortName == nil) |
There was a problem hiding this comment.
[P1] 不要阻断尚未配置 upstream 的首次 Push。这里把 upstreamShortName == nil 的本地分支直接禁用了,但现有 Rust Core 的 push 会在没有 tracking branch 时选择 origin(或首个 remote)并执行 git push --set-upstream;本 PR 之前顶部入口也会直接调用这条路径。现在用户新建本地分支后无法从顶部 Push 弹窗发布它。请保持按钮可用并展示首次发布的目标远端,或提供等价的 publish 流程。
There was a problem hiding this comment.
新建分支自动继承 upstream 么?我想想,因为我觉得推送是比较谨慎的操作是需要不能自动继承的
| .lithePointer() | ||
| .help("Review the branch that will be pushed") | ||
| Toggle("Push tags", isOn: $pushTags) |
There was a problem hiding this comment.
[P2] Push tags 目前只是切换本地 @State。确认按钮仍只调用无参数的 onPush(),最终执行普通 model.pushBranch(reference),所以用户勾选后标签不会被推送。请把该选项贯通到 Git 操作契约/Core,或者在支持前移除这个复选框,避免产生错误确认。
| .lithePointer() | ||
| Button("Merge") { resolve(.merge) } | ||
| .buttonStyle(.borderedProminent) | ||
| Toggle("Don't show", isOn: $doNotShowAgain) |
There was a problem hiding this comment.
[P2] Don’t show 的值没有被读取、持久化,也不会影响下一次 pendingPullStrategy 的展示;勾选后按 OK,后续分叉仍会弹出同一窗口。请接入明确的默认策略设置和持久化逻辑,或先移除这个无效选项。
| private var recentReferences: [GitReference] { | ||
| guard normalizedQuery.isEmpty else { return [] } | ||
| return Array(model.gitReferences.prefix(2)) |
There was a problem hiding this comment.
[P2] 这里展示的并不是最近分支。gitReferences 来自 Core 的 git for-each-ref --sort=refname,因此 prefix(2) 只会取按引用名排序的前两项,可能连当前分支都不包含,却被标成 Recent。需要记录/计算真实的 checkout recency(至少确保当前分支并按最近使用排序),否则请改成不会暗示时序的分组。
1lck
commented
Aug 30, 2026
已将修复推送到远程分支,commit |
1lck
commented
Aug 30, 2026
完整审查已完成,当前结论:代码层面可以进入合入确认,但我没有执行 merge。 已复核:
本地验证:
剩余验证边界:Windows Bun 前端测试在当前 macOS worktree 无法完整运行,原因是 windows/tauri 依赖未安装;GitHub Actions 中 Windows 与 release package checks 仍处于 pending,合入前请等待它们完成。 |
Uh oh!
There was an error while loading. Please reload this page.




改动摘要
影响范围
本次修复
验证