Features
- vulpea#251 Automatically detect when global tag inheritance settings (
org-use-tag-inheritance,org-tags-exclude-from-inheritance) change between sessions and trigger a forced re-index. A fingerprint of these settings is stored in the database; on startup, if the fingerprint differs, the file change cache is cleared so all files are re-extracted with the new settings. Per-buffer overrides (e.g. via.dir-locals.el) are not tracked — usevulpea-db-sync-update-directorywith a force argument after changing those.
Fixes
- vulpea#267 Fix
Wrong type argument: hash-table-perror during async sync. Whenorg-id-update-id-locationsis running,org-id-locationsis temporarily an alist. If a vulpea timer fires in that window,org-id-add-locationfails. Noworg-id-locationsis defensively converted to a hash table before registering IDs. - Fix
org-elementparser errors ("Invalid search bound",wrong-type-argument integer-or-marker-p) when building the database from scratch. The reusable parse buffer replaces its contents withinhibit-modification-hooksset, leaving theorg-elementcache stale from the previous file. Noworg-element-cache-resetis called after each buffer replacement.
Features
- vulpea#243 Automatic database rebuild on schema version change. When
vulpea-db-versionchanges, the database file is deleted and recreated from scratch on next access. Whenvulpea-db-autosync-modeis active, a forced re-index of all files is triggered automatically. - vulpea-journal#3 Add
vulpea-db-extra-extensionsfor tracking non-.org files (e.g.,.org.age,.org.gpg). Files with extra extensions are always parsed viafind-fileto support decryption hooks. Default isnil(opt-in only). - Store link descriptions in the database. Links now include a
:descriptionfield extracted during parsing, eliminating the need for file I/O when querying link descriptions. Thevulpea-db-query-links-*functions now return plists with:source,:dest,:type,:pos, and:descriptionkeys. Database schema version bumped to 3 (existing databases will rebuild automatically). - vulpea#212 Add title propagation system for renaming notes:
vulpea-propagate-title-change- interactive command to rename a note’s title and update incoming link descriptions. Supports dry-run withC-uprefix, categorizes links into exact matches (auto-update) and partial matches (manual review), and optionally renames the file.vulpea-rename-file- function to rename a note’s file based on a new title slug and update the database.vulpea-title-change-detection-mode- minor mode that detects title changes on save and notifies the user to runvulpea-propagate-title-change.
- vulpea#211 Add per-note tag operations in new
vulpea-tags.elmodule:vulpea-tags(get),vulpea-tags-add,vulpea-tags-remove,vulpea-tags-set. These work with both file-level notes (filetags) and heading-level notes (org heading tags). - vulpea#211 Add batch tag operations:
vulpea-tags-batch-add,vulpea-tags-batch-remove, andvulpea-tags-batch-rename. The rename function implements vulpea#120, allowing global tag renaming across all notes.vulpea-tags-batch-renameis interactive with completion for existing tags. - vulpea#211 Add batch metadata operations:
vulpea-meta-batch-setandvulpea-meta-batch-removefor efficiently setting or removing metadata properties across multiple notes. Both usevulpea-utils-process-notesfor optimized batch processing. - vulpea-journal#2 Extend
vulpea-createwith:parentand:afterparameters for creating heading-level notes under existing notes. When:parentis avulpea-note, a heading is inserted in the parent’s file atparent-level + 1.:aftercontrols insertion order:'last(default, append as last child),nil(insert as first child), or a note ID string (insert after that sibling).
Fixes
- vulpea#248 Heading-level notes now inherit tags from their file’s
#+filetagsand from parent headings, matching standard org-mode tag inheritance behavior. Inheritance respectsorg-use-tag-inheritanceandorg-tags-exclude-from-inheritance.vulpea-buffer-tags-getnow accepts an optional LOCAL argument to return only the heading’s own tags without inheritance. - vulpea#227 Enable alias expansion by default in
vulpea-findandvulpea-insert. Previously, notes could only be found by their primary title even though the:expand-aliasesfeature existed invulpea-select-from. Now both functions pass:expand-aliases tby default, so notes with aliases appear multiple times in the completion list — once for the original title and once for each alias. - vulpea#232 Support aliases on heading-level notes. Previously, aliases were only extracted for file-level notes. Now heading-level notes with
:ALIASES:(or:ROAM_ALIASES:etc.) properties are extracted and appear invulpea-findvia alias expansion. - vulpea#221 Fix links in note titles not being persisted to the normalized
linkstable. Previously,vulpea-db--extract-links-from-stringset:postonil, which violated theNOT NULLconstraint on thelinkstable, causing silent insertion failure. Title links were stored in thenotesJSON column but not in thelinkstable, sovulpea-find-backlinkcould not find notes linked via their titles. Now buffer positions are computed correctly for title links. Additionally, links in non-note heading titles (headings without:ID:) are now extracted and attributed to the nearest ancestor note. - vulpea#221 Strip Org emphasis markers from titles, aliases, and outline paths during extraction. Previously, notes with Org emphasis markup (e.g. ==code==,
~verbatim~,*bold*,/italic/,_underline_,+strikethrough+) in their titles appeared with raw markers invulpea-findcompletion. Now emphasis markers are removed at extraction time, consistent with how org link markup is already stripped. - vulpea#238 Fix sync failure with packages that add read-only text properties (e.g.
org-transclusion). When org-mode hooks marked regions as read-only in the shared parse buffer,erase-bufferwould fail on the next file, causing all subsequent files to fail with “Text is read-only”. - vulpea-journal#5 Fix
~paths in database causing query mismatches.vulpea-db-sync--list-org-filesnow expands directory paths before callingdirectory-files-recursively, consistent withvulpea-db-sync--scan-files-async. Previously, whenvulpea-db-sync-directoriescontained~/notes, the database stored paths with~unexpanded, causing exact-match lookups to fail. - vulpea#252 Fix
vulpea-find-backlinkfailing when cursor is inside a heading without its own ID. The function now inherits the ID from the nearest ancestor (parent heading or file-level note). Additionally, the resolved ID is validated against the database — if it does not correspond to a known note, a clear error is shown. - vulpea-journal#5 Change
vulpea-default-notes-directorydefault from(car vulpea-db-sync-directories)tonil. The old default was evaluated once at load time, beforeuse-package :customcould take effect, causing stale values. Whennil, it dynamically resolves viavulpea--default-directory. - vulpea#255 Fix fswatch sync ignoring file changes when
vulpea-db-sync-directoriescontains relative paths (e.g.~/notes). The fswatch path validator now expands directory paths before comparison, consistent with all other sync functions. - vulpea#257 Extract
#+CATEGORYkeyword at file level as a property. Previously only:CATEGORY:in the:PROPERTIES:drawer was captured. - vulpea-journal#9 Fix
vulpea-note-propertiesreturning symbol keys after database round-trip.json-parse-stringwith:object-type 'alistproduces symbol keys, but the rest of the API uses string keys consistently. Property keys are now converted back to strings invulpea-db--row-to-note. - vulpea#260 Fix first heading with
:ID:not being indexed when the file has no file-level ID. The file-level property extraction was searching the entire AST for a property drawer, accidentally finding the first heading’s drawer and stealing its ID for a bogus file-level note. - vulpea#250 Fix
vulpea-buffer-tags-getonly reading the first#+filetagsline. When a file has multiple#+filetagslines, all lines are now collected and merged.vulpea-buffer-tags-setalso consolidates multiple lines into a single#+filetagsline. - vulpea#262 Fix
org-attacherror during parsing whenorg-latex-preview-modeis active andorg-attach-id-diris relative. The shared parse buffer now setsbuffer-file-namebefore loading file contents and inhibits modification hooks during buffer population. - vulpea#263 Add
:noquery tto the fswatch process so Emacs does not prompt about it when exiting.
Features
- vulpea#206 Add
vulpea-db-query-dead-linksfor finding broken ID links that point to non-existent notes. Returns a list of cons cells(SOURCE-NOTE . BROKEN-TARGET-ID). Only checks links of type “id”; other link types are ignored. - vulpea#207 Add
vulpea-db-query-orphan-notesfor finding notes with no incoming ID links, andvulpea-db-query-isolated-notesfor finding notes with no incoming or outgoing ID links. - vulpea#208 Add
vulpea-db-query-title-collisionsfor finding notes that share the same title. Returns list of(TITLE . NOTES)groups. - vulpea#209 Add link querying API:
vulpea-db-query-links(all links),vulpea-db-query-links-by-type(filter by type),vulpea-db-query-links-from(outgoing links from a note),vulpea-db-query-links-to(incoming links to a note). All return plists with:source,:dest,:type, and:poskeys.
Fixes
- vulpea#221 Strip org link markup from note titles during extraction. Previously, titles containing org links (e.g.
The Memory Illusion [[id:...][book]]) were stored verbatim with raw link syntax. Noworg-link-display-formatis applied at extraction time so titles, file-titles, and outline paths are stored as clean display text. Links from titles are still extracted and persisted in the links table. - vulpea#222 Normalize property keys to uppercase during extraction. Previously, files with lowercase property names (e.g.
:id:instead of:ID:) were silently skipped becauseassoclookups are case-sensitive. Now property keys are upcased at the extraction boundary, matching org-mode’s case-insensitive treatment of properties.
Performance
- Make polling-based external change detection non-blocking. Previously,
vulpea-db-sync--check-external-changesused synchronousdirectory-files-recursivelyevery poll interval (~1s blocking per cycle with 13k files). Now uses asyncfd(orfind) subprocess for file listing, reducing blocking time from ~1000ms to <1ms per poll cycle. Thefile-attributescomparison (~170ms) runs in the subprocess callback without freezing Emacs.
Features
- Add
vulpea-db-query-attachments-by-pathfor efficiently querying all attachment link destinations for notes at a given file path. Returns a list of cons cells(DEST . ATTACH-DIR)whereDESTis the attachment file name andATTACH-DIRis the attachment directory of the note containing the link. Uses a single SQL query with JOIN, avoiding N+1 queries when processing multiple notes in a file.
Performance
- Async autosync startup is now non-blocking. When
vulpea-db-sync-scan-on-enableis'async, the startup function returns in ~8ms instead of ~1400ms (measured with 13,800 files in GUI Emacs). File listing uses anfd(orfind) subprocess instead of synchronousdirectory-files-recursively, and cleanup of deleted files uses set comparison against the subprocess output instead of per-filefile-exists-pcalls. Whenfswatchis active, filenotify watchers are skipped entirely as they are redundant. Addedvulpea-db-sync-debugvariable for timing instrumentation.
Fixes
- vulpea#200 Fix heading-level metadata not being persisted to the database. Previously,
vulpea-db-query-by-meta-keyandvulpea-db-query-by-metareturned no results for heading-level metadata becauseorg-element-mapwith NO-RECURSION'headlinewouldn’t descend into the headline element itself during extraction. - Fix headline link extraction including links from child headlines. Previously, when extracting links for a heading-level note, all links from nested child headlines were also included. This caused issues with attachment resolution in tools like
publicatorg, where attachments would be incorrectly resolved using parent heading’s attachment directory instead of the actual heading containing the link. - vulpea#202 Fix link extraction to include links from non-note subtrees. Previously, links inside headings without an ID were not attributed to any note. Now links in non-note subtrees are collected as part of the nearest ancestor note, while still respecting note boundaries (headings with IDs).
Fixes
vulpea-createnow refuses to overwrite existing files. Previously, if a file existed at the target path but was not in the vulpea database,vulpea-createwould silently overwrite it. Now it signals an error, preventing accidental data loss.
Breaking changes
- vulpea#128
vulpea-insertnow uses keyword arguments instead of positional optional arguments. Change(vulpea-insert filter-fn create-fn)to(vulpea-insert :filter-fn filter-fn :create-fn create-fn).
Features
- vulpea#178 Add
file-titleslot tovulpea-notethat stores the title of the file containing the note. For file-level notes, this equals the note’s title. For heading-level notes, this is the parent file’s title. Useful for displaying context without additional queries. - vulpea#178 Add
vulpea-select-describe-outlineandvulpea-select-describe-outline-fullfunctions for displaying notes with their parent hierarchy in selection interfaces. Setvulpea-select-describe-fnto use them. - vulpea#128 Add
:candidates-fnargument tovulpea-insert, aligning withvulpea-find. Allows customizing the source of candidates for note selection during insert. - vulpea#75 Add heading-level metadata support to
vulpea-meta-*andvulpea-buffer-meta-*functions. Metadata operations now scope to the correct level based on the note: file-level notes access metadata before any headings, while heading-level notes access metadata within their subtree. This ensures consistent behavior between database extraction (which already supported heading-level meta) and the API.
Performance
- vulpea#129 Optimize
vulpea-db-query-by-tags-every,vulpea-db-query-by-tags-none, andvulpea-db-query-by-links-everyto use single SQL queries with subqueries instead of two separate queries. Provides ~1.3-1.4x speedup for large result sets. - vulpea#66 Add
vulpea-meta-set-batchandvulpea-buffer-meta-set-batchfor setting multiple metadata properties efficiently. Parses the buffer only once instead of N times, providing significant speedup (2-10x depending on property count).
Fixes
- Interactive meta commands (
vulpea-meta-add,vulpea-meta-add-list,vulpea-meta-remove,vulpea-meta-clean) now correctly operate on the note at point, including heading-level notes.
This is a complete rewrite of Vulpea that removes the dependency on org-roam. Vulpea now manages its own database and provides all functionality independently.
Breaking changes
org-roamis no longer required. Vulpea manages its own SQLite database.- Database location changed from org-roam’s db to
vulpea-db-file(default:vulpea.dbinvulpea-directory). vulpea-db-updaterenamed tovulpea-db-update-file.
New Sync System
Vulpea now has its own file synchronization system (vulpea-db-sync.el):
- Multiple backends:
filenotify(default),fswatch(for large directories),polling(fallback). - Async batched updates to avoid blocking Emacs.
- Configurable via
vulpea-db-sync-backend,vulpea-db-sync-directories. - Start with
vulpea-db-sync-start, stop withvulpea-db-sync-stop.
vulpea-note changes
- Links now include
:pos(buffer position) in addition to:sourceand:dest. - All link types are captured:
id,https,file,attachment, etc. - New slot
:attach-dirfor attachment directory path.
New Query Functions
vulpea-db-query-by-directory- query notes by directory path.vulpea-db-query-by-file-path- query notes by exact file path.vulpea-db-search-by-title- search notes by title substring.vulpea-db-query-by-created-date- query notes by creation date (fromCREATEDproperty).vulpea-db-query-by-property- query notes by property key and value.vulpea-db-query-by-property-key- query notes that have a specific property.
Fixes
- Fix inconsistency where directory scans (
vulpea-db-sync-update-directory,vulpea-db-sync-full-scan, initial scan, and polling) would index files in hidden directories (paths containing/.*), while file watchers excluded them. Now all sync methods consistently exclude hidden directories. - Fix fswatch filter incorrectly processing partial paths when output is split across buffer boundaries, which could cause scanning of directories outside the watched paths.
Features
- Exclude archived entries from the database by default. Controlled by
vulpea-db-exclude-archived(defaultt). Entries are considered archived if they have theorg-archive-tag(directly or inherited) or theARCHIVE_TIMEproperty. - Populate
created-atcolumn fromCREATEDproperty during extraction. Enables efficient querying of notes by creation date viavulpea-db-query-by-created-date. - Add normalized
propertiestable for efficient property-based queries. Properties are now stored both in the JSON blob (for full note retrieval) and in a normalized table (for indexed queries viavulpea-db-query-by-propertyandvulpea-db-query-by-property-key). - Add
vulpea-note-expand-aliasesutility function that expands a note into multiple notes based on aliases. Returns a list where the first element has the original title and subsequent elements have each alias as title withprimary-titleset to the original. Useful for selection interfaces. - Add
:expand-aliasesparameter tovulpea-select,vulpea-select-from, andvulpea-select-multiple-from. When non-nil, notes with aliases appear multiple times in completion - once for the original title and once for each alias. Selected alias notes have the alias astitleand original asprimary-title.
Last release based on org-roam. Future versions (v2) will be independent of org-roam.
Features
- Include attachment directory in
vulpea-noteandnotestable. - vulpea#130 Introduce mechanism to automatically rebuild database when needed. This happens either on the first usage of Vulpea or when
vulpea-db-versionincreases. - vulpea#158 Introduce mechanism to define more tables in Org Roam database (see
vulpea-db-define-table). And provide a hook to fill defined tables with data (seevulpea-db-insert-note-functions). - Handle forced database sync. Whenever it happens, make sure that all the extra tables are initialized and versions are set accordingly.
- Respect aliases used in the meta blocks when extracting value as a note.
- Introduce
vulpea-insert-default-candidates-source. - Introduce
vulpea-db-query-by-tags-none. - Include
outline-pathinvulpea-noteand bumpnotestable version (i.e. a full rebuild is required). - Introduce
vulpea-db-query-by-level, which returns all notes of a givenLEVEL. - Improve performance of
vulpea-meta-get-listandvulpea-note-meta-get-listfor notes by using single call to db. - Allow to pass meta when creating a new note.
- Allow to control how new note is created when a non-existent one is picked in the insert flow.
- Allow to pass Org capture properties when creating a new note.
- Introduce shortcuts for checking of a note links to all/any of the given links.
- Allow to override description in
vulpea-utils-link-make-string. - Function to sort metadata in a buffer.
vulpea-select-multiple-fromfunction.
This release’s main feature is a dedicated view table to boost the performance of query operations. In addition, it provides some specialized queries for situations when the set of notes can be narrowed down by tags or links.
In addition, vulpea-note now has properties, meta and links as part of its structure.
Features
- vulpea#97 Expose properties in
vulpea-note. - vulpea#100 Persist note meta in
org-roam-db. - vulpea#100 Provide an API to access/extract data from
vulpea-note-meta:vulpea-note-meta-get-list- to get all values of givenPROPandTYPE.vulpea-note-meta-get- to get the first value of givenPROPandTYPE.
- New function to remove buffer properties -
vulpea-buffer-prop-remove. - Improve
filetagshandling:- Property format them with
:as separator; - Remove property when setting them to empty list instead of leaving empty property.
- Property format them with
- New function to select on arbitrary list of notes as opposed to relying on filter -
vulpea-select-from. - vulpea#106 Include links in
vulpea-note. - vulpea#106 Provide more functions to query notes in efficient manner:
vulpea-db-query-by-tags-some- return all notes tagged with one of the providedTAGS;vulpea-db-query-by-tags-every- return all notes tagged by every tag from the list of providedTAGS;vulpea-db-query-by-links-some- return all notes linking at least one of the providedDESTINATIONS;vulpea-db-query-by-links-every- return all notes linking each and every providedDESTINATIONS;
- vulpea#116 improve query performance by building and maintaining a separate view table.
- vulpea#121 allow to configure candidates source for
vulpea-findfunction viavulpea-find-default-candidates-sourcevariable. - Add shortcuts for checking tags on the note:
vulpea-note-tagged-all-p- return non-nil if a NOTE is tagged by all of the TAGS.vulpea-note-tagged-any-p- return non-nil if a NOTE is tagged by any of the TAGS.
Primarily migration to org-roam v2 that has many improvements and breaking changes.
Features
- Allow to provide extra properties in
vulpea-create. - New function to manipulate
#+title:vulpea-buffer-title-setandvulpea-buffer-title-get. - New functions to manipulate
#+filetags:vulpea-buffer-tags-get- function to get list of tags.vulpea-buffer-tags-set- function to set/replace the value of#+filetags.vulpea-buffer-tags-add- function to add a tag to#+filetags.vulpea-buffer-tags-remove- function to remove a tag from#+filetags.
- New functions to manipulate buffer-wide properties in the buffer header using
#+NAME: valueformat:vulpea-buffer-prop-set- function to set aVALUEof property withNAMEin the current buffer.vulpea-buffer-prop-set-list- function to set a value of property withNAMEto the list ofVALUESin the current buffer.vulpea-buffer-prop-get- function to get a value of property withNAMEfrom the current buffer.vulpea-buffer-prop-get-list- function to get a value of property withNAMEas a list separated by someSEPARATORS.
- Extract buffer related functions (prop and meta related) to separate module. Basically, this means that now it’s possible to manipulate meta lists that are located in any org file, not necessarily part of
vulpea. - Add
aliasesandprimary-titleslots tovulpea-note. - Use custom completion in
vulpea-selectinstead of one provided byorg-roam. See documentation for more information. - New functionality to select and find a note:
vulpea-find- just a wrapper aroundvulpea-selectto provide a consistent experience; selection can be narrowed down byvulpea-find-default-filteror by passing explicit filter.vulpea-find-backlink- select and find a backlink to current note.
- New functionality to insert a link to the note via
vulpea-insert, which accepts global and local filter (just likevulpea-find) and allows to hook into finalisation (e.g. call your custom handler after the link was inserted regardless involvement of capture process). See documentation for more information. - New utilities to repeat functions:
vulpea-utils-collect-while;vulpea-utils-repeat-while.
- vulpea#98 Make it possible to use
vulpea-meta-removeinteractively. - vulpea#98 Make it possible to use
vulpea-meta-cleaninteractively. - vulpea#98 Provide interactive variant of
vulpea-meta-set:vulpea-meta-addandvulpea-meta-add-list. - All features of
org-roamapply tovulpea.
Breaking changes
- Flatten template in
vulpea-create, meaning that instead of passing a template in format(:body :file-name :head :unnarrowed :immediate-finish), all values should be passed as arguments tovulpea-create. Also, there is no need to provide#+title: ${title}in:headanymore. Seevulpea-createdocumentation for more information.;; instead of (vulpea-create title (list :file-name file-name :head "#+title: ${title}\n#+url: ${url}\n#+filetags: tag1 tag2\n" :unnarrowed t :immediate-finish t) (list (cons url "https://example.org") (cons id "xyz"))) ;; you should (vulpea-create title file-name :id xyz :tags '("tag1" "tag2") :head "#+url: ${url}" :unnarrowed t :immediate-finish t :context (list :url "https://example.org"))
- Remove
vulpea-setupbecauseorg-roamv2 already provides all information to get resulting file of capture process. - Remove
vulpea-note-meta. It was only used forvulpea-select, but now it is not needed anymore. - All breaking changes of
org-roamapply tovulpea.
Primarily a stabilization and bug-fix release.
Features
- vulpea#84 Support passing extra context for templates to
vulpea-create. This is a breaking change, now instead of passingidargument, you should pass(list (cons 'id id)). While being more verbose it gives much more power. - vulpea#85 Support require match in
vulpea-select. This is a breaking change, as arguments tovulpea-selectare passed as keys. In my experience, most of the times first two arguments areniland they are rarely needed. In this way, API of this function is cleaner and opens a way to add new functionality there. - vulpea#86 New function
vulpea-db-queryto query notes with generic predicate. - vulpea#86 Add metadata to
vulpea-noteconsisting of access time and modification time. - vulpea#86 Use
vulpea-db-queryinvulpea-selectinstead of heavyorg-roam-db-query. - vulpea#89
vulpea-utils-note-hashfunction to calculatesha1of a givenNOTE. - vulpea#90
vulpea-createautomatically adds a property block with id into created file (formatted according toorg-property-format). This also breaks API, see breaking changes section for more information.
Fixes
- vulpea#80 Fix how
org-roam-capture--new-fileis called from advice.
Breaking changes
- vulpea#82 Remove all autoloads.
- vulpea#86
vulpea-selectdoes not allow to passcompletionsanymore. - vulpea#87
org-roam-capture--new-fileis not being adviced by default anymore. Instead you should callvulpea-setup. - vulpea#90
vulpea-createdoes not acceptorg-roam-template(whatever that means), instead it accepts a structured property list(:file-name :head :unnarrowed :immediate-finish)which is converted into something supported byorg-roam. Migration is simple - just remove irrelevant parts.
Features
vulpeamodule - one stop module, importing all others.vulpea-select- function tocompleting-reada note with optional filter.vulpea-create- function to create a new note file with givenTITLEandTEMPLATE.
vulpea-dbmodule - for querying notes data base.vulpea-db-get-id-by-file- function to getIDof a note represented byFILE.vulpea-db-get-by-id- function to get note represented byID. Supports headings of the note.vulpea-db-get-file-by-id- function to getFILEof a note represented byID. Supports headings of the note.vulpea-db-search-by-title- function to query notes withTITLE.vulpea-db-update- function to update db withNOTE-OR-ID.
vulpea-metamodule - for manipulating note metadata represented by description list:vulpea-meta- function to get metadata fromNOTE-OR-ID. In most cases you should not use this function unless performance is important. In this case, take a look at bang functions, e.g.vulpea-meta-get!.vulpea-meta-get- function to get a value ofPROPfor note withID. Value is parsed based on the passedTYPEor as a string if omitted.vulpea-meta-get!- function to get a value ofPROPfromMETA(result ofvulpea-meta). Value is parsed based on the passedTYPEor as a string if omitted. Use it performing multiple read operations in a row.vulpea-meta-get-list- function to get all values ofPROPfor note withID. Values are parsed based on the passedTYPEor as a string if omitted.vulpea-meta-get-list!- function to get all values ofPROPfromMETA(result ofvulpea-meta). Values are parsed based on the passedTYPEor as a string if omitted. Use it performing multiple read operations in a row.vulpea-meta-set- function to setVALUEofPROPforNOTE-OR-ID. Supports multi-value properties.vulpea-meta-remove- function to remove aPROPforNOTE-OR-ID.vulpea-meta-remove- function to remove all meta forNOTE-OR-ID.vulpea-meta-format- function to format aVALUE.
vulpea-utilsmodule.vulpea-notetype definition.vulpea-utils-with-note- function to executeBODYwith point atNOTE. Supports file-level notes as well as heading notes.vulpea-utils-link-make-string- make a bracket link toNOTE.