Agreed. The crux of it is that every battery needs the type assigned correctly so the app can apply the right scaling and detection logic. This has to be a deliberate, user-owned step, since there's no reliable way for the app to infer chemistry on its own.
Accuracy matters here more than usual though. If a device gets mis-assigned (say, a normal alkaline tagged as Li-Ion), you could get a false urgent alert. Just as important, if an actual Li-Ion device gets tagged as something else, a real cliff drop could go undetected entirely. So if something looks off, the type assignment is the first thing to check and reassign.
We also need to land on whether this urgent alert should bypass Notification Snooze. Since the whole point is catching a battery that's about to die with little warning, I'm inclined to say it should bypass snooze by default, but curious what others think given that changes expected behavior for anyone currently relying on snooze to go quiet.
Edit Adder:
Separately, there's a related issue worth folding in here: some devices are functionally dead well above 0%. My smoke detectors run on 2 AA and start chirping around 78%, since the hardware has a conservative low-voltage cutoff for safety. Right now the app only treats sub-1% as Dead, so a device like this just shows as Fair/Good with weeks of estimated life left, when it's actually already telling you to replace it.
Two ways to handle that, depending on whether you control the driver:
If you can edit the driver yourself, the cleaner fix is rescaling the reported % at the source, so the device's real functional cutoff maps to 0%. That way Battery Monitor's health/drain logic is accurate automatically, no special-casing needed.
Not everyone has that option though, plenty of people are on stock or vendor drivers they can't touch. For that case, a per-device "dead threshold" override in the app makes sense, so devices like smoke detectors that are functionally dead well above 0% can still show accurate status without needing driver access.