avelino/outl

Git-backed storage backend with native time-travel

Open

#1 ouverte le 24 mai 2026

Voir sur GitHub
 (0 commentaires) (0 réactions) (0 assignés)Rust (1 fork)github user discovery
help wantedroadmap

Métriques du dépôt

Stars
 (10 stars)
Métriques de merge PR
 (Métriques PR en attente)

Description

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.

Guide contributeur