There is no way that we can automatically save on power down, you would need to detect power loss in your PSU and handle it. Also, don't forget that on ESP boards the EEPROM is a flash emulation, it requires a call to its commit() method after menuMgr.save() has been called.
Event callbacks do not send the value, they send only the ID of the changed item, instead you just get the value directly from the menu item. EG if you have a root level analog item called Volume, you'd do menuVolume.getCurrentValue() to get it's value.
-- copied from an earlier post:
The best place to save is either to provide a save function somewhere on the menu, or to detect the power down state and then save during the power loss detection. See this page.
https://www.thecoderscorner.com/electronics/microcontrollers/psu-control/detecting-power-loss-in-powersupply/
You can also run a timer, once every few minutes and detect if anything has been committed using a commit handler, if it has then save the changes to ROM. See the commit handler docs:
https://www.thecoderscorner.com/products/arduino-libraries/tc-menu/menumanager-and-iteration/
However,
never attempt to save to EEPROM in a callback, it will destroy your ESP's flash in days with a rotary encoder.