2.0.0 (2025-08-06)
🎯 Major Features
🔔 Capture Confirmation Notifications
Resolves: #180
QuickAdd now provides visual confirmation when content is captured, giving you immediate feedback on successful operations.
Example:
✓ Content captured to "Daily Notes/2024-01-15" under heading "## Ideas"
📋 Enhanced Clipboard Integration
Resolves: #88
New {{CLIPBOARD}}
format syntax allows you to directly insert clipboard content into your templates and captures.
Example:
## Research Notes
Source: {{CLIPBOARD}}
Date: {{DATE}}
E.g. when you have a URL copied, this automatically pastes it into your template.
📁 Enhanced File Opening Options
Resolves: #880
Templates and captures now support flexible file opening with configurable view modes and locations.
New Options:
- Open in new tab
- Open in new pane (vertical/horizontal split)
- Open in new window
- Open in source/preview/reading mode

🎲 Random Number Generator
New {{RANDOM:n}}
format syntax generates random alphanumeric strings of length n
.
Examples:
Random ID: note-{{RANDOM:10}}
📝 Rich Text Paste Command
Resolves: #869
New "Paste with format" command preserves rich formatting when pasting from external sources like web pages or documents.
Use Case:
Copy formatted text from a website → Run "Paste with format" → Maintains headings, bold, italic, and links
🔗 Configurable Link Placement
Resolves: #874
Control where links to created files appear relative to your cursor/selection:
- Replace selection - Replace the current text selection with the link (default)
- After selection - Insert the link after the current selection
- End of line - Insert the link at the end of the current line
- New line - Insert the link on a new line below

📂 Open File Command for Macros
Resolves: #871
New macro command to open any file in your vault programmatically.
Example Macro:
1. Create daily note from template
2. Open file: "Templates/Dashboard.md"
3. Run Obsidian command: "Split vertically"
🏷️ Enhanced Title Format Syntax
Resolves: #863
New {{title}}
format syntax provides the rendered filename without extension.
Example:
File: "2024-01-15 Meeting Notes.md"
Template: # {{title}}
Result: # 2024-01-15 Meeting Notes
📅 VDATE Improvements
Live Preview in VDATE Modal
Resolves: #796
See real-time preview of your date format as you type in the VDATE modal.

Default Values for VDATE
Resolves: #868
VDATE variables now support default values, reducing prompts for common dates.
Example:
{{VDATE:Meeting Date,YYYY-MM-DD|today}}
{{VDATE:Due Date,MMM Do|tomorrow}}
🔍 Enhanced Suggester API
Custom Input Support
Resolves: #879
Allow users to enter custom values in suggester prompts, not just predefined options.
Example:
const customTag = await this.quickAddApi.suggester(
["work", "personal", "urgent"],
["work", "personal", "urgent"],
"Select or enter a tag:",
true // allowCustomInput
);
Placeholder Support
Suggester now supports placeholder text for better UX.

🔧 User Script Management
Browse Button for Script Selection
Resolves: #842
Visual file browser for selecting user scripts instead of manual path entry.

🐛 Major Bug Fixes
Templater Integration Fixes
Resolves: #787, #793, #795, #801, #809
- Fixed Templater commands not executing with "Insert after" option
- Resolved tp.file.cursor() positioning issues
- Fixed tp.date.now and other date commands
- Templater commands now process before capture content is added
Example of fixed behavior:
<!-- Now works correctly: -->
<% tp.date.now("YYYY-MM-DD") %>
<% tp.file.cursor() %>
Tag Selection and Input Fixes
- Fixed double hashtag appearing in tag completion
- Resolved tag selection truncation in text input fields
- Tag hints now appear correctly when typing "#"
Insert After Priority Fix
"Insert After" now correctly prioritizes exact matches over prefix matches.
Fixed Example:
## Done ← No longer incorrectly matched
## Do ← Now correctly targeted when searching for "## Do"
Unicode Field Name Support
Resolves: #852
Fixed regression where non-ASCII characters in field names weren't recognized.
Now Working:
{{FIELD:经验归类}}
{{FIELD:תאריך}}
{{FIELD:Αρχή}}
Dynamic Choice Name Resolution
Resolves: #870
Macro lists now dynamically update when choice names are changed.
Empty String Variable Handling
Resolves: #872
Empty string variables no longer trigger unnecessary prompts.
Example:
// No longer prompts when value is ""
variables: { note: "" }
🏗️ Architecture Improvements
Simplified Macro Architecture
Breaking Change in #858 - No action required
Simplified how macros work to reduce complexity and clicks:
What changed:
- The separate "Macros Manager" has been removed
- Macros are now created and edited directly within their choices
- One less layer of indirection = fewer clicks to manage your macros
What stays the same:
- ✅ All your existing macros continue to work exactly as before
- ✅ Automatic migration handles everything for you
- ✅ No changes needed to your workflows
Only limitation:
Macros must now be attached to a choice in your QuickAdd menu (they can no longer exist as standalone items)
This happens automatically.
Why this change was made:
Previously, you had to: Create macro → Create macro choice → Link them together. Now you just create a macro choice with the macro built in. Simpler and faster!

Natural Language Date Processing
Replaced Natural Language Dates plugin dependency with chrono-node library for better reliability and performance.
Icon System Modernization
Resolves: #850
Replaced FontAwesome icons with Obsidian's built-in Lucide icons for consistency and smaller bundle size.
📚 Documentation Updates
Comprehensive User Scripts Documentation
Resolves: #881
New detailed guide for creating and using user scripts with QuickAdd.
Topics Covered:
- Script placement and organization
- API usage examples
- Common patterns and best practices
- Debugging techniques
Field Exclusion Filter Documentation
Resolves: #864
Documentation for excluding specific folders from FIELD checking.
Example:
{{FIELD:fieldname|exclude-folder:Templates|exclude-folder:Archive|exclude-folder:.trash}}
🎨 UI/UX Improvements
Consistent Modal Button Spacing
Resolves: #843
Improved visual consistency with proper gap spacing between modal buttons.
Notes
Bug Fixes
- commands now use updated choice settings without requiring toggle (#877) (3443a87), closes #192
- dynamically resolve choice names in macro lists (#870) (084d951), closes #152
- empty string variables no longer trigger prompts (#872) (717feef), closes #163
- prevent {{title}} usage in filenames to avoid circular dependency (8decab6)
- prioritize exact matches in Insert After functionality (#876) (6fccd33), closes #181
- process Templater commands in template before adding capture content (a261acb)
- resolve tag selection truncation in text input fields (#859) (#860) (fccbc71)
- Restore original import order in main.ts to prevent circular dependency (8bd78cb)
- use Docusaurus admonition syntax instead of Obsidian callouts (fd90624)
Features
- add {{CLIPBOARD}} format syntax element (64639e4), closes #88
- add {{RANDOM:n}} format placeholder (#865) (1c138df), closes #47
- add {{title}} format syntax for rendered filename (#863) (1dda47f), closes #327
- add allowCustomInput parameter to suggester API (#879) (a6c52ab), closes #219
- Add capture confirmation notifications (#180) (#875) (1814873)
- add configurable link placement options for capture and template choices (#874) (3611121), closes #166
- Add default value support to VDATE variables (#868) (c722b84)
- add Open File command for macros (#871) (e31460f)
- add paste with format command for rich clipboard content (#869) (cf0ef23), closes #93
- Add simple placeholder support to suggester API (2836e47)
- auto-open existing files when using template choices (#867) (98ac309), closes #61
- Enhanced file opening with flexible location and view mode options (#880) (3b82525)
- vdate: add live preview for VDATE modal (0b9cea4), closes #796
BREAKING CHANGES
- Stand-alone macros are no longer stored or referenced.
All existing macros are migrated into their correspondingMacroChoice
.