Skip to content

Releases: chhoumann/quickadd

2.12.0

05 Mar 21:27

Choose a tag to compare

2.12.0

✨ New Features

.base Templates Become Reusable QuickAdd Building Blocks

QuickAdd now supports .base files as first-class Template choices, which
opens up a much bigger workflow than β€œnew file type supported.”

You can now:

  • create real .base files directly from Template choices
  • reuse .base templates inside Capture formats to insert Base content into
    the active Markdown note with {{TEMPLATE:...}}
  • insert live Base-powered sections into existing Markdown notes like MOCs,
    dashboards, and project hubs

This is especially useful when you want to keep a reusable Base definition in
Templates/ and stamp it into the current note on demand. For example, you can
keep a Related Notes.base template and use a Capture choice to insert that
Base block into an MOC, so the query resolves in the context of the note you
are currently editing.

Example:

## Related Notes

```base
{{TEMPLATE:Templates/MOC Related Notes.base}}
```

Important distinction:

  • Template choices can create .base files directly
  • Capture choices do not write directly to .base files as
    destinations
  • Capture choices can insert .base template content into Markdown
    notes, which is the key workflow unlock here (#1122)

Capture Directly Into Canvas Cards

QuickAdd now supports two Canvas capture workflows:

  • capture into one selected card in the active Canvas
  • capture into a specific node inside a chosen .canvas file

Supported targets:

  • text cards
  • file cards that point to Markdown notes

To use it, either enable Capture to active file while a Canvas card is
selected, or, with Capture to active file off, point Capture To at a
.canvas file and choose Target canvas node. Canvas supports Top,
Bottom, and After line write modes. Cursor-based modes are still not
valid there, and QuickAdd now tells you exactly why if the current setup is
unsupported.

When QuickAdd updates a configured Canvas text node, it now preserves
Obsidian’s tab-indented .canvas formatting, reducing noisy
whitespace-only diffs. (#1124, #1125)

Run QuickAdd From The Obsidian CLI

QuickAdd now registers native Obsidian CLI handlers on supported Obsidian
versions, making shell scripts and automation workflows much cleaner.

New commands:

  • quickadd / quickadd:run
  • quickadd:list
  • quickadd:check

Examples:

  • obsidian vault=dev quickadd choice="Daily log"
  • obsidian vault=dev quickadd:list type=Capture
  • obsidian vault=dev quickadd:check choice="Daily log"

Variables can be passed with value-<name>=..., extra key=value params, or
vars='{"project":"QuickAdd"}'. By default, CLI runs are non-interactive: if
required inputs are missing, QuickAdd returns structured JSON instead of
opening prompts. Multi choices are still interactive and cannot be run or
checked via CLI, but quickadd:list includes nested choices inside multis.
Requires Obsidian 1.12.2+. (#1129)

VALUE Suggesters Can Show Friendly Labels While Inserting Different Values

{{VALUE:...}} option lists now support |text: so you can decouple what
users see in the suggester from what QuickAdd actually inserts.

Example:
{{VALUE:πŸ”Ό,⏫,πŸ”½,⏬|text:3-Normal,2-High,4-Low,1-Urgent}}

This is useful when you want readable labels in the picker but prefer compact
symbols, codes, or machine-friendly values in the final note. If you also use
|custom, custom typed input is inserted as-is. Current limitation: commas and
pipes inside individual labels/items are not supported yet. (#1127)

New Macro Cursor Navigation Commands

Macros now include four new editor commands:

  • Move cursor to file start
  • Move cursor to file end
  • Move cursor to line start
  • Move cursor to line end

These make editor automation easier to compose, especially when combined with
paste, selection, and formatting steps. (#1113)

AI Request Logs For Script Authors

If you build AI-powered QuickAdd workflows, quickAddApi.ai now exposes recent
in-memory request logs with request IDs, prompts, model info, duration, usage,
and errors.

New helpers:

  • getRequestLogs(limit?)
  • getLastRequestLog()
  • getRequestLogById(id)
  • clearRequestLogs()

QuickAdd also reduces assistant progress-noise when assistant messages are
disabled. (#1110)

πŸ› Bug Fixes

Template Destination Paths Are Now Predictable

When Create in folder is off, Template choices no longer duplicate folder
prefixes if your File name format already contains a vault-relative path.
This fixes notes being created in the wrong place when the formatted name was
already fully qualified. (#1118)

Insert-At-End Captures Preserve Spacing And Order

Repeated captures into the end of a section now behave correctly even when the
file ends with blank lines or the capture format does not end with a newline.
This fixes both collapsed spacing and out-of-order insertions. (#1119, #1120)

FIELD Suggestions Can Opt Into Inline Values Inside Specific Fenced Blocks

When inline scanning is enabled, QuickAdd can now include Dataview-style inline
fields from specific fenced block types that you explicitly allow, for example
{{FIELD:Id|inline:true|inline-code-blocks:ad-note}}. Default behavior is
unchanged unless you opt in. (#1128)

Capture Respects Explicit File Extensions

Capture now preserves explicit supported extensions like .md and .canvas,
normalizes titles properly for non-Markdown targets, and gives a clear error if
you try to use .base as a direct capture destination. (#1122)

Better Existing-Tab Matching

QuickAdd is now more reliable when reusing an already open tab for a file,
especially when equivalent paths differ slightly in shape or formatting.
(#1108)

2.11.0

08 Feb 08:50

Choose a tag to compare

✨ New Features

Case Transforms for VALUE/NAME

Use the new |case:<style> pipe syntax to transform any VALUE or NAME token inline β€” no extra variables or macros needed. Eight styles are supported:

Style Example
kebab my-new-blog
snake my_new_blog
camel myNewBlog
pascal MyNewBlog
title My New Blog
lower my new blog
upper MY NEW BLOG
slug my-new-blog (filename-safe)

Combine with other options freely: {{VALUE:title|label:Post Title|case:kebab}}. Each token applies its own transform independently, so you can reuse the same variable with different casing in a single template β€” for example, {{VALUE:title}} for the heading and {{VALUE:title|case:slug}} for the filename. Autocomplete suggestions appear as you type |case:. (#1103)

πŸ› Bug Fixes

Smarter Capture Target Resolution

Capture targets are now resolved with a clear, predictable hierarchy: empty β†’ vault picker, #tag β†’ tag picker, trailing / β†’ folder picker, .md β†’ file, and ambiguous paths are intelligently checked against existing files and folders. If a target file doesn't exist and "Create file if it doesn't exist" is off, you now get a clear error notification instead of a silent failure. The file suggester also properly suggests folders with trailing slashes. (#1098)

Alias Matching β€” Case-Insensitive & Comma-Aware

File suggestions now recognize aliases regardless of frontmatter key casing (Aliases, ALIAS, aLiAs β€” all work). Comma-separated alias strings like aliases: "hello, world" are now properly split into individual searchable aliases instead of being treated as one long string. (#1097)

Correct Section Insertion Position

Content captured into a specific section (insert-after a heading) now lands in the right place. A bug caused the plugin to confuse array indices with line numbers when finding the next heading boundary, which could misplace your content β€” especially in documents with nested subsections. (#1096)

Proper Newlines When Appending Tasks

Appending tasks to a file that doesn't end with a trailing newline no longer concatenates the new task onto the last line. Tasks now always start on their own line. (#1102)

VDATE Formatter β€” Robust Date Parsing

The {{VDATE:...}} formatter now handles date variables passed as plain strings (e.g. "2026-12-31") or JavaScript Date objects via the API, not just the internal @date: format. This makes programmatic and URI-based date passing work reliably. (#1101)

Cleaner Settings Suggesters

File suggestions in settings dialogs no longer show the redundant .md extension β€” you'll see folder/my-template instead of folder/my-template.md. The underlying values are unchanged. (#1104)

Discoverable Choice Renaming

Renaming choices is no longer a hidden feature. A pencil icon now appears next to the choice name as a visual indicator, and "Rename" is available in the right-click context menu. (#683)

Intuitive Split Direction Labels

"Vertical" and "Horizontal" split labels have been replaced with "Split right" and "Split down" β€” describing where the new pane actually appears rather than the orientation of the divider. (#1089)

2.10.0

28 Jan 15:54

Choose a tag to compare

✨ New Features

AI & Security

  • SecretStorage for API keys β€” AI provider keys are now stored securely in Obsidian's SecretStorage instead of plain settings. Existing keys are migrated automatically. Requires Obsidian 1.11.4+.

Capture Improvements

  • Inline insert-after mode β€” New capture mode that inserts content inline with optional replace-to-EOL behavior
  • Per-token multiline VALUE inputs β€” Use {{VALUE:name|type:multiline}} to get multiline prompts for specific tokens (#339)
  • Selection-as-value controls β€” New options for how captured selections are handled (#1055)
  • Blank-line mode for insert-after β€” Better control over whitespace when inserting after headings (#1054, #1056)

Prompts & Input

  • Native date picker β€” New date picker UI with timezone-stable selection, used with {{VDATE:...}} syntax
  • Short-form date aliases β€” Configure aliases like tm β†’ tomorrow for natural language dates
  • Persist drafts on cancel β€” Input prompts now remember your draft if you escape/cancel (#1044)
  • Improved prompt labels β€” Better labeling for VALUE/MACRO prompts with new |label: option syntax

Macros & Templates

  • Macro selection helper β€” New quickAddApi.getSelection() to access editor selection in macros (#483)
  • Enhanced folder chooser β€” Create folders directly from the template folder picker, plus current-folder shortcut (#1011, #1012)

Documentation

  • Versioned docs β€” Documentation now supports versioning via Docusaurus, with stable v2.9.4 snapshot

πŸ› Bug Fixes

  • Templater 2.18.0 compatibility β€” Fixed breaking change in Templater's parse_template API (#1085, #1086)
  • Android suggester filtering β€” Hardened query normalization to prevent crashes (#1078)
  • Legacy choice migration β€” Backfill missing file-opening defaults to prevent runtime errors
  • Bundle size β€” Reduced below Obsidian sync limit using js-tiktoken/lite
  • Unicode file suggestions β€” Proper NFC normalization for non-ASCII filenames (#1046)
  • Case-insensitive paths β€” Handle template overwrite with mismatched casing (#1049)
  • Leading slash normalization β€” Fix paths starting with / in capture/template settings (#1050)
  • Suggester display stability β€” Prevent crashes from non-string display items
  • Macro rename prefill β€” Input now prefilled with current name (#1043)
  • Update announcements β€” Default to major releases only (#1042)

⚠️ Breaking Changes

  • Minimum Obsidian version raised to 1.11.4 β€” Required for SecretStorage API

2.9.4

18 Dec 14:28

Choose a tag to compare

2.9.4 (2025-12-18)

Bug Fixes

  • prevent VALUE/MVALUE self-recursion (adab365), closes #920

2.9.3

15 Dec 21:11

Choose a tag to compare

2.9.3 (2025-12-15)

Bug Fixes

  • add structuredClone fallback for Android (#1018) (d1a3eed)

2.9.2

14 Dec 17:29

Choose a tag to compare

2.9.2 (2025-12-14)

Highlights (Templater integration overhaul)

This release makes QuickAdd’s Templater integration deterministic and safe-by-default, addressing long-standing reports around cursor placement, double execution, and unexpected <% %> execution during captures.

  • tp.file.cursor() / cursor jumping now works reliably when QuickAdd opens the target file (respects Templater’s auto-jump setting).
  • Captures no longer execute unrelated <% %> elsewhere in the destination note (including inside fenced code blocks).
  • β€œInsert after” on newly created files is more reliable when the anchor is created by Templater (includes / trigger-on-create).
  • Reduced β€œtemplate runs twice / duplicate prompts” by removing unnecessary whole-file renders and locking whole-file processing per file.
  • Template append/prepend now runs Templater only on the inserted snippet (not the entire destination note).

Behavior change (important)

Captures into existing files no longer run Templater across the entire destination file by default.

  • If you relied on the legacy behavior, enable Run Templater on entire destination file after capture in the capture choice settings.

Bug Fixes

2.9.1

13 Dec 14:02

Choose a tag to compare

2.9.1 (2025-12-13)

Bug Fixes

  • preserve macro variables on reassignment (3c13731)
  • suggest vault tags for FIELD:tags (8a19e12), closes #671

2.9.0

09 Dec 22:01

Choose a tag to compare

2.9.0 (2025-12-09)

Bug Fixes

  • honor dateFormat in requestInputs (903df23)
  • preserve macro user script variable updates (#999) (26a7cf5)
  • reuse current tab when open file new-tab is off (#1007) (1b67d77)

Features

2.8.0

14 Nov 22:11

Choose a tag to compare

2.8.0 (2025-11-14)

Bug Fixes

  • restore Insert After matching for table separator rows (#983) (1393e6a), closes #970
  • support frontmatter tags in getFieldValues filtering (#980) (c9de468), closes #927

Features

  • Add embed replacement option for link placement (#984) (06a77a3), closes #893
  • add provider-native model discovery (#982) (f195c06)
  • add textarea type for advanced script settings (#981) (dc9a650)
  • add update modal settings for major releases only (#985) (d63f8c9), closes #447
  • add write to top of file switch for capture to active file (#986) (5361e6c), closes #248 #248

2.7.0

08 Nov 08:44

Choose a tag to compare

2.7.0 (2025-11-08)

Bug Fixes

  • format capture tags as YAML arrays (#974) (bc61760)
  • remove script suffix in request inputs (#979) (60ec853)
  • stop macros and APIs immediately when cancellations occur (#976) (48ea32d)

Features

  • add git info display to settings for development mode (#973) (e3b2a8b)