Notepad-- macOS 原生迁移 · 任务摘要 作者自用案例 · 根据开发过程编辑整理 1. 先把目标说清楚,开发才有方向 目标很明确:让 Notepad-- 成为真正的 macOS 原生应用,同时保留日常编辑所需的能力。讨论很快从“用什么技术”落到了更具体的问题:哪些功能必须保留,哪些内容明确不做。 选择原生路线 采用 AppKit、SwiftUI 与系统文本编辑组件,不再依赖 Qt 或 Scintilla。窗口、菜单、文档操作与编辑体验都围绕 macOS 重新实现。 守住功能范围 保留多文档、搜索替换、列编辑、高亮折叠、编码转换与恢复等约定能力;排除对比功能和旧插件兼容,大文件与十六进制继续只读。 提前约定兼容方式 最低支持目标设为 macOS 15,新系统采用可用的新能力,旧系统减少动效。现有 Qt 工程保留,原生版本独立开发。 TaskBelay 如何参与 把确认后的需求和排除项留在任务中,让后续设计、实现与复查围绕同一份约定展开。 推进结果 技术方向和功能范围明确下来,计划可以围绕具体目标展开。 2. 先确认完整计划,再进入实现 Codex 将原生迁移整理成 10 项工作和 12 项验收要求,覆盖工程、编辑器、搜索、工具与验证。TaskBelay 保存计划并等待确认;用户回复“开始”后,任务进入实现阶段。 先对照,再迁移 先梳理原版真正具备的功能,为保留能力建立对应关系,再安排工程、编辑器、搜索和工具等实现工作。 改动位置清楚 新增独立原生工程与配套文档,列出预计修改的文件范围,旧 Qt 源码保持不动。 检查跟着功能走 把中文输入、多光标撤销、安全保存和恢复等关键行为列入验证,初始安排 20 次自动检查命令。没有实机环境的兼容性项目单独记录。 TaskBelay 如何参与 把计划与确认状态保存在一起,让后续工作围绕已同意的范围展开。 推进结果 用户确认的是已经保存的计划;后续实现可以回到这份计划核对。 这次任务中的计划确认与阶段切换。 草稿保存后:TASKS · COMPLETE_TASKS 允许读取与整理计划,等待确认。 用户回复:开始 确认后提交同一份计划。 TaskBelay 返回:IMPLEMENT · COMPLETE_IMPLEMENTATION 当前允许的行为开始包含修改产品文件。 3. 遇到失败,修复与复测接着走 保存状态和 UI 检查发现问题后,Codex 提交失败原因,TaskBelay 将任务带回实现阶段。修正文档通知和启动参数后,再次提交实现并复测。需要用户处理的系统提示也留在当前任务中,处理后接着推进。 文件存好了,界面却没更新 保存后的内容完整,但侧栏仍显示旧文件名和“未保存”标记。排查后修正了文档状态的通知方式,让列表随保存结果更新。 测试没跑通,先找阻断原因 一个测试参数被误当成文件名,触发对话框,挡住查找和撤销操作。调整测试启动设置后,重新运行相关流程。 修复与交付保持一致 修复后重新运行 UI、文档与编辑检查,再按最新源码构建和校验 Universal 安装包。 TaskBelay 如何参与 记录失败并切回需要修复的阶段。TaskBelay 接收检查结果;定位问题和修复代码由 Codex 执行。 推进结果 从修复代码到重跑检查,再到更新安装包,每一步都能回到同一任务查看。 这次任务中的计划确认与阶段切换。 提交失败结果:taskbelay_submit_test 记录失败原因,选择返回实现。 记录中的阶段变化:TEST → IMPLEMENT 下一步重新包含产品文件修改。 修复后的下一步:IMPLEMENT → TEST 提交修复,按当前内容继续检查。 一次补充验证的安排 原额度已用完:20 次;补充明确的检查:+4 次 修复已经改变了源码,还需要重新跑原生回归、构建并检查安装包,才能确认这次修改的结果。 - 完整原生测试 - 当前 Release 构建 - DMG 打包 - DMG 校验 这是第一次追加检查。整份迁移记录共保存 8 次额度调整,自动命令额度从 20 增至 37;每次都附有原因和待执行的检查。 20 → 24 → 28 → 29 → 30 → 31 → 32 → 36 → 37 4. 回到最初的计划,明确接下来做什么 原生工程和安装包产出后,用户与 Codex 再次对照实施计划和原版功能。跨文档搜索、批量操作、语言样式等能力被逐项核对,后续需要补齐的工作有了具体内容。 对照搜索场景 围绕单个文档与全部已打开文档,分别核对查找和替换能力。 细化批量操作 把多组替换规则、规则导入导出和批量重命名分别列出,逐项检查。 明确继续完善的内容 将语言样式、摘要工具与本地化纳入后续功能完善,保持与原计划的对应关系。 TaskBelay 如何参与 保留最初的约定和开发过程,为逐项核对功能提供参照。 推进结果 已经实现的能力与后续工作更加清楚,下一步可以围绕具体功能展开。 已经落地的成果 - AppKit、SwiftUI 与系统文本组件组成的原生工程。 - 文档读写、编辑、搜索与恢复等核心功能。 - 可回看的需求与实施计划,以及本地 Universal DMG 安装包。 原生工程和核心功能已经落地。完整功能迁移与兼容性验收,是接下来继续完善的重点。 UI、文档与编辑检查在本机环境执行,安装包按当前源码重新构建。 从原生工程,继续打磨日常体验。 原生应用建立后,项目继续完善中英文界面,让设置、菜单与系统面板使用同一种语言。 中英文切换,让界面语言保持一致 后续开发 · Codex 直接实现 在设置中选择简体中文或 English,重启后应用菜单、设置和系统文件面板使用所选语言。双语改造通过了 43 项单元测试、5 项 UI 测试,并完成双架构 Release 构建。