QuickAdd 2.26.0
Add an entry to your project log and keep typing. Add several tags in one Capture. Move a book to the top of your reading queue. This release adds {{CURSOR}}, one-item-per-line list captures, and {{PROPERTY}} to make those workflows possible. It also fixes a case where background model sync overwrote newer settings from another device.
To try the examples, update QuickAdd under Settings → Community plugins. Under Settings → QuickAdd, choose New choice → Capture, name the choice, and apply the settings below. Turn Capture format on before pasting a format, then choose Done. Run the choice from QuickAdd: Run in Obsidian's command palette.
Put the cursor where you want to keep typing
Say each project note has a ## Log section, and a Capture adds a dated heading with an empty bullet under it. Until now you had to click into that bullet before you could type. Write {{CURSOR}} where you want to end up and QuickAdd puts the cursor there.
Create a project note with a ## Log heading. Set up a Capture named "Log entry":
- Capture to active file is on.
- Write position is After line, with
## Logas the line and Create line if not found on. Leave Insert at end of section off to put new entries directly below the heading. - Capture format is:
### {{DATE:DD MMM YYYY}}
- {{CURSOR}}
Open your project note in Live Preview or Source mode and click in the note body. Run "Log entry" and start typing. QuickAdd removes the marker and puts your cursor after the empty bullet. Open can stay off because you are already editing the target note. For a Capture that writes to another note, turn Open on and let it take focus.
Put it anywhere in the format. ### {{DATE:DD MMM YYYY}}: {{CURSOR}} leaves you at the end of the heading. It also works with At cursor, New line above/below cursor, and included templates. Cursor movement applies to a Capture in a note body. In other contexts, the marker is removed without moving the cursor.
If you came from Templater, this replaces tp.file.cursor() plus the jump-to-cursor command workaround.
Docs: Cursor position. Thanks to @Nepherim for the request (#1760, #1766).
List properties: one line, one item
Since 2.25.0 a Capture can write a note property. Writing several list items in one go was awkward: two values in the format came out as one item with a comma in it. Now each line of the Capture format is one item, the same thing Enter does in Obsidian's own list editor.
For a book-club example, create Books/Project Hail Mary.md. Paste this at the very top of the note in Source mode, including the --- lines:
---
type: book
tags:
- fiction
- science
---Create a Capture named "Shelve for book club" with these settings:
- Capture to is
property:type=book, so the picker offers your book notes. - Write position is Property, the property is
tags, and the action is Add to list. - Capture format is:
book-club
to-discuss
Run "Shelve for book club" and select Project Hail Mary. Its tags become:
tags:
- fiction
- science
- book-club
- to-discussFor a free-form list, create an "Add sources" Capture with Capture to active file on. Set Write position to Property, the property to sources, and the action to Add to list. Turn Create property if missing on and use this format:
{{VALUE:Sources|type:multiline}}
Open a note and run "Add sources". Enter a few sources on separate lines, such as Make It Stick, chapter 3 and Ebbinghaus, Memory (1885). Choose Ok or press Ctrl+Enter on Windows and Linux, Cmd+Enter on macOS. The note gains a sources list:
A comma inside a line stays in that item, so Ebbinghaus, Memory (1885) is one source. Lines are trimmed, blank lines are ignored, and an item that is already in the list is skipped. {{VALUE}} on its own line above fixed values adds what you type as one more item. Text, number, checkbox, and date properties are never split on line breaks.
To set several list items with Set value, the property must already be a List or Tags property. For a new property, use Add to list or set its type in Obsidian first. QuickAdd reports an error if the property type is unknown instead of guessing and saving the lines as text.
Docs: Capture into a property. Thanks to @MelodyDuplaix for the report and the questions that led here (#1748, #1756).
Rewrite a property around its current value with {{PROPERTY}}
{{PROPERTY}} in a property Capture is the value the property already has on the target note. Put it where that value should end up, and put your new lines above or below it.
Create notes named Piranesi, The Left Hand of Darkness, and Thinking, Fast and Slow in your Books folder. Create Reading queue.md at the vault root and paste this into Source mode:
---
queue:
- "[[The Left Hand of Darkness]]"
- "[[Thinking, Fast and Slow]]"
- "[[Piranesi]]"
---Make sure Obsidian shows queue as a List property. For the same link text as this example, use Obsidian's default Use [[Wikilinks]] and Shortest path when possible link settings.
Create a "Move to top of queue" Capture:
- Capture to is
Reading queue.md. - Write position is Property, the property is
queue, and the action is Set value. - Capture format is:
{{FILE:Books|link}}
{{PROPERTY}}
Run the Capture and choose Piranesi. It moves from third to first, followed by The Left Hand of Darkness and Thinking, Fast and Slow. QuickAdd drops duplicate items and keeps the first occurrence, so the book moves instead of appearing twice. Swap the two lines to add at the bottom instead. When the format contains {{PROPERTY}}, Set value and Add to list write the same list, and where the token sits decides the order.
It works for text as well. Add a Text property named status with the value Draft to a note. Create a Capture with Capture to active file on, Write position → Property, property status, action Set value, and format {{PROPERTY}} → Ready. Run it from that note and the status becomes Draft → Ready. A missing or empty property contributes no text.
Inline scripts can read the current value too. To count your reading sessions, add a Number property named reading_sessions with the value 2 to a book note. Create a Capture with Capture to active file on, Write position → Property, property reading_sessions, and action Set value. Paste the entire block below into Capture format, including the opening and closing backticks:
```js quickadd
return Number(this.variables.propertyValue ?? 0) + 1;
```
Run it from that note and reading_sessions becomes 3. The script variables also include propertyKey and list, described in the docs below.
{{PROPERTY}} only works in a property Capture. Anywhere else, QuickAdd stops with an error rather than writing the token into your note.
Docs: The property's current value, Property Capture variables. Thanks to @MelodyDuplaix (#1748, #1762).
Also in this release
- Background model sync preserves newer settings. Fixed a case where AI model auto-sync saved an older copy of QuickAdd settings over changes that had just arrived from another device. QuickAdd now re-reads the file before saving and merges local changes into it. Thanks to @hollowhemlock for the careful report (#1749, #1750).
- Importing an older package with a Macro stored as an array now lists the user scripts it contains and warns about missing files before you confirm, instead of showing zero scripts (#1759).
- The release downloads now match the repository version. On 18 September the repository advertised 2.26.0 before its downloads existed. The published 2.26.0 release now contains matching files. Obsidian's Community plugins catalog has also refreshed, and a fresh installation of 2.26.0 now passes (#1763). Thanks to @Zachatoo for the report.
- The internal cleanup in #1759 preserves existing settings and saved data.
Full changelog: 2.25.0...2.26.0