The battery gauge cannot be anywhere near accurate.
Runtime can be calculated from battery capacity and current draw.
Okay a device can measure the current draw.
But no device can know the battery capacity.
I can insert a CR123 with 150mAh (poor battery) or with 750mAh (new battery) and the device would not know it.
Other than that, the flashlight looks nice.
oh yes it is possible to run attacks, load pulses...etc on the cell and measure responses/impedance
and get better than 90% accurate predictability
but that is very smart chip to implement and ...it drains the cell during testing phase