Made a little bit more progress. Stuck on this though... I need my Devices array to be independent of the actual settings until I actually save.
When a device is added to the js arrDevices, it is not added to the settings until the Save button is pressed. However, if you edit a device in arrDevices that has previously been saved to the settings, the settings update immediately, without pressing the Save button. Any ideas? It's like the settings themselves are observable objects, except I can't figure out where I'm accidentally tying the JS and Settings versions of this data together. https://github.com/stantond/OctoPrint-AirQuality/blob/ae687377d69e898a2ea393efd523789ac9b49e24/octoprint_airquality/static/js/airquality.js#L143