Performance & reliability pass on top of the previous release
(commit fee6c4b). Base is still OnionUI 4.4.0-beta; updates arrive via OTA as usual.
What changed
- Menus no longer burn CPU while idle — GameSwitcher, Tweaks, Play Activity,
Themes, Package Manager, Battery Monitor and prompts now sleep between frames instead
of spinning a core at 100 %. Cooler device, better battery life in menus. - Smoother GameSwitcher — screenshots are decoded in the background and the
neighbouring entries are preloaded, so fast scrolling doesn't stall. - Volume & brightness changes are saved reliably — saved half a second after your
last change (previously they could wait for an unrelated key press, or be lost on
power-off), and returning to the original value is now saved too. - Settings survive power loss — system.json, keymap.json and config files are written
atomically; a dead battery mid-save no longer leaves empty settings. - Scheduled blue light filter is lighter — checked inside keymon instead of running a
script every 15 s; buttons no longer freeze for a few seconds when the schedule kicks in. - Faster game launch and exit — no Play Activity cache scan for games you've played
before, fewer SD card flushes in the launch loop.
Fixes (all also present in upstream OnionUI)
- Stack overflow in keymon when using the CPU clock hotkey.
- Out-of-bounds write in the suspend process list.
- Suspend could misread processes whose name contains spaces.
- Blue light script could start twice (lock race).
Under the hood
- keymon: no global sync on key presses, no shell spawns on key paths,
cached config flags, single /proc scan for state detection. - Play Activity DB: file_path index, TRUNCATE journal, busy timeout.
- runtime.sh: 1 sync per game/app exit instead of 4 per loop.
- Build: parallel
make -j, setup re-runs when static files change,
RetroArch package reused when unchanged. - docs/ retired — the README is now the single reference.
Known limitations
- Timings are analytical; this release has not been benchmarked on hardware.
If something breaks (sleep/wake, volume not remembered, blue light, GameSwitcher),
please open an issue with your device model (Mini / Mini+ / Flip).