Skip to main content

Release Notes 1.0.10

New Features

Library source note templates now have access to item.relatedItems — items linked to the current item via Zotero's Related tab (dc:relation). Each entry is resolved against ZotFlow's local database, so templates can render wikilinks, plain titles, or fallback placeholders depending on whether the related item has been synced.

Context fields per related item:

VariableTypeDescription
rel.keystringZotero item key (always present, parsed from the URI)
rel.libraryIDnumberLibrary ID parsed from the relation URI
rel.resolvedbooleantrue when the item was found in the local DB
rel.titlestring | undefinedTitle of the related item (only when resolved)
rel.itemTypestring | undefinedZotero item type (only when resolved)
rel.citationKeystring | undefinedCitation key, e.g. from Better BibTeX (only when resolved)
rel.notePathstring | undefinedVault path of that item's ZotFlow source note (only when resolved)

Cross-library or unsynced relations still appear in the list with resolved: false so templates can render placeholders rather than silently dropping them.

Example template snippet:

{%- if item.relatedItems.size > 0 -%}
## Related

{% for rel in item.relatedItems -%}
{% if rel.notePath -%}
- [[{{ rel.notePath }}|{{ rel.title }}]]
{%- elsif rel.title -%}
- {{ rel.title }} (`{{ rel.key }}`)
{%- else -%}
- `{{ rel.key }}` *(not synced)*
{%- endif %}
{% endfor -%}
{%- endif -%}

See the template guide for the full field reference.


Bug Fixes

"Update source notes" commands now process all library items

The Update all library source notes (skip up-to-date) and Force update all library source notes commands were silently doing nothing. The root cause was that the batch task expected an explicit item list from the caller, but the commands were passing an empty list, which the task treated as a no-op. Both commands now correctly enumerate every non-trashed top-level item across active libraries before scheduling the task.

The command names have also been updated to better reflect their behaviour:

Old nameNew name
Update all library source notes (incremental)Update all library source notes (skip up-to-date)
Update all library source notes (force update)Force update all library source notes