Skip to content

v3.0.12 - fixes the blank power-saving home screen

Choose a tag to compare

@arena-ai-coding-agent arena-ai-coding-agent released this 16 Sep 03:29
· 102 commits to Rewrite since this release

Install over v3.0.9 or v3.0.11: first switch the mode off (door → Exit), then flash Axion-SPSM-v3.0.12-RMX3430.zip in ResukiSU → Modules, then reboot. Installing a different version while the mode is still on is what made your last log confusing: a v3.0.11 session was being exited by v3.0.9 scripts, so the exit reported a value as unrestored and ran its safety pass for 10 seconds.

Do not use v3.0.11. My mistake, and you found it: the blank screen.

What went wrong

When I rewrote the app's text for v3.0.11 I changed the line under the battery on the power-saving home screen from About %1$s remaining (text) to %1$d (a number), but the code still passed it the text it computes. The first battery reading threw inside the home screen — and that screen is your home, so turning the mode on left you with a blank screen and nothing to press. v3.0.7 had the same shape of failure, and it should never have been possible twice.

Fixed, and made impossible to repeat

  • The header reads "Super power saving mode" again. The strings file is rebuilt from the v3.0.9 text with only the new names added, instead of my rewrite that lost it.
  • The home screen can no longer go blank. If the layout cannot be drawn for any reason it builds a plain one in code — the mode's name and an exit button — and the battery update and app binding can no longer throw. A cosmetic problem stays cosmetic; it cannot take your home screen down.
  • A build-time check now pairs every string with the values the code passes it — text against text, number against number, and the count. This exact bug fails the build's test suite now (test 57), so it cannot come back a third time.

Also from your log

  • WARN cpu_cap did not return printed the same values twice and then forced the safety valves for 10 seconds. Values are now compared the way they read (a stray space or carriage return from a shell command is not a failed restore), and when something genuinely does not come back, the log names it: <target>: want [1800000] got [1100000]. Test 58 pins both directions.
  • Exit stays fast: no bogus safety pass.

What v3.0.11 was supposed to bring — all still here

  • An app added to one of the six slots is usable immediately; one removed goes back under the mode's limits; apps you suspended yourself stay suspended.
  • System apps are hidden from the app list, with a Show system apps switch and by-name search. Root apps and your own apps are always listed.
  • No build numbers anywhere in the app or the launcher, plainer option wording, and the phone test as a small Check in the top-right corner of Options that explains the five minutes and writes to /data/adb/spsm/state/probe.tsv.

Verified before shipping: 279 assertions across 58 cases, install suite 22/22, and the zip's scripts, module.prop and APK byte-identical to the built tree. The APK's own resources were dumped and checked: header Super power saving mode, About %1$s remaining, Check, Show system apps.