← All ideas
  • Published 22 May 2023

Increase default number of undo steps

Working with geometry nodes, I always get to a point where I need to undo more than 32 changes but am unable to do so because that is the default number of undo steps. The frustration this causes can easily be avoided by increasing the default number of undo steps to at least 128, preferably 256.

I realize that the number of undo steps can be increased in the system preferences, but that is easy to overlook when installing blender for the first time or to forget when re-installing it on a new machine.

100%

Development Status: Open

Upvote 2 Downvote 0
thomas.fritz.2000
22 May 2023

2 Comments

Lauloque

I'm jealous of Maya's infinite undo list...

I got curious as to how it is able to achieve it so I asked ChatGPT:

Input

Autodesk Maya, like many softwares, have an option to chose the undo queue size. Historically i guess it was because no software could store an infinite amount of steps to undo. Yet, for years now, Maya also have an option of infinite queue size. Maya is, or at least claims to, be able to perform an infinite amount of undos until the state of the last save. How does it achieve that, and why other softwares didn't so far?


ChatGPT

Autodesk Maya's ability to offer an "infinite" undo queue size is achieved through a combination of efficient memory management and incremental data storage techniques. While the term "infinite" is used, it is not truly unlimited, but rather allows for an extensive undo history until the state of the last saved file.

Maya, like many other software applications, utilizes a data structure known as a command stack or command history to store information about user actions. Each action or command performed within Maya is logged into this stack, allowing users to undo or redo their actions in a sequential manner.

The reason why Maya can handle a larger undo queue size compared to some other software is due to its optimized memory management. Maya employs memory-saving strategies, such as storing incremental changes instead of duplicating entire scenes or objects for each undo step. Instead of storing the complete state of the scene after every action, Maya stores the changes made by each command, allowing it to efficiently store a larger number of steps within the same memory constraints.

Additionally, Maya makes use of non-destructive editing techniques, where changes made to the scene are stored as a series of instructions rather than directly modifying the original data. This allows for more flexibility in undoing and redoing actions, as Maya can simply reverse or replay the recorded instructions to restore previous states.

The reason why not all software applications offer an infinite undo queue size is primarily due to resource limitations. Storing a large number of undo steps can consume significant memory resources, and some applications prioritize other aspects, such as performance or stability, over maintaining an extensive undo history. Additionally, the implementation of incremental data storage and memory optimization techniques requires substantial development efforts, and not all software developers have prioritized or invested in such capabilities.

It's important to note that while Maya's undo queue size can be set to "infinite," it is limited by the available system resources, such as memory, disk space, and the complexity of the scene being worked on. If the resources are exhausted, Maya may still impose practical limitations on the number of undo steps that can be stored.


Input

In the case of Blender specifically, what prevents Blender from having an infinite undo similar to Maya, and what could be done to get closer to that without requiring major refactorings?


ChatGPT

Blender, like any software, has its own design choices and limitations that affect the implementation of its undo functionality. While Blender doesn't offer an "infinite" undo queue size like Maya, there are a few reasons why this is the case:

  1. Memory Management: Storing a large number of undo steps requires significant memory resources. Blender has to balance the need for undo functionality with memory usage. A larger undo queue size would consume more memory, potentially leading to performance issues or running out of available memory.
  2. Performance Considerations: Blender aims to provide real-time interactivity and responsiveness, especially during complex operations or heavy scene rendering. Maintaining a larger undo queue could impact performance, slowing down the software's operations and potentially introducing latency issues.
  3. Disk Space: Undo steps can also be saved to disk, allowing users to restore their work even after closing Blender. However, storing a vast number of undo steps on disk can quickly consume significant disk space. Limiting the undo queue size helps manage disk space usage more efficiently.

To get closer to an "infinite" undo functionality in Blender without requiring major refactorings, some improvements can be considered:

  1. Incremental Undo: Implementing a system that stores only the incremental changes for each undo step, rather than duplicating entire scene data, can help reduce memory usage. This approach would allow Blender to store more undo steps within the available memory limits.
  2. Smart Undo: Introduce a smart undo system that identifies and prioritizes the most relevant or significant changes in the scene. Instead of storing every single action, the system could intelligently group related actions and allow users to undo or redo them as a batch, preserving memory resources.
  3. User-Configurable Undo Queue Size: Blender could provide users with the ability to adjust the undo queue size based on their specific needs and system resources. This would allow users to find the right balance between memory usage and the number of undo steps they require.

It's important to note that implementing these enhancements would still require careful consideration and testing to ensure they don't negatively impact performance or stability. The Blender development team would need to prioritize these features and allocate resources accordingly to improve the undo functionality while maintaining a balance with other important aspects of the software.

1
Lauloque

Hmmm I wish we had the ability to make foldable summary blocks 🤔