The generic rule
Changes that do not make data change on the board are generally not
undoable.
Examples of what is undoable
The ones marked with * may not yet be undoable but should be.
- creating or deleting drawing primitives on the board
- changing geometry of drawing primitives on the board
- changing metadata of drawing primitives on the board
- changing board metadata (e.g. size, name)
- routing style changes (*)
- layer stack changes (*)
Examples of what is not undoable
- changes made to paste buffers: those are not board data
- crosshair coordinate, style
- config setting changes, including but not limited to:
- grid settings
- GUI related settings (e.g. compact layout)
- fonts loaded/unloaded to/from the board
Cases that may look strange
- selection changes are undoable because selection is stored in
object flags which is covered by "metadata of drawing primitives".
- some of the config is saved in the board (the design role) -
changes in such config will mark the board changed and saving the
board may cause a diff, but they are not undoable because config
changes are generally not undoable