Jump to content
You must now use your email address to sign in [click for more info] ×

History of object


Recommended Posts

Artem that is an INSANELY great idea! Finely granular or object-based history (undo/redo) +100

 

 

It can be very cool feature if I can select object and view history of his changes ignoring general history. What do you think about it?

2021 16” Macbook Pro w/ M1 Max 10c cpu /24c gpu, 32 GB RAM, 1TB SSD, Ventura 13.6

2018 11" iPad Pro w/ A12X cpu/gpu, 256 GB, iPadOS 17

Link to comment
Share on other sites

an INSANELY great idea!

 

Or an insanely insane one! Complex drawings can have literally thousands of objects: I don't think it's generally useful, let alone practical, to have the software keep track of every little change to every single one of them.

Alfred spacer.png
Affinity Designer/Photo/Publisher 2 for Windows • Windows 10 Home/Pro
Affinity Designer/Photo/Publisher 2 for iPad • iPadOS 17.4.1 (iPad 7th gen)

Link to comment
Share on other sites

Your history have already write all info about all object. And I want using only history info about one object.

And I'll bet. There have been cases when you made a number of revisions, but decided to revert back without overwriting the new actions. And in this case such history can help you.

 

Now, of cource, I can use hack. Revert history to needed state of object cmd+c, then to end of history and cmd+v. But it is not such content-depending

Link to comment
Share on other sites

Artem I'm not sure if this is in the Feature Request forum (in on my smartphone) but you should DEFINITELY add this idea. Ad far as UI, It could be a simple switch in the History palette to switch from document History to Object history...

 

Your history have already write all info about all object. And I want using only history info about one object.

 

And I'll bet. There have been cases when you made a number of revisions, but decided to revert back without overwriting the new actions. And in this case such history can help you.

 

Now, of cource, I can use hack. Revert history to needed state of object cmd+c, then to end of history and cmd+v. But it is not such content-depending

2021 16” Macbook Pro w/ M1 Max 10c cpu /24c gpu, 32 GB RAM, 1TB SSD, Ventura 13.6

2018 11" iPad Pro w/ A12X cpu/gpu, 256 GB, iPadOS 17

Link to comment
Share on other sites

I wonder if it would be possible for the history steps to be independent of each other? Here's my idea: If the steps are independent and the user could name the steps so you know what object they pertain to, then if you wanted to you could uncheck a step you wanted removed without affecting the rest of the art. I say uncheck because if you wanted to you could recheck it to put the step back or if you did something else to the object at that point, the checked step would be removed and your latest action would be recorded. Don't know if it's too complex to be done and it would require the user to name each step to make it work.

 

Just a thought...

Link to comment
Share on other sites

  • Staff

Don't want to put too much of a damper on this....

 

While it sounds wonderful, a non-linear undo history is very very difficult to implement.  Our history stack relies on deterministic state at each stage - it's the only way to make sure of data integrity and predictability without doing a lot of costly validation.  If you could optionally undo, remove or change random bits of the history the deterministic state does not exist - a previous history change invalidates the predictable state of the document later in the history.

 

Many years ago I worked on a project where someone insisted we tried to implement non-linear undo.  It was a total failure.  We went back and rewrote everything with a conventional linear undo stack.

 

Some tools implement something similar to non-linear undo through modifier stacks, but these are notoriously hard to understand from a user perspective.

SerifLabs team - Affinity Developer
  • Software engineer  -  Photographer  -  Guitarist  -  Philosopher
  • iMac 27" Retina 5K (Late 2015), 4.0GHz i7, AMD Radeon R9 M395
  • MacBook (Early 2015), 1.3GHz Core M, Intel HD 5300
  • iPad Pro 10.5", 256GB
Link to comment
Share on other sites

Just trying to get my head around how this would work, Ben.

 

Do y'all keep track of each objects ID in AD? If so, if there is an object selected on the artboard, would it be possible to filter the history by object ID? And if nothing is selected, then present the history fully as now?

 

Mike

Link to comment
Share on other sites

Ben, thanks for the explanation. So history is done based on the changes made to the document and the deterministic state is the total document? I gather it's not practical to record history based on objects instead of documents? So if I understand your explanation, if I delete an object and the history is non-linear (or object oriented), there isn't a way to easily validate that deletion at a later point in history. Without linearity, the means that the only way to handle history would be to basically replay all the previous steps up to the selected point? And I presume that the issue is compounded since history can be saved within the document and that document can be opened in multiple apps.

Link to comment
Share on other sites

  • Staff

We generally use pointers to identify an object. They are unique and we don't have to use arbitrary ID values that require special management.

 

Unfortunately, identifying what has been changed in a given command can be quite involved.  Without giving away too much about our architecture, our commands follow a number of different forms: some do one-off calculation and swap data, others have to do some work, in order to do/undo.  In order to work out if object X is affected by a command would require knowledge of how object X exists as it is affected by a sequence command.  What is logically an object that goes through changes might actually be a totally different memory object under the hood between commands.

 

So, tracking an object through history is not so straight forward.

SerifLabs team - Affinity Developer
  • Software engineer  -  Photographer  -  Guitarist  -  Philosopher
  • iMac 27" Retina 5K (Late 2015), 4.0GHz i7, AMD Radeon R9 M395
  • MacBook (Early 2015), 1.3GHz Core M, Intel HD 5300
  • iPad Pro 10.5", 256GB
Link to comment
Share on other sites

  • Staff

Ben, thanks for the explanation. So history is done based on the changes made to the document and the deterministic state is the total document? I gather it's not practical to record history based on objects instead of documents? So if I understand your explanation, if I delete an object and the history is non-linear (or object oriented), there isn't a way to easily validate that deletion at a later point in history. Without linearity, the means that the only way to handle history would be to basically replay all the previous steps up to the selected point? And I presume that the issue is compounded since history can be saved within the document and that document can be opened in multiple apps.

 

Something like that, yes.   ;)

 

Trivially, if command A creates an object, and command B sets that objects colour, what happens if I remove command A from the history???

 

Non trivially - with a more complicated scenario - it's a total nightmare.

SerifLabs team - Affinity Developer
  • Software engineer  -  Photographer  -  Guitarist  -  Philosopher
  • iMac 27" Retina 5K (Late 2015), 4.0GHz i7, AMD Radeon R9 M395
  • MacBook (Early 2015), 1.3GHz Core M, Intel HD 5300
  • iPad Pro 10.5", 256GB
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...

Important Information

Terms of Use | Privacy Policy | Guidelines | We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.