detail
USR369's earlier live-rescale fix (D826) was logically correct but incomplete: it only applied to NEWLY added ingredients going forward. Any add-in already sitting in the list (or saved/restored from localStorage) from before that fix has the old {name,amount,unit} shape with no isPct/pct field at all -- addinLiveAmount() correctly checked isPct and returned the frozen .amount for these, exactly as designed, but nothing ever converted these legacy items INTO the new format, so they stayed frozen forever. USR369 worked around this by deleting and re-adding, which DID create a correctly-live new entry -- but the Add button always pushed a new array entry rather than replacing an existing one by name, so the OLD frozen entry stayed on the list too, alongside the new one -- exactly matching his report ('it didn't delete or change what was already there'). FIX: added migrateLegacyAddin(), called as the first step inside addinLiveAmount() (which itself runs first thing in every renderAddIns() iteration) -- converts any item missing isPct into the pct-based format using CURRENT flour as the baseline, so the displayed number doesn't jump, and it's live from that point on. Also changed the Add button to look up an existing entry by name (case-insensitive) and REPLACE it instead of pushing a duplicate, with a status message confirming the update.