github standardnotes/desktop v2.3.0


  • Improved sync and item management architecture (details below)
  • Smart tag functionality in Folders
  • Session history keeps track of changes to your note while you work on it. It also serves as a system of checks and balances on extensions, and in the case that an extension modifies your note unexpectedly, session history allows you to revert to previous revisions. Note that session history by default is in-session only, and is not saved across sessions.
  • Opening a revision preview, either for the Note History Extension, or the built in session history, offers the option to restore this note inline, or restore the note as a copy.
  • Importing a backup now creates copies for any differing items, rather than replacing them.
  • No Distraction and Dynamic themes can now be layered on top of other themes, rather than being exclusive. So you can run No Distraction with the Midnight theme, for example.
  • A note's modified date is no longer changed when you lock and unlock a note.
  • Fixes issue where typing on a very long note may produce input lag.
  • The default note title has been changed from "New Note 1" to "Note 1".
  • Fixes issue where deleting a tag would not deselect the it.
  • "Last refreshed" in the lower right corner now respects user locale.

Architectural Improvements

This release includes a very much improved architecture that is shared across all versions of the Standard Notes applications, including desktop and mobile. Previously, the web/desktop application contained its own code related to managing sync and items, and the mobile app contained this same code, but duplicated manually. This leads to difficulty in maintaining, and potential for inconsistent behavior.

Version 2.3.0 on all platforms leverages SFJS, which is a separated client-side library we maintain which contains the code related to syncing, authenticating, duplicating, and encrypting/decrypting. With this, we expect to see improved and more consistent syncing behavior, as well as conflict resolution, and general data handling.

SFJS also includes several unit tests, which runs automated tests against every aspect of how the system is intended to function. This means we can make sure there weren't unnecessary regressions in every new release, and also leads to higher levels of confidence in new releases, both for you, and for us.

Smart Tags

2.3.0 includes support for the Folders Smart Tags. Using the Folders extension, you can create dynamic tags that query your notes for a certain condition.

For example, if you wanted to see a list of all "untagged" notes, you would create a smart tag like so:

!["Untagged", "tags.length", "=", 0]

Simple enter this value as you would enter any value using the Folders extension (click + to add a new Folder, then paste this value in.)

The components of the smart tag syntax are as follows:

!: The beginning of a smart tag
[...]: A JSON array

  • The first item in that JSON array is the display label.
  • The second item is the property you are targeting.
  • The third is the operator.
  • And the last is the expected value.

Other examples:

!["Untagged", "tags.length", "=", 0]
!["B-tags", "tags", "includes", ["title", "startsWith", "b"]]
!["Foo Notes", "title", "startsWith", "Foo"]
!["Archived", "archived", "=", true]
!["Pinned", "pinned", "=", true]
!["Not Pinned", "pinned", "=", false]
!["Last Day", "updated_at", ">", "1.days.ago"]
!["Long", "text.length", ">", 500]

Regex is also supported. But be sure to escape your / and \ as necessary.

!["Only Letters", "title", "matches", "^[a-zA-Z]+$"]
latest releases: v3.5.14, v3.5.14-beta2, v3.5.14-beta1...
2 years ago