Ed25519 signing no longer adds useful friction. Drop
libonion_integrity, tools/elf_sign, and the XOR integrity toasts
so builds no longer sign daemon.elf.
Keep redistribution and integrity notices out of ELF .rodata by storing
XOR+position-math blobs and decoding at runtime, so casual string search
cannot locate and patch them. Covers toolbox XML banner, bootstrapper
debug toasts, and the shared integrity failure path in daemon.
Ship the PHU-style ShellUI top bar and file SHM channel for FPS samples.
Soft-inject fps_elf without process suspend (suspend+ptrace hung titles).
Document and gate the confirmed freeze: DetourFunction on the linked
sceGnmSubmitAndFlipCommandBuffersForWorkload entry (prologue size 17)
freezes games even after a 20s defer. Keep ORION_FPS_ARM_GNM_HOOK=0 so
inject only opens SHM until a safe flip probe is verified.
See docs/fps-overlay-known-issues.md.
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).
encryptxml used the Base64 string as the XOR key while runtime decrypted
with base64_decode(key) ("SISTR0_I_SEE_YOU"), producing garbage menus.
Regenerate sxml with the decoded key; fix enc_ver the same way.
DetourFunction used malloc for trampolines and ignored mprotect failures,
causing SIGILL/SIGSEGV when jumping to non-executable stubs. Allocate via
mmap+mprotect, page-align target mprotect, and fail closed on errors.
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.
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.
Drop the microhttpd-based DPIv2 server and settings/UI/IPC knobs. Keep
TCP DPI on port 9090 only; custom package install no longer routes through
127.0.0.1:12800. Unlink libmicrohttpd from util.
Delete util_shellcore and the disabled Allow_data_in_sandbox feature
(settings field, toolbox toggle, onpress/onprecreate handlers). Drop the
no-op load_ps5debug_thr and id_sistro_ps5debug handler; keep credits label
only. Strip firmware pattern tables and hex_lut that only served the
historical ShellCore /data sandbox patch.
Drop the Toolbox TestKit menu and kit Mono hooks, sceKernelIsTestKit
probes in util/daemon/bootstrapper, and client IsTestKit helpers.
BREW_TESTKIT_CHECK remains an unused IPC ordinal for compatibility.
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.
Serialize kstuff before daemon toolbox inject, wait for mprotect, avoid
ForceKill on ShellUI timeout, and disable Allow_data_in_sandbox ShellCore patch.