Releases: notable/notable-insiders
Releases · notable/notable-insiders
v1.9.0-beta.9
Bug Fixes
- HTML Sanitizer: fixed a bug that prevented scroll synchronization from working
v1.9.0-beta.8
Version 1.9.0-beta.8
New Features
- New setting: note.autorename.enabled, for turning off automatic renames of notes
- Treating
*.qmd
files as Markdown files - Markdown: added support for syntax highlighting core blocks written in R's flavor of Markdown
Improvements
- Updated Electron to v18.0.3
- Zen mode: added a 500ms delay before flyover sections are opened
- Mermaid: inverting colors with dark themes, as a probably better default
- Improved smoothness during window resizes
Bug Fixes
- Security: ensuring Electron's "webSecurity" option is active, though CORS is still fully disabled
- Security: ensuring executable files are not opened when clicking on a link
- Layout: fixed an issue that caused it to stop working whenever the columns it handled changed
- Ensuring the sidebar and the panel can never be scrolled horizontally
- HTML Sanitizer: ensuring it doesn't break vertical alignment of text inside SVGs
- Pikchr: ensuring the standard "sans-serif" font family is used
- Table of contents: ensuring it's not rendered if it's inside an heading, as that would cause an infinite loop
- Global search: fixed an issue that caused an updated note to disappear from the list of results if the query was empty
v1.9.0-beta.7
New Features
- Added support for marking a note as the "homepage" note, the homepage note is automatically opened at startup if there are no other notes opened
- New commands: homepage.open, homepage.remove, homepage.set
- Tab: added an house emoji suffix to the homepage note, and using that as the favicon when pinned
- Using Twitter's emoji set throughout the app on all platforms
Improvements
- Updated Electron to v17.1.2
- Tags hierarchy: creating it about 100x faster, and updating it much more quickly too
- Updating shortcuts hints more efficiently, avoiding internally checking for updates when they couldn't possibly have changed
Bug Fixes
- Search engine: ensuring fuzzy search doesn't backtrack catastrophically in cases where a match won't be found anyway
- Search engine: fuzzy searching at maximum 6 different possible permutations of the current query, or the combinations might explode in some cases
- Ensuring the emoji font is used also when a custom font family for the editor is used
- Autocomplete: ensuring the in-editor one is positioned consistently across platforms
- Shell: moving files to the trash from the main process, otherwise this fails under Windows
- Ensuring files are at deleted if moving them to the computer trash fails
- Tags: ensuring they are sorted like paths, but while ignoring things that look like extensions
- JSON with comments parsing: fixed an issue where the parser would backtrack catastrophically on invalid strings
- Resizable layout: fixed a couple of issues that made restoring the previous state of the layout slow
- Ensuring checkboxes in lists are rendered at a fixed size
- Ensuring the scroll wheel is disabled, so middle clicks actually work (Windows)
v1.9.0-beta.6
New Features
- New context keys: isPanelLeft, isPanelRight
- Exposed some context keys as attributes on
<html>
- New theming colors:
editor:gutter:foregroundActive
- New command: editor.selection.strings, for selecting arbitrary strings in the editor
- Added support for rendering an audio player when trying to render audio attachments
- Added support for rendering a video player when trying to render video attachments
- New setting: view.mode.classic.tagsActiveLogicFunction, for setting the logic function used when merging the sets of notes corresponding to the active tags in classic mode
- New commands: editor.formatting.custom.remove, editor.formatting.custom.toggle
- Updated command: editor.insert.timestamp -> added more date formatting placeholders: [K], [MMMM], [MMM], [M], [DDDD], [DDD], [D], [H], [hh], [h], [m], [s], [tt], [t]
- Updated command: editor.insert.timestamp -> added support for a second argument, if "true" the date is formatted in UTC time
- New command: editor.insert.timestamp.iso8601
- New command: search.results.toggleCollapse
- New command: editor.insert.nbsp, for inserting a non-breakable space
- New command: editor.inser.zwj, for inserting a zero-width joiner, basically an invisible space
- New search filter:
heading:*
, it searches only into headings inside notes - New search filter:
task:*
, it searches only into tasks inside notes - Global search: added a button for explicitly using "string" parsing mode, a simplified mode that considers the whole query a string to match exactly
- Global search: rendering toggleable tasks when explicitly searching for tasks with the
task:*
filter - New setting: editor.tab.insertSpaces, for configuring whether pressing the tab key should insert a tab or spaces, it's set to false by default, meaning from now on the app will insert tabs rather than spaces by default
- New setting: editor.tab.size, for configuring the visual width of a tab
- New commands: editor.setting.tab.insertSpaces, editor.setting.tab.insertTab
- New commands: editor.indentation.spaces, editor.indentation.tabs, for converting indentations in the current editor to spaces/tabs quickly
- New setting: editor.font.size
- New setting: editor.font.family
- New setting: editor.font.ligatures
- New setting: preview.font.size
- Markdown: added support for highlighting text by wrapping it in "==" markers
- New commands: editor.formatting.mark.add, editor.formatting.mark.remove, editor.formatting.mark.toggle
- Editor context menu: added a "Toggle Mark" item
- New command: editor.whitespace.trimTrailing
Improvements
- Upgraded Electron to v17
- Search engine: improved replacement string generation when the replacement string contains whitespace characters but the source string doesn't
- Ensuring
zotero://
urls work within the app - Updated setting: editor.autosave.interval -> increased to 5 minutes
- Classic mode: automatically tagging new notes with the currently active tags
- Classic mode: using Cmd/Ctrl+Click rather than Shift+Click for toggling tags
- Classic mode: when multiple tags are active now only notes present in all of them are searched into (basically switching from an OR to an AND)
- Icon: updated to be more aligned with system conventions (macOS)
- Scroll synchronization: ensuring almost no work is done while scrolling either the editor or the preview outside of split mode
- Scroll synchronization: reduced the maximum amount of time needed to find a target element in preview by up to 20 times
- Optimized heading detection, from a O(n) operation to a O(log n) one
- Optimized heading detection, now it's almost always about twice as fast as before even after the note has been edited
- Optimized heading detection, now about 90% faster in some cases if no carriage return character is present in the note
Bug Fixes
- Focus mode: ensuring the panel gets hidden too
- Editor search: ensuring replacement previews are only rendered when the replacement bar is open
- Search engine: ensuring escape sequences in strings in queries are parsed
- Editor search: ensuring special characters are escaped in selections before using them as search queries
- Preview search: ensuring special characters are escaped in selections before using them as search queries (even though the browser seems to eat them anyway)
- Global search: ensuring special characters are escaped in selections before using them as search queries
- HTML sanitizer: ensuring SVG and MathML elements are sanitized like HTML elements
- Ensuring many popular file extensions can be converted to mime types
- Search engine: ensuring separator characters can be used in queries and matched in target strings
- Ensuring nothing happens when requesting the search view to be visible if it's rendered in the panel already
- Ensuring headings positions are always updated when performing heading detection
- Scroll synchronization: ensuring it works while dragging the scrollbar thumb too
v1.9.0-beta.5
- New view: information, listing information about the current note
- New command: view.information
- New context key: isViewInformation
- New ui section: Panel, it's a secondary sidebar that can be toggled at will, positioned to the right/bottom/left of the mainbar, and any view that doesn't contribute custom content for the mainbar can be moved into it
- New statusbar item: panel, clicking it toggles the panel
- New theming colors:
panel:background
,panel:foreground
- New context keys: panel, isPanelCWD, isPanelExplorer, isPanelInformation, isPanelSearch, hasPanel
- New commands: panel.cwd, panel.explorer, panel.information, panel.search, view.panel.set, view.panel.enable, view.panel.disable, view.panel.toggle, view.panel.side.left, view.panel.side.right, view.panel.side.bottom, view.panel.side.set
- New palette: panel, for switching to another suitable view in the panel
- New settings: view.panel.enabled, view.panel.side
- New context menu: panel, it can be triggered by right-clicking the panel statusbar item
- Global view menu: added items for toggling the panel and switching view in the panel
- New shortcuts: Ctrl+`, Ctrl/Cmd+Alt+P, Ctrl/Cmd+K Ctrl/Cmd+P -> they all toggle the panel
- New draggable source: view, it can be triggered by dragging any viewbar button in the viewbar
- New droppable target: view, dropping supported draggable sources into view buttons in the viewbar will trigger this
- New droppable target: panel, dropping supported draggable sources into the panel will trigger this
- Window: accounting for the panel when calculating the minimum allowed width
- Drag&Drop: added support for dropping a view over the panel to move it there, only views that don't contribute content for the mainbar can be moved to the panel
- Semaphore spacer: accounting for the panel
- New view mode: Classic, if the panel is visible, search view is in the panel, and the panel is on the left side then classic mode is active. If classic mode is active the explorer and search view work in a way that's similar to how the app worked with the old layout.
- New context key: isClassicMode
- New commands: view.mode.classic.enable, view.mode.classic.disable, view.mode.classic.toggle
- Gloval view menu: added an item for classic mode
- Scheme urls: ensuring arguments used in
notable://command
urls are detected properly - Lookup: fixed an important issue with range detection
- URL: ensuring empty strings are not detected as relative urls
- Editor: ensuring the minimap has a transparent background with the built-in themes
- Search engine: increased willingness to match consecutive characters at the beginning of a word
- Search engine: improved ranking for fuzzy matched results, taking into account the ratio of matched vs unmatched characters
- Updated command: view.preferences -> opening the settings section too, other than switching to the preferences view
- Themes: updated background color of the window close button to match the one used in Windows 11 (Windows)
- Updated window control icons to much more closely resemble the ones used in Windows 11 (Windows)
- Menubar: increased buttons weight to match more closely the design of Windows 11 (Windows)
- Viewbar: added a special button for opening the app's menu (Linux)
- Deleted the native menubar under Linux, use the special viewbar button for opening the menu or use the command palette, which would be quicker (Linux)
- Updated shortcut: Ctrl/Cmd+D -> selecting the next range matching the current selection only when there's at least one selection, so that the same shortcut can be used for favoriting/unfavoring too
- Drag & Drop: ensuring the drag proxy looks acceptably under Linux
- Panel: ensuring it's opened automatically at startup only when needed
- Search: ensuring it's considered open if moved to the panel and the panel is visible
- Fixed a concurrency issues that in some edge cases caused all files to be moved to the trash (at least during development, I can't reproduce the issue otherwise)
- Global search: ensuring the focus is not moved out of the search bar when navigating search results while the search bar is in focus
- Global search: ensuring that clicking on a result sets it as the currently selected result too
- Sidebar trees: scrolling to the item to reveal more naturally, minimizing unnecessary layout shifts
- Multi-note editor: ensuring tags are inserted in the tagbox automatically on blur
- Preview: disabled automatically scrolling headings to the top when clicked, as it was more annoying than useful
- Theme: ensuring empty viewlets look like the mainbar when it's empty
- New information view viewlets: table of contents, tags, attachments, created, modified
- Graph: added support for generating a graph that's local to a particular note
- New information view viewlet: local graph, disabled at the moment as it's more annoying than useful
- Table of contents viewlet: ensuring the same structure rendered in notes is displayed, without unnecessary indentations
- Table of contents viewlet: removed layout shifts
- Sidebar: increased maximum allowed width by ~60%
- Editor: ensuring that older states, once commited to memory, don't get interpreted as new states
- Note: ensuring a more accurate modification date is saved, and that the new content is set as soon as possible
- Database: reliably ignoring updates from the filesystem for a note if a more up-to-date version of that note is currently present in the app
- Table of contents: ensuring id collisions are resolved taking the order of headings into account
- Table of contents viewlet: ensuring the current heading is inferred properly in preview
- New search filter:
notebook:*
, it searches into the notebook tags assigned to each note - New search filter:
template:*
, it searches into the template tags assigned to each note - Updated command: tab.new, added a second argument that controls whether a new tab is always opened or not
- Updated command: note.openTab, added a second argument that controls whether a new tab is always opened or not
- Markdown grammar: added support for syntax highlighting the front matter section as YAML
- Updated some dependencies
- In-editor search: rendering a preview of replacements inline
- In-editor search: ensuring decorations are updated when the case-preserve flag is toggled
- Classic mode: rendering only tags in the explorer view's sidebar
- Classic mode: disabled searching into tags by double clicking on them
- Ensuring double-clicking on a tag's chevron in the sidebar doesn't trigger a search for that tag
- Classic mode: ensuring only tags with children tags have a chevron in the explorer's sidebar
- Tags: added back "active" tags, which do something only in classic mode
- Classic mode: clicking a tag in the sidebar makes it the currently active one, shift+clicking a tag toggles it from the set of active tags
- Classic mode: ensuring active tags are rendered as such in the explorer's sidebar
- Global search: in classic mode the set of notes searched into is equal to all the notes inside the currently active tags
- New commands: tag.toggleActive, tag.go.first, tag.go.last, tag.go.next, tag.go.previous, tag.go.index
- New shortcuts: F5/Shift+F5 -> select the next/previous tag as active in the sidebar
- Ensuring tag's chevrons are always visible outside of classic mode in the explorer's sidebar
- New commands: notes.selection.search.results.add, notes.selection.search.results.remove
- Drag & drop: added support for dragging the search view button into the multi-note editor button to add the found notes in the multi-note editor (Shift+Drop to remove them)
- Multi-note editor: showing its viewbar button even if empty, while dragging a view
- Preview: ensuring the fallback renderer provides a search bar too
- HTML Sanitizer: ensuring the fast sanitizer is used if it's available and suitable
- Table of contents viewlet: ensuring the heading component is the same as long as headings don't change
- Table of contents: caching inferred heading
v1.9.0-beta.4
- Multi-note editor: ensuring the set of selected notes is updated properly for example when notes are deleted
- New command: note.revealInSidebar
- New command: tags.expandOnlyParents
- Syntax highlighting: added support for 945 common extension names as aliases for grammars, it's not recommended to use these because different grammars may say they use the same extensions
- New search filter:
path:*
, it searches into the file path of each note - New search filter:
file:*
, it searches into the file name of each note - Help menu: reorganized links to help pages into submenus
- Window: reduced the minimun allowed width outside of zen mode by ~100px
- New theme colors:
color:success:background
,color:success:backgroundHover
,color:success:backgroundActive
,color:success:border
,color:success:foreground
- Global search: added an inline preview of what matches will be replaced with
- Preview search: scrolling the current match into view automatically
- Preview search: opening closed
<details>
elements automatically if the current match is inside them - Tab: switching to the existing tab for the chosen note instead of creating a new one, unless a new tab is explicitly requested
- Editor search: ensuring decorations are updated immediately and always as soon as the search bar is opened
- Palette: ensuring recent items picked again are properly ranked up at the top next time
- New settings scope: "window", this exists only while there are multiple windows open, it takes precedence over every other scope, and it's pre-populated with setting regarding the interface, the idea is that multiple windows can now look different at the same time
- Settings: triggering a sync write when closing/reloading/opening a window
- Search engine: always setting multi-line matching when searching with regexes, as that's more useful
- Window: ensuring in-memory settings are saved before opening a new window, so that they are picked up by the new window
- Removed shortcut: double-click for jumping from the preview to the editor, use Cmd/Ctrl+Click
- New setting: search.results.collapsed, if "true" global search results start collapsed rather than expanded
- Titlebar: increased width of window control buttons to match the width of the native buttons in Explorer in Windows 11 (Windows)
- Viewbar: minor changes to the css
- Markdown grammar: added basic support for the frontmatter section, although disabled as it can't quite be implemented perfectly apparently
- Markdown compiler: added basic frontmatter detection
- Added a basic standalone file editor: textual files and attachments can now be edited via the "Edit" context menu item in their context menus
- Updated command: note.revealInSidebar, ensuring if a note is in a special section like "Favorites" it's still revealed properly
- New commands: search.results.copy, search.results.copyLinks, search.results.copyMarkdownLinks, search.results.copyPaths
- Zen mode: added a button to the toolbar of the default mainbar for switching to other tabs
- Zen mode: retractable UI elements now have a consisent 15px area used for opening them, they are animated, and the viewbar+sidebar can be shown on the left too
- Zen mode: ensuring the titlebar is taken into account when positioning retractable sections
- Zen mode: fixed a Windows-only bug that made the viewbar+sidebar section close automatically
- Semaphore: avoiding repositioning it depending on the state of the app (macOS)
- New command: note.metadata.log, for quickly inspecting a specific metadata field for the current note via a shortcut
- Tab: ensuring all non-note tabs are rendered as persistent tabs
- Shortcuts: ensuring unbinding shortcuts (prefixed with "-") work
- Shortcuts value autocomplete provider: fixed a major performance issue
- Search engine: fixed a major performance regression when matching fuzzily in some edge cases
- Treating
*.rmd
files as Markdown files - Tab context menu: hiding the Persistent/Unpersistent menu item for pinned tabs
- Settings: fixed a pretty important internal synchronization bug between in-memory settings and on-disk settings
- Updated shortcut: Ctrl/Cmd+Alt+Click -> DoubleClick, on a tag in the sidebar to search into it
- Commands: every command is now marked as either secure or insecure
- Scheme: automatically considering
notable://
urls that trigger a secure command as secure themselves
v1.9.0-beta.3
- Lookup: ensuring range detection works properly
- Updated commands: customCode.editor.open, settings.editor.open, shortcuts.editor.open, ensuring they are visible in the command palette if we are outside of the preferences view
- Search engine: ranking acronyms matched fuzzily higher
- New shortcuts: Enter/Shift+Enter, for going back and forth search results while the search bar is in focus
- Updated shortcuts: ensuring Home/End in the global search bar work for moving the cursor in the input
- New shortcut: Cmd+Shift+H, open the search view with the replace bar visible (macOS)
- Edit context menu: added "Replace" and "Replace All" items
- Quick pick: ensuring shortcuts hints are still rendered if the proper shortcuts for them are configured
- Search engine: ranking partial intial word matches higher when searching fuzzily
- Search engine: increased willingness to match consecutive characters when fuzzy matching
- New nanodash method: permutate
- Search engine: added support for finding matches fuzzily for multiple words even if the words are found in a different order in the target string
- Changelog: ensuring it's automatically opened at most once
- Changelog: ensuring it's automatically opened on upgrades more reliably
- Context menu: ensuring internal id prefixes are stripped out before retrieving the actual id of something
- New shortcut: F12 -> toggle zen mode
- Added back Focus mode, with context keys, commands, context menu items etc.
- Updated shortcuts: F12 -> toggle focus mode, Shift+F12 -> toggle zen mode
- Request feature: ensuring it always works, without relying on the available github issue templates
- Theme palette: showing each theme's description too, if available
- New nanodash method: each
- New nanodash methods: eachEntries, eachKeys, eachValues
- New commands: search.results.collapse, search.results.expand
- Editor context menu: added a sub-menu about split mode
- Note preview context menu: added a sub-menu about split mode
- New context menu: split mode, opened when right-clicking the split mode button in the toolbar
- Multi-note editor: ensuring the "remove note from selection" button works
- Linter: reorganized for future maintenability
- Updated setting: markdown.tables.autoformat.interval, 500 -> 1000
- Editor context menu: added an item for toggling table autoformatting
- New shortcut: Ctrl/Cmd+Click on a preview to just to the corresponding line in the editor
- Updated commands: search.results.collapse, search.results.expand, ensuring they are only visible in the command palette in the search view
- New search filters:
is:archived
,is:deleted
,is:trashed
,is:favorited
,is:pinned
,is:tagged
,is:untagged
- New search filter:
is:template
- New search filter:
is:notebooked
- Search engine: ensuring templates are included when explicitly filtering by a template tag
- New command: tag.search, for searching into a specific tag
- Tag context menu: added a "Search Notes" item
- New shortcut: Cmd/Ctrl+Alt+Click on a sidebar tag starts a search inside that tag
- Global search: refreshing results immediately when opening the view
- Global search: opening with a query more reliably
- Quick pick: ensuring Home/End shortcuts are used for moving the cursor in the input rather than browsing the results
- Autocomplete: ensuring Home/End shortcuts are used for moving the cursor in the editor rather than browsing the results
- Explorer: added a tooltip to the icon that marks notes as selected in the multi-note editor
- Ensuring pasting inside editor and preview search bars works
- New context keys: hasEditorSearchQuery, hasPreviewSearchQuery
- Toolbar: added back favorite/unfavorite and pin/unpin buttons, as they serve also as visual indicators for favorite/pin status
- Viewbar: ensuring it has proper top padding (Windows) (Linux)
- Scripts: added start scripts for linux and windows
- New context menu: viewbar, useful to hiding the viewbar, it should improve the discoverability of this feature
- New context key: isTabPinned
- Added back "peristent" tab: basically everything works the same, but if you double-click the note or the tab then the tab becomes persistent, meaning other notes will be opened in a new tab rather than on the persistent tab. Pinned tabs are treated as persistent too
- Tab: checking the current tab first when inferring a tab by the note
- Updated: temporarily silenced error about Squirrel, until a proper fix is found
v1.9.0-beta.2
Overview
- The layout changed significantly:
- The app is now organized into "views", and it has a "viewbar" for switching between them.
- The app is now divided into 3 main sections, from left to right: viewbar, sidebar and mainbar.
- The middlebar got deleted, the search section of the app got moved to its own view.
- Most things that were previously implemented as modal windows got moved to their own views: graph, changelogs, help pages, settings, custom CSS/JS editor etc.
- The main benefits of this new layout are: space is used more efficiently, it can work nicely on mobile, and in the future extensions could be written to implement new views or new sections for the various sidebars, which would be really powerful.
- Search has been completely rewritten:
- In-editor search is now supported, for every editor the app provides, with many VS Code-like features supported out of the box.
- In-preview search is implemented too, for things like help pages and changelogs too, but it can only search into contiguous characters having the same formatting style, for now.
- Global search is crazy powerful now, a full-blown query language is supported, which is documented in the search help page.
- As a quick summary the query language supports things like: regular expressions, boolean expressions, grouping, filters, searching into any metadata field etc.
- As a bare minimum every search field the app provides now supports regular expressions, which on its own makes them already super powerful.
- Palettes and autocomplete providers are also searched into, highlighted and ranked smartly using the new search engine.
- Tabs received many important improvements:
- They are always visible, even if you have a single one open.
- Tabs have a history, and back/forward buttons have been added to the toolbar for browsing it.
- Links now work similarly to how they work in a browser, if you left-click something it will be opened in the same tab, if you middle-click something it will be opened in a new tab.
- Tabs can be restored after being closed with a
Cmd/Ctrl+Shift+T
. - Tabs can be pinned, either from the context menu or the command palette.
- Proper inline autocomplete is implemented:
- The following things can be autocompleted while editing notes: emojis, footnote links, syntax highlighting grammars, katex functions, reference links, scheme links, regular links, reference links, quick links, and spelling mistakes.
- The following things can be autocompleted while editing settings and shortcuts: properties, values.
- There's also an autocomplete provider for tags inputs.
- The new syntax highlighter is IDE-level:
- Every language that GitHub can syntax highlight the app can now syntax highlight too, that's hundreds of them.
- Every language is syntax highlighted using an advanced TextMate grammar, which is what every proper editor uses.
- Pikchr and AsciiMath can be syntax highlighted too, no other app can do this, custom grammars have been written to support them too.
- The new graph is completely custom:
- It lives in its own view and it's therefor much more immersive.
- When the graph is animating or being interacted with it's ~50% faster compared to the old one.
- When the graph is not animating nor being interacted with it's exactly 100% faster compared to the old one.
- A pagerank algorithm is being run over the whole graph, so the visual size of each node gives you a hint regarding its importance in the network.
- The graph can be downloaded in PNG or SVG.
- The 3D graph got temporarily deleted, it will eventually be reimplemented with reasonable performance characteristics.
- The new spell checker is completely custom:
- It has some seemingly impossible performance characteristics, the following numbers work out for all supported languages, even those that previously required 10s+ to be ready and 100MB+ of memory.
- Startup time decreased by ~100%, because dictionaries are parsed at build-time.
- Memory usage decreased for ~95%.
- Word look-up time decreased by ~95%.
- The quality of the provided suggestions is slightly higher too!
- The new scrollbars are completely custom:
- They are used consistently throughout the app.
- They are slim and modern-looking, this makes a big difference especially under Windows.
- They are visible only when a scrollable section is being hovered or scrolled.
- Everything can now be scrolled at 5x the speed by pressing
Alt
while scrolling.
- The multi-note editor now lives in its own view:
- You can now interact with it without losing the ability to interact with notes while it's open.
- You can add notes to it just by dragging them to the viewbar button for the multi-node editor view, which will be always displayed while dragging potential targets for it.
- This release ships with many many many performance improvements, the app should be noticeably faster, and even if it was already plenty fast for you before now it will at least require less battery power.
- This release supports opening multiple windows of the app, and switching between them, right from within the app.
- Universal builds for macOS are now available, they run natively on Intel and Apple Silicon.
- Universal builds for Windows are now available, they run natively on IA32, X64 and ARM64.
- Electron is updated from v11 to v16.
New Features
- Rewritten themes: brighter dark theme, made themes more contrasty, refined and easier to tweak
- Notes are always sanitized, as an important defense layer against malicious notes containing XSS exploits
- Creating a new note automatically when clicking on a link to a non-existing note
- Preferences editors: matching their contents against schemas, so that errors are highlighted in the editors themselves
- Palette: remembering the last 5 picked items in the "command" and "emoji" palettes
- Added support for toggling the sidebar by clicking on the currently active viewbar button
- Added support for creating a new note from the quick pick opened by clicking the plus button in the tabbar
- Scheme URLs: added a confirmation dialog inside the app for potentially dangerous URLs, for extra safety
- Split mode: added support for changing the split direction with an
Alt+Click
on the icon, or from the command palette - Palette: added an "Open an external folder..." dynamic item, for convenience, especially for new users
- Data directory context menu: added a "Open in New Window" item
- Editor: added support for rendering control characters
- Editor: making headings in the editor bold for better legibility
- Editor context menu: added items for toggling scroll sync/spell checking
- Editor context menu: added items for inserting special things like a Table of Contents
- Emoji: updated database
- Markdown: added support for automatically formatting tables when they are edited (after some delay)
- Markdown: ensuring ordered lists indented with 2 spaces work as expected
- Markdown: inserting a matching closing quotation mark automatically when writing one
- Heading palette: added support for help pages and changelogs too
- Heading statusbar item: added support for both edit-mode and split-mode
- Scroll synchronization: added support for the preview -> editor direction
- Scroll synchronization: added support for huge notes rendered using virtualization
- Scroll synchronization: added support for synchronizing previews and editors even outside of split-mode
- Tag context menu: added items for making a child tag or a child note
- Tag context menus: added items for opening all their notes
- Viewbar: making the whole app draggable from non-button/empty areas
- Window context menu: added a "New Window" item
- Window context menu: added a "Switch Window..." item
- Added support for back/forward mouse buttons (although my mouse doesn't work with that for some reason)
- Added support for dropping a tab over the multi-note editor button in the viewbar to add it to the selection
- Added support for dropping shortcuts over note editors to link to them
- Added support for opening multiple notes in a single tab (with history) when dropping them over the tabbar while pressing
Shift
- Added support for rendering Pikchr diagrams
- Using a custom server for telemetry, pinged at
telemetry.notable.app
, rather than a third-party thing. - New context menu: "notes", it can be opened by clicking the button in the viewbar for the multi-note editor
- Debug view: added a telemetry explorer, listing the last 100 telemetry events sent to the server
- Graph: added a forces editor
- Graph view: new toolbar buttons: reheat, restart
- Process explorer view: added new toolbar buttons: devtools, fps, highlights, tracer, reload
- New help page: views
- New command: help.views
- New help page: Custom Code
- New help pages (placeholders for now): Privacy Policy, Terms of Service, Licenses
- Help pages: most pages are fully written now
- Themes help page: added a button for resetting overridden colors
- Help view: added a button to the toolbar that opens the help palette when the sidebar is hidden
- Changelog view: added a button to the toolbar that opens the changelog palette when the sidebar is hidden
- New command: clipboard.set
- New command: contextKey.log
- New command: debug.search.query.explain
- New command: editor.cursor.reveal
- New command: editor.mode.split.order.reversed.toggle
- New command: editor.selection.line
- New command: editor.sort.randomly
- New command: editor.sort.reverse
- New command: editor.transform.kebabcase
- New command: editor.transform.snakecase
- New command: editor.write
- New command: help.customCode
- New command: palette.history
- New command: tab.history.reset
- New command: theme.resetColor
- New command: tutorial.import
- New command: window.new, for open...
v1.9.0-beta.10
New Features
- Editor: added a decoration class for each heading, to be used potentially for styling purposes via some custom CSS, the classes are
.decoration-heading-1~6
- New command: editor.line.replace, for replacing the content of the current line with another string
- New palette: template
- New command: palette.template
- Autocomplete: added a "template" autocomplete provider, for inserting templates inside notes super quickly, you can trigger it by writing
/
in an empty line - New shortcuts: Alt+Left -> tab.history.previous, Alt+Right -> tab.history.next (Windows & Linux)
- New statusbar item: centered mode, for toggling centered mode
- New setting: system.gpu.enabled, for disabling GPU accelaration, which causes crashes in some systems (requires restaring the app)
- New command: editor.pasteAsHTML, for pasting the actual raw HTML that may be present in the clipboard into the editor
- New command: editor.pasteAsMarkdown, for pasting the HTML in the clipboard as Markdown in the editor (somewhat rough, report issues 🙏)
- New shortcut: Cmd/Ctrl+Alt+V -> editor.pasteAsMarkdown
- Markdown: added support for wrapping deletions in "--"
- Markdown: added support for wrapping insertions in "++"
- New commands: editor.formatting.deletion.add, editor.formatting.deletion.remove, editor.formatting.deletion.toggle
- New commands: editor.formatting.insertion.add, editor.formatting.insertion.remove, editor.formatting.insertion.toggle
- Editor formatting context menu: added a "Toggle Deletion" item
- Editor formatting context menu: added a "Toggle Insertion" item
- New theme colors:
preview:deletion:background
,preview:deletion:foreground
- New theme colors:
preview:insertion:background
,preview:insertion:foreground
- Markdown: added support for rendering svgbob code blocks
- Markdown: added support for rendering nomnoml code blocks
- Editor: added support for parsing HTML tables in the clipboard as Markdown tables when pasting as Markdown
- Editor: automatically pasting as Markdown if the HTML content of the clipboard contains a table
- New syntax highlighting grammars: Nomnoml, Go modules, Go checksum, Yara, Motoko, Promela, Earthly, ShellCheck, Hanet, Curry, RPGLE, Mint, Glen, Buffer, Clarity, Procfile, systemd(1) config, Hoon, GSC, Witcher Script, Vyper, OpenRA MiniYAML, DenizenScript, Euphoria, Kvlang, Cairo, Monkey C, Win32 Message File, Genero Business Development Language, Berry, Cadence, LigoLANG
- New command: window.move, for programmativally move the current window of the app to the given coordinates
- PDF preview: added "first page" and "last page" navigation buttons
- New setting: note.filename.style, for configuring the style used when generating file names for notes, there are 25 different possible styles to choose from
- Import: added support for importing ".qmd" files
- Import: added support for converting HTML tables to Markdown when importing HTML files
Improvements
- Renamed commands: debugger.fps.open ->debugger.fps.enable, debugger.fps.close -> debugger.fps.disable, debugger.highlights.open -> debugger.highlights.enable, debugger.highlights.close -> debugger.highlights.disable
- Renamed context keys: isDebuggerFPSOpen -> isDebuggerFPSEnabled, isDebuggerHighlightsOpen -> isDebuggerHighlightsEnabled
- Updated command: file.edit, added support for resolving paths relative to the current data directory
- Preview: ensuring code blocks and inline code use the same font as the editor, and the same ligatures
- Tags popover: avoiding listing tags which the current note is already tagged with
- Autocomplete: avoiding opening it automatically when going from a closed state to a state with results but an empty query
- Updater: showing a friendly error message when trying to update the app from ~/Downloads (macOS)
- Editor: automatically wrapping selections when typing "$", "&", "-" or "+"
- Language detection: using the primary system language as the fallback language rather than always "en-US"
- Language detection: asking the OS directly what the primary language is, bypassing some Electron bugs
- Note: refined automatic title generation, ignoring non-headings lines which are too long, and looking only at the first few lines of content
- Fuzzy Search: added a fast path for queries that are exact matches from the start of the target string
Bug Fixes
- Fuzzy search: fixed a bug where the following characters in the query weren't being matched properly:
/._-
- Preferences view: ensuring the previous active section is remembered when switching back to the preferences view
- Preview: ensuring code copied from code block with the copy button doesn't contain any unnecessary leading or trailing newlines
- HTML Sanitizer: ensuring custom elements are handled gracefully
- Markdown: matching deletions, insertions and marks more strictly, avoiding most false positive matches
- Markdown: ensuring R-style code blocks are detected properly by custom plugins
- Preview: ensuring files inside paths containing some special characters can be loaded correctly
v1.9.0-beta.1
- Drag and drop: added support for toggling a tag for a note by dropping the note’s tab into the tag
- Ensuring anchor elements inside divs are styled properly
- Zen mode: avoiding hiding the custom menubar when zen mode is active
- Reduced inline code block padding, ensuring they don’t overlap if spread across multiple lines
- Preview: rendering note-level errors similarly to plugin-level errors
- Preview: ensuring fixed details components can’t be toggled
- Markdown: ensuring empty attributes are handled correctly
- Ensuring split editors in centered mode apply the shadow properly
- Help: rendering pages inside a navigable wrapper
- New commands: help.open, help.close, help.toggle, help.page.first, help.page.last, help.page.previous, help.page.next
- New shortcuts: Ctrl+Home/Ctrl+End -> help.page.first/help.page.last
- New shortcuts: Ctrl+Shift+Tab/Ctrl+Tab -> help.page.previous/help.page.next
- Macro command: added support for passing a single argument as a primitive value
- Help: added a button for selecting another help page
- New palette: changelog
- Changelog: added a button for selecting another changelog
- New command: editor.insert.table
- File palette: added "." as a prefix for it
- Changelog/Help: ensuring disabled navigation buttons are disabled
- New setting: editor.whitespace.render
- New setting: editor.cursor.animated
- Heading links: ensuring they work for content rendered in modals too
- Spell checker: added a "Display Language" context menu item to the statusbar item
- New command: editor.setting.whitespace.toggle
- Mermaid: opening diagrams in browser from a local file, without sending the diagram anywhere
- Changelog/Help: rendering tables at full width
- Doing language detection with a small-ish neural network
- DOM Node: ensuring no text children are emitted for table tags that shouldn’t have them
- Upgraded electron from v9 to v11
- Major memory usage optimizations
- Words: updating the statusbar item much more efficiently
- Ensuring "Notable Technologies LTD" is mentioned as the author/owner
- Highlighter: resetting cache when themes change
- Tagbox: ensuring long tags are handled properly in the multi-note editor
- Multi-note editor: ensuring it’s scrollable if needed
- Tree: ensuring the gutter is rendered properly for all items
- Sidebar tag: preselecting the last segment during inline renames
- Popover tag: preselecting the last segment during inline renames
- Popover attachment: preselecting the file name during inline renames
- New setting: sharing.endpoint
- Ensuring suffixed paths are generated reliably for file names of any length
- Note tab: added a "(Deleted)" suffix to tabs in the trash
- Highlighter: ensuring code is escaped for unsupported languages
- Renamed export mode: single -> file
- Renamed export mode: separate -> cwd
- New export mode: files
- Window: reloading automatically if it crashes
- Ensuring footnotes nested in "" tags are scoped properly
- Resizable layout: ensuring states are serialized properly
- New commands: quickLook.open, quickLook.close (macOS)
- Attachment: added support for opening a quick look window on Cmd+Click (macOS)
- Export: removed a no-longer-necessary workaround for broken PDF exports under Catalina
- Sidebar: showing the "All Templates" section when there are some templates
- Autocomplete: added support for opening with a specific query
- Autocomplete: keep on autocompleting if the picked value is an autocomplete prefix
- Window: ensuring it’s hidden immediately right before closing it or quitting the app
- Formatting: ensuring wrapper characters can be toggled for empty selections too
- New commands: editor.formatting.code.add, editor.formatting.code.remove, editor.formatting.code.toggle (they can handle inline code only for now)
- New formatting context menu item: Toggle Code
- New command: editor.cursor.selection.ends
- Export: avoiding overriding the sort order provided implicitly programmatically
- New command: notes.copy
- New multi-note editor context menu item: Copy
- useEditor: ensuring the passed id is used on initialization too
- Updated setting: editor.scrollBeyondLastLine.enabled, it now applies to previews too
- Renamed setting: editor.scrollBeyondLastLine.enabled -> editor.scroll.beyondLastLine.enabled
- Language: mentiong "N/A" as the region of the special unsupported "un-UN" language
- Preview: ensuring its error boundary emits "preview:render" events too
- Monaco: emitting "monaco:unmount" and "monaco:mount" events
- New context key: isScrollSyncEnabled
- New commands: editor.setting.scroll.sync.enable, editor.setting.scroll.sync.disable, editor.setting.scroll.sync.toggle
- New setting: editor.scroll.sync.enabled
- New statusbar item: ScrollSync
- New context menu: ScrollSync
- Split editor: using scroll synchronization
- New context key: isGraphOpen
- New commands: graph.open, graph.close, graph.toggle
- Renamed icon: graph -> gaph_off
- New statusbar item: Graph
- Note: detecting links to attachments outside of the special "attachments" directory too
- New graph items: attachment, command, file, note, search, shorcut, tag
- New theme colors:
graph:background
,graph:node:attachment:background
,graph:node:command:background
,graph:node:file:background
,graph:node:note:background
,graph:node:search:background
,graph:node:shortcut:background
,graph:node:tag:background
,graph:edge:attachment:background
,graph:edge:command:background
,graph:edge:file:background
,graph:edge:note:background
,graph:edge:search:background
,graph:edge:shortcut:background
,graph:edge:tag:background
- New popover: graph filters editor
- New commands: graph.filters.editor.open, graph.filters.editor.close, graph.filters.editor.toggle
- New command: graph.filters.item.toggle
- New command: graph.filters.link.toggle
- New commands: graph.filters.search.clear, graph.filters.search.query
- Attachment: keeping track of the size of each attachment, when that can be done for free
- Graph: rendering attachments nodes proportionally to their size on disk
- Graph: ensuring self-referencing links are rendered properly
- Graph: opening a context menu when right-clicking nodes
- New commands: graph.zoom.in, graph.zoom.out, graph.zoom.set, graph.zoom.reset
- New command: graph.zoom.fit
- Graph: ensuring hidden nodes and links have no force
- Graph HUD: added zoom controls
- Graph HUD: added rotation controls (currently disabled)
- Graph: added a basic 3D renderer
- New commands: graph.3d.enable, graph.3d.disable, graph.3d.toggle
- Graph HUD: added a 3D toggle
- New theme colors: graph:tooltip:background, graph:tooltip:border, graph:tooltip:foreground
- Graph links: growin heads when zooming in a lot, and not rendering heads when zooming out a lot
- New theme color: graph:foreground
- Graph: keeping track of active nodes and links
- New theme colors:
graph:tooltip:backgroundActive
,graph:tooltip:borderActive
,graph:tooltip:foregroundActive
- Graph: considering nodes with only self-referencing links as orphans
- Graph: zooming to fit on background double-click
- Graph: opening attachments on click, opening attachments in quick look on Cmd+Click (macOS)
- Graph: executing commands on click
- Graph: opening files on click, opening files in quick look on Cmd+Click (macOS)
- File: opening it in quick look on Cmd+Click throughout the app (macOS)
- Graph: executing shortcuts on click
- Graph: setting a search query when clicking on it
- Graph: opening notes on click
- Graph: opening notes in a new tab on double-click
- Graph: highlighting links on hover
- Graph: go to link positions when clicking on note links
- Graph: go to link positions in a new tab when double-clicking on note links
- Pointer: screencasting which button was used too (caciocavallo-style)
- Pointer: screencasting active modifiers too, if any
- New shortcuts: CmdOrCtrl+= -> graph.zoom.in, CmdOrCtrl+- -> graph.zoom.out, CmdOrCtrl+0 -> graph.zoom.reset
- Ensuring unknown attachments can be removed from notes
- New command: editor.formatting.custom.add
- Markdown: automatically surrounding selections with angle brackets when pressing "<"
- Markdown: accounting for symmetric (legacy?) HTML comments (
<!— foo —!>
) - Markdown: accounting for slightly malformed HTML comments
- Markdown: handling HTML comments more reliably
- New command: tag.new.child
- Tag context menu: added a "New Child" menu item
- New command: note.go.offset
- Note: added some convenience methods for extracting resolved and broken links
- New report: broken links
- New setting: markdown.links.detection.enabled
- New setting: markdown.links.detection.fuzzy
- Updated setting: markdown.links.detection.fuzzy -> false by default
- Mentioning "Editor" in the title of the settings and shortcuts editors
- Titlebar: ensuring it is rendered properly under Windows
- Updated setting: editor.scroll.beyondLastLine.enabled -> true by default
- Commands screencaster: logging commands to the console rather than showing a notification, if the devtools window is open
- Editor: avoiding disposing of models as the undo stack and folding ranges state can’t be serialized yet
- Quick modals: lazy-loading them from a separate chunk
- Markdown compiler: slightly faster and slightly more memory efficient in some scenarios
- Ensuring changing a note’s metadata causes the file on disk to get updated
- Paste as link: ensuring links are url-encoded if needed
- Formatting: ensuring heading level changes are allowed on empty lines too
- Search engine: implemented a parser for the new query language
- Electron: ensuring that if the state configuration object is too large it’s dropped, rather than risking having the page not load
- Rewritten mainbar placeholder: always visible, more useful, it aids discoverability better
- Mainbar placeholder: displaying a progress bar while ...