Skip to contents

zot 0.5.0

  • zotLocalQuery() waits for Zotero to finish writing. A read retries for up to 10 seconds while the desktop client holds its write lock, instead of failing at once with “database is locked”, and fails with a zotLocalError naming that wait when the lock outlasts it. The read-only connection no longer tries to set SQLite’s synchronous mode, which raised the warning “Couldn’t set synchronous mode”. zotLocalItems(), zotLocalRecords(), zotLocalFiles() and zotStatus() read through it.
  • Removes ztSemantic(), the zot semantic command and the semantic plane of zotStatus() and zot doctor; zotStatus() loses its pythonPath and dbPath arguments and reports four planes. The function queried an index built by the external zotero-mcp-server through that tool’s Python interpreter, which is no longer installed. The package no longer declares a Python system requirement.
  • Changes the address of the public documentation to https://kanameishi.github.io/zot/ in the URL field, the package help page, the README and the citation.

zot 0.4.0

  • ztAttach() chooses the content type as Zotero’s desktop client does: an extension table that covers Markdown, BibTeX, plain text, HTML, CSV, JSON, office formats and images, then a text/binary sniff of the first 1024 bytes. Text files are no longer stored as application/octet-stream, a text/* file of valid UTF-8 is stored with charset = "utf-8", and an empty file is refused with a zotPlanError.
  • The guarded flow gains the attach action: zotPreview() validates attach rows and reports the bytes per library in counts, zotExecute() creates the attachment item, saves its key as created, uploads the file and confirms it, repeating only the upload when resumed, and refuses a file changed since approval. zotVerify(full = TRUE) re-reads attach rows.
  • Adds ztAttachPlan(), which builds an attach plan from local files and omits files already attached to the same parent.
  • zotConfig() accepts a fileTransport, which ztAttach() and the attach action use, as performer replaces the request transport.
  • zotExecute() writes new ledgers with schema = 2 and identifies existing items as library:key. A ledger without a schema keeps its key-only format when every id selects exactly one plan row; an ambiguous one is refused without rewriting it.
  • zotRequest() retries a POST only after rate limiting (HTTP 429). A server failure on POST is returned without another write, and zotExecute() keeps that outcome as an attempt; GET and versioned PATCH keep their retries on HTTP 500, 502 and 503.
  • zotVerify() also returns unfinished, the plan ids without a done entry, and complete, whether all plan rows are done and none of the checked rows is unconfirmed.
  • The package plane of zotStatus() gives the version without the installation path.
  • Adds the vignette “The zot command line”.

zot 0.3.0

  • zotPreview() refuses three plan shapes that broke execution: a create row carrying an item key, the same item twice in one library, and a payload carrying key or version. Each made a batch fail or repeat silently.
  • zotExecute() recalculates the plan’s digest, so a preview edited after its approval is refused instead of written under the old consent.
  • zotExecute() records every row as an attempt before its effect and writes the ledger atomically, so an interrupted batch stays resumable and stops on the row whose outcome is unknown with a zotLedgerError.
  • Verification compares collections, tags and relations as sets, so a read-back differing only in order no longer reports a successful write as failed.
  • zotVerify(full = TRUE) re-reads every completed row, including creates and Trash, and returns the ledger ids that did not confirm in unconfirmed.

zot 0.2.0

zot 0.1.2

CRAN release: 2026-09-22

  • Removes the redundant “from R” suffix from the package title.
  • Makes the local item example self-contained and executable, and places the optional semantic-index example in \donttest{} with prerequisite checks.
  • Extends metadata normalization to recognize multiple known source labels within one parenthetical expression, while preserving other text in parentheses.
  • Improves configuration errors to identify missing arguments and their environment variables, and documents R startup configuration.

zot 0.1.1

  • Changes zotConfig() to accept a Zotero user identifier and API key explicitly, with defaults from ZOTERO_LIBRARY_ID and ZOTERO_API_KEY.
  • Revises the package documentation to distinguish plan construction, approval records, direct write functions, ledger execution, and sampled patch verification.
  • Documents interactive, scripted, automated, and agent-driven use through the same R interface.

zot 0.1.0

Initial release

  • Provides Zotero Web API requests with pagination, retry handling, and versioned patch operations.
  • Provides batch previews, approval records, resumable execution ledgers, and sampled verification of completed patches.
  • Provides read-only local SQLite access and optional semantic-index queries.
  • Provides metadata normalization, retitling and refiling plans, collection creation, bibliographic comparison, Crossref mapping, cross-library move plans, census, and file attachments.