Releases and stability¶
1.9.0 is the current release (pipx install paperful / uv tool install paperful
after this tag is published; pip install paperful still works). Optional extras:
[browser], [llm], [rag], [rag-docling], [serve], [browser-agent], [openxml], [network]. 1.1.0 introduced PyPI and
trusted publishing. For campus login and HTML PDF paths, install
paperful[browser] and run playwright install chromium once. The operator install is
clone plus docker compose build on your computer (see Docker).
GitHub CI currently runs pytest -m smoke only.
1.0.0 is tagged. Required schemas are frozen in this tree.
Image packs: light ([serve] only; CI default
when unset) or heavy ([serve] [llm] [rag] [browser-agent]; set in
.env.example). See Docker.
Required keys on paperful.run_report.v1 from build_report() are frozen
(removed or renamed required keys are a break; extra keys may still be added).
Required keys on paperful.item.v1 from empty_item_record() are frozen the
same way.
1.0 is CLI honesty plus the operator workbench. Screenshots and
walkthroughs are in the guide (Walkthroughs). Discover + Wanted, people lists,
briefing/digest (optional collection note), Repair/Mirror Preview→Apply,
command ids, review tokens, and Activity run-status SSE (GET /v1/runs/{id}/events)
are in tree. Interactive Ask is on the default nav (/ask),
opt-in after [rag] + [llm]. Mode is simple (default) or advanced
(--ask-mode / the Ask form; not written back to config). Batch Ask is on
that page when Advanced is on.
Advanced Index is ingest, search, and question extracts. Briefs runs
summarize/synthesize.
Item records and create-missing restore are locked; extra item keys may still
be added. Required paperful.run_report.v1 keys and imported-file attach
(typed attach_failed, provenance note) are the contract. 1.1.1 shipped
Wanted stop-ship hygiene (Grab scope, Attach at zero, copy). Everything after
that is a buffet by area (Wanted excellence foundation shipped; residual polish).
1.9.0 cuts GitHub CI to one Ubuntu smoke job (pytest -m smoke); the
OS/Python matrix, lint, audit, socket, fresh-install, browser, and docker
jobs stay local until each is green on its own. 1.8.0 adds crash-safe ledger appends, one HTTP client, systematic-review
export/import and PRISMA counts, and grey miss labels (host_blocked,
html_not_pdf, engine_suspended). 1.7.0 is the hardening + platform wave (workbench token auth, required
pip-audit/socket/fresh-install CI gates, Playwright as the [browser]
extra, atomic ledger writes, defusedxml, backend conformance kit — details
in the changelog). 1.6.5 adds the Stuff workbench, synthesize --layout conflict/review,
additive PRISMA counts and snowball watch drift hashes, paperful search watch
(URL poll, no scheduler), and the Wanted og-v2.png share card.
1.6.4 thins snowball execute/apply, splits Discover routes and doctor
checks, shares skip-host lists, and moves try_download beside
commit_download (OA-then-serial fetch unchanged). It also ships OpenAlex
trusted journal lists, paperful stuff, critique outline, paperful network,
and SearXNG paperful search.
1.6.3 makes the OpenAlex parquet snapshot API-first (live API first;
store is a budget fallback with a 120s timeout and a three-strike skip) and
ships rewrite PDF comment markers plus sticky notes.
1.6.2 adds paperful precedent (held vs public-metadata-only; never a
novelty claim), rewrite tracked PowerPoint/ODT/PDF plus an optional
[openxml] extra, and a Binoculars overlay for critique --ai-model.
1.6.1 adds critique claims and verify lanes (intra-doc ledger and
local section swarm; no Deep Review upload) plus config-selected MARG aspects
(theory, policy, evidence-base). 1.6.0 adds paperful rewrite: apply an existing critique pack as an
edit plan, optional sidecar, and tracked-changes Word (pack required; never
re-runs critique; never overwrites the source). 1.5.1 adds composable
critique review lanes (--lane) and optional
PaperGuard --forensics. 1.5.0 finishes the 1.4 module split: remaining workbench desks use
module-level handle_*, snowball resume/_execute are extracted without
behavior change, critique checkers are a package, and acronyms is a
*_cmd module. 1.4.0 ships the local manuscript critique pack (optional Vale / GROBID /
glossary), Ask simple/advanced modes, and a CLI/workbench module split
(*_cmd.py, desk row builders, Discover handle_* routes). 1.3.1 hardens local-trust boundaries (PDF fetch SSRF checks, review-token
sanitization, non-loopback serve gate, redacted witness digests; see
SECURITY.md) and adds Mendeley/EndNote adapter contract tests
plus a field-assessment template for testers. 1.3.0 adds the optional
unsigned Firefox add-on: save the open page or selected tabs into
out/. Local OpenAlex snapshot phases beyond
opt-in v1 and the alert loop stay later — see
ROADMAP — Product split
and After 1.1.0.
Schema compatibility (1.0 contract)¶
Required-key frozensets and golden fixtures live in code / tests/fixtures/.
Full registry and tiers: developer.md — Disk schemas.
Extra keys may still be added on frozen schemas.
Schema |
Policy |
1.0 |
|---|---|---|
|
Required keys frozen ( |
Same |
|
Required keys frozen ( |
Same |
|
Required envelope keys frozen ( |
Frozen envelope |
|
Required |
Frozen |
|
Top-level keys frozen ( |
Frozen |
|
Top-level keys frozen ( |
Frozen |
|
Optional on run reports; additive (not in |
Additive |
|
Top-level keys frozen ( |
Frozen |
|
Shipped and tested; additive keys allowed |
Additive through 1.x |
Snapshot / restore |
Create-missing locked (DOI → key → title+year; no field overwrite; skip trashed/gone). Not a lossless round-trip |
Same |
Library index ( |
A rebuildable cache. Folder layout, ledger and table columns may change in any release; |
Not a promise |
The release path is still clone, docker compose build, and doctor exiting
2 when Zotero is absent. That check is local until the docker job returns
(CI rebuild). GitHub CI runs
pytest -m smoke only.
A second manager is not owed as a finished feature and does not gate 1.0. Mendeley and EndNote adapters are in the tree and seeking testers; Zotero is the well-tested path. Pin a git tag or commit if you script against JSON. See the changelog for known limits. See Why Paperful.
Ladder¶
doctor → collections → run --dry-run → run → report / report --json
--dry-run lists each item and a Would-hit column (sources that routing
would try, in order). It does not download. Narrow with --collection /
--library, plus optional --year-from / --year-to and --type / -T
(Commands — Scope filters).
When Zotero is down, collections, run, attach, lint, fix-metadata,
dedupe, gaps, recover, summarize, and synthesize exit 2 and print the same
next-steps ladder (paperful doctor, enable local API, copy
config.example.toml).
Optional LLM¶
Off by default and additive: with [llm].enabled = false nothing in the PDF
loop changes. Known limits: recover needs Python 3.11+ and a 14B-class
local model to be useful; light images omit the LLM extras (use
heavy or host uv sync --extra llm --extra browser-agent);
identity/title verbs need a text layer (paperful ocr adds one to scans). summarize and
synthesize default to writing both a disk file and a Zotero note
(--to disk keeps the library tree clean). Config keys under [llm],
[browser_agent], [summarize], [synthesize], [lint], and [fix_metadata]
are part of the 1.0 surface (additive extras allowed). See LLM.
What 1.0 includes¶
Outcome |
Status |
|---|---|
Trust inside Zotero (attachment provenance stamp) |
Shipped on Zotero attachment notes. A readable parent line follows |
One-line end-of-run banner + write-API yes/no |
Shipped ( |
Locked report JSON schema |
Required |
Locked item record + snapshot/restore |
Required |
Mendeley and EndNote adapters |
Not a 1.0 blocker. In the tree; seeking testers; Zotero is the well-tested path |
Workbench GUI (Discover, Wanted, Preview/Grab) |
Shipped on |
Interactive Ask in GUI (cited chat-over-collection) |
Shipped on the default nav ( |
Fresh-clone doctor stays quiet without Scholar |
Shipped: |
Known limits (1.0)¶
These stay true after the tag. They are not unfinished 1.0 work.
Restore is create-missing, not a lossless round-trip.
Mendeley and EndNote stay seeking testers; Zotero is the well-tested path.
Provenance notes are Zotero-only.
Open-access fill is DOI-scoped; Unpaywall often returns a landing page. Grey literature is configured playbooks only. Sci-Hub is opt-in and thin after ~2021.
Report-only
attachmentsreads children from the mirror (1.3.1);--applystill needs the manager.The RAG index (
state/rag/) is a rebuildable cache, not a layout promise.TTY stays the shell for
session login,doctor --guide, mid-run EZProxy, and Sci-Hub.
Full list: CHANGELOG (1.0.0).