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
- Adds batch files:
zotWriteBatch() and
zotReadBatch() persist plans, previews and approvals as
JSON and recalculate a preview’s digest on read.
- Adds catalog reads:
zotLibraries(),
zotCollections() with paths, zotItems() by key
in batches of fifty, and zotListItems(), a bounded listing
that refuses to exceed a declared size and detects a library version
change between pages.
- Adds local reads:
zotLocalRecords() with the identity
fields of every record and zotLocalFiles() locating
attachment files in local storage.
- Adds identity helpers:
zotIdentity() maps any record
shape to the fields zotSameItem() compares, and
ztMatches() judges candidates against a set of
records.
- Adds
ztTemplate() and ztCheckPayload() to
validate a create payload against its item type template, and
zotStatus() to probe the package, credentials, Web API,
local database and semantic sidecar.
- Adds the vignette “Install zot from source”.
zot 0.1.2
- 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.