Skip to content

2.0.0

Choose a tag to compare

@github-actions github-actions released this 28 Aug 06:56
· 13 commits to main since this release

Time Machine used to live in the sidebar. That panel is a quick look: what changed, when, and a diff. Useful, but narrow — reading an old version properly, comparing it against what you have now, and deciding what to bring back all happened in a strip a few hundred pixels wide.

2.0 adds a second way in, and rebuilds how you move through a note's history.

Requires Obsidian 1.13. See Before you update below.

The past view

Run Time Machine: Compare versions side by side and your note opens twice: on the left, the note as it was at whichever version you pick; on the right, your real note, live and editable. Drag the divider to resize.

Open it from the command palette, the two-columns ribbon icon, a right-click on a note in the file explorer, a right-click inside the editor, or the Side by side button in the panel header — which carries your current selection across so you don't lose your place. On mobile, or when the window is too narrow to split usefully, it opens as a full-width tab instead.

The pane follows whatever note you open, like the sidebar does. Click the pin to hold it on one note while you move around the vault.

A version rail instead of a slider

Sliders lie about history. Ten versions from this morning and one from last March got squashed onto the same track, and the March one became a pixel you couldn't hit.

Every version now gets its own mark, all the same size, none merged away:

  • Grouped by age — Today, 7 days, 30 days, then by year. Click a heading to jump to the newest version in that group.
  • Keyboard navigation — focus the rail, then ←/→ to step one version, PageUp/PageDown to move ten, Home for the newest, End for the oldest.
  • Source at a glance — git commits are tinted and carry a cap along the top edge; file-recovery snapshots are plain. Colour alone would have been a bad idea; the shape means it still reads if the tint doesn't.
  • Hover any mark for its position, exact time, and for git, the commit and its message.
  • Long histories scroll, keeping the selected version in view.

Below the rail, the selected version shows where it came from: a branch icon with short hash, message and author for a commit, a clock for a file-recovery snapshot.

Old versions don't run their code

Rendering an old version of a note means rendering whatever was inside it. If that version contained a dataviewjs block, rendering it would execute that code — not against your vault as it was back then, but against your vault as it is today. Including code you deleted from the note precisely because you didn't want it running any more.

So Time Machine doesn't run it. Executable blocks in an old version are shown as plain source, and the pane tells you how many it skipped. Turn on Run code in old versions in settings to opt back in.

"View an old version" sounds like a read-only operation. It isn't, unless someone makes it one.

Also new

  • Save a version as a new note — the ⋮ menu restores the whole version, copies it to the clipboard, or writes it out as a new note beside the original. Useful when you don't want to overwrite anything and just want the old text back in your vault.
  • Show changes flips the pane between the old version and the diff, so you can go from reading to comparing without leaving the view.

A settings screen rebuilt from scratch

The settings pane is no longer drawn by the plugin. It's declared, and Obsidian draws it. That sounds like an implementation detail; here's what it changes for you:

  • Settings are searchable — every name and description is indexed, so typing "git" in the settings search finds the Git options wherever they live.
  • Keyboard navigation, focus handling and screen-reader labelling are Obsidian's now, so they behave exactly like the rest of the app's settings instead of approximately like them.
  • Options are grouped under Past view and Git integration, with a live Git status row telling you whether your vault is actually inside a repository.

Before you update

Time Machine 2.0 requires Obsidian 1.13, which is what makes this a major version rather than a minor one.

The declarative settings API arrived in 1.13, and it's all-or-nothing: either the whole settings pane is declarative, or none of it is. There's no partial adoption. If you're on an older Obsidian, the community catalog won't offer you this update, so nothing breaks — check Settings → About and update Obsidian first.

Your existing settings carry over untouched.

Install

Update from Community plugins in Obsidian, then open a note and click the two-columns icon in the ribbon.

For a manual install, download main.js, manifest.json and styles.css below into <Vault>/.obsidian/plugins/time-machine/.

📖 Documentation · 🐛 Issues · ❤️ Support the work


Full changelog (1.5.0 → 2.0.0)

Features

  • plugin: add the past view (#9) (2fe2241)
  • plugin: replace the timeline with a version rail (57c32fd)
  • plugin: refine the version rail (fb5cf3b)
  • plugin: neutralise executable blocks before rendering old versions (905a277)
  • plugin: declare settings via getSettingDefinitions (Obsidian 1.13) (0f5974d)

Bug fixes

  • plugin: keep every version reachable in a large history (28b55ce)
  • plugin: follow the active note and stop pinning the tab (cd55ae4)
  • plugin: separate the comparison mode options (771685a)
  • plugin: truncate long filenames instead of overflowing the header (33316f6)
  • plugin: close three neutralisation bypasses and split the async guards (775c5de)
  • plugin: discard stale async results and guard hunk restore (d55c353)
  • plugin: address the adversarial review of the past view (76f4c3f)
  • plugin: restore the follow button and stack the support block (1bf87f5)
  • ui: move the settings-stack rule out of the components layer (d5a19dd)
  • build: align with the catalog reviewer's archive, ruleset and audit (f932f13)

Full diff: 1.4.0...2.0.0