Skip to content

feat: add macOS arm64 support without changing Windows flow - #6

Merged
liebaojun merged 5 commits into
liebaojun:macos-arm64from
fsh114514:macos/arm64-support
Aug 2, 2026
Merged

feat: add macOS arm64 support without changing Windows flow#6
liebaojun merged 5 commits into
liebaojun:macos-arm64from
fsh114514:macos/arm64-support

Conversation

@fsh114514

@fsh114514 fsh114514 commented Aug 1, 2026

Copy link
Copy Markdown
Contributor

说明

基于 MakoCode v1.6.7 增加 macOS Apple Silicon(arm64)适配,Windows 路径和安装器逻辑保持独立。

主要内容

  • 增加 macOS arm64 DMG/应用打包配置和图标。
  • Finder 启动时补齐 Node/npm/Claude 的 PATH。
  • 没有 Node.js 时自动下载官方 macOS LTS 到 MakoCode 用户数据目录。
  • Node.js 安装完成后再安装 Claude Code CLI。
  • macOS Git 使用系统 Command Line Tools;同时正确识别系统 /usr/bin/git,避免误报“没有 Git”。
  • Git 安装失败时提供“打开 Git 安装器”入口。
  • npm 子进程保留 macOS 基础 PATH,避免 spawn sh ENOENT
  • 保持 Windows 分支、NSIS 安装器和 Windows 路径不变。
  • 修复安装状态显示和首次配置流程中的失败/重试问题。

独立 DMG

作者可以直接下载并放入官方 Release:

下载 MakoCode-1.6.7-macos-arm64.dmg

SHA-256:

7b46d6672981fd5d9a641d0973314c576214c38f46b861437e5c19e23e4085cf

独立 Release:

https://github.com/fsh114514/MakoCode/releases/tag/v1.6.7-macos.1

已验证

  • node test/platform.test.js 通过。
  • macOS Apple Silicon 应用可启动,首次配置向导可正常显示。
  • 在无 Node/npm/Claude 的隔离环境中验证了首次依赖检测和 Node.js 自动安装流程。
  • 验证了 Git 缺失分支、Command Line Tools 已安装时的行为,以及系统 Git 的正确识别。
  • 验证了 Git 安装失败不会再出现 安装包不存在: undefined
  • 验证了 npm 不可用时会给出明确提示,不再显示 spawn npm/sh ENOENT
  • 验证了安装失败后可以重试,Windows 相关代码未被 macOS 分支改写。

如果作者暂时只想提供 macOS 下载,可以直接使用上面的独立 DMG;如果希望长期维护,再合并本 PR。

@fsh114514
fsh114514 marked this pull request as ready for review August 1, 2026 08:45

@liebaojun liebaojun left a comment

Copy link
Copy Markdown
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

感谢你为 MakoCode 做的 macOS 适配!代码我逐行审查过了,整体质量很高:

✅ 认可的地方

  • lib/platform.js 抽象层干净,commandExists 的正则白名单、resolveCommand 全 PATH 解析不经 shell(根治 spawn sh ENOENT)都很专业
  • Node.js 自动安装走 nodejs.org 官方 LTS,可追溯
  • 修复了 test-connection 双重响应、安装状态判定、mac Git 检测等真实问题
  • NFD→NFC 文件名规范化和打包清单补 SKILL.md,说明真的跑过打包
  • Windows 分支隔离良好,mac 改动不影响 Windows 构建

📝 合并前请修改(1 处必需 + 1 处可选)

  1. 【必需】preload.js:wizard.html 中引用了 window.makoElectron?.platform === 'darwin',但 preload.js 没有暴露 platform 字段(目前靠 navigator.platform 兜底,功能正常,但属于未实现的引用)。补一行即可:platform: process.platform,
  2. 【可选】lib/installer.js 中 userData 的 fallback 路径写的是小写 makocode,与 app.getPath('userData') 的 MakoCode 大小写不一致,建议顺手统一

🔧 发布相关提醒(不需要改代码,供知悉)
3. fork release 的 DMG 构建自 commit 77f1e67,PR 最终 head 之后又改了 3 个 commit(含 git 检测修复)。合并后我会用最终代码重新构建发布,以官方 release 为准
4. mac 包是 adhoc 签名 + 未公证,用户打开会有 Gatekeeper 警告,发布说明需写明"右键打开";mac 自动更新(electron-updater)建议作为后续工作

改完我马上合并,感谢贡献!

@liebaojun
liebaojun changed the base branch from master to macos-arm64 August 1, 2026 13:42
@fsh114514

fsh114514 commented Aug 1, 2026

Copy link
Copy Markdown
Contributor Author

非常感谢您的审查,也谢谢您把合并前需要确认的地方和发布注意事项都列出来了。我按您的建议重新核对了当前 head 7c8a25a

preload.js 当前已经包含 platform: process.platform,所以 window.makoElectron?.platform 这处引用是完整的。进一步查提交记录后确认,这行来自基线提交 510702b,因此在本次 PR 的 diff 中没有作为新增内容显示,可能不太容易注意到。

关于 userData 路径,我也重新做了运行核对:当前 package.json 的应用名为小写 makocode,实际的 app.getPath('userData') 和运行日志都指向 ~/Library/Application Support/makocode。为避免独立 server fallback 与 Electron 主流程产生两个数据目录,我暂时保留小写;如果项目后续统一调整应用数据目录,我也可以继续配合迁移。

发布相关提醒都已知悉:fork DMG 确实是较早提交的构建,合并后以最终代码重新构建的官方 Release 为准;未公证包首次打开需要“右键 → 打开”的说明也会注意。macOS 自动更新可以留作后续工作。

再次感谢您认真审查和后续发布安排,辛苦啦喵!

@liebaojun
liebaojun merged commit 7f377f1 into liebaojun:macos-arm64 Aug 2, 2026
liebaojun added a commit that referenced this pull request Aug 2, 2026
merge: macOS arm64 support into master (from PR #6)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants