Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 16 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,22 @@

User-visible changes to NX Library are recorded here. Entries are grouped by release, with the newest first. Engine changes also have their own [upgrade notes](docs/upstream-upgrades/README.md).

## 0.1.4.2 — 2026-11-09

### Fixed

- **The session card fits after a short session.** A game played for under a minute showed "Less than a minute" twice, which pushed the card's words past its left edge. It now says **<1m**, like the other times (10m, 34h 5m).
- **The update dialog no longer asks to update an Xcode that is current.** It read the installed Xcode as "Xcode 27.2", took it for an older version, and said "New portings need Xcode 27.2; this Mac has Xcode 27.2". The warning now appears only when Xcode really is older. The update itself was never blocked.
- **A full disk is no longer mistaken for missing keys.** A game that runs out of space while its Mac app is packed now offers **Open Storage**. Failures on NUP files and extracted dumps no longer blame keys they do not need. Based on [@eduardomozart’s #13](https://github.com/Bium23/NxLibrary/pull/13).
- **Play waits for the game's icon.** If its app is being signed with a new icon, **Play** shows **Preparing** and starts it when ready. **Cancel** cancels the launch while letting the icon finish safely. A failed icon update does not launch the game.

### Changed

- **Updated nxnative to `79741184`.** Upstream reports fewer Ocarina of Time startup and first-draw stalls, lower memory use, lighting/fog/foliage fixes, improved frame pacing and safer pipeline reuse. Rebuilt games can offer Switch 2 controllers over Bluetooth in **Game options → More settings → Controls**, and supported profiles offer 120 fps through **Frame rate**. Cloud sync avoids overwriting saves changed after launch; other fixes cover controller rumble, H.264 movies, bracketed folder names and multi-program DLC. The Metal compiler remains **32023.922**. The next rebuild updates shader data as needed; existing game apps keep their engine until rebuilt. See the [full engine review](docs/upstream-upgrades/2026-11-09-bd979ced-79741184-review.md) for per-game support and validation limits.
- **Choose where a game icon changes.** **Change artwork → Icon → Icon location** offers **Only here** or **Use on the Mac** for every game, including Switch 2 NUPs and dumps without an original icon. **Only here** keeps the image inside NX Library and restores the original app icon (or its absence). The choice survives restarts and rebuilds; existing libraries keep their previous behavior until you make a new choice.
- **Automatic keeps your icon location choice.** It removes the personal image and uses the game's own icon, then available Title DB artwork. An app without an original icon can use the online image when its location choice allows it. Cached artwork works offline; if no replacement is found, the old personal image is removed and the original or standard macOS icon remains. The picker and finished build log explain when no icon is available. Missing artwork does not prevent Play.
- **Long builds are easier to follow.** Stage times count up while a stage runs and show hours beyond one hour, as do time estimates. Counters include a percentage. **Pipeline archive** reports batches the engine has confirmed ready, including reused batches, and estimates the remaining compilation when it has a measured rate. An unsupported log format leaves the stage indeterminate. Based on [@eduardomozart’s #11](https://github.com/Bium23/NxLibrary/pull/11), with pipeline tracking revised to ignore old caches and in-flight compiler files.

## 0.1.4.1 — 2026-11-07

### Added
Expand Down
8 changes: 8 additions & 0 deletions NOTICE
Original file line number Diff line number Diff line change
Expand Up @@ -126,3 +126,11 @@ The full licence texts ship in Runtime/licenses/.

The relinking approach in scripts/bundle_runtime.sh and scripts/relink_macho.py
follows LumaNX's scripts/bundle_runtime.py (https://github.com/Xc1Ym/LumaNX, MIT).

--------------------------------------------------------------------------------
Optional online artwork source: Switch Icon Showdown
https://www.switchiconshowdown.com/
Images are fetched only at runtime when source access permits, attributed in the
artwork picker, and are not distributed with NX Library. Artwork rights remain
with their respective owners. The Swift resolver is an independent implementation;
no source from the GPL-licensed Fritchii icon_search.cpp is included.
43 changes: 35 additions & 8 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,16 @@ NX-DEMO:END -->
<p align="center"><strong>Your library, together.</strong><br>Games, artwork and activity in Spotlight.</p>
<!-- NX-SCREENSHOTS:END -->

### <img src="https://img.shields.io/badge/new-E8833A?style=flat" alt="New" height="20" align="absmiddle"> Latest highlights

- **Mods in a few clicks.** A store of GameBanana mods that work with your games, by category and by game. Press **Install** and the mod is on at the next launch, with no rebuild. Mods you already have work too: drop them in, turn them on, choose their order.
- **A lighter, smoother Ocarina of Time.** The updated engine reduces repeated startup work and first-draw stalls, uses less memory and fixes lighting and fog. Supported games offer up to 120 fps after rebuilding.
- **A recap when you stop playing.** Quit a game and you are back in your library, with a card showing how long you played this time and in total.
- **Your icon in the Dock.** Choose whether a game icon stays inside NX Library or also appears in Finder and the Dock, even after a rebuild.
- **Builds on your external drive.** Keep your games on an external drive and the whole build stays there, so the Mac's own disk needs no free space.

Every release is in the [changelog](CHANGELOG.md).

## Overview

NX Library is an independent SwiftUI frontend for the external [nxnative](https://github.com/seedds/nxnative) toolchain. It brings your installed game apps, local build workflow and game options into a modern Mac-native library inspired by [Selene](https://github.com/mattxslv/Selene).
Expand All @@ -48,18 +58,19 @@ NX Library is an independent SwiftUI frontend for the external [nxnative](https:
| **Local builds** | Select your own sources, review updates and DLC, follow progress and retry a failed installation. |
| **Game options** | Keep each title's launch settings, artwork and metadata together. |
| **Saves** | Back up local progress, preview imports and restore a previous copy. |
| **Mods** | Install GameBanana mods that work with the engine, or add your own, and choose what is on for the next launch. |
| **Cheats** | Import matching cheat files and choose what is enabled for the next launch. |
| **Personalisation** | Choose palettes, wallpapers, live backgrounds, interface sounds and controller prompts. |

Game files, keys and firmware are not provided. See [Legal and third-party notices](#legal-and-third-party-notices).

### Project status

**0.1.3.3 alpha.** Download the packaged app from [Releases](https://github.com/Bium23/NxLibrary/releases/latest), or [build it from source](#building-from-source).
**0.1.4.2 alpha.** Download the packaged app from [Releases](https://github.com/Bium23/NxLibrary/releases/latest), or [build it from source](#building-from-source).

Automated checks cover the application code, publication inputs, compilation and development-app packaging. They do not certify game compatibility. Changes are recorded in the [changelog](CHANGELOG.md), and the current checks are available under [Actions](https://github.com/Bium23/NxLibrary/actions/workflows/ci.yml).

The engine is pinned to `b64a5ff0`, with audio, memory and renderer fixes, updated game profiles and shader-build improvements, using Xcode 27.2 / Metal 32023.922. See the [engine upgrade notes](docs/upstream-upgrades/2026-11-03-65501fbb-b64a5ff0-review.md).
The engine is pinned to `79741184`, with Ocarina of Time startup/memory/rendering improvements, Switch 2 Bluetooth controller support in rebuilt games, updated frame-rate profiles and cloud-save race protection, using Xcode 27.2 / Metal 32023.922. See the [engine upgrade notes](docs/upstream-upgrades/README.md).

## Getting started

Expand Down Expand Up @@ -138,6 +149,8 @@ If an installed app is moved or removed, its library entry stays with a blurred,

Use **Find a game** for search, **Game Options** for title-specific actions, and the menu for themes, Settings and running-game controls. Hidden games can be restored under **Settings → Games → Hidden games**.

When you quit a game, NX Library comes back to the front, unless you had moved to another app or another game is still open. A **session card** in the top right shows how long you played this time and in total; sessions under 10 seconds show none. Turn it off in **Settings → Games → Session card**.

![The quick menu open over Spotlight, with Theme selected](docs/media/quick-menu.webp)

<p align="center"><strong>Quick access.</strong><br>Open the menu without leaving your library.</p>
Expand Down Expand Up @@ -207,9 +220,23 @@ Open **Game Options → Cheats**, then choose or drop a matching cheat file. NX

Changes apply at the next Play and are written only while the game is closed. An older or unrecognised engine build may require **Rebuild**. The engine's in-game panel, `⌘⇧C`, reads the same files.

Cheats change values while you play, for one game version only. New items, looks or gameplay are mods.

### Mods

- **Mod store.** The **Mods** card in Spotlight opens a store of the GameBanana mods that work with your games: a featured banner, the most popular, a row per category and a row per game, sorted by Popular, Most liked, Newest or Recently updated. Hide the card in **Settings → Spotlight**.
- **A game's Mods band.** Each game page lists its GameBanana mods and the ones you installed. Open a mod for its images, author, version and requirements, then press **Install**; **Update** appears when the author replaces the file. If the game's GameBanana page is uncertain, the band asks once, and **Wrong game?** picks another.
- **Your own mods.** File mods (a folder with `romfs` inside) go into the game's mods folder. Turn them on in the band or in **Game Options → Mods**; the order decides which mod wins when two change the same file. **Remove** moves a mod to the Trash.

Mods apply at the next launch, without a rebuild. The engine reads file mods only: mods that patch code (`exefs`, such as 60 fps patches) or need a loader or PC tool (exlaunch, Skyline, ARCropolis, mod managers) don't work, and the store leaves them out.

![The mod store with a featured mod, sort choices and rows of popular mods and characters](docs/media/mod-store.webp)

<p align="center"><strong>Mods for your games.</strong><br>Browse what works with the engine and install it in one step.</p>

### Artwork, themes and sound

- **Game Options → Edit details** changes one game's artwork or metadata. Manual artwork choices take priority over automatic images.
- **Game Options → Edit details** changes one game's artwork or metadata. Manual artwork choices take priority over automatic images. After choosing an Icon in **Change artwork**, choose **Only here** to keep it inside NX Library or **Use on the Mac** to show it in Finder and the Dock too. This choice is available for every game, including apps with no original icon, and survives restarts and rebuilds. **Only here** restores the original app icon (or its absence) if a custom one was already applied. **Automatic** removes the personal image and uses the game's own icon, then available online artwork, while keeping your location choice. On the Icon tab, **Icon location** changes **Only here** / **Use on the Mac** at any time, including with Automatic selected. If no image is found, the app keeps the standard macOS icon and remains playable; Change artwork explains that no icon is available. The finished build log records the separate icon result.
- **Menu → Theme** chooses palettes and wallpapers. Background choices include local images, muted looping videos and optional online sources; source credits appear in the picker.
- **Settings → Look** controls wallpaper placement, sizing, brightness, game backgrounds, Reduce Motion and the Color/Monochrome app icon.
- **Settings → Sound & music** controls interface cues and volume. Four interface sounds are bundled; additional sounds and wallpapers can be imported from a Selene theme folder you own.
Expand Down Expand Up @@ -265,17 +292,17 @@ Before reporting a problem, review copied diagnostics and remove anything person

### Compatibility and limitations

- NX Library uses a manually pinned engine and checks its commit, working tree, CLI contract and Metal compiler before new builds. It does not follow upstream `main` automatically. **Settings → Engine → Newest engine** lets you choose `main` yourself before NX Library has tested it: an orange dot marks it, builds are recorded as untested, **Back to tested** returns to the pinned engine, and it is not offered when `main` needs a different Metal compiler.
- The current engine is `bd979ced` and certifies Metal `32023.922`. **Build anyway with an untested toolchain** requires explicit confirmation and marks the resulting build as untested. A successful launch does not turn it into a certified combination.
- NX Library uses a manually pinned engine and checks its commit, working tree, CLI contract and Metal compiler before new builds. It does not follow upstream `main` automatically. **Settings → Engine → Newest engine** lets you choose `main` yourself before NX Library has tested it: an orange dot marks it, builds are recorded as untested, **Update** moves to a newer `main` when there is one, **Back to tested** returns to the pinned engine, and it is not offered when `main` needs a different Metal compiler.
- The current engine is `79741184` and certifies Metal `32023.922`. **Build anyway with an untested toolchain** requires explicit confirmation and marks the resulting build as untested. A successful launch does not turn it into a certified combination.
- Game compatibility depends on nxnative, the game version and the toolchain.
- Output follows the window/display; native 1440p/4K internal rendering is not supported. Render scale is 50–100% where the build supports it. MetalFX is spatial upscaling.
- Builds run one at a time. iOS/IPA output, automatic engine updates and notarisation are not currently provided.

The [upgrade note](docs/upstream-upgrades/2026-11-03-65501fbb-b64a5ff0-review.md) records the engine review and toolchain requirements.
The [upgrade notes](docs/upstream-upgrades/README.md) record each engine review and its toolchain requirements.

### Data and cleanup

App data lives in `~/Library/Application Support/NXLibrary/`. Local game data uses `~/Library/Application Support/nxnative/<title ID>/`. Backups are stored under `NXLibrary/SaveBackups/<title ID>/`.
App data lives in `~/Library/Application Support/NXLibrary/`. Local game data uses `~/Library/Application Support/nxnative/<title ID>/`, with mods in its `mods` folder. Backups are stored under `NXLibrary/SaveBackups/<title ID>/`.

Storage can clear caches and logs and open the shared backups folder. **Remove Sources & Build Cache deletes the selected original source files**, while retaining the installed app and saves. Read that confirmation carefully; it differs from clearing a cache.

Expand All @@ -284,7 +311,7 @@ Storage can clear caches and logs and open the shared backups folder. **Remove S
- **Simpler Settings** — Keep everyday options easy to find, with advanced controls grouped within each category.
- **In-app bug reporting** — Make it easier to report a problem directly from NX Library.
- **Broader game discovery** — Discover and launch games from Steam, CrossOver and the Mac App Store, alongside nxnative apps.
- **An in-app mod browser** — Browse, download and install game mods without leaving the app.
- **Languages** — NX Library in more languages than English.
- **Better controller support** — Refine controller settings and offer more flexible button mapping.
- **Continued polish** — Fix bugs and improve navigation, feedback and visual details throughout the app.

Expand Down
Loading