github duanxianpi/obsidian-zotflow 0.4.0

11 hours ago

Release Notes 0.4.0

Breaking Changes

sourceNoteFolder and localSourceNoteFolder are deprecated

The fixed-folder settings sourceNoteFolder and localSourceNoteFolder have been replaced by configurable path templates:

Deprecated Setting Replacement
sourceNoteFolder librarySourceNotePathTemplate
localSourceNoteFolder localSourceNotePathTemplate

Migration: Existing sourceNoteFolder / localSourceNoteFolder values in data.json are preserved but no longer used at runtime. To replicate your old folder layout, set the path template to include your folder. For example, if sourceNoteFolder was "MyNotes", set librarySourceNotePathTemplate to:

MyNotes/@{{citationKey | default: title | default: key}}

The old settings will be removed in a future release.

New Features

Configurable Note Path Templates

Source note file paths are now fully customizable using LiquidJS templates. Previously, note paths were hardcoded to a fixed <folder>/<libraryName>/@<citationKey>.md pattern. You can now define your own path structure using any metadata field from your Zotero items or local files.

New settings:

  • Library Source Note Path Template — Controls where Zotero source notes are created.
    Default: Source/{{libraryName}}/@{{citationKey | default: title | default: key}}
  • Local Source Note Path Template — Controls where local attachment source notes are created.
    Default: Source/Local/@{{basename}}

Examples:

# Organize by year and author
{{year}}/{{creators[0].name}}/@{{citationKey}}

# Organize by item type
References/{{itemType}}/{{citationKey}}

# Use publication title
Journals/{{publicationTitle | default: "Uncategorized"}}/{{citationKey}}

All template variables from the source note template (title, creators, date, DOI, tags, etc.) are available for path construction. Values are automatically sanitized for filesystem safety, with date fields (date, dateAdded, dateModified, accessDate) preserved as-is to keep ISO 8601 formatting intact.

Template Testing View

A new Template tab in the Activity Center lets you interactively develop and test templates without modifying any files.

Item Paths in Template Context

A new itemPaths variable is available in both source note and path templates, providing access to resolved attachment paths for the current item.

Embeddable Markdown Editor Improvements

The reusable markdown editor component gained several new options:

  • sourceMode — Render in plain source mode instead of live preview.
  • readOnly — Make the editor non-editable.
  • showLineNumbers — Display line numbers in the gutter.

Internal Improvements

  • Unified naming: "NoteService" → LibraryNoteService, "TemplateService" → LibraryTemplateService. API surfaces renamed accordingly (workerBridge.noteworkerBridge.libraryNote).
  • Extracted BaseItemSearchModal from ZoteroSearchModal for reuse. New ItemPickerModal and FilePickerModal for item/file selection.
  • Path sanitization preserves date fields to avoid mangling ISO 8601 strings.
  • Updated AGENTS.md with .zf.json sidecar documentation.

Don't miss a new obsidian-zotflow release

NewReleases is sending notifications on new releases.