github chhoumann/quickadd 2.28.0

4 hours ago

QuickAdd 2.28.0

With QuickAdd 2.28.0 you can:

  • insert images, PDFs, and other attachments with {{FILE}}
  • tag a note with several values from one picker
  • ask your own questions in {{FIELD}} prompts and see the closest match first
  • install any example from the docs with one paste
  • set up AI providers on settings pages, with a connection test

Captures into an open note are also more reliable, including very large notes.

To update, open Settings → Community plugins and click Check for updates. Each section below shows what changed and gives you a setup you can copy.

Insert images and PDFs with {{FILE}}

{{FILE}} opens a picker for the notes in a folder. Add |type: and it picks attachments instead. This Capture puts a photo from the Attachments folder into the note you are writing:

To build it:

  1. Open Settings → QuickAdd and choose New choice → Capture.

  2. Click the name at the top of the settings window, rename it Insert image, and click Ok.

  3. Turn Capture to active file on. Write position changes to At cursor.

  4. Turn Capture format on and enter:

    !{{FILE:Attachments|type:image|link}}
    
  5. Turn Add to command palette on and click Done.

Open a note in Live Preview or Source mode and click in the note body, so the text cursor blinks where the image should go. Run QuickAdd: Insert image from the command palette and pick a photo. QuickAdd writes an embed at your cursor:

![[Shelf - autumn mugs.jpg]]

|type:image lists only images; PDFs and other files in the folder stay out of the list. |link writes a link, and the ! in front turns it into an embed, so the image shows in the note. Leave out the ! to get a plain link.

Adjust the format to your vault:

  • Attachments is the folder to search, including its subfolders. Use / for the whole vault. Obsidian saves attachments in the vault root unless you changed that, so !{{FILE:/|type:image|link}} is a good start.
  • |type: takes image, audio, video, pdf, note, or any. Any other word is a file extension, such as |type:canvas.
  • Combine types with commas. {{FILE:/|type:image,pdf|link}} lists photos and PDFs, for example scanned receipts.

Without |type:, {{FILE}} lists notes, as before.

Docs: Pick attachments. Thanks to @Stumbling-epiphany for the request (#1788, #1789).

Tag a note with several values at once

Since 2.25.0, a Capture can add items to a list property such as tags. Now each pick from a multi-select becomes its own item. Before, a multi-select next to another line, such as a fixed tag, wrote all your picks as one item: business,pricing.

Say you save articles with Obsidian Web Clipper. Each clipping lands in Clippings/ with a tags property. This Capture adds the topics you pick, plus to-read, to the clipping you have open:

To build it:

  1. Open Settings → QuickAdd and choose New choice → Capture. Rename it Tag clipping.

  2. Turn Capture to active file on.

  3. Set Write position to Property. Leave Property on Named property and enter tags.

  4. Set Action to Add to list. Create property if missing is already on.

  5. Turn Capture format on and enter these two lines:

    {{VALUE:business,pricing,marketing,writing,glazes,photography|multi}}
    to-read
    
  6. Turn Add to command palette on and click Done.

Open a clipping and run QuickAdd: Tag clipping. Tick business and pricing and click Done. The tags property gets three new items:

tags:
  - clippings
  - business
  - pricing
  - to-read

The clipping's properties after the capture, with four separate tags

Replace the topics with your own. A few things to know:

  • Keep the picker on its own line. If it shares a line with other text, the picks are joined into one item.
  • Items already in the list are skipped, so a tag is never added twice.
  • {{FILE:People|multi|link}} works the same way, for a list of links such as people.
  • |format:inline and |format:spaced still join the picks into one item, for the rare case you want that.

If one of your Captures already puts a multi-select next to other lines, it now adds one item per pick. A |format:markdown picker now adds business, not - business.

Docs: Capture into a property. Thanks to @Stumbling-epiphany for the report (#1792, #1793).

Ask your own questions in {{FIELD}} prompts

{{FIELD:client}} suggests the values the client property already has in your notes. Add |label: and the prompt asks your question instead of "Enter value for client". The one-page form also lists the closest match first.

This Template logs a call with a client. The form asks three questions, and each one suggests answers from earlier call notes:

To build it:

  1. Create a note at Templates/Client call.md with this content:

    ---
    client: {{FIELD:client|label:Which client?}}
    contact: {{FIELD:contact|label:Who did you talk to?}}
    stage: {{FIELD:stage|label:Where does the deal stand?}}
    date: {{DATE:YYYY-MM-DD}}
    ---
    ## Notes
    - {{CURSOR}}
    
    ## Follow-up
    - [ ] 
  2. Open Settings → QuickAdd and choose New choice → Template. Rename it Log client call.

  3. Set Template path to Templates/Client call.md.

  4. Turn File name format on and enter:

    {{DATE:YYYY-MM-DD}} {{FIELD:client|label:Which client?}}
    
  5. Set New note location to In a specific folder. Enter Calls in Folder path and click Add.

  6. Turn Open on.

  7. Set One-page input override to Always.

  8. Turn Add to command palette on and click Done.

Run QuickAdd: Log client call. The suggestions come from notes you already have. In this demo vault, nine earlier call notes have client, contact, and stage properties. In your vault, use property names your notes already have, or type a new value. The list only suggests; you can enter anything.

Type co in Which client?. Cobalt Kitchen and Copper Pot Café come first because they start with "co". Ember & Co and Blue Harbor Coffee follow, because a later word starts with "co". Before this release, matches kept their original order, so the client you meant could be far down the list.

Pick Copper Pot Café, Jonas Berg, and Active, then click Submit. QuickAdd creates Calls/2026-09-27 Copper Pot Café.md with today's date, opens it, and puts your cursor under Notes, so you can type right away. After typing Wants 48 speckled mugs before the holidays., the note looks like this:

---
client: Copper Pot Café
contact: Jonas Berg
stage: Active
date: 2026-09-27
---
## Notes
- Wants 48 speckled mugs before the holidays.

## Follow-up
- [ ] 

A few things to know:

  • The file name and the template use the same {{FIELD:client|label:Which client?}}, so QuickAdd asks once. To ask about one property twice, give each a different label, such as {{FIELD:person|label:Host}} and {{FIELD:person|label:Note taker}}.
  • Without the one-page form, each label is the placeholder of its picker.
  • Ranking works in every suggestion field on the one-page form, including suggester fields in a script's quickAddApi.requestInputs.

Docs: Label the prompt, One-page inputs. Thanks to @Nepherim for the label request (#1797, #1800) and @bobrock-git for the ranking request (#1794, #1795).

Install any example from the docs with one paste

Every page under Examples now has a Get this workflow card. Copy the package, paste it into QuickAdd, and the choices, templates, and scripts are set up for you.

  1. Open an example, such as Capture: Add entries to your daily note, and click Copy package.
  2. In Obsidian, open Settings → QuickAdd. Under Packages, click Import package…
  3. Paste into Paste package JSON. QuickAdd lists what the package adds before it changes anything. For this example it lists 6 choices: a Daily note folder and the five captures inside it.
  4. Click Import package, then Close. The new commands are in the command palette right away, even though the review screen mentions reloading.
  5. Follow the steps under After importing on the card, if there are any.

This package adds five captures for your daily note. QuickAdd: Journal entry adds a line with the time under ## Journal in Daily/YYYY-MM-DD.md:

## Journal
- 09:10 Unloaded the kiln. The speckled sage glaze came out well.
- 16:43 Glaze test 15 is in the kiln.

If your daily notes live somewhere else, change Capture to on each capture, as the card explains.

Seven cards say they need 2.28.0: meeting notes, Book Finder, inbox item, MOC link dashboard, MOC related notes base, Movie & Series, and Readwise book notes. This release imports their templates correctly: a template that another template includes is no longer flagged as unused, links between bundled templates follow them to the folder you pick, and a choice keeps working when you skip a template you already have.

Packages that run a script ask you to confirm before importing. To update a package later, import it again: choose Overwrite for choices you haven't changed and Skip for the ones you have. Skipped choices now stay in place when their folder is overwritten, and so do choices you added to that folder yourself.

Docs: Install an example from the docs (#1830, #1832).

AI providers have their own settings pages

AI provider settings used to open in three stacked dialogs. They are now pages in Obsidian's settings. Changes save as you make them, so the old Save and Cancel buttons are gone.

To check your setup:

  1. Open Settings → QuickAdd and scroll to AI & online. New installs start with AI switched off, so Disable AI & online features is on. Turn it off; its toggle turns grey, and an AI Assistant row appears below it.
  2. Click AI Assistant, then your provider, such as OpenAI.
  3. Next to API key, click Link..., pick your key from Obsidian's Keychain (or create it with Add secret...), and click Save.
  4. Click Test connection. You see "✓ Connected. The provider lists 64 models." (your count may differ) or the provider's own error message.

On the provider page:

  • Models lists the newest models first and has a filter box. GPT-6 and GPT-5.6 are included.
  • Models the provider has retired get a Retired badge. Remove retired deletes them after you confirm. Nothing is removed automatically, because saved commands might still use them.
  • Auto-sync models shows when the list last synced and how many models it has, or why the last sync failed. Click Sync now to refresh it.

You can also open the page with QuickAdd: Open AI Assistant settings from the command palette. If it says to turn off "Disable AI & online features", do step 1 first.

For script writers: in 2.27.0, quickAddApi.ai.agent runs that called tools failed on GPT-6 and GPT-5.6 with an OpenAI error. QuickAdd now sends these runs through OpenAI's Responses API, so tool calls work with reasoning on. Through a gateway that only offers Chat Completions, such as Azure OpenAI, OpenRouter, or LiteLLM, QuickAdd retries a rejected tool step once with reasoning_effort: "none". That costs one extra request per step. A refusal from the model now comes back as the reply text instead of an empty answer.

Docs: AI Assistant (#1811, #1816, #1818, #1819, #1824).

Move QuickAdd's pickers with a CSS snippet

QuickAdd's pickers open near the top of the window, like the command palette, while text prompts open in the middle. The pickers now have their own CSS classes, so a snippet can move them without moving the command palette. To center them:

  1. In your vault's .obsidian/snippets folder, create quickadd-pickers.css with:

    body:not(.is-mobile) .prompt:is(.qa-choice-suggester, .qa-suggester) {
    	top: auto;
    }
  2. Open Settings → Appearance and click CSS snippets to open its page. If the snippet isn't listed, click Reload snippets. Turn quickadd-pickers on.

The QuickAdd menu and pick lists such as {{VALUE:a,b,c}} now open in the middle of the window. The command palette stays at the top. .qa-choice-suggester is the QuickAdd menu and Multi choices, and .qa-suggester is single-value pick lists.

Docs: Style pickers with CSS. Thanks to @Nepherim for the report (#1796, #1802).

Also in this release

  • Captures into an open note land right away. When the target note is open, QuickAdd now writes through the editor. {{CURSOR}} works in notes of any size; it used to be skipped in notes over about 64 KB. Typing you haven't saved yet is kept, and the "modified externally, merging changes automatically" notice no longer appears. The same fix covers Apply template to active note, which could erase what you had just typed into a new note. Thanks to @pkelly102 for the detailed report (#1798, #1801).
  • The What's new window works after a long break. Upgrading from a release more than about 30 versions old no longer gets stuck on "Fetching release notes...", and long notes scroll inside the window with Done in view (#1803, #1807).
  • Global variable names keep suggesting after {{GLOBAL_VAR:. Type a few letters and pick the variable (#1829).
  • Macro commands named Script::Export show the script's settings. Their cog lists settings such as an API token, and defaults apply when the command runs (#1820).
  • Choice builders open with focus on Done, and the Macro builder's title has the same rename pencil as the others (#1809, #1812).
  • One-page form inputs line up, and New choice opens its menu under the button (#1806).
  • Shorter dropdown options in settings, so their labels no longer get squeezed. Announce updates now offers Every release, Feature releases, and Never. Your settings are unchanged (#1808).
  • Two FILE pickers with different types get different labels on the one-page form, such as File from Attachments (image, link) (#1805).
  • AI model sync stops when you turn QuickAdd off. A pending startup sync no longer runs after the plugin is disabled (#1823).
  • Example scripts in the docs are updated. The Todoist script calls Todoist directly, so the Todoist plugin is no longer needed. The address lookup, Log book, and Change daily note property scripts no longer need MetaEdit (#1810, #1814, #1835).
  • Two new CLI commands: quickadd:package-import installs a package, and quickadd:ai-test-connection runs Test connection (#1818, #1830).

Full changelog: 2.27.0...2.28.0

Don't miss a new quickadd release

NewReleases is sending notifications on new releases.