41 Commits
Author SHA1 Message Date
aydencharles 6950517ad8 fix(lifecycle): collect Big App on EXEC before running query 2026-09-11 22:47:42 +08:00
aydencharles f0c71209c5 feat(shellui): add progress auto-return and plugin progress dialog 2026-09-09 20:51:40 +08:00
aydencharles fc9ec112f3 feat(payload): add load priority and autostart delay 2026-09-07 20:25:46 +08:00
aydencharles 710c268f39 fix(shellui): refresh existing settings pages after pop 2026-09-07 17:47:10 +08:00
aydencharles 7c33667749 feat(boot): refuse start when a conflicting payload is running 2026-09-04 16:52:38 +08:00
aydencharles db97d97974 test(lifecycle): cover runtime startup and owner exit handling 2026-09-04 13:49:14 +08:00
aydencharles df92819193 feat(sprx): harden loader policy and runtime lifecycle 2026-09-04 12:36:20 +08:00
Hexwell e1cd1e6d3a refactor(dpi): move installer to external plugin 2026-09-03 14:41:00 +08:00
Hexwell 0e276281fd feat(plugin): add external ELF plugin management 2026-09-02 21:32:44 +08:00
Hexwell e415d0b75e feat(plugin): add ELF discovery and lifecycle management 2026-09-01 18:15:35 +08:00
kvnhrt a534adcd60 feat: add ShadowMount+, DPI pkg-server + WebUI, fix PS4 FPS
- fix(fps): measure PS4 BC frame rate with a remote GNM detour
  and hide the pkg install result code in the finish notification
- feat(utils): integrate ShadowMount+ alongside the FTPSRV service
  for game scanning, mounting and installation
- feat(DPI): add the packet package server (pkgserver) with its
  Web UI and full REST/SSE API surface
- feat(tests): add new host test suites (multipart, builtin
  services, pkg XML, FPS formula, toolbox i18n/route, language)
- build: add Docker support for building and running the tests
- docs: update credits, README, architecture, util-arch, api and
  third-party documentation; add contributor credit and i18n keys
- i18n: remove the pkg finish result code from every locale
2026-08-31 05:26:42 -06:00
Hexwell b344e2d992 feat(overlay): add left/center/right metric align 2026-08-31 07:38:32 +08:00
Hexwell e22013992d fix(rest-mode): recover toolbox from SysCore EXEC not SIGCONT 2026-08-21 22:26:32 +08:00
Hexwell fddc9d4e3e feat(overlay): FPS on the monitor bar (#13) 2026-08-21 17:14:55 +08:00
Hexwell 6cc67a8748 fix(i18n): cache util system language before ptrace 2026-08-20 10:52:03 +08:00
Hexwell cb7359d155 fix(rest-mode): restore services and toolbox after standby #1 2026-08-18 16:30:55 +08:00
Hexwell 7ea2ba30c5 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.
2026-08-18 15:41:08 +08:00
Hexwell c5e30c4fd0 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.
2026-08-18 12:38:27 +08:00
Hexwell 456c834f00 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.
2026-08-18 12:00:16 +08:00
Hexwell 0b556297de chore(shellui): drop unused account_id_b64 leftover
Remove the PIN-page account-id encoder and empty Activator
stubs that no longer have callers.
2026-08-17 19:23:51 +08:00
Hexwell 5b06505b59 fix(cheats): load TITLE_VERSION_HASH cheat files #12
Files such as PPSA17168_01.004.000_97905f51.json did not match
the exact TITLE_VERSION.ext lookup, so the current game showed
no cheats.

Closes: #12
2026-08-17 16:40:45 +08:00
Hexwell 4c4043581d chore: remove unused beta trial gate
The 14-day seal is no longer used. Drop libonion_trial, the Toolbox
banner, and notify.trial catalog entries so Debug no longer expires.
2026-08-17 10:44:16 +08:00
Hexwell dbe471e268 refactor(trial): replace certificate gate with 30-day beta trial
Drop per-device Ed25519 licenses and TCP install in favor of a build-time
seal plus sealed trial.state anti-rollback. Rename libonion_activation to
libonion_trial, show beta notices in daemon toast and toolbox UI, remove
unused V_FW, and set author to 麒麟/0xp0co.
2026-08-03 19:19:53 +08:00
Hexwell 655133f551 fix(shellui): tighten per-core overlay spacing 2026-07-30 23:32:20 +08:00
HexwellandClaude Fable 5 2df9e0b2fb fix: share console IP lookup across modules
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>
2026-07-26 19:49:50 +08:00
Hexwell ebc89bb5d4 fix: restore Itemzflow jailbreak and IPC ABI
Restore ITEM00001 to the app-jailbreak allowlist so the Itemzflow loader can complete its legacy handshake.

Reserve the removed dumper command at 0x9000004, lock the released critical IPC ordinals with host tests, and document the remaining legacy socket compatibility gap.
2026-07-22 15:52:29 +08:00
Hexwell 9fb270c06e fix: scope settings hooks to toolbox pages
SettingPage hooks are process-wide, so stock pages such as PkgInstaller were being consumed by toolbox handlers. Track the active XML page, dispatch handlers by toolbox domain, pass stock pages through unchanged, and add host regression coverage.
2026-07-20 16:17:47 +08:00
Hexwell 64488ce462 feat: add DebugSettings compatibility profiles 2026-07-20 12:27:23 +08:00
Hexwell b2640863a1 fix: harden shellui inject trampolines and ptrace stager
Allocate unique near trampolines without MAP_FIXED, gate hooks until
install completes, and make pt_attach/pt_call wait and stack alignment
fail-closed so controller use during inject cannot corrupt ShellUI.
2026-07-16 23:09:11 +08:00
Hexwell 73ef92d3ce fix: make toolbox injection race-safe 2026-07-16 22:02:03 +08:00
Hexwell 49b6e4ba02 refactor: remove playtime tracking 2026-07-16 17:30:28 +08:00
Hexwell b99e084a25 feat(shellui): add zh-Hans/en i18n for dynamic toolbox XML
Introduce toolbox_i18n string tables and Settings.ui_lang (0=zh, 1=en).
Build all dynamic toolbox pages through tr(), add a language list under
shortcuts, and notify the user to re-open the toolbox after switching.
2026-07-15 18:31:29 +08:00
Hexwell 8742045df4 fix: harden PS5 x64 detours and toolbox startup 2026-07-11 01:55:29 +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 ece77ea433 fix: harden IPC transport and process-local settings store
Serialize IPC_Client with a per-target mutex and full-frame send/recv plus
NUL-terminated payloads. Escape reply JSON vars, null-check daemon FS paths,
handle BREW_UTIL_TEST_CONNECTION, and track BREW_LAST_RET from the last reply.

Introduce SettingsStore (mutex snapshot/update), dual-path config mtime gating,
and fan IPC persistence to twin config files. Stop cold-start toolbox delay on
util_booted; fix jailbreak hijack retry to stop only when dead or maxed.

Add host tests for IPC wire helpers, toolbox timing policy, and hijack retry.
2026-07-10 17:56:21 +08:00
Hexwell f81c7a88d4 test: expand host unit coverage for pure OrionHEN modules
Extract host-testable helpers (GitHub commit SHA, account-id base64,
registry entity ids, playtime store, cheat flatten names, toolbox path
helpers, IPC reply body) and grow the util host suite to ~120 cases.
Also phase-split bootstrapper main for clearer launch diagnostics.
2026-07-10 17:09:54 +08:00
Hexwell 924cda712c refactor: split daemon commands and consolidate shellui UI state
Break daemon/commands.cpp into playtime, jailbreak, and utils TUs. Introduce
ToolboxUiState with compatibility aliases, extract pure toolbox resource
routing for host unit tests, and fix superuser empty-XML pass-through.
2026-07-10 16:48:59 +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
Hexwell 2c455c1eb6 test: expand host unit coverage for platform, ready flags, and IPC
Add suites for liborion_platform (fs/log/notify), richer settings and ready
flag cases, and msg.hpp protocol ordinals. Link real platform sources under
ORION_HOST_TEST; fix DaemonCommands to unsigned so high-bit opcodes are
well-formed. Rename host binary to orion-host-tests.
2026-07-10 15:42:32 +08:00
Hexwell 30a02e9f59 test(settings): host unit tests for schema serialize and round-trip
Expose settings_load_file/save_file/serialize for tooling and lock the INI
schema with host tests. Also cover orion_ready signal/wait on the host.
2026-07-10 14:48:16 +08:00
Hexwell ddd19cb08c test(util): add host unit tests for cheat file parsers
Add kylin-core-style host tests for CheatParserFactory (json/shn/mc4/ShnExt)
and cheat utils, with sample fixtures and a Makefile under source/util/tests.
2026-07-10 14:13:56 +08:00