* 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>
get_ip_address had three independent implementations (shellui, util, daemon)
because each module also carried its own copy of SceNetCtlInfo and its own
prototype for sceNetCtlGetInfo, with the pointer typed as SceNetCtlInfo* in
two of them and void* in the third.
The shellui and util copies stored the result in an unsigned int and tested
`ret < 0`, which is never true for an unsigned value. Their error branch was
unreachable, so a failed lookup returned success, left not_connected clear,
and copied an uninitialised SceNetCtlInfo to the caller instead of the
IP NOT FOUND placeholder. util's rest-mode network-recovery retry keys off
that return value and therefore never ran.
Declare the netctl ABI once in source/include/ps5/net_ctl.h, add
onion_net_get_ip_address to libonion_platform with an explicit buffer-size
contract, and keep util's not_connected latch in util where it belongs.
Cover the status mapping, the placeholder length and buffer validation with
host tests.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>