Open KnowledgeOpen Knowledge
Guides

Timeline

Open Knowledge's Timeline panel — every revision, auto-save, and silent recovery checkpoint for the current document.

Every document in Open Knowledge has a Timeline. It's the single surface that answers "what did this document used to look like?" — covering user-triggered Save Versions, per-writer work-in-progress commits, upstream git pull imports, and the automatic checkpoints the editor writes when a concurrent-edit race trips the CRDT's structural limit.

The panel lives next to the editor inside the document panel, alongside the outline, backlinks, and graph tabs. Open the Timeline tab from the document panel header (the clock icon).

Row types

Each row shows an author, a relative timestamp (e.g. "3 min ago"), and a kind-specific icon:

  • Diamond — "Save Version". A user-triggered snapshot. Expand the row to inspect the diff against the current state; the per-row Restore icon at the right of the header writes that snapshot over the current document as a new edit.
  • Amber alert-triangle — "Auto-saved before a concurrent edit (size)". The editor wrote this checkpoint automatically right before a concurrent-edit merge finalized. If you notice a paragraph blink or lost text, this is where it's preserved. See [[collaboration-recovery]] for the full flow.
  • Sky file-archive — "Recovered from an external change (size)". An external writer (another process, a git checkout, a file-watcher sync) overrode an in-memory draft. The draft is preserved under this entry.
  • Writer chip (bullet + color) — a per-writer WIP (work-in-progress) auto-commit. Individually noisy; the Timeline folds consecutive same-writer runs. When an agent provided a summary on its write, the row carries one bullet per summary underneath the author line — see "Agent summaries" below.
  • Upstream arrow — a git pull or equivalent brought new content in from outside the editor.

Agent summaries

Agents writing through MCP (write_document, edit_document, rename_document, rollback_to_version) can attach a short summary describing the intent of the edit. Summaries appear as bulleted text under the author line on the WIP row — one bullet per summarized write, oldest first, capped at 80 characters each. The first bullet is always visible; additional bullets collapse behind a "Show N more" expander.

The doc list on the row (e.g. foo.md · bar.md) is still shown as ground truth: it lists every document the commit touched, regardless of whether each got a summary. Bullets enrich that list — they don't replace it.

Legacy commits, WYSIWYG edits, auto-saves, and rollbacks driven by the in-editor Restore icon have no bullets. For rename and rollback calls made through MCP, the server fills in a default summary — Renamed <from> → <to> or Restored to <sha-short> — so those rows are self-describing even when the agent didn't provide one.

Inspecting changes

Click anywhere on a Timeline row (except the Restore icon) to expand it. The diff between that snapshot and the current document renders inline below the row's header — additions in green, deletions in red, with three lines of context around each hunk. The main editor stays put — the Timeline never replaces the document you're editing.

Click the same row again to collapse it. Multiple rows can be expanded at once, so two snapshots from different points in the document's history can sit on screen side by side.

The split / unified toggle in the editor header is visible whenever the Timeline tab is active. It controls the layout of every expanded diff: unified (one column, additions and deletions interleaved) or split (two columns, before on the left and after on the right). Pick whichever suits the doc's line lengths and the comparison you're making.

The diff is a snapshot taken at the moment you expand the row. If you keep editing the document while the row is expanded, the displayed diff does not refresh — collapse and re-expand to recompute against the current state.

Restoring a version

Every Timeline row has a small Restore icon (a curved-back arrow) at the right of its header. The icon is visible whether the row is collapsed or expanded — you can restore a snapshot whose contents you already trust without expanding to inspect first.

Click the icon and a confirmation dialog opens explaining what's about to happen ("This will replace the current document content with the version from … Your current content is already saved in the timeline — you can restore it anytime."). Confirm and Open Knowledge writes the snapshot over the current document as a new CRDT edit; the change itself lands in the Timeline as a new row, so the prior state stays one click away. If the restore fails (network blip, server unreachable), a brief toast surfaces the error and the document is left untouched.

When a restore succeeds, any other rows you had expanded auto-collapse — their diffs were comparing against a baseline that no longer exists. Ordinary edits while a row is expanded don't trigger a collapse because they change only the current side, leaving the snapshot coherent; re-expand when you want a fresh read.

The Activity Panel's per-agent Undo is a different operation — see [[agent-activity-panel]] — scoped to a single agent's session-undo stack rather than a wholesale snapshot replacement.

Retention

  • Save Version checkpoints are retained indefinitely — they're the permanent history of your document.
  • Auto-saved checkpoints (both kinds above) are retained at most 50 per kind per branch and 30 days, whichever is more generous. Older auto-saves garbage-collect themselves so the Timeline stays readable.
  • Writer WIP commits are consolidated into the nearest Save Version as the branch progresses; orphaned WIP (branch deleted) is cleaned up after 24 hours.

See also

  • [[agent-activity-panel]] — the same inline expand-to-diff pattern, scoped to per-agent session bursts and per-file undo.
  • [[collaboration-recovery]] — the user-facing walkthrough for the concurrent-edit recovery UX.
  • [[architecture]] — the settlement-based observer bridge and the post-condition that drives the automatic checkpoints.