Most undo/redo implementations are a linear stack...

Most undo/redo implementations are a linear stack that breaks the second you add collaboration or branching history. This article walks through a CRDT-based approach that keeps undo intuitive even when multiple people are editing at once. “Undo, undo, undo… (repeat N times); copy something; redo, redo, redo (repeat N times); paste.” I’ve been there many many times.…