Skip to content

ResearchPocket 2.2.1

Choose a tag to compare

@github-actions github-actions released this 02 Aug 07:40
· 18 commits to main since this release
1843279

ResearchPocket 2.2.1

ResearchPocket 2.2.1 adds Research Zen: bounded authored documents — prose,
lists, and todos — that live beside your saves, synchronize between devices, and
can mention saved links inline. It also fixes a repository-growth bug that could
accumulate redundant snapshots in a private data repository indefinitely.

2.2.1 is the first release of this line. A v2.2.0 tag exists in the repository
but was never built or published.

Install

With Rust installed:

cargo install --locked --force research

Or download the verified archive for Linux, macOS, or Windows from the GitHub
release and check it against SHA256SUMS.

What changed

  • Research Zen. A zen document is Markdown bounded to 256 KiB, stored as its
    own aggregate rather than inside the item library. Documents carry a title,
    tags, prose, GFM task lists, and research:item/<uuid> mentions that resolve
    against your local saves. Saved items remain URL-first and unchanged: a
    document is not a save without a link, it is a different thing.
  • Todo counts are derived from the body, never stored. A checkbox toggled by
    clicking and one edited by hand are indistinguishable, and there is no counter
    that can fall out of step with the text.
  • Concurrent edits merge at character level. A checkbox toggle is a text
    splice, so two devices flipping different boxes in the same list keep both
    changes, as do a toggle and a prose edit in the same paragraph.
  • Zen documents synchronize. Both clients now carry the aggregate generation
    after their protocol-v1 phase. An operation whose causal predecessor has not
    arrived is deferred and retried rather than partially applied, and uploads are
    confirmed by reading the remote object rather than assumed from the write.
  • research zen in the CLI: list, add, show, edit, delete, and
    restore. Bodies come from a file or standard input, because a document is
    prose and shells mangle prose. Listing reads projected metadata only; show
    is the one command that loads a body.
  • The web workspace opens as a new-tab surface: the time, one input that
    both filters and creates, and the documents. Opening it costs nothing
    proportional to how much you have written, because no body is read to draw it.
  • Checkpoint selection fix. A device that edited between building a
    checkpoint and confirming its upload never selected the checkpoint it had just
    published. Because tail thresholds are measured from the selected checkpoint,
    every later cycle minted and uploaded another full-library snapshot. Protocol
    v1 never prunes, so those accumulated permanently. Selection now requires only
    that this replica has already applied everything the checkpoint covers.
  • A returning owner lands in their library. Opening the site with a library
    already on the device goes straight to the app instead of asking again how to
    create one. ?choose still reaches the chooser for adding or restoring a
    library.
  • The web app no longer emits module preloads its own Content-Security-Policy
    forbids
    , which broke first load in strict browsers.

Upgrade an existing private library

Upgrade the native client, verify the version, and run one normal sync:

cargo install --locked --force research
research --version
research sync run

The expected version is research 2.2.1.

Zen documents are a new aggregate namespace under sync/v2/ops/zen/. They do
not touch protocol-v1 history, which remains immutable and is not pruned. A
2.1.x client that has not been upgraded will not see documents written by a
2.2.1 client; it continues to synchronize saves normally. Upgrade every device
you want documents on.

This release does not perform the item-aggregate migration. Saves continue to
synchronize over protocol v1.

GitHub release archives

Platform Release asset
Linux GNU/glibc x86-64 (glibc 2.35 or newer) research-v2.2.1-linux-amd64.tar.gz
Windows x86-64 research-v2.2.1-windows-amd64.zip
macOS Intel research-v2.2.1-macos-amd64.tar.gz
macOS Apple Silicon research-v2.2.1-macos-arm64.tar.gz

The archives remain unsigned. Verify the selected file with SHA256SUMS, or
build the exact tag with the pinned toolchain:

git clone --branch v2.2.1 --depth 1 \
  https://github.com/ResearchPocket/researchpocket.github.io.git
cd researchpocket.github.io
cargo build --locked --release