Skip to content

Skrive v0.0.8

Choose a tag to compare

@github-actions github-actions released this 23 Apr 16:48

v0.0.8 — Version history

Skrive gets a full version-history surface this release. Open any Markdown file, hit ⌘⇧H, and see every version behind it — whether from git commits or Skrive's own checkpoint store for
plain folders.

See what you've changed

  • History panel (⌘⇧H) — newest-first list of every version of the active file. Single-click a row to diff it against the current file; shift-click a second row to pair-compare two
    historical versions.
  • Two history sources, auto-selected per project:
    • Git projects — commits that touched the file, with subject, short sha, and relative time.
    • Plain folders — Skrive-managed checkpoints: auto-snapshots every five minutes of active editing (content-hash dedup'd), plus a manual "Pin version…" command for milestones.
  • Side-by-side diff view with two modes:
    • Raw — source vs source, gutter markers for added / removed / kept lines, placeholder rows keeping panes aligned.
    • Preview — rendered Markdown on both sides with sage-tinted added paragraphs and struck-through deletions. Reads as revised prose, not code review.

Navigate a diff like a long document

  • n / j — next change; p / k — previous; Home / End — first / last. N of M counter in the chrome so you always know where you are.
  • Sync scroll in two modes:
    • Matched (default) keeps paired blocks aligned across panes even when they render at different heights.
    • Linear is a simple scroll-height ratio — useful when the diff is small or matching isn't helpful.
  • Esc exits diff mode and returns the tab to whatever you had open before.

Configure per-project

.skrive.toml parsing lands this release. First live consumers:

  • [checkpoints].auto_cap — cap on auto-snapshot count per file. Default 50 (~4 hours of active editing at the 5-minute cadence).
  • [checkpoints].manual_cap — cap on pinned versions. Default 0 = unbounded; set to a positive integer to keep a rolling window.

Future sections ([lint], [dictionary], [export.*]) parse against the committed schema so you can populate them today; their consumers ship in later phases. Edit and reopen the project to
apply changes — live reload via the watcher is tracked as a follow-up.

Full schema reference: docs/skrive-toml-reference.md.

Under the hood

  • Search highlights now land correctly on astral-plane input (emoji, some math symbols) — column and matchLength are reported in UTF-16 code units, matching the backlinks / outgoing-link
    convention already used elsewhere.
  • Structural-lint phase renumbered 3.2 → 3.4 in the roadmap to match execution order (3.1 → 3.3 → lint). Phase 3.2 is an open slot for a future deliverable.
  • 134 Rust unit tests passing; frontend svelte-check clean.

Tracked for later

  • Structural diff — moves and reworded paragraphs rendered as first-class operations rather than as line noise. Phase 3.3b, gated on dogfooding v0.0.8 to confirm whether the line-level
    view reads well enough.
  • Live reload of .skrive.toml — watcher extension so saves apply immediately without reopening.

Full changelog: v0.0.7...v0.0.8