Skip to content

Releases: yilewang/llm-for-zotero

Release v3.9.1

Choose a tag to compare

@github-actions github-actions released this 22 Aug 07:38

v3.9.1

A stability release: it hardens the chat request lifecycle, fixes several ways
quote verification could mislead you, and closes an adversarial pre-release
code review with all 10 confirmed findings fixed.

Quotes you can trust

  • Quotes that span a PDF page break are no longer falsely flagged as
    "Not a source quote" — verification now checks across page boundaries
    before doubting a quote.
  • Quote verification now works against every open PDF tab, not just the one
    in front, so multi-paper conversations verify consistently no matter where
    you're reading.
  • Quote matching and navigation work again for Chinese/Japanese/Korean
    papers (long CJK quotes silently lost partial matching before).
  • Verification is much lighter: the PDF text is extracted once per document
    instead of once per quote, so conversations with many quotes no longer
    stutter on open.
  • Improved quote validation across PDF extraction artifacts (hyphenation,
    line numbers, layout fragments).

Chat requests that can't get stuck

  • Sending is now atomic per conversation: no more double-sends or a
    conversation wedged in "busy" after rapid clicks.
  • Cancel is a guaranteed escape hatch again — even if a provider or webchat
    relay hangs and ignores the stop request, the conversation returns to a
    sendable state.
  • Editing and resending a message can no longer strand a conversation when
    it switches identity mid-flight, and cancelling an edited resend no longer
    shows a false "Failed to save edited prompt" error.
  • Sending works on systems where Zotero's runtime lacks AbortController —
    previously every send failed instantly there.
  • Sent context, request state, and recovery state now survive a Zotero
    restart.

Agent

  • The agent sees its own library changes immediately: search and collection
    listings no longer serve stale data right after the agent renames, tags,
    or files items.
  • Both undo tools now agree: "undo my last change" targets the newest change
    that can actually be reversed, and clearly lists newer irreversible
    changes that will remain.
  • Fixes for agent recovery after interruptions, long-running tasks, planning,
    and revert edge cases.

Models

  • DeepSeek models now accept image input.
  • Correct context window for qwen3.8-max via the Bailian/DashScope API (#377).
  • Fixed model input-cap display issues and CSS regressions in the model
    catalog and reasoning-level menus.

Verification: typecheck clean, 3,906 unit tests passing, 94/94 workflow
tests passing against a real Zotero.

Release v3.9.0

Choose a tag to compare

@github-actions github-actions released this 20 Aug 04:59

v3.9.0 Release Note

1. Local models and model customization

  • Two new provider presets:

    • Ollama (local) using Ollama’s native API at localhost:11434.
    • Local (OpenAI-compatible) for LM Studio, llama.cpp, vLLM, Jan, and similar servers.
  • Local providers work without an API key and recognize localhost, private-network addresses, .local hosts, and Docker hostnames.

  • Ollama’s model picker discovers installed models automatically.

  • For Ollama models, the plugin can discover their real context window and reported vision, tool-calling, and thinking capabilities.

  • Ollama’s native thinking output is separated from the final answer instead of leaking raw <think> blocks into chat.

  • Users can add arbitrary reasoning levels such as ultra, off, or future provider-specific values without waiting for a plugin update.

  • Deleting every reasoning level hides the reasoning selector for that model.

  • The editor shows what provider parameter each reasoning level will send.

  • Users can add model-specific JSON request parameters, including nested options such as top_k and repeat_penalty.

  • Model customizations are tied to the exact model name, remembered across restarts, and can be reset to detected defaults.

  • Connection testing now exercises custom reasoning levels and request parameters and reports the server’s actual response.

  • Explicitly disabling reasoning is honored, while models such as older GPT-4 variants no longer receive unsupported reasoning choices.

2. Skill customization

  • User-written additions to built-in skill files are preserved when the plugin upgrades the managed portion of those skills.

  • User customizations are explicitly treated as authoritative when they conflict with the built-in skill instructions.

  • This preservation applies to both the built-in Agent and native Codex skill paths.

  • Note-writing requests in Chinese, Japanese, Korean, Spanish, French, German, Russian, Arabic, and other supported patterns now activate the note-writing skill reliably. Custom note instructions therefore apply outside English.

3. Longer and more autonomous Agent tasks

  • The Agent/Chat choice is sticky across papers, conversations, and Zotero restarts.

  • The Agent begins with awareness of:

    • The active personal or group library.
    • Other available libraries.
    • Top-level collection names and IDs.
    • Whether the active library is read-only.
  • Users no longer need to find and supply internal collection IDs for ordinary requests.

  • Multi-step tasks can continue through multiple visible segments instead of stopping at the old single-segment round limit.

  • Each productive segment is checkpointed before the Agent continues.

  • If Zotero or the model process interrupts a task, a later “continue” request retains completed tool calls and results instead of starting blind.

  • The Agent stops when a complete segment produces no new successful progress, preventing indefinite loops.

  • Large search or tool results can be stored and read back in pages rather than exhausting the conversation context.

  • Incomplete tool-call records are removed from reusable conversations, reducing failures on subsequent turns.

  • User-visible progress messages show continuing and checkpointing activity.

4. More reliable Agent completion behavior

The Agent now corrects itself before claiming completion when:

  • The user asked it to read an entire paper but it did not perform a full read.
  • The user requested an external Markdown note but no file was written.
  • A library write ran but changed nothing.
  • A question about a selected collection or tag was answered without reading library evidence.

Mutation results now distinguish changed, unchanged, skipped, missing, and failed objects, with reasons. This reduces false claims such as saying papers were moved when no collection membership changed.

5. Library search and discovery

  • Searches can target the personal library or a particular group library.

  • Users can search or list items, collections, notes, tags, libraries, saved searches, and Zotero item types.

  • Item-type discovery shows the fields and creator roles accepted by each Zotero type.

  • Saved-search discovery shows existing searches and their conditions.

  • Search supports Zotero’s broader condition vocabulary, including:

    • Full text and abstract.
    • DOI, publisher, and citation key.
    • Date added and modified.
    • Notes and annotation text.
    • Retraction and publications status.
    • Required clauses and all/any matching.
  • Users can list and inspect objects in the Zotero Trash.

  • Searches support paging, sorting, result limits, and reliable total counts.

  • Year filtering now behaves correctly.

  • Matches found inside notes, annotations, or full text can be resolved back to their parent papers.

  • Reading an item now reports collection membership for PDF-less items and standalone notes as well as PDF-backed papers.

6. Better multilingual and collection-scale research

  • Retrieval understands whether the user wants enumeration, verification, summary, methods, results, or limitations across multiple languages.

  • Chinese, Japanese, and Korean queries are segmented into usable search terms instead of being treated as one punctuated sentence.

  • Technical terms such as GPT-4 and IL-6 are preserved during multilingual searching.

  • If the query and library use different languages, the Agent can construct search variants in both languages.

  • Weak initial searches trigger bounded follow-up searches with different terms.

  • Candidate papers are ranked using titles and abstracts, improving relevance across large collections.

  • When exact matches are sparse, the Agent can return the best available candidates while clearly identifying them as low confidence rather than pretending they are exact matches.

  • The Agent can prioritize which papers deserve full reading and use different evidence queries for different papers.

  • Methods, results, and discussion passages are preferred over front matter when answering evidence questions.

  • Answers can report how many papers were body-read, metadata-only, unreadable, or excluded by the retrieval budget.

  • The Agent is instructed not to generalize across an entire collection when only metadata or partial evidence was available.

  • CJK-heavy material receives more realistic context-budget treatment, reducing premature truncation.

7. Citation and quote navigation

  • Clicking an assistant citation can open the correct PDF even when it was not already open.

  • The reader jumps to the verified quote or page location.

  • Navigation uses the papers and passages actually used for the answer before searching elsewhere.

  • Quotes assembled from multiple passages or pages can still be resolved.

  • The plugin verifies substantial quote coverage before opening a candidate, reducing jumps to the wrong same-author or same-year paper.

  • Same-looking citation labels can be disambiguated between different papers.

  • Grouped and narrative citations are supported more reliably.

  • Scanned or text-unreadable PDFs remain eligible for a viewer-based fallback.

  • Verified printed page labels can replace an initially estimated page label.

  • Candidate PDFs are checked before opening, reducing cascades of incorrect reader tabs.

8. Real citations, bibliographies, and exports

The Agent can now ask Zotero itself to produce:

  • In-text citations.
  • Bibliography entries.
  • Installed citation-style lists.
  • Plain-text or HTML output.
  • Locale-specific citations.
  • BibTeX, BibLaTeX, RIS, CSL JSON, Zotero RDF, and Simple Evernote exports.

This replaces model-invented citation formatting with Zotero’s CSL and translator output.

9. Expanded Zotero library operations

Users can now ask the Agent to perform the following new behaviors:

  • Create books, theses, datasets, reports, manuscripts, presentations, and other Zotero item types manually.
  • Set creators, tags, collections, and any field valid for the selected item type.
  • Update different metadata fields across multiple items in one request.
  • Reject invalid fields visibly instead of silently ignoring them.
  • Import DOI, ISBN, arXiv, and URL records into a chosen personal or group library.
  • Import .ris, .bib, .enw, .nbib, and RDF files as real references instead of attaching the bibliography file.
  • Import PDFs with Zotero metadata recognition.
  • Create, rename, move, trash, permanently erase, and restore collections.
  • Restore nested collections while retaining their parent relationships.
  • Truly move items between collections instead of merely adding another membership.
  • Add, remove, or replace an item’s complete tag set.
  • Rename, merge, delete, color, or reposition a tag across a library.
  • Create, replace, trash, and restore Zotero saved searches.
  • Reparent or detach child notes and attachments.
  • Add or remove bidirectional Related links.
  • Create individual or batch notes, including standalone notes filed into collections.
  • Rename the actual attachment file on disk.
  • Relink missing attachments to a new path, including stored attachments.
  • Move attachments to Trash.
  • Create real Zotero PDF highlights with color and an optional comment.
  • Restore trashed items, collections, and saved searches.
  • Merge duplicates using Zotero’s merge behavior so attachments, notes, tags, collections, and citation links follow the retained item.

10. Zotero preferences and sync visibility

The Agent can list and, after the appropriate approval, change an allowlisted set of Zotero settings:

  • Recursive collection display.
  • Chronological note sorting.
  • Empty Trash visibility and automatic emptying period.
  • Automatic webpage snapshots and imported tags.
  • Quick Copy s...
Read more

Release v3.8.37

Choose a tag to compare

@github-actions github-actions released this 13 Aug 18:55

Fix the Claude Code mode issue

#362

Please update the plugin and reboot the zotero to be able to use Claude Code mode properly.

Release v3.8.36

Choose a tag to compare

@github-actions github-actions released this 13 Aug 01:40

v3.8.36

Why two releases an hour apart

v3.8.35 changed how the mode pill — the Paper chat / Library chat label at the top of the panel — responds to the plugin's font size setting.
It shouldn't have.
The change was made to solve a layout problem that only appears in a narrow sidebar, but it applied at every panel width, so everyone lost working behaviour to fix an edge case most people never hit.
v3.8.36 puts it back, and solves the original problem a different way.

What changed for you

The mode pill scales with your font size again.
In v3.8.34 and earlier, the pill's label grew and shrank with the plugin's font size setting.
v3.8.35 pinned it to a fixed size, so the font size shortcuts had no effect on it at all.
v3.8.36 restores the original behaviour exactly — this is the v3.8.34 pill, unchanged.

More headroom when the sidebar is narrow.
When the panel gets narrow enough that the buttons on the right collapse into compact icons, the spacing on the left of the header now tightens as well.
That frees up room for the pill to grow, so larger font sizes stay usable in a narrower sidebar than before.

Everything else from v3.8.35 is still here

v3.8.35 was a substantial release and none of it was rolled back:

  • Conversation identity and deletion handling hardened — including cases where a chat could resume against the wrong session after upgrading, or where a deleted chat could reappear
  • Startup no longer aborts if pending deletions cannot be read
  • Hint, status and message text is selectable and copyable across the plugin's surfaces
  • Kimi K3 support repaired
  • Gemini 3 fixes — thinking display, agent mode, and model specifications

Anything to do?

No. Zotero picks up plugin updates automatically.
To pull it right away: Tools → Plugins, then the gear icon → Check for Updates.

Release v3.8.35

Choose a tag to compare

@github-actions github-actions released this 13 Aug 00:32

🚀 Enhancements

  • conversations: Permanent key ledger and deletion-lifecycle hardening (1118c0fd)

🔥 Performance

  • conversations: Stop repeating schema and identity work on every operation (0f7db43b)

🩹 Fixes

  • conversations: Scope the database fence to retired keys only (ec701344)
  • startup: Degrade instead of aborting when deletion intents cannot load (68c5183b)
  • conversations: Require evidence before permanently retiring a key (bf791c7f)
  • conversations: Close three defects found reviewing the remediation (009c5003)
  • conversations: Make quarantined identities visible (22902db6)
  • conversations: Replace unbounded key-walk loops with monotonic allocation (f37f8f36)
  • conversations: Anchor legacy conversation-id rewrites to the full key suffix (710393ef)
  • conversations: Rewrite only the key token when rekeying scoped conversation keys (2950f13a)
  • header: Keep the mode chip label at chrome size (2cd554d1)

🤖 CI

  • Run quality and release workflows on Node 24 (cb9a0ecb)

❤️ Contributors

  • Yile Wang

Release v3.8.34

Choose a tag to compare

@github-actions github-actions released this 11 Aug 01:25

Release note

1 improve webchat stability, please also update your github repo for sync-for-zotero and refresh your extension on chrome: https://github.com/yilewang/sync-for-zotero/releases/tag/v0.0.15

2 remove buggy double scroll bar inside the plugin.

this is gone now:
image

3 remove the ghost webchat history item in your local conversation DB. they should not be shown to you at all.

Release v3.8.33

Choose a tag to compare

@github-actions github-actions released this 10 Aug 03:32

🚀 Enhancements

  • prefs: Model dropdown with fetched provider models and Customized entry (39cd0915)
  • Resolve model limits and reasoning through the capability service everywhere (aa7dd090)

🩹 Fixes

  • List only user-configured models in the action-panel model menu (375bbc1d)
  • prefs: Full-width Customized input and review fixes for the model dropdown (dec5e4bf)
  • standalone: Stop rebuilt shell listeners from double-toggling on one click (9eff6612)
  • prefs: Stop the model dropdown from crashing Gecko's select popup teardown (c08b9b58)

🏡 Chore

  • Track the remaining model-capability registry module files (0b419ae0)

✅ Tests

  • webchat: Opt-in live PDF-delivery gate plus relay and harness hardening (950cca60)

Webchat sync

if you are using webchat mode, please also update the extension by steps from: https://github.com/yilewang/sync-for-zotero/releases/tag/v0.0.14

❤️ Contributors

  • Yile Wang

I am very glad that this repository has been ranked as the top-three AI plugin for Zotero! What excites me even more is that this plugin is helping more and more researchers around the world for their scientific exploration!

image

Release v3.8.32

Choose a tag to compare

@github-actions github-actions released this 08 Aug 21:07

🚀 Enhancements

  • Durable pending-deletion store with write-ahead queue table (09c3668b)
  • Headless queued-deletion finalizers and shared turn utils (276a3ce4)
  • Wire pending-deletion store into startup with deferred sweep (04b76f0e)
  • Drive panel conversation and turn deletion through the durable store (e946486a)
  • Standalone window uses the shared pending-deletion store (40cbcf94)
  • Workflow-test harness methods for deletion lifecycle (42f20303)
  • Vector plugin icon — hand-traced SVG replaces raster icon-20.png (8633d160)

🩹 Fixes

  • mcp: Keep Zotero scope tokens valid across turns (bd79a8c4)
  • mcp: Bind forked conversations to their own scope token (07e98b7f)
  • Harden deletion queue against review findings (0eb466d7)
  • Turns queued for deletion never reach prompts, retries, or history search (c01668a5)
  • Discover WinGet-installed Codex CLI on Windows (#342)
  • Surface Codex CLI Path setting when codex discovery fails (#342)
  • Defer queued conversation deletion when staleness cannot be verified (d072cd26)
  • Withdraw pending-deletion row strictly before giving up (1834f739)
  • Keep user actions from committing pending conversation deletions (5f411798)
  • Force Claude model catalog refresh on user-initiated menu open (e893494f)
  • mcp: Complete scope token lifecycle handling (06b0d443)

✅ Tests

  • Pin pending-deletion retry, give-up, and sweep policies (a02aedc3)
  • Full-lifecycle behavioral suite for deletion invariants (90dbf972)
  • E2E deletion lifecycle across remounts and simulated restart (cdefd10e)

🎨 Styles

  • Prettier pass on deletion-queue files (3395e6de)

❤️ Contributors

  • Yile Wang
  • Chanyeong Lim (@asp345)

Release v3.8.31

Choose a tag to compare

@github-actions github-actions released this 29 Jul 14:23

🩹 Fixes

  • math: Keep KaTeX SVG backgrounds transparent (c45792df)
  • mermaid: Scope injected SVG background styles (23e82739)

✅ Tests

  • math: Resolve stylesheet from test location (54dcb2eb)

webchat update

if you are using webchat mode, please also update the extension by steps from: https://github.com/yilewang/sync-for-zotero/releases/tag/v0.0.11

❤️ Contributors

  • Yile Wang
  • Chanyeong Lim (@asp345)

Release v3.8.30

Choose a tag to compare

@github-actions github-actions released this 23 Jul 23:50

🔥 Performance

  • chat: Improve quote-classification performance (497f3f85)
  • chat: Further improve quote rendering speed (15bae032)

🩹 Fixes

  • agent-trace: Preserve interleaved activity until completion (528adf02)
  • chat: Deduplicate adjacent quote anchors (19de6843)
  • chat: Distinguish authentic quote lines from model responses (b02edcf3)
  • quote: Correct quote-block minor display issues (77ff2a78)

Maintainer Update:

I will have to take a leave from July 20 to Aug 6 to prepare my PhD milestone qualification and Cognitive Computational Neuroscience Conference 2026. If anyone is attending CCN 2026 this year, I would love to meet up with yall!

I may not respond issues & PR but I will be back after that.

❤️ Contributors

  • Yile Wang