Repository navigation
v0.6.0 — 全新引导、内置工具、续签 / Onboarding, bundled tools, signature renewal
What this release does
A new user goes from zero to a game on their phone in one guided run. The app walks a first-time player through platform choice, Xcode, keys and games — then keeps the build tools and a Python inside the app, so nobody installs Homebrew. A game installed with a free Apple ID shows its signature's remaining days and renews in place. And the repository's upstream sync is now a patch queue: real three-way merges instead of text anchors.
New
- Guided first-run setup: welcome → platform (Mac, iPhone or both) → Xcode → keys → games. The Xcode step opens the App Store and polls for the install, runs one administrator prompt to switch the toolchain and finish the first launch, then downloads the Metal Toolchain and (iPhone/both) the iOS platform with progress. Everything else installs in the background. Setup resumes where it left off; a player whose setup is already complete never sees it. Settings has "Run setup again".
- The build tools and a Python are inside the app: zstd, glslangValidator, spirv-cross, xcodegen and CPython 3.13 with every package the build needs — all from pinned, checksummed sources, license files included. A player installs neither Homebrew nor Python; the guided setup's tool step is instant. The floor stays at macOS 13.
- Reinstall without rebuilding: the install card gains Reinstall —
devicectlputs the signed app from the last build back on the device in seconds, with game data and saves intact. Save IPA… exports it as a standard IPA for a sideloader or another Mac. - Signature expiry and renewal: the game card shows the days left on a free Apple ID's 7-day provisioning. A Renew button re-signs in place — Xcode reuses every compiled product, only the signature changes — then installs over itself. Game data is preserved.
- Device detection: the app knows whether each game is actually installed on the connected device (orange "not on X" when it was deleted), and offers Reinstall instead of a full rebuild.
- A player's README: install, play, games, limitations — 1,900 words instead of 8,000. Building from source moved to BUILDING.md; the games gallery to GAMES.md; the update history to CHANGELOG.md.
- Issue triage and log first aid (report mode): the Copilot CLI labels new issues, asks for missing form answers, and matches
[RED]log lines against the symptom index.
Fixes
- Xcode installed but never opened: the dependency row said "no iOS SDK" and offered a download that could not run (xcode-select was still on CommandLineTools). It is now its own state — Xcode installed, not selected — with a one-click Fix (one admin prompt: switch the toolchain, finish the first launch).
- A failed dependency install names the reason: the row shows the tool's own error line, and for the causes we can name the exact command (Homebrew's folder owned by another user →
sudo chown -R $(whoami) /opt/homebrew; Homebrew missing → brew.sh; the Xcode license →sudo xcodebuild -license accept; network → check proxy). - A bundle-ID check no longer crashes on another user's project: the Xcode workspace records absolute paths, and a new macOS user inherits the first user's entries. Unreadable projects are pruned from the workspace automatically.
- The diagnostics block no longer prints
(null)for the second version in a dependency description. - The updater's own dependency check finds the Pythons
uvinstalls and records its findings in the diagnostics block.
Known issues
- Mods have not been played with a real mod yet: the layouts and the environment string are verified; the actual overlay is not.
- Windows: not provided on this page; the Actions artifact
NS-Port-Builder-qt-windows-x64has the current front end. - Route C M1 (game modules as an opt-in framework) is in review and not part of this release.
Install
- macOS: download
NX2Apple-macOS-arm64.zip, unzip, right-click → Open on first launch. In-app updates work from 0.4.9 on under the NX2Apple name. - Windows: not provided on this page; the Actions artifact has the Qt front end.
Credits
- v0lumehi: the onboarding, the bundled tools, the sync model (patch queue), the diagnostics, the upstream-first docs, the issue triage — twelve reviewed pull requests.
- subyoung: frame-time recording, return-after-play.
- yeager: Swedish localization.
- pyxl-dev: Luigi's Mansion 3 depth_mode fix.
- lex2ok: the Resume layer for the shader/Xcode build steps.
- a834354487: the Pythons
uvinstalls finding.
这一版做了什么
新用户从零到手机上跑起来,一次引导搞定。 App 带着新玩家走完平台选择、Xcode、密钥和游戏——然后把构建工具和 Python 装进 App 里,没人需要装 Homebrew。免费 Apple ID 装的游戏显示签名剩余天数,可以原地续签。上游同步换成了补丁队列:真正的三方合并,不再是文本锚点。
新增
- 引导式首次启动:欢迎 → 平台(Mac、iPhone 或都要)→ Xcode → 密钥 → 游戏。Xcode 步骤打开 App Store 并轮询安装完成,跑一次管理员密码切换工具链并完成首次启动,然后下载 Metal Toolchain 和(iPhone/都要)iOS 平台,带进度。其余工具后台依次安装。设置中断后接着来;已配置好的玩家不会看到引导。设置里有"重新运行设置"。
- 构建工具和 Python 装在 App 里:zstd、glslangValidator、spirv-cross、xcodegen 和 CPython 3.13(含构建需要的全部包)——全部来自 sha256 锁定的源码,附许可文件。玩家不装 Homebrew 也不装 Python;引导的工具步骤瞬间完成。最低系统保持 macOS 13。
- 不重构建就能重装:安装卡片多了"重装"——
devicectl把上次构建的已签名 App 秒回设备,游戏数据和存档完好。保存 IPA… 导出为标准 IPA 给侧载器或另一台 Mac。 - 签名到期与续签:游戏卡片显示免费 Apple ID 的 7 天签名剩余天数。续签按钮原地重签——Xcode 复用全部编译产物,只换签名——然后装回手机。游戏数据保留。
- 设备检测:App 知道每个游戏是否真的装在连接的设备上(删了会显示橙色"不在 X 上"),并直接提供"重装"而不是全量重建。
- 玩家版 README:安装、玩、游戏、限制——1900 词而不是 8000。源码构建移到 BUILDING.md;游戏画廊移到 GAMES.md;更新历史移到 CHANGELOG.md。
- Issue triage 和日志急救(报告模式):Copilot CLI 给新 issue 打标签、追问缺失的表单项、把
[RED]日志行对照症状索引。
修复
- Xcode 装了但没打开过:依赖行说"缺 iOS SDK"并给了一个跑不了的下载按钮(xcode-select 还指着 CommandLineTools)。现在这是独立状态——Xcode 已安装但未选中——带一键"修复"(一次管理员密码:切换工具链,完成首次启动)。
- 依赖安装失败说出原因:行内显示工具自己的错误行,能命名的原因给确切命令(Homebrew 目录属主不对 →
sudo chown -R $(whoami) /opt/homebrew;没装 Homebrew → brew.sh;Xcode 许可 →sudo xcodebuild -license accept;网络 → 检查代理)。 - bundle-ID 检查不再崩在别的用户的项目上:Xcode workspace 记录绝对路径,新 macOS 用户继承第一个用户的条目。读不了的项目自动从 workspace 里删掉。
- 诊断块不再打印
(null):依赖描述里第二个版本号。 - 更新器的依赖检查找到了
uv安装的 Python,并写进诊断块。
已知问题
- Mods 还没有用真正的 mod 实测过:布局和环境变量已验证,实际的叠加加载没有。
- Windows:本页不提供;Actions 产物里有 Qt 前端。
- 路线 C M1(游戏模块作为可选的 framework)在评审中,不在这个版本里。
安装
- macOS:下载
NX2Apple-macOS-arm64.zip,解压后右键 → 打开(首次)。0.4.9 起 App 内更新在 NX2Apple 名下正常工作。 - Windows:本页不提供;Actions 产物里有 Qt 前端。
致谢
- v0lumehi:引导流程、内置工具、同步模型(补丁队列)、诊断、上游优先文档、issue triage——十二个经过评审的 PR。
- subyoung:帧时间记录、游戏退出后回前台。
- yeager:瑞典语本地化。
- pyxl-dev:Luigi's Mansion 3 depth_mode 修复。
- lex2ok:shader/Xcode 构建步骤的 Resume 层。
- a834354487:
uv安装的 Python 的检测。