Releases: ZorroStardust/zotero-vim-plus
Release list
v1.9.0 — colored-tag shortcuts and edit-mode tab guard
What's new in v1.9.0
New: Zotero colored-tag shortcuts (issue #3)
main:t1 … main:t9 toggle Zotero's colored tag at position N for the
currently selected items in the items pane, mirroring Zotero's native
Digit1…Digit9 behavior. main:t0 clears every colored tag from
the selection. Implemented via Zotero.Tags.getColorByPosition and
Zotero.Tags.removeColoredTagsFromItems, wrapped in
Zotero.DB.executeTransaction + UndoHistory.stageAction, so the
toggle is indistinguishable from the native action.
| Shortcut | Behavior |
|---|---|
t1 … t9 |
Toggle Zotero colored tag 1–9 |
t0 |
Remove all colored tags from selection |
Only fires in the items pane. Mixed-library selections are rejected
(colored tags are library-scoped).
Fixed: Shift+J/K tab switching while editing a note (issue #5)
Shift+J and Shift+K no longer switch tabs when the user is editing
text in a note editor (side panel, annotation popup, or this plugin's
own comment overlay). The guard now checks DOM focus inside all three
editor surfaces, including the PDF.js iframe where the plugin's overlay
textarea lives.
Internal
- New regression:
tools/check-count-digit-guard.js(7 cases for #3). - New regression:
tools/check-insert-mode-shifts.js(11 cases for #5). - Listener-cleanup regression test from PR #4 is also part of this release.
Full changelog since v1.8.2:
9078a4echore(release): bump to v1.9.00fd2041feat(main): add t1..t9 colored-tag shortcuts, t0 clears (#3)26e18cbfix(main): don't switch tabs on Shift+J/K while editing a note (#5)
Compatible with Zotero 7.0 ~ 10.*.
v1.8.2 — Zotero 10 support
Support Zotero 10 (bump strict_max_version to 10.*).
v1.8.1
Fixes
- Bind Enter (
normal:enter) toeditAnnotationwhile keepingnormal:returncompatibility. - Await annotation-comment autosave
saveTx()so async failures are observable. - Prevent stale insert sessions from reopening the comment overlay after Escape.
- Remove TEMP diagnostic key/focus/pointer trace logging from production builds.
- Avoid false "PDF loading…" status on EPUB/snapshot views.
- Keep existing mouse selections working with visual-mode motions and
o. - Add Cursor mode rows to the Preferences keybinding editor and fix their ordering/colours.
- Add missing
focusReaderSidebaraction label for EN/zh-CN. - Fix reader listener partial-registration leak and missing
resizelistener cleanup. - Remove duplicate switch cases and clean up note-editor listener deduplication.
- Expand build checks (
bootstrap.js,i18n.js) andtools/check-sync.jsvalidation. - Update marks-persistence documentation to match the parent-item Extra-field backend.
Known functional issues in PENDING_ISSUES.md (ZV-001, ZV-002, ZV-004) are intentionally not included in this release.
v1.8.0
New features
- Two-stage hint targeting (Visual + Cursor mode): uppercase multi-letter hint badges at sentence starts; picking one opens word-level hints inside that sentence (the sentence start keeps its label, so pressing it twice jumps straight there). Vimium-style filtering: typed prefix dims, non-matching badges hide, Backspace steps back, Escape goes fine -> coarse -> normal. Badges stay glued to the text while scrolling/zooming.
- Multi-column PDF support: columns are auto-detected; j/k move within the column and wrap at column ends, 0/$ stay in the column, h/l/w/b and sentence/paragraph motions follow the reading flow across column breaks, and hints no longer leak into neighbouring columns.
Fixes
- Hint badge positions no longer drift or cascade away from their words.
- Fine-stage word hints stay strictly inside the selected sentence.
v1.7.1 - Native comment editors + re-patch loop fix
Changes since v1.7.0
- Zotero's own annotation popup and sidebar comment fields are fully usable again: clicking into either while the plugin overlay is open saves and closes the overlay and hands over to the native editor; while any native editor has focus the plugin is completely inert (no key consumption, no focus moves); Escape inside native editors keeps its Zotero behavior.
- Fixed an endless re-patch loop (457k log lines) and an unboundedly nested wrapper chain: the view patches are now applied once per view; log growth is back to normal (rescan logging throttled to once per 5 s).
- Insert overlay: Enter newline, Esc save, 2 s autosave, popup guard as backstop — verified via zv-startup.log traces.
v1.7.0 - Insert mode annotation comment overlay
What's new
- Press \i\ on a selected annotation to edit its comment in the plugin's own floating input box over the PDF (native typing + IME, Enter for new lines).
- Existing comment is pre-filled; Esc saves, re-entering shows the saved text.
- Fixed: Zotero 9 opened its annotation popup on Enter (and ate the newline) - Enter now inserts a newline only, via a _textAnnotationFocused\ patch.
- Fixed: comments were never loaded or saved (\Zotero.Items.get()\ accepts numeric IDs only).
- 2s autosave safety net, stray-popup guard, re-patch on view recreation.
v1.6.3
v1.6.3
Scroll overhaul
- Three mutually exclusive scrolling modes (step / constant-speed / accelerating), default constant-speed
- Scroll mode and parameters save automatically; only the active mode's parameters are shown
Fixes
- Scroll behavior is now per-call: page turns (h/l, gg/G) are always instant; half/full-page and zt/zz/zb keep their smooth motion; ctrl+d/u smoothness no longer leaks into page turns
- Cross-compartment scroll options passed via cloneInto (Xray-safe)
Preferences panel reliability
- Mode/marks checkboxes, scroll settings and dropdowns save reliably
- Stable pane id: settings open on the last-used section after restart
- Native menulist dropdowns fix first-open dead controls
- Robust pane init (unbounded retry + MutationObserver)
v1.6.2
What's New
Marks persistence fixed on Zotero 9
Marks now survive Zotero restarts. Root cause was a triple Zotero 9 API difference:
- \Zotero.Item\ has no .extra\ property — fields must go through \getField/\setField\ (a plain assignment was silently never written to the database)
- The \extra\ field is not valid for \�ttachment\ items in Zotero 9
- Child notes cannot be parented to attachments in Zotero 9
Marks are now stored as \zv-marks-: {json}\ lines in the parent item's Extra field (synced via Zotero sync, one line per PDF under the same item), with a device-local pref as fallback. Enable via Preferences → Marks → Persist marks.
v1.6.1
What's New
Startup robustness (Zotero 9 focus)
- Reader sweep now enumerates \Zotero.Reader._readers\ — the old \Zotero_Tabs.tabs\ API does not exist in Zotero 9, so the sweep was silently dead there. Restored readers are now injected ~11ms after startup.
- Two-phase bootstrap startup: readers/panes wired before Zotero's initialization completes (idempotent).
- Main-window keys are forwarded to the selected reader (hjkl etc. work without clicking into the PDF); the PDF iframe is auto-focused on the first forwarded key.
- All keys landing on the reader's outer document are now routed to the reader.
- \PDF loading…\ status feedback while the PDF document is still loading.
- Marks loading retries while the item database is not ready yet.
Known issue (shelved, ZV-004 in PENDING_ISSUES.md): after a restart, restored readers may ignore hjkl for a few seconds until the PDF finishes loading — pre-existing behavior, also present in v1.5.0.
v1.6.0
What's New
Vim-style Marks (GitHub issue: number-key tags from sioyek)
- \m\ set a mark, \<x>\\ jump back, \dm\ delete, \dM\ delete all
- Mark characters: \�-\z\ and \