Releases: NotePlan/plugins
🎛 Dashboard
What's changed in 🎛 Dashboard plugin?
For more details see the plugin's documentation.
[2.4.0.b16] 2026-01-20
Fixes
- suppress "showing all 0 items" message when "nothing on this list" message also appears
- stop tag cache source message appearing in Section header when feature flag not turned on
- changing 'Dashboard Theme' setting will now change straight away rather than next time the Dashboard starts.
- dev: using new
TProjectForDashboardtype, spread intoTParagraphForDashboardandTProjectForDashboardto show commonality - dev: new NoteTitleLink component, used by ProjectItem and ItemNoteLink components
- dev: suppress "backup settings" messages to users on upgrades
- align the two different sidebar icon colours
- dev: fix a wrong windowID that had crept in
[2.4.0.b15] 2026-01-17
Changed
- fix displaying folder names
- add note's
iconandicon-colorproperties to display of note title (if set in note's frontmatter) in all Sections
[2.4.0.b14] 2026-01-16
Changed
- force iPad and iPhone to run in "main window" mode, not "floating window" mode, if it can. Where it does, then change layout of right-hand-side of Header.
- now supports the updated Plugins Preference from NP 3.20.1, which includes the ability to add the plugin to the sidebar.
[2.4.0.b13] 2026-01-09
Changed
- allowed mainWindow to work on iOS from v3.20.1, now that @em has added it
- to ease beta testing, particularly for users on iPhone/iPad, made minimum app version 3.20.0
- added 'reload' icon to the NotePlan-added Header bar, as it looks like the usual Refresh button sometimes isn't working on iPad.
[2.4.0.b12] 2026-01-09
Fixed
- PerspectiveSelector star indicator not displaying: Fixed issue where the asterisk (*) indicating a modified perspective was not showing in the dropdown selector. The bug was introduced in commit
c493f26d(2025-12-18, "forms editor v1") whenDropdownSelectwas refactored to find options by value. The component was using the label from the found option in the options array instead of preserving the custom label fromcontrolledValue(which includes the asterisk for modified perspectives). The fix ensures that whencontrolledValueis provided as an object with a custom label, that label is used instead of the option's label from the array. - PerspectiveSelector using stale perspective data: Changed
PerspectiveSelectorto usegetActivePerspectiveDef()instead ofgetPerspectiveNamed()to ensure it always gets the most up-to-date perspective with the correctisModifiedflag directly fromperspectiveSettings, rather than looking it up by name which could be stale. - added an automatic refresh of the Dashboard if it's open at midnight
[2.4.0.b11] 2026-01-09
Changed
- Refactored request/response handling to use new shared router pattern (
newCommsRouterfrom@helpers/react/routerUtils). Moved routing logic torouteRequestsFromReact.jsfor better maintainability and consistency with other plugins. - Improved "Add Task" dialog: now defaults to today's date in ISO format, supports date picker for selecting calendar notes, and provides better error messages with toast notifications for success and banner messages for failures.
- Fixed CSS variable for toolbar height: changed
var(--noteplan-toolbar-height, 0)tovar(--noteplan-toolbar-height, 0px)for proper CSS unit handling in mainWindow mode.
Dev
- Removed extensive encoding debug logging that was added for emoji corruption investigation (no longer needed).
- Added new request handler
addTaskToNoteinrequestHandlers/addTaskToNote.js(placeholder for @jgclark to implement). - Added performance logging and position verification for dialog rendering.
- Improved error handling in AddToAnyNote component with request/response pattern instead of sendActionToPlugin.
[2.4.0.b10] 2026-01-08
- bump mainWindow version to 3.20.1 as @em has changed it up
- added more details to INFO section to see more clearly what's going on with mainWindow on different platforms
[2.4.0.b9] 2026-01-07
- Running in "Main Window" mode doesn't seem to work on iPadOS or iOS, so changed it run only in "New Window" mode on those platforms.
- Fixed Settings Dialog CSS positioning to properly center in viewport accounting for toolbar height. Removed transform-based centering and switched to direct top/left calculations for more reliable positioning.
- Adjusted Task and Projects Dialog positioning to take account of the new header bar when running in mainWindow
- Fixed the 'move to today' button not working in Task Dialog from Yesterday section
- More efficient refresh after moving an item from calendar note to a different calendar note
[2.4.0.b8] 2026-01-05
- now always trigger Timeblock Section generation whenever Today Section is generated. This simplifies some handlers.
- add error message info to click handlers, ready to display in updated MessageBanners
- reduced number of Section updates, by being smarter about which ones might need to be updated.
[2.4.0.b7] 2026-01-03
- Fixed Settings Dialog and DynamicDialog positioning to center properly in viewport when
--noteplan-toolbar-heightis set. Changed from using percentage-based positioning (which used full page height) to viewport-based units (vh) for proper centering.
[2.4.0.b6] 2026-01-03
- Fixed height/Y pos issues for Dynamic and Settings dialogs
- dev: added new color definitions to theme CSS generator
[2.4.0.b5] 2026-01-02
- dev: height/width/sticky fixes to use the new
var(--noteplan-toolbar-height, 0px)for mainWindow running
[2.4.0.b4] 2026-01-01
- added support for opening the Dashboard in the main app window or a split view, as well as in a separate window. This is controlled in a new setting in the plugin's original settings screen (NotePlan > Settings… > AI & Plugins > Dashboard > ⚙️)
- fix to Week section which (depending on settings) could be a year out when the week number has already ticked over to
W01of the next year. - fix to some Header element sizes which mysteriously shrunk
- another attempt to fix the tooltips getting clipped. Possibly improved some of them, but definitely not all, sorry.
- dev: separated data generation for Timeblocks section from Today section.
[2.4.0.b3] 2025-12-23
- you can now change the priority shown in the Dashboard of all open items in a note by specifying
note-priority-delta: Nattribute in the note's frontmatter. This addsN(or subtracts-N) to the relative priority, used when priority filtering is turned on. This is useful if you have a note where everything in it is important, for example a note about filing and paying taxes. This saves having to clutter the note with priority markers. Note: This doesn't actually change the items, but just how they're displayed in the Dashboard.
[2.4.0.b2] 2025-12-22
- change name of trigger to
onEditorWillSave, though the existing one will work for now. - dev: cursor fixing subtle bugs in demo data mode
- dev: cursor improved code quality of DialogForTaskItems.jsx and DialogForProjectItems.jsx
- turn off auto-refreshes in Demo mode
[2.4.0.b1] 2025-12-05
- new "Spaces to Include" setting which controls which (Team)Spaces you wish to include, plus whether or not to include the Private "Space" (all notes not in a Space). This is applied per Perspective.
- Improved display of Teamspace part of note links in displayed items
- improve design of toggle switches, and add subtle animation
[2.3.3] 2025-12-04
- new 'Year' section available
- change order of display of tag sections to the order they are defined in the settings, not alphabetical.
- dev: removed
sectionNumStrthroughout, now usingsectionCodeinstead - remove + icon on the "Showing all N items..." message line
[2.3.2] 2025-12-02
- fix display when there are no priority items shown.
[2.3.1] 2025-12-01
- fix for possible loss of settings error seen by @jim when upgrading
- dev: updated default handling for dashboardSettings and perspectiveSettings
[2.3.0] 2025-11-30
New
- support for (Team)Space notes in all Dashboard operations
- new % complete pie charts in Section areas for Calendar notes
- you can now change the displayed order of Sections, using a new panel in the Settings window. This is set per Perspective (if used). It can be reset to the default sort order.
- new setting "Do 'Move all items' buttons only move shown items when filtering?"
- new setting 'Include #tag/@mention(s) scheduled to future dates?' (default: false)
- new setting 'How to show progress in Calendar sections?'. If set to 'number closed', then the number of tasks completed in that note will be shown in the section heading area. If set to 'number open', then the number of tasks still open will be shown instead. Or can be set to 'none'. (Default: 'number closed'.)
- new /backupSettings command
- added little circles for task completion in section headings, and tweaked the text after it
Changes
- big speed up of #tag and @mention sections (at least after the first call; it creates a cache in the background for new tags and mentions)
- when the "filter out lower-priority items" is on, this now calculated across all sections, not just each one independently.
- show Tag/Mention sections that have no items
- hide Referenced calendar sections (e.g. ">T...
⭐️ Favorites
Favorites Plugin Changelog
[1.3.3 - waiting for np 3.20.1 release (change showReloadButton to true)] - 2026-01-11 @dwertheimer
- Added reload button to favorites browser window to allow for easy reloading of the window when changes are made to the plugin or the underlying note data.
[1.3.2] - 2026-01-11 @dwertheimer
Fixed
- Fixed bug where removing a favorite note would remove the star from the title but not remove the frontmatter field. Now properly passes
deleteMissingAttributes: truetoupdateFrontMatterVars()to ensure the frontmatter key is actually deleted. Thanks @stacey for the detailed bug report!
[1.3.1] - 2026-01-11 @dwertheimer
Fixed
- CRITICAL: Fixed request timeout issue by removing outdated local copy of
routerUtils.jsand switching to shared version from@helpers/react/routerUtils - The local copy was missing the
pluginJsonparameter required by the shared router, which could cause silent failures when sending responses back to React - Router now properly passes
pluginJsonparameter tonewCommsRouterfor correct logging and response handling
[1.3.0] - 2025-01-10 @dwertheimer
- Feature: Add new
/favorites-browsercommand to open a sidebar window to view and open favorite notes and commands. This provides a persistent browser interface for managing and accessing your favorites.
[1.2.10] - 2025-04-10 @dwertheimer
- Bugfix: Fix issue with frontmatter not being visible immediately after setting a favorite
[1.2.9] - 2025-02-20 @dwertheimer
- Bugfix: Fix Stacey issue with writing title above frontmatter when only one field and no title
- Bugfix: Fix issue with duplicate notes in favorites list
[1.2.7] - 2025-02-19 @dwertheimer
- Bugfix: quoteText() now handles null, boolean, number and undefined values correctly
[1.2.6] - 2025-02-19 @dwertheimer
- Add "Favorite Key" setting to allow for customizing the frontmatter key used to identify favorites.
[1.2.5] - 2025-02-15 @dwertheimer
- Favorites now works with frontmatter
[1.2.4] - 2024-06-12 @dwertheimer
- bump version for rerelease (plugin was missing from github)
[1.2.3] - 2023-09-29 @dwertheimer
- change the default to not add a space in front of the default tag
[1.2.2] - 2023-08 @dwertheimer
- Bugfix: allow for escaping and leaving command intact.
[1.2.1] - 2023-08 @dwertheimer
- Add "rename" capability
[1.2.0] - 2023-08-27 @dwertheimer
- Add prepended characters for favorite saved commands & xcallback creator inline. Thx for the idea @clayrussell
[1.1.3] - 2023-08 @dwertheimer
- Add remember-presets-after-update code
[1.1.0] - 2023-08-25 @dwertheimer
- Add capability to set a preset to run a favorite URL/X-Callback
[1.0.1] - 2021-11-30 (@dwertheimer)
- Minor tweak to the plugin.json to be more descriptive in Description
[1.0.0] - 2021-11-16 (@dwertheimer)
- Initial plugin functions:
/fave,/unfave,/faves
📒 Templating
Templating Changelog
About Templating Plugin
See Plugin Documentation for details on available commands and use case.
DBW: REMEMBER THAT IF YOU ADDED ANY HELPERS IMPORTS, ADD THEM TO THE HELPER MODULE TO GIVE SCRIPTS ACCESS TO THEM ALSO
[2.2.9] 2026-01-XX @dwertheimer
- Add new hidden command
getRenderContextfor use by other plugins (e.g., Forms plugin)- Returns the full templating render context object with all globals, modules, and helpers (date, time, note, tasks, moment, etc.)
- Includes timing logs for performance monitoring (setup, config, engine creation, context building, total time)
- Allows other plugins to reuse templating context without duplicating code
- Accessible via
DataStore.invokePluginCommandByName('getRenderContext', 'np.Templating', [userData])
- Comprehensive template search refactoring - Expand template search functions to search in both @templates and @Forms directories across all spaces
- New shared utility: Created
getTemplateFolderPrefixes()function that builds complete list of folder prefixes including:- Private root folders:
@Templatesand@Forms(or localized equivalents) - All teamspace root folders:
%%NotePlanCloud%%/<teamspaceID>/@Templatesand%%NotePlanCloud%%/<teamspaceID>/@Forms
- Private root folders:
- Core template search functions updated:
getFilteredTemplateList- Now searches in both private root and all teamspace root foldersgetTemplateNote- Now searches all teamspaces, not just private rootgetFilenameFromTemplate- Filters notes from all template folders in all spacesgetTemplateContent- Searches in all template folders when finding templatestemplateExists- Searches in all template folders (Templates, Forms, all spaces)
- User-facing commands updated:
templateInsertandtemplateAppend- Now usegetTemplateNote(searches all folders/spaces)<current>prompt validation - Now checks if note is in any template folder (not just @templates)addFrontmatterToTemplate(NPTemplateRunner) - Now usesgetTemplateNotechooseTemplate- Now useschooseNoteV2for decorated note selection UI (shows icons, colors, folder paths)- Automatically displays templates from both @templates and @Forms directories across all spaces
- No longer limited to just @templates folder in display logic
- Improved user experience with visual decorations and better folder path display
- Localization support:
- All functions now use
DataStore.preference('templateFolder')for localized template folder names instead of hardcoded '@templates' - All functions now use
DataStore.preference('formsFolder')for localized forms folder names (with '@Forms' fallback)
- All functions now use
- Bug fixes:
- Fixes issue where form processing templates stored in @Forms weren't found by
templateRunnerandgetTemplateNotewhen processing form submissions - Fixes issue where templates in teamspaces weren't found by template search functions
- Fixes issue where form processing templates stored in @Forms weren't found by
- Impact: Templates can now be stored in @Forms directory (for form processing) or @templates directory (for regular templates), in both private root and teamspace root folders, and all search functions will find them correctly
- New shared utility: Created
- Replace
chooseNote/chooseOptionwithchooseNoteV2throughout np.Templating - Modernize all note selection UI- All functions updated to use
chooseNoteV2:handleNoteSelectioninNPTemplateRunner.js- Replaced deprecatedchooseNotewithchooseNoteV2- Uses
DataStore.projectNoteswhich automatically includes notes from all spaces (private and teamspaces) - When templates use
<choose>or<select>placeholders, users now see decorated note selection UI
- Uses
chooseTemplateintemplateManager.js- ReplacedchooseOptionwithchooseNoteV2- Templates from both @templates and @Forms directories (across all spaces) are properly displayed with full paths
- Removed complex label manipulation code that only handled @templates folder
getTemplateContentintemplateManager.js- ReplacedchooseOptionwithchooseNoteV2- When multiple templates match the same name, user selection now shows decorated UI with folder paths
- Templates from all template folders (Templates, Forms, all teamspaces) are included in selection
- Benefits:
- Better UI with decorated options showing icons, colors, and folder paths
- All note selection now searches across all spaces (private root and all teamspace root folders)
- Consistent user experience across all template selection functions
- Visual distinction between templates in different folders and spaces
- Backward compatibility:
chooseNoteis still available in templates viahelpers.chooseNotefor backward compatibility, buthelpers.chooseNoteV2is recommended for new templates - Testing: Updated all test mocks to use
chooseNoteV2and addedDataStore.preferencemocks for template folder localization
- All functions updated to use
[2.2.8] 2026-01-XX @dwertheimer
- Add triggerTemplateRunner command to automatically run templates when notes are opened
- New hidden command
triggerTemplateRunnerchecks forrunTemplateOnOpenfrontmatter attribute - When a note with
runTemplateOnOpenis opened, the specified template is automatically executed - Use
triggers: onOpen => np.Templating.triggerTemplateRunnerin note frontmatter to enable this feature - Similar to Forms plugin's
triggerOpenFormfunctionality, but for template execution - Example use case: Automatically update age calculations or other dynamic content when a note is opened
[2.2.7] 2026-01-05 @dwertheimer
- templateRunnerExecute now returns AI analysis errors from all code paths
- Modified templateRunnerExecute to return Promise<string | void> instead of Promise
- Added hasAiAnalysisError helper function to detect AI analysis error marker
- Updated all handler functions (handleCurrentNote, handleRegularNote, handleTodayNote, handleWeeklyNote) to return errors
- Updated handleNewNoteCreation to return rendered content if it contains AI analysis error
- All early return paths in templateRunnerExecute now check for and return AI analysis errors
- This allows Forms plugin to capture and display template rendering errors to users
[2.2.6] 2026-01-04 @dwertheimer
- Fix
allowCreateparameter parsing forpromptMentionandpromptTagprompts: TheallowCreateparameter (4th parameter) was not being parsed correctly from template tags, preventing the "➕ Add new [item]" option from appearing in selection dialogs. This fix:- Improved parameter parsing to handle both quoted strings (
'true') and unquoted boolean literals (true) - Fixed regex pattern to handle both full template tag syntax (
<%- promptMention(...) %>) and cleaned tag format (without<% %>) - Added fallback parsing logic for multiple parameters when the primary regex doesn't match
- Works with all template tag syntax variations:
<% %>,<%- %>,<%- -%>,<%= %> - Users can now properly use
allowCreateto enable creating new mentions/hashtags when they don't exist in the list
- Improved parameter parsing to handle both quoted strings (
[2.2.5] 2025-12-19 @dwertheimer
- Fix messaging in templateNew when templates not found
- Enhanced
template: ignorecode block handling: Code blocks starting with ```template: ignore on the first line are now completely removed from templates (not just protected). Comment-style ignores (// template: ignoreor `/* template: ignore */`) continue to be protected during processing and restored in the output. This allows template authors to include metadata or instructions that should not appear in the final rendered output. - TemplateRunner rendering improvements: TemplateRunner now consistently renders template tags in all fields before using them:
templateBodyis now rendered inhandleNewNoteCreation(for create-new path) to ensure template tags are replaced with form values before being written to notesnewNoteTitleis now rendered if it contains template tags before being used to create a new notegetNoteTitled(noteTitle) is now rendered if it contains template tags, while preserving special values like<today>,<current>,<choose>,<select>,<thisweek>,<nextweek>writeUnderHeadingis now rendered if it contains template tags, while preserving special values like<choose>,<select>(handled byhandleHeadingSelectionafter rendering)folderis now rendered if it contains template tags, while preserving special values like<select>,<choose>,<current>(handled bytemplateNew/getFolderafter rendering)- This ensures consistent behavior across all TemplateRunner paths and prevents unrendered template tags from being written to notes
[2.2.4] 2025-12-03 @dwertheimer
- fix templateLocale setting to allow for locale-specific date/time formatting
[2.2.3] 2025-11-11 @dwertheimer
- add new weather formatting fields (location.*, :formatted: etc.)
[2.2.2] 2025-11-09 @dwertheimer
- Fix default weather formatting so calling
<%- weather() %>uses the new NotePlan format string
[2.2.1] 2025-11-09 @dwertheimer
- Work around NotePlan weather API bug by sending null coordinates instead of
0,0so auto-location lookup succeeds - Mapped legacy weather placeholders (e.g.
:FeelsLikeF:,:winddir16Point:,:region:) to fields from NotePlan's OpenWeatherMap response
[2.2.0] 2025-10-28 @dwertheimer
- switch weather service to use NotePlan's new weather API (
<%- NotePlan.getWeather(units, latitude, longitude) %>) - templateInsert and templateAppend now add a reload of the Editor in case any templating code changed the note underneath and we are reloading the note to get the new content before inserting the rendered template. to solve a but where plugin was writing to note but Editor was overwriting
- includes fix f...
⭐️ Favorites
Favorites Plugin Changelog
[1.3.3 - waiting for np 3.20.1 release (change showReloadButton to true)] - 2026-01-11 @dwertheimer
- Added reload button to favorites browser window to allow for easy reloading of the window when changes are made to the plugin or the underlying note data.
[1.3.2] - 2026-01-11 @dwertheimer
Fixed
- Fixed bug where removing a favorite note would remove the star from the title but not remove the frontmatter field. Now properly passes
deleteMissingAttributes: truetoupdateFrontMatterVars()to ensure the frontmatter key is actually deleted. Thanks @stacey for the detailed bug report!
[1.3.1] - 2026-01-11 @dwertheimer
Fixed
- CRITICAL: Fixed request timeout issue by removing outdated local copy of
routerUtils.jsand switching to shared version from@helpers/react/routerUtils - The local copy was missing the
pluginJsonparameter required by the shared router, which could cause silent failures when sending responses back to React - Router now properly passes
pluginJsonparameter tonewCommsRouterfor correct logging and response handling
[1.3.0] - 2025-01-10 @dwertheimer
- Feature: Add new
/favorites-browsercommand to open a sidebar window to view and open favorite notes and commands. This provides a persistent browser interface for managing and accessing your favorites.
[1.2.10] - 2025-04-10 @dwertheimer
- Bugfix: Fix issue with frontmatter not being visible immediately after setting a favorite
[1.2.9] - 2025-02-20 @dwertheimer
- Bugfix: Fix Stacey issue with writing title above frontmatter when only one field and no title
- Bugfix: Fix issue with duplicate notes in favorites list
[1.2.7] - 2025-02-19 @dwertheimer
- Bugfix: quoteText() now handles null, boolean, number and undefined values correctly
[1.2.6] - 2025-02-19 @dwertheimer
- Add "Favorite Key" setting to allow for customizing the frontmatter key used to identify favorites.
[1.2.5] - 2025-02-15 @dwertheimer
- Favorites now works with frontmatter
[1.2.4] - 2024-06-12 @dwertheimer
- bump version for rerelease (plugin was missing from github)
[1.2.3] - 2023-09-29 @dwertheimer
- change the default to not add a space in front of the default tag
[1.2.2] - 2023-08 @dwertheimer
- Bugfix: allow for escaping and leaving command intact.
[1.2.1] - 2023-08 @dwertheimer
- Add "rename" capability
[1.2.0] - 2023-08-27 @dwertheimer
- Add prepended characters for favorite saved commands & xcallback creator inline. Thx for the idea @clayrussell
[1.1.3] - 2023-08 @dwertheimer
- Add remember-presets-after-update code
[1.1.0] - 2023-08-25 @dwertheimer
- Add capability to set a preset to run a favorite URL/X-Callback
[1.0.1] - 2021-11-30 (@dwertheimer)
- Minor tweak to the plugin.json to be more descriptive in Description
[1.0.0] - 2021-11-16 (@dwertheimer)
- Initial plugin functions:
/fave,/unfave,/faves
⭐️ Favorites
Favorites Plugin Changelog
[1.3.1] - 2026-01-11 @dwertheimer
Fixed
- CRITICAL: Fixed request timeout issue by removing outdated local copy of
routerUtils.jsand switching to shared version from@helpers/react/routerUtils - The local copy was missing the
pluginJsonparameter required by the shared router, which could cause silent failures when sending responses back to React - Router now properly passes
pluginJsonparameter tonewCommsRouterfor correct logging and response handling
[1.3.0] - 2025-01-10 @dwertheimer
- Feature: Add new
/favorites-browsercommand to open a sidebar window to view and open favorite notes and commands. This provides a persistent browser interface for managing and accessing your favorites.
[1.2.10] - 2025-04-10 @dwertheimer
- Bugfix: Fix issue with frontmatter not being visible immediately after setting a favorite
[1.2.9] - 2025-02-20 @dwertheimer
- Bugfix: Fix Stacey issue with writing title above frontmatter when only one field and no title
- Bugfix: Fix issue with duplicate notes in favorites list
[1.2.7] - 2025-02-19 @dwertheimer
- Bugfix: quoteText() now handles null, boolean, number and undefined values correctly
[1.2.6] - 2025-02-19 @dwertheimer
- Add "Favorite Key" setting to allow for customizing the frontmatter key used to identify favorites.
[1.2.5] - 2025-02-15 @dwertheimer
- Favorites now works with frontmatter
[1.2.4] - 2024-06-12 @dwertheimer
- bump version for rerelease (plugin was missing from github)
[1.2.3] - 2023-09-29 @dwertheimer
- change the default to not add a space in front of the default tag
[1.2.2] - 2023-08 @dwertheimer
- Bugfix: allow for escaping and leaving command intact.
[1.2.1] - 2023-08 @dwertheimer
- Add "rename" capability
[1.2.0] - 2023-08-27 @dwertheimer
- Add prepended characters for favorite saved commands & xcallback creator inline. Thx for the idea @clayrussell
[1.1.3] - 2023-08 @dwertheimer
- Add remember-presets-after-update code
[1.1.0] - 2023-08-25 @dwertheimer
- Add capability to set a preset to run a favorite URL/X-Callback
[1.0.1] - 2021-11-30 (@dwertheimer)
- Minor tweak to the plugin.json to be more descriptive in Description
[1.0.0] - 2021-11-16 (@dwertheimer)
- Initial plugin functions:
/fave,/unfave,/faves
⭐️ Favorites
Favorites Plugin Changelog
[1.3.0] - 2025-01-10 @dwertheimer
- Feature: Add new
/favorites-browsercommand to open a sidebar window to view and open favorite notes and commands. This provides a persistent browser interface for managing and accessing your favorites.
[1.2.10] - 2025-04-10 @dwertheimer
- Bugfix: Fix issue with frontmatter not being visible immediately after setting a favorite
[1.2.9] - 2025-02-20 @dwertheimer
- Bugfix: Fix Stacey issue with writing title above frontmatter when only one field and no title
- Bugfix: Fix issue with duplicate notes in favorites list
[1.2.7] - 2025-02-19 @dwertheimer
- Bugfix: quoteText() now handles null, boolean, number and undefined values correctly
[1.2.6] - 2025-02-19 @dwertheimer
- Add "Favorite Key" setting to allow for customizing the frontmatter key used to identify favorites.
[1.2.5] - 2025-02-15 @dwertheimer
- Favorites now works with frontmatter
[1.2.4] - 2024-06-12 @dwertheimer
- bump version for rerelease (plugin was missing from github)
[1.2.3] - 2023-09-29 @dwertheimer
- change the default to not add a space in front of the default tag
[1.2.2] - 2023-08 @dwertheimer
- Bugfix: allow for escaping and leaving command intact.
[1.2.1] - 2023-08 @dwertheimer
- Add "rename" capability
[1.2.0] - 2023-08-27 @dwertheimer
- Add prepended characters for favorite saved commands & xcallback creator inline. Thx for the idea @clayrussell
[1.1.3] - 2023-08 @dwertheimer
- Add remember-presets-after-update code
[1.1.0] - 2023-08-25 @dwertheimer
- Add capability to set a preset to run a favorite URL/X-Callback
[1.0.1] - 2021-11-30 (@dwertheimer)
- Minor tweak to the plugin.json to be more descriptive in Description
[1.0.0] - 2021-11-16 (@dwertheimer)
- Initial plugin functions:
/fave,/unfave,/faves
🤝 Shared Resources
Changes to 🤝 Shared Resources plugin
See Shared Plugin's README for details on this plugin.
[1.0.4] @jgclark 2026-01-09
Changed
- Changed minAppVersion back down to 3.8.1, as the checks for v3.20.0 (mainWindow in macOS) or v3.20.1 (mainWindow on iOS) are handled in showHTMLV2() calls
[1.0.3] @dwertheimer 2026-01-09
Changed
- Refactored CSS architecture: Created new
Root.csswith shared color classes (.color-info,.color-warn,.color-error,.color-success, etc.) for reuse across MessageBanner, Toast, and other components. This centralizes color management and ensures consistency. - Updated MessageBanner and Toast components to use CSS variables from theme instead of hardcoded colors, improving theme compatibility.
- Improved
showBanner()function in Root.jsx to automatically determine color, border, and icon classes from message type if not explicitly provided, reducing boilerplate code. - Fixed
getHeadings()request handler to useincludeMarkdown: trueand ensure it always returns an array (never undefined/null), preventing errors in HeadingChooser. - Updated
noteHelpers.jsto usegetNoteDecorationForReact()helper for consistent note decoration handling. - Fixed relative notes title handling to use
relNamedirectly instead of template runner value.
Fixed
- Fixed CSS variable for toolbar height: changed
var(--noteplan-toolbar-height, 0)tovar(--noteplan-toolbar-height, 0px)for proper CSS unit handling in mainWindow mode.
Dev
- Removed encoding debug logging that was added for emoji corruption investigation (no longer needed).
- Updated minAppVersion to 3.20.1 to match NotePlan requirements.
[1.0.2] @dwertheimer 2026-01-08
- Fix Settings Dialog CSS positioning to properly center in viewport accounting for toolbar height. Removed transform-based centering and switched to direct top/left calculations for more reliable positioning.
[1.0.1] @dwertheimer 2026-01-08
- Bump version for @jgclark to see
[1.0.0] @dwertheimer 2026-01-06
- Add Shared Request Router for DynamicDialog choosers (e.g. getTeamspaces, getFolders, getNotes, etc.)
[0.9.0] @dwertheimer 2026-01-02
- Fix Toast notification CSS selectors: Change descendant selectors to class combinators so color and border styles apply correctly
- Fix toast positioning: Use calc(1rem + var(--noteplan-toolbar-height, 0px)) to properly account for toolbar height when variable exists
- Add debug mode to Form Builder window initialization
- Add Test Toast button in Root.jsx debug section that cycles through all toast types sequentially
- Update MessageBanner component with improved styling and functionality
- Update sendBannerMessage() function throughout codebase for consistency
- Update JSDoc comments in Root.jsx
- Update minAppVersion to 3.20.0 due to showInMainWindow requirements
[0.8.4] @dwertheimer 2025-12-31
- Add showReloadButton option to NPReactLocal.showInMainWindow
[0.8.3] @dwertheimer 2025-12-27
- Refactor HTML generation code to eliminate duplication between
openReactWindowandshowInMainWindow - Extract shared HTML generation logic into
prepareReactWindowDatafunction - Create
assembleHTMLStringfunction forshowInMainWindowto build complete HTML string - Update
addStringOrArrayItemsto properly handleScriptObjtypes in addition to strings and arrays - Both window functions now use shared code, reducing maintenance burden and ensuring consistency
[0.8.2] @dwertheimer 2025-12-27
- Root bundle now includes React and ReactDOM internally (self-contained)
- Eliminated separate react.core.dev.js bundle - React/ReactDOM are bundled into Root
- Root exports React, ReactDOM, and createRoot as globals for other bundles to use
- Fixed script loading order: Root loads before plugin bundles so React/ReactDOM are available
- Plugin bundles (like Forms) now reference React/ReactDOM as external globals from Root
[0.8.1] @dwertheimer 2025-12-24
- Add Toast notification component and option for MessageBanner to be displayed as a floating toast for transient messages in top-right corner
- Toast overlays content (doesn't push it down like MessageBanner)
- Supports INFO, WARN, ERROR, and SUCCESS types with auto-dismiss timeout
- Can be called from plugin side via
sendToastMessage()or React side viadispatch('SHOW_TOAST') - Includes slide-in animation from right and fade effects
[0.8.0] @dwertheimer 2025-12-18
- Add request/response pattern for awaiting from React->Plugin->React
- Bring a better design to MessageBanner component
- Update MessageBanner to take a 'type' (WARN, ERROR, INFO or REMOVE), and an optional timeout
- Add separate MessageBanner.css, that removes this particular dependency on css.w3.css
- Add NP_THEME to showHTMLV2
- Fix bug in window positioning math in showHTMLV2
[0.7.5] @dwertheimer 2025-01-24
- Remove DynamicDialog from Root (it was duplicating code and CSS)
- FormView and other components now can import DynamicDialog when they need it
[0.7.4] @dwertheimer 2024-12-21
- Remove minified versions of Root and FormView components
[0.7.3] @dwertheimer 2024-12-10
- Improve DashboardDialog CSS
[0.7.2] @dwertheimer 2024-10-28
- fix bug in Root where the pluginToHTMLCommsBridge.js was not being loaded and so sendMessageToPlugin was not working
[0.7.1] @dwertheimer 2024-10-24
- fix bug in Root where banners were not being shown anymore
[0.7.0] @dwertheimer 2024-09-14
- Add DynamicDialog to Root to bring up a dialog
[0.6.3] - @dwertheimer
- Reduce logging
[0.6.2] - @dwertheimer
- Add guard for NP window closed (kills React rendering at Root)
[0.6.1] - @dwertheimer
- more logging to setTheme
[0.6.0] - @dwertheimer
- add theme change route UPDATE_THEME
[0.5.11] - @dwertheimer
- Fix banners
[0.5.10] - @dwertheimer
[0.5.9] - @dwertheimer
- reduce logging
[0.5.7] - @dwertheimer
[0.5.6] - @dwertheimer
[0.5.5] - @dwertheimer
[0.5.4] - @dwertheimer
- Further Work on Root React and react settings saved at root level
[0.5.3] - 2024-04-19 @dwertheimer
- Decrease error logging
[0.5.2] - 2024-04-12 @dwertheimer
- Improve error logging in React root component
[0.4.8] - 2024-04-01 @jgclark
- add 'shortcut.js' script
[0.4.7] - 2023-10-16 @dwertheimer
- minor updates to Root's WebView debug wrapper
[0.4.6] - 2023-10-16 @dwertheimer
- update to remove CSS from React Windows if wanted
[0.4.5] - 2023-10-16 @dwertheimer
- updates to React tooling using ShowHTMLV2 etc.
[0.4.4] - 2023-07-15 (@jgclark)
- bugfix for 'undefined' message on plugin upgrade
[0.4.3] - 2023-07-14 (@jgclark)
- update encode function for safe data transport to/from JS of
&and&strings
[0.4.2] - 2023-06-07 (@jgclark)
- add encode and decode functions for safe data transport to/from JS
[0.4.1] - 2023-06-02 (@dwertheimer)
- add tweaks for react
[0.4.0] - 2023-05-29 (@dwertheimer)
- add w3.css to the shared files and update some of the React
[0.3.1] - 2023-02-23 (@dwertheimer)
- release bugfix
[0.3.0] - 2023-02-22 (@jgclark)
Added
- function
checkForWantedResources(fileList?)for plugins to use. See its jsdoc for more details.
[0.2.0] - 2023-02-18 (@dwertheimer)
Added
- File pluginToHTMLCommsBridge.js
[0.1.0] - 2023-02-04 (@jgclark)
Added
First release:
- provides the FontAwesome assets
- /logShared command: lists all shared assets in the Plugin Console.
🤝 Shared Resources
Changes to 🤝 Shared Resources plugin
See Shared Plugin's README for details on this plugin.
[1.0.3] @dwertheimer 2026-01-09
Changed
- Refactored CSS architecture: Created new
Root.csswith shared color classes (.color-info,.color-warn,.color-error,.color-success, etc.) for reuse across MessageBanner, Toast, and other components. This centralizes color management and ensures consistency. - Updated MessageBanner and Toast components to use CSS variables from theme instead of hardcoded colors, improving theme compatibility.
- Improved
showBanner()function in Root.jsx to automatically determine color, border, and icon classes from message type if not explicitly provided, reducing boilerplate code. - Fixed
getHeadings()request handler to useincludeMarkdown: trueand ensure it always returns an array (never undefined/null), preventing errors in HeadingChooser. - Updated
noteHelpers.jsto usegetNoteDecorationForReact()helper for consistent note decoration handling. - Fixed relative notes title handling to use
relNamedirectly instead of template runner value.
Fixed
- Fixed CSS variable for toolbar height: changed
var(--noteplan-toolbar-height, 0)tovar(--noteplan-toolbar-height, 0px)for proper CSS unit handling in mainWindow mode.
Dev
- Removed encoding debug logging that was added for emoji corruption investigation (no longer needed).
- Updated minAppVersion to 3.20.1 to match NotePlan requirements.
[1.0.2] @dwertheimer 2026-01-08
- Fix Settings Dialog CSS positioning to properly center in viewport accounting for toolbar height. Removed transform-based centering and switched to direct top/left calculations for more reliable positioning.
[1.0.1] @dwertheimer 2026-01-08
- Bump version for @jgclark to see
[1.0.0] @dwertheimer 2026-01-06
- Add Shared Request Router for DynamicDialog choosers (e.g. getTeamspaces, getFolders, getNotes, etc.)
[0.9.0] @dwertheimer 2026-01-02
- Fix Toast notification CSS selectors: Change descendant selectors to class combinators so color and border styles apply correctly
- Fix toast positioning: Use calc(1rem + var(--noteplan-toolbar-height, 0px)) to properly account for toolbar height when variable exists
- Add debug mode to Form Builder window initialization
- Add Test Toast button in Root.jsx debug section that cycles through all toast types sequentially
- Update MessageBanner component with improved styling and functionality
- Update sendBannerMessage() function throughout codebase for consistency
- Update JSDoc comments in Root.jsx
- Update minAppVersion to 3.20.0 due to showInMainWindow requirements
[0.8.4] @dwertheimer 2025-12-31
- Add showReloadButton option to NPReactLocal.showInMainWindow
[0.8.3] @dwertheimer 2025-12-27
- Refactor HTML generation code to eliminate duplication between
openReactWindowandshowInMainWindow - Extract shared HTML generation logic into
prepareReactWindowDatafunction - Create
assembleHTMLStringfunction forshowInMainWindowto build complete HTML string - Update
addStringOrArrayItemsto properly handleScriptObjtypes in addition to strings and arrays - Both window functions now use shared code, reducing maintenance burden and ensuring consistency
[0.8.2] @dwertheimer 2025-12-27
- Root bundle now includes React and ReactDOM internally (self-contained)
- Eliminated separate react.core.dev.js bundle - React/ReactDOM are bundled into Root
- Root exports React, ReactDOM, and createRoot as globals for other bundles to use
- Fixed script loading order: Root loads before plugin bundles so React/ReactDOM are available
- Plugin bundles (like Forms) now reference React/ReactDOM as external globals from Root
[0.8.1] @dwertheimer 2025-12-24
- Add Toast notification component and option for MessageBanner to be displayed as a floating toast for transient messages in top-right corner
- Toast overlays content (doesn't push it down like MessageBanner)
- Supports INFO, WARN, ERROR, and SUCCESS types with auto-dismiss timeout
- Can be called from plugin side via
sendToastMessage()or React side viadispatch('SHOW_TOAST') - Includes slide-in animation from right and fade effects
[0.8.0] @dwertheimer 2025-12-18
- Add request/response pattern for awaiting from React->Plugin->React
- Bring a better design to MessageBanner component
- Update MessageBanner to take a 'type' (WARN, ERROR, INFO or REMOVE), and an optional timeout
- Add separate MessageBanner.css, that removes this particular dependency on css.w3.css
- Add NP_THEME to showHTMLV2
- Fix bug in window positioning math in showHTMLV2
[0.7.5] @dwertheimer 2025-01-24
- Remove DynamicDialog from Root (it was duplicating code and CSS)
- FormView and other components now can import DynamicDialog when they need it
[0.7.4] @dwertheimer 2024-12-21
- Remove minified versions of Root and FormView components
[0.7.3] @dwertheimer 2024-12-10
- Improve DashboardDialog CSS
[0.7.2] @dwertheimer 2024-10-28
- fix bug in Root where the pluginToHTMLCommsBridge.js was not being loaded and so sendMessageToPlugin was not working
[0.7.1] @dwertheimer 2024-10-24
- fix bug in Root where banners were not being shown anymore
[0.7.0] @dwertheimer 2024-09-14
- Add DynamicDialog to Root to bring up a dialog
[0.6.3] - @dwertheimer
- Reduce logging
[0.6.2] - @dwertheimer
- Add guard for NP window closed (kills React rendering at Root)
[0.6.1] - @dwertheimer
- more logging to setTheme
[0.6.0] - @dwertheimer
- add theme change route UPDATE_THEME
[0.5.11] - @dwertheimer
- Fix banners
[0.5.10] - @dwertheimer
[0.5.9] - @dwertheimer
- reduce logging
[0.5.7] - @dwertheimer
[0.5.6] - @dwertheimer
[0.5.5] - @dwertheimer
[0.5.4] - @dwertheimer
- Further Work on Root React and react settings saved at root level
[0.5.3] - 2024-04-19 @dwertheimer
- Decrease error logging
[0.5.2] - 2024-04-12 @dwertheimer
- Improve error logging in React root component
[0.4.8] - 2024-04-01 @jgclark
- add 'shortcut.js' script
[0.4.7] - 2023-10-16 @dwertheimer
- minor updates to Root's WebView debug wrapper
[0.4.6] - 2023-10-16 @dwertheimer
- update to remove CSS from React Windows if wanted
[0.4.5] - 2023-10-16 @dwertheimer
- updates to React tooling using ShowHTMLV2 etc.
[0.4.4] - 2023-07-15 (@jgclark)
- bugfix for 'undefined' message on plugin upgrade
[0.4.3] - 2023-07-14 (@jgclark)
- update encode function for safe data transport to/from JS of
&and&strings
[0.4.2] - 2023-06-07 (@jgclark)
- add encode and decode functions for safe data transport to/from JS
[0.4.1] - 2023-06-02 (@dwertheimer)
- add tweaks for react
[0.4.0] - 2023-05-29 (@dwertheimer)
- add w3.css to the shared files and update some of the React
[0.3.1] - 2023-02-23 (@dwertheimer)
- release bugfix
[0.3.0] - 2023-02-22 (@jgclark)
Added
- function
checkForWantedResources(fileList?)for plugins to use. See its jsdoc for more details.
[0.2.0] - 2023-02-18 (@dwertheimer)
Added
- File pluginToHTMLCommsBridge.js
[0.1.0] - 2023-02-04 (@jgclark)
Added
First release:
- provides the FontAwesome assets
- /logShared command: lists all shared assets in the Plugin Console.
📒 Templating
Templating Changelog
About Templating Plugin
See Plugin Documentation for details on available commands and use case.
DBW: REMEMBER THAT IF YOU ADDED ANY HELPERS IMPORTS, ADD THEM TO THE HELPER MODULE TO GIVE SCRIPTS ACCESS TO THEM ALSO
[2.2.8] 2026-01-XX @dwertheimer
- Add triggerTemplateRunner command to automatically run templates when notes are opened
- New hidden command
triggerTemplateRunnerchecks forrunTemplateOnOpenfrontmatter attribute - When a note with
runTemplateOnOpenis opened, the specified template is automatically executed - Use
triggers: onOpen => np.Templating.triggerTemplateRunnerin note frontmatter to enable this feature - Similar to Forms plugin's
triggerOpenFormfunctionality, but for template execution - Example use case: Automatically update age calculations or other dynamic content when a note is opened
[2.2.7] 2026-01-05 @dwertheimer
- templateRunnerExecute now returns AI analysis errors from all code paths
- Modified templateRunnerExecute to return Promise<string | void> instead of Promise
- Added hasAiAnalysisError helper function to detect AI analysis error marker
- Updated all handler functions (handleCurrentNote, handleRegularNote, handleTodayNote, handleWeeklyNote) to return errors
- Updated handleNewNoteCreation to return rendered content if it contains AI analysis error
- All early return paths in templateRunnerExecute now check for and return AI analysis errors
- This allows Forms plugin to capture and display template rendering errors to users
[2.2.6] 2026-01-04 @dwertheimer
- Fix
allowCreateparameter parsing forpromptMentionandpromptTagprompts: TheallowCreateparameter (4th parameter) was not being parsed correctly from template tags, preventing the "➕ Add new [item]" option from appearing in selection dialogs. This fix:- Improved parameter parsing to handle both quoted strings (
'true') and unquoted boolean literals (true) - Fixed regex pattern to handle both full template tag syntax (
<%- promptMention(...) %>) and cleaned tag format (without<% %>) - Added fallback parsing logic for multiple parameters when the primary regex doesn't match
- Works with all template tag syntax variations:
<% %>,<%- %>,<%- -%>,<%= %> - Users can now properly use
allowCreateto enable creating new mentions/hashtags when they don't exist in the list
- Improved parameter parsing to handle both quoted strings (
[2.2.5] 2025-12-19 @dwertheimer
- Fix messaging in templateNew when templates not found
- Enhanced
template: ignorecode block handling: Code blocks starting with ```template: ignore on the first line are now completely removed from templates (not just protected). Comment-style ignores (// template: ignoreor `/* template: ignore */`) continue to be protected during processing and restored in the output. This allows template authors to include metadata or instructions that should not appear in the final rendered output. - TemplateRunner rendering improvements: TemplateRunner now consistently renders template tags in all fields before using them:
templateBodyis now rendered inhandleNewNoteCreation(for create-new path) to ensure template tags are replaced with form values before being written to notesnewNoteTitleis now rendered if it contains template tags before being used to create a new notegetNoteTitled(noteTitle) is now rendered if it contains template tags, while preserving special values like<today>,<current>,<choose>,<select>,<thisweek>,<nextweek>writeUnderHeadingis now rendered if it contains template tags, while preserving special values like<choose>,<select>(handled byhandleHeadingSelectionafter rendering)folderis now rendered if it contains template tags, while preserving special values like<select>,<choose>,<current>(handled bytemplateNew/getFolderafter rendering)- This ensures consistent behavior across all TemplateRunner paths and prevents unrendered template tags from being written to notes
[2.2.4] 2025-12-03 @dwertheimer
- fix templateLocale setting to allow for locale-specific date/time formatting
[2.2.3] 2025-11-11 @dwertheimer
- add new weather formatting fields (location.*, :formatted: etc.)
[2.2.2] 2025-11-09 @dwertheimer
- Fix default weather formatting so calling
<%- weather() %>uses the new NotePlan format string
[2.2.1] 2025-11-09 @dwertheimer
- Work around NotePlan weather API bug by sending null coordinates instead of
0,0so auto-location lookup succeeds - Mapped legacy weather placeholders (e.g.
:FeelsLikeF:,:winddir16Point:,:region:) to fields from NotePlan's OpenWeatherMap response
[2.2.0] 2025-10-28 @dwertheimer
- switch weather service to use NotePlan's new weather API (
<%- NotePlan.getWeather(units, latitude, longitude) %>) - templateInsert and templateAppend now add a reload of the Editor in case any templating code changed the note underneath and we are reloading the note to get the new content before inserting the rendered template. to solve a but where plugin was writing to note but Editor was overwriting
- includes fix for iPad/iOS folder selection
- allow images in templates -- absolute paths get copied
- add debugging to template rendering to show session data and user options to try to find issues with template rendering
- fix edge case where template frontmatter was not working with trailing space behind "-- " for @thatdwayne
- Use DataStore.defaultNewNoteName instead of "New Note" in tests for brandNewNote creation (allows for translations to work)
[2.1.3] 2025-10-15 @dwertheimer
- Add debugging to chooseFolder() to show the actual index in the folders array that was chosen to try to find the ipad bug for clay russell
- fix clay russell's edge case of inline title not being detected when you have multiple sections that look like frontmatter but some aren't
[2.1.2] 2025-10-07 @dwertheimer (was never released, just included in 2.1.3)
- allow passing of templateRunner body content via xcallback with blank template title
[2.1.1] 2025-09-08 @dwertheimer
- fix using button on empty template, especially with teamspace notes
- use chooseFolder() to include teamspaces in folder selection of templateNew command
- add chooseNoteV2() to helpers module
- fix edge case in date.format() where it was not preserving timezone information in some cases
- fix other issues with DateModule and TimeModule where it was not preserving timezone information in some cases (using Date objects instead of moment objects -- now using moment objects exclusively)
- Add smart quotes replacement in import/include files
- Fix edge case where inline title was not being rendered if it contained EJS tags
b3
- fix chooseFolder() that was forcing new folder creation when it was not needed
[2.1.0] 2025-08-?? @dwertheimer
New Features
- Add helpers module to provide access to commonly used helper functions in templates. See Helpers for details
- Add
tp:helpcommand to open templating help page in browser - Add ability to skip AI error analysis by adding
disableAIErrorAnalysis: trueto the frontmatter of the template
TemplateRunner Improvements Docs
- Update templateRunner to allow for passing an object as args (e.g.
templateRunnerExecute('templateName', true, { getNoteTitled: 'myNoteTitle' })) - Add
headingLevelandaddHeadingLocationto templateRunner to allow for control over where the heading is added and what level it is - Add
replaceHeadingto templateRunner to allow for replacing the heading and all content under it - Add
createMissingHeading(default true) to templateRunner to allow for overriding and disabling the creation of missing headings (text will be lost if you do this)
Bug Fixes/Stability Improvements
- Automatically close code/comment tags with -%> so that people don't get extra newlines in the output if they forget to add the closing tag with the newline slurping (-%>)
- Add
autoSlurpingCodeTagssetting to allow for turning off the automatic closing of code/comment tags with -%> - Fix YAML validation to allow hyphens and spaces in frontmatter key names (e.g.,
note-tag: #CTI,my key: value) - Fix edge case where new template note was getting template tags in the filename (thx @clayrussell)
- Fix bug where folder in a meeting note button press was not prompting if you had content in the note
- Fix bug where CommandBar.prompt was being caught by the prompt handler regex and showing a listOptions with the code
- Add validation to ensure meeting note templates are run on calendar events and stop if not
- Add validation for meeting note templates to prevent execution without proper event data
Other
- Improve debugging output for frontmatter validation to show exactly why content is considered valid or invalid
- Add some JS error logging at end of console messages to make error finding easier
- Change log level of some log messages to info (variable passing)
- remove evaluation of code in standard prompt handler
[2.0.20] 2025-08-07 @dwertheimer
- Fix folder selection in new note command (adds folder path to chooser)
[2.0.19] 2025-08-06 @dwertheimer
- Fix calendar notes not working right after title searching changes
- Fix edge case where a template had -- frontmatter but no tags and was taking the fast path wrongly
[2.0.18] 2025-08-06 @dwertheimer
- add pluginID for iphone settings editing
[2.0.17] 2025-08-06 @dwertheimer
- Fix bug where non-fm-body templates which started with -- were being treated as frontmatter
[2.0.16] 2025-08-06 @dwertheimer
- Add pivot offset to date.now() method
[2.0.15] 2025-08-06 @dwertheimer
- Fix date module edge cases with timezones
[2.0.14] 2025-08-06 @dwertheimer
- Make it possible for a template to ...
📒 Templating
Templating Changelog
About Templating Plugin
See Plugin Documentation for details on available commands and use case.
DBW: REMEMBER THAT IF YOU ADDED ANY HELPERS IMPORTS, ADD THEM TO THE HELPER MODULE TO GIVE SCRIPTS ACCESS TO THEM ALSO
[2.2.6] 2026-01-04 @dwertheimer
- Fix
allowCreateparameter parsing forpromptMentionandpromptTagprompts: TheallowCreateparameter (4th parameter) was not being parsed correctly from template tags, preventing the "➕ Add new [item]" option from appearing in selection dialogs. This fix:- Improved parameter parsing to handle both quoted strings (
'true') and unquoted boolean literals (true) - Fixed regex pattern to handle both full template tag syntax (
<%- promptMention(...) %>) and cleaned tag format (without<% %>) - Added fallback parsing logic for multiple parameters when the primary regex doesn't match
- Works with all template tag syntax variations:
<% %>,<%- %>,<%- -%>,<%= %> - Users can now properly use
allowCreateto enable creating new mentions/hashtags when they don't exist in the list
- Improved parameter parsing to handle both quoted strings (
[2.2.5] 2025-12-19 @dwertheimer
- Fix messaging in templateNew when templates not found
- Enhanced
template: ignorecode block handling: Code blocks starting with ```template: ignore on the first line are now completely removed from templates (not just protected). Comment-style ignores (// template: ignoreor `/* template: ignore */`) continue to be protected during processing and restored in the output. This allows template authors to include metadata or instructions that should not appear in the final rendered output. - TemplateRunner rendering improvements: TemplateRunner now consistently renders template tags in all fields before using them:
templateBodyis now rendered inhandleNewNoteCreation(for create-new path) to ensure template tags are replaced with form values before being written to notesnewNoteTitleis now rendered if it contains template tags before being used to create a new notegetNoteTitled(noteTitle) is now rendered if it contains template tags, while preserving special values like<today>,<current>,<choose>,<select>,<thisweek>,<nextweek>writeUnderHeadingis now rendered if it contains template tags, while preserving special values like<choose>,<select>(handled byhandleHeadingSelectionafter rendering)folderis now rendered if it contains template tags, while preserving special values like<select>,<choose>,<current>(handled bytemplateNew/getFolderafter rendering)- This ensures consistent behavior across all TemplateRunner paths and prevents unrendered template tags from being written to notes
[2.2.4] 2025-12-03 @dwertheimer
- fix templateLocale setting to allow for locale-specific date/time formatting
[2.2.3] 2025-11-11 @dwertheimer
- add new weather formatting fields (location.*, :formatted: etc.)
[2.2.2] 2025-11-09 @dwertheimer
- Fix default weather formatting so calling
<%- weather() %>uses the new NotePlan format string
[2.2.1] 2025-11-09 @dwertheimer
- Work around NotePlan weather API bug by sending null coordinates instead of
0,0so auto-location lookup succeeds - Mapped legacy weather placeholders (e.g.
:FeelsLikeF:,:winddir16Point:,:region:) to fields from NotePlan's OpenWeatherMap response
[2.2.0] 2025-10-28 @dwertheimer
- switch weather service to use NotePlan's new weather API (
<%- NotePlan.getWeather(units, latitude, longitude) %>) - templateInsert and templateAppend now add a reload of the Editor in case any templating code changed the note underneath and we are reloading the note to get the new content before inserting the rendered template. to solve a but where plugin was writing to note but Editor was overwriting
- includes fix for iPad/iOS folder selection
- allow images in templates -- absolute paths get copied
- add debugging to template rendering to show session data and user options to try to find issues with template rendering
- fix edge case where template frontmatter was not working with trailing space behind "-- " for @thatdwayne
- Use DataStore.defaultNewNoteName instead of "New Note" in tests for brandNewNote creation (allows for translations to work)
[2.1.3] 2025-10-15 @dwertheimer
- Add debugging to chooseFolder() to show the actual index in the folders array that was chosen to try to find the ipad bug for clay russell
- fix clay russell's edge case of inline title not being detected when you have multiple sections that look like frontmatter but some aren't
[2.1.2] 2025-10-07 @dwertheimer (was never released, just included in 2.1.3)
- allow passing of templateRunner body content via xcallback with blank template title
[2.1.1] 2025-09-08 @dwertheimer
- fix using button on empty template, especially with teamspace notes
- use chooseFolder() to include teamspaces in folder selection of templateNew command
- add chooseNoteV2() to helpers module
- fix edge case in date.format() where it was not preserving timezone information in some cases
- fix other issues with DateModule and TimeModule where it was not preserving timezone information in some cases (using Date objects instead of moment objects -- now using moment objects exclusively)
- Add smart quotes replacement in import/include files
- Fix edge case where inline title was not being rendered if it contained EJS tags
b3
- fix chooseFolder() that was forcing new folder creation when it was not needed
[2.1.0] 2025-08-?? @dwertheimer
New Features
- Add helpers module to provide access to commonly used helper functions in templates. See Helpers for details
- Add
tp:helpcommand to open templating help page in browser - Add ability to skip AI error analysis by adding
disableAIErrorAnalysis: trueto the frontmatter of the template
TemplateRunner Improvements Docs
- Update templateRunner to allow for passing an object as args (e.g.
templateRunnerExecute('templateName', true, { getNoteTitled: 'myNoteTitle' })) - Add
headingLevelandaddHeadingLocationto templateRunner to allow for control over where the heading is added and what level it is - Add
replaceHeadingto templateRunner to allow for replacing the heading and all content under it - Add
createMissingHeading(default true) to templateRunner to allow for overriding and disabling the creation of missing headings (text will be lost if you do this)
Bug Fixes/Stability Improvements
- Automatically close code/comment tags with -%> so that people don't get extra newlines in the output if they forget to add the closing tag with the newline slurping (-%>)
- Add
autoSlurpingCodeTagssetting to allow for turning off the automatic closing of code/comment tags with -%> - Fix YAML validation to allow hyphens and spaces in frontmatter key names (e.g.,
note-tag: #CTI,my key: value) - Fix edge case where new template note was getting template tags in the filename (thx @clayrussell)
- Fix bug where folder in a meeting note button press was not prompting if you had content in the note
- Fix bug where CommandBar.prompt was being caught by the prompt handler regex and showing a listOptions with the code
- Add validation to ensure meeting note templates are run on calendar events and stop if not
- Add validation for meeting note templates to prevent execution without proper event data
Other
- Improve debugging output for frontmatter validation to show exactly why content is considered valid or invalid
- Add some JS error logging at end of console messages to make error finding easier
- Change log level of some log messages to info (variable passing)
- remove evaluation of code in standard prompt handler
[2.0.20] 2025-08-07 @dwertheimer
- Fix folder selection in new note command (adds folder path to chooser)
[2.0.19] 2025-08-06 @dwertheimer
- Fix calendar notes not working right after title searching changes
- Fix edge case where a template had -- frontmatter but no tags and was taking the fast path wrongly
[2.0.18] 2025-08-06 @dwertheimer
- add pluginID for iphone settings editing
[2.0.17] 2025-08-06 @dwertheimer
- Fix bug where non-fm-body templates which started with -- were being treated as frontmatter
[2.0.16] 2025-08-06 @dwertheimer
- Add pivot offset to date.now() method
[2.0.15] 2025-08-06 @dwertheimer
- Fix date module edge cases with timezones
[2.0.14] 2025-08-06 @dwertheimer
- Make it possible for a template to have any level of heading for the title (was previously H1 only)
[2.0.13] 2025-08-05 @dwertheimer
- Fix bug where inline H1 title was not being used in templateNew (thx @crussell)
- Ensure that inline H1 title is not created in frontmatter even if there is other frontmatter being created
- if there is newNoteTitle and also an inline H1 title, the newNoteTitle will take precedence and will be created in frontmatter
[2.0.12] 2025-08-02 @dwertheimer
- Fix templateNew to handle blank meeting note edge case
[2.0.11] 2025-07-31 @dwertheimer
- Fix getFolder to handle and to honor folder attribute in quick-note templates [2.0.10] 2025-07-30 @dwertheimer Fix quick-note with frontmatter [2.0.9] 2025-07-27 @dwertheimer Fix xcallback bug in append and insert [2.0.8] 2025-07-19 @dwertheimer Insert/AppendTemplate on a blank notewith folder will create a new note in the folder and move the current note to the trash Insert/AppendTemplate on a non-blank note with folder will prompt the user whether to move the current note to the folder Fix edge case where getValuesForKey was not working correctly Fix bug with scriptlet slurping tags <%_ and _%> Add web.services to globals to get automatic await stmt Change timeout message for web servi...