# "Undo" alternative



## Deraile (Dec 15, 2019)

Hi, first let me present my utmost respect for the awesome piece of software you guys make available for all to use, and for free! It is truly great.

Now, I've been using it for a while, both for streaming and recording footage, and needless to say, I love it. But on a couple occasions, it left me a bit frustrated, and those few times, it's true that an Undo feature would've easily avoided the frustration.

However, while I agree that an Undo feature would be a splendid addition to OBS, I think revisiting the backup feature might be a quicker fix while the Undo feature is in the oven (I've seen in the 'ideas' site that the feature is "planned"). Let me explain:

The backup feature I'm referring to is the %AppData% json.bak files found in /obs-studio/basic/. The files that store a snapshot of individual scenes and profiles. From quick testing, these files appear to update every single change you do to your scene. More specifically, there's one for the latest change, and one for 2 changes back (change happens: file.json is dumped into file.json.bak => file.json is updated with latest change => repeat). And so it's great that there's an active working file and a backup version of it. I guess it's useful for crashes where the main file might get corrupted? In any case, my suggestion has to do with adding a third layer to these changes. A file that only updates when OBS is launched.

Here's a mockup of my own experience:
Change setting 1, change setting 2, delete thing X, add thing Y, add thing Z. Realize you didn't want to delete x thing (suppose that thing was a scene), realize you owned yourself. The backup available (CurrentSceneCollection.json.bak) isn't designed for that, so it only has the version of the collection where you added thing Y but didn't add thing Z yet. Scene X is gone forever.

Upon realizing I screwed up, I immediately went on the internet to search for a 'live backup file', in case closing OBS/restarting OBS would make my hopes of salvaging my carefully set-up scene vanish. Turned out there indeed IS a backup file, but it only stores 1 action in the past. Now, an undo feature would have avoided the tragedy indeed. However having a backup of... my last session essentially, would have achieved the same. It's pretty much like saving an open document and loading it, where saving is quitting OBS and loading is launching OBS. Big changes done during a single session cannot be reverted to because they have not been "saved", just like opening a document, working on it and never saving it would mean you'd have nowhere to go back to. Like at the moment, OBS is basically on a "every action" autosave, which is good, except when you don't have an Undo feature to complement it. So this is why I'm suggesting this.

You could also have the option to perform the "save" manually, to snap that backup "earlier" instead of requiring OBS to be closed, but this is outside the scope of what I'm suggesting (simple upgrade to an emergency feature); You could achieve the same (save snapshot of settings) by fetching the backup file at the moment you desire.

I've searched around before posting this because I didn't wanna create a dupe, but even though I found a few that did resonate with my issue, they were all so old I'd be afraid of necroposting, plus I actually have a new/different suggestion, so please tell me if I should've posted it there instead. These are the threads I found:
https://obsproject.com/forum/threads/help-my-scenes-just-got-deleted.54773/
https://obsproject.com/forum/threads/undo.87200/
https://obsproject.com/forum/threads/undo.111052/

I've also seen the Undo suggestion in the ideas site, and so I was glad to see it tagged as 'planned'. Thank you for considering this feature, can't wait for it to eventually pop into a release.

*tl;dr:*
Please add a secondary profile/scene collection backup file that only updates when OBS is launched instead of every change. E.g.:
SceneCollection.json -- Is updated every change.
SceneCollection.json.bak -- SceneCollection.json is stored here before every change to itself.
SceneCollection.json.bak2 -- SceneCollection.json is stored here only when OBS closes; essentially a "last session" snapshot.

I'm suggesting this because it feels like it may be easier/quicker to implement than an Undo/Redo system, while still being useful in many scenarios.
Sorry for writing a book, this how I be :v


----------

