nvALT is a keyboard-first notes app for the Mac. Press a shortcut, type, and the note list narrows as you go. A title that does not match an existing note becomes a new note. Notes stay plain text, the preview is Apex Markdown, and the editor and preview can each take a theme.
It is a fork of Notational Velocity, maintained by me, with earlier work by David Halter. It is free. nvUltra is the app I am building to follow it. nvALT 3 is the version to use on current macOS.
nvALT 3 requires macOS 12 or later. The app runs natively on Apple silicon and on Intel. Check for Updates, in the application menu, uses nvALT’s own update feed.
The interface is localized in English, French, German, Italian, Portuguese, and Chinese.
Installation
Download the zip, double-click it, and drag nvALT to Applications.
nvALT keeps its own preferences and note database. Installing it next to an older Notational Velocity, or next to an older nvALT, does not replace that other app’s settings. The first launch of a new major version opens with default settings, so color, sync, and the notes folder need to be chosen again.
Check for Updates after you install. That is the same stream as the download on this page.
Basic usage
⌘+L puts the cursor in the search field. Typing filters the list. ⌘+J and ⌘+K move through the matches. Return opens the selected note for editing. Tab moves between the search field, the tags, and the note body.
A search that matches nothing is a new title. Press Return and the body is empty, ready to type. ⎋ clears the search. ⌘+D deselects the current note and puts the search text back.
⌘+R renames the selected note. ⌘+⌫ deletes the selection. ⇧+⌘+V pastes the clipboard as a new note.
The notes list can sit above the editor or beside it. View, Switch to Horizontal Layout (⌥+⌘+L) flips that, when the editor is not using that shortcut for a list marker. See Lists. ⇧+⌘+C collapses the list. Dragging the divider to the edge of the window hides the search field.
⇧+⌘+K shows or hides the word count.
Where notes live
New libraries are a folder of plain text files. The default extension is md. A library that was already a single database stays a database. An extension you chose yourself stays as it is.
Settings is where you pick the notes folder. If that folder has gone missing, nvALT asks you to pick it again. ⇧+⌘+R shows the selected note in the Finder, when the note is a file on disk.
Rich text libraries can be converted once, from Notes settings, Convert to Markdown. nvALT writes Markdown files into a new folder and switches to that folder. The old folder is left as it was. On first launch, a rich text library also gets a one-time question about converting.
The Note menu lists external editors you have set up. Choosing one writes the note to disk and opens it there. Hold Option while choosing an editor to make that editor the default.
Tags
Tags are tokens. Click the tags on a note, or press ⇧+⌘+T. Type a tag and press Space, comma, or semicolon, and it becomes a chip. Existing tags are offered as you type. Return or a click away saves. Escape cancels.
Select more than one note and ⇧+⌘+T opens the same kind of field for the whole selection.
A tag on every selected note is drawn solid. Removing it removes it from all of them. Adding a tag adds it to all of them.
A tag on only some of the notes is drawn dimmed. Leaving it alone keeps it on the notes that already have it. Select a dimmed tag and press Return to add it to the rest. Other dimmed tags stay as they are.
With plain text storage, tags are written to the file as Finder tags. Older OpenMeta tags are copied to Finder tags on launch. Spotlight and tools that read Finder tags can see them. The tag list inside nvALT is still the list nvALT searches.
Search
A normal search matches the title, the body, and the tags. Every word has to match. A quoted phrase is one word, so "shell script" matches that phrase. A colon splits words, so hello:world is a search for hello and a search for world.
⌘+G and ⇧+⌘+G move through matches inside the open note. Search terms are highlighted in the editor. That highlight can be turned off in Settings.
#tag search
A word that starts with #, with the hash against the word, is a tag search.
#unix keeps a note when either of these is true:
One of its tags starts with unix. #uni matches unix and unix-admin. It does not match admin-unix.
The title, body, or label text contains the characters #unix.
Case does not matter. A note tagged unix matches even when the body never contains #unix. A note that only writes #unix in the text matches even with no tags. The word unix with no hash, and no unix tag, does not match #unix.
Tag searches combine with everything else. Every part has to match.
#unix shell
#unix #mac
#unix "shell script"
# unix is a hash character plus a search for unix, because the hash is not attached to the word. A lone # searches for that character. ##unix is a tag prefix of #unix.
While a # word is in the query, the search field does not complete a note title over what you typed.
Editing
The note body is plain text. Markdown completion is on by default (⇧+⌘+M toggles it). With it on, ⌘+B and ⌘+I wrap with the bold and italic markers from Editing settings. Bold is ** or __. Italic is * or _. The defaults are asterisks. The editor colors headings, emphasis, links, lists, quotes, and code. ⌘+T clears formatting. ⌘+Y strikes text through.
Auto-pair, in Settings, inserts the closing bracket, quote, or backtick, and can wrap a selection. The first backtick inserts a pair and leaves the cursor between them. The next backtick types over the closer. A third backtick stays a single character, so three in a row remain a fence, and further backticks extend that run. A backtick typed against a letter is left as one character. Quotes and brackets pair the way they did before.
Invisible characters and unusual spaces are tinted, so a line that looks empty and is not will show itself.
Help, Keyboard Shortcuts opens the in-app list in its own window. The tables below are the same set, grouped by what you are doing.
Lists, quotes, and headings
These list shortcuts need automatic list formatting, the same switch nvALT has used for years.
⌥+⌘+L, while the note body is focused, cycles the current line from plain text to a bullet, to a number, and back. The bullet is the unordered-list marker from Editing settings: -, *, or +. The default is *.
A selection that covers more than one line uses that same cycle for the whole selection. Plain lines gain the bullet after the indent they already have, and blank lines stay blank. When every item is a bullet, the next press numbers them, nested items included. When every item is numbered, the next press removes the markers and leaves the indents. If some lines have a marker and some do not, that press clears the markers instead of numbering. The selection stays on those lines, so the next press continues the cycle.
That cycle runs when automatic list formatting is on. View, Switch to Horizontal Layout uses the same keys, and it runs when the note body is not focused.
Tab indents a list item or a blockquote. Shift-Tab outdents. ⌘+] and ⌘+[ indent and outdent lines, and so do ⌃+⌘+→ and ⌃+⌘+←. The width comes from the tab setting.
Numbered lists renumber as you edit, including nested ones. Return on a list item continues the list. Return on an empty item removes the marker and leaves a blank line.
Return on a blockquote continues the quote. Return on an empty quote line drops the marker. ⇧+⌘+> quotes the line. ⇧+⌘+< removes the quote marker.
Return on the opening line of a code fence writes the closing fence and leaves the cursor between them.
⇧+⌘++ raises the heading level. ⇧+⌘+_ lowers it.
Links and footnotes
⇧+⌘+L wraps the selection in [[wiki link]] brackets, or inserts an empty pair. Type [[ and note titles complete, when Suggest titles for note-links is on in Editing settings. Return or Tab accepts a title and writes the closing brackets.
A wiki link opens the named note. The preview does not turn those brackets into HTML links. See Apex.
⌥+⌘+K wraps the selection in a Markdown link and leaves the cursor between the parentheses.
[nvALT]()
With Markdown completion on, pasting a URL onto a selection fills that link in. Pasting a URL by itself becomes an autolink, <https://example.com>, unless the cursor is already inside a link or a reference definition. Paste Markdown Link (⌥+⌘+V) is the same action from the Edit menu. With Markdown completion off, a pasted URL stays plain text, and that menu item is hidden.
Typing the id in [text][id], or in an image link ![alt][id], offers the definition ids already in the note. A [ at the start of a line starts a definition, and that offers ids used in the note that still have no definition. Typing narrows the list. Return, Tab, or a click accepts one. An existing ] stays put and the cursor moves past it. Ids inside a fenced code block are skipped, and [[wiki links]] still complete note titles.
F6 turns a selection into a reference link and adds the definition at the end of the note. Press F6 on the marker to jump to the definition, or on the definition to jump back.
F7 does the same for footnotes. A selection becomes the footnote body. With nothing selected, the marker lands after the word under the cursor.
Still a notes app.[^1]
[^1]:I mean it.
⌘+⏎ opens a URL under the cursor.
Moving and selecting
⌃+⌘+↑ and ⌃+⌘+↓ move the current paragraph. On a list item, they move that item and anything nested under it.
⌥+⌘+↑ grows the selection by structure: the word, the inside of a pair of markers, the markers, the sentence, the paragraph, the neighboring block, then the whole list, quote, or fence, and finally the note. ⌥+⌘+↓ walks back down.
⌘+← at the start of the body moves to the title. ⌘+→ at the end of the title moves into the body.
Keyboard reference
Notes
Action
Shortcut
Search or create
⌘+L
Clear the search
⎋
Edit the selected note, or create it
⏎
Move between title, tags, and body
⇥
Next note
⌘+J
Previous note
⌘+K
Deselect and restore the search
⌘+D
Rename
⌘+R
Tag
⇧+⌘+T
Delete
⌘+⌫
Paste as a new note
⇧+⌘+V
Bookmark
⇧+⌘+D
Show in Finder
⇧+⌘+R
Copy the note’s URL
⌥+⌘+C
Import URL
⇧+⌘+U
Export
⌘+E
Print
⌘+P
Finding inside a note
Action
Shortcut
Find
⌘+F
Find and replace
⌥+⌘+F
Find next
⌘+G
Find previous
⇧+⌘+G
Use the selection for Find
⌥+⌘+E
Jump to the selection
⌥+⌘+J
Markdown
Action
Shortcut
Markdown completion
⇧+⌘+M
Bold
⌘+B
Italic
⌘+I
Strikethrough
⌘+Y
Plain text
⌘+T
Wiki link
⇧+⌘+L
Markdown link
⌥+⌘+K
Paste a Markdown link
⌥+⌘+V
Cycle the list marker
⌥+⌘+L
Indent a list item or quote
⇥
Outdent a list item or quote
⇧+⇥
Indent lines
⌘+] or ⌃+⌘+→
Outdent lines
⌘+[ or ⌃+⌘+←
Quote this line
⇧+⌘+>
Remove a quote marker
⇧+⌘+<
Raise the heading level
⇧+⌘++
Lower the heading level
⇧+⌘+_
Reference link, or jump to it
F6
Footnote, or jump to it
F7
Move the paragraph up or down
⌃+⌘+↑ / ⌃+⌘+↓
Expand or shrink the selection
⌥+⌘+↑ / ⌥+⌘+↓
View and preview
Action
Shortcut
Settings
⌘+,
Word count
⇧+⌘+K
Collapse the notes list
⇧+⌘+C
Horizontal or vertical layout
⌥+⌘+L
Black and white, low contrast, your colors
⌥+⌘+1⌥+⌘+2⌥+⌘+3
Note previews in the list
⌥+⌘+P
Preview window
⌃+⌘+P
Preview source
⌘+U
Preview in Marked
⌃+⌘+M
Save preview HTML
⇧+⌘+S
⌥+⌘+L is listed twice. In the note body it cycles a list marker. Elsewhere it switches the list layout.
Preview
⌃+⌘+P shows the preview. It renders the note with Apex in Unified mode. ⌘+U switches between the rendered page and the HTML source, which is there for copying into a blog or another editor. View includes Enter Full Screen.
Math is typeset with MathJax, and a fenced mermaid block is drawn with Mermaid. Both libraries ship inside the app and load only when that note uses them. A note with neither stays a plain preview. The HTML source view and Save Preview HTML keep the Apex markup. The libraries run in the live preview.
Lock Note to Preview keeps the preview on one note while you edit another. It is in the Preview menu and has no shortcut.
The button at the left of the preview’s icon row follows the cursor. It sits just left of View Source, the </> button, and its tooltip is “Scroll preview with the edit”. It starts off, and that choice is remembered.
While that button is on, the preview stays on the block you are editing and scrolls only when that block leaves the screen. A cursor on a blank line follows the nearest block. Lock Note to Preview does not follow the cursor. The positions used for this stay in the preview. They are not written into the note, and Share Preview does not include them.
⇧+⌘+S saves the preview HTML. Print Preview / PDF prints the rendered page.
Sharing
The share button at the right of the search field opens the system share menu, downward from the button. A selection in the note body is what gets sent, including edits that are not saved yet. With nothing selected, the whole note goes. A selection in the search field is ignored, and the note title is not included. The tooltip reads “Share Selection” or “Share Note”. The button stays visible and is disabled when there is nothing to send.
Share Preview sits on the preview window, just left of the Marked Share button. It sends the rendered page as rich text, so another notes app can paste it with its formatting. The menu opens upward. Showing the HTML source does not change what is sent: the button still sends the rendered note. It is disabled when the preview has nothing to show. An empty page sends nothing.
Marked Share still copies an unlisted link. The preview toolbar no longer has an Open in Marked button. Send the note to Marked from the system share menu, or use Preview using Marked (⌃+⌘+M). Open Marked Streaming Preview stays in the Preview menu and the status menu.
Apex Markdown
The preview runs Apex in Unified mode, so one note can use syntax from CommonMark, GitHub Flavored Markdown, MultiMarkdown, Kramdown, and Marked together. The full syntax, with every option, is the Apex wiki. This section is the part you can rely on inside nvALT.
Apex strips a metadata block from the rendered page and can substitute [%key] with a value from that block. YAML front matter, MultiMarkdown metadata, and a Pandoc title block all work.
Text, links, and media
Standard Markdown is all here: headings, emphasis, lists, links, images, and fenced or indented code. Bare URLs and email addresses become links. Raw HTML is left in the page.
~~struck~~ strikes through. mc^2 is a superscript, and H~2~O puts the 2 in subscript. Tildes on both ends of a word, ~underlined~, underline it. Smart typography turns straight quotes, dashes, and ellipses into typographic ones. :rocket: inserts the emoji.
Inline math is $e = mc^2$. A block is $$ on its own lines. \(...\) and \[...\] work the same way. The preview typesets them with MathJax. Images can take a caption from the title or the alt text.
Diagrams
A fenced block tagged mermaid is drawn in the preview:
```mermaid
flowchart LR
A[Note] --> B[Preview]```
Graphviz and the other diagram types stay as code blocks.
Tables, tasks, and definitions
GitHub-style tables work. A colon on the left, the right, or both sides of a dashes cell sets that column’s alignment. A cell can span columns with <<, and rows with ^^. A caption can sit on the line before the table as Table: Caption, or after it as : Caption.
| Task | Owner |
| --- | ---: |
| Write the note | me |
Task lists use - [ ] and - [x]. Definition lists use the Kramdown shape, a term and then a line starting with :.
Callouts, footnotes, and critic markup
A Bear or Obsidian callout is a quote that starts with a marker:
> [!NOTE]> The preview renders this as a callout.
[!WARNING], [!TIP], and the rest of that set work the same way, including a collapsible callout. Python-Markdown !!! callouts and Quarto ::: callouts are left as ordinary text.
Footnotes use reference syntax, [^id], or an inline form. Critic markup ({++added++}, {--removed--}, {~~old~>new~~}, and comments) is shown in the preview with classes, so a stylesheet can color it.
Attributes and structure
Inline attribute lists use {#id .class} or {: #id .class}. They attach to the block or span they follow. [text]{#id .class} becomes a span. A fenced div is three or more colons:
::: {.sidebar}
A block with a class.
:::
::: >aside uses an <aside> instead of a <div>.
A table of contents marker in the note is filled by Apex. {{TOC}} and <!--TOC--> both work, and {{TOC:2-4}} limits the heading levels. Put those markers in the note. They are not the table of contents for this page.
Headings get ids. Abbreviations, indices, and citations are available. Citations need a bibliography named in the note’s metadata. The citations and indices pages describe the syntax.
Left off in the preview
A few Apex switches are off when nvALT renders a note:
[[wiki links]] stay as brackets in the HTML. In the editor they are still links to other notes. See Links.
Pandoc grid tables.
External syntax highlighters. Fenced code is marked up, and coloring it is a job for the preview stylesheet.
Diagram types other than Mermaid. A mermaid fence is drawn. See Diagrams.
Plugins.
File includes and a few other processor flags are documented on the Apex wiki. The preview is rendering the note you are editing.
Themes
Settings, Fonts & Colors has two menus, one for the editor and one for the preview, plus Import and Open Themes Folder.
Default is the nvALT color scheme from that same pane, and the preview from template.html and custom.css. Those two files live in Application Support and are the right place for a preview that needs its own HTML or JavaScript. A named theme replaces them while it is selected.
Everything you import lives in one folder:
~/Library/Application Support/nvALT/Themes
The first time that folder is used, a sample pair named Paper is copied in. It is not selected for you. Drop files in the folder or use Import. .theme, .plist, and .json are editor themes. .css files are preview themes.
The note font and the notes-list font are set in this pane. The defaults are SF Pro at 16 pt for the body and 14 pt for the list. A font you already chose is left alone. Keep Note Body Width Readable limits the line length. The margins use the window color.
With no editor theme, the window chrome follows system light and dark mode.
Editor themes
An editor theme is a MultiMarkdown Composer theme. Composer writes JSON. nvALT also reads an XML or binary plist, and a .json file that uses the same keys. Export a theme from Composer, or copy one out of its themes folder, and import it.
Colors are #RGB, #RRGGBB, or #RRGGBBAA. They are painted on screen and are not written into the note. Switching back to Default, or to another theme, does not bake the last palette into the file.
backgroundColor and foregroundColor color the window, including the title bar, the divider, and the scrollbars. The scrollbar knob uses the window foreground when it has to stay visible against the track.
textView paints the note: background, text, caret, and selection. The notes list uses tableView, tableViewHighlighted, and tableViewInactive when those exist, and falls back to the window colors when they do not.
Syntax is a dictionary per element. heading, strong, emphasis, codeBlock, codeSpan, blockquote, markup, linkParens, and the rest of the Composer set all apply. A heading level can sit on top of the base heading style. Each style can set foregroundColor, backgroundColor, markupForegroundColor, bold, italic, strikethrough, and mono.
fontScale is part of the Composer format. nvALT ignores it. The type size stays where Fonts & Colors put it.
Svelte is the theme in the screenshot. The whole file is Svelte.theme. This link installs it:
Edit the .theme file in any text editor. It is JSON. Save, and nvALT reads it from the themes folder.
Preview themes
A preview theme is CSS. The note is rendered inside <div id="wrapper">, the same hook Marked uses, so a Marked stylesheet can be dropped in. Style #wrapper, or style h1, p, pre, and the rest of the elements inside it. Rules on body still paint the page around the note.
Resolute.css is a finished page, with the fonts embedded in the file, so it is a large download. Install it.
Install a theme from a link
nvalt:// and nv:// both accept a theme. The host is add-theme or import-theme. Percent-encode a url value. A local file can use path, and a ~ in that path is expanded.
The file is copied into the themes folder and selected. url can be a file, http, or https address. If a server sends the theme as plain text, nvALT still imports it.
View, Color Schemes still switches the built-in black and white scheme, the low-contrast scheme, and your own scheme, with ⌥+⌘+1, ⌥+⌘+2, and ⌥+⌘+3. Those apply when you are on Default.
Importing pages
Note, Import URL (⇧+⌘+U) asks for an address and creates a note. If the clipboard is a single web address, that address is already filled in. A host with no scheme is fine. nvALT adds https://.
Dragging a URL onto the notes list still works.
Convert imported URLs to Markdown, in Settings, brings the page in as Markdown. Process with Readability extracts the article first. Hold Option when you choose Import URL, or Option-drag a URL onto the list, and Readability runs for that import even when the preference is off.
The new note is selected as soon as it arrives. The search field is set to the note’s title, so a leftover search does not hide it.
The converter is built into the app. It uses the same HTML2Text and Readability setup as Marked.
Browser extensions
The extensions clip a whole page, the current selection, or one or more blocks. A block picker highlights as you hover. ⌘+ or Shift-click adds another block.
The Safari extension ships inside nvALT. Turn it on in Safari Settings. The Chrome, Brave, Firefox, and Zen extensions are installed separately. Source and install notes are on GitHub.
The markdownify URL
nvalt://markdownify and nv://markdownify do the same conversion for a script or a browser extension. Pass the page as url, or the HTML itself as html. When you pass html, url is only the source link. title and readability (1 or 0) are optional. This URL always writes Markdown, even when Convert imported URLs to Markdown is off.
Simplenote sync is in Notes settings, on the Synchronization tab. Sign-in emails you a code. Paste the code and press Return. An expired code is reported so you can email yourself a new one.
If Simplenote sync is on and notes are stored in Dropbox or SimpleText, nvALT warns you.
Finder tags, described under Tags, are the on-disk tag store. They are independent of Simplenote.
URL schemes
URL
What it does
nvalt://find/Title/
Opens the named note. Copy URL (⌥+⌘+C) puts a full link on the clipboard, including an id so the note can still be found after a rename. nv:// is accepted anywhere nvalt:// is.
nvalt://markdownify
Imports a page or a piece of HTML as a Markdown note. See The markdownify URL.
General. The menu bar icon, and auto-selecting a note by title while you search.
Notes. The notes folder, the file extension, Markdown conversion, and Simplenote. See Where notes live and Sync.
Editing. Markdown completion, the markers for bold, italic, and unordered lists, automatic list formatting, auto-pair, suggesting titles for [[wiki links]], right-to-left text, and the URL import switches. Convert imported URLs to Markdown and Process with Readability live here. See Editing and Importing pages.
Fonts & Colors. Note font, list font, readable width, search highlighting, the built-in color scheme, the editor theme, and the preview theme. See Themes.
Note previews in the list are ⌥+⌘+P.
The menu bar icon is a separate status menu, with search, preview, and quit. Show Main Window is ⇧+⌘+N.
Help
Questions, bugs, and feature requests go in the GitHub issues. Please look through the open tickets before opening a new one. A ticket is the thread I can keep up to date.
A few older walkthroughs are still worth reading for the basic search-and-type habit. Michael Schechter’s nvALT 101, and this introduction in French.
Changelog
Click to expand
nvALT 3.0.34 (144)
#### CHANGED
View Source is now a </> icon, and the sync toggle sits to its left
Removed Open in Marked from the preview toolbar. Share to Marked from the share menu instead
NEW
Share button in the title bar sends the selected text, or the whole note when nothing is selected
Share Preview sends the rendered note as rich text so other notes apps can paste it into the note
Preview sync keeps the preview on the block you are editing, and only scrolls when that block leaves the screen
FIXED
Search field right edge follows the window when a tiled window is resized
nvALT 3.0.33 (144)
#### CHANGED
Search field starts just after the window title in side-by-side layout, the same way it does in vertical layout
FIXED
Search field stays inside the window when the window is tiled or made very narrow
nvALT 3.0.32 (144)
#### FIXED
Search highlights clear when the field shows the note title, and clearing the search removes them
Search highlights use dark or light text so the marked words stay readable
Tab and Backtab on a task checkbox indent the item instead of inserting link brackets
nvALT 3.0.31 (144)
#### NEW
Option-Command-T turns the current line into a task. A list item gains a checkbox, and a line that already has one loses it
Click the space inside a task’s brackets to mark it done or open again
A completed task is crossed out in the editor, and the preview shows it as a checked item
Return on a task continues the list with a new open task, and Return on an empty checkbox clears that line
nvALT 3.0.30 (144)
#### NEW
Option-Command-T turns the current line into a task. A list item gains a checkbox, and a line that already has one loses it
Click the space inside a task’s brackets to mark it done or open again
A completed task is crossed out in the editor, and the preview shows it as a checked item
Return on a task continues the list with a new open task, and Return on an empty checkbox clears that line
nvALT 3.0.29 (144)
#### FIXED
Selected notes in Vertical Layout with the Default theme use the system selection bar again instead of white text on the list background
nvALT 3.0.28 (144)
#### NEW
Enter in list renames note in Editing settings stays on by default. Turn it off and Enter in the notes list jumps to the editor
FIXED
Collapsing the notes list in Vertical Layout no longer leaves it visible behind the search field
Convert to Markdown in Notes settings stays below the deletion checkbox instead of covering its title
nvALT 3.0.27 (144)
#### FIXED
Vertical Layout notes list uses the theme background, selection, and text color
Search field in Vertical Layout stays in place and leaves the window title visible
Vertical Layout selected rows use the theme highlight instead of the system blue bar
Selected tags in Vertical Layout still use the selected style
nvALT 3.0.26 (144)
#### FIXED
Vertical Layout notes list uses the theme background, selection, and text color
Search field in Vertical Layout stays in place and leaves the window title visible
nvALT 3.0.25 (144)
#### FIXED
Editing a note no longer jumps the preview back to the top or flashes on each keystroke
Links to anchors in the same note scroll the preview
nvALT 3.0.24 (144)
#### FIXED
Opening Settings on General shows its controls when that pane was open at quit
nvALT 3.0.23 (144)
#### FIXED
Clicking below the last line places the caret at the end of the note, including a trailing newline, a blank line that contains spaces, and a last line of text
nvALT 3.0.22 (144)
#### NEW
Editing settings choose the marker for bold (** or __), italic (* or _), and unordered lists (-, *, or +)
Link ids complete inside [text][id] from definitions already in the note, and a new [id]: line offers ids that are still unused
Backticks wrap a selection or the caret, the next backtick types over the closer, and a third backtick stays single so ``` is a fence
Wiki links in the preview open the named note. The brackets stay visible, and the same text in code, math, or a diagram stays plain
Defined reference links pick up the link color, including collapsed references and images. Undefined ids and fenced code stay plain
IMPROVED
Command-Option-L on a multiline selection adds that list marker, turns a solid bullet list into numbers, clears a numbered list, and strips markers when only some lines have one. Indents stay put
FIXED
Autocomplete text, including the letters already typed and the brackets inside a link, stays the theme foreground instead of turning black
Word count in the toolbar stays readable on dark themes instead of drawing as a light cyan token
Opening a shorter note, including from a note link, no longer leaves the previous note’s tail on screen
nvALT 3.0.21 (144)
#### NEW
Link ids complete inside [text][id] from definitions already in the note, and a new [id]: line offers ids that are still unused
FIXED
Convert to Markdown writes the notes instead of stopping before the first file
Convert to Markdown switches to the new folder and reports when it finishes
nvALT 3.0.20 (144)
#### NEW
Preview typesets math with MathJax, including $...$, $$...$$, \(...\), and \[...\]
Preview draws a fenced Mermaid diagram
IMPROVED
Math and Mermaid are bundled in the app and load only when a note uses them
FIXED
Convert to Markdown writes the notes instead of stopping before the first file. Thanks to Don Patterson (djp3).
Convert to Markdown switches to the new folder and reports when it finishes. Thanks to Don Patterson (djp3).
nvALT 3.0.19 (144)
#### FIXED
#tag search matches a tag prefix or the same #tag written in the title, body, or labels
Search highlights mark a #tag in the note again
nvALT 3.0.18 (144)
#### NEW
Import URL opens with Shift-Command-U while nvALT is focused.
nvALT 3.0.17 (144)
#### NEW
Import URL opens with Shift-Command-U while nvALT is focused.
nvALT 3.0.16 (144)
#### NEW
Safari extension is included with nvALT. Turn it on in Safari Settings.
Add a built-in Markdownifier, not reliant on Python scripts
FIXED
Safari extension includes its toolbar icons and uses the app version.
nvALT 3.0.15
#### CHANGED
URL import converts HTML inside the app with HTML2Text and Readability, following the Convert imported URLs and Process with Readability preferences.
NEW
Import URL on the Note menu asks for an address and creates a note. A copied web address fills the field, and holding Option turns on Readability for that import.
markdownify URL scheme (nvalt:// and nv://) turns a page URL or raw HTML into a Markdown note, with an optional title and Readability override. It converts even when Convert imported URLs to Markdown is off.
FIXED
Imported URL is selected right away. The search field is set to the new note’s title, so the list no longer looks empty until the search is cleared.
Option-drag onto the notes list forces Readability for that import.
nvALT 3.0.14
#### CHANGED
Search highlighting skips #tag words and still marks the other words in the query.
Search field corners are rounded, and the field lines up with the note editor and grows from the right when the window resizes.
Selected note stays highlighted while its tags are being edited.
Svelte theme uses dark text on the highlighted and inactive note rows.
NEW
Tag search in the search field. #unix lists notes whose tags start with unix, and mixes with normal search words.
Tag tokens in the notes list and the multi-note panel. Tags on every selected note are solid chips, and tags on only some notes stay dimmed until you apply them to the rest.
FIXED
Tag search after a lone #. Typing on to #unix lists tagged notes again.
Tag search while typing a second tag. #unix #shell keeps notes that have both tags.
Tag editing text stays readable on a dark editor theme.
Notes list does not jump to another note while you are editing that row’s tags.
nvALT 3.0.13
#### CHANGED
Search highlighting skips #tag words and still marks the other words in the query.
Search field corners are rounded, and the field lines up with the note editor and grows from the right when the window resizes.
Selected note stays highlighted while its tags are being edited.
Svelte theme uses dark text on the highlighted and inactive note rows.
NEW
Tag search in the search field. #unix lists notes whose tags start with unix, and mixes with normal search words.
Tag tokens in the notes list and the multi-note panel. Tags on every selected note are solid chips, and tags on only some notes stay dimmed until you apply them to the rest.
FIXED
Tag search after a lone #. Typing on to #unix lists tagged notes again.
Tag search while typing a second tag. #unix #shell keeps notes that have both tags.
Tag editing text stays readable on a dark editor theme.
Notes list does not jump to another note while you are editing that row’s tags.
nvALT 3.0.13
#### CHANGED
Pasted URLs stay plain text unless Enable Markdown Completion is on.
Paste Markdown Link is hidden unless Enable Markdown Completion is on.
nvALT 3.0.12
nvALT 3.0.11
#### FIXED
A leftover search no longer highlights part of what you typed after the field shows the note title.
Escape in the editor clears that search.
nvALT 3.0.10
#### FIXED
Fonts & Colors keeps the top controls on screen and places the theme options under the note width slider.
nvALT 3.0.9
#### FIXED
Theme links import a .theme file when the server sends it as plain text.
A failed theme download reports the server error.
nvALT 3.0.8
#### NEW
Choose an editor theme and a preview theme in Settings, Fonts and Colors, with Import and Open Themes Folder.
Import MultiMarkdown Composer themes and Marked preview stylesheets.
Install a theme from a link with nvalt://add-theme or nv://add-theme.
The notes list uses the editor theme’s table colors, and the note body keeps the text view colors.
A preview theme wraps the note in #wrapper so Marked CSS applies directly.
A sample Paper editor theme and preview stylesheet are copied into the themes folder.
An editor theme’s window background colors the title bar, the divider, and the scrollbars.
The scrollbar knob uses the window foreground color when it stays visible against the track.
FIXED
With no editor theme, that chrome follows system light and dark mode.
Margins around a readable note width use the same window color.
nvALT 3.0.7
#### CHANGED
Open Keyboard Shortcuts in its own window.
NEW
Insert a Markdown link with Option-Command-K.
Paste a URL as a Markdown link when text is selected, or as an autolink when it is not.
Cycle the list marker with Option-Command-L when automatic list formatting is on. Lock Note to Preview no longer uses that shortcut.
Indent or outdent a list item or blockquote with Tab and Shift-Tab, and indent lines with Control-Command-Left and Control-Command-Right.
Continue a blockquote or code fence when you press Return, and leave the quote when the line is empty.
Renumber a numbered list as you edit it, when automatic list formatting is on.
Move a paragraph or list item with Control-Command-Up and Control-Command-Down.
Expand or shrink the selection by Markdown structure with Option-Command-Up and Option-Command-Down.
Insert or jump to a reference link with F6, and a footnote with F7.
Highlight invisible characters and unusual spaces in a note.
IMPROVED
Color nested list markers while Markdown highlighting is on.
Indent using the tab width from settings.
FIXED
Scroll to show the cursor when F6 or F7 jumps to a reference or footnote.
nvALT 3.0.6
#### CHANGED
The default note font is SF Pro at 16 pt. A font you already chose stays as it is.
Tell you to paste the login code and press Return.
NEW
Set the note list font from Fonts & Colors. It starts as SF Pro at 14 pt.
IMPROVED
Leave more room above the first line of a note.
FIXED
Open the notes folder picker when the saved folder is gone.
Keep alternating rows lined up with the grid.
Keep the selected note readable on a light list in Dark Mode when the editor has focus.
Submit a Simplenote login code once, when you press Return.
Say when a login code has expired so you can email yourself a new one.
nvALT 3.0.5
#### CHANGED
Sign in to Simplenote with a code emailed to you instead of a password.
The default note font is SF Pro at 16 pt. A font you already chose stays as it is.
NEW
Set the note list font from Fonts & Colors. It starts as SF Pro at 14 pt.
IMPROVED
Leave more room above the first line of a note.
FIXED
Put Simplenote sync back, including the Synchronization tab in Notes settings.
Warn again when Simplenote sync is on and notes are stored in Dropbox or SimpleText.
Open the notes folder picker when the saved folder is gone.
Keep alternating rows lined up with the grid.
nvALT 3.0.4
#### CHANGED
Sign in to Simplenote with a code emailed to you instead of a password.
FIXED
Put Simplenote sync back, including the Synchronization tab in Notes settings.
Warn again when Simplenote sync is on and notes are stored in Dropbox or SimpleText.
nvALT 3.0.3
#### CHANGED
List Settings panes in a sidebar and show the selected pane beside them.
Rename the Preferences menu item to Settings.
IMPROVED
Size the Settings window so each pane’s options fit without collapsing into a chevron.
nvALT 3.0.2
#### CHANGED
List Settings panes in a sidebar and show the selected pane beside them.
Rename the Preferences menu item to Settings.
IMPROVED
Size the Settings window so each pane’s options fit without collapsing into a chevron.
nvALT 3.0.1
#### CHANGED
NvALT now requires macOS 12 or later.
Check for Updates works again on current macOS, using Sparkle 2 and the existing designheresy feed.
MultiMarkdown preview is rendered by Apex instead of the bundled multimarkdown tool.
Preview Share publishes the note to Marked Share instead of Peggd and copies an unlisted link.
Note text and the note list use the regular system font size. Existing Helvetica 12 notes and the old 11 or 12 point list size are updated once.
Note list headers are flat, with a hairline separator and a chevron for the sorted column.
The search field no longer draws its old horizontal border lines.
The version is 3.0.0 (build 129).
Remove Simplenote sync and the Synchronization tab from Notes settings.
Replace the preview Save HTML button with Open in Marked for plain text notes stored on disk.
Render the preview with Apex Unified Markdown.
Turn on Markdown shortcuts by default, so Command-B and Command-I insert syntax instead of rich text.
Use the new app icon, including the Icon Composer icon on current macOS and a generated icon for older systems.
Store new note databases as plain text files instead of a single database. Existing database-only libraries stay as they are.
Use md as the default extension for plain text notes, including libraries that were using txt, text, or utf8. A custom extension is left as the default.
Store note tags as Finder tags. Existing OpenMeta tags on note files are copied over on launch, and later edits stay in Finder.
Revise the app icon fill and the placement of the pages and pen.
NEW
Open Marked Streaming Preview sends the current note to Marked and opens x-marked://stream/. It is in the Preview menu and the status menu.
Highlight Markdown syntax in the editor while Markdown completion is on.
Ask once, on launch, whether to convert a Rich Text library to Markdown.
Add Convert to Markdown in Notes settings. Rich Text notes are converted, plain text notes are copied as they are, and the files are written into a new folder that then becomes the notes folder. The current folder is left unchanged.
IMPROVED
NvALT runs natively on Apple silicon as well as Intel.
Web links in notes are found by the system link detector. Double-bracket wiki links still work.
Encrypted notes still open. Crypto now uses the system libraries instead of the bundled OpenSSL.
FIXED
Typing in a note no longer crashes if the text gets shorter during an edit.
The password generator no longer stalls when the length is longer than the character set.
Make the Marked Share confirmation follow light and dark mode and show its buttons.
Pressing Return on an empty continued list item removes the marker and leaves a blank line.
Show the menu bar icon when that setting is on, using the rocket image instead of the app icon.