Hi,
I was thinking that the Commands could serve as a wonderful source for implementing a generic undo feature.
For instance, a "reverse commandhandler" could then build the previous version of an aggregate to see what the previous Name was to create a Rename event to reverse a previous Rename command.
On the other hand, using an undo-stack as most applications do, probably will us get into trouble, since nothing is ever really undone, it just adds more commands and events and it will be complex to track where we are on the undo stack, especially when supporting undo and redo mixing.
Maybe CQRS+ES enables other/better functionality to help the user undo/redo mistakes?
greetings