# Changelog The release history of NX2Apple, newest first. Every release, with its full text, is on the [releases page](https://github.com/LNPANDY/NX2Apple/releases). Newest first. The fork follows upstream daily, so its game list and host fixes arrive automatically. | Date | Version | What changed | |---|---|---| | 2026-11-06 | v1.2.3 | **Fixed**: the experimental builder builds again. The app bundles `nxbuild 0.6.3`, which reads the engine from `NXB_ENGINE` (1.2.2 stopped with "--engine is required") and is ported to the engine pin `88c7e03f51e3` (0.6.1 refused its `patch_nso.py`). It no longer stops in the Mac shader step (1.2.3-rc1 with 0.6.2). The extract stage has a name and a bar with the time left, and no raw `%@`. The launcher needs nxb 0.6.3 or newer. **Changed**: `nxb 0.6` translates the shaders with its own translator, without `spirv-cross`. `nxb 0.6.3` compiles them with its own front end, and the Mac shader step of Super Mario Bros. Wonder took 5.2 instead of 10.3 minutes. Apple's compiler still makes the GPU code (#826, #830). | | 2026-11-06 | v1.2.2 | **New**: the experimental builder (Settings, Use experimental builder) now builds the whole game with nxbuild: the launcher runs `nxb build` and does not run the build script at all, for a Mac app and for the iPhone and iPad options. It reads NSP, NSZ, XCI, merged packages, a NUP, a game folder and DLC, and surveys a game with no profile. There is no fallback to the script: a case nxb does not take, or a failure, shows nxb's exit code and its last error line. It needs nxb 0.5.1 or newer, which the app bundles when its release is pinned. The setting is off by default and nothing changes for a default build. Not yet run on a device: the iPhone and iPad path, and the new input kinds on real game files (#749, #794). French, Italian and Swedish controller and Steam Controller (2026) texts, waiting for a native review, by @v0lumehi (#789). A guide for updating a built Mac game and keeping its saves, by @thehobbit85 (#796, #805). The Windows launcher is `NX2Apple.exe` now, with an in-app update, the old settings and library stay (#812). Engine pin `88c7e03f51e3` (28 upstream commits): Ocarina of Time on Switch 2 plays on the Mac at about 59 fps through Kokiri Forest (seedds/nxnative#1299) and Kirby Air Riders on Switch 2 at 60 fps, Mac only, by upstream's notes, nobody has played them on this fork (#813). **Fixed**: building an NVN game for the shared iPhone and iPad app no longer stops at `FAIL: copy the shader libraries` after the engine packed the shader library into `b-.img`, reported by @zhukangyu26-stack, @tnt739660506-prog and @caixukun1919810114514, by @xiaofeng-han (#781, #795, #800, #782). Library cover banners for the eight Switch 2 and Nintendo Classics games not yet in `titledb`, on the Mac and on Windows (#808). The build activity bar says that scanning the last few shader files can take several minutes instead of looking stuck at 99%, by @thehobbit85 (#489, #806). The Mac launcher copies the game data to an iPhone again when an update produced a different `romfs.img` of the same size, by @thehobbit85 (#261, #807). The Qt launcher tests pass on macOS's Python 3.9, reported by @Koshindai, by @thehobbit85 (#799, #804). iOS 26.0 no longer crashes before the first frame with Metal 4 pipelines, upstream PR #1213 by @mmkzer0. Games with a big memory layout work on the Mac and a game whose memory pool does not fit an iPhone keeps its guest memory in files. Audio renderers play from their own PCM blocks. A reboot no longer packs the game data again, upstream PR #1354 by @lunks. A missing `zbic` package is found at the start, and an Oodle shader table is proven by a decode. Game fixes from the engine include Mario Strikers: Battle League by @sen-6ei and Assassin's Creed Revelations by @Fbenhaddou, plus Axiom Verge, Super Smash Bros. Ultimate, Fire Emblem Fortune's Weave, Super Mario Galaxy 2, Splatoon Raiders, Breath of the Wild and Unreal games (#813). The Windows Library game strip no longer widens the page (#812). On Windows, building from an extracted game folder no longer stops at `pack v...` with `FileNotFoundError: [WinError 2]` on `cp -c`, the shader split no longer fails with `ValueError: max_workers must be <= 61` on a PC with 32 or more CPU threads, a game or build folder with Chinese or other non-ASCII characters no longer fails at `[5/7] iOS shaders` with `no iOS shader libraries`, and a fresh install opens the first-run setup assistant automatically (#803, #810). Not yet run on a device: the shader split hint and the iPhone data receipt were checked with synthetic events only (#806, #807). Every NVN game built before is built again once, because the shader chain moved (#449, #813). No real game was run on the new engine build by us, and the Windows self-update was not run from a real release (#812, #813) | | 2026-11-06 | v1.2.1 | **New**: Steam Controller (2026) over USB-C, Bluetooth and the Puck, with per-game mappings in the launcher, games must be rebuilt, by @thehobbit85 (#764, #731). A note in Launch options that says why a game has no resolution setting, by @Haseenesss (#574, #754). **Fixed**: the Mac launcher builds a Switch 2 NUP or a game folder of a game with no profile when the engine can survey it, the game itself does not run yet and needs upstream work (seedds/nxnative#1299), the Qt launcher still refuses it, reported by @xdgpx (#748, #783). The Mac host build uses the selected Python, reported by @temmiegreen, by @thehobbit85 (#711, #729). Windows finds `python.exe` in the install folder when it chains into the venv (#774). 20 Italian shell texts reworded by @zatteogit (#744). The README says Switch 2 games need no `prod.keys`, by @rivitt (#734). The compatibility switch for older iPhones and iPads writes the key the game reads, by @thehobbit85 (#719, #723). Build progress and log stay across launcher windows, by @thehobbit85 (#405, #724). A failure row for low disk space while building the Metal archive, by @thehobbit85 (#463, #725). `DM_PSO_BUNDLE=off` from env files works on iPhone and iPad, by @thehobbit85 (#726). The Tool tests job reports engine test failures and the shell and language-row tests are repaired (#690, #698, #722, #727, #728, #786) | | 2026-11-05 | v1.2.0 | **Fixed**: wrong library covers such as a Switch 2 Edition or a bundle instead of the game, 164 of 167 titles with several shop products now pick the game, reported by @zatteogit (#403, #632). About 120 iPhone shell texts that were English in German, Swedish, French and Italian, and three error messages that were English everywhere, now in six languages, machine translated and waiting for review (#631). SideStore installs of a shared IPA with a very large shader tree, by @Silverhza (#587, #593). iPhone Duo rotation and the tabletop layout, by @jonochocki (#642). Game files with an upper case extension (#554). Games in a subfolder whose update or DLC sits in a sibling subfolder (#760, #762). The Mac app build on a disk without an atomic swap (#595, #742). The game language row for a Switch 2 game with a NUP update (#619). The game language row for a Switch 2 game with no control data, read from the game's own files, on the Mac and on iPhone and iPad (#668, #693). The iPhone quit prompt text (#620), the game data out of the iCloud backup (#618), the iPhone and iPad shell controller input order and tap echo guard by @Haseenesss (#660), the console mode pointer staying hidden while a game starts by @Haseenesss (#380, #741), the Windows engine recovery crash (#613), and the Windows Python install chaining directly into the venv and offline wheels setup plus 1.2 engine `tree_tar` and single-file shader library support (#765, #772). The stale shader notice popup for both reasons, texts waiting for a native review, by @djdev0010 (#320, #470). **New**: engine pin `777a5f6c618a` with 105 upstream commits, Mario Kart World, Mario Tennis Fever, Super Mario 3D All-Stars and more (#689), and `7249ee9f95ed` with 28 more upstream commits, Star Fox (Switch 2), Yoshi and the Mysterious Book (Switch 2) and DRAGON QUEST BUILDERS 2 at 60 fps, up to 120 fps for Fire Emblem Fortune's Weave and Mario & Luigi: Brothership, and single-file shader libraries and compile caches, by upstream's notes and not played by us, built games are rebuilt on the first Play (#712, #761). The Windows release (`NX2Apple-windows-x64.zip`) on the releases page with the 1.2.0 interface, the bundled engine tree so a Windows player needs no git, multi-core parallel NSO rewriting, cache management and an in-place iPhoneOS 27.2 SDK upgrade (#615, #616, #765, #768, #771, #772). Each iPhone and iPad game framework carries its own host binary (`loader: "FH"`), so future engine updates no longer require rebuilding existing games before they can start (#451, #756). Experimental builder (`nxbuild 0.2.0`, off by default) for Rust extraction and shader splitting of NSP, XCI, NSZ, dump folders and Switch 2 `.nup` packages (#749, #752, #766, #767). Split a Bluetooth Joy-Con pair into two sideways controllers on the Mac (#740, #745, #770). iPhone Duo side column for the chips and Back (#622, #633). "Preparing game…" after Play, by @Silverhza (#652). 24 Italian texts reworded, by @zatteogit and @Dino0005 (#687, #704). The .NET check follows the dotnet the build runs, by @oliphantaaron (#342). **Known issues**: of the Switch 2 games only Donkey Kong Bananza was tried, through the launcher on a Mac, an iPhone and an iPad (#445), the Switch 2 game language list is not seen on a device and has no Thai or Polish (#693), of the Switch 2 games only Donkey Kong Bananza has a store cover (#632), and the Duo side column is only checked in the Simulator (#622) | | 2026-11-03 | v1.1.0 | **Switch 2 games in the launcher** (#603, #604, #605, #606, #607, #608, #609, #610): the Mac and the Windows launcher take a Switch 2 game folder or a `.nup` file, with no `prod.keys`. Games get a Switch 2 mark and a note for the chosen target, the build stages have names in every language, and a failure row says when the keys are older than the game. Nobody has played one through the launcher yet. **Touch controls** (#582, #581, #580, #600): a size setting, a left stick place, a hint for the right stick of the 3D layout, and an editor in the shell settings that moves each control. **Quit and delete**: hold the controller's Home button for 2 seconds to quit a Mac game on macOS 27 (#579). On iPhone and iPad, the gear menu in the game or a Home hold quits, and the app closes and opens on the library (#601). Delete a game from the launcher, with its saves kept unless chosen (#562). **Also new**: Cloud saves folder in the Mac launcher (#561), Start in console mode (#565), controller button mapping on iPhone and iPad by @Haseenesss (#495, #576), picture Fill or Fit (#575), iPhone Duo layouts by @jonochocki (#230), per-game mods and env.txt (#573, #566), moving the cache folder (#584, #567), the Finder way to send game data (#586), a clearer framework error (#568). **Engine pin** `641d1480021a` (#598): new Switch 2 and other games, by upstream's notes, not played by us. **Fixed**: NSPs without a title ID in the file name by @Haseenesss (#548), the Duo outer screen row (#563), the Windows IPA handoff by @tmrsm (#182), the Windows first sync (#597, #602). **Docs**: README in German, Swedish and French (#569), Italian documents by @PikaMan80 (#527), Italian texts reviewed by @Dino0005 (#541, #570). Requires macOS 27 for the Home quit. | | 2026-11-02 | v1.0.2 | **Export as IPA, and the game data to a device or a drive** (#531, #416): the Install card of the Mac launcher has a switch with Install on device and Export as IPA. Export needs no device and no signing team. It builds the shared app with the frameworks of the games in the shell's library and writes an unsigned `NX2Apple.ipa` into the shell folder, for AltStore, SideStore or another tool you sign with. With the shared app, the game data is not in the IPA. Step 3 sends it to the app on a paired device or copies it to a drive or a folder, with progress and Stop. **What the IPA holds** (#542, #540): Export as IPA has a second choice. Shared app stays the default. One game, all inside makes one IPA per game with the game data in it, for tools that cannot copy data into an app. It has its own bundle ID, `org.nxnative.`, so its saves are separate. It is built through the engine's one-game path. **Not tested end to end:** nobody has run an export on a real device or with a sideloaded app yet, and the one-game IPA was not checked with a sideloading tool either. A very large IPA can fail to install, and we do not know the size limit. See Known issues. **The Italian interface** (#528) by @Dino0005. The 38 texts of the export card, the texts of the new choice and the two new texts `shell.frameworkIncomplete` and `shell.gameLeftOut` are a machine translation for review. **A language is now one JSON file** (#478, #479, #480, #481): the Mac and the Windows launcher read the same files, the language list comes from them, and a test per front end checks every file. **The iPhone shell speaks the player's language** (#482, #485): its texts are lines of these files, and a game's settings rows show in the player's language. **A tap on a Recently played game starts it** (#457, #425), and the rows get more space. **The launcher's code moved into stores** (#456, #458, #460, #462, #466, #467, #469, #471, #473, #476, #530): no visible change. **Engine pin moves to `65501fbb`** (#536): New on the Mac by upstream's own notes, TRIANGLE STRATEGY, Castlevania: Belmont's Curse, SUPER ROBOT WARS Y, Splatoon Raiders, Super Mario RPG and Fire Emblem Fortune's Weave. The Mac settings window leaves the screen on Play. The NSP script decodes AV1 movies with dav1d and reads gzip-wrapped shader archives. Digimon's saves appear. We did not play any of it. We dropped the patches 0045 and 0052 because upstream took both changes. Upstream declined seedds/nxnative#492 (the runtime profile) and closed #755 and #839 for its own pointer hiding, so 0001, 0053, 0046 to 0050, 0032 and 0054 stay in the patch queue as fork-only. **Developer tooling:** `tools/bump_candidates.py` lists the upstream commits of a pin bump that the front ends depend on (#465). Fixes: a cut-off delete of a stale game framework no longer breaks the next build (#539). Quitting while the launcher removed one, about a minute on an external drive, left half a framework in the shared app folder, and the next build of another game failed at Prepare the shared app with "no readable game.manifest.json". Now the delete is a rename plus a background delete, mirror copies land only when complete, and an incomplete framework of another game is left out with a note that names the game and the missing file. Devices on Xcode 27.2 are found again, its `devicectl` changed the layout of the device list (#496, #488). The exFAT `._` files of a volume no longer break the Mac app pack, patch 0057 by @lucaszhongsj (#521, #486). Legacy PFS0 packages without the final name terminator are read, patch 0058, and the rewriter recognizes pointer tail calls before zero padding, patch 0059, both by @BadAppleD (#520, #519). Save to in the Build tab can create folders, by @SifatTaj (#522). **Known issues:** Export as IPA and Send game data are not tested on a real device or with a sideloaded app. One game, all inside is not verified with a sideloading tool, and a very large IPA can fail to install (the size limit is unknown). The first Play after the update rebuilds games, because the shader chain moved. The shader split can sit at 99% for several minutes at its end (#489). Breath of the Wild fills the disk (#413) and a Super Mario Odyssey shader step fails on an M1 with Xcode 27.2 (#361), both still open | | 2026-11-01 | v1.0.1 | **The shell finds each game by its image** (#441, #443): the shared game-data folder on the iPhone or iPad no longer needs one folder per game. Each game is matched by the identity of its `romfs.img`, up to two levels below the chosen folder, whatever the folders are called. **Upstream moves to `cd859c38`** (#444): the engine alone can now do these things, by upstream's own notes and not checked in the launcher: Donkey Kong Bananza (Switch 2, tested through the first level, Mac only) and Hollow Knight play, Dead Cells has a profile, and a game builds from a folder of its files without `prod.keys`. The launcher does not build Switch 2 games or games from a folder of files yet, see #445. Shift plus an arrow key moves the right stick on the Mac. **NVN games need Xcode 27.2** (#447, #444): the new engine locks the Metal compiler of Xcode 27.2, and the launcher says so. On Xcode 27.1, update Xcode before building a game. Fixes: the several-games failure message of the new engine is still recognized (#444) | | 2026-10-31 | v1.0.0 | **The engine comes from the release** (#267): the release app keeps its engine in its own store and builds from it. It no longer clones or pulls the repository. Settings shows the engine with a Check button, the Stable and Experimental channels and an automatic update switch. A channel switch asks first. The engine arrives with a signed `latest.json`, and the app installs nothing that fails the check. **One shell app for iPhone and iPad** (#226): the app holds all your games, with an art-led library, Cover Flow when the screen is on its side, settings for each game and controller or keyboard navigation. The iPhone / iPad target builds a game into the shell. Re-signs and reinstalls keep the game data and saves. **Launcher roundup** (#281): the library switches between Owned and Built, a slider that differs from its tested default gets a reset arrow, a new release shows as an icon at the end of the top bar, the Dock mirrors a running build, and console mode lists the games ready on this Mac first. Settings gets an uninstaller that removes the launcher's settings and engine trees. Games, saves and keys stay, and the app goes to the Trash. **The Mac icon uses Liquid Glass** (#290). **The Qt front end takes the Mac launcher's palette and Manrope font** (#222). **Upstream moves to `c5fe6b5d`** (#319): Metal 4 pipeline specialization, shared host shaders compiled during the build, parallel rewriter scans, and fixes for NVN buffer offsets, attachment capacity and depth/stencil pairing. Upstream's own fullscreen fix replaces ours. **Release candidates** (#332): a release is tested as a candidate first, so players get the exact build that was tested. Fixes: the iPhone cloud-save folder picker opens once per tap and Open stores the folder (#321), Tears of the Kingdom 1.4.2 no longer runs at double speed (#311, #312), Mario Tennis Aces gets past the rewrite step (#307) and past the crash after the shared fonts load (#314), iOS DLC in `Documents/aoc` is found (#319), the Windows toolchain checks name their fix for the link probe, SDK stubs, Metal and Git installs and pinned wheels (#206), console mode hides an idle pointer and asks again for full screen after a game (#339), a failed engine sync puts `engine/` back as it was (#338), a patch that does not apply is no longer taken for one that upstream already has (#323) | | 2026-10-31 | v0.7.5 | **Xcode 27.2 no longer stops game builds**: Xcode's auto-update raised the Metal compiler to 32023.922 and NVN games stopped before the shader steps. A newer compiler of the recorded generation now builds on with a note in the log. Older or cross-generation compilers still warn. **On 0.7.3 or older? Update now.** Older apps cannot build games any more and show "Repository: not found". Install this version and building works again. Games and saves are kept (details in discussion #306) | | 2026-10-31 | v0.7.4 | **The engine is fetched on its own** (#273): the update no longer bundles the engine source. Upstream fixes sync online inside the launcher, so they do not wait for a release. This needs GitHub access, and the launcher shows the progress and the reason for a failure. **Game language is a menu** like the iOS shell, set to System by default (#283). **A faster launcher**: tab switches (#297), Options and Manage sheets (#294), font and button rendering. Fixes: console mode starts a game from a window that just left full screen, a game folder inside iCloud Drive stops the build with an explanation because iCloud moves build caches away (#279), console mode hides the pointer after a few idle seconds (#280), *Restart now* opens the new copy from a helper once the old process has exited (#277). On 0.7.3 or older, `Repository: not found` means the old app's repository check no longer matches the new layout. Update to 0.7.4 and set it up again | | 2026-10-30 | v0.7.3 | **German interface** (#225), with thanks to @kidziiii. **Saves**: find the game's save on the device itself, then pick the iPhone or iPad to sync with (#260). **zbic is bundled** (#258): it reads Nintendo's zstd-variant modules, and the dependency probe checks it. Fixes: a game whose base NSP sits in a subfolder (`nsp本体`) finds the update and DLC beside it (#240, #246), the Choose file dialog accepts NSZ and XCZ (#243), installing on a device no longer passes `--remove-existing-content`, which deleted the game data there (#266), a Chinese Windows no longer falls back to English in the Qt app (#256), cheats are marked unavailable on iPhone and iPad (#257), the bundled Python packages are hash-pinned (#259) | | 2026-10-30 | v0.7.2 | **Games that opened to a black screen load again** (e.g. Super Mario Bros. Wonder): the Mac pipeline archive is stamped for this Mac's OS version instead of the SDK's, so pipelines load instead of recompiling at first start (upstream #673). 26 upstream commits: emulated sampler border colours, NVN logic operations, automatic same-pass feedback snapshots | | 2026-10-29 | v0.7.1 | **Console mode starts games fullscreen** (#220, #219): Play forces `DM_FULLSCREEN` and the window enters fullscreen once it is on the active Space, so a game rebuild picks the fix up. **The game opens on the launcher's display** (#221, `DM_SCREEN`, written and reviewed with two displays but not yet validated end to end on one). **A per-game cheats sheet** (#218). **Build failures say what to do** (#215): rows for keys, game files, drive, disk space, signing and the device install, each with the cause and the button that fixes it. **Slim iOS builds carry the DLC you pick** (#212). **The update page reads Markdown** (#216) and **an NSP with no ticket gives its title ID from the package** (#217). Fixes: the launcher goes idle after a build (#208), a folder with several games stages cleanly (#209), a venv below 3.12 is not ready and Pythons from mise and asdf are found (#211), the Qt front end no longer crashes on shutdown (#224), the daily upstream sync (#223) | | 2026-10-29 | v0.7.0 | **Console mode** (#169): with a controller, Select or View → Console Mode takes the library full screen, controller-first, with covers, launch options, battery chips and a Controllers list (also Option-Command-K). **Cloud saves** (#185): a game's Mac app and iPhone app share one save through an iCloud Drive folder, with SHA-256 checks and per-date backups, verified with Tears of the Kingdom on both platforms. **Guided first-run setup** (#119, #120) and **build tools and Python inside the app** (#154), so nobody installs Homebrew. **Reinstall without rebuilding and Save IPA…** (#155). **Signature expiry and in-place renewal** for a free Apple ID (#156). **Build failures become rows that name the reason and the next step** (#166, #205). Swedish localization (#168), a player's README, issue triage in report mode (#143), and on Windows a guided dependency panel for the two Apple downloads plus a link-probe crash fix (#192, #196). Fixes: Xcode installed but never opened is its own state with a one-click Fix, a failed dependency install names the reason and the command, a bundle-ID check no longer crashes on another user's project, the diagnostics block no longer prints `(null)`, the updater finds the Pythons `uv` installs and its strings survive CI. Known issues: Mods not yet played with a real mod, the Windows build pipeline not verified on hardware | | 2026-10-28 | v0.6.0 | **Guided first-run setup**: welcome, platform, Xcode, keys, games, with one administrator prompt for the toolchain and the Metal Toolchain and iOS platform downloaded with progress. **The build tools and a Python live inside the app** (zstd, glslangValidator, spirv-cross, xcodegen, CPython 3.13 from pinned, checksummed sources), so nobody installs Homebrew. **Reinstall without rebuilding** through `devicectl`, and **Save IPA…** for a sideloader. **Signature expiry and renewal**: the game card shows the days left on a free Apple ID and Renew re-signs in place. **Device detection** knows whether a game is installed on the connected device. A player's README (1,900 words instead of 8,000), issue triage and log first aid in report mode. The upstream sync becomes a patch queue with real three-way merges. Fixes: Xcode installed but not selected is its own state with a one-click Fix, a failed dependency install names the reason and the command, a bundle-ID check no longer crashes on another user's project, the diagnostics block no longer prints `(null)`, the updater finds the Pythons `uv` installs | | 2026-10-27 | v0.5.0 | **The Mac launcher arrives**: launch options live in the game's own saved-choices store (`launcher.<VAR>`, the one upstream reads), the library's Manage menu opens with a controller, and **a bare Apple ID can install** because Xcode creates the certificate at the first install. **The iPhone's game data finally sticks** (the bookmark is written while the Files app's security scope is held) and **an app with no data boots into the launcher** instead of a dead end. **The installer asks before copying game files** over USB. **The build tools update themselves**, even from an old ZIP copy (#87). Issue forms and a PR template ask for what a report needs. Fixes: the signing retry keeps its stage row, every extracted game version is kept as a build resource, the next upstream sync runs and every patcher is tested against real upstream in CI. Known issues: Mods not yet played with a real mod, Windows not provided on the releases page | | 2026-10-27 | v0.4.9 | **The library follows the folder**: a Mac game's saves and log live beside the .app and migrate from `~/Library` on first run. **The iPhone's game data can live anywhere** (Files-app picker, remembered). **All eight tracker features landed** (#77–#84: key pre-check, drag & drop, build notifications, older-tools flag, free space, saves between Mac and device, copy diagnostics, controller layouts). Windows: Chinese UI fixed, the Metal probe works under a Chinese user name, the failed-install crash is gone, the Vulkan SDK is found by itself | | 2026-10-27 | v0.4.8 | **The Mac launcher becomes usable**: install an iPhone build on a paired device (#28), a controller drives the whole launcher (#56), launch options split into basic and advanced (#54) with Display mode and the render scale in real pixels (#55) and a Mods section through `DM_ROMFS_OVERLAY` (#57), keys and controller buttons remappable (#39). **The build tools update when the app opens** (#60) and **a new version says what it changes** before installing. Fixes: every rewrite of every game crashed (`patch_nso.py`'s `TEXT_LO` used before assignment, #59), the Mac app refused every build with "requires Python 3.12" (#53), a ROMs folder holding several games could not build any of them (#58), a failed build pointed at a log that was off screen (#52), a Chinese Windows showed an English interface, CI could not open issues | | 2026-10-27 | v0.4.7 | **94 game profiles** (+7: Octopath Traveler, Donkey Kong Country Returns HD, Donkey Kong Country: Tropical Freeze, Mario + Rabbids Sparks of Hope, Kirby and the Forgotten Land, Yoshi's Crafted World, Xenoblade Chronicles 3) from the daily sync. **One host binary, any game's memory layout** (runtime profiles — the foundation for the universal launcher, which has not been built yet). **The language toggle translates the whole interface**. **Xcode betas count** (the check asks xcode-select). A loud notice when an upstream update invalidates cached shaders. The output folder documented as the build cache's home. Windows front end: in-app Python 3.12, SDK clone past Windows' path-length limit, LLVM verified by compiling rather than --version, no more black console windows. Rebuilding on an external exFAT work folder no longer crashes | | 2026-10-26 | v0.4.6 | **Windows app fixed against real hardware reports**: the missing .NET SDK row (it never appeared, so nothing could install it), no more black console windows stealing the foreground, download mirrors chosen by a speed probe (a 974 s LLVM download on a mainland connection), tools installed outside the app folder so updates stop deleting them, and repository checks that say what git is doing | | 2026-10-26 | v0.4.5 | **Mac app output** (a double-clickable .app from the same build). **A15/A16 and earlier devices** via CPU BC decode, as an app switch. Per-game data folders (`Documents/games/<id>/`) so an external drive works. NRO header no longer scanned as code. The nightly sync can no longer fail silently | | 2026-10-26 | v0.4.4 | **Fixes a build failure that hit every app build in v0.4.3** (`work` read before it was assigned). 72 games (+3) | | 2026-10-26 | v0.4.3 | NSZ/XCZ dumps work out of the box. A fresh Xcode now reports its missing iOS SDK. Three environment traps closed | | 2026-10-25 | v0.4.2 | The app downloads and updates the repository itself, and updates itself. 58 games (+10). Save-loading deadlock fixed. NuGet failures self-heal | | 2026-10-24 | v0.4.1 | Animal Crossing: New Horizons verified on an iPhone (103,645 files → 72 shards). Archive packing reuses unchanged work | | 2026-10-23 | v0.4.0 | The archive folder is copy-ready with an install guide. Dependency list collapses. Per-game update versions in the table. Renamed to NX2Apple | | 2026-10-23 | v0.3.1 | Fixes for Homebrew Python 3.15 and `DOTNET_ROOT` (#1, #2) | | 2026-10-22 | v0.3.0 | App icon, 46 games | | 2026-10-21 | v0.2.1 | Python 3.9 build fix | | 2026-10-20 | v0.2.0 | Bilingual (English / 中文) | | 2026-10-20 | v0.1.0 | First release: GUI front end, RomFS archiving |