58 Commits
Author SHA1 Message Date
aydencharles 9beb4c58c6 refactor(boot): extract acquire use case and consolidate fs helpers 2026-09-14 10:20:40 +08:00
aydencharles f4d18ed94d fix(i18n): localize welcome toast author by language 2026-09-14 07:31:46 +08:00
aydencharles b84bac3027 fix(notify): write toast icon to /user/data 2026-09-04 15:37:48 +08:00
aydencharles df2622cd67 feat(sprx): add catalog management controls 2026-09-04 14:40:11 +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
aydencharles 127748afc6 feat(plugins): embed settings links and manage autostart per plugin 2026-09-03 16:55:39 +08:00
aydencharles 4023fcdae9 feat(plugin): wire host services and plugin flags
Implement the daemon-side Host Service handlers that the SDK client already
sends, and the two descriptor flags the SDK defines beyond auto-start.

- session: add LOG/NOTIFY/CONFIG_GET/CONFIG_SET commands and a HostServices
  interface injected by the daemon; NOTIFY is gated by the Notify capability
- daemon: route log to LOG_*, notify to the toast, and config to a persistent
  per-plugin ConfigStore under the plugin install root
- manager: honor LONG_RUNNING (crash supervision on reconcile) and
  STOP_SUPPORTED (graceful SIGTERM vs immediate SIGKILL)
- tests: cover host-service gating/config round-trip and the new flags
2026-09-03 15:37:52 +08:00
Hexwell 0e276281fd feat(plugin): add external ELF plugin management 2026-09-02 21:32:44 +08:00
Hexwell bb6ccd7803 feat(plugin): add dynamic UI event bridge 2026-09-02 20:42:01 +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 b8c15cff0b fix(payload): preserve user-owned processes 2026-08-22 21:49:06 +08:00
Hexwell d056e00850 fix(fps): match DCE ioctl ABI and add diagnostics 2026-08-22 14:44:51 +08:00
Hexwell 81cd276311 refactor(rest-mode): remove dead recovery code 2026-08-22 12:14:45 +08:00
Hexwell 1b09cf29f0 fix(rest-mode): recover toolbox and IPC after standby 2026-08-22 12:10:54 +08:00
Hexwell e22013992d fix(rest-mode): recover toolbox from SysCore EXEC not SIGCONT 2026-08-21 22:26:32 +08:00
Hexwell 988cf124f9 fix(rest-mode): recover toolbox and IPC listeners on SIGCONT 2026-08-21 18:15:50 +08:00
Hexwell fddc9d4e3e feat(overlay): FPS on the monitor bar (#13) 2026-08-21 17:14:55 +08:00
Hexwell 2f95e4df9a chore(cJSON): unify JSON parsing and serialization with cJSON 2026-08-19 14:56:25 +08:00
Hexwell cb7359d155 fix(rest-mode): restore services and toolbox after standby #1 2026-08-18 16:30:55 +08:00
Hexwell 57826d5424 refactor(i18n): use stable keys and whole-sentence formats
Notifications look up notify.* keys instead of English source
strings. Toolbox interpolations go through toolbox_i18n::format so
zh/en word order lives in the JSON catalogs.
2026-08-17 09:50:33 +08:00
Hexwell 550302fddc fix(daemon): hold fan threshold on a dedicated thread
Firmware reasserts its own curve after a one-shot /dev/icc_fan
ioctl. Rewrite the configured threshold every 2s independently of
the app-jailbreak listener, and reuse the shared cooling constants.
2026-08-17 09:25:11 +08:00
Hexwell 7753962672 refactor(daemon): isolate startup navigation 2026-08-15 16:02:31 +08:00
Hexwell 07ed6d2339 feat(daemon): add event-driven app jailbreak listener 2026-08-06 19:30:48 +08:00
Hexwell 9a9c37e318 feat(logging): add runtime levels and log rotation 2026-08-06 18:12:52 +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 237553b7d7 feat: enforce private elfldr payload loading
Require user payloads to launch through :9020 with an exact PID response, removing the :9021 fallback and process-snapshot PID inference.

Supervise the private loader from daemon, recover it through :9021 before restarting util through :9020, and protect synchronous launches with a bounded busy marker.

Add strict loader tests, update runtime documentation, and remove obsolete elfldr and process-snapshot compatibility APIs.
2026-07-22 15:02:23 +08:00
Hexwell a4cc7c835e fix: localize welcome toast and cache language
Cache the PS5 system language once per process and share the resolved locale across Toolbox, plain notifications, and rich notifications. Keep ShellUI queries behind the registered trampoline, localize the daemon welcome toast, and cover cache refresh and localized payload generation in host tests.
2026-07-20 17:36:30 +08:00
Hexwell 31b555f185 fix: correct welcome toast layout
Place the welcome title in subMessage and the build version with author in message to match the PS5 toast layout. Shorten dirty build labels to dirty-SHA.
2026-07-20 17:01:08 +08:00
Hexwell 7db83f3baf update: show build metadata in welcome toast
Generate shared version metadata from an exact Git tag, falling back to dirty-YYMMDD-SHA for untagged or modified trees. Show the version and author in the startup toast and reuse the generated version across ShellUI.
2026-07-20 16:48:47 +08:00
Hexwell 64488ce462 feat: add DebugSettings compatibility profiles 2026-07-20 12:27:23 +08:00
Hexwell d83577e568 feat: embed private elfldr on 9020 2026-07-18 20:35:16 +08:00
Hexwell 4412785bf7 remove: drop FPS overlay inject and fps_elf embed
Remove FPS calculation from the shellui monitor bar while keeping CPU,
GPU, RAM, and IP metrics, and delete the full game-process inject path
(fps_elf, fps.prx, SHM) so titles are no longer soft-injected.

Clear any legacy fps_overlay ready marker on daemon/shellui start, and
bound CPU sampling retries so a stuck probe cannot block other metrics.
2026-07-16 22:22:29 +08:00
Hexwell 73ef92d3ce fix: make toolbox injection race-safe 2026-07-16 22:02:03 +08:00
Hexwell 31ad34afb7 chore: remove orphaned headers 2026-07-16 17:48:16 +08:00
Hexwell 49b6e4ba02 refactor: remove playtime tracking 2026-07-16 17:30:28 +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 5e3ec51d1b fix(daemon): gate util watchdog with dedicated shutdown flag
Introduce g_stack_shutting_down so stack teardown does not reuse
is_handler_enabled. Arm it before killing util so fifo_and_dumper_thread
will not relaunch util over 9021.
2026-07-15 18:17:57 +08:00
Hexwell 2109dec0f6 fix(daemon): stop stack without killing kstuff
Tear down util and SceShellUI then exit the daemon. Leave kstuff running
because SIGKILL of kernel patches panics the console.
2026-07-15 18:10:58 +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 3512f3818a feat(daemon): shut down kstuff → daemon → util → ShellUI
Fork a short-lived orchestrator so the stack can stop kstuff and the
daemon first, then util, then restart SceShellUI after daemon exits.
2026-07-15 17:53:28 +08:00
Hexwell db4fdda753 feat(daemon): shutdown stack via IPC and LAN TCP :9048
Add BREW_SHUTDOWN_STACK (0xDEAD0002): kill util.elf, ForceKill SceShellUI,
then exit the crit daemon. Expose the same sequence on TCP port 9048 with
ORIO magic frames so a PC can tear down OrionHEN over the LAN.

Provide scripts/shutdown_orion.py (kill_daemon.py becomes a thin alias) and
IPC_Client::ShutdownStack for on-console Unix clients.
2026-07-10 22:35:00 +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 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 96533ccf4d chore: purge DPI/microhttpd leftovers and unused AppInst stubs
Delete error_translator.hpp, microhttpd.h, and libmicrohttpd.a left after
removing DirectPKGInstaller. Strip unused AppInst types from util/daemon,
drop SceAppInstUtil link where no longer needed, remove dead dpi/kernelrw
thread stubs, drop the toolbox microhttpd credit, and refresh README.
2026-07-10 16:05:46 +08:00
Hexwell ff40042d84 chore: keep only system PkgInstaller; remove DPI and custom PKG UI
Delete DirectPKGInstaller and the toolbox DPI toggle. Remove the custom
background package installer (custompkginstaller XML generation and
id_pkg_ handlers). Package install remains the stock PkgInstaller link
in OrionHEN_toolbox.xml. Leave BREW_UTIL_UNUSED_DPI ordinal for IPC
compatibility.
2026-07-10 16:03:27 +08:00
Hexwell f75fe02830 refactor(daemon): split msg.cpp into inject, settings, and FS modules
Keep IPC_loop as the only transport entry in msg.cpp. Move toolbox/fps
injection, LoadSettings, and remount/chmod/reply helpers into dedicated
TUs behind daemon_ops.hpp so inject changes no longer touch the IPC ring.
2026-07-10 15:38:42 +08:00
Hexwell 0e24f2da17 refactor: migrate platform leaves and split ShellUI OnPress
Wire daemon/util/shellui/bootstrapper to liborion_platform and
liborion_proc (orion_notify, OrionHEN_log configure, find_pid, if_exists).
Split MonoUtils into mono_runtime/toolbox_xml/settings_ui/shellui_* and
replace the OnPress id bus with table-driven domain handlers.
2026-07-10 15:29:32 +08:00
Hexwell 055c84e6da refactor(lnc): share LncAppParam/Flag in orion/lnc.h
Centralize LNC launch ABI for daemon and util. launcher.hpp becomes a thin
shim; remove unused include from dumper_utils.
2026-07-10 14:48:16 +08:00