17 Commits
Author SHA1 Message Date
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
Hexwell 295590203c chore(shellui): replace Remote Play with account activation
Drop the pairing page and the OnActivated / OnDeactivating
lifecycle hooks. Keep the Toolbox entry for offline account
activation, with a localized save-loss warning before writing
an account ID.
2026-08-17 19:18:02 +08:00
Hexwell 4c501cff1b fix(shellui): stabilize Remote Play page lifecycle
Drive visibility from SettingPage.OnActivated and
Application.FocusActiveScene instead of UIManager.Active plus
SceneBase.ActualVisible. Pair success now pops the page the same
way timeout does, and missing Mono methods are treated as optional
capabilities rather than disabling the whole poller.
2026-08-16 20:19:54 +08:00
Hexwell 99688943ac chore: toolbox remote play page routing 2026-08-16 18:38:31 +08:00
Hexwell 7a4fbcb23c update: settings UI icons and credits 2026-07-20 15:29:57 +08:00
Hexwell 520edd2609 feat: add Ko-fi donation QR code 2026-07-20 14:50:43 +08:00
Hexwell 098dcbd737 fix: correct Remote Play PIN and account lookup 2026-07-20 13:16:51 +08:00
Hexwell b298ca0e7a refactor: reorganize toolbox menu categories and icons
Split the Toolbox into clearer groups (install, payloads, game tools,
monitoring, connection, system, preferences, debug, about), update
i18n/docs/tests, and wire new monitor/account icons through bootstrapper.
2026-07-19 02:32:18 +08:00
Hexwell c32701b070 fix(shellui): keep single slashes in display text, double only for icons
ShellUI shows // literally in title/second_title path strings, but still
requires / → // on icon filesystem paths to load toolbox group icons.
2026-07-15 19:05:53 +08:00
Hexwell 072361c53f refactor: remove online kstuff and cheats downloads
Drop GitHub-based download UI, IPC, and the util HTTP/curl stack. Keep
local cheats under /data/OnionHEN/cheats and optional external kstuff.elf.
2026-07-15 18:42:54 +08:00
Hexwell 0a5e0500fd refactor: remove auto-eject disc on OnionHEN start
Drop Settings.auto_eject_disc, toolbox toggle/handlers, and the daemon
boot call to sceShellCoreUtilRequestEjectDevice.
2026-07-15 18:36:50 +08:00
Hexwell aad2cdaabc refactor: rebrand OrionHEN to OnionHEN
Rename product, namespaces, libraries, paths, and assets from Orion/orion
to Onion/onion across the tree. TCP stack-shutdown magic is now ONIO
(0x4F4E494F) to match the corrected branding.
2026-07-15 18:23:16 +08:00
Hexwell ba297744af refactor: remove post-boot toolbox/settings auto-open
Drop StartOption and toolbox_auto_start (UI, settings, rest-mode disable,
USB override, and startup URI launch). Always inject the toolbox into
ShellUI without navigating to debug settings or any auto-open page.
2026-07-15 17:59:14 +08:00
Hexwell c821c252f0 refactor(shellui): build toolbox menu via ps5ui::Page
Generate the main toolbox XML at runtime with the fluent builder and drop
the encrypted static embed, encryptxml pre-build step, and decrypt path.
2026-07-15 17:53:18 +08:00
Hexwell 6cd5977110 refactor(shellui): share toolbox value resolvers; bind cheats repo list
Move OnPreCreate value tables into toolbox_values, support list value=
in ps5ui, and set the selected cheats repo from settings so the control
shows the real choice.
2026-07-10 23:43:05 +08:00
Hexwell 352d682cd2 refactor: drop plugins; OrionHEN only supports payload .elf
Remove the .plugin package format and rename the stack to payload-only:
liborion_plugin → liborion_payload, IPC LAUNCH_PAYLOAD, UI payloads.xml,
and bootstrapper/util/shellui load paths under .../payloads/*.elf.

Delete dead package header validation, make_plugin_app staging, and
plugin-named lists/handlers; keep Sony Settings.Plugins resource namespace
and system_settings plugin= attributes (platform, not our format).
2026-07-10 22:28:19 +08:00
Hexwell 37276e1d8d feat(shellui): add fluent PS5 settings XML builder for dynamic pages
Introduce ps5ui::Page so cheats, plugins, remote play, and plapps UIs are
built via explicit widget calls instead of hand-written XML strings, and
cover the builder with host unit tests.
2026-07-10 16:26:05 +08:00