面向 Apple Silicon Mac 的 Moira 桌面发行版,提供签名、公证后的安装包,以及兼容 Java 11 的源码构建流程。最新 Release 里也附带 Moira-jre.exe,方便 Windows 用户直接找到现成安装包。
这个仓库的目标很明确:

最终交付不是单纯“能在 IDEA 里跑起来”,而是一个可以分发给其他 M 系列 Mac 用户直接使用的 Moira.app / .dmg。
tutorial0/moira_macOS 已经把这份历史源码整理成了一个可以在 Apple Silicon Mac 上通过 IntelliJ IDEA + JDK 11 打开、运行、调试的工程,这是非常重要的一步。
本仓库是在这项工作的基础上继续往前推进,重点补齐:
原来的 GC.setXORMode(true) 即时擦写路径在 macOS 上会触发 SWT 崩溃。现在已经改成 paint 驱动的覆盖层重绘方式,功能恢复,同时避开了崩溃路径。
高解析度模式下,图盘不再依赖低分辨率缓存位图被系统放大,而是按屏幕缩放级别走 HiDPI 绘制路径,Retina 屏下更清楚。
右上角日期、时间、地点输入区已经改成不透明深色面板,并提升了前景对比度;高解析度模式下图盘也会为这块面板预留空间,避免和右侧文本互相压住。
程序现在区分:
~/Library/Application Support/Moira这样签名后的 .app 不需要再尝试往自己包内写入内容,缺失星历等运行时数据也会进入用户目录。
仓库已经内置:
scripts/build-dev.shscripts/package-macos.shscripts/make-icns.sh可以直接完成开发构建、启动、App 打包、图标转换、签名、公证和发布资产生成。
Moira-*.dmgMoira.app 拖到 Applications如果你更喜欢直接下载 App 压缩包,Release 里也会附带一个 zip 版 .app。
Moira-jre.exe这样 Release 页面里会同时提供 macOS 的 .dmg / .app.zip 和 Windows 的 Moira-jre.exe,按系统直接选就可以。
环境要求:
编译:
./scripts/build-dev.sh
编译并启动:
./scripts/build-dev.sh --run
开发启动器位置:
build/dev/Moira.sh
本地未签名打包:
./scripts/package-macos.sh
输出:
dist/Moira.appdist/Moira-1.50.2.dmg如果已经准备好 Apple Developer 证书与 notarytool profile:
export MOIRA_SIGN_IDENTITY="Developer ID Application: Your Name (TEAMID)"
export MOIRA_NOTARY_PROFILE="your-notary-profile"
./scripts/package-macos.sh
也可以使用 Apple ID + app-specific password:
export MOIRA_SIGN_IDENTITY="Developer ID Application: Your Name (TEAMID)"
export MOIRA_APPLE_ID="your@appleid.com"
export MOIRA_APPLE_APP_PASSWORD="xxxx-xxxx-xxxx-xxxx"
export MOIRA_APPLE_TEAM_ID="TEAMID"
./scripts/package-macos.sh
安装根目录解析顺序:
.app 内的 Contents/app用户可写目录固定为:
~/Library/Application Support/Moira
星历下载和其他运行时可变文件都会进入这里。
这里特别感谢 tutorial0/moira_macOS 的维护者。这个仓库保留了 Apple Silicon 下第一版真正可运行、可调试的工程基础,也让后续的打包、修复和发布工作有了可靠起点。
根目录主许可证保留为 LICENSE,沿用历史 Moira 的 GPL 文本。第三方许可证说明单独整理在 docs/licenses/LGPL-2.1.txt 和 docs/licenses/Swiss-Ephemeris-SEPL-0.2.txt。
这个仓库的定位是:给现代 Apple Silicon macOS 提供一个稳定、可维护、可下载分发的 Moira 桌面版本。
$ claude mcp add Moira_APP_MacOS_ARM \
-- python -m otcore.mcp_server <graph>