Skip to content

Releases: NotePlan/plugins

Projects + Reviews

Choose a tag to compare

@jgclark jgclark released this 18 Sep 13:34

What's changed in Projects + Reviews plugin?

See website documentation for more details, and how to configure it to suit your workflow.

[2.2.1] - 2026-09-18

  • Fix: Excluding the root folder / (e.g. via a Dashboard Perspective) no longer incorrectly drops every nested project and leaves only root notes. Folder excludes are also applied when folder includes are set, matching Dashboard.
  • Change: 'Rich' Project list generation/recalculation now shows an updating progress dialog.

[2.2.0] - 2026-09-14

  • Fix: Refresh button icon now spins as soon as it is clicked, and stops when list generation finishes (instead of only showing a beachball).
  • New /Create new project command: form asks for title, folder (defaults to the current Editor note's folder), and the same metadata as the existing /Convert to project, then opens the new note in a split view.
  • Change: Completed and cancelled project summary lines both use duration from start (e.g. Completed after 3 months / Cancelled after 3 months). If there is no start date, they use the finish month (e.g. Cancelled in Nov).
  • Change: The top bar of the Project List window has been re-ordered, and now has a cog-wheel button that opens the plugin's settings pane.
  • Change: Avoids unnecessary refreshes when saving settings. dev: Saving plugin settings only rebuilds the project list when "What do you want to Review?" or "Customise the metadata terms" settings change. Next-action and progress-calculation settings re-parse existing list rows (no vault scan). Changes in "Display settings for 'project lists' command" re-render an already-open list. Other settings do neither.
  • Change: "Show project dates?" setting description update to say it only applies to Markdown output.
  • Dev: INFO-level duration logs for each allProjects list rebuild, incremental update, and access.
  • Dev: Refactor all settings load/normalise, heading-setting parse, and settings-save effects code to new reviewSettings.js.

[2.1.1] - 2026-09-11

  • Fix: "Finish+Next" button in top bar not working (thanks to @cbkadel PR)
  • Fix: clicking title forcing Split View, even when your "Preferred Window Type" setting was "New Window" (thanks to @cbkadel PR)
  • Fix: Project control dialog now sizes more sensibly.
  • Change: The top bar's last updated label uses a more compact display, e.g. "2m ago".
  • Change: make colours in project display a little clearer.

[2.1.0] - 2026-08-28

  • /weeklyProjectsProgress now also upserts a current-week summary into the weekly note when "Heading for Weekly Project Progress output" is set (default: ## Weekly Project Progress). It can output as a table, or lists arranged by folder, subfolder or project tag type.
  • Change: "Progress Heading" and "Progress Heading level" are now a single setting — include markdown heading markers in "Progress Heading" (e.g. ## Progress). On upgrade, existing plain-text heading and level values are migrated automatically into one string.
  • Change: In Project List window, make the scroll-bounce not apply to the top bar.
  • Fix: Project list discovery and /weeklyProjectsProgress now classify notes by project type using only the combined frontmatter key (e.g. project: #area) and any legacy body metadata line, not hashtags mentioned elsewhere in the note body.
  • Fix: Edge case where .txt files could be ignored.

[2.0.9] - 2026-08-23

  • Fix: add progress no longer loses the body Progress: line when also writing the first progress: frontmatter key.
  • Fix: review commands no longer treat an unrelated hashtag on the first body line under the title as legacy project metadata (and delete the rest of that line). Only Hashtags to Review (plus #paused / #sequential / #archive) trigger that migration. [Addresses #775 for @hannahlinas]

[2.0.8] - 2026-08-20

  • Change: re-build and release, to pick up Dashboard being smarter about how it communicates change of perspective with this plugin.

[2.0.7] - 2026-08-17

  • Change: When a saved Perspective definition changes which folders or Spaces are included, the Project list shows "Recalculating projects for updated perspective …" and regenerates.
  • Fix: Back-to-back Dashboard regenerate requests (e.g. Save then Switch, or overlapping x-callbacks) coalesce to one in-flight generate plus at most one follow-up with the latest settings.
  • Change: Project list shows an INFO banner below the top bar while recalculating projects after a Dashboard perspective change.
  • Change: Rich project list control dialog is positioned from its measured size after it opens, instead of a fixed 505x120 estimate.
  • dev: Rich list Updated label uses locale relative phrases (e.g. "1 minute ago") via Intl.RelativeTimeFormat, with the previous compact buckets as fallback.
  • Change: Improved clipping of progress comments and next actions.
  • dev: Rich project list no longer warns when saving window size in Main Window / Split View (those panes have no floating windowRect).
  • Fix: heatmaps for weekly Projects Progress now shows notes and tasks charts in one window (the notes chart previously failed when both were shown).
  • Change: folder group headings in the Rich list no longer fight theme .h3 CSS.
  • Change: Rich list button hover uses color-mix instead of a commented hsl() relative-color attempt.
  • Change: project control dialog heading shows the note's frontmatter icon (same as the Rich list row), and handles Teamspace names properly.

[2.0.6] - 2026-08-17

  • Fix: finish review / skip review no longer hit NotePlan's "editor is not open" warning when the Rich list (or another pane) has focus - focus the matching Editor first, otherwise write via the DataStore note path.
  • Fix: Rich project list Under Review highlight now sticks after Start / Next / skip-to-next (open the note first, then highlight). Dialog Start, preferred window type, and skip's next note all go through the same start-review path.
  • Change: finish review (manual) now asks which open Regular Note to use when the focused Editor is not a Notes pane and several Regular Notes are open in other panes. [dev: getFirstRegularNoteAmongOpenEditors]
  • Change: finish project review and start next accepts an optional note (same pattern as finish-for-note); if finish does not complete, it no longer jumps to the next review.
  • Change: when project metadata first creates frontmatter on a note, include a title: key set to the current note title (body H1 is kept).
  • dev: Split large reviews.js into reviewsConstants.js, reviewsList.js, reviewsActions.js (barrel reviews.js keeps the same public exports).
  • dev: Remove unused Dashboard leftover HTML switchboard helpers and stale TODO/FIXME comments.
  • Fix: Completing or cancelling a project and archiving it now refreshes the Rich list.

[2.0.5] - 2026-08-07

  • Change: Turn back on saving of updated window size & position when resizing/moving it
  • Change: New Progress comments write date as @YYYY-MM-DD again (compact @YYYYMMDD lines still parse)
  • dev: More changes from flow suppression cleanup

[2.0.4] - 2026-08-03

  • Change: when running finish project review command on a note that doesn't have a combined project-type frontmatter key, explain that, let the user pick a project type tag from Hashtags to Review settings (or Cancel), then write that project: key, before continuing to finish the review as usual. You can also Cancel to leave the note unchanged.
  • dev: Fixes from flow change cleanup

[2.0.3] - 2026-07-17

  • Fix: Project lists no longer include notes from @Archive (also always excludes @Templates and @Trash, as documented for Folders to Exclude).
  • Fix: Pausing/resuming a project when its note is not open in an Editor no longer fails to write frontmatter.
  • Fix: Progress comment form (used when pausing/resuming, and for Add Progress) now allows submitting with no comment.
  • Change: update set of available icons. dev: Use FA 7.0.1 instead of FA 6.0.0.b3.

[2.0.2] - 2026-07-17

  • When the Rich project list has no items, show help text explaining how to include notes, including significant settings, and a gear control that opens the plugin's settings pane. (Thanks for suggestion, @MarkW555).
  • Fix: Filter + Order hashtag toggles now hide projects unless they have at least one currently-ON tag (previously multi-tag notes e.g. #project #area stayed visible when those tags were both off).
  • Fix: Filter + Order hashtag toggles are now saved and restored after Refresh.

[2.0.1] - 2026-05-23

  • New setting: 'Project progress string' that allows user to override the 'progress' string in project note body and frontmatter key
  • Change: convert to project command now also asks user for optional starting comment and %, and will update the project list view to include it (if it's in scope).
  • dev: Fix: project list now reads progress from the configured frontmatter key as well as from body progress lines.

[2.0.0] - 2026-05-20

Summary of New features

  • Modernised Rich project list — denser layout with more metadata visible; status lozenges for review/due; optional multi-column layout; Order by control in the top bar (including sort by first project tag in your configured display order).
  • Much faster generation — uses caching between runs.
  • Convert to project — form-driven command to turn a regular note into a project (NotePlan v3.21+).
  • Complete / cancel project workflow — form for archive, quarterly/yearly log entry, and final progre...
Read more

Dashboard

Choose a tag to compare

@jgclark jgclark released this 16 Sep 19:55

What's changed in 🎛 Dashboard plugin?

For more details see the plugin's documentation.

[2.4.6] 2026-09-16

  • Fix: "Move all to today" on the Overdue section not working with setting ''. (Thanks @TiffSunbacon101 for helping track this one down.)
  • Change: Now automatically downloads the required 'Shared Resources' plugin version if it can, before warning user.

[2.4.5] 2026-09-16

  • Dashboard is now responsive while the tag/mention cache is being rebuilt. Dev: Through the cache (in np.Shared) now using runOnAsyncThread method.
  • Dev: Declared plugin.dependsOn for Shared Resources plugin (>= 1.2.0). It will now verify this and stop with a message if missing.

[2.4.4] 2026-09-15

  • Dev: Tag/mention cache now lives in Shared Resources plugin, with per-plugin registration. Saving a Perspective updates only Dashboard's slot (union of all perspectives' tagsToShow) and no longer wipes items other plugins have registered.
  • Fix: Improved performance of Refresh if there are 2 or more Tag/Mention sections enabled. dev: No longer regenerates every Tag/Mention section once per visible tag (N^2 operation). Duplicate TAG codes are collapsed because one TAG already means all wanted tags.
  • Dev: Removed feature flags FFlag_UseTagCache and FFlag_UseTagCacheAPIComparison. Tag/mention cache is always used when available; API fallback remains only when the cache does not yet cover that tag.
  • Fix: Adding a new tag/mention no longer rebuilds the tag cache twice (register now schedules; Dashboard runs generate once after refresh).

[2.4.3] 2026-08-28

  • New: Reminder edit dialog Actions row has "Convert to Task" (second control) to convert a reminder into an open task prepended to today's daily note, then delete the Apple Reminder. Carries notes (in parentheses), location as @mention, >date, at HH:MM, and priority markers when set.
  • Dev: Task and Reminder dialogs can now use a logical ITEM_ORIG_SECTION in sectionCodesToRefresh (resolved from the open item's section at click time) instead of always prepending the source section. This reduce unnecessary refresh work.
  • Fix: Remove a few places where .md is hard-coded, and use user's file extension instead.

[2.4.2] 2026-08-24

  • Change: Reminder edit dialog now supports editing the reminder text, notes, and due time inline (Update / Enter), plus day-scale reschedule shortcuts, calendar picker, and Unsched. Setting a time on an undated reminder schedules it for today. Dialog width is fixed per viewport (wider than before). Bell icon in the dialog title uses the reminder list colour.
  • Change: Switching Perspective no longer shows the "Switching perspectives" spinner, and uses an incremental paint, rather than waiting until all sections are ready to display. dev: It sets firstRun so the header Refresh control shows "Generating" (same as initial load). It wow uses an incremental merge (incrementallyRefreshSomeSections) not batchReplaceSections. But alter PERSPECTIVE_SWITCH_USES_REPLACE_METHOD to change this back.
  • Change: Add support for more sorts of non-standard fonts from user-specific themes
  • Fix: Renaming a Perspective now persists the updated perspectiveSettings array to settings.json (same immutable save path as Save/Switch Perspective).
  • Fix: Saving Dashboard Settings no longer coerces off (false) switches to empty string, which had forced a full section refresh when changing unrelated options (e.g. Interactive Processing transitions).
  • Dev: Cleared remaining Flow errors under jgclark.Dashboard/src (reminder update params, perspective scope compare, IP item types, settings value helper, bridge locals).

[2.4.1] 2026-08-21

  • New: Edit icon on reminder rows opens a new dialog that supports complete, delete, and open in Reminders.
  • New: Interactive Processing now supports Apple Reminders (mixed into calendar/Overdue sections), and a new IP button on the Reminders section. (#779 raised by @dwertheimer)
  • Fix: Interactive Processing / task dialog no longer shows an error banner when Update or Enter is used without changing content. Other actions (complete, reschedule, etc.) now keep their intended action and apply an edited content change first when needed. (closes #778 raised by @dwertheimer)
  • Fix: Inline calendar events now render properly in tasks

[2.4.0] 2026-08-20

Just the Headlines:

New sections

  • Active Projects - open projects from Projects & Reviews, with next actions; existing Projects section renamed to Projects to Review
  • Wins - optional section for top-priority tasks (default >>) drawn from enabled Calendar sections
  • Apple Reminders - open reminders across relevant sections; complete / delete / add; click to open in Reminders; priorities supported; de-dupes reminders that are imported as tasks.

Projects & Reviews integration

  • Progress comments and next actions on project rows
  • Complete / cancel next actions in project sections (Active Projects round-trips for an updated next action)
  • Start review button and latest progress in the Project dialog
  • Stronger two-way sync with the Projects & Reviews plugin

Calendar / time

  • Timed Items - timeblocks and timed reminders in one section (title adapts)
  • Headings can appear in the current time-block / timed-items area
  • Neater time and scheduled-date chips (clock / calendar lozenges)

Task & note workflow

  • Add Task to note from Today / Week section headings
  • Search works with Search Extensions v2 or v3
  • Per-note display priority via frontmatter note-priority-delta

Spaces & windowing

  • (Team)Spaces awareness - include Private and/or Spaces per Perspective; clearer Space display in note links
  • Open Dashboard in the main window or a split view (as well as a separate window)
  • Better iOS / iPad support (main window where available, sidebar plugin preference)

Display polish

  • Note links as tinted lozenges (folder de-emphasised; frontmatter icon / color)
  • Mid-task note links use shorter labels and frontmatter icons
  • Tag/mention cache used by default (faster TAG sections)
  • Some significant performance improvements, particularly if you use the Projects & Reviews plugin as well. And lots of bug fixes.
Read more

Dashboard

Choose a tag to compare

@jgclark jgclark released this 16 Sep 11:04

What's changed in 🎛 Dashboard plugin?

For more details see the plugin's documentation.

[2.4.5] 2026-09-16

  • Dashboard is now responsive while the tag/mention cache is being rebuilt. Dev: Through the cache (in np.Shared) now using runOnAsyncThread method.
  • Dev: Declared plugin.dependsOn for np.Shared (>= 1.2.0). Show Dashboard uses shared helper installDependsOnPlugins to install/verify and stop with a message if still missing.

[2.4.4] 2026-09-15

  • Dev: Tag/mention cache now lives in np.Shared, with per-plugin registration. Saving a Perspective updates only Dashboard's slot (union of all perspectives' tagsToShow) and no longer wipes items other plugins have registered.
  • Fix: Improved performance of Refresh if there are 2 or more Tag/Mention sections enabled. dev: No longer regenerates every Tag/Mention section once per visible tag (N^2 operation). Duplicate TAG codes are collapsed because one TAG already means all wanted tags.
  • Dev: Removed feature flags FFlag_UseTagCache and FFlag_UseTagCacheAPIComparison. Tag/mention cache is always used when available; API fallback remains only when the cache does not yet cover that tag.
  • Fix: Adding a new tag/mention no longer rebuilds the tag cache twice (register now schedules; Dashboard runs generate once after refresh).

[2.4.3] 2026-08-28

  • New: Reminder edit dialog Actions row has "Convert to Task" (second control) to convert a reminder into an open task prepended to today's daily note, then delete the Apple Reminder. Carries notes (in parentheses), location as @mention, >date, at HH:MM, and priority markers when set.
  • Dev: Task and Reminder dialogs can now use a logical ITEM_ORIG_SECTION in sectionCodesToRefresh (resolved from the open item's section at click time) instead of always prepending the source section. This reduce unnecessary refresh work.
  • Fix: Remove a few places where .md is hard-coded, and use user's file extension instead.

[2.4.2] 2026-08-24

  • Change: Reminder edit dialog now supports editing the reminder text, notes, and due time inline (Update / Enter), plus day-scale reschedule shortcuts, calendar picker, and Unsched. Setting a time on an undated reminder schedules it for today. Dialog width is fixed per viewport (wider than before). Bell icon in the dialog title uses the reminder list colour.
  • Change: Switching Perspective no longer shows the "Switching perspectives" spinner, and uses an incremental paint, rather than waiting until all sections are ready to display. dev: It sets firstRun so the header Refresh control shows "Generating" (same as initial load). It wow uses an incremental merge (incrementallyRefreshSomeSections) not batchReplaceSections. But alter PERSPECTIVE_SWITCH_USES_REPLACE_METHOD to change this back.
  • Change: Add support for more sorts of non-standard fonts from user-specific themes
  • Fix: Renaming a Perspective now persists the updated perspectiveSettings array to settings.json (same immutable save path as Save/Switch Perspective).
  • Fix: Saving Dashboard Settings no longer coerces off (false) switches to empty string, which had forced a full section refresh when changing unrelated options (e.g. Interactive Processing transitions).
  • Dev: Cleared remaining Flow errors under jgclark.Dashboard/src (reminder update params, perspective scope compare, IP item types, settings value helper, bridge locals).

[2.4.1] 2026-08-21

  • New: Edit icon on reminder rows opens a new dialog that supports complete, delete, and open in Reminders.
  • New: Interactive Processing now supports Apple Reminders (mixed into calendar/Overdue sections), and a new IP button on the Reminders section. (#779 raised by @dwertheimer)
  • Fix: Interactive Processing / task dialog no longer shows an error banner when Update or Enter is used without changing content. Other actions (complete, reschedule, etc.) now keep their intended action and apply an edited content change first when needed. (closes #778 raised by @dwertheimer)
  • Fix: Inline calendar events now render properly in tasks

[2.4.0] 2026-08-20

Just the Headlines:

New sections

  • Active Projects - open projects from Projects & Reviews, with next actions; existing Projects section renamed to Projects to Review
  • Wins - optional section for top-priority tasks (default >>) drawn from enabled Calendar sections
  • Apple Reminders - open reminders across relevant sections; complete / delete / add; click to open in Reminders; priorities supported; de-dupes reminders that are imported as tasks.

Projects & Reviews integration

  • Progress comments and next actions on project rows
  • Complete / cancel next actions in project sections (Active Projects round-trips for an updated next action)
  • Start review button and latest progress in the Project dialog
  • Stronger two-way sync with the Projects & Reviews plugin

Calendar / time

  • Timed Items - timeblocks and timed reminders in one section (title adapts)
  • Headings can appear in the current time-block / timed-items area
  • Neater time and scheduled-date chips (clock / calendar lozenges)

Task & note workflow

  • Add Task to note from Today / Week section headings
  • Search works with Search Extensions v2 or v3
  • Per-note display priority via frontmatter note-priority-delta

Spaces & windowing

  • (Team)Spaces awareness - include Private and/or Spaces per Perspective; clearer Space display in note links
  • Open Dashboard in the main window or a split view (as well as a separate window)
  • Better iOS / iPad support (main window where available, sidebar plugin preference)

Display polish

  • Note links as tinted lozenges (folder de-emphasised; frontmatter icon / color)
  • Mid-task note links use shorter labels and frontmatter icons
  • Tag/mention cache used by default (faster TAG sections)
  • Some significant performance improvements, particularly if you use the Projects & Reviews plugin as well. And lots of bug fixes.
Read more

Shared Resources

Choose a tag to compare

@jgclark jgclark released this 16 Sep 10:59

Changes to 🤝 Shared Resources plugin

See Shared Plugin's README for details on this plugin.

[1.2.0] 2026-09-16

  • Fix: onUpdateOrInstall was passing the plugin ID string to updateSettingData instead of pluginJson, which skipped settings migration with a WARN.
  • New: Shared tag/mention cache (tagMentionCache.js) moved from Dashboard plugin, now with per-plugin registration. Client plugins call registerTagMentionCacheItems(pluginId, items) / unregisterTagMentionCacheItems(pluginId).
    • The cache indexes the union of wanted tags/mentions; an item is dropped only when no plugin still wants it. Also indexes wanted tags/mentions in any frontmatter field, and exposes getRegularNoteFilenamesFromTagMentionCache for a cheap read.
    • It now uses new runSyncWorkOnAsyncThread method (for users on 3.21.3+) to keep app responsive during somewhat lengthy cache (re)generation.
    • Added INFO-level duration logs for each tag/mention cache rebuild, incremental update, and access.
    • Registering new union items now schedules a cache rebuild instead of starting one immediately (avoids a double full-note scan when Dashboard then runs the scheduled generate). generateTagMentionCache also skips a second scan if the cache was just rebuilt with the same wanted items.

[1.1.0] 2026-08-31

  • React windows now get app-level NotePlan preferences that React cannot read for itself, baked into pluginData.notePlanSettings when the window opens. dev: Inside a WebView DataStore is an async bridge proxy, so a scalar preference like DataStore.defaultFileExtension can't be read synchronously -- reading it plugin-side and passing it through gives every plugin's React window the value with no per-plugin plumbing. Starts with defaultFileExtension. Merged under anything the calling plugin already put in pluginData.notePlanSettings, so plugins that set their own (e.g. Dashboard) are unaffected.

[1.0.11] 2026-07-17

  • Upgraded Font Awesome Pro assets from 6.0.0-alpha3 to 7.0.1: fontawesome.css, *.min.flat4NP.css style loaders, and fa-*.woff2 webfonts (Regular, Solid, Light, Duotone).
  • getAvailableReminderLists now uses getAllAccessibleReminderLists() from @helpers/NPReminders (same titles, plus NotePlan 3.20+ colour/enabled-list support in the helper).

[1.0.10] 2026-05-11

Removed

  • Hidden developer commands shared:benchmarkNoteDecorationCache and shared:benchmarkFullNoteDecoration.

Changed

  • getNotes request handler: Dropped verbose timing/logDebug profiling (errors still log via logError).
  • routerUtils (newCommsRouter): Removed per-request [PERF]/logTimer timing and payload dump noise (clo) so REQUEST routing logs stay minimal.
  • Chooser debugging: Removed [DIAG] timing logs and reset default debugLogging to false in SpaceChooser and FolderChooser (SearchableChooser).

[1.0.9] 2026-04-17

Fixed

  • getNotes: Space-specific note requests now filter raw notes by space before converting and decorating them for React. This avoids scanning/decorating every note in the database when a chooser asks for one small teamspace, and avoids a duplicate full project-note pass when calendar notes are included.
  • getNotes: Callers can opt out of backend note decoration with includeDecoration: false, which is useful for React NoteChooser flows that derive display decoration client-side.
  • getNotes: space: '__all__' now returns notes from Private and all teamspaces (still respects includeTeamspaceNotes). Previously the sentinel was not implemented; callers that omitted space after selecting “all spaces” only received Private notes.
  • NoteChooser: Relative calendar-token lookup now uses a short-lived cache, avoiding repeated getRelativeDates() work while decorating calendar-note lists.

[1.0.8] 2026-04-17

Fixed

  • routerUtils / np.Shared fallback: DataStore.invokePluginCommandByName('handleSharedRequest', …) may return an extra wrapper { success: true, data: <inner RequestResponse> }. callSharedHandler in @helpers/react/routerUtils now peels that layer so the WebView RESPONSE data field is the real handler payload (e.g. teamspace array), not a nested { success, data }. Fixes SpaceChooser and any other chooser using the shared-handler fallback showing "Invalid response format" for an object that looked like a success envelope.
  • getHeadings: Resolves NoteChooser relative filenames (<today>, <thisweek>, etc.) via resolveNoteChooserFilenameForLookup in @helpers/noteChooserFilenameResolve before getNoteByFilename, so heading lists load for calendar relative picks (was logging couldn't find a note for '<today>').

[1.0.7] @dwertheimer 2026-04-13

Changed

  • REQUEST/RESPONSE: Root.jsx now resolves requestFromPlugin promises with pluginEnvelopeFromResponsePayload() from @helpers/react/pluginRequestEnvelope (success, data, message) instead of raw handler data only. Timeouts and unmount still reject. Consumers must be updated to use unwrapPluginRequestData or inspect the envelope (coordinate release with dependent plugins).

[1.0.6] @dwertheimer 2026-01-25

Fixed

  • Infinite Loop Prevention: Added guard in Root.jsx to skip empty SET_DATA/UPDATE_DATA updates that only contain metadata (lastUpdated, NPWindowID). This prevents infinite render loops when empty responses trigger re-renders.
  • DynamicDialog Request Handler: Fixed getFrontmatterKeyValues request handler (used by DynamicDialog choosers) to filter out templating syntax values (containing '<%') at the source. This prevents templating errors when forms load and process frontmatter that contains template code instead of actual values.

[1.0.5] @dwertheimer 2026-01-12 (not released yet)

Added

  • Log Buffer Buster: Added console method override feature to flush log buffers when debugging infinite loops or missing logs. When logBufferBuster is enabled in pluginData, all console.log, console.error, console.info, and console.warn calls will have 10000 dots appended to help flush NotePlan's log buffer. See ReactSkeleton documentation for usage instructions.

Changed

  • Added logging to Root.jsx to reduce confusing logging about request/response patterns

[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.css with 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 use includeMarkdown: true and ensure it always returns an array (never undefined/null), preventing errors in HeadingChooser.
  • Updated noteHelpers.js to use getNoteDecorationForReact() helper for consistent note decoration handling.
  • Fixed relative notes title handling to use relName directly instead of template runner value.

Fixed

  • Fixed CSS variable for toolbar height: changed var(--noteplan-toolbar-height, 0) to var(--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

[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 openReactWindow and showInMainWindow
  • Extract shared HTML generation logic into prepareReactWindowData function
  • Create assembleHTMLString function for showInMainWindow to build complete HTML string
  • Update addStringOrArrayItems to properly handle ScriptObj types 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, ...
Read more

🔬 Projects + Reviews

Choose a tag to compare

@jgclark jgclark released this 14 Sep 21:00

What's changed in 🔬 Projects + Reviews plugin?

See website documentation for more details, and how to configure it to suit your workflow.

[2.2.0] - 2026-09-???

  • Fix: Refresh button icon now spins as soon as it is clicked, and stops when list generation finishes (instead of only showing a beachball).
  • New /Create new project command: form asks for title, folder (defaults to the current Editor note's folder), and the same metadata as the existing /Convert to project, then opens the new note in a split view.
  • Change: Completed and cancelled project summary lines both use duration from start (e.g. Completed after 3 months / Cancelled after 3 months). If there is no start date, they use the finish month (e.g. Cancelled in Nov).
  • Change: The top bar of the Project List window has been re-ordered, and now has a cog-wheel button that opens the plugin's settings pane.
  • Change: Avoids unnecessary refreshes when saving settings. dev: Saving plugin settings only rebuilds the project list when "What do you want to Review?" or "Customise the metadata terms" settings change. Next-action and progress-calculation settings re-parse existing list rows (no vault scan). Changes in "Display settings for 'project lists' command" re-render an already-open list. Other settings do neither.
  • Change: "Show project dates?" setting description update to say it only applies to Markdown output.
  • Dev: INFO-level duration logs for each allProjects list rebuild, incremental update, and access.
  • Dev: Refactor all settings load/normalise, heading-setting parse, and settings-save effects code to new reviewSettings.js.

[2.1.1] - 2026-09-11

  • Fix: "Finish+Next" button in top bar not working (thanks to @cbkadel PR)
  • Fix: clicking title forcing Split View, even when your "Preferred Window Type" setting was "New Window" (thanks to @cbkadel PR)
  • Fix: Project control dialog now sizes more sensibly.
  • Change: The top bar's last updated label uses a more compact display, e.g. "2m ago".
  • Change: make colours in project display a little clearer.

[2.1.0] - 2026-08-28

  • /weeklyProjectsProgress now also upserts a current-week summary into the weekly note when "Heading for Weekly Project Progress output" is set (default: ## Weekly Project Progress). It can output as a table, or lists arranged by folder, subfolder or project tag type.
  • Change: "Progress Heading" and "Progress Heading level" are now a single setting — include markdown heading markers in "Progress Heading" (e.g. ## Progress). On upgrade, existing plain-text heading and level values are migrated automatically into one string.
  • Change: In Project List window, make the scroll-bounce not apply to the top bar.
  • Fix: Project list discovery and /weeklyProjectsProgress now classify notes by project type using only the combined frontmatter key (e.g. project: #area) and any legacy body metadata line, not hashtags mentioned elsewhere in the note body.
  • Fix: Edge case where .txt files could be ignored.

[2.0.9] - 2026-08-23

  • Fix: add progress no longer loses the body Progress: line when also writing the first progress: frontmatter key.
  • Fix: review commands no longer treat an unrelated hashtag on the first body line under the title as legacy project metadata (and delete the rest of that line). Only Hashtags to Review (plus #paused / #sequential / #archive) trigger that migration. [Addresses #775 for @hannahlinas]

[2.0.8] - 2026-08-20

  • Change: re-build and release, to pick up Dashboard being smarter about how it communicates change of perspective with this plugin.

[2.0.7] - 2026-08-17

  • Change: When a saved Perspective definition changes which folders or Spaces are included, the Project list shows "Recalculating projects for updated perspective …" and regenerates.
  • Fix: Back-to-back Dashboard regenerate requests (e.g. Save then Switch, or overlapping x-callbacks) coalesce to one in-flight generate plus at most one follow-up with the latest settings.
  • Change: Project list shows an INFO banner below the top bar while recalculating projects after a Dashboard perspective change.
  • Change: Rich project list control dialog is positioned from its measured size after it opens, instead of a fixed 505x120 estimate.
  • dev: Rich list Updated label uses locale relative phrases (e.g. "1 minute ago") via Intl.RelativeTimeFormat, with the previous compact buckets as fallback.
  • Change: Improved clipping of progress comments and next actions.
  • dev: Rich project list no longer warns when saving window size in Main Window / Split View (those panes have no floating windowRect).
  • Fix: heatmaps for weekly Projects Progress now shows notes and tasks charts in one window (the notes chart previously failed when both were shown).
  • Change: folder group headings in the Rich list no longer fight theme .h3 CSS.
  • Change: Rich list button hover uses color-mix instead of a commented hsl() relative-color attempt.
  • Change: project control dialog heading shows the note's frontmatter icon (same as the Rich list row), and handles Teamspace names properly.

[2.0.6] - 2026-08-17

  • Fix: finish review / skip review no longer hit NotePlan's "editor is not open" warning when the Rich list (or another pane) has focus - focus the matching Editor first, otherwise write via the DataStore note path.
  • Fix: Rich project list Under Review highlight now sticks after Start / Next / skip-to-next (open the note first, then highlight). Dialog Start, preferred window type, and skip's next note all go through the same start-review path.
  • Change: finish review (manual) now asks which open Regular Note to use when the focused Editor is not a Notes pane and several Regular Notes are open in other panes. [dev: getFirstRegularNoteAmongOpenEditors]
  • Change: finish project review and start next accepts an optional note (same pattern as finish-for-note); if finish does not complete, it no longer jumps to the next review.
  • Change: when project metadata first creates frontmatter on a note, include a title: key set to the current note title (body H1 is kept).
  • dev: Split large reviews.js into reviewsConstants.js, reviewsList.js, reviewsActions.js (barrel reviews.js keeps the same public exports).
  • dev: Remove unused Dashboard leftover HTML switchboard helpers and stale TODO/FIXME comments.
  • Fix: Completing or cancelling a project and archiving it now refreshes the Rich list.

[2.0.5] - 2026-08-07

  • Change: Turn back on saving of updated window size & position when resizing/moving it
  • Change: New Progress comments write date as @YYYY-MM-DD again (compact @YYYYMMDD lines still parse)
  • dev: More changes from flow suppression cleanup

[2.0.4] - 2026-08-03

  • Change: when running finish project review command on a note that doesn't have a combined project-type frontmatter key, explain that, let the user pick a project type tag from Hashtags to Review settings (or Cancel), then write that project: key, before continuing to finish the review as usual. You can also Cancel to leave the note unchanged.
  • dev: Fixes from flow change cleanup

[2.0.3] - 2026-07-17

  • Fix: Project lists no longer include notes from @Archive (also always excludes @Templates and @Trash, as documented for Folders to Exclude).
  • Fix: Pausing/resuming a project when its note is not open in an Editor no longer fails to write frontmatter.
  • Fix: Progress comment form (used when pausing/resuming, and for Add Progress) now allows submitting with no comment.
  • Change: update set of available icons. dev: Use FA 7.0.1 instead of FA 6.0.0.b3.

[2.0.2] - 2026-07-17

  • When the Rich project list has no items, show help text explaining how to include notes, including significant settings, and a gear control that opens the plugin's settings pane. (Thanks for suggestion, @MarkW555).
  • Fix: Filter + Order hashtag toggles now hide projects unless they have at least one currently-ON tag (previously multi-tag notes e.g. #project #area stayed visible when those tags were both off).
  • Fix: Filter + Order hashtag toggles are now saved and restored after Refresh.

[2.0.1] - 2026-05-23

  • New setting: 'Project progress string' that allows user to override the 'progress' string in project note body and frontmatter key
  • Change: convert to project command now also asks user for optional starting comment and %, and will update the project list view to include it (if it's in scope).
  • dev: Fix: project list now reads progress from the configured frontmatter key as well as from body progress lines.

[2.0.0] - 2026-05-20

Summary of New features

  • Modernised Rich project list — denser layout with more metadata visible; status lozenges for review/due; optional multi-column layout; Order by control in the top bar (including sort by first project tag in your configured display order).
  • Much faster generation — uses caching between runs.
  • Convert to project — form-driven command to turn a regular note into a project (NotePlan v3.21+).
  • Complete / cancel project workflow — form for archive, quarterly/yearly log entry, and final progress comment.
  • Add progress update — single Command Bar Form step on newer NotePlan versions.
  • Automatic Rich list refresh — optional interval (minutes) to refresh the open Rich window.
  • Rich list interactions — clickable next-action lines (open project note and highlight task where possible); project title links prefer an existing split view; scroll position kept on refresh.
  • Dashboard integration — respects Dashboard perspectives and folder filters; list stays in sync when completing tasks from Dashboard or when filters change.

Changed features

  • **...
Read more

🔬 Projects + Reviews

Choose a tag to compare

@jgclark jgclark released this 11 Sep 20:48
465f343

What's changed in 🔬 Projects + Reviews plugin?

See website documentation for more details, and how to configure it to suit your workflow.

[2.1.1] - 2026-09-11

  • Fix: "Finish+Next" button in top bar not working (thanks to @cbkadel PR)
  • Fix: clicking title forcing Split View, even when your "Preferred Window Type" setting was "New Window" (thanks to @cbkadel PR)
  • Fix: Project control dialog now sizes more sensibly.
  • Change: The top bar's last updated label uses a more compact display, e.g. "2m ago".
  • Change: make colours in project display a little clearer.

[2.1.0] - 2026-08-28

  • /weeklyProjectsProgress now also upserts a current-week summary into the weekly note when "Heading for Weekly Project Progress output" is set (default: ## Weekly Project Progress). It can output as a table, or lists arranged by folder, subfolder or project tag type.
  • Change: "Progress Heading" and "Progress Heading level" are now a single setting — include markdown heading markers in "Progress Heading" (e.g. ## Progress). On upgrade, existing plain-text heading and level values are migrated automatically into one string.
  • Change: In Project List window, make the scroll-bounce not apply to the top bar.
  • Fix: Project list discovery and /weeklyProjectsProgress now classify notes by project type using only the combined frontmatter key (e.g. project: #area) and any legacy body metadata line, not hashtags mentioned elsewhere in the note body.
  • Fix: Edge case where .txt files could be ignored.

[2.0.9] - 2026-08-23

  • Fix: add progress no longer loses the body Progress: line when also writing the first progress: frontmatter key.
  • Fix: review commands no longer treat an unrelated hashtag on the first body line under the title as legacy project metadata (and delete the rest of that line). Only Hashtags to Review (plus #paused / #sequential / #archive) trigger that migration. [Addresses #775 for @hannahlinas]

[2.0.8] - 2026-08-20

  • Change: re-build and release, to pick up Dashboard being smarter about how it communicates change of perspective with this plugin.

[2.0.7] - 2026-08-17

  • Change: When a saved Perspective definition changes which folders or Spaces are included, the Project list shows "Recalculating projects for updated perspective …" and regenerates.
  • Fix: Back-to-back Dashboard regenerate requests (e.g. Save then Switch, or overlapping x-callbacks) coalesce to one in-flight generate plus at most one follow-up with the latest settings.
  • Change: Project list shows an INFO banner below the top bar while recalculating projects after a Dashboard perspective change.
  • Change: Rich project list control dialog is positioned from its measured size after it opens, instead of a fixed 505x120 estimate.
  • dev: Rich list Updated label uses locale relative phrases (e.g. "1 minute ago") via Intl.RelativeTimeFormat, with the previous compact buckets as fallback.
  • Change: Improved clipping of progress comments and next actions.
  • dev: Rich project list no longer warns when saving window size in Main Window / Split View (those panes have no floating windowRect).
  • Fix: heatmaps for weekly Projects Progress now shows notes and tasks charts in one window (the notes chart previously failed when both were shown).
  • Change: folder group headings in the Rich list no longer fight theme .h3 CSS.
  • Change: Rich list button hover uses color-mix instead of a commented hsl() relative-color attempt.
  • Change: project control dialog heading shows the note's frontmatter icon (same as the Rich list row), and handles Teamspace names properly.

[2.0.6] - 2026-08-17

  • Fix: finish review / skip review no longer hit NotePlan's "editor is not open" warning when the Rich list (or another pane) has focus - focus the matching Editor first, otherwise write via the DataStore note path.
  • Fix: Rich project list Under Review highlight now sticks after Start / Next / skip-to-next (open the note first, then highlight). Dialog Start, preferred window type, and skip's next note all go through the same start-review path.
  • Change: finish review (manual) now asks which open Regular Note to use when the focused Editor is not a Notes pane and several Regular Notes are open in other panes. [dev: getFirstRegularNoteAmongOpenEditors]
  • Change: finish project review and start next accepts an optional note (same pattern as finish-for-note); if finish does not complete, it no longer jumps to the next review.
  • Change: when project metadata first creates frontmatter on a note, include a title: key set to the current note title (body H1 is kept).
  • dev: Split large reviews.js into reviewsConstants.js, reviewsList.js, reviewsActions.js (barrel reviews.js keeps the same public exports).
  • dev: Remove unused Dashboard leftover HTML switchboard helpers and stale TODO/FIXME comments.
  • Fix: Completing or cancelling a project and archiving it now refreshes the Rich list.

[2.0.5] - 2026-08-07

  • Change: Turn back on saving of updated window size & position when resizing/moving it
  • Change: New Progress comments write date as @YYYY-MM-DD again (compact @YYYYMMDD lines still parse)
  • dev: More changes from flow suppression cleanup

[2.0.4] - 2026-08-03

  • Change: when running finish project review command on a note that doesn't have a combined project-type frontmatter key, explain that, let the user pick a project type tag from Hashtags to Review settings (or Cancel), then write that project: key, before continuing to finish the review as usual. You can also Cancel to leave the note unchanged.
  • dev: Fixes from flow change cleanup

[2.0.3] - 2026-07-17

  • Fix: Project lists no longer include notes from @Archive (also always excludes @Templates and @Trash, as documented for Folders to Exclude).
  • Fix: Pausing/resuming a project when its note is not open in an Editor no longer fails to write frontmatter.
  • Fix: Progress comment form (used when pausing/resuming, and for Add Progress) now allows submitting with no comment.
  • Change: update set of available icons. dev: Use FA 7.0.1 instead of FA 6.0.0.b3.

[2.0.2] - 2026-07-17

  • When the Rich project list has no items, show help text explaining how to include notes, including significant settings, and a gear control that opens the plugin's settings pane. (Thanks for suggestion, @MarkW555).
  • Fix: Filter + Order hashtag toggles now hide projects unless they have at least one currently-ON tag (previously multi-tag notes e.g. #project #area stayed visible when those tags were both off).
  • Fix: Filter + Order hashtag toggles are now saved and restored after Refresh.

[2.0.1] - 2026-05-23

  • New setting: 'Project progress string' that allows user to override the 'progress' string in project note body and frontmatter key
  • Change: convert to project command now also asks user for optional starting comment and %, and will update the project list view to include it (if it's in scope).
  • dev: Fix: project list now reads progress from the configured frontmatter key as well as from body progress lines.

[2.0.0] - 2026-05-20

Summary of New features

  • Modernised Rich project list — denser layout with more metadata visible; status lozenges for review/due; optional multi-column layout; Order by control in the top bar (including sort by first project tag in your configured display order).
  • Much faster generation — uses caching between runs.
  • Convert to project — form-driven command to turn a regular note into a project (NotePlan v3.21+).
  • Complete / cancel project workflow — form for archive, quarterly/yearly log entry, and final progress comment.
  • Add progress update — single Command Bar Form step on newer NotePlan versions.
  • Automatic Rich list refresh — optional interval (minutes) to refresh the open Rich window.
  • Rich list interactions — clickable next-action lines (open project note and highlight task where possible); project title links prefer an existing split view; scroll position kept on refresh.
  • Dashboard integration — respects Dashboard perspectives and folder filters; list stays in sync when completing tasks from Dashboard or when filters change.

Changed features

  • Metadata model: this now lives by default in the note's Frontmatter. So, the dates and tags are now separate keys (start, due, reviewed, completed, cancelled, nextReview, progress). This allows for use in folder views. Plus a combined project: key for the project's tags.
  • New progressStr setting (default: progress) — customises the progress body-line prefix and frontmatter key, consistent with the other *MentionStr settings.
  • New formatProgressCommentString() helper — canonical formatter for progress comment values (N@YYYYMMDD comment).
  • Migrate all projects — batch migration command with log file for legacy metadata. Body metadata is migrated automatically when commands update a note.
  • Review lifecycle — finish review uses the focused editor; works when metadata is YAML-only; split-window and race-condition fixes for pause/complete/cancel.
  • Next actions — sequential projects skip future-dated tasks unless explicitly tagged as next action; completed/cancelled projects no longer show next actions in Rich or Markdown lists.
  • Defaults & displayGroup by folder off by default; mention-string settings no longer include a leading @; paused projects shown with reduced opacity; demo list mode removed.
  • Markdown project lists — fully aligned with Rich list behaviour.
  • Upgrade path — on first run at v2.0.0, optional offer to migrate all project metadata, with instructions to run migration later if skip...
Read more

🤝 Shared Resources

Choose a tag to compare

@jgclark jgclark released this 31 Aug 10:44
f3ce0a1

Changes to 🤝 Shared Resources plugin

See Shared Plugin's README for details on this plugin.

[1.1.0] 2026-08-31, @claudeai

Added

  • React windows now get app-level NotePlan preferences that React cannot read for itself, baked into pluginData.notePlanSettings when the window opens. Inside a WebView DataStore is an async bridge proxy, so a scalar preference like DataStore.defaultFileExtension can't be read synchronously -- reading it plugin-side and passing it through gives every plugin's React window the value with no per-plugin plumbing. Starts with defaultFileExtension. Merged under anything the calling plugin already put in pluginData.notePlanSettings, so plugins that set their own (e.g. Dashboard) are unaffected.

[1.0.11] 2026-07-17, @jgclark

Changed

  • Upgraded Font Awesome Pro assets from 6.0.0-alpha3 to 7.0.1: fontawesome.css, *.min.flat4NP.css style loaders, and fa-*.woff2 webfonts (Regular, Solid, Light, Duotone).
  • getAvailableReminderLists now uses getAllAccessibleReminderLists() from @helpers/NPReminders (same titles, plus NotePlan 3.20+ colour/enabled-list support in the helper).

[1.0.10] 2026-05-11

Removed

  • Hidden developer commands shared:benchmarkNoteDecorationCache and shared:benchmarkFullNoteDecoration.

Changed

  • getNotes request handler: Dropped verbose timing/logDebug profiling (errors still log via logError).
  • routerUtils (newCommsRouter): Removed per-request [PERF]/logTimer timing and payload dump noise (clo) so REQUEST routing logs stay minimal.
  • Chooser debugging: Removed [DIAG] timing logs and reset default debugLogging to false in SpaceChooser and FolderChooser (SearchableChooser).

[1.0.9] 2026-04-17

Fixed

  • getNotes: Space-specific note requests now filter raw notes by space before converting and decorating them for React. This avoids scanning/decorating every note in the database when a chooser asks for one small teamspace, and avoids a duplicate full project-note pass when calendar notes are included.
  • getNotes: Callers can opt out of backend note decoration with includeDecoration: false, which is useful for React NoteChooser flows that derive display decoration client-side.
  • getNotes: space: '__all__' now returns notes from Private and all teamspaces (still respects includeTeamspaceNotes). Previously the sentinel was not implemented; callers that omitted space after selecting “all spaces” only received Private notes.
  • NoteChooser: Relative calendar-token lookup now uses a short-lived cache, avoiding repeated getRelativeDates() work while decorating calendar-note lists.

[1.0.8] 2026-04-17

Fixed

  • routerUtils / np.Shared fallback: DataStore.invokePluginCommandByName('handleSharedRequest', …) may return an extra wrapper { success: true, data: <inner RequestResponse> }. callSharedHandler in @helpers/react/routerUtils now peels that layer so the WebView RESPONSE data field is the real handler payload (e.g. teamspace array), not a nested { success, data }. Fixes SpaceChooser and any other chooser using the shared-handler fallback showing "Invalid response format" for an object that looked like a success envelope.
  • getHeadings: Resolves NoteChooser relative filenames (<today>, <thisweek>, etc.) via resolveNoteChooserFilenameForLookup in @helpers/noteChooserFilenameResolve before getNoteByFilename, so heading lists load for calendar relative picks (was logging couldn't find a note for '<today>').

[1.0.7] @dwertheimer 2026-04-13

Changed

  • REQUEST/RESPONSE: Root.jsx now resolves requestFromPlugin promises with pluginEnvelopeFromResponsePayload() from @helpers/react/pluginRequestEnvelope (success, data, message) instead of raw handler data only. Timeouts and unmount still reject. Consumers must be updated to use unwrapPluginRequestData or inspect the envelope (coordinate release with dependent plugins).

[1.0.6] @dwertheimer 2026-01-25

Fixed

  • Infinite Loop Prevention: Added guard in Root.jsx to skip empty SET_DATA/UPDATE_DATA updates that only contain metadata (lastUpdated, NPWindowID). This prevents infinite render loops when empty responses trigger re-renders.
  • DynamicDialog Request Handler: Fixed getFrontmatterKeyValues request handler (used by DynamicDialog choosers) to filter out templating syntax values (containing '<%') at the source. This prevents templating errors when forms load and process frontmatter that contains template code instead of actual values.

[1.0.5] @dwertheimer 2026-01-12 (not released yet)

Added

  • Log Buffer Buster: Added console method override feature to flush log buffers when debugging infinite loops or missing logs. When logBufferBuster is enabled in pluginData, all console.log, console.error, console.info, and console.warn calls will have 10000 dots appended to help flush NotePlan's log buffer. See ReactSkeleton documentation for usage instructions.

Changed

  • Added logging to Root.jsx to reduce confusing logging about request/response patterns

[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.css with 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 use includeMarkdown: true and ensure it always returns an array (never undefined/null), preventing errors in HeadingChooser.
  • Updated noteHelpers.js to use getNoteDecorationForReact() helper for consistent note decoration handling.
  • Fixed relative notes title handling to use relName directly instead of template runner value.

Fixed

  • Fixed CSS variable for toolbar height: changed var(--noteplan-toolbar-height, 0) to var(--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

[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 openReactWindow and showInMainWindow
  • Extract shared HTML generation logic into prepareReactWindowData function
  • Create assembleHTMLString function for showInMainWindow to build complete HTML string
  • Update addStringOrArrayItems to properly handle ScriptObj types 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 via dispatch('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...

Read more

🎛 Dashboard

Choose a tag to compare

@jgclark jgclark released this 28 Aug 22:48

What's changed in 🎛 Dashboard plugin?

For more details see the plugin's documentation.

[2.4.3] 2026-08-28

  • New: Reminder edit dialog Actions row has "Convert to Task" (second control) to convert a reminder into an open task prepended to today's daily note, then delete the Apple Reminder. Carries notes (in parentheses), location as @mention, >date, at HH:MM, and priority markers when set.
  • Dev: Task and Reminder dialogs can now use a logical ITEM_ORIG_SECTION in sectionCodesToRefresh (resolved from the open item's section at click time) instead of always prepending the source section. This reduce unnecessary refresh work.
  • Fix: Remove a few places where .md is hard-coded, and use user's file extension instead.

[2.4.2] 2026-08-24

  • Change: Reminder edit dialog now supports editing the reminder text, notes, and due time inline (Update / Enter), plus day-scale reschedule shortcuts, calendar picker, and Unsched. Setting a time on an undated reminder schedules it for today. Dialog width is fixed per viewport (wider than before). Bell icon in the dialog title uses the reminder list colour.
  • Change: Switching Perspective no longer shows the "Switching perspectives" spinner, and uses an incremental paint, rather than waiting until all sections are ready to display. dev: It sets firstRun so the header Refresh control shows "Generating" (same as initial load). It wow uses an incremental merge (incrementallyRefreshSomeSections) not batchReplaceSections. But alter PERSPECTIVE_SWITCH_USES_REPLACE_METHOD to change this back.
  • Change: Add support for more sorts of non-standard fonts from user-specific themes
  • Fix: Renaming a Perspective now persists the updated perspectiveSettings array to settings.json (same immutable save path as Save/Switch Perspective).
  • Fix: Saving Dashboard Settings no longer coerces off (false) switches to empty string, which had forced a full section refresh when changing unrelated options (e.g. Interactive Processing transitions).
  • Dev: Cleared remaining Flow errors under jgclark.Dashboard/src (reminder update params, perspective scope compare, IP item types, settings value helper, bridge locals).

[2.4.1] 2026-08-21

  • New: Edit icon on reminder rows opens a new dialog that supports complete, delete, and open in Reminders.
  • New: Interactive Processing now supports Apple Reminders (mixed into calendar/Overdue sections), and a new IP button on the Reminders section. (#779 raised by @dwertheimer)
  • Fix: Interactive Processing / task dialog no longer shows an error banner when Update or Enter is used without changing content. Other actions (complete, reschedule, etc.) now keep their intended action and apply an edited content change first when needed. (closes #778 raised by @dwertheimer)
  • Fix: Inline calendar events now render properly in tasks

[2.4.0] 2026-08-20

Just the Headlines:

New sections

  • Active Projects - open projects from Projects & Reviews, with next actions; existing Projects section renamed to Projects to Review
  • Wins - optional section for top-priority tasks (default >>) drawn from enabled Calendar sections
  • Apple Reminders - open reminders across relevant sections; complete / delete / add; click to open in Reminders; priorities supported; de-dupes reminders that are imported as tasks.

Projects & Reviews integration

  • Progress comments and next actions on project rows
  • Complete / cancel next actions in project sections (Active Projects round-trips for an updated next action)
  • Start review button and latest progress in the Project dialog
  • Stronger two-way sync with the Projects & Reviews plugin

Calendar / time

  • Timed Items - timeblocks and timed reminders in one section (title adapts)
  • Headings can appear in the current time-block / timed-items area
  • Neater time and scheduled-date chips (clock / calendar lozenges)

Task & note workflow

  • Add Task to note from Today / Week section headings
  • Search works with Search Extensions v2 or v3
  • Per-note display priority via frontmatter note-priority-delta

Spaces & windowing

  • (Team)Spaces awareness - include Private and/or Spaces per Perspective; clearer Space display in note links
  • Open Dashboard in the main window or a split view (as well as a separate window)
  • Better iOS / iPad support (main window where available, sidebar plugin preference)

Display polish

  • Note links as tinted lozenges (folder de-emphasised; frontmatter icon / color)
  • Mid-task note links use shorter labels and frontmatter icons
  • Tag/mention cache used by default (faster TAG sections)
  • Some significant performance improvements, particularly if you use the Projects & Reviews plugin as well. And lots of bug fixes.
Read more

📙 Note Helpers

Choose a tag to compare

What's changed in 📙 Note Helpers plugin?

For more details see the plugin's README.

[1.4.0] - 2026-08-18 @jgclark

New

  • new /Add title to note body command: for a chosen folder and its subfolders, adds any missing H1 at the start of note body from the frontmatter title: field. If an H1 already exists but does not match title:, it is updated from the title: field. Dry-runs first (logs the notes that will change, with a warning for H1 updates) and asks for confirmation. Optional folderToStart parameter for template/callback. (Team)Space notes are skipped.

Fixed

  • new note command was always converting the new note to frontmatter, because it looked up the wrong setting key. dev: It now uses defaultFMText and only converts when that setting is not blank.
  • enable heading links command wrote x-callback URLs with arg1 instead of arg0, so they never jumped to the heading.
  • list/rename inconsistent note filenames treated a blank 'Folders to ignore' setting as "ignore every note". A blank setting now means ignore no folders.
  • index folders command ignored the "this folder only" vs "include subfolders" choice and always followed the setting default.
  • jump to done command threw error if the note had no ## Done section; it now warns and stops.
  • list published notes command refresh link did nothing.
  • add to frontmatter command ignored a value passed by x-callback/template and always prompted.
  • reset title to match filename command could treat the opening --- of a frontmatter note as the title
  • add trigger to note (command x-callback/template) replaced the whole triggers: field. It now parses the trigger string and appends.
  • jump to note's heading command opened notes by title, which could pick the wrong note when titles collide. It now opens by filename.
  • delete note command did not wait for the (Team)Space warning before moving the note.
  • find and link unlinked notes command skipped mixed-case title matches.
  • dev: getSettings() could return nothing, so later commands crashed on missing config. It now uses DataStore.settings (with a file fallback) and throws a clear error if settings cannot be loaded.

[1.3.7] - 2026-08-03

  • Fix to inconsistent filenames commands possibly not honouring 'folders to ignore' setting

[1.3.6] - 2026-04-25

  • 'new note' commands now suggest title from frontmatter or first line of text, and don't fail on blank titles.

[1.3.5] - 2026-03-18

  • fix to potential bug found by @cursor
  • add small detail to /print note helper

[1.3.4] - 2026-03-06

  • allow jumpToNoteHeading to take an argument of the note title or filename, for use with callbacks or shortcuts.

[1.3.2] - 2026-02-05

  • add more detail to /log Editor Note, to help flush out a long-standing API bug

[1.3.1] - 2026-01-25

  • fix to list inconsistent note filenames command. (Thanks, @Heathy65.) Closes #732
  • improved display of inconsistent note names, and added button to kick off the renaming.

[1.3.0] - 2025-12-20

  • new duplicate note command: duplicates the currently-open note, and unlike the built-in command, it allows the user to specify a new title and folder for it.

[1.2.5] - 2025-11-10

  • fix regression in folder chooser (thanks, @aleemshaun)

[1.2.4] - 2025-11-08

  • Improvements in heading picker in jump to heading and jump to note's heading commands

[1.2.3] - 2025-10-31

  • Fix to moveNote command for iOS/iPadOS

[1.2.2] - 2025-09-22

  • Fix regression in folder picker

[1.2.1] - 2025-09-19

  • improve and fix folder picker in various commands (including updating the sort order to match the app -- thanks for pointing this out, @tastapod)
  • allow delete note command to run on Teamspace notes (if running v3.18.2 or above).
  • stop inconsistent file name commands from running on Teamspace notes, which are stored in a SQL DB instead of having filenames

[1.2.0] - 2025-08-23

  • improved display of lists of notes and headings in jump to heading and jump to note's heading, and include Teamspace notes
  • various improvements/fixes to the inconsistent file name commands. Resolves issues #640, #642, #643 raised by @tastapod.
  • added notes to indicate where commands can't work on Teamspace notes, because of the different way they're architected.

[1.1.1] - 2025-04-22

  • the log Editor Note commands now handle Teamspace notes correctly.
  • fix to opening new notes in new note commands.

[1.1.0] - 2025-02-19

  • new list published notes command, that generates a list in the new 'Publlished Notes' note of all notes that have been published to published to the internet through NotePlan.

[1.0.0] - 2024-12-31

New

  • the new note command has been revived (alias nn). It creates a new (regular, not calendar) note with a title you give, and in a folder you can select. If the "Default Text to add to frontmatter" setting isn't blank, then the note will be created using that frontmatter.

Note: this version was promoted to be a Core Plugin from NotePlan 3.16.1.

Important Changes

  • when move note shows the list of folders, the special Templates and Archive folders are moved to the end of the list. (Plus any other special ones that start with '@').
  • the new note from clipboard and new note from selection commands have moved from Filer plugin to NoteHelpers.

[0.20.3] - 2024-12-25 (unpublished)

  • new logEditorNoteDetailed command (which can easily triggered from a callback) that also logs line type and rawContents

[0.20.2] - 2024-12-15

  • the log note details command now includes backlink-ed notes and paragraphs

[0.20.1] - 2024-10-22

  • new log note details command which prints note details to the log (for debugging purposes)

[0.20.0] - 2024-08-16

Added

  • new delete note command, that makes easier what the current NotePlan UI makes difficult.
  • new find unlinked notes command which finds and creates links to existing notes in the current note (by @aaronpoweruser).
    Unlinked notes demo

Fixed

  • fixed rename note filename when note has frontmatter (thanks for the report, @ariccb)

[0.19.2] - 2024-04-27

  • add trigger to note command is now more resilient to unusual frontmatter, and shouldn't duplicate an existing trigger when run from template

[0.19.1] - 2024-02-23

  • add trigger to note command can now be run from x-callback with parameter of the trigger string to add. This means it can be run from Templates with a command tag.
  • Added a migration message about 'open note' commands.

[0.19.0] - 2024-01-09

  • moved the "open note in ..." commands to the new "Window Tools" plugin
  • updated the display of the "index folders" command to use heading levels H2 to H4 depending on how deep the sub-folder is. The placeholder in the title {{folder}} now just uses the last part of the folder name, or new placeholder {{full_folder_path}} which will use the folder's full path. (Requested by @dutchnesss).
  • removed 'Show month/quarter/year' commands as they are now in the main NP menus.
  • fix to '/rename inconsistent filename' command (reported by @Anton-Sklyar)
  • fix to '/make index' command ignoring parameter 'displayOrder' if given.

[0.18.2] - 2023-09-18

  • fix edge case with /add trigger command.

[0.18.1] - 2023-08-15

  • New commands by @leo:
    • list inconsistent note filenames lists the names of notes whose filenames are inconsistent with their titles
    • rename filename to title renames the current filename to the title of the note
  • when the command bar shows list of notes to choose, it now includes Template files again.

[0.18.0] - 2023-08-13

  • new command Show This Month (alias /stm)
  • new command Show This Quarter (alias /stq)
  • new command Show This Year (alias /sty) (requested by @danieldanilov)
  • new command update all indexes that updates all the existing folder index notes
  • added more decoration to most-used calendar dates, when showing them in lists of notes (e.g. in "jump to note's heading" and "open note new window").

[0.17.3] - 2023-07-01

  • added new setting 'Title to use for index notes' for "/index folders" command (requested by @dwertheimer)
  • layout improvements and further bug fix in "/index folders" (spotted by @dwertheimer)

[0.17.2] - 2023-06-30

Fixed

  • fix bug in index folders command (spotted by @dwertheimer)

[0.17.0] - 2023-06-12

Added

  • new open url from a note command that asks user for a note, and then presents a list of URLs. The selected one is then opened in your default browser. (for @John1 with help from @dwertheimer)
  • now move note and index folders commands offer option to create a new folder when selecting a folder (suggested by @dwertheimer)
  • new reset caches command that just runs the command of that name in the NotePlan Help menu (for @clayrussell)

[0.16.1] - 2023-03-22

Added

  • added NoteHelpers: update settings command for iOS users
  • added setting for logging level

Changed

  • '/add trigger to note' command now is smarter in the way it works
  • restores "Default Text to add to frontmatter" setting for '/convert note to frontmatter' command

[0.16.0] - 2023-03-07

Added

  • new add trigger to note command that makes it easy to add a trigger to a particular note. It lists the functions from all plugins that it can work out are written for triggers, but also allows any function to be picked.
  • index folders command now:
    • has an option to sort output by title (alphabetical), last update date, or date the note was created (though note that I think that the underlying created date data is v...
Read more

🥷 Task Sorting & Tools

Choose a tag to compare

dwertheimer.TaskSorting Changelog

About dwertheimer.TaskSorting Plugin

See Plugin README for details on available commands and use case.

[1.3.1] - 2026-08-11 (@dwertheimer)

Fixed

  • Tags and mentions containing accented, non-Latin or symbol characters were truncated when sorting (#776). The tag-matching regex only accepted a-z, A-Z, 0-9 and /, so #Führung was read as the tag F — which sorted wrongly and produced a #### #F: heading when Include Primary Sort Key Heading in Output? was on.
  • Tag and mention matching now follows the same rule NotePlan itself uses, verified case by case against the app's own paragraph.hashtags / paragraph.mentions: letters, combining marks and digits of any script, plus any Unicode symbol ($ + = ~ ^ < | € £ ° → and emoji), plus the three punctuation exceptions -, _ and /. Every other punctuation character (. , % & ' ! ? : ; ( ) [ ] { } * @ " \ #) and any whitespace ends the tag, so ordinary sentence punctuation is not swallowed (#shopping. still sorts as shopping).
  • Consequences of the above, all matching NotePlan: #my-tag now sorts as my-tag rather than my; a trailing slash is trimmed (#tag/tag); and a tag that is only digits and dashes (#123, #2024-05) is correctly not treated as a tag at all.
  • Mentions get the same treatment (@Müller no longer becomes @M). As in NotePlan, the trailing (...) is not part of the mention, so @estimate(2) and @estimate(5) still sort together under @estimate.

[1.3.0] - 2026-08-02 (@dwertheimer)

Fixed

  • Multi-level indented subtasks are no longer flattened when sorting. Nesting was only ever tracked one level deep: a grandchild was compared against the top-level task rather than its own parent, so it came back out as a sibling of its own parent, and every level below the first collapsed into one. Sorting now tracks nesting to arbitrary depth, and a sorted task carries its whole subtree with it at the original depths.
  • Related: the code that removes tasks before re-inserting them in sorted order only walked one level of children, so on a deeply-nested note grandchildren were left behind and duplicated. It now walks the whole subtree.
  • Sort tasks under heading ignored the "Combine Related Task Types?" setting. Its interleaveTaskTypes parameter defaulted to true and the setting was never consulted, so running the command from the menu always combined the types regardless of your preference — while Sort tasks on the page honoured it. The two commands disagreed about the same setting. It now falls back to the setting when no explicit argument is given; templates and x-callbacks passing an explicit value still override it.
  • Missing argument when inserting sorted tasks at the end of a heading section. insertParagraphAfterParagraph(content, otherParagraph, paragraphType) was being called with only two arguments, so paragraphType arrived as undefined. The call was made through a computed function name (note[insertFunc](...)), which hid the fact that the two possible targets have different arities. Now split into explicit branches, with 'text' passed to match every other insertion path in the same function. Affects sorting under a heading when the tasks to top setting is off.

Notes

  • Subtasks keep their document order within their parent; only the top level is re-ordered. This is deliberate: a parent's children include notes and quotes whose meaning depends on where they sit (e.g. a > quote referring to the line above it), and sorting those alphabetically moves them away from what they refer to.
  • Known NotePlan limitation: indentation made of spaces is not visible to plugins. NotePlan's parser reports space-indented lines as indents: 0 and strips the leading spaces from rawContent, so the nesting information is gone before any plugin runs. Indent with tabs for sorting to preserve your structure. Raised with @EduardMe.

[1.2.9] - 2026-04-04 (@dwertheimer)

  • Sort tasks on the page (sortTasks): optional Note or Editor as last argument (same idea as Sort tasks under heading), for templates/plugins when you must target the note you are editing.
  • Quick sort commands (tasksToTop, sortTasksDefault, sortTasksByDue, sortTasksByPerson, sortTasksByTag, sortTasksTagMention): optional Note or Editor as sole extra argument when called from code.
  • README: Plain-language guide to combined vs traditional grouping (⚪ circle vs 🔲 box tasks, with and without type headings).

[1.2.8] - 2025-11-10 (@dwertheimer)

  • Fix for sorting tasks with combined/interleaved tasks and checklists

[1.2.7] - 2025-11-06 (@dwertheimer)

New Features

  • NEW: Interactive mode (/ts) now prompts users to choose task type grouping (combine related types or keep separate)
  • NEW: Added plugin setting "Combine Related Task Types?" for quick sort commands (/tsd, /tsm, /tst, /tsc)
    • When enabled (default): Combines tasks (*) with checklists (+) into 4 logical groups
    • When disabled: Keeps all 8 task types completely separate (traditional mode)
  • NEW: Customizable task type headings - 8 new settings allow you to rename headings for localization or personal preference
    • Configure in Plugin Preferences → "Task Type Heading Customization"
    • Examples: Change "Open Tasks" to "Tareas Abiertas" (Spanish) or "任務開放" (Chinese)
  • NEW: Setting to control display of empty task category headings
    • "Show Empty Task Category Headings?" (default: off)
    • When disabled, only categories with tasks will show headings

Bug Fixes

  • FIXED: Task type headings (e.g. "Open Tasks:", "Completed Tasks:") no longer duplicate when running sort commands multiple times
  • FIXED: Headings now appear correctly in interactive mode when user selects "yes" to include headings
  • FIXED: Scheduled tasks now appear under "Scheduled Tasks" heading instead of being incorrectly grouped under "Open Tasks" when both headings and interleaving are enabled
  • FIXED: Task type sections now output in correct order (Open → Scheduled → Done → Cancelled) instead of reversed order when using headings with interleaving
  • FIXED: Corrected "Completed Cancelled Items" typo to "Cancelled Checklist Items"
  • FIXED: Empty task category headings (with no tasks underneath) are now properly removed to avoid clutter

Improvements

  • IMPROVED: All default sort commands now respect the new "Combine Related Task Types?" setting
  • IMPROVED: Better documentation and clearer command descriptions for task grouping feature
  • IMPROVED: Added detailed logging for interleaving choices in debug mode

[1.2.6] - 2025-09-23 (@dwertheimer)

  • Add logging for jgclark to sortTasksUnderHeading
  • Add ability to pass all params to /ts and /tsh commands
  • remove sortTasksViaTemplate code which was never a published command
  • change default behavior of /ts* commands to interleave task types (open/checklist together)
  • NEW: Add sortInHeadings parameter to /ts command to override DataStore setting
    • sortInHeadings: false treats entire note as one unit (moves all open tasks to top)
    • sortInHeadings: true sorts tasks within each heading separately (default behavior)
    • Allows x-callback-url calls to specify sorting behavior regardless of user's DataStore settings
  • Fix bug where tasks were not being sorted in headings for frontmatter-only notes

[1.2.4] - 2025-08-31 (@dwertheimer)

  • Add saveEditorIfNecessary() to all commands

[1.2.3] - 2025-08-29 (@dwertheimer)

  • Add sortTasksViaTemplate command to sort tasks via a template.

[1.2.2] - 2025-08-29 (@dwertheimer)

  • Remove NotePlan popup nag on repeat deletion check using Editor.skipNextRepeatDeletionCheck

[1.2.1] - 2025-08-29 (@dwertheimer)

  • Added noteOverride parameter to sortTasksUnderHeading command for @jgclark

[1.2.0] - 2025-01-25 (@dwertheimer)

  • Added sortTasksUnderHeading command to sort tasks under a heading.
  • Added /cnt command

[1.1.0] - 2024-05-26 (@aaronpoweruser)

  • Added /cnt command to copy all noteTags to all tasks in a note.
  • Added an onSave trigger command for cnt.

[1.0.0] - 2024-01-?? (@dwertheimer)