Skip to content

Releases: Liotou/zotero-annota

Annota v2.25.0

Choose a tag to compare

@Liotou Liotou released this 25 Aug 13:59

Full Changelog: v2.24.0...v2.25.0

Annota v2.24.0

Choose a tag to compare

@Liotou Liotou released this 16 Aug 12:38

Full Changelog: v2.23.0...v2.24.0

Annota v2.23.0

Choose a tag to compare

@Liotou Liotou released this 16 Aug 12:32

Full Changelog: v2.22.0...v2.23.0

Annota v2.22.0

Choose a tag to compare

@Liotou Liotou released this 16 Aug 12:26

The settings panel now tells you what it is about to ignore

A field named page was silently dropped — page is a built-in variable — with
nothing but a line in the debug log. The field simply vanished from the form.

The panel now checks the schema as you type and shows, right under the field
box, what will not be applied (error) or applied differently (warning):

  • reserved name — says what the built-in variable holds, says the field is
    IGNORED, and offers a valid fallback (page → myPage);
  • duplicate name, pointing back at the first declaration;
  • unknown type or format, select with no options, ai field with no
    instruction;
  • a name containing dropped characters (my field → myfield);
  • {{xxx}} in the prompt or layout that matches nothing — a typo that used
    to be substituted by emptiness without a word;
  • {{ai}} used in the prompt, where it means nothing.

Checking is immediate; saving stays deferred. You want the warning while typing,
not 2.5 seconds later.

A complete colour scheme

PROMPT-EXAMPLES.txt gains eight colours, one per reading gesture: read,
contest, record a finding, define, describe a method, quote verbatim, flag for
checking, and one colour Annota never touches.

Writing it, the new guardrail caught title — reserved — in the yellow example.

Annota v2.21.0

Choose a tag to compare

@Liotou Liotou released this 15 Aug 20:05

Failures no longer pass unnoticed

A failed call used to leave a highlight with no comment — indistinguishable from
one you left bare on purpose, and only noticed on re-reading.

  • Retries. A dropped connection or a stumbling model gets another go. A
    refused key or a missing model is never retried: the HTTP status says the
    answer would be identical. (The status now travels on the error object —
    httpJSON used to bury it in the message, and deciding on a string was
    fragile.)
  • Tagging. What still fails is tagged on the annotation: visible in the
    reader, searchable in the library. A later success removes the tag in the same
    write, so nothing lingers.
  • Retry failed comments — a new entry in the right-click Annota submenu,
    replaying only the tagged annotations whatever their comment. Catch up after
    your provider was down, without regenerating everything.
  • An empty comment is only flagged when it follows a model call. An empty
    result with no call — unconfigured color, blank form — is normal and stays
    silent.

Structured output

Where the provider supports it (Mistral / OpenAI-compatible, Ollama), field
filling now asks for a JSON object via response_format instead of
name: value lines. Small local models are the ones that stumble on free-form
formats. If the reply isn't usable JSON, Annota falls back to the old reader
rather than losing the answer.

Housekeeping

Six consecutive fixes had chased reader keyboard shortcuts one at a time.
keyboard-manager.js has now been read end to end: three guards catalogued, ten
shortcuts reachable while typing, six unguarded but none obtainable without a
modifier. A test checks every form control against every guard, and carries a
canary that fails if a field is ever added without protection.

Annota v2.19.0

Choose a tag to compare

@Liotou Liotou released this 15 Aug 19:53

The footer now names the swatch to click

It used to read "Yellow — click a color to save": the name on one side, the
instruction on the other, without saying which one to click. It now reads
"Click Yellow above to save", preceded by a small square in that color —
in a row of eight circles, a color is recognised faster than it is read.

Hovering an unconfigured color says so

Nothing happened before: the previous group stayed on screen, suggesting those
fields would be saved under the color you were about to click. Every swatch is
now listened to, and a color with no fields answers "Green — no fields
configured"
.

An icon

Three lines of text with the middle one highlighted — what the plugin does, in
one image. Shown in Zotero's add-ons manager.

Annota v2.18.0

Choose a tag to compare

@Liotou Liotou released this 15 Aug 18:25

Full Changelog: v2.17.0...v2.18.0

Annota v2.17.0

Choose a tag to compare

@Liotou Liotou released this 15 Aug 14:59

One field group per color

The selection popup used to stack the union of every color's fields, so
reaching the red ones meant scrolling past yellow and green. (The resulting
comment was always correct — only the chosen color's fields are used — but the
form was a wall.)

Clicking a swatch creates the annotation outright, so there is no "pick a
color, then confirm" step to hook into. Annota therefore shows the fields of the
color you are about to click: hover a swatch and its group replaces the
previous one. No extra click — the gesture stays hover, type, click.

  • Until you hover anything, the last color you used is shown.
  • What you typed survives switching groups, so looking at another color
    costs nothing.
  • A color with no fields never takes over.
  • If the popup's structure isn't recognised, Annota shows its own swatches
    rather than guessing which button is which color.

Fix: Read Aloud firing while typing

Zotero 9's reader reserves bare keys — r and l start Read Aloud, h and u
annotate, space pauses — so typing them into a field triggered those functions.
The previous attempt stopped events on the way up; the reader listens in the
capture phase on the window, before the keystroke ever reaches our fields.

Its only escape hatch is isTextBox(event.target), which recognises
<input type="text"> and contenteditable elements — but not <textarea>,
<select> or checkboxes. Hence the intermittence: never while typing a title,
always in a paraphrase containing an "r". Those controls now carry the attribute
that makes them count as a text box.

Annota v2.16.0

Choose a tag to compare

@Liotou Liotou released this 15 Aug 14:53

Full Changelog: v2.15.0...v2.16.0

Annota v2.15.0

Choose a tag to compare

@Liotou Liotou released this 15 Aug 14:47

Full Changelog: v2.14.0...v2.15.0