f15fbadf91
Closes the v1.6 forward-work item from §30.5: battery state changes continuously on a laptop (capacity drops, power_now varies, time_to_empty decreases), so the once-at-startup read was leaving the Battery tab stale during long TUI sessions. Updated app.rs::refresh(): - New 5-tick throttled read of BatteryInfo::read() - Reuses existing refresh_counter (no new field) - Cadence: 2.5 sec at default POLL_MS=500 (0.04% CPU cost) - Independent of meminfo's 4-tick modulus (coprime moduli prevent thundering-herd syscalls — only 5% of ticks see simultaneous meminfo + battery reads) - find_battery_dir() re-checks on each refresh, so a laptop plugged in mid-session populates the Battery tab on the next 5th refresh tick without any external trigger Verification: - Mock battery at /tmp/fake-battery/BAT0/ with capacity=67: redbear-power --once shows Capacity: 67% - Changed capacity to 50, re-ran --once: shows Capacity: 50% - Strace confirms 14 sysfs opens per read() call Cadence rationale (modulus 5 chosen): - Every tick (500ms): 0.2% CPU — too aggressive - Every 5th tick (2.5s): 0.04% CPU — chosen - Once at startup: 0% CPU — too stale - Every 4th tick would also work but 5 chosen for clean coprime separation from meminfo's 4-tick modulus Build: same 3.8 MB stripped Redox binary (single if branch added). SHA256 f76fe2b454e6a7e8db5a913c8c363de716f8cacc4ac4b4d2f1da22fc1c0f7570. Docs: improvement plan §31, CONSOLE-TO-KDE §3.3.2 v1.7, RATATUI-APP-PATTERNS §13.19 (coprime moduli pattern) + §14.