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>
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.
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.
- Route orion_notify through orion_notify_set_send so injectees never CALL a
dlsym function-pointer as code (SIGSEGV after cheat toggle notify).
- Skip stock SettingPage.OnPressed for dynamic id_cheat_* (Consumed).
- Derive raw ELF launch/PID keys from basename stem; stop writing plugins/.elf
when titleID was misread from ELF magic.
- Keep UpdateImposeStatusFlag detour disabled on 11.600 (bad trampoline);
stop remote-play pairing loop when leaving the remote_play page via GMRS.
- Drop mprotect on Mono heap byte[] when building toolbox MemoryStream; free
prior gchandle on replace (fast/notification DebugSettings opens).
- Tighten plugin/payload filename filters and align ELF tid/PID paths.
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.