Skip to content

Battery Intelligence 1.1.0

Choose a tag to compare

@hobbygen hobbygen released this 24 Sep 21:32
· 8 commits to master since this release

Battery Intelligence 1.1.0

A correctness release for the Battery Health Score. If you run 1.0.0, the score it showed you may have been wrong in either direction — a nearly new battery rated Poor, a nearly dead one rated Excellent. This release fixes the causes and discards the stored snapshots that cannot be trusted.

What was wrong

Three independent faults, any of which could invert the verdict.

1. The capacity unit flag was applied across sources. Windows exposes battery capacity through several APIs that disagree about units: WinRT always reports milliwatt-hours, while WMI and IOCTL report milliamp-hours whenever the pack sets CapacityRelative. Each source states which it uses — but the app took one source's flag and applied it to values it had selected from a different source. Capacity retention is full-charge capacity divided by design capacity, so when the two halves came from sources with different conventions, the answer was out by roughly the pack voltage: a healthy battery could read in the single digits, a worn one well over 100%.

Each source's values are now converted using that source's own flag, and both halves of retention are taken from a single source wherever one reports both. A pair that genuinely has to be assembled from two sources is graded Estimated rather than Calculated.

2. An impossible retention figure was clamped instead of rejected. Clamped low, that reads as "Poor" on a new battery; clamped high, "Excellent" on a dead one. Retention outside 15–125% is now graded Suspect, shown with that badge for diagnosis, and excluded from both the health score and the degradation trend — so the score reads Unavailable rather than confidently wrong.

3. The scoring model let usage habits outvote the measurement (now HealthScoreV2). Charge behaviour and charge-rate stability describe how you use the machine, not the condition of the cell, yet they were averaged in at full weight. A dead battery kept permanently on AC scored perfectly on both; a new battery actually being used scored near zero. And the degradation factor had no tolerance band, so the faster capacity settling that is normal in a battery's first months was scored as a fault, while an already-collapsed battery's flat trend looked ideal.

  • Habit factors can now only deduct, never add, and are capped at 5 points total.
  • The score is capped at measured retention — nothing can claim the pack holds more charge than it measurably does.
  • Degradation and both habit factors gained dead bands, so ordinary ageing and the noise in a short history cost nothing.
  • Weights are now retention 0.65 / degradation 0.20 / cycles 0.10 / thermal 0.05.

Your stored history

Migration V003 deletes every battery-health snapshot written by 1.0.0. An affected row's retention could land anywhere — including on a perfectly believable number — nothing stored in the row says which rows were affected, and the raw per-source values were never saved, so those figures can be neither trusted nor recomputed. They feed a trend fitted over 180 days, so leaving them would bend the health score for six months.

  • Your database is copied to battery.db.bak-v003 before the migration runs, so the discarded rows remain recoverable from that file.
  • The degradation trend and retention sparkline will be empty for about 30 days while fresh snapshots accumulate. The app says "collecting it now" rather than showing a blank chart.
  • The health score itself works from the first analytics pass after upgrading — it only needs a live reading.
  • Raw samples, sessions, power history, temperature history, app usage, settings and alerts are untouched.

Also in this release

  • The title-bar theme button showed a pen glyph. It now shows the theme in effect — a sun for Light, a moon for Dark, a monitor for System — and cycles all three, so "System" is reachable without opening Settings. It also follows a change made from the Settings page.

Install

Download BatteryIntelligence-Setup-1.1.0.exe and run it. Self-contained and machine-wide: no .NET or Windows App Runtime needed, one UAC prompt at install, the app runs unelevated. Installing over 1.0.0 upgrades in place and keeps your data.

The installer is not code-signed, so SmartScreen will warn on first run — choose More info → Run anyway. Verify the download against SHA256SUMS.txt if you prefer.

Requires 64-bit Windows 10 (1809 / build 17763) or Windows 11.

BatteryIntelligence-1.1.0-win-x64-self-contained.zip is the same build as a portable folder, for anyone who would rather not run an installer.