v2.2.0
v2.2.0
The biggest feature drop since v2.1 — journal partitions in the report, a switchable primary source, a headless mode for agent-to-agent use, plus two reliability fixes. The human 14-step workflow is unchanged when the new capabilities aren't used, and there are no new hard dependencies.
✨ Journal partitions — 中科院 / JCR / SJR
Every paper is now tagged with its journal tier across three systems:
- On each card / row — a quiet single badge (your preferred platform).
- In the detail panel — the full three-platform breakdown (中科院 tier + Top, JCR quartile + impact factor, SJR quartile) with source attribution.
- In the toolbar — a zone filter to keep only
Q1 / ≥Q2 / ≥Q3(or一区 / ≥二区for 中科院). Ask in natural language ("只要一区二区的", "Q1 only") and the request is parsed as a filter, not a search term.
Partition tables are fetched at runtime from public mirrors — never bundled — and attributed; only JCR's figure is labelled an impact factor.
🔀 Primary source — by preference, and by fallback
Two independent capabilities from one setting:
- Pick your primary. OpenAlex is the default; set Semantic Scholar as the primary source instead when its corpus or field coverage suits your topic better.
- Automatic quota fallback. When the active primary runs low on its daily quota (or starts erroring), the run continues on the other source rather than stopping — a depleted key degrades gracefully instead of halting the search.
🤖 Headless mode for agents
When the consumer is another agent rather than a person, scripts/agent_search.py runs the deterministic core in a single command and returns one structured JSON envelope — deduped, relevance-scored, saturation-checked, partition-annotated — with no HTML and no classification SubAgents. Same search discipline, machine-readable output.
🛠 Reliability
prisma_s_loggerno longer crashes on the documented single-dictcurve.json(it silently dropped the snapshot and left coverage at 0). — thanks to @MatrixA (#2)rcs_parsernow applies RCS scores from batches keyed by canonical_key, not justentity.paper_id— previously those scores were silently discarded. — @MatrixA (#2), extended here to the raw-response path.- Regression tests added for both.
Compatibility
- No behavior change to a run that doesn't use partitions / source-switching / headless mode — the report renders byte-for-byte as before.
- No new hard dependencies.
Full changelog: v2.1.2...v2.2.0