I have another idea for the undo redo stack,
effectively being able to roll back, make a change at a point in history then roll forward again.
I think this would be most impressive in bitmap editing software such as krita.
For instance,
setting the stroke parameters, say colour to keep it simple.
Drawing a line, doing some other stuff.
Then deciding that you want to change the stroke parameters for everything from a point in history. This should be a simple roll back roll forward and performance can be achieved if snapshots are taken. I don't think snapshots are such a requirement for vector graphics and DTP but would be needed for bitmap graphics along with GPU acceleration to make the whole things as smooth as possible.