Repository navigation
Moo Fleet 0.1.48
本次更新
先说一件事:上一版 0.1.47 只推了 tag、没有创建 Release,安装包从未分发出去。所以这份说明同时覆盖它——从 0.1.46 直接升上来的用户,会一次拿到两版的全部改动。
一、0.1.47 带来但此前没有发出的部分
卡片底色单独一档
页面级卡片(统计卡、图表卡)原来直接借了浮层的颜色。在深色主题上它比画布亮 1.26:1——单看一张卡没问题,满屏十几张大色块一起亮,整页就发白。现在把层次拆成四档:画布 < 卡片 < 轨道 < 浮层。卡片只比画布抬 7–9 个色阶(VS Code 深色主题从 #2b2b2b 收到 #212121,1.26:1 → 1.10:1),层次靠 1px 边界划,不靠亮度堆。进度轨道也不再借用「悬停色」——静态元素顶着一层 hover 色会比卡片本身还亮。
标题栏跟着主题走
macOS 窗口的标题栏是透明的,透出的是窗口自己的底色。这个颜色原来写死成 fleet-blue 的深蓝,切到其他四套主题,顶上就挂着一条不搭的蓝带。现在启动时读 config/profile.yaml 里的主题;运行时切换主题,网页会把导航色与画布色的计算值回传给原生窗口,标题栏立刻跟着变,不用重启。
热力图:骨架屏与日柱
冷启动有了骨架屏。 全量扫描要十几秒,原来这期间图上该在的位置是空白。现在按真实排版摆占位:标题、图例、网格、四张统计卡;网格用 SVG pattern 铺,不生成几百个占位节点。量过:骨架 385px 对真实首屏 411px,数据到了不会跳一下。
半年内一天一根柱子。 日柱上限从 91 天放到 183 天:近 6 个月按天分槽铺满整幅(181 根,柱宽 4.6px),高度恒定在 295–317,换时间段不再把卡片撑高或压扁。超过半年才回到 7 行网格。
时间段时间可以自选
除了近 3/6 个月、近一年、近两年,还能直接选日期区间;排行度量收成整页唯一的开关,走到哪都跟着。
二、点下去被吞掉的那几下
勾完一个文件,立刻点下一个,那次点击会被忽略。 原来的忙态用了「包含暂存自己」的那一个,于是文件刚勾上、暂存请求还没回来,下一个文件的点击判定就被挡掉了。现在只挡真正在改索引的操作,同一份判断在按钮和键盘空格上共用。实测同一个动作:修复前 525 ms 后选中的仍是上一个文件,修复后 107 ms。
按块暂存的按钮会整排消失。 操作条在忙态下被整体移出 DOM,用户看到的是「按钮没了 215 ms 又回来了」,块上的转圈反而是死代码。现在拆成两个信号:「这一块正在执行」(保留元素、显示转圈、禁用)和「有别的写操作在跑」(禁用但保留元素)。空窗降到约 60 ms,剩下的部分是 diff 确实要重读。
预览 diff 不该占着仓库锁。 原来打开预览会让后续的暂存、勾选被判成「操作正在执行」,连续操作全被拒。预览是只读的,现在不再取锁;一致性由预览前后的指纹比对 + GIT_OPTIONAL_LOCKS=0 保证。顺带摘掉了 10 处「预览打开就不许动」的守卫——那些守卫在预览关掉后没被清,表现为之后连续操作静默失效。
提交中切到别的仓库,工作台会永久禁用。 一个忙态只在「还在同一个仓库」时才清;一旦切走,条件永不成立,而暂存、提交、按块、Fetch 全都在等它。现在纳入切仓库时的统一重置,并加了一条结构性断言:解析三处禁用判断的表达式、取出里面所有忙态,要求每一个都出现在重置清单里,以后新增忙态漏了会直接失败。
前台加载会被 15 秒的后台刷新顶掉,然后一直灰着。 原来的落旗判据是「请求序号还是最新的吗」,前提是「只有前台请求会推进序号」;后台静默刷新一插队,前台那次返回时判据不成立、整段跳过,而后台那一路本来就不动加载态,旗子永久为真。改成按「还有几个前台请求在跑」计数,后台不参与——它本来就不该有资格关掉前台打开的旗。
主题来回切会丢最后一次。 保存队列原来在排队那一刻就拿快照比较「和已保存的一样吗」,改回原值这一次被判成重复而跳过,先前那次请求随后落库,服务端和本地缓存从此不一致(下次启动会自己变回去)。现在排队只记目标值、落库后再比。
三、服务端少做重复功
- 去掉每次请求都重跑的 git 全量扫描与串行读取,仓库列表与文件清单共用一次结果。
- 会话备份的说明文件改为并发读,不再一条一条串着等。
upstream修复方案不再为每个分支各算一次领先/落后。- 写请求共享在途的会话令牌请求,不再并发重复取。
- dashboard 查询的刷新间隔对齐轮询周期,窗口重新可见时不再额外全量重扫。
四、热力图的提示框
鼠标停在一格上,用触控板横向滚动:指针没动、格子换天了,mouseleave 不会触发,固定在视口坐标上的提示就冻在原地不走。现在三处收口——窗口捕获阶段的滚动、两张图各自的移出、以及 mousemove 时校验指针是否仍在数据元素上。键盘聚焦后离开图表同样会收起。
五、看不清的选中态
时间段按钮与排行口径按钮共用一套样式,选中项原来只靠一档底色压在槽底上。五套主题实测对比度只有 1.06 / 1.07 / 1.07 / 1.32 / 1.11,12px 的字上等于没有。往上再提亮就会跟卡片、浮层抢重量,所以同时补了一圈内描边:底色负责「有块面」,描边负责「到哪为止」。一处改动,两处控件都受益。
六、把边界说清楚
- 仓库范围多选在筛选状态下,「全选」写成「全选(共 53 项)」——不写范围时,筛成 3 条却选中 53 条是误导。行为不变。
- 搜索结果的折叠现在真的生效(原来点了没反应,清掉搜索才突然展开/收起)。
- 会话页后台每 30 秒的静默刷新失败,不再把整张列表换成错误页——只在手头没有内容时才让错误页接管。
- 两处读屏播报的噪音收掉了:顶栏 API 状态原来每 15 秒播一次「一切正常」,会话同步每秒播一次已用秒数。
分发
Windows 安装包改走 GitHub。Gitee 单文件上限 100 MiB,windows-x64-setup.exe 已到 104.0 MB、余量不足 1 MB,再涨一次就会在发布阶段失败。Linux 与 macOS 包仍在 Gitee,GitHub 全平台都有。
说明
- macOS 包为 ad-hoc 签名的内测包,未经公证;请用 DMG 内的「安装 Moo Fleet(内测)」,不要手动拖进「应用程序」(下载隔离属性会导致应用无法启动)。Apple Silicon 与 Intel 请选对应架构的 DMG。
- 本版没有新增遥测。分析页只读本机 git 仓库,不发任何网络请求。
验证
- 类型检查、
vue-tsc、ESLint 与生产构建全部通过;124 个文件 / 1214 个用例全绿。 - 界面断言 338 项(真机跑):分段控件的选中态亮度与描边、热力图提示框的 6 种收起路径、仓库范围多选的筛选态计数。
- 0.1.47 期间补的测试基建一并生效:验收脚本吸收 CDP 崩溃与 WebSocket 断线、竞态用例改用握手开窗(满负载下不再假通过)、并发限到 4(git 子进程抢资源导致的假超时不再出现)。
- 变异验证(确认断言真的会拦):删掉切仓库时的忙态重置 → 两条结构性断言全挂;段控件退回弱底色 → 五套主题四个不达标;删掉内描边 → 五套全缺;按钮退回只写「全选」→ 精确挂掉两条;保存队列改回按快照比较 → 主题往返用例失败。
- 量过的时序:连续勾选 525 → 107 ms,块操作空窗 215 → ~60 ms,冲突解决忙态 156 → 114 ms。