Releases: jsglazer/enhanced-notes
Release list
v1.0.107
Zotero 10 compatibility.
- Declares support for Zotero 10.0.x (
strict_max_version: 10.0.*); still supports Zotero 8 and 9. - Note picker (Link Creator) works with Zotero 10's reworked items list.
- Right-click → Export Notes works with Zotero 10's multi-selected collections and exports the notes from all of them.
- Creating a note and the template preview no longer throw when several collections are selected.
- The local HTTP endpoints (
/enhanced-notes/color-labels,/tag,/link) accept browser-style callers again, such as Obsidian'srequestUrl/fetch()or another plugin'sfetch(), which Zotero 10 otherwise drops without a response.
Auto-update manifest
Holds update.json, which Zotero reads to find new Enhanced Notes versions (the manifest's update_url). It is replaced on every release. Download the plugin from the numbered releases, not from here.
v1.0.106
v1.0.105
v1.0.97
Fixed — notes not saving in the Zotero editor
With two or more editor decoration features switched on (callouts, code highlighting, collapsible sections, KaTeX rendering), typing in a note rendered on screen but was never saved — the note was unchanged when you reopened it.
The plugin bundles its own copy of prosemirror-view, so the decoration sets its plugins return are not instanceof the DecorationSet inside Zotero's note editor. Zotero's DecorationGroup.from short-circuits on a single member, which is why one feature worked; with two or more it fell through to a path that reads m.members, put undefined into the group, and threw out of updateState → dispatchTransaction on every subsequent keystroke. The browser had already placed the character in the DOM, so it appeared, but the transaction never completed and Zotero never wrote the note.
- Our
DecorationSet.prototypenow answersmembers, so Zotero builds a valid group and calls back into our sets correctly. - A feature with nothing to draw contributes
nullrather than an empty set, so it isn't counted as a decoration source at all. - The plugin-install fallback now genuinely restores the previous editor state.
updateStateassigns the new state before updating the DOM, so the oldcatchleft the view half-configured while reporting that the editor was fine. - A markdown input rule that throws can no longer swallow a keystroke:
handleTextInputis guarded, logs once, and hands the keystroke back to ProseMirror.
Added
- Import from Markdown File in every note-creation menu. The command now appears wherever Enhanced Notes offers to make a note, matching what that menu creates — the item pane's + → standalone note and right-click an item → Enhanced Notes join the library toolbar's New Note ▾ and the item pane's Notes +.
Import Item Note from Markdown Filetranslated into German, Italian, Russian, Turkish and Simplified Chinese.
Removed
- The KaTeX stylesheet injection into the note editor. The editor is
resource://zotero/note-editor/editor.html, which may not link tochrome:URLs, so it was refused on every open and logged a Security Error. It was redundant — Zotero's own editor CSS already bundles KaTeX and its fonts.
v1.0.93
v1.0.78
Settings Sync
Keep your plugin settings identical on every computer.
Annotation colour labels, section order, note templates, editor and UI options, and markdown-sync settings now travel between machines inside a single note in your Zotero library, carried by Zotero's own sync. There's no cloud folder to set up, no second account, and nothing to configure per machine beyond ticking the box.
(Zotero syncs library data and, optionally, attachment files — it never syncs prefs.js or anything else in your profile. A library item is therefore the only Zotero-native channel available to a plugin, and a note is preferable to a stored attachment: it needs no file-sync setup and uses no storage quota.)
How it works
- The settings note is filed under an Enhanced Notes collection and tagged. Leave it in place; deleting it only removes the shared copy, never your local settings.
- When settings change on another computer, you're shown exactly which ones differ and asked before anything is applied — nothing is overwritten silently.
- Machine-specific state is deliberately never synced: per-note sync paths, window sizes, recent-note lists, and onboarding state.
- Export… and Import… buttons write the same payload to a JSON file, for moving settings between libraries that don't share a Zotero account.
Off by default — enabling it creates the note in your library, so it's opt-in. Turn it on under Settings → Enhanced Notes → Settings Sync. On the first machine, tick the box and hit Send settings now to create the note; other machines will offer to apply it on their next startup.
v1.0.68
First public release since v1.0.13 — bundles 68 commits of work that had been bumped in package.json but never released.
Templates
- Completed the migration to a sandboxed Liquid engine (the legacy arbitrary-JavaScript engine is removed) with an in-editor legacy → Liquid converter, live autocomplete, and a catalog-backed click-to-insert palette.
- System templates are now user-editable and persist across restarts (names reserved; Options → Reset restores defaults).
File Sync
- Background sync: Obsidian → Zotero edits propagate while Zotero is unfocused; idle-gated refresh of a focused note (never overwrites in-progress typing).
- Automatic 3-way merge of non-conflicting edits; stat-gated (mtime) checks for efficiency.
Other
- Tools-menu keyboard shortcuts (⌃⌥L / ⌃⌥M / ⌃⌥T, plus ⌃⌥S / ⌃⌥P).
- Annotation color labels + grouped-annotation export.
- CI / CodeQL / OpenSSF Scorecard workflows and a unit-test suite.
- Internal hardening: centralized editor-internal adapter, removable-while-enabled fixes.
Install: download better-notes.xpi below → Zotero → Tools → Plugins → gear → Install Plugin From File.
v1.0.13
Changes in v1.0.13
- Fix: "Export Current Note" created no file — first export was blocked by the no-auto-recreate guard added in v1.0.12. Now correctly distinguishes a first export (
lastsync == 0) from a file that was deleted after a prior sync. - Fix: Sync operations (Cleanup, auto-sync, Sync Manager) were inspecting notes in Zotero's trash. Trashed notes are now excluded from all sync operations.
Changes in v1.0.12
- Fix: Extra blank lines between list items in Obsidian-exported markdown — lists were being serialized as "loose" by remark-stringify.
- Fix: Obsidian filename now consistently uses the BetterBibTeX cite key. System templates are force-reset to their shipped defaults on startup;
getMDFileNamealways runs the[ExportMDFileNameV2]template. - Fix: Sync no longer auto-recreates destination files that were deleted from Obsidian (only skips if the file was previously synced; first exports still work).
- New: Sync Manager validates destination files on open/refresh. Missing-file entries show in red. Clicking an orphaned entry shows a 5-option dialog: delete entry / remap to new file / delete + Zotero note / delete + Zotero note + file / exit.