Repository navigation
Moo Fleet 0.1.35
本次更新
这一版几乎全是「出问题时」的体验:仓库目录被挪走时不再甩一句 errno,克隆远端时少绕几步,冲突暂停后界面不再停在操作之前的样子,大改动不再显示一个算错的增删数。桌面版另外修掉了启动那一下的闪白与闪灰。
仓库不可用时,说清楚发生了什么
仓库目录被移动或删除后,刷新提示的是 ENOENT: no such file or directory, realpath '/private/var/…'——既有内部路径,也没说该做什么。现在改成「仓库目录不存在:<路径>。它可能已被移动或删除,请重新接入。」
目录还在、.git 被删掉时透出的 git 英文 fatal 也一并改写;只按 stderr 内容识别这一种,超时等其它失败原样抛出,避免把「git 卡住」误报成「不是仓库」。
更要紧的是第二个问题:打开这类仓库时,文件列表只按「空数组」判断,于是显示「工作区干净 · 所有改动均已提交」——读不到被当成了没有改动。现在列表为空且读取失败时显示错误空态和「刷新后重试」;已有内容时保留旧内容只弹提示,不把画面整个换成错误页。
克隆远端:少绕几步
- 地址可以直接粘。输入框右侧多了粘贴按钮,能处理从网页、终端、Markdown 表格里抄来的各种形态:成对的引号/反引号/尖括号(可以套两三层),以及整条
git clone --depth 1 …命令——从中取出地址,选项和它们的取值不会被误认。粘贴、提交、服务端执行共用同一份规范化。 - 位置撞车在提交前就拦住。目标目录已经有仓库时,字段上方直接说明「这个位置已经有仓库「x」了,请换一个目录名」,不再让你先确认、等一次克隆、再看到报错。只认目录确实还在的仓库:登记了但目录已丢失的,克隆正好能把它补回来。
- 目录名校验与服务端同一套。
..、以-开头、含路径分隔符、含控制字符,各给各的理由,按钮同时变灰。 - 克隆中锁住输入。根目录与两个输入框在克隆期间禁用并有明显的禁用样式——这时改地址不会影响已经在跑的那次克隆,只会让人以为改的是它。副按钮从「取消」改成「关闭」:git 已经在跑,这个按钮取消不了任何事,如实写成关闭。底部显示已经过去的秒数。
- 失败先给一句人话,原始 stderr 留在下面一行供排查;常见情况(仓库不存在、网络不通)会概括成一句能照着做的提示。
- 成功后直接打开新仓库。之前克隆完要自己去列表里找;现在抽屉自动展开,键盘焦点落在里面(这里还修了一个焦点陷阱:正在淡出的弹窗仍被当成「最上层」,焦点被送进即将被移除的输入框,元素一移除就掉到页面根部)。提示也改到抽屉打开之后设置,否则会闪一下就被抽屉挤掉。
写操作与大改动
- 冲突暂停后不再是旧画面。merge / rebase / revert / cherry-pick 停下来时重新取一次状态并切到工作区,能看到冲突,也能看到「继续 / 终止」。
- 「进行中的操作」升为常驻提示位,且优先于 detached 判断——rebase 期间 HEAD 天然游离,那时该继续或终止,而不是新建分支。
- 没有远端的仓库,Fetch 不再可点;批量操作遇到这类仓库按「跳过」处理,不再算成失败,让「需处理」能归零。
- 差异截断不再算错增删。改动超过 120 KB 时只显示前 120 KB,并且不再拿截断后的补丁去算增删统计(1 万行改动曾显示成
+0 −1654)。顶部常驻一句「仅显示前 120 KB」;按块暂存入口改用结构化字段判断,不再嗅探补丁尾部的字符串。 - 二进制差异单独呈现,不再把补丁头当正文渲染。
- 标签可以探测远端是否已存在;批量条去掉「已选 1 1」这种重复计数;焦点样式统一为蓝。
桌面版(macOS)
- 启动不再闪白,也不再闪灰。首帧之前那块底色由系统决定,
WKWebView.underPageBackgroundColor管不到(把它临时改成纯红启动,红色一次都没出现),改为在网页上盖一层画布色视图,页面加载完成后淡出;加载失败与 8 秒兜底都会撤掉它,不会停在纯色上。 - 窗口标题栏那条带与页面画布统一用 sRGB 取色,不再偏色。
- 1024 宽下仓库行的版本号不再被截成
v0.1.…;克隆弹窗的地址占位、「未设置 upstream」也不再截断(后者补了悬停提示)。
说明
- macOS 包为 ad-hoc 签名的内测包,未经公证;请用 DMG 内的「安装 Moo Fleet(内测)」,不要手动拖进「应用程序」(下载隔离属性会导致应用无法启动)。Apple Silicon 与 Intel 请选对应架构的 DMG。
- Windows 与 Linux 包未做代码签名,首次运行可能触发系统警告。
- 本版没有新增遥测或网络请求;凭证只在本机钥匙串与 git 之间流转。
验证
- 类型检查、104 文件 / 889 用例、生产构建全部通过。
- 克隆链路在隔离实例里实跑:粘贴带引号的
git clone --depth 1 "git@gitee.com:…"得到干净地址;../-rf/a/b三种非法目录名各给不同理由且按钮禁用;已存在的目标位置在确认弹窗之前就被拦下;成功克隆后抽屉自动打开、焦点在内部、内联提示约 4 秒后消失且没有 toast 闪现。 - 真机(装进
/Applications的构建)验收:启动帧序列从白色 → 系统灰(30,30,30)变为画布色(13,19,30);1024 / 1180 / 1440 / 1920 四档宽度无横向溢出。 - 六个产物逐个核对:字节数与 sha256 见
SHA256SUMS-0.1.35.txt。macOS 两包 ad-hoc 签名通过codesign --verify --deep --strict,挂载后确认版本 0.1.35(build 135)、架构分别为 arm64 / x86_64、内测安装器随包分发;Windows 与 Linux 包未签名,载荷结构、版本、架构与体积经verify-desktop-packages.sh全部通过(Windows 安装包 99.4 MiB,距 Gitee 单文件上限还有 575 KiB)。