Skip to content

Releases: jsglazer/enhanced-notes

v1.0.107

Choose a tag to compare

@jsglazer jsglazer released this 26 Sep 17:27

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's requestUrl/fetch() or another plugin's fetch(), which Zotero 10 otherwise drops without a response.

Auto-update manifest

Auto-update manifest Pre-release
Pre-release

Choose a tag to compare

@jsglazer jsglazer released this 28 Sep 15:36

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

Choose a tag to compare

@jsglazer jsglazer released this 10 Sep 16:37

Full Changelog: v1.0.105...v1.0.106

v1.0.105

Choose a tag to compare

@jsglazer jsglazer released this 05 Sep 20:03

Full Changelog: v1.0.97...v1.0.105

v1.0.97

Choose a tag to compare

@jsglazer jsglazer released this 04 Sep 17:20

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.prototype now answers members, so Zotero builds a valid group and calls back into our sets correctly.
  • A feature with nothing to draw contributes null rather 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. updateState assigns the new state before updating the DOM, so the old catch left the view half-configured while reporting that the editor was fine.
  • A markdown input rule that throws can no longer swallow a keystroke: handleTextInput is 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 File translated 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 to chrome: 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

Choose a tag to compare

@jsglazer jsglazer released this 04 Sep 14:25

Full Changelog: v1.0.78...v1.0.93

v1.0.78

Choose a tag to compare

@jsglazer jsglazer released this 30 Aug 18:21

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

Choose a tag to compare

@jsglazer jsglazer released this 15 Jun 22:39

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

Choose a tag to compare

@jsglazer jsglazer released this 03 Jun 18:59

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; getMDFileName always 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.