Commit Graph
104 Commits
Author SHA1 Message Date
aydencharles df2622cd67 feat(sprx): add catalog management controls 2026-09-04 14:40:11 +08:00
kvnhrt 2eee3bad3d fix(shellui): inject dynamic plugin toggle value on page creation
OnionHEN's generated pages bind toggle values during SettingPage.OnCreating
(OnPreCreate_Hook -> resolve_toolbox_control_value -> set_Value) because the
legacy PS5 settings framework does not honor the XML 'value' attribute.

Dynamic plugin config pages and external plugin list toggles had no such
resolver, so a toggle reverted to its default OFF state on page re-entry even
when the plugin/setting was actually active.

Add a resolver that reads the live node value from the dynamic UI runtime
snapshot and injects it through the existing OnPreCreate binding path.
2026-09-03 06:55:59 -06:00
aydencharles 127748afc6 feat(plugins): embed settings links and manage autostart per plugin 2026-09-03 16:55:39 +08:00
aydencharles d4fb854789 fix(shellui): co-locate external plugin settings links 2026-09-03 16:25:30 +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
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 374013160b feat(overlay): add fan duty display to the game monitor bar 2026-08-31 10:25:30 +08:00
Hexwell b344e2d992 feat(overlay): add left/center/right metric align 2026-08-31 07:38:32 +08:00
Hexwell 7092dd6b85 feat(cheats): load all compatible sources together 2026-08-24 14:06:14 +08:00
Hexwell e049af1ce4 refactor(services): remove ShadowMountPlus and integrate ftpsrv source 2026-08-22 21:13:16 +08:00
Hexwell 36e5c6236c refactor(shellui): coalesce display TID and nav Home reload 2026-08-21 22:49:33 +08:00
Hexwell 395e2d55f4 refactor(shellui): drop unused AppInst and dead hooks 2026-08-21 22:38:16 +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 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
Hexwell d33f3d2fec feat(shellui): add built-in plugin manager with per-plugin config pages 2026-08-21 14:05:43 +08:00
Hexwell 78f227140f fix(shellui): normalize Remote Play page lifecycle 2026-08-21 11:53:58 +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 91b154cec5 fix(cheats): restore page state after sync 2026-08-19 16:55:31 +08:00
Hexwell 440c867974 fix(cheats): cancel sync when progress page closes 2026-08-19 15:52:13 +08:00
Hexwell 005b9f18d0 fix(cheats): restore download confirmation 2026-08-18 23:53:44 +08:00
Hexwell e3456c8f75 fix(shellui): use RootWidget dimensions for overlay layout (#6) 2026-08-18 23:12:13 +08:00
Hexwell 994944a43f chore(cheats): cheats download page UI 2026-08-18 22:42:38 +08:00
Hexwell 42e7dc8c8e Merge branch 'main' into dev 2026-08-17 22:23:31 +08:00
ModmyconandModmycon 2ac2793ab4 feat(i18n): add Thai (th-TH) locale
Add a key-complete th-TH catalog and wire it through settings, Toolbox, and notifications. Follow PS5 system language 27 when toolbox.language is system.

Co-authored-by: Modmycon <monmycod@gmail.com>
2026-08-17 22:22:14 +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 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 c19d560d5e feat(i18n): add Italian, Russian, and Polish
Add key-complete catalogs and wire them through settings, Toolbox,
and notifications. Follow PS5 system languages 5, 8, and 16 when
toolbox.language is system. Existing locale ids stay unchanged.
2026-08-17 13:18:07 +08:00
Hexwell cd0c0450f0 feat(i18n): add Korean, Spanish, and Brazilian Portuguese
Add key-complete catalogs and wire them through settings, Toolbox,
and notifications. Follow PS5 system languages 9, 3/20, and 7/17
when toolbox.language is system. Existing locale ids stay unchanged.
2026-08-17 13:02:05 +08:00
Hexwell 58d6c4d5bb feat(i18n): add zh-Hant, Japanese, French, and German
Add key-complete catalogs and wire them through settings, Toolbox,
and notifications. Follow PS5 system languages 10, 0, 2/22, and 4
when toolbox.language is system. Existing zh-Hans, en, and ar ids
stay unchanged.
2026-08-17 12:46:48 +08:00
Hexwell 5c07eee777 feat(i18n): add a trial Arabic locale
Scan every locale JSON into N-column catalogs and wire ar through
settings, Toolbox, and PS5 system language 21. The Settings page
stays LTR; XOR trial banners stay bilingual.
2026-08-17 10:32: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 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 8403f7e9e7 refactor(shellui): unify HomeUI and Settings patching 2026-08-07 13:25:53 +08:00
Hexwell e0fe255e23 feat(shellui): support 8.x HomeUI and DebugSettings 2026-08-07 12:23:56 +08:00
Hexwell 655133f551 fix(shellui): tighten per-core overlay spacing 2026-07-30 23:32:20 +08:00
HexwellandClaude Fable 5 0d9fe9302a fix(build): make DEBUG and SHELL_DEBUG follow the build type
A --release build defined both DEBUG and NDEBUG, and SHELL_DEBUG was
hardcoded to 1 in defs.h. Every debug branch therefore shipped: the extra
checks in libhijacker's containers, and ~50 verbose diagnostic blocks in the
ShellUI hooks — the chattiest logging in the project, running inside an
injected system process on every boot.

DEBUG is now defined only for non-Release configurations, and SHELL_DEBUG
follows NDEBUG (override with -DSHELL_DEBUG=1 to keep the verbose blocks in a
release build while chasing a report). The symbols that exist only to serve
those blocks are guarded alongside them.

Also drop the hardcoded -O0. Release only got -O3 because it was appended
after it; reordering the flag strings would have silently produced an
unoptimised release build. Optimisation now comes from the build type alone.

Release shellui.elf is 24% smaller than the Debug one, and smaller than
before this change despite the added logging code.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-26 20:44:26 +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
HexwellandClaude Fable 5 f1219fc317 refactor(shellui): consolidate hook declarations into header
Hook trampoline pointers such as boot_orig, oOnPress and CaptureScreen_orig
were declared in hooked_funcs.hpp and then re-declared verbatim in the
translation units that use them, so a signature change would not fail the
build at the duplicate site.

Remove the redundant local externs, include hooked_funcs.hpp from
hook_onpress.cpp instead of hand-declaring oOnPress, and move OnRender_orig,
Orig_ReloadApp and set_value_method into the header alongside the pointers
they sit next to.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-26 19:49:23 +08:00
Hexwell 258eed695e fix: HomeUI top-nav crash on game close and blank focus icon
Host OnionHEN on ApplicationErrorEventTrigger instead of rewriting Fps,
restore stock Fps body on all profiles, and mirror onionhen.png into
invertedIcon for focused state. Add dump verifier and build toggle.
2026-07-21 22:12:54 +08:00
Hexwell 5654190b7a fix: simplify language caching 2026-07-20 17:59:45 +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 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