Files
RedBear-OS/local/docs
vasilito f15fbadf91 redbear-power: v1.7 — per-tick battery refresh (closes v1.6 forward work)
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.
2026-06-20 17:55:00 +03:00
..