Skip to content

Releases: notable/notable-insiders

v1.9.0-beta.0

02 Dec 03:28
Compare
Choose a tag to compare
  • Ensuring the devtools window is closed immediately after closing its target window
  • Using "tiny-readdir" rather than old custom implementation
  • Preview: improved footnotes spacing
  • New nanodash method: escapeMarkdown
  • TOC: ensuring a correct link is generated for headings containing escaped characters
  • Autocomplete: ensuring placeholders are autocompleted too
  • New nanodash method: isShallowEqual
  • Updated some dependencies
  • New setting: tabs.alwaysVisible
  • Ensuring the tabbar can be visible if it has no tabs too
  • Ensuring the tabbar is styled properly if it has no tabs
  • Avoiding permanently deleting files if moving them to the computer’s trash fails
  • Ignoring some extra paths usually related to atomic writes performed by editors
  • Export: ensuring any custom CSS is used when exporting too
  • Export: added support for targeting different export modes via custom CSS by using the following selectors: html[data-export="html"], html[data-export="pdf"], html[data-export="print"], html[data-export="share"]
  • New command: shortcuts.screencast.reset
  • Shortcuts screencaster: resetting it on Click, closing it on CmdOrCtrl+Click
  • Shortcuts screencaster: added a more descriptive tooltip
  • Shortcuts screencaster: ensuring it can be rendered reasonably no matter how much space is available
  • Shortcuts screencaster: resetting automatically after 1s of inactivity and allowing for max 12 shortcuts to be displayed at once
  • Added basic support for pointer screencasting
  • New context key: isPointerScreencastOpen
  • New commands: pointer.screencast.enable, pointer.screencast.disable, pointer.screencast.toggle
  • Updated shortcuts: enabling pointer screencasting too on C-K C-K C-S
  • New setting: spellChecker.statusbar.displayLanguage
  • Sidebar: showing an icon next to collapsed sections
  • Definition lists: ensuring accurate line mappings are outputted for them
  • Definition lists: ensuring they are foldable in the editor
  • Added very basic support for persistent tags
  • Ensuring the currently active tag stays active if it gets renamed
  • New command: tag.new
  • New commands: tag.new.notebook, tag.new.template
  • Added some simple "+" buttons to all sidebar sections
  • Spell checker: ensuring the language region can be displayed too
  • Sidebar: aligned counters’ styling with icons
  • Tree: using a more compact layout
  • Design: minor update and cleanup
  • Window options: added support for "focused"
  • New context key: isFocused
  • New modernizr test: is-focused
  • New theme colors: titlebar:foregroundInactive, titlebar:button:close:foregroundInactive
  • New theme colors: tabbar:tab:backgroundInactive, tabbar:tab:foregroundInactive
  • New command: editor.join.lines
  • Ensuring when retrieving an unused path special characters are sanitized first
  • Generalized some React hooks: useActiveEditor -> useEditor, useActiveEditorSelections -> useEditorSelections
  • New React hook: useEditorSelectionsValues
  • Words counter: counting also words in selections
  • Quickpick: ensuring the height is calculated correctly for lists containing only 1 item too
  • Note: added quickPick APIs for templates
  • New command: editor.insert.template
  • New spell checker words: todo, fixme
  • New spell checker words: covid, coronavirus
  • Removed theme color: tabbar:border
  • New theme color: tabbar:tab:borderActive
  • Tabs: significantly improved styling, making it much clearer which tab is active
  • Changelog: improved styling of disabled tabbar buttons
  • Spell checker: increased debounce time to 1000ms
  • New setting: spellChecker.interval
  • Sidebar: ensuring sections containing at least one standalone tag are shown
  • Drag and drop: added support for toggling an attachment for a note by dropping the attachment into the note’s tab
  • Drag and drop: added support for toggling a tag for a note by dropping the tag into the note’s tab
  • Drag and drop: added support for toggling multiple tags for a note by dropping the tags into the note’s tab
  • Drag and drop: the multi-note editor is now a droppable target
  • Drag and drop: added support for toggling selection for multiple notes by dropping the notes into the multi-note editor
  • Drag and drop: added support for toggling a tag for multiple notes by dropping the tag into the multi-note editor
  • Drag and drop: added support for toggling multiple tags for multiple notes by dropping the tags into the multi-note editor
  • New context key: isDragging
  • Ensuring focus traps don’t mess with drag & drop
  • Editor: ensuring view zones are taken into account when moving cursors up
  • Shield: ensuring indentation is preserved
  • New settings: editor.cursor.blinking, editor.cursor.style
  • Mermaid: ensuring gannt diagrams are rendered at a comfortable 800px width
  • Emoji: improved detection
  • Added support for renaming notes by Alt+Clicking on their tabs
  • Ensuring tab titles are rendered with the same font size throughout the app
  • Modal: avoiding accouning for window control buttons in favor of using available space more usefully (macOS)
  • Note: ensuring the "title_custom" property gets removed when resetting titles even if the actual title won’t change in the process
  • useInputEditable: ensuring the callback reference gets updated when it changes
  • React: ensuring all refs have a name that ends with "ref"
  • Table formatter: ensuing missing trailing cells are handled properly
  • Attachment: treating "*.greenshot" files are renderable files
  • Spell checker: resetting markers immediately when the language to use changes
  • Ensuring list headers and the statusbar have the same height
  • Minor changes
  • Table of contents: ensuring headings containing strings that look like Markdown are parsed properly
  • Dialog: ensuing it’s rendered with a border applied to it, for consistency with the other floating widgets
  • New nanodash method: fill
  • Database: ensuring only notes get read from disk in batch
  • Reusing retrieved stats objects from the watcher whenever possible, avoiding prodding the filesystem twice in some cases
  • Tags: ensuring the tree is rebuilt efficiently, without performing proxy dirty checks
  • Tags: optimized tree updates for initially added notes
  • State deserialization: optimized some note lookups
  • Database: added support for path lookups to the filesystem backend
  • Note: mode lookups by path an O(1) operation rather than O(n)
  • Attachment: mode lookups by path an O(1) operation rather than O(n)
  • Note: lookups by title now take 90% less time
  • Attachment: lookups by relative path now take 90% less time
  • Optimized away Electron’s needlessly expensive asar path checks
  • Note: filtering them in 90% less time
  • Attachments: filtering them in 90% less time
  • Ensuring note tabs have a title attribute
  • Added very basic support for report production
  • New report: orphan attachments
  • New command: attachments.report.orphans
  • New report: missing attachments
  • New command: attachments.report.missing
  • Mermaid: outputting the source code too
  • Sharing: submitting the source markdown to the echo endpoint too, which can then be retrieved by appending ".md" to the returned URL
  • New setting: sharing.ttl
  • New setting: sharing.password
  • Renamed command: link.releases.experimental -> link.releases.insiders
  • Bump: updated stable and insiders configurations
  • New setting: updater.channel (either "stable" or "insiders")
  • Words: fixed an off-by-one error when counting them
  • Note: avoiding duplicating pasted or dropped attachments coming from the attachments directory
  • Attachment: prompting for deletion too after removing an attachment from a note
  • Docs: refactored and unified documentation notes
  • Quick modals: generating help pages too
  • Renamed command: help.theming -> help.themes
  • Renamed command: help.linking -> help.links
  • Renamed command: help.search -> help.search
  • New help pages: notebooks, palette, tags, templates
  • New commands: help.notebooks, help.palette, help.tags, help.templates
  • Docs: wired notes with help pages
  • Tags: ensuring potential relevant metadata changes are account for too when trying to skip an update
  • Docs: updated build scripts that broke fater the refactor

v1.9.0-alpha.9

23 Jun 23:23
e1b0cb9
Compare
Choose a tag to compare
  • Ensuring pasting a single tag in a tag box doesn’t insert it immediately, giving a chance to edit it
  • Ensuring resizable columns can be quickly resized by double-clicking their sashes
  • Upgraded Electron to v9
  • Window: preserve floating state, menubar visibility, opacity level and background color across restarts
  • Added a “favicon” endpoint
  • Preserving the latest active search query across restart and across data directories
  • Added the initial code necessary for preserving more comlicated bits of state across restarts
  • Preserving which notes are selected in the multi-note editor across restarts
  • Added “.notable” to “.gitignore"
  • Preserving the list of open tabs across restarts
  • Preserving the currently active tab across restarts
  • Hidden settings: added defaults for the tabs key
  • Preserving the currently active tags across restarts
  • Preserving the collapsed state of tags across restarts
  • Resizable columns: ensuring non-visible columns are detected properly
  • Ensuring complex state about the app is not saved if the app is not fully loaded
  • Preserving the widths of resizable columns across restarts
  • Resizable column: rewritten serialization logic in a much more compact way
  • Preserving the state of previews across restarts
  • Preserving the state of note editors, including the undo/redo stacks, across restarts
  • Added a “Recents” library
  • Remembering the last 15 used data directories
  • Implemented a function for “tildifying” paths
  • Ensuring when switching data directories the new one is being added to the recents stack before saving preserving data directories across restarts
  • Added a “Change to Recent” submenu to the data directory context menu
  • “Notable” menu: reusing the standalone data-directory context menu
  • Added a “data directory” palette and related commands and menu items

v1.9.0-alpha.8

21 Jun 00:04
e1b0cb9
Compare
Choose a tag to compare
  • Ensuring non-bubbling events are handled properly

v1.9.0-alpha.7

20 Jun 00:08
e1b0cb9
Compare
Choose a tag to compare
  • Ensuring external PDFs can be rendered too
  • Ensuring rendered PDFs are rendered when exporting notes too
  • Added the initial code necessary for supporting rendering specific pages out of PDFs
  • Centralized all logos in a “Logo” library
  • Ensuring the JSON language is listed in the language palette
  • Ensuring the “isAboutOpen” context key is updated when manually closing the about window too
  • Added support for rendering dot/graphviz graphs
  • Added a file-system paths picker library
  • Simplified some date-based file names generations
  • Preserving any non-conflicting metadata that the app doesn’t recognize
  • Improved heading detection logic when dealing with non-scrollable documents
  • Updated some dependencies
  • Ensuring weird, but valid, id selectors are handled properly

v1.9.0-alpha.6

19 Jun 01:51
e1b0cb9
Compare
Choose a tag to compare
  • App menu: ensuring themes in the “themes” submenu are sorted naturally
  • Ensuring editing installed themes refreshes them immediately
  • Added a “useSubscriptionUpdate” react hook
  • Added a standalone editor
  • New command: standaloneEditor.close
  • New context key: isStandaloneEditorOpen
  • Ensuring the “attachments.editor.close” command is visible in the command palette when appropriate
  • Added some functions related to metadata serialization/deserialization
  • Updated some dependencies
  • Svelto: disabled the “centered” decorator, which conflicts with Notable’s centered mode
  • Added a built-in note metadata editor
  • New commands: note.metadata.editor.open, note.metadata.editor.close, note.metadata.editor.toggle
  • New context key: isNoteMetadataEditorFocused
  • New context key: isNoteMetadataEditorOpen
  • Edit menu: added an item for toggling the note metadata editor
  • New shortcut: CmdOrCtrl+Alt+Shift+E -> note.metadata.editor.toggle
  • Zen mode: hiding the statusbar
  • Zen mode: hiding the custom menubar (Windows)
  • Fixed an issue with the “themes.cycle” command
  • Added a custom CSS/JS editor for editing persistent injected CSS/JS
  • New commands: customCode.editor.open, customCode.editor.close, customCode.editor.toggle
  • New context keys: isCustomCodeEditorFocused, isCustomCSSEditorFocused, isCustomJavaScriptEditorFocused, isCustomCodeEditorOpen
  • App menu: added an item for toggling the custom CSS/JS editor
  • Minor changes
  • Added a context menu for the standalone editor

v1.9.0-alpha.5

18 Jun 01:10
e1b0cb9
Compare
Choose a tag to compare
  • Implemented built-in themes in a more dynamic way, ensuring when extending them the app takes full advantange of this
  • New command: window.screenshot
  • Ensuring when cycling through themes they are sorted by their title
  • Themes: ensuring all titlebar buttons start with the same foreground color

v1.9.0-alpha.4

17 Jun 02:40
e1b0cb9
Compare
Choose a tag to compare
  • Settings: renamed the “theme” key to “themes"
  • Theming: removed no longer in use “neutral” color
  • Added support for 3584 installable themes generated from vscode themes
  • New commands: theme.install, theme.uninstall

v1.9.0-alpha.20

22 Nov 01:01
e1b0cb9
Compare
Choose a tag to compare
  • Updated electron
  • Added a workaround that ensured updated CSS actually gets updated quickly during development
  • Floating elements: avoiding using fullscreen modals, improved spacing, fixed an issue regarding blurred text on non-hi-dpi displays
  • Fixed many minor alignment issues
  • Palette: avoiding displaying the default shortcut hint for the current item when custom shortcut hints are provided
  • New React hook: useEvent
  • Ensuring popovers are repositioned when resizable layouts are resized
  • Changelogs: reversed history order
  • New commands: changelog.first, changelog.last
  • Mapped Ctrl+Home/Ctrl+End to changelog.first/changelog.last
  • New context key: isConfigurationEditorOpen
  • New commands: configurationEditor.next, configurationEditor.previous
  • New commands: configurationEditor.first, configurationEditor.last
  • Mapped Ctrl+Tab/Ctrl+Shift+Tab to configurationEditor.next/configurationEditor.previous
  • Mapped Ctrl+Home/Ctrl+End to configurationEditor.first/configurationEditor.last
  • New commands: standaloneEditor.first, standaloneEditor.last, standaloneEditor.previous, standaloneEditor.next
  • Mapped Ctrl+Tab/Ctrl+Shift+Tab to standaloneEditor.next/standaloneEditor.previous
  • Mapped Ctrl+Home/Ctrl+End to standaloneEditor.first/standaloneEditor.last
  • Mapped Alt to view.menubar.enable rather than view.menubar.toggle
  • New React hook: useMount
  • New React hook: useUnmount
  • Ensuring state is kept in sync when modals or popovers are removed from the DOM at the React level
  • New context keys: hasDialog, hasNotification, hasPopover
  • New commands: dialog.close, modal.close, notification.close, popover.close
  • Wired the “Esc” shortcut used for closing dialogs/modals/popovers/notifications with the main shortcuts system
  • Added a context menu for the custom titlebar
  • Added a context menu for the statusbar
  • Making portable builds for Windows again
  • Updated some dependencies
  • Detecting focus change events more reliably
  • Switch focus back to the editor when appropriate
  • New commands: note.attachment.embed, note.attachment.link
  • note.attachment.add command: added support for passing attachments paths directly, and to embed or link them directly once imported too
  • Optimized throttling scalability in chokidar, especially when dealing with large number of files
  • Fixed a bug when attempting to detect TLDs in URLs with single-letter subdomains
  • Implemented a rough diff algorithm that’s often absurdly fast
  • Slightly optimized Markdown segmentation
  • Added an incremental Markdown tokenizer
  • Added a “medium” note length threshold at 25kb
  • Implemented an incremental indentation provider for the editor that’s about twice as fast most of the time
  • Disabled the default link detector in Markdown editors
  • Improved Markdown link detection: accounting for IP addresses, localhost URLs, URLs with a port specified and “notable://“ URLs
  • Improved editor link detection: accounting for IP addresses, localhost URLs, URLs with a port specified, URLs with a fragment, URLs with query parameters, special placeholders, and potentially valid URLs contained in actually invalid URLs
  • Implemented a potential fix for those “loading chunk X failed” errors
  • Updated some dependencies
  • Incremental tokenizer: detecting diffs more precisely
  • Incremental tokenizer: added support for using a custom env object
  • Caching DOM nodes that didn’t change when rendering arbitrary HTML
  • Caching DOM nodes that didn’t change more aggressively when rendering arbitrary HTML
  • Implemented an incremental Markdown tokens renderer
  • Tokenizing and rendering regular Markdown documents incrementally
  • Incremental tokenizer: handling many edge cases that caused the wrong tokens to be returned
  • Incremental tokenizer: bailing out of it when environment data might be in use
  • <markdown> tag: ensuring heading IDs used in parent scopes are taken into account
  • <markdown> tag: ensuring its usage doesn’t make the app bail out from incremental tokenization and rendering of the top-level document
  • Slugifier: properly accounting for <markdown> tags, resetting the cache at the right time
  • <markdown> tag: using a references cache that’s shared between all rendering scopes of the document
  • <markdown> tag: ensuring it is detected properly when using inline and at the start of a line
  • <markdown> tag: ensuring empty tags are handled properly
  • HTML component: avoiding making DOM elements for useless empty paragraphs
  • Significantly improved the reliability of line mappings under many complex scenarios
  • Outputting accurate line mapping in many additional cases
  • Ensuring commands executed in a macro are executed in the right order and don’t overlap with each other
  • HTML component: avoiding making new DOM elements when only their line mapping changed
  • New command: sleep
  • Minor changes
  • Pasting the selected emoji or language picked from its respective palette to the editor only if the editor is already visible
  • Updated KaTeX assets, ensuring expressiona re rendered correctly
  • Added a potential workaround for the issue that causes weird characters to be printed to PDF under macOS Catalina
  • Ensuring sidebar tags are proparly sorted
  • Updated shortcuts font, using monospaced digits
  • Partial tokenizer: handling a couple of other edge cases
  • Ensuring the button for opening mermaid or PlantUML diagrams in the browser are rendered
  • Replaced react-window with react-virtuoso
  • Updated some dependencies
  • Simplified some types used alongside React
  • New React hook: useStateRef
  • Ensuring spacers can’t be shrunk in size
  • New React hook: useOverflowObserver
  • Overflow observer: added a “tail” strategy
  • Proper handling of overflowing buttons in the mainbar toolbar
  • Menu: improved activation/deactivation states styling, accounting for icons
  • Lowered some minimum-allowed widths
  • Ensuring popovers are positioned reasonably in zen mode when the custom titlebar is being used
  • Providing on-hover toolbar and statusbar in zen mode
  • Added a dedicated button to the toolbar for toggling split mode
  • New React hook: useUpdatingRef
  • Overflow observer: reacting to dynamic changes in the DOM too
  • New React component: Noop
  • Overflow observer: improved detection of dynamic changes
  • Overflow observer: accounting for padding in the parent
  • Overflow observer: implemented an “ends” strategy
  • Implemented a, currently disabled, statusbar overflower
  • Fetch: ensuring the response gets parsed only for 2xx HTTP codes
  • Editor: ensuring long lines always have a bit of padding to the right when word wrapping is disabled
  • Improved heading detection reliability for the first heading in some scenarios
  • Ensuring popovers opened from the overflow menu are positioned reasonably
  • Ensuring the "empty" item in trees are properly marked as the first and last items in the tree
  • Ensuring only one app title is displayed in the custom titlebar at any given time
  • Minor changes
  • Added a "Languages" library
  • Added support for moving logic into web workers easily
  • Added the "un-UN" (Unsupported) language
  • Languages: simplified name of the "Setswana / Tswana" language
  • Added a "Language" library
  • Added a function for string language detection, accounting for the user’s system preferences too
  • Added a "Spell Checker" library
  • New commands: spellChecker.enable, spellChecker.disable, spellChecker.toggle
  • New context key: isSpellCheckerEnabled
  • Added a basic statusbar item for toggling the spell checker
  • New setting: spellChecker.enabled
  • New command: link.releases.experimental
  • Added a "Dictionary" library for fetching and caching language dictionaries
  • Bundling the available English dictionaries with the app
  • Added a simple "format" function
  • Using the new "format" function throughout the codebase
  • New setting: plantuml.endpoint
  • New setting: spellChecker.dictionary.endpoint
  • Minor changes
  • Added support for generating a words frequency list
  • Added a "numbers" sorter
  • Words frequency: ensuring words are sorted, quickly
  • Words: added APIs for showing words frequencies in a quick pick
  • New command: note.words.count
  • New command: note.words.frequency
  • Words statusbar item: opening up the words frequency quick pick on click
  • Added some convenience methods for managing markers in Monaco
  • Implemented a simple "memoize" function
  • Implemented a simple spell checker interface that abstracts over nspell
  • Dictionary: significantly improved retrival performance for unsupported languages
  • Implemented some basic spell-checking primitives
  • New theming colors: colors:warning:*
  • New settings for changing the words in dictionaries: spellChecker.dictionary.include, spellChecker.dictionary.exclude
  • Spell checker: implemented a function for finding incorrect words in a whole string
  • Fixed a few bugs in the generation of some complex emojis
  • Defined a regex for matching raw emojis
  • Natural sorting: accounting for all present emojis when sorting
  • Wrapping generated emojis in a custom HTML element, fixing a few rendering bugs on macOS
  • Markdown: added a, currently disable, plugin for wrapping raw emojis in the custom HTML element too
  • Improved words detection, especially in languages with non-latin alphabets
  • Language inferring: added support for picking the inferred language only within a set of probable languages
  • Editor markers: added support for quickly checking if an editor has any markers
  • Editor markers: added support for retrieving markers with updated ranges due to edits
  • Spell checker: added support for detecting incorrect words up to a limit
  • Added support for spell-checking note editors
  • Editor spell checker: refreshing on mount/blur/change
  • Editor spell checking: fixed a bug causing 0-length markers to not get cleaned up
  • Editor spell checking: ensuring the editor to spell check didn’t get unmounted whi...
Read more

v1.9.0-alpha.19

29 Jul 00:33
e1b0cb9
Compare
Choose a tag to compare
  • Avoiding hashing notes before rendering them
  • Avoiding setting the window title again if it didn’t actually change
  • Improved links detection in some cases by ~20x
  • Ensuring the shortcuts screencaster is not rendered below the statusbar
  • Shortcuts screencasting: ensuring modifiers-only shortcuts are screencasted too
  • Ensuring the shortcuts screencaster adds essentially 0 overhead when disabled
  • Improved editor link detection, accounting for emails, less-popular schemes, third-level+ domains and TLD validity
  • useNoteDirtyContent: using the note’s model directly rather than the editor object
  • Updated some dependencies
  • Doing roughly half the amount of work when the focused element changes
  • Switching focus to editors more efficiently
  • Ensuring calling editor commands through the main commands system adds almost always essentially 0 overhead
  • Improved Markdown syntax highlighing: fenced code blocks are detected more reliably, the maximum heading level is taken into account, the actual urls inside links are not colored anymore, strikethrough’d texts are styled properly whenever possible
  • Ensuring embedded languages are syntax highlighted properly while supported languages are still lazy-loaded
  • Ensuring strikethtough text is styled in previews like in editors
  • Updated some syntax highlighting tokens’ colors
  • Ensuring inline HTML inside headings is properly syntax highlighted
  • Improved Markdonw syntax highlighting performance by ~40% in most cases
  • Ensuring editors’ dimensions are recalculated if the tabbar becomes visible or hidden
  • Editor link detection: ensuring only non-overlapping links are provided
  • Editor link detection: accounting for URL paths, special “@“ urls, special “notable://“ urls and urls inside code blocks
  • Made Markdown normalization ~30% faster, and because of a V8 bug some times actually even ~95% faster
  • Optimized HTML snippet text extraction, in some cases by 66%, avoiding touching the DOM entirely
  • Refactored some code related to Markdown compilation and tokenization
  • Optimized rendering of Markdown strings without any special characters
  • Optimized table of content generation, in some cases headings rendering is skipped entirely
  • Notes larger than 100kb are now considered “large”, this threshold will trigger various optimizations throughout the app
  • Editor: skipping link detection for large notes
  • Editor: providing only indentation-aware folding regions for large notes
  • Optimized Markdown tokenizer to only provide block-level tokens to the various functions that need them, speeding things up by ~70%
  • Optimized Markdown normalization by another ~50% in many cases
  • Editor: added support for folding tables too
  • Markdown tokenizer: filtering out unuseful tokens
  • Added support for segmentating notes into top-level blocks, without doing any inline parsing, any HTML generation and any DOM elements generation
  • Implemented a more optimized indentation-based folding regions provider that takes 50~75% less time
  • New React hook: useEventTrigger
  • Split editor: fixed an issue that caused the resizable layout to update unnecessarily
  • Rendering large notes with a segmentation-based approach, that’s 10x faster than before
  • Updated some dependencies
  • Minor changes
  • Ensuring mermeid diagrams with inline HTML are rendered properly
  • Schema: added the “any” type
  • Shortcuts schema: ensuring no provided item in “args” is filtered out
  • Removed “Move to Applications folder” dialog as an experiment (macOS)
  • New commands: editor.pasteAsImage, editor.pasteAsText
  • Mapped CmdOrCtrl+Shift+V to editor.pasteAsText
  • Ensuring a notification is displayed when attempting to edit a read-only editor
  • Updating editors options slightly more efficiently
  • Minor changes

v1.9.0-alpha.18

23 Jul 00:56
e1b0cb9
Compare
Choose a tag to compare
  • Ensuring inline code in headings has a sensible padding applied to it
  • New command: attachment.delete
  • Added a “Delete” context menu item for attachments
  • New command: editor.focus
  • Ensuring jumping to a line in the editor via CmdOrCtrl+DoubleClick something in previews works
  • Ensuring data directory titles use a consistent forward slash across all platforms
  • Added a (currently empty) “Settings” help page
  • Added links to the respective help pages to the Settings and Shortcuts editors
  • Renamed “Unmaximize” to “Restore” (Linux & Windows)
  • Reversed order of window title sections
  • Removed the “data directory” section from windows titles for now
  • Mentioning “CSS/JS” rather than “code” in titles and descriptions of commands related to the custom code editor
  • Added a “useSetting” React hook
  • Added support for autosaving note editors with a given interval
  • New settings: editor.autosave.enabled, editor.autosave.interval
  • Ensuring a minimum autosave interval of 5000 milliseconds is used
  • Added a “Modernizr” library
  • Ensuring notifications don’t overlap with the statusbar
  • Ensuring nothing is rendered over the titlebar
  • Ensuring dialogs, quick picks and quick modals don’t overlap with the titlebar and the statusbar
  • Ensuring nothing is rendered over the statusbar
  • Ensuring fullscreen modals don’t overlap with the titlebar and the statusbar
  • More reliably enforcing that anything that is not meant to overlap with the titlebar and the statusbar doesn’t do it
  • Enforcing a slightly better maximum height for non-fullscreen modals
  • Ensuring the maximum height of windowed lists is calculated correctly accounting for the titlebar and the statusbar
  • Displaying a maximum of 9 items at once in quick picks
  • Ensuring “Notable” is displayed in the custom titlebar whenever there is enough space for it
  • Removed useless titlebar semaphore spacer
  • Ensuring the zoom level has no impact on context menus
  • Ensuring the current zoom level is accounted for when calculating the height of the tags list
  • New React hook: useActiveEditor
  • New React hook: useEditorSelections
  • New React hook: useActiveEditorSelections
  • Refreshing the “Cursors” statusbar item much more efficiently and quickly
  • Ensurin the word counter supports CJK languages
  • Added a standalone “Words” lib
  • New context keys: hasModal, hasFullscreenModal
  • New React hook: useNoteDirtyContent
  • Reimplemented the statusbar words counter in a much more efficient way, while also refreshing it more promptly, and displaying it only when a note is visible
  • Ensuring the process explorer gets updated at most once per second
  • Using monospace numbers throughout the statusbar, greatly reducing the amount of pixels updated in many cases
  • New React hook: useActivePreview
  • Slightly optimized heading-related functions for previews
  • New React hook: usePreviewHeading
  • Reimplemented the current heading statusbar item in a much more efficient way, while also refreshing it more promptly, and displaying it only when needed
  • New React component: “PreviewChildren”
  • Ensuring all components using the “preview” class use it via one of the “Preview*” components
  • Added a few utilities
  • Ensuring the app reloads automatically rather than getting stuck some times during development
  • Caching the most recent 100 katex expressions, improving subsequent renders by ~40%
  • Caching the most recent 100 asciimath expressions, improving subsequent renders by ~75%
  • Caching the most recent 100 plantuml expressions, improving subsequent renders by ~50%
  • Caching the most recent 100 syntax highlighting blocks, improving subsequent renders by ~65%
  • Mermaid: implemented a workaround that ~fixes the issue where some texts would end up truncated
  • Caching the most recent 100 mermaid diagrams, improving subsequent renders by ~98%
  • Rendering mermaid diagrams as plain images
  • Applying string replacements in a much more memory efficient way, improving Markdown compilation performance throughout the app, for some patologically-affected notes even by ~90%
  • Rendering emojis is now up to 30x faster
  • Ensuring the words counter returns sub-millisecond results for documents of any length
  • Using a much stricter regex for matching IPv4 addresses
  • Added a new “windowed” rendering mode for notes, which is now enabled by default for larger notes
  • Added a “bmkize” function
  • Displaying a more human-friendly words count as soon as it goes over 1000
  • Updating both the editor and the preview when navigation to a note’s heading
  • Added support for passing a custom revealType and scrollType to the "editor.go.line" command
  • Revealing the target line at the top when navigating to an heading in the editor, for better alignment with the potential preview on the side
  • Implemented a custom schema validation and filtration library
  • Replaced “ajv” with the custom validator
  • Fixed an issue that caused Mermaid to fail to output valid diagrams
  • Updated some dependencies
  • Ensuring tags are rendered more visibly in the multi-note editor
  • Minor changes