As it currently stands it is very easy for a developer to modify the input panel either manually or by pressing the "Remove traces with highlighted lines" button. When this happens the user may accidentally loose their work and have to start over to get it back to a previous state.
By implementing an undo button users will be able to not only correct mistakes but also test modifying the input panel to see what happens without the fear of loosing their data.
There are two possible ways to implement an undo button in Perfume:
Only keep track of the input panel and re-infer the model and invariants each time
Should work alright (and save less data locally) however re-inferring the model and invariants may yield different results.
Keep track of the entire JSON "data" object
We will always have the same model and invariants whenever the users presses the back button however if a large JSON object is being used the system may run out of space (or we may have to limit how many times the back button may be pressed)
On the topic of a back button we should also allow a "forward" button to undo the back button.
As it currently stands it is very easy for a developer to modify the input panel either manually or by pressing the "Remove traces with highlighted lines" button. When this happens the user may accidentally loose their work and have to start over to get it back to a previous state.
By implementing an undo button users will be able to not only correct mistakes but also test modifying the input panel to see what happens without the fear of loosing their data.
There are two possible ways to implement an undo button in Perfume:
On the topic of a back button we should also allow a "forward" button to undo the back button.
[Issue created by stanleyrya: 2016-04-15]