Undo/Redo system was implemented long time ago, it is quite simple and solves the problem but has a few downsides.
Until now it worked by doing a copy of the complete circuit before a change, to Undo/Redo it just removes everything and loads the previous copy of the circuit the same way you load a circuit.
This is very memory inefficient because it stores a copy of the whole circuit for every change, so it uses a relatively big amount of memory.
It is also slow as it removes and loads the whole circuit for every Undo/Redo step, specially for big circuits and specially for slow computers.
In addition some information of some components or the circuit itself can be lost.
So I started a new Undo/Redo implementation that only stores the last changes (trunk Rev 1408).
This is much more complex and will require a fair amount of work to be completed, but it is something that had to be done and this is a good moment as a new cycle is started after the split of version 1.0.1.
Until now it worked by doing a copy of the complete circuit before a change, to Undo/Redo it just removes everything and loads the previous copy of the circuit the same way you load a circuit.
This is very memory inefficient because it stores a copy of the whole circuit for every change, so it uses a relatively big amount of memory.
It is also slow as it removes and loads the whole circuit for every Undo/Redo step, specially for big circuits and specially for slow computers.
In addition some information of some components or the circuit itself can be lost.
So I started a new Undo/Redo implementation that only stores the last changes (trunk Rev 1408).
This is much more complex and will require a fair amount of work to be completed, but it is something that had to be done and this is a good moment as a new cycle is started after the split of version 1.0.1.