Skrive v0.0.8
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