Skip to content

v0.15.0

Latest

Choose a tag to compare

@github-actions github-actions released this 01 Aug 15:57

Breaking changes

Pre-1.0: breaking changes ship in a minor release. Full detail in CHANGELOG 0.15.0.

  • Partial batch failures are no longer success. items create, collections create, and import file decode the failed map Zotero returns inside an HTTP 200 and exit 13, naming the source index, status, and message of each rejected element. Scripts that only checked for exit 0 will now see failures they were blind to.
  • import doi previews by default and requires --yes; --max-changes is checked before the CrossRef request.
  • import file --format csljson requires --via connector instead of posting untranslated CSL fields that Zotero stores incompletely.
  • collections update sends If-Unmodified-Since-Version, so a stale update fails instead of silently overwriting a concurrent edit.
  • One writer at a time. Applied writes take an installation lock (~/.zotio/.writer.lock), or a canonical output-path lock for export snapshots, collection bundles, and vaults. Writers never queue: a second writer in the same scope exits 9 immediately with retry guidance. Reads and previews stay concurrent. See ADR-0005.
  • MCP results carrying library content are framed as untrusted data with a top-level _zotio_provenance marker; result shapes and MIME types are unchanged, but library resources now adopt the 60-KB bound.
  • MCP sql renders every []byte column as text. TEXT columns stop arriving as unreadable base64; BLOB columns change from lossless base64 to a possibly lossy string — read them with hex().
  • zotio watch <resource> watches that resource instead of quietly syncing the whole library each tick.
  • collections bundle fails on a full-text read error instead of writing an incomplete synthesis.md and exiting 0.
  • zotio-mcp exits 0 on SIGTERM while a client holds the SSE stream; it used to burn the 5-second drain and exit 1.
  • Source builds require Go 1.26.5 (go.mod is patch-level): 1.26.5 fixes CVE-2026-42505 in crypto/tls. Release artifacts were never affected.

Changelog

Features

  • cf043b9: feat(concurrency): enforce the ADR-0005 single-writer contract (@enieuwy)
  • 0442b74: feat(concurrency): establish cross-platform single-writer contract (@enieuwy)
  • b99bef5: feat(health): color the human health report by severity (@enieuwy)

Fixes

  • b942192: fix(cli): correct watch scoping, date/version parsing, tag dedupe, and silent error paths (@enieuwy)
  • 1e098d1: fix(cli): honour Zotero batch failures, version preconditions, and the write gate (@enieuwy)
  • ea162ec: fix(concurrency): align lock eligibility with effective profiles (@enieuwy)
  • 2e1919c: fix(concurrency): close single-writer contract gaps (@enieuwy)
  • 0c43453: fix(infra): close context, DOI routing, and privacy review gaps (@enieuwy)
  • 79e8816: fix(infra): harden persistence, cancellation, MCP shutdown, and command capture (@enieuwy)
  • 47a1b0f: fix(lint): clear golangci-lint findings from the concurrency work (@enieuwy)
  • 50686e7: fix(mcp): frame native library data with provenance (@enieuwy)

Documentation


Curated history: CHANGELOG.md · Install: brew install orgmentem/tap/zotio