Commit Graph
97 Commits
Author SHA1 Message Date
niklascfw 41aafb66eb Desktop installer: taller default window so the log has room
Build Desktop Installer / Build (win-arm64) (push) Successful in 10s
Build / Build (push) Successful in 13s
Build Desktop Installer / Build (win-x64) (push) Successful in 10s
Start at 900 px height (min 720), both capped to the screen's working area.
2026-11-14 13:19:48 +01:00
niklascfw 5b2499900f Desktop installer: show release channel in its own group box
Build Desktop Installer / Build (win-arm64) (push) Successful in 10s
Build / Build (push) Successful in 15s
Build Desktop Installer / Build (win-x64) (push) Successful in 11s
Same style as the other radio groups, placed below the drive selection.
2026-11-14 13:16:21 +01:00
niklascfw 91133f7098 Desktop installer: release channel, saved choices, robust delete, logs
Build / Build (push) Successful in 13s
Build Desktop Installer / Build (win-arm64) (push) Successful in 10s
Build Desktop Installer / Build (win-x64) (push) Successful in 10s
- Channel radio (Release / Master (Instabil)); master installs the
  rolling 'master' release from OmniNX/OmniNX-Master. Preselected from
  release_channel in the card's manifest.ini.
- Variant, RAM (8gb) and Hekate-Pro choice are prefilled from the card
  (manifest.ini / config.ini) like the payload does, instead of
  silently switching users back to 4 GB / Standard.
- Clear read-only attributes before deleting folders.
- Remove leftover "OmniNX <Variant>" pack folders after installing.
- Create empty folders from the pack.
- Save every run's log to %LocalAppData%\OmniNX-Desktop-Installer\logs,
  plus a "Save log" button.
2026-11-14 13:10:41 +01:00
niklascfw 3e0d9c9950 Deletion lists: clean up Downloader sysmodules and foreign leftovers again
Build / Build (push) Successful in 13s
Build Desktop Installer / Build (win-arm64) (push) Successful in 25s
Build Desktop Installer / Build (win-x64) (push) Successful in 10s
Update mode:
- Sysmodules offered by OmniNX Downloader are removed again, since an old
  build may not run on the new Atmosphere (SysDVR, Fizeau, MissionControl,
  ldn_mitm), plus sys-botbase and emuiibo. Title IDs taken from the
  current release zips. Users reinstall them via the Downloader.
- Configs of other CFW packs (kefir-updater, blue_pack_updater) and the
  old Ultrahand name (uberhand) are removed again.
- Former OmniNX folders games, NSPs (Tools), scripts and tools are removed
  again. Patched Apps stays out: the Downloader installs into it.

Clean mode: also removes sept/ and fusee-secondary.bin (old Atmosphere
boot chain).
2026-11-13 14:53:39 +01:00
niklascfw 1b4a81239b Update BDK to hekate v6.5.5
Replaces the old vendored BDK with the one from hekate v6.5.5 (CTCaer's
2025/2026 refactors: sdmmc, SE, minerva v1.6, display, heap, return
value homogenisation). OmniNX additions re-applied on top:
bq24193_charger_connected() and jc_clear_input(); s_vprintf now ships
with the BDK.

Ported to the new API:
- sd_mount(), sdmmc_storage_* and ini_parse() now return 0 on success.
  The installer checked ini_parse() != 1, which would have made it miss
  manifest.ini and run every install as a clean install.
- SD helpers come from bdk/storage/sd.c (source/nx_sd.* removed),
  ffsystem.c from the BDK, diskio.c/ffconf.h from hekate (ffconf keeps
  the sd:/ volume prefix).
- minerva_init() needs the minerva storage; the installer still drops
  to 800 MHz afterwards.
- Payload launch follows hekate (sd_file_read, hw_deinit); coreboot
  path removed upstream.
- Stack moved to 0x96000000: the old 0x83100000 is inside the new heap.
- GUI/USB/compression parts of the BDK are not built.
2026-11-12 23:17:18 +01:00
niklascfw 14be4646d0 docs: move process, debug.ini and preserve.ini docs to docs/ 2026-11-12 23:10:21 +01:00
niklascfw f2230c79a7 fs: count a one-step folder move in the progress line 2026-11-12 23:00:11 +01:00
niklascfw 1df97d3a86 docs: describe move-based install, new update list rules and logging 2026-11-12 22:59:46 +01:00
niklascfw 5241cccbe9 Share one selection menu; drop dead variant detection and TegraExplorer filter
The variant menu in main.c and the RAM / Hekate-AMS menus in install.c
were three copies of the same input loop; install_menu_select() replaces
them with identical behaviour (D-pad/Vol to move, A/Power to confirm,
Vol+ and Vol- to abort, Capture for screenshots).
2026-11-12 22:58:41 +01:00
niklascfw 664216fa11 Move pack files instead of copying; one file-op core for all modes
Install: staging and sd:/ are on the same card, so pack folders are now
moved with f_rename (a missing target folder moves in one step, existing
ones are merged file by file). Copying is only a per-entry fallback.
The staging cleanup afterwards only removes empty folders.

Deletion: one f_stat per list entry, no full recursive count before
deleting; large folders are detected with a probe that stops after 51
entries. Progress lines count processed entries instead of needing an
extra pass for a total.

Six copy/delete walkers (fs.c + install.c) are replaced by fs_delete_tree,
fs_move_tree and fs_move_file sharing one path buffer and one copy buffer
per run; the 'alternative copy method' retry is gone. extras/hekate-ams-pro
is moved too. Backups keep copy semantics.
2026-11-12 22:57:26 +01:00
niklascfw c033b988ca Update mode: stop deleting user-installed apps and sysmodules
The update list deleted ~80 apps the pack never shipped (Goldleaf,
linkalho, Moonlight, NX-Shell, ...), Downloader sysmodules (SysDVR,
MissionControl, ldn_mitm, Fizeau), game title ID folders (mods/cheats),
and user folders like "Patched Apps" or "games". Anything a user
installed via OmniNX Downloader was wiped on every update.

Update mode only runs on an existing OmniNX install, so the list now
keeps only what the pack ships, components OmniNX dropped, and
boot-relevant housekeeping. Foreign-pack leftovers stay in the clean
list. Also drops 15 entries nested in deleted folders, a case-duplicate
(themezernx) and a trailing-space path.

tools/audit_update_list.py checks the list against the OmniNX repo.
2026-11-12 22:53:28 +01:00
niklascfw 702cce7d3e Drop newlib printf: log via BDK s_vprintf, add debug.ini log switch
log_write was the only vsnprintf user and pulled in newlib's printf,
dtoa, malloc and soft-float code (~44 KB). The payload now fits the
RCM limit again (146800 -> 102801 bytes); the build fails if it grows
past it. debug.ini log=1 writes sd:/config/omninx/install.log.
2026-11-12 22:50:20 +01:00
niklascfw 555ff07ae4 build: track header dependencies and report the RCM size limit 2026-11-12 22:49:13 +01:00
niklascfw 69405c096e Remove sys-ticon on update. 2026-11-12 20:20:57 +01:00
niklascfw 9d2637b0af Version bump to 2.2.0 2026-11-12 19:16:11 +01:00
niklascfw 25c9f01c67 Keep user packages and overlays across updates.
Build / Build (push) Successful in 14s
Build Desktop Installer / Build (win-arm64) (push) Successful in 17s
Build Desktop Installer / Build (win-x64) (push) Successful in 11s
Replace only the OmniNX-shipped package folders and overlays so those stay current without wiping anything the user added.
2026-11-09 17:46:34 +01:00
niklascfw bbb311fcf5 Version bump to 2.1.3 2026-11-09 17:46:19 +01:00
niklascfw 2f5bdc9bb6 Install the HWTest SD folder on payload and desktop.
Build / Build (push) Successful in 14s
Build Desktop Installer / Build (win-arm64) (push) Failing after 3s
Build Desktop Installer / Build (win-x64) (push) Canceled after 11m3s
HWTest 0.15 only opens its GUI when sd:/hwtest is present, so clean and update installs now replace and copy that directory.
2026-11-03 21:13:18 +01:00
niklascfw 7ae187ab04 Version bump to 2.1.2 2026-11-03 21:10:35 +01:00
niklascfw ad18b93b7a Verify cached pack zips against the release SHA256SUMS file.
Build / Build (push) Successful in 29s
Build Desktop Installer / Build (win-arm64) (push) Canceled after 0s
Build Desktop Installer / Build (win-x64) (push) Canceled after 0s
2026-11-01 11:27:38 +01:00
niklascfw 428760fef6 Version bump to 2.1.1
Build / Build (push) Successful in 14s
2026-10-16 23:50:03 +02:00
niklascfw a0c4250a4d adjusted header bars to match X.X.X structure 2026-10-16 23:49:37 +02:00
niklascfw 2c6d11b785 Version bump to 1.1.0 2026-10-16 22:24:34 +02:00
niklascfw 414d2f2c24 Version bump to 1.0.10
Build / Build (push) Successful in 14s
2026-10-10 18:50:18 +02:00
niklascfw eef6bbaa33 ci: remove .net setup
Build / Build (push) Successful in 12s
Build Desktop Installer / Build (win-arm64) (push) Successful in 30s
Build Desktop Installer / Build (win-x64) (push) Successful in 8s
2026-09-13 23:02:27 +02:00
niklascfw c5b74c52d3 Show pack versions and a Nintendo-server block notice on confirm.
Build / Build (push) Successful in 29s
Build Desktop Installer / Build (win-arm64) (push) Has been cancelled
Build Desktop Installer / Build (win-x64) (push) Has been cancelled
The installer now displays current vs incoming OmniNX version and states that Nintendo server connections are suppressed by default.
2026-09-13 22:08:08 +02:00
niklascfw d573f6cca4 Add a Windows desktop installer for PC-based OmniNX installs.
This lets mass deployments and modchip setups apply the same install/update flow from a PC, with generated deletion lists kept in sync with the payload headers.
2026-09-13 21:10:58 +02:00
niklascfw c87fe1f1e8 Version bump to 1.0.3
Build / Build (push) Successful in 14s
2026-08-22 15:28:45 +02:00
niklascfw 73c2789114 Preserve Checkpoint saves across clean install backup/restore.
Back up and restore sd:/switch/Checkpoint with CyberFoil and DBI settings during clean installs.
2026-08-22 15:26:02 +02:00
niklascfw 405bed7291 Version bump to 1.0.2
Build / Build (push) Successful in 23s
2026-07-21 13:52:23 +02:00
niklascfw 3a2fb4fb2e Migrate legacy ram_config.ini into config.ini on extras post-copy.
Port [Ram] from ram_config.ini when present, preserve existing HekateAms settings, then remove the legacy file.
2026-07-21 13:50:33 +02:00
niklascfw eb18bf8c72 Preserve Checkpoint across update installs.
Build / Build (push) Successful in 13s
Skip deleting sd:/switch/checkpoint so user saves under saves/ are not wiped.
2026-07-17 21:37:20 +02:00
niklascfw 05926f7828 Show Install/Update completion based on detected mode.
Build / Build (push) Successful in 14s
Drop the version header from the final summary and label the result as Update or Installation.
2026-07-17 13:43:00 +02:00
niklascfw 7b85d428a8 Add missing pack apps to update-mode deletion lists.
Include Benchmark-Toolbox, Furmark-NX, and other switch apps from the current OmniNX pack so updates replace them cleanly.
2026-07-17 13:42:42 +02:00
niklascfw dce83bc3be Update FatFs NORTC fixed timestamp to 2026-07-17. 2026-07-17 13:42:24 +02:00
niklascfw a26531c702 Add extras post-copy flow for RAM and Hekate-Pro selection.
Build / Build (push) Successful in 14s
Copy sd:/extras from the pack, prompt for RAM and Hekate/AMS choices, persist them in config.ini, apply Pro/8GB payloads, then remove extras/. Use safe config.ini I/O and Joy-Con input clearing between menus.
2026-07-16 10:01:42 +02:00
niklascfw c0741beda3 Preserve CyberFoil across clean install backup/restore.
Build / Build (push) Successful in 13s
Back up cyberfoil.nro, config.json, and remotes/ when sd:/switch/CyberFoil exists, then restore them after the wipe.
2026-06-14 17:31:46 +02:00
niklascfw d6ec345cce only check UHS on clean install
Build / Build (push) Successful in 12s
2026-06-07 23:16:04 +02:00
niklascfw 9990dfb2ba install: shortend finish delay to 1,5 seconds
Build / Build (push) Successful in 13s
2026-06-04 22:02:22 +02:00
niklascfw c7ad761592 Added NiklasCFW Pack 1.6.2 Marker 2026-06-04 21:52:52 +02:00
niklascfw 59f103874c Preserve.ini for update cleanup, Hekate UI strings, docs
Build / Build (push) Successful in 17s
- Load sd:/config/omninx/preserve.ini during update mode cleanup to skip
  delete paths that overlap user-preserved prefixes (heap-backed path list).
- Document preserve.ini in PRESERVE_INI.md, README, and INSTALLATION_PROCESS.
- Prefer Hekate wording in main.c user messages for bootloader launch/errors.
- Extend update deletion list for exefs_patches (audio_mastervolume, SaltyNX_Fixes, logo).
2026-05-17 11:21:14 +02:00
niklascfw dce11538d1 docs: README and install process for debug.ini and backup
Build / Build (push) Successful in 17s
- Link DEBUG_INI.md; describe clean install backup (dbi.config, prod.keys)
- Update INSTALLATION_PROCESS backup/restore steps

Made-with: Cursor
2026-04-12 16:22:45 +02:00
niklascfw 21f8e0e38a refactor: clean install backup — dbi.config and prod.keys only
- Backup/restore DBI settings file instead of whole DBI folder
- Remove Tinfoil folder backup/restore
- Adjust deletion_lists_clean.h comments; UI strings in install_clean.c

Made-with: Cursor
2026-04-12 16:22:43 +02:00
niklascfw 0ad2c63123 feat: optional debug.ini to skip install steps
Read sd:/config/omninx/debug.ini [Debug] with skip_* flags for clean/update
modes and hekate post-copy. Documented in DEBUG_INI.md.

Made-with: Cursor
2026-04-12 16:22:41 +02:00
niklascfw 6780936d2d chore: normalize line endings in fs.c and fs.h
Made-with: Cursor
2026-04-12 16:22:39 +02:00
niklascfw 82639a7a86 Clean install: align deletions with NiklasCFW pack script
Build / Build (push) Successful in 17s
- Remove entire sd:/atmosphere and sd:/switch (lists simplified)
- Add sd:/SaltySD/patches; drop nyx.ini and config/quickntp to match script
- Delete sd:/switch/tinfoil/db after backup restore via clean_post_restore_dirs_to_delete

Made-with: Cursor
2026-04-12 00:34:14 +02:00
niklascfw bff8bc1910 Clean install: remove sd:/TegraExplorer entirely
Build / Build (push) Failing after 14s
Delete the TegraExplorer directory in misc dirs instead of individual
script files under scripts/.

Made-with: Cursor
2026-04-11 19:44:47 +02:00
niklascfw c9bcb29f50 Exclude source/TegraExplorer from Makefile object list
The vendored tree under source/TegraExplorer is optional reference-only;
building it fails without extra usb/ headers. The payload uses bdk/ at repo
root instead.

Made-with: Cursor
2026-04-11 00:14:41 +02:00
niklascfw dc97677e72 Delete sd:/themes/systemData on update and clean installs
Removes cached qlaunch/FW theme extracts so theme-patches apply after
firmware updates; clearing atmosphere/contents alone is insufficient.

Made-with: Cursor
2026-04-11 00:12:45 +02:00
niklascfw 4535c4508f Added TegraExplorer 2026-04-10 22:32:01 +02:00