O = Output。本目录存放 Aligner 项目所有产出物。
IN git — 源码、工具、知识和规则放在这里;构建产物默认不进入 Git。
Git 仓库根目录:03-O/。不要在项目根目录或03-O/C1.source/单独初始化 Git 仓库。
| 路径 | 内容 | git |
|---|---|---|
C1.source/ |
源代码 — Sources/ + Tests/ + Package.swift | ✅ |
C2.builds/ |
本地构建输出 — 根目录只保留当前发布包目录、旧版归档、研发中间产物 | 🚫 |
C2.builds/Aligner-<Version>-build<YYYYMMDD.HHMM>/ |
当前最新包 — 最新可分发 DMG + SHA256SUMS.txt + release manifest |
🚫 |
C2.builds/X-旧版build成果/ |
历史存档 — 旧 DMG / 旧发布包归档,不放旧 .app |
🚫 |
C2.builds/Z-研发中间产物/ |
内部工作区 — 当前 .app、QA 报告、trace、截图样本、图标试验 |
🚫 |
C3.tools/ |
工具脚本 — 打包脚本、窗口诊断 | ✅ |
K1.业务知识/ |
业务知识 — 窗口行为、Space 枚举、AX API、架构共识 | ✅ |
K2.项目管理/ |
项目管理知识 — SOP、协作规范、经验教训 | ✅ |
03-O/ 是唯一 Git 仓库根目录。C1.source/、C3.tools/、K1.业务知识/、K2.项目管理/ 都随 03-O/ 一起版本管理。C2.builds/ 是本地构建输出和归档目录,不进入 Git;正式可回滚版本通过源码 commit、release tag、release manifest、DMG SHA256 和 GitHub Release asset 绑定。C1.source/ 只是 SwiftPM / Xcode 工程根,不是 Git 根。02-P/ 和输入材料 01-I/ 不进入该 Git 仓库。C2.builds/ 根目录永远保持清爽:只放一个当前最新包目录、X-旧版build成果/、Z-研发中间产物/。Aligner-<Version>-build<YYYYMMDD.HHMM>/,目录内放当前 .dmg 和 SHA256SUMS.txt。C2.builds/ 进入 Git。X-旧版build成果/ 只存历史可恢复包;旧 .app 不进入归档(避免 macOS 搜出一堆旧 App 影响系统表现)。Z-研发中间产物/current/Aligner.app 是研发和 QA 脚本使用的当前可运行 .app,不是分发包。Z-研发中间产物/qa-reports/ 存放 Round QA JSON、trace、XML、截图样本等中间产物,不允许散落在 C2.builds/ 根目录。Aligner-<Version>-build<YYYYMMDD.HHMM>.dmgC1.source/Resources/Aligner-Info.plist 中的 CFBundleShortVersionString / CFBundleVersion 一致;Z-研发中间产物/current/Aligner.app 只是 QA 可运行副本,不是版本事实源。C3.tools/package-app.sh 默认只打包不启动;需要打包后自动启动时显式设置 ALIGNER_OPEN_AFTER_BUILD=1。C3.tools/check-signing.sh 可检查本机当前会使用的签名身份。推荐长期固定 Aligner Local Code Signing;未创建该身份时,可临时使用 ALIGNER_CODE_SIGN_IDENTITY 指定现有稳定本地签名身份。lastActivationDurationMilliseconds,并补源码 guardrail 验证 5 轮循环上限和预算字段。appActivatedOnly 不再作为窗口卡片精准激活成功语义;它只保留为诊断结果。Option+Tab 的 Quick Switch 打开路径。Option+Tab 触发 QA 的默认等待,降低事件 tap 启动时序误判。ScreenCaptureKit 的 includeChildWindows 增加 macOS 14.2 可用性保护,保证 macOS 14.0 / 14.1 可编译运行。magneticNeighbor。v0.1.0-build20260619.2255 回滚基线。