Broken UNDO

Hello,

I am not the only one suffering from broken Undo operations that can cause a lot of time loss while modeling. CG cookie has some videos with it happening live there. I am not sure why it is still not fixed as it seems pretty essential?

I would like to ask experienced users how they work around the issue.

I currently have the GLOBAL undo disabled and have stable behavior but am unable to modify object parameters on creation (e.g cyl 32 sides) nor can i undo transformations. Is there a way to have these also enabled without global undo?

I am also thinking of toggling global undo on and off with Python depending weather i am in object mode or edit mode; or perhaps Python based history truncating. I have to explore these and will appreciate advice from anyone who has tackled the problem already this way.

Thank you

Global undo in general is basically a hack that uses temporary saves of the .blend file, which has various disadvantages such as high memory usage.

Historically, having a better undo system has never really been a high priority and the code for global undo has barely been touched since version 2.35. In a sense, ten years later and Blender is still just a few rungs above not having a global system for undo at all. The historic pattern being that Blender development shows has never been all that great with priorities in various cases (in the opinions of the users). The priority thing also is generally a historic weak point in FOSS that has only in the last few years started to get better.

Hopefully with a heavier focus on usability coming into play now, the undo system could become a target for some refactoring. The only thing I think that could bring the system into a fully usable state is the development of an entirely new undo management system that uses more of a .diff approach for the global system (and that won’t be an entirely trivial thing to develop either).

A truly workable undo system has to be built in from the start of any application, so don’t look for a serious fix to this any time soon. Blender would have to be redesigned at a base level and I doubt that’ll happen.

I once designed an undo system for a word processor and it’s a hair-tearing experience even for something as simple as that. But one thing I learned is that the best approach is OOP. I don’t think Blender is.

Thank you kindly for explaining! This makes the behavior far more predictable so i think i’ll be able to learn to avoid the pitfalls. Tnx