code.pablomurad.com

patchwork

Publishes the revisions of your pages as a feed, with notes and readable diffs, written in Go

CHANGELOG.md raw
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
# Changelog

## 0.1.1 (2026-10-24)

### Fixed

- `retract`, `amend` and `snapshot` run from the command line now show up on a running `serve` within a few seconds. Before, `serve` rebuilt its output only after a content file changed, so these edits waited for the next upload or a restart. `serve` now checks SQLite's `data_version` every 3 seconds, a negligible query, and rebuilds only when another process has committed.

## 0.1.0 (2026-10-24)

First release, running on [moonflowersociety.org](https://moonflowersociety.org).

### Added

- Folder mode: Patchwork scans a folder of Markdown files, waits for uploads to finish, and stores every changed file as a snapshot in SQLite. File events trigger scans and polling catches what they miss.
- Publish rules driven by frontmatter. A new `revision:` note publishes a revision, diffed against the last published one. Editing only the note amends the revision. A follow-up within the fold window (default 20 minutes) joins the revision it follows. Edits without a note stay private history.
- `revision_kind` (correction, expansion, position, reorganization) and `maturity` (seed, sprout, bloom).
- Diffs by block and by word, which detect moved paragraphs and keep code blocks and tables readable. Feed excerpts are capped and sum up long deletions.
- Ignore regions (`<!-- patchwork:ignore -->`) and ignored frontmatter keys.
- Outputs: the v1 JSON API (described in `schema/v1`), Atom and JSON Feed for the site and for each page, and plain or ANSI text for terminals. `serve` serves them with ETags; `export` writes them to a directory.
- Commands: `init`, `scan`, `watch`, `serve`, `export`, `log`, `diff`, `retract`, `amend`, `snapshot`, `rebuild-diffs`, `backup`, `doctor`, `health`, `version`.
- A container image: a static binary on distroless, running as nonroot.

### Known limits

- Renaming a file starts a new page with a new history.
- Only folder mode exists. Git mode is planned.
- The JSON contract is v1 and may still change before 1.0.