Coming back to the level editor for Fire Exit that I didn't touch for a long time, I got some undo-redo working. Every one of these sub-editors create their own small snapshot on each action, which is added to a common undo stack. I originally wanted to go for the action/reverse action approach, but for an already existing editor first written without undo-redo in mind, it felt kind of overwhelming to hunt each possible action. Also that's my first attempt at implementing an undo-redo feature from scratch.
I also reworked other parts of the game (not shown here), the format for storing a compiled level or campaign is almost nothing like what it was before (it was full of hand-tweaked micro optimizations that were mostly irrelevant and required a lot of work by hand... Now I leveraged my code generator that can turn a big struct with arrays and pointers into a single block of memory, with relative pointers if needed.)