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.
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.
Split the Toolbox into clearer groups (install, payloads, game tools,
monitoring, connection, system, preferences, debug, about), update
i18n/docs/tests, and wire new monitor/account icons through bootstrapper.
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.
Drop StartOption and toolbox_auto_start (UI, settings, rest-mode disable,
USB override, and startup URI launch). Always inject the toolbox into
ShellUI without navigating to debug settings or any auto-open page.
Move OnPreCreate value tables into toolbox_values, support list value=
in ps5ui, and set the selected cheats repo from settings so the control
shows the real choice.
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).
Introduce ps5ui::Page so cheats, plugins, remote play, and plapps UIs are
built via explicit widget calls instead of hand-written XML strings, and
cover the builder with host unit tests.