Files
HexwellandKevin Huerta f0e22cd096 feat: FTP, Remote Play, ShadowMountPlus, cheat sync, and rest-mode recovery (#24)
* fix(i18n): clarify account activation save-loss warning

Say that existing saves may be lost because the account ID changes,
not that the save files themselves become unusable.

* docs: clean up unused documentation

* docs: add contributor avatars to the READMEs

* fix(cheats): load TITLE_VERSION_PROCESS_HASH files

Collection dumps name files TITLE_VERSION[_PROCESS][_HASH].ext.
The old lookup either missed process-scoped names or rejected
multiple hashes, so most dumped trainers never loaded.

Parse process and hash as optional fields, prefer a process match,
and keep hashed variants when the running hash is unknown.

* feat(cheats): add git catalog sync with host mirrors

Bring back DOWNLOAD_CHEATS as a background git clone/fetch of
cheat catalogs, then reuse flatten to install flat files.
Catalog identity and GitHub/cnb.cool mirrors stay in separate
modules so a new source does not rewrite the download pipeline.

auto mirror uses cnb.cool for zh-Hans and GitHub otherwise;
explicit github/cnb skips fallback. libgit2 is an optional
submodule (v1.8.4); without it the client stays a stub.

* feat(cheats): add toolbox download UI and HTTP probe

Expose catalog download on the Game Tools page and put the
mirror picker in Preferences. Probe gstatic/miui generate_204
before clone so auto can pick GitHub or cnb.cool by reachability.

Also fix the CNB slug, rename the util CMake target so it no
longer clashes with libgit2, and keep last-error text off the
download button.

* feat(cheats): sync cheat catalogs over HTTPS zip download

Replace the git clone/fetch pipeline with a curl + miniz HTTPS
ZIP download. The engine streams one archive, extracts only the
catalog roots, and reuses flatten to install flat files, so the
libgit2 submodule and its build integration are gone.

Drop the pre-download reachability probe and the commit-SHA
parser; reachability is implied by the download itself and the
SHA only fed the old git flow. Mirror selection stays in
CheatMirrorFactory (auto: cnb.cool for zh-Hans, GitHub otherwise;
explicit github/cnb skips fallback).

curl verifies peer+host against the embedded CA bundle and now
distinguishes certificate time-skew from other verification
failures, surfacing a dedicated clock notification. Revert the
util CMake target back to "util" now that libgit2 no longer
claims that name.

* fix(daemon): stop private elfldr on stack shutdown

* fix(rest-mode): restore services and toolbox after standby #1

* feat(i18n): notify service restored after rest mode #1

* docs: credit itsplk ps5-payload-manager for rest mode resume

* chore(cheats): cheats download page UI

* fix(shellui): use RootWidget dimensions for overlay layout (#6)

* fix(i18n): localize TeeKay87 credit in cheat download entry

* fix(cheats): show downloaded file size progress

* fix(cheats): restore download confirmation

* fix(cheats): improve download status feedback

* chore(cJSON): unify JSON parsing and serialization with cJSON

* chore(cJSON): unify JSON parsing and serialization with cJSON

* fix(cheats): cancel sync when progress page closes

* chore(log): align runtime log levels

* fix(cheats): make sync cancellation responsive

* fix(cheats): restore page state after sync

* fix(cheats): notify when cancellation completes

* feat: add FTP, Docker, Remote Play, and ShadowMountPlus support (#23)

* feat: move FTP server to third_party and keep Docker

* docs: add ftpsrv to project credits

* feat: add FTP, Docker, and Remote Play support

* docs: document FTP and Remote Play

* feat: improve dependency scripts and add ShadowMountPlus

* docs: update ShadowMountPlus credits

* docs: add ShadowMountPlus config example

* i18n: normalize locale terminology and validation

* fix: launch ShadowMountPlus from memory

* fix(startup): default bundled payload autoloads off

Keep ftpsrv and ShadowMountPlus disabled when configuration is missing or predates these options. This avoids duplicate launches and conflicts with payloads users already autoload themselves, while preserving an explicit autoload=true opt-in.

* fix(shellui): add Drakmor icon for ShadowMountPlus

* fix(i18n): cache util system language before ptrace

* feat(shellui): regroup ShadowMountPlus/FTP and add cheats icons

---------

Co-authored-by: Kevin Huerta <kevinhuerta2808@gmail.com>
2026-08-21 10:48:31 +08:00
..