Chapter 3When something looks off
The "uh-oh, did something break?" scenarios. Most have clean recovery paths
— the plugin is designed to refuse destructive operations rather than
silently do them.
3.1 · disk-side delete
I deleted a PDF from my watch folder by accident
I cleaned up my downloads folder a bit too aggressively and lost a paper I had in Zotero.
I want toGet it back without losing my metadata.
What should happen (Mode 3)The file gets moved to .zotero-watch-trash/ under the watch root before propagating. The Zotero attachment gets moved to Zotero's Bin. To restore: un-trash the attachment in Zotero (file moves back), or copy the file out of plugin trash yourself (the plugin recognizes it by hash and re-links).
In Mode 1 or 2Nothing dramatic. The tracking record flips to "missing." Zotero leaves the item alone. To restore, just put the file back.
Covers: DEL.1, RST.1, RST.3, LD.1, S.6, P1.12
3.2 · zotero-side trash
I accidentally trashed a paper in Zotero
I right-clicked → Move to Trash without thinking.
I want toGet it back, including the file on disk.
What should happen (Mode 3, default settings)A dialog asks: Plugin trash (recoverable, default) / OS trash / Permanent / Keep on disk. "Keep" leaves the file alone. "Plugin trash" moves it to .zotero-watch-trash/ — restore by un-trashing the attachment in Zotero later.
In Mode 1 or 2File stays on disk untouched. Item goes to the Bin. Restore the item in Zotero; the file is unaffected.
Covers: S.5, ZA.1, P1.11
3.3 · duplicate copies
I had two copies of the same paper, and I deleted one
I'd duplicated a paper into two folders by accident. I deleted the second copy. I don't want my "main" copy to disappear too.
I want toOnly the file I actually deleted to go away. Leave the main copy alone, and leave the Zotero item alone.
What should happenThe plugin recognizes the deleted file as a "shadow" (same content hash as the canonical record). It drops the shadow from tracking, leaves the canonical file on disk, leaves the Zotero attachment alone.
Covers: DEL.2
3.4 · folder delete
I deleted a whole subfolder by mistake
I dragged Methods/ to the trash without realizing what was in it.
I want toGet the whole folder back.
What should happen (Mode 3)The folder and all its files are moved into .zotero-watch-trash/<folder>/. Tracking for that collection (and child files) is dropped. Zotero attachments are NOT trashed — they just lose their membership in the deleted collection. To restore: prefs pane → "Trashed folders" row → "Restore folders…" → pick the one you want. The dir moves back, the Zotero collection is re-created, FileRecords are re-attached.
In Mode 2Mode 2 is warn-only on folder delete. Nothing actually gets moved; the collection tracking flips to "suppressed" and shows up in the prefs pane for you to act on.
Covers: FDEL.1, FRST.1
3.5 · bulk safety
I just deleted a lot of files (or folders) at once
I cleared out an old folder, or a cloud-sync glitch removed twenty files — or several top-level folders disappeared at once. I do NOT want my Zotero library shredded as a side effect.
I want toA safety stop. Make me confirm before something this big happens.
What should happenIf a single operation would affect more than 10 files or more than 20% of your tracked items, a confirmation dialog appears. Cancel → tracking flips to "missing" but nothing destructive happens. Proceed → normal propagation runs. If the confirm dialog can't render (no UI thread available), the plugin refuses rather than silently executing. Additionally: if many top-level folders vanish simultaneously (the signature of a cloud-sync glitch under whole-library scope), the plugin pauses deletion entirely rather than trashing all those collections — you'll see a warning in the prefs "Sync warnings" panel and can resume or investigate. And the very first time a two-way delete would fire under whole-library scope, you get a one-time confirmation explaining the scope and asking you to opt in.
Covers: DEL.3, FDEL.2
3.6 · content drift
I annotated a PDF — will the sync clobber my annotations?
I opened a paper in my PDF reader and added notes. Now the file's hash on disk is different from what Zotero thinks it should be.
I want toBe warned. Don't silently overwrite my edits.
What should happenAny sync operation that would move or overwrite the file refuses. The FileRecord state flips to "conflict-blocked" and shows up in the prefs pane under conflicts. You resolve via the prefs UI: re-stamp the new content as the baseline / discard the local changes / pause sync for this file.
Covers: CONF.1
3.7 · last-collection-removed
I removed an item from all of its collections
I cleaned up the categorization in Zotero and now an item isn't in any collection — it's essentially Unfiled. What happened to its file on disk?
I want toMy file to stay on disk. Don't delete things just because I reorganized.
What should happenThe file stays on disk. The FileRecord flips to "out-of-scope-suppressed." A "Suppressed items" row appears in prefs. From there I can: re-instate (put back), keep local (stop syncing but keep the file), trash, or move outside the watch root.
Covers: SUPP.1
3.8 · drive unplugged
My watch folder is on a drive that's not connected
My watch folder lives on an external SSD that I've unplugged. I don't want the plugin to think every file got deleted.
I want toThe plugin to wait quietly until the drive is back.
What should happenThe plugin notices the watch root itself is unreachable and pauses globally. Every tracking record flips to "paused" — no destructive operations run. When the drive comes back, the next scan resumes normally.
Covers: FM.1
3.9 · parent-trash restore
I trashed a parent item that had multiple attachments — can I bring them all back?
I trashed an item that had a PDF plus a supplementary file. Both files are now in plugin trash. I want everything back.
I want toA single un-trash on the parent to restore everything.
What should happen (Mode 3)Un-trash the parent in Zotero. Every child attachment is un-trashed too. Every file is moved out of plugin trash back to its original path.
Covers: RST.2, RST.4
3.10 · re-attach
I permanently erased an attachment, but the citation is still in Zotero
I emptied the Bin and the attachment is gone for good. But the bibliographic item it was attached to is still in my library. Now I want the file back.
I want toDrop the file back and have it re-attach to the existing parent — not create a new standalone item.
What should happenThe plugin matches the file's hash against a tombstone record, sees the parent item still exists, and attaches the file as a new child of that parent (via Zotero's importFromFile({parentItemID})). No duplicate standalone item is created.
Covers: RST.5
3.11 · restore collision
I'm restoring a file but a different file is at that path now
Between trashing the file and restoring it, a different file with the same name landed at the canonical path.
I want toNot lose either file. Don't overwrite.
What should happenThe restore lands at <name>.restored.<timestamp>.<ext>. The existing file is unchanged. Both are now tracked.
Covers: RST.6
3.12 · status check
I want to see what the plugin tried and what it refused
Something feels off. I want a list of recent warnings.
I want toOpen prefs and see at a glance how much weirdness is queued up.
What should happenA "Sync warnings" row in prefs shows the count + a per-category breakdown (conflict, missing file, I/O error, suppressed, unknown target). Click "View" for the recent 100 entries. Click "Clear" to reset (listeners survive Clear, so the prefs pane keeps tracking).
Covers: WARN.1
3.13 · check and repair
Things look out of sync and I'm not sure what drifted
I open Settings, find the "Check & repair" tool, and ask it to scan. A list of issues comes back — some files whose canonical copy moved, a folder that stopped syncing, a stale entry blocking a rename. I want to fix what I choose and leave the rest alone.
I want toOpen Settings, run the Check & Repair scan, review each suggested fix with its plain-English explanation, apply only the ones I want.
What should happenThe tool scans tracking state, the watch folder on disk, and Zotero, then lists every inconsistency it finds. Items with annotations or notes are shown first and are never deleted. Suggested fixes are additive (tracking corrections, collection membership additions) — no file deletions, no bypassing of Zotero. Each fix re-validates at apply time; if conditions changed since the scan, the fix is skipped with a note. Applying a subset works: uncheck what you want to skip.
If it looks offAn issue you expected isn't listed → it may already be covered by an existing warning in the Sync warnings panel. Issues that require a manual decision (e.g. a conflict-blocked file) appear in the Sync warnings panel instead, with their own resolution UI.
Covers: I.29