- 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
* 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
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.
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.
Drop the ShellUI dump menu entry and OnionHEN?Dump URI handling. Replace
dumper_utils with file_copy_utils for generic IPC copy/size helpers only.
Also drop WIP wording from the cheats menu label.
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.
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.
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).
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.
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.
Move util cheats orchestration to C++ (CheatService, Repository, Applier,
IMemoryBackend, ICheatParser factory for json/shn/mc4 with ShnExt C adapter).
Drop the obsolete RELOAD_CHEATS UI/IPC path; reloads use file-signature hot
reload only. Document util cheats architecture under docs/util_arch.
Drop decrypt_self/decrypt_dir and related SELF header types from the
critical daemon. Keep BREW_DECRYPT_DIR as an unused ordinal for
compatibility; callers receive a hard failure.
Drop the util FTP (1337) and Klog (9081) servers, Toolbox UI toggles, and
config keys. Keep former IPC command ordinals as UNUSED_* for compatibility.
Add docs/arch.md covering modules, IPC, features, and dependencies.
Rename remaining etaHEN symbols, log prefixes, on-disk paths, plugin
magic, process names, and copyright headers across bootstrapper, daemons,
shellui, and util without keeping legacy aliases.
Drop in-process spawn for HEN components. Write ELFs under
/data/etaHEN/daemons and hand off file: URIs to the host elfldr service.
Add elfldr_remote helpers and wire bootstrapper/daemon/util CMake and call sites.