avelino/outl

Git-backed storage backend with native time-travel

Open

#1 opened on 2026年5月24日

GitHub で見る
 (0 comments) (0 reactions) (0 assignees)Rust (1 fork)github user discovery
help wantedroadmap

Repository metrics

Stars
 (10 stars)
PR merge metrics
 (PR metrics pending)

説明

What we want

A storage backend for outl where every change to a workspace becomes part of an addressable, navigable history — not just a write-ahead log.

The default sqlite backend is correct and boring. It works. But it treats history as a stream of ops, not as something users can browse, branch from, or roll back to.

Why this matters

Outliner users routinely want to ask questions the current backend can't answer well:

  • "What did this page look like a month ago, before I rewrote the section?"
  • "Show me what changed in this workspace last week."
  • "Let me try a big restructure in a branch I can throw away if it doesn't work."
  • "Audit who changed what, when."

Roam Research charges for version history as a paid tier. Logseq has no first-class history. We can make this a built-in, free, better feature — but only if the storage layer treats history as the primary data model.

What success looks like

  • A user opens any page and asks for its state at any past timestamp; outl reconstructs it.
  • A user runs outl branch try-refactor, makes changes, and either merges or discards them.
  • A user runs outl log and sees a navigable history of the workspace.
  • Existing workspaces migrate cleanly from sqlite to the new backend without losing data.
  • Performance for normal day-to-day use is indistinguishable from sqlite.

Out of scope (for now)

  • Distributed sync — that's the iroh-based peer sync, tracked separately.
  • A web UI for browsing history — focus is the data model and CLI/TUI first.

Notes

The Storage trait in outl-core is intentionally designed so this backend can be added without touching the CRDT or markdown layers — a parallel implementation, not a refactor.

コントリビューターガイド