Skip to content

feat: optional / skippable {{VALUE}} / {{VDATE}} prompts#1297

Merged
chhoumann merged 4 commits into
masterfrom
1259-feature-request-optional-skippable-prompts-optional-value-vdate
Jun 11, 2026
Merged

feat: optional / skippable {{VALUE}} / {{VDATE}} prompts#1297
chhoumann merged 4 commits into
masterfrom
1259-feature-request-optional-skippable-prompts-optional-value-vdate

Conversation

@chhoumann

@chhoumann chhoumann commented Jun 11, 2026

Copy link
Copy Markdown
Owner

Adds a first-class way to make prompts optional: a |optional token flag on {{VALUE}}/{{NAME}}, option lists, and {{VDATE}}, with Skip affordances in every prompt surface and empty-allowed optional fields in the One-Page Input modal.

What this adds

  • |optional flag — bare form is pre-extracted before the shorthand-default decision, so {{VALUE:x|tomorrow|optional}} keeps its default; keyed optional:<bool> also supported (wins over the bare flag). New pure vdateSyntax.ts parses the VDATE post-pipe segment order-insensitively (|tomorrow|optional|optional|tomorrow); DATE_VARIABLE_REGEX unchanged.
  • One empty-value contract"" now counts as an answered value for {{VDATE}} too (prompt gate is undefined-aware, matching the {{VALUE}} contract from Fix: Empty string variables no longer trigger prompts #872). A script-set "" renders empty instead of re-prompting; the " " workaround stays byte-identical.
  • Skip is a resolution, never a rejection — Skip button + hint in the text/multiline/date prompts; suggesters get an instructions footer + Ctrl/Cmd+Shift+Enter skip (suggester-only; the multiline prompt's existing Mod+Shift+Enter submit binding is untouched). Esc/Cancel still aborts everywhere.
  • WYSIWYG defaults for optional tokens — the default is pre-filled; clearing it and submitting yields empty. Required tokens keep default-wins (pinned test untouched). Optional dates accept blank, but non-blank typos still error (tomorow can never silently become "no date"); required-date parse errors now end with a tip pointing at |optional.
  • One-Page modal — "(optional)" badges, dropdown "Skip (leave empty)" entry with the first real option still preselected ([BUG] One-page input drops VALUE dropdown selections in Capture choices #1180 pin holds), optional blank dates store "", required-blank/unparseable dates omit their key so the sequential date prompt still fires, and Esc now rejects "cancelled" instead of leaving waitForClose pending forever.
  • Safety & discovery — empty file-name guard (an all-optional name that resolves empty errors instead of silently creating <folder>/.md), format-syntax popup entries, settings preview no longer renders the flag as (default: optional).
  • Docs — new Optional fields section incl. the decoration-in-format recipe {{VDATE:due,[📅 ]YYYY-MM-DD|optional}} (renders 📅 2026-06-14 when answered, nothing when skipped — covers the Tasks-plugin single-line case with zero extra grammar), the scripting "" contract, and a correction to the false claim that pipes can be escaped inside VDATE formats.

Behavior changes to call out in release notes

  1. {{VALUE:x|optional}} no longer means default-text "optional" — escape hatch: |default:optional. Multi-part shorthand defaults containing the exact word also change (a|optional|ba|b + optional).
  2. Script-set "" (also null/0/false) on a VDATE variable renders instead of re-prompting — this is the fix requested in the issue; use delete variables.x / leave unset to force a prompt.
  3. One-page modal: Esc now cancels the choice cleanly (previously the run hung forever).
  4. api.requestInputs: a required blank date field now omits its key from the result (was "") — necessary so the sequential re-prompt keeps firing under the new gate.

Review notes

  • The load-bearing pairing is the VDATE gate flip (formatter.ts, === undefined) with the one-page omit-key change (OnePageInputModal.submit) — they must never be separated, which is why this ships as one PR.
  • Line trimming was deliberately rejected after design review (in-band sentinels leak through api.format/folder-path/selector exits; whole-line |trim deletes user text on the exact Tasks-capture line it targets). The [📅 ] format-literal recipe covers the residue cases instead.
  • No global skip hotkey in input prompts: Mod+Shift+Enter submits the multiline prompt today (GenericWideInputPrompt.ts, no shiftKey guard), so a chord can only be added later with a real conflict pass.
  • Out of scope, per issue triage: FIELD |optional (pipe segment means filters), api.inputPrompt({skippable}), prompt ordering (separate ask in the forum thread — should get its own issue at close-out).

Verification

  • 1712 unit tests green (52 new: grammar, real-Formatter semantics, collector AND-rule, one-page modal incl. Esc fix); bun run build-with-lint clean.
  • Validated in the real Obsidian dev vault via the CLI: script-set ""/" " contracts, Skip flows in text/wide/date prompts, cleared-default WYSIWYG vs required default-wins, suggester footer + hotkey skip, required-blank-date error tip, Koen's task-line recipe end-to-end, Esc-still-aborts. Manual QA sheet for the remaining eyes-on checks lives in the dev vault (QA-1259 Optional Prompts.md).

Fixes #1259

Summary by CodeRabbit

  • New Features

    • Optional fields: mark inputs optional, show “(optional)” badge, and allow Skip (button + keyboard shortcut) in prompts, suggesters, and one-page modal; optional dates/values can be left intentionally empty.
  • Documentation

    • Expanded docs and examples for |optional, VDATE/VALUE semantics, defaults, parsing rules, and scripting.
  • Bug Fixes

    • Stricter filename validation to prevent empty targets; clearer date-parse guidance and modal cancel behavior.
  • Tests

    • Extensive tests covering optional parsing, prompts, suggesters, one-page modal, and VDATE behavior.

- |optional flag (bare, pre-extracted before the usesOptions decision so
  shorthand defaults survive; keyed optional:<bool> form) on VALUE/NAME,
  option lists, and VDATE (new pure vdateSyntax.ts parser; regex unchanged)
- '' is now an answered value for VDATE variables too: prompt gate is
  undefined-aware (#872 parity) — script-set '' renders empty instead of
  re-prompting; the ' ' workaround stays byte-identical
- optional tokens bypass default-on-empty (cleared prefilled box = empty);
  required tokens keep default-wins (pinned)
- optional VDATE: blank input/Skip resolves empty; non-blank garbage still
  errors (typo protection); required parse errors gain an |optional tip
- Skip button + hint in input/wide/date prompts (a resolution, never a
  rejection); suggesters get instructions footer + Mod+Shift+Enter skip
- one-page modal: (optional) badges, dropdown 'Skip (leave empty)' entry
  (first option stays preselected), optional blank date stores '', required
  blank/unparseable dates omit the key so the sequential prompt still fires,
  Esc now rejects 'cancelled' instead of hanging waitForClose
- empty-file-name guard, preview formatter no longer renders the flag as
  '(default: optional)', format-syntax suggester entries, docs + examples

Closes #1259
@coderabbitai

coderabbitai Bot commented Jun 11, 2026

Copy link
Copy Markdown

Review Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: 8cc06b14-0be0-4a8e-ac77-141e59e97e36

📥 Commits

Reviewing files that changed from the base of the PR and between 2d3b32c and 5246e17.

📒 Files selected for processing (1)
  • src/engine/CaptureChoiceEngine.ts
🚧 Files skipped from review as they are similar to previous changes (1)
  • src/engine/CaptureChoiceEngine.ts

📝 Walkthrough

Walkthrough

Adds end-to-end support for |optional on VALUE and VDATE tokens: parsing (bare/keyed), PromptContext propagation, skippable suggesters and Skip buttons, one-page modal optional badges/dropdown skip option, preflight optional aggregation (AND rule), filename guards for empty formatted names, API normalization, tests, and docs.

Changes

Optional prompts feature (VALUE and VDATE tokens)

Layer / File(s) Summary
Syntax constants and boolean parsing
src/constants.ts, src/utils/pipeSyntax.ts, src/types/inputPrompt.ts
Adds VARIABLE_OPTIONAL_SYNTAX, VDATE_OPTIONAL_SYNTAX, parseBooleanFlag, and InputPromptOptions.optional?: boolean to register and parse `
VALUE token option parsing and tests
src/utils/valueSyntax.ts, src/utils/valueSyntax.test.ts
VALUE parsing recognizes bare `
VDATE options parsing and tests
src/utils/vdateSyntax.ts, src/utils/vdateSyntax.test.ts
Adds parseVDateOptions and ParsedVDateOptions to extract defaultValue and optional (bare/keyed), preserving `
Formatter integration
src/formatters/formatter.ts, src/formatters/completeFormatter.ts, src/formatters/formatDisplayFormatter.ts
Threads optional into PromptContext, disables default fallback for optional VALUEs, treats optional VDATE blank as intentional (stores ""), parses VDATE options for previews, and configures skippable suggestion context.
Suggester and CompleteFormatter wiring
src/formatters/completeFormatter.ts, src/gui/suggesters/formatSyntaxSuggester.ts
suggestForValue/suggester calls include optional in context; suggesters configured with skippable: true for optional fields; examples updated.
Prompt UI skip affordances
src/gui/GenericInputPrompt/GenericInputPrompt.ts, src/gui/GenericWideInputPrompt/GenericWideInputPrompt.ts, src/gui/suggesters/utils.ts
Adds optional hint text and Skip button to input prompts, skip() resolves empty string as submission, and installSkipAffordance wires keyboard shortcut/instructions for skippable suggesters.
Suggester/InputSuggester skip support
src/gui/GenericSuggester/genericSuggester.ts, src/gui/InputSuggester/inputSuggester.ts
Adds skippable option and skip() implementation to resolve "" and close suggester modals.
VDate prompt optional behavior
src/gui/VDateInputPrompt/VDateInputPrompt.ts
Accepts InputPromptOptions, and ensures default preview/submit/close behavior only applies when the prompt is not optional.
Preflight requirement collection
src/preflight/RequirementCollector.ts, src/preflight/collectChoiceRequirements.ts, src/preflight/RequirementCollector.test.ts
FieldRequirement.optional?: boolean added; scanDateTokens collects VDATE occurrences and optional flags; VALUE/VDATE optionality aggregated with AND-rule across occurrences/scan calls; tests added.
OnePageInputModal and submission logic
src/preflight/OnePageInputModal.ts, src/preflight/OnePageInputModal.test.ts, src/styles.css
Tracks date parse errors, adds optional dropdown leading "Skip (leave empty)", renders (optional) badge via DocumentFragment, omits empty required/unparseable dates at submit, settles/rejects modal promise correctly on close, and adds styles and tests.
Filename and capture path guards
src/engine/TemplateEngine.ts, src/engine/TemplateInsertEngine.ts, src/engine/CaptureChoiceEngine.ts
Guards throw/return null when formatted filenames resolve to empty/whitespace after formatting, preventing unusable targets.
QuickAdd API requestInputs change
src/quickAddApi.ts
requestInputs spec accepts optional?: boolean; API propagates to FieldRequirement and normalizes returned raw results to include all requested ids (defaulting missing ids to "").
Docs and examples
docs/docs/Advanced/onePageInputs.md, docs/docs/FormatSyntax.md, src/formatters/formatSyntax.docs-examples.test.ts
Documentation updated with `
Comprehensive tests
src/formatters/formatter-optional.test.ts, src/preflight/OnePageInputModal.test.ts, src/utils/*test.ts
New and extended Vitest suites cover parsing, formatter behavior, VDATE contracts, one-page modal behavior, RequirementCollector AND-rule, and suggester skip flows.

Estimated code review effort
🎯 4 (Complex) | ⏱️ ~60 minutes

Possibly related PRs

Suggested labels
released

"🐰 I hopped through pipes and flags so bright,
Marked fields optional — skip if not right.
A badge, a Skip, and parser neat and trim,
Dates and values bow to the user's whim.
🥕✨"

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 37.50% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title clearly and concisely describes the main feature: optional/skippable prompts for {{VALUE}} and {{VDATE}} tokens, which is the core change.
Linked Issues check ✅ Passed The PR fully implements all objectives from #1259: optional modifier syntax, One-Page Input support, skip affordance with UI hints, empty-value handling, and sequential prompt behavior.
Out of Scope Changes check ✅ Passed All changes are directly related to implementing optional/skippable prompts: token parsing, formatter updates, UI components, requirement collection, documentation, and supporting infrastructure.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch 1259-feature-request-optional-skippable-prompts-optional-value-vdate

Warning

There were issues while running some tools. Please review the errors and either fix the tool's configuration or disable the tool if it's a critical failure.

🔧 ESLint

If the error stems from missing dependencies, add them to the package.json file. For unrecoverable errors (e.g., due to private dependencies), disable the tool in the CodeRabbit configuration.

ESLint install timed out. The project may have too many dependencies for the sandbox.


Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@chhoumann chhoumann marked this pull request as ready for review June 11, 2026 18:29
@cloudflare-workers-and-pages

cloudflare-workers-and-pages Bot commented Jun 11, 2026

Copy link
Copy Markdown

Deploying quickadd with  Cloudflare Pages  Cloudflare Pages

Latest commit: 5246e17
Status: ✅  Deploy successful!
Preview URL: https://5db7c88f.quickadd.pages.dev
Branch Preview URL: https://1259-feature-request-optiona.quickadd.pages.dev

View logs

@devin-ai-integration devin-ai-integration Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Devin Review found 2 potential issues.

Open in Devin Review

Comment thread src/formatters/formatter.ts
Comment thread src/formatters/formatter.ts

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 2

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@src/engine/TemplateEngine.ts`:
- Around line 522-526: The current guard in TemplateEngine.ts only checks
formattedFileName.trim(), which misses cases where the path ends with a slash
(e.g. "Folder/") and therefore has no basename, allowing generation of paths
like "/.md"; update the validation in the method that throws the error to also
ensure the final path segment (basename) is non-empty—e.g., trim trailing
slashes and verify path.basename(formattedFileName.trim()) (or equivalent logic)
yields a non-empty filename (and not just an extension) before proceeding, and
throw the existing error if that check fails.

In `@src/preflight/RequirementCollector.ts`:
- Around line 241-251: The optionality aggregation currently runs for all
requirement types and can let a VDATE occurrence change optional on non-date
requirements; restrict this by applying the optional aggregation only when
existing.type === "date" (same guard used for default backfill). Update the
logic around the existing.optional assignment in RequirementCollector (the block
that currently sets existing.optional = (existing.optional ?? false) &&
optional) so it is executed only for date requirements (or combine it into the
existing.type === "date" conditional) and leave non-date requirements untouched.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: b126f7e4-2ebc-4c03-a129-591c2307be70

📥 Commits

Reviewing files that changed from the base of the PR and between 37a9398 and 3abea4c.

📒 Files selected for processing (28)
  • docs/docs/Advanced/onePageInputs.md
  • docs/docs/FormatSyntax.md
  • src/constants.ts
  • src/engine/TemplateEngine.ts
  • src/engine/TemplateInsertEngine.ts
  • src/formatters/completeFormatter.ts
  • src/formatters/formatDisplayFormatter.ts
  • src/formatters/formatSyntax.docs-examples.test.ts
  • src/formatters/formatter-optional.test.ts
  • src/formatters/formatter.ts
  • src/gui/GenericInputPrompt/GenericInputPrompt.ts
  • src/gui/GenericSuggester/genericSuggester.ts
  • src/gui/GenericWideInputPrompt/GenericWideInputPrompt.ts
  • src/gui/InputSuggester/inputSuggester.ts
  • src/gui/VDateInputPrompt/VDateInputPrompt.ts
  • src/gui/suggesters/formatSyntaxSuggester.ts
  • src/preflight/OnePageInputModal.test.ts
  • src/preflight/OnePageInputModal.ts
  • src/preflight/RequirementCollector.test.ts
  • src/preflight/RequirementCollector.ts
  • src/preflight/collectChoiceRequirements.ts
  • src/styles.css
  • src/types/inputPrompt.ts
  • src/utils/pipeSyntax.ts
  • src/utils/valueSyntax.test.ts
  • src/utils/valueSyntax.ts
  • src/utils/vdateSyntax.test.ts
  • src/utils/vdateSyntax.ts

Comment thread src/engine/TemplateEngine.ts Outdated
Comment thread src/preflight/RequirementCollector.ts
- guard degenerate capture targets ('notes/.md' from an optional token left
  empty) with a clear ChoiceAbortError instead of creating the file
- api.requestInputs: pass the optional field through to the one-page form and
  backfill omitted blank-date keys with '' so every requested id resolves
- replaceDateVariableInString: use a replacer function so $-patterns in
  stored values are literal (a pre-seeded '$&' previously hung the loop)
- neutral empty-file-name error message (no longer blames |optional
  unconditionally); drop the dead TemplateEngine.getFormattedFilePath
- collector: scanDateTokens is the single VDATE requirement recorder (the
  promptForVariable registration block was unreachable and lacked the AND rule)
- drop the redundant didSkip flag; share installSkipAffordance between the
  two suggesters; share extractBareFlagPart between the VALUE/VDATE grammars
@chhoumann chhoumann force-pushed the 1259-feature-request-optional-skippable-prompts-optional-value-vdate branch from 2103267 to 48e46a2 Compare June 11, 2026 18:56
…ting

Review feedback (CodeRabbit): 'Projects/{{VALUE:name|optional}}' skipped
resolved to 'Projects/' which passed the whole-string guard and still
created 'Projects/.md'. Validate the leaf segment instead, and mirror the
check in TemplateInsertEngine's move-offer pre-check.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@src/engine/CaptureChoiceEngine.ts`:
- Around line 818-821: Replace the manual basename extraction with the existing
utility: instead of computing basename from finalPath via regex chains, call the
imported basenameWithoutMdOrCanvas on finalPath to produce the same value;
update the const named basename (in CaptureChoiceEngine around the block that
currently computes basename from finalPath) to use
basenameWithoutMdOrCanvas(finalPath) so duplication is removed and behavior
stays consistent with other uses in this file.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: 11fedcf2-bbba-4f17-bc50-076b2dde0585

📥 Commits

Reviewing files that changed from the base of the PR and between 3abea4c and 48e46a2.

📒 Files selected for processing (14)
  • src/engine/CaptureChoiceEngine.ts
  • src/engine/TemplateEngine.ts
  • src/formatters/formatter-optional.test.ts
  • src/formatters/formatter.ts
  • src/gui/GenericInputPrompt/GenericInputPrompt.ts
  • src/gui/GenericSuggester/genericSuggester.ts
  • src/gui/InputSuggester/inputSuggester.ts
  • src/gui/VDateInputPrompt/VDateInputPrompt.ts
  • src/gui/suggesters/utils.ts
  • src/preflight/RequirementCollector.ts
  • src/quickAddApi.ts
  • src/utils/pipeSyntax.ts
  • src/utils/valueSyntax.ts
  • src/utils/vdateSyntax.ts
🚧 Files skipped from review as they are similar to previous changes (6)
  • src/formatters/formatter-optional.test.ts
  • src/utils/pipeSyntax.ts
  • src/gui/VDateInputPrompt/VDateInputPrompt.ts
  • src/utils/vdateSyntax.ts
  • src/formatters/formatter.ts
  • src/engine/TemplateEngine.ts

Comment thread src/engine/CaptureChoiceEngine.ts Outdated
Review feedback (CodeRabbit): the hand-rolled basename extraction
duplicated the existing pathUtils helper already used in this file.
@chhoumann chhoumann merged commit e629deb into master Jun 11, 2026
9 checks passed
@chhoumann chhoumann deleted the 1259-feature-request-optional-skippable-prompts-optional-value-vdate branch June 11, 2026 19:44
github-actions Bot pushed a commit that referenced this pull request Jun 11, 2026
# [2.13.0](2.12.3...2.13.0) (2026-06-11)

### Bug Fixes

* **ai:** match provider endpoints by hostname, not URL substring ([#1242](#1242)) ([c48ce52](c48ce52))
* **capture:** preserve content when file creation fails ([#1270](#1270)) ([8e58562](8e58562))
* **choices:** bug fixes + polish for the choices view ([#1262](#1262)) ([be083db](be083db)), closes [#1257](#1257) [#1261](#1261)
* ignore unresolved field tokens in suggestions ([#1271](#1271)) ([c374be9](c374be9))
* keep non-breaking-space-only captures instead of dropping them as empty ([#1296](#1296)) ([37a9398](37a9398)), closes [#760](#760)
* **macros:** keep commands from vanishing when reordering in the macro editor ([#1244](#1244)) ([539605d](539605d))
* preserve prompt drafts until choice execution commits ([0b08863](0b08863)), closes [#1275](#1275)
* resolve three verified bugs surfaced by the core-logic tests ([#1246](#1246)) ([#1247](#1247)) ([d2333fe](d2333fe))
* store one-page FIELD inputs under the runtime FIELD: variable key ([#1295](#1295)) ([9ccc86a](9ccc86a)), closes [#1184](#1184)
* suppress yes/no prompt pointer press ([#1273](#1273)) ([d31b8f4](d31b8f4))

### Features

* **a11y:** keyboard & ARIA pass on the choice & macro GUIs ([#1251](#1251)) ([9247e00](9247e00))
* **api:** add cursor option for input prompts ([#1272](#1272)) ([f05284e](f05284e))
* apply template to existing note ([#1293](#1293)) ([7f4d35d](7f4d35d)), closes [#526](#526)
* **capture:** add insert-before write position ([#1274](#1274)) ([7a6e95f](7a6e95f))
* **choices:** highlight folders as drop targets while dragging + empty-folder hint ([#1264](#1264)) ([ff69ce8](ff69ce8))
* migrate settings to the Obsidian 1.13 declarative API; raise minAppVersion to 1.13.0 ([#1255](#1255)) ([fcb22f6](fcb22f6))
* optional / skippable {{VALUE}} / {{VDATE}} prompts ([#1297](#1297)) ([e629deb](e629deb)), closes [#1259](#1259)
* **packages:** capability-review preview for package import ([#1287](#1287)) ([ba9cf00](ba9cf00))
* rework the add-choice UX — explained types, Multi-as-folder, add-into-folder ([#1257](#1257)) ([c02b1ab](c02b1ab))
* search nested choices in the choice picker ([#1294](#1294)) ([1b84cc3](1b84cc3)), closes [#1185](#1185)
@github-actions

Copy link
Copy Markdown

🎉 This PR is included in version 2.13.0 🎉

The release is available on GitHub release

Your semantic-release bot 📦🚀

@github-actions

Copy link
Copy Markdown

🚀 Release has been published: v2.13.0

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[FEATURE REQUEST] Optional / skippable prompts (optional {{VALUE}} / {{VDATE}})

1 participant