It's possible that that 100% indicator is not 100% accurate due to component tolerance.
Do you have a USB power meter (anything like these) to check if your watch is really being charged after it reaches 100%? Or a multimeter and some USB cable /connector you can hack away to measure current.
I do have a power meter, plugged in now, I will report back later.
So, results are in:
The battery level says 100% earlier than charging terminates. But the "charge icon" - green plug near the battery -is shown until charging terminates.
The watch vibrates when charging is terminated (I guess there is a pin on the charge controller that tells the watch if it's charging or not), and the charge icon disappears as well.
I have the "Battery Level Widget (with percentage)", other widgets may behave differently, but the functionality is there.
I'm guessing because the battery widgets are calling https://www.espruino.com/Reference#l_E_getBattery
E.getBattery()which returns the battery voltage.
However, li-ion charging works in a two-phase process: constant current, and then constant voltage. It will try to start charging the battery until it reaches 4.2v and then stay charging at 4.2v while the charge current trickles down.
This is probably the reason why the watch may say 100% (which means the battery is at 4.2v) but can still continue charging as the second phase of the charge cycle isn't done yet.
thanks for all the responses. i was using a custom widget without the battery icon. the icon seems to be hooked up to Bangle.isCharging api, so thats what ill use to figure out when the battery is completely full. cheers!
Probably just your baseline load is much lower than the average.
basically after reaching 100% charge i can let my watch keep charging for a few hours longer. after that it will stay at 100% for an extended period before the percentage starts falling. if i stop charging it the moment it reaches 100, it doesnt last the full 5 days either. is that normal? do i need to calibrate my battery or something?