Skip to content

原生化工程收尾(2026-10-24) ​

本轮按维护者要求收尾 A–F 工程 Goal。工程完成标准已达到:Release 候选、完整检查、包内验证、关键 UI 补验、迁移回退与可复现性能记录已交付。插件安装/移除确认、诊断详情和处理跳转的 XCTest 已通过,外部条件、发布事项及尚未通过的完整系统验收分别保留在下方。工程 Goal 结束不代表正式发布或默认宿主切换完成。

当前交付 ​

候选目录为 apps/macos/build/closeout-20261024-candidate/。native/Craft Hub Prototype.app 从当前未提交工作区重新构建,包含通知错误恢复及本轮开始前已有的软件中心改动;未替换日用安装。主程序 SHA-256:b78113d8bdab470e6ee07199d33ecc69e3c93bf3b4539bf62575bb43a026d3fe。9 个 Mach-O 组件均含 arm64,独立 deep/strict 签名校验通过。

复验归档 Craft-Hub-Native-0.0.1-alpha.5-macOS-arm64-review.zip 为 11,816,161 字节,SHA-256:796bd980b4a45db4598a48c6fb4df299bf15db50a71981b5f9f974ed7f312752。解压后签名和 778 个普通文件内容均与原包一致。这是本地 ad hoc 归档;正式签名、公证、发布及默认宿主切换未执行。

本轮检查结果
pnpm lint、pnpm typecheck、pnpm lint:macos通过,含公共边界检查
pnpm test --run298 个文件,2402 项通过、3 项跳过
Swift 全量及真实 Node / Keychain / 包内云 / 私有 scheme 专项两份测试产品共 252 项,251 项通过;可选官方下载 1 项跳过
pnpm build、pnpm build:macos通过,原生输出指向独立候选目录
当前包内插件管理、宿主扩展、配置/备份、迁移/回退、单实例、身份接收拒绝、Sparkle 验证七项通过;各会话清理后无临时进程残留
XCTest 安装/移除与诊断界面1 项端到端用例通过,13 个检查点通过,7 张窗口截图归档;约 63.1 秒

最初未启用集成环境变量的 Swift 运行也通过,但跳过 13 项,保留为 swift-test.log;最终统计使用启用真实 Node、当前包 sidecar 和私有 scheme 的 swift-integration.log。网络下载的历史实测仍在 Node 引导验收 中,未当作本轮重新下载。

各命令和退出码保存为同目录的 *.json / *.log,源码摘要在 source-sha256.json。验收时工作区仍有已修改及未跟踪文件;构建产物按实际源码摘要归档,不能仅凭当时的 Git HEAD 重建这一候选。随后在 codex/native-engineering-closeout 按运行时、云身份、桌面适配、原生基础与各界面模块、Web 兼容、打包验收、性能和文档整理提交。整理前的 439 个工程文件与 handoff-source-sha256.json 完全一致;整理过程中只补充本文的提交说明,并移除开发启动脚本按进程名终止所有原生 App 的行为。候选的产品源码保持不变,发布产物和本机验收证据继续保留在忽略目录。该提交分支保留验收基线。随后主线整合以远端 5a363d7 为父提交,纳入此工程分支 3d4f25c 的增量,并保留 Alpha 7 版本、公开更新验收、DOMPurify 3.4.17 及三浏览器安全回归。主线已有的插件打包测试超时与发布前先构建再测试的顺序也予以保留。上述 Alpha 5 候选、源码摘要和 XCTest 证据继续对应原产物,不能替代整合版本的复验。

XCTest 关键流程验收 ​

独立夹具和运行器位于 apps/macos/build/closeout-ui-20261024/。它使用标准 CraftHubMac 入口、独立应用身份和 HOME/profile;27 个产品 __TEXT 节、App Intents 元数据及包内运行时与上述新候选一致。HTTPS 测试目录只服务本地声明式归档,证书信任只提供给测试子进程,不改变系统信任库。

成功结果为 Result-20261024-171431.xcresult,report-20261024-171431.json 保存 13 个检查点及清理结果,summary-171431.json 记录 1 项通过、0 失败、0 跳过。screenshots/ 中七张窗口截图已经核对。实际完成:

  1. 安装审阅分别用 Escape 和“取消”关闭;运行时没有下载或安装。
  2. 审阅期间依赖升级并新增权限,首次确认须显示新计划,重新确认前不下载;二次确认后安装准确版本。
  3. 移除审阅分别用 Escape 和系统“Cancel”按钮关闭,已安装版本不变;确认后目标插件消失、依赖仍为 1.1.0。弹窗显示保留用户数据及本地源文件的说明。
  4. 损坏本地声明后,诊断详情显示插件名称、完整 JSON 错误、文件位置及检查时间;Escape 关闭,再打开并点击“管理插件”进入准确的本地插件详情。截图同时确认中文 README、commands 权限、包名/来源/版本;恢复声明后显示零错误、零警告及已完成检查无问题。
  5. 每个检查点保持零项目、零运行记录,不执行插件声明的命令。

首次运行 Result-20261024-141505.xcresult 在用例开始前失败:系统要求本机身份验证,随后 XCTest 报告 Timed out while enabling automation mode。维护者确认方便处理系统验证后重新启动,自动化已获放行。之后修正四处测试脚本假设:等待 sidecar 握手就绪、仅在当前 sheet 查找按钮、按实际系统取消控件定位、使用诊断显示名而非包名选行。所有失败结果保留,没有放宽产品检查或修改产品代码。

运行器编译过程中修正了 Swift 6 的主线程声明。旧测试包最初缺少 license,添加 UNLICENSED 后又因 private: true 不满足 Marketplace 校验而失败;最终移除此字段,四份本地夹具均通过 CLI 校验,保留所有失败日志。包名和权限声明未变,没有发布这些归档。

复验使用已经获得明确授权的运行器;系统如再次要求本机身份验证,需由维护者完成:

sh
python3 apps/macos/build/closeout-ui-20261024/run-approved.py --explicit-user-authorization

脚本每次重新生成临时 TLS 证书,保存 XCTest 附件与检查点;通过 finally 和信号处理关闭本轮 App、sidecar 与运行器,按 PID、可执行路径和启动时间确认退出,移除临时私钥及受保护握手,恢复损坏的测试声明。应用包、资料和证据保留。六次运行(一次系统初始化失败、四次脚本定位/时序失败、一次通过)均无本轮进程残留。成功会话记录并复核宿主、sidecar、运行器及其短生命周期子进程的身份,未使用强制清理;这属于验收会话清理,不算菜单退出的重新验收。日用原生 App 和维护者另行打开的体验窗口均保持运行。

A–F 工程交付核对 ​

阶段可审阅交付与验证入口
A桥接清单、ADR 0012、共享 Node 合同、Swift/Node 本机检查;跨版本历史记录可复验,当前 CI 策略见候选验收清单,最低系统另列
B共享宿主启动服务、公共事件流、重连和迟到响应隔离;模型/HTTP 测试及历史 Release 重连、主题/语言与工具入口记录
C原生首页/项目/面板/菜单与系统入口已实现;深链接和通知保持只导航;候选矩阵 明列每项系统验收范围
D管理页、声明式块、账户/密钥适配及无 Node 引导已交付;本轮包内专项和上述 XCTest 补齐指定关键流程;网页回退范围明确
E迁移与回退、单实例、签名能力门控、链接交接及 分发/更新流程 已实现;临时资料演练通过,正式身份与发布验证另列
F当前候选、源码摘要、检查/失败日志、验收截图、复验归档及本页清单已交付;双端性能记录 保留对应产物和测量限制

当前 report.json 汇总 14 项检查、源码摘要、产物、XCTest 检查点和进程清理。最终文档 lint 与 git diff --check 另有日志。本轮仅修正验收脚本和交接文档,构建后的产品源码摘要未变;不重复重建已经验证的产物。

外部条件与正式发布待办 ​

这些事项单独验收,不以工程构建或替身测试作通过证据:

待办所需条件 / 完成证据
最低系统及跨平台macOS 15、真实 Intel、可运行 x64 测试的工具链;Node 22/24 本机复验、Node 26 及 Windows/Linux 的托管 CI 结果
真实账户与安全存储云网页候选 callback 配套、真实账号授权、系统 Keychain 提示及正式签名升级后的访问
真实资料与设备身份迁移停止实际写入者、解决预检中的未知条目/未完成运行;Developer ID 双宿主迁移、恢复及回退证据
正式分发与更新Alpha 6 → Alpha 7 的凭据、签名公证与公开更新已有独立验收记录;当前工程整合版本仍需发布产物、Gatekeeper 和更新复验
默认安装和公开链接切换单独授权、系统同意、重启和旧 Electron 竞争验证;当前开关仍关闭
持续日用维护者连续两周记录,包括实际工具/账号交接与故障恢复

后续系统验收与已声明回退 ​

以下系统走查仍未通过,不能归为发布凭据问题,也不能据此声称完成全部原生体验:完整键盘和 VoiceOver 顺序、中文输入法组合输入、菜单栏/Dock 全路径、与其他实例并存时的后台全局快捷键、多显示器、辅助显示设置、失败通知及其他通知场景、真实安装器/敏感字段/未知回执恢复。逐项范围和历史证据见 候选验收矩阵。

性能已有可复现的双端启动/footprint 和面板/页面采样,详见 性能记录;计时终点不同的交互样本不作首帧优劣结论。新候选未重新采样,不把旧性能数据记在新二进制上。仍需同口径呈现延迟、拖动帧时间和持续日用测量。

项目能力审阅、自定义工具编辑和未支持的声明式块保留明确网页入口;这些是当前候选的能力对齐边界,并非“所有界面均已原生化”。桥接方法缺失与独立原生入口的区别见 桥接清单。工程 Goal 的完成必须保留这些限制,正式切换仍按原生化计划的单独标准验收。

Released under the MIT License.