Really makes it fun when you’re trying to do a “repeat”, but need an operation 3 steps back (and not something like “user clicked on a thing, or changed a mode.”)
I’ve also noticed that if i Undo, it sort of clears the history stack. I generally resort to copy of command console print lines, and paste them into notepad. Basically an external “history list”, in case the event history decides to take a leave.
Yeah one of the issues with the (semi-functional) extension I wrote is that for whatever reason the history is lost whenever I trigger an undo step. Yet the Undo History in the Edit Menu is still there. So I think we are seeing the same thing.
One of the variations of the extension I had at one point would call a function to dump the undo stack to the console, and I think that worked better. It’s actually not a terrible solution for me on Linux since I’ve generally got a CLI up anyway, but I wanted something nicer, and it would be cool to release an extension like that out to the community.
I should work on getting what I do have onto a public Git repo. Not that it’s much yet but I guess it’d help out Failxxx or anyone who wants to try an API upgrade PR. I don’t think I’m going to get to that point myself, I just have too much going on right now to re-learn C.
Hey! Has there been any further progress down this rabbit hole? I was planning something along these lines myself when I found this thread from last year.
@David_Easley I do have an alert on this thread in case someone wants to take this up, but unfortunately nothing has happened to push this forward that I know of.
I am sort of in between projects now so in theory I could go back to working on the Python plugin part of this, but my CPP is about as rusty as ever. (Not to mention Blender’s DNA/RNA system has a bit of a learning curve.)
It’s surprising that the feature I’m looking to implement isn’t more commonly asked for. I’ve been using Blender for a while now, but I still frequently open up the undo/redo history tab just to see what state I’m in.
Since the UI doesn’t always give you obvious feedback for every operation, you could either have an operation that was accidentally executed that you aren’t aware of, an operation you thought you cancelled but actually didn’t, or you didn’t hit undo enough times to go back as far as you intended.
What I need is obviously implemented right up there in that undo history menu, but it’s been elusive to get at in Python.
Then I am more than happy to pick up the gauntlet and get it over the finish line. My CPP expertise is dated, but I have the time to brush up right now. I’d like ultimately to implement a History Editor pane based on the Info Editor pane changes Andrew Price proposed at Blender Con 2024.
But I think the right place to start either way is with fully exposing Undo/Redo/History steps to the python API.
Ha! That’s the guy I initially learned Blender from on YT.
Yes, what he suggested there sounds just like what I’m wanting to build. I’m surprised he didn’t mention anything about checking the undo history log… maybe the other thing he mentioned is a little better. But this is basically the same concept.
I think what he proposed goes a bit beyond what just Undo/Redo access affords, but I think it is a necessary step and gets us most of the way there.
Getting all the way there will mean surfacing stroke tracking/shortcut triggers in a meaningful way with the each history step, but I haven’t been through any of that code as much as I have on the history side, so I can’t say exactly where to proceed on that, yet.
Yeah, mostly the same for me and others who I’ve seen with workarounds for no undo/redo steps access.
I think adding full undo/redo/history steps access in the API (and especially the ability to hook into the history log for updates) is the first PR I’ll work on developing.