25 Commits
Author SHA1 Message Date
aydencharles ac143c20c4 refactor(cheats): separate browse and runtime state 2026-09-09 12:42:13 +08:00
aydencharles df2622cd67 feat(sprx): add catalog management controls 2026-09-04 14:40:11 +08:00
aydencharles 127748afc6 feat(plugins): embed settings links and manage autostart per plugin 2026-09-03 16:55:39 +08:00
aydencharles 75ab94f408 refactor(cheats): unify game version resolution in the daemon 2026-09-03 15:07:19 +08:00
Hexwell e1cd1e6d3a refactor(dpi): move installer to external plugin 2026-09-03 14:41:00 +08:00
Hexwell c9a24f148b refactor: migrate ShadowMount+ to external plugin 2026-09-03 14:02:37 +08:00
Hexwell 33da7e3709 refactor(ftp): remove built-in FTP server 2026-09-02 22:38:47 +08:00
Hexwell 0e276281fd feat(plugin): add external ELF plugin management 2026-09-02 21:32:44 +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 7092dd6b85 feat(cheats): load all compatible sources together 2026-08-24 14:06:14 +08:00
Hexwell 8ab584db24 fix(rest-mode): recover built-in FTP listener after standby 2026-08-22 22:33:27 +08:00
Hexwell e049af1ce4 refactor(services): remove ShadowMountPlus and integrate ftpsrv source 2026-08-22 21:13:16 +08:00
Hexwell 1b09cf29f0 fix(rest-mode): recover toolbox and IPC after standby 2026-08-22 12:10:54 +08:00
Hexwell 988cf124f9 fix(rest-mode): recover toolbox and IPC listeners on SIGCONT 2026-08-21 18:15:50 +08:00
Hexwell 40e2fab9b1 feat(plugins): split run/autoload and embed ShadowMountPlus 1.6beta16 2026-08-21 16:22:58 +08:00
Hexwell da2073578b feat: add control facade for ftpsrv and ShadowMountPlus 2026-08-21 15:57:07 +08:00
Kevin Huerta b7fa1bd238 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
2026-08-20 10:10:32 +08:00
Hexwell 440c867974 fix(cheats): cancel sync when progress page closes 2026-08-19 15:52:13 +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 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
HexwellandClaude Fable 5 7e64b92d98 refactor(log): route every call site through the shared logger
There were seven ways to log, each invented where the previous one was not
reachable:

  OnionHEN_log   libonion_platform, the only one with a file sink
  shellui_log    libonion_ipc, klog only — because it did not depend on
                 libonion_platform
  game_log       same body as shellui_log
  onion_ipc_log  same body again
  logf           libonion_ipc's IPC server, with a sink the host had to
                 register
  log_msg        onion_elfldr_server
  crash_log      util's fault handler, plus a second copy in common/
  boot_log       bootstrapper's fault handler
  klog_printf / klog_puts / printf / puts, called directly

A message's destination therefore depended on which module happened to emit
it: ShellUI's ~300 records went to volatile klog and never reached a log file,
while the daemon's went to klog, stdout and disk.

Everything now goes through the LOG_* macros. All seven legacy entry points
are gone, and klog_printf survives only as a sink inside log.c.

The bare -nostdlib libraries deliberately did not get their own backend. Those
flags only affect the static library's own link step; each is linked into a
host with full libc and pthread, which is why they already called vsnprintf.
A second backend would have recreated the split this removes.

Levels were inferred from message text rather than applied uniformly — the old
entry points carried no severity, so a blanket mapping would either bury real
failures at debug or promote routine chatter to error. Result: 291 error, 63
warn, 140 info, 309 debug.

Consequences worth noting:

  * ShellUI records now reach the log file, so a user report finally contains
    what the injected process did. In release builds most of them are debug
    and compile out, so this costs nothing on a retail unit.
  * The IPC server's log-sink injection is gone; both servers registered the
    same forwarder.
  * common/backtrace.cpp and backtrace.hpp are deleted. That was a third copy
    of the frame walking plus its own crash_log, and every caller of
    printBacktrace/printBacktraceForCrash had already been commented out.
  * Fault handlers use onion_log_emergency, so crash records go to the same
    file as everything else instead of a separate crash log.

The shared entry point carries a printf format attribute, which the old
shellui_log explicitly avoided. That attribute found seven real format
defects: %p given typed pointers, %lx given a MonoObject*, %p given a
uint64_t, and %u given an unsigned long. Four of them only compile in debug
builds, so they had gone unnoticed.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-26 21:10:08 +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 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 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