Repository navigation
v0.1.0-preview.9
Pre-releasemacOS 15+ · 通用版本(Apple Silicon / Intel)
分开复查、确认与恢复的 Git 整理
Projects 新增「Git cleanup…」入口。明确选择同时包含主仓库与目标 worktree 的父目录,指定要保留的本地 base 分支,再检查一个精确目标。首个可执行范围刻意限定为普通本地 SHA-1、files refs、index v2 仓库;未知、不完整或不支持的状态保持不可操作。
- 退役一个干净的 linked worktree:逐字节核对普通 tracked 文件与 index,并验证 index tree 对应分支提交、该提交已完全包含于所选 base。确认后把工作树和对应登记移入主仓库的私有恢复目录,保留原分支;目录清单随后移除已退役工作树
- 移除一个已合并的本地分支:独立输入分支名、重新检查并另行确认,仅支持未被任何 worktree 检出的 loose ref。只把该引用移入恢复目录,保留 reflog 与 branch 配置;不改远端分支,不因退役 worktree 而顺带删除分支
- 恢复是另一次操作:本次会话内可复查记录并另行确认,恢复到原来的工作树、登记或分支路径;存在冲突时拒绝,不覆盖、不合并。工作树恢复成功后加回目录清单
退役与分支移除都需要确认已停止使用目标的编辑器、终端与 Git 操作,并输入精确分支名。各自的检查计划最多有效 120 秒、只能使用一次;执行前重新核对该操作所需的路径、提交、对象来源和目录清单保护范围,退役还会重新核对工作树文件与 index。恢复使用独立确认和新鲜复核,不沿用原操作的授权。
退役拒绝主 worktree、锁定或受保护目标,以及有 staged/modified/untracked/ignored 文件、独有提交或重叠项目的工作树。分支移除拒绝任何 worktree 正在检出的分支、受保护分支及不完全包含于所选 base 的提交;不会把主工作树的文件检查当作分支移除的前提。
退役和移入恢复目录不释放磁盘空间。 工作树、登记或引用保存在主仓库 .git/moekit-recovery/ 下各自的操作目录,并保留分阶段记录。没有 force、递归删除或永久删除入口;重启后不自动扫描、恢复或清除记录。引用备份不是独立 Git bundle,Git 对象仍受仓库自身保留与 GC 规则影响,不能把它当作异地备份。
两次路径移动不是跨目录事务。崩溃、I/O 错误或并发变化可能留下部分结果;界面保留恢复位置并停止,不自动猜测、继续或重试。普通协作锁和有界复核不能证明所有进程均未使用目标,也不能保证抵御恶意同用户并发写入。
Git 执行范围与工具来源
普通项目发现和 Git 元数据展示仍是只读,未启用通用的实时 git status。整理检查由原创原生读取器解析 index、计算 blob/tree 并核对文件集合,不运行项目脚本、hooks、filters 或 live 仓库中的 Git 命令。
仅尝试固定位置已安装的 Apple Command Line Tools/Xcode Git,要求 Apple 签名及受支持版本;缺失、旧版、来源未知或不支持固定操作时拒绝,不自动安装、下载或回退。经验证的临时 Git 副本只读取 app 自有、隔离于 live 配置的对象副本,用于固定版本、tree 与祖先关系查询,不收到 live 仓库或 worktree 路径。外部配置、协议和 lazy fetch 均禁用;这不是 OS 沙箱。
配置 includes/filters、非默认内容转换、shallow、alternates、replace、reftable、packed 目标分支、split/sparse index、冲突、symlink/submodule 等布局保持不支持。检查有文件大小、数量、深度和分阶段时间/资源预算;取消会阻止后续查询,但不承诺同步文件读取或正在运行的私有查询即时停止。完整支持范围、部分恢复与限制见 Git 整理设计。
Dock 与菜单栏入口分别设置
- 原生菜单栏入口提供打开 MoeKit、设置、检查更新和退出;应用菜单也提供检查更新,Command-0 可返回主工作区
- Settings → App icons 中分别保存 Dock 与菜单栏图标的选择,默认均显示;两项互不隐式改变,可以同时隐藏
- 两个图标都隐藏时会显示恢复说明,可从 Finder 或 Spotlight 再次打开 MoeKit,重开已有工作区;另有设置或关于窗口时也不阻挡此恢复路径
- 关闭窗口不等于退出应用,工作区共享状态保留;各项分析、清理和确认仍遵守自身取消/撤销规则,不能据此假定所有任务都会在后台继续
打开设置、关闭窗口或恢复工作区不会自动开始项目扫描、清理或更新检查。实现及原生交互验收清单见 更新与应用入口。
主动检查 GitHub 新版本,手动下载安装
从应用菜单、菜单栏或 Settings 主动检查本仓库的公开 GitHub Releases。预览版本按数字比较,区分正式/预览渠道;开发构建只报告发现的版本,不把缺失的完整预览版本信息猜成“已是最新版”。重复点击复用一次在途请求,取消、关闭更新窗口或切换渠道后,迟到结果不能覆盖新检查。
请求不使用认证、cookie 或持久网络缓存,不发送项目和任务数据;GitHub 仍会收到网络连接的 IP 地址。超时、限流、离线、错误或不完整响应会明确显示,不冒充检查成功。
发现版本后只打开由已验证版本号构造的本仓库 Release 页面,下载与安装仍由用户在浏览器中完成。尚未启用 Sparkle 自动下载、安装或后台更新;仍需经审查的依赖、专用公开更新 key、受控 HTTPS feed 和签名发布配置,不能用手动检查入口代替这些前提。
验证与交付边界
回归覆盖真实/Demo 隔离、过期与重复确认、目标/目录清单变化、Git 拒绝路径、恢复冲突及部分结果;实际退役、分支移除和恢复仅操作唯一标记的测试自有仓库。进程与缓存操作同样使用测试自有 fixture,不停止用户进程、不清理用户缓存。原生菜单事件、图标组合、窗口重开、更新请求取消与迟到响应,以及英/简中视图都有自动检查。
完整 Debug、优化 Release、定向 AddressSanitizer、原生 fixture、helper 与渲染结果须按最终源码对应 CI 核实。发布构建的单元测试与显式 opt-in 原生检查分别记账;跳过不算通过。安装器使用证据若仅验证非空映像环境中的正确拒绝,就不能记为当前 noUseObserved,也不能据此绕过真实操作的使用检查。
发布流程仅允许主 App、原创 MoleAnalysisSupervisor 和原创 GitObjectInspector 三份代码,逐个执行 arm64/x86_64 签名验证;不捆绑、下载或重签 Apple Git,也不捆绑第三方 Mole 分析器。DMG 与 ZIP 包含同一份通用 Release App,支持 macOS 15+、Apple Silicon 与 Intel,并附 SHA256SUMS.txt 和 BUILD_INFO.json。具体源码、构建、签名及公开下载校验以实际发布记录为准。
继续使用 Apple Development 开发签名,尚未公证,Gatekeeper 仍可能阻止打开;DMG 格式不改变这一限制。完整窗口交互、键盘、VoiceOver、双架构实机运行和真实用户目录权限仍需手动验收,合成视图与 CI 不替代这些检查。
preview.8 安装包不包含本页新增的 Git 整理、菜单栏/Dock 设置与手动更新检查。此前的精确进程停止、原生缓存工作流、Mole 分析与单个 Downloads .dmg 操作继续保留各自确认和恢复边界;广域 Mole 清理、卸载、维护、任意项目删除、AI 专用无头浏览器归属识别和 Sparkle 自动更新仍未启用。文档网站独立构建和部署,不随 App 安装。
源码:c5de70153e2e · 构建与测试(attempt 1)
SHA256SUMS.txt 覆盖 DMG、ZIP 与 BUILD_INFO.json;两种包内 App 的文件内容、签名与构建来源已核对一致。
Apple Development 开发签名;不是 Developer ID 分发签名,未经过 Apple 公证。Gatekeeper 仍可能阻止打开,DMG 不改变这一限制。
Release 配置单元测试在 runner 架构通过;通用归档从同一源码单独构建。原生 UI、VoiceOver、双架构实机运行与隐私授权沿用仍需手动验收。