Just one little point, we "handle" the case of undo/redo interfering with other people's edits (because they made edit's over your work) by detecting if this is occurring then preventing the action. If we allowed undo's through other people's edits, we would have to undo all the remote users changes post the interfering change as well as the change itself in order maintain document integrity. I considered this too intrusive and went with the simpler solution which is easy to understand. Simply:
You can't undo/redo through a remote users changes.
You can type over then, delete them, put them in table, change font colour etc.. but you can't undo them.