I previously assumed that LuCI Changes (/cgi-bin/luci/admin/uci/changes) is a "Git staging area" or temporary buffer. This page has no tooltips for "Apply" vs "Save & Apply".
/cgi-bin/luci/admin/network/wireless/radio1.network1 also doesn't have tooltips for "Save" vs "Save and Apply". I assumed that when changing options elsewhere, the actual configuration partition wasn't altered if you only clicked Save. Turns out "Save" overwrites configuration but doesn't reload until you reboot the router.
Maybe to avoid user confusion, you should incorporate explanations into the GUI, through hover tooltips. I assume https://lists.subsignal.org/pipermail/luci/2011-November/001152.html is correct:
If I understand correctly, [Save] pushes the change to /etc/config /*
and [Save & Apply] does the same plus reboots the router, correct?
It doesn ot reboot the router, it calls corresponding init scripts
defined in /etc/config/ucitrack .
If the above is correct, what's the difference between /cgi-bin/luci/admin/uci/changes "Apply" vs "Save & Apply"? The first "reloads from disk", while the second button erases all pending changes since /cgi-bin/luci/admin/uci/changes was loaded by the browser?
Currently /cgi-bin/luci/admin/uci/changes shows the new value of modified "options", unlike
git diff which shows both old and new values. I feel that showing both old and new values would be more intuitive, and informative (you know if you're creating new config options, or merely overwriting previous ones).
However if each config section has a hard-coded set of options, the above is useless. Even then, I still want to know the old value (useful even if I know it exists). Additionally I assume each config section does not have a hard-coded set of options, since /cgi-bin/luci/admin/uci/changes has a color for "Option removed".