Version History: Easier comparison, Automated cherry picking, & Dynamic timeline sidebar

Issues with Current UI-UX

  1. Current version being displayed in the main Version History explorer pane by default is not the most useful.
  2. Additionally, particular versions cannot be easily compared to each other.
  3. Cherry picking from versions is slightly cumbersome. It requires selecting the desired text within a version, copying it, navigating out of the Version History explorer, and pasting it into the desired version (which needs to be restored if it isn’t the current version).
  4. Only a couple of versions in the sidebar are displayed by default despite many more versions being available.The user is required to click ‘Load more’ to present options for viewing older versions, but this only presents the user with 2-3 more versions again despite there being many more available. This necessitates a frustrating amount of clicks to get to older file versions.

Proposed Solutions

  1. Instead of the current version being displayed upon opening Version History explorer, a message to select version should be in that pane.
  2. The message above should also specify that once a version is selected, another version can be selected to open it in another tab or in a split view pane so that the versions can be displayed side by side. This functionality should be made possible by dragging and dropping that version to the side of the currently selected version tab or pane (respectively) or by selecting the option to open in a new tab or split view via the context menu of the version in the sidebar. This would allow for easier comparison of versions. Furthermore, versions should be pinnable within Version History explorer.
    2.a. Overall, the functionality suggested in this point mimics the same functionality available in the main obsidian tab/pane system.
  3. Upon selecting text in a version, there should be a context menu option, integrated button, and/or a hotkey to cherry pick that selection to another version. When that cherry pick option is selected, the user should be presented with 2 or 3 options. If there are not any other tabs or panes open in Version History explorer, then 2 options: “a)” = append to current version; “b)” = select another version in the side bar to be restored and for the selection to be appended to. If there are other tabs or panes open in Version History explorer, then 3 options: “'a)” and “b)” from above become options “b)” and “c)” (respectively), and a new option “a)” is to select which version displayed in the other tab / panes within the Version History explorer you would like to restore and append the selection to.
  4. Instead of only a couple versions in the sidebar at a time, the sidebar should be filled dynamically, as a range of selectable time periods binned dynamically according to the dates for which there are versions.
    3.a. Clarification: If a file has versions in multiple years, the side bar will contain an option for each year. The entire length of the sidebar divided by the number of years would be equal to the length of the option. The text for each of the years centered in the middle of the option. So, if a version has versions in 2 years (e.g. 2017 and 2024, the years don’t need to be consecutive), the sidebar would have have 2 options that are each half the length of the side bar. The options should have a minimum size to allow for the option to have padding around the text, so above a certain number of years of versions (probably will be around 10), the sidebar becomes scrollable to see the earlier years. Once the user selects a year, a deeper side bar layer will appear that does the same, but for months. Then days. Then hours, and so on (15 minutes? etc.) until there is exactly 1 version to fill up the side bar. Of course, there should be a back / forward navigation buttons at the top of the sidebar, ideally with programmable hotkeys.
3 Likes

It would further be amazing if one could select arbitrary files for diffing. This would be especially useful if files got messed up using a different syncing method (such as syncthing, which generates sync-conflict files).

1 Like

Sorry, I’m unsure what this means. Could you explain / give an example? I trust that your idea would be beneficial considering you can already think of a use case!

  • Is what you’re suggesting a reiteration of the below capability I requested for being able to select / compare any two (any=arbitrary?) file versions? :
    • Proposed Solutions, 1. " …a message to select version should be in that pane."
    • Proposed Solutions, 2. “…once a version is selected, another version can be selected to open it in another tab or in a split view pane so that the versions can be displayed side by side.”

Thanks for your comment. I look forward to hearing more about your idea.

Almost, yes :slight_smile:
I would love this feature to be able to not only compare different versions of a file, which would be represented by different files in the file system but also to be able to take completely unrelated files and compare (to “diff” is a term common in programming domains) them.

Syncthing for example can create conflict files which contain the state that could not be merged automatically. In those cases, the conflict is not a version of the original file created by Obsidian and would (as far as I understood) not be covered in the scope of the feature you requested.