Commit Graph
64 Commits
Author SHA1 Message Date
niklascfw f2230c79a7 fs: count a one-step folder move in the progress line 2026-11-12 23:00:11 +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 69405c096e Remove sys-ticon on update. 2026-11-12 20:20:57 +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 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 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 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 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 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 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 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 726ef77194 update: delete atmosphere kips loader.kip and hoc.kip on OmniNX update
Build / Build (push) Successful in 15s
Made-with: Cursor
2026-04-09 22:11:31 +02:00
niklascfw 13c35400a1 install: backup and restore HorizonOC config.ini on OC pack update
- Copy sd:/config/horizon-oc/config.ini to sd:/.omninx_oc_update before
  update cleanup/copy; restore after Hekate step, then remove the scratch dir.
- Only when INSTALL_MODE_UPDATE and VARIANT_OC.

Made-with: Cursor
2026-04-09 22:11:30 +02:00
niklascfw f71b6ab629 install: clarify Hekate RAM menu copy (4GB/8GB labels and warnings)
Build / Build (push) Successful in 16s
Made-with: Cursor
2026-04-09 20:48:50 +02:00
niklascfw 9b559eb7e6 clean: delete TegraExplorer repair .te scripts on clean install
Build / Build (push) Successful in 16s
Made-with: Cursor
2026-04-07 23:54:54 +02:00
niklascfw d3735d17ee install: RAM config ini, selection menu, and silent Hekate 8GB step
- Read sd:/config/omninx/ram_config.ini [Ram] 8gb=0|1 when present;
  otherwise show 4 GB / 8 GB menu, write ini, same input as variant menu.
- Replace fuse-based DRAM autodetect for hekate_8gb.bin handling.
- Reprint installer top bar after RAM menu confirm.

Made-with: Cursor
2026-04-07 23:54:53 +02:00
niklascfw db7d83304f main: add installer_launch_hekate_payload (update.bin or reboot)
Made-with: Cursor
2026-04-07 23:54:51 +02:00
niklascfw 113542f7fb install: declare installer_launch_hekate_payload for sub-menu exit
Made-with: Cursor
2026-04-07 23:54:50 +02:00
niklascfw 72a2083d76 Updated Deletion list
Build / Build (push) Successful in 16s
2026-04-05 15:38:32 +02:00
niklascfw 3f6bbc0752 Input: console Vol+/- combo only before install; Joy-Con +/- exit removed
Build / Build (push) Successful in 16s
- cancel_combo_pressed uses only hardware volume buttons
- After installation summary and payload-missing screen: A or Power only

Made-with: Cursor
2026-03-31 13:18:06 +02:00
niklascfw d1fc24dae8 Install: Hekate 8GB after copy (fuse >4GiB), dram_fuse helper, RAM test target
Build / Build (push) Successful in 14s
- Add dram_fuse.c/h for shared fuse-to-MiB mapping
- After successful update/clean install copy: if hekate_8gb.bin exists and
  fuse reports more than 4 GiB, copy to sd:/payload.bin and
  sd:/bootloader/update.bin, then remove source; otherwise remove helper only
- Makefile: make ram-test builds output/RAM-Test.bin (tools/ram_test_main.c)

Made-with: Cursor
2026-03-31 00:05:30 +02:00
niklascfw ef104bce41 Update deletions: keep Switchfin, remove swr-ini-tool nro
Made-with: Cursor
2026-03-30 20:27:39 +02:00
niklascfw 0015c7e8ac Install: copy all staging root files via directory iteration
Build / Build (push) Successful in 18s
Made-with: Cursor
2026-03-30 17:49:52 +02:00
niklascfw 6dde73f39e Install: copy themes/ in stage 2 (update and clean)
Build / Build (push) Successful in 11s
Made-with: Cursor
2026-03-06 23:46:40 +01:00
niklascfw 97e8c3d965 Remove outdated UltraHand comment from deletion_lists_update.h
Build / Build (push) Successful in 13s
Made-with: Cursor
2026-03-06 22:10:32 +01:00
niklascfw 586afc2f56 Revert "Update: preserve UltraHand .offload state (overlays/packages)"
This reverts commit e71fb13bfc.
2026-03-05 17:24:37 +01:00
niklascfw f943887b39 Revert "Clean install: use normal switch copy, not .offload-aware"
This reverts commit 335ea03b05.
2026-03-05 17:24:26 +01:00
niklascfw 335ea03b05 Clean install: use normal switch copy, not .offload-aware
Build / Build (push) Successful in 14s
- update_mode_install(variant, offload_aware_switch): true = update (preserve .offload), false = clean
- Update path calls with true; clean_mode_install calls with false so switch/ is copied normally on fresh install

Made-with: Cursor
2026-03-01 15:15:45 +01:00
niklascfw b0523ada6c nx_sd: add sd_get_card_mounted() for screenshot and other callers
Made-with: Cursor
2026-03-01 14:44:37 +01:00
niklascfw 9a2307a8ee Add screenshot capture via Joy-Con Capture button
- source/screenshot.c, screenshot.h: take_screenshot() saves framebuffer as BMP
- Path: sd:/switch/screenshot/omninx_installer_YYYYMMDD_HHMMSS.bmp (RTC timestamp)
- 3s cooldown, backlight flash on capture; TegraExplorer-style BGR flip
- main.c: call take_screenshot() when jc->cap in all joycon poll loops

Made-with: Cursor
2026-03-01 14:43:58 +01:00
niklascfwandCursor e71fb13bfc Update: preserve UltraHand .offload state (overlays/packages)
Build / Build (push) Successful in 10s
- Add folder_copy_switch_update_offload_aware() for update-only switch copy
- If item exists in .overlays/.offload or .packages/.offload, update in place; else copy to main
- Remove sd:/switch/.overlays from update delete list so .offload survives
- Fresh install unchanged (no offload logic)

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-17 21:01:36 +01:00