The unlimited undo feature of pcb-rnd allows you to recover from most operations that materially affect you work. Calling <act>pcb_undo</act> without any parameter recovers from the last (non-undo) operation. <arg>ClearList</arg> is used to release the allocated memory. <arg>ClearList</arg> is called whenever a new layout is started or loaded. See also <act>Redo</act>.

Note that undo groups operations by serial number; changes with the same serial number will be undone (or redone) as a group. See <act>Atomic</act>.

The following arguments are intended for scripting:

- FreezeSerial: stop increasing the undo serial number
- UnFreezeSerial: stop increasing the undo serial number
- FreezeAdd: start adding operations to the undo list again
- UnFreezeAdd: start adding operations to the undo list again
- IncSerial: increase the undo serial number (operations with the same serial number are batched); a typical sequence for batching operations is: Undo(FreezeSerial); ...; Undo(UnFreezeSerial); Undo(IcSerial)
- GetSerial: return the current undo serial
- GetNum: return the number of undo slots currently allocated
- Above, sernum: perform undo of all operations with serial number higher than sernum