Skip to content

Releases: notable/notable-insiders

v1.9.0-alpha.1

12 Jun 00:46
Compare
Choose a tag to compare
  • Ensuring the most recent data directory used in previous versions of the app is properly migrated to v1.9
  • Ensuring settings used by previous versions of the app are preserved, allowing for older versions of the app to be used alongside v1.9
  • Handling data directory switches much more reliably
  • Ensuring the minimum allowed window dimensions get updated properly
  • Emoji palette: pasting also the selected emoji in the editor
  • Language palette: pasting also the selected language in the editor
  • Changelog: always showing trailing .0 sections version numbers
  • Ensuring the state of built-in documents is properly preserved too
  • Ensuring extra separators are properly removed from the app menu

v1.9.0-alpha.0

11 Jun 16:49
Compare
Choose a tag to compare

Overview

  • Most of the app has been completely rewritten, with the following goals in mind
    • Bringing the app closer to supporting plugins
      • Many built-in features are now implemented as internal plugins
      • The app is now foundamentally based on VS Code-like primitives like settings, context keys, commands and shortcuts, which will be the building blocks of future plugins
    • Bringing the app closer to being able to run in the browser and on smartphones
      • Electron's "main" and "renderer" processes have been almost completely decoupled from each other
      • Electron's "renderer" process is close to being completely sandboxed, which would make it not that much different from a regular browser tab, once that happens the app will be able to run in the browser with some minor modifications
    • The codebase is now in a much better state, which overall should lead to fewer bugs and faster iteration speed
  • This release will require some exploration to fully master
    • With 448 commands, 241 shortcuts, 83 context keys, 177 customizable colors, 19 standalone palettes and 18 context menus implemented this changelog can only attempt to cover a fraction of what's new
  • The codebase grew from 14k lines of code to 26k lines of code

New Features

  • Online presence
    • New domain: notable.app
      • That is a much more premium domain, which the previous owner gifted to us
      • The updated website serves ~98% fewer JavaScript (~40kb -> ~1kb) and ~40% fewer bytes overall (~550kb -> ~350kb)
    • Public Discord chat: chat.notable.app
    • Twitter handle: @TheNotableApp
    • YouTube channel: Notable
    • Snap store: Notable
  • Redesign
    • The UI has been redesigned to be cleaner and more pleasant to look at
    • Mainly lists and trees now have their items more spaced out
    • Sidebar
      • The sidebar is now divided into sections, both for more easily distinguishing them and for making space for some future buttons
      • All "All Notes" sections, except for "Notes/All Notes", are now hidden to discourage their usage, but they can still be selected from the palette
      • The chevron used for collapsing and expanding tags now is animated too
      • Tags can now be recursively collapased and expanded by CmdOrCtrl+Click-ing their chevrons
  • Commands (help page)
    • 448 commands have been implemented
    • Almost every action you can take in the app is now exposed as a command, you can think of commands as like functions in a programming language
    • Any command can be assigned to custom shortcuts
    • Any command can be triggered via notable:// URLs from outside of the app too
    • Some commands accept one or more arguments, which make them expecially flexible and powerful
    • All commands that don't require any arguments can be triggered from the command palette
    • All buttons and menu items throughout the app behind the scene just trigger a specific command
    • Some commands are visible in the command palette depending on the evaluation of some context keys expressions
    • Some notable commands:
      • macro: this is a simple but powerful command that executes a sequence of other commands, potentially passing arguments to each of those commands
      • note.tag.toggle: this command will show you a searchable list of tags that can be added or removed from the current note, it will also display a dynamic item for adding a new custom tag. When passing arguments to it you could also use it to configure shortcuts that toggle specific tags quickly
      • settings.cycle: this command receives an array of settings objects, and cycles through them, it could be used for implementing a custom "Focus" mode that works like you want, or in combination with notable:// URLs it could be used for creating a link that when clicked changes the whole theme of the app
      • edit.write: this command simply writes the passed string in the currently focused editable element, it could be used in combination with shortcuts to make a bare-bones snippets manager
      • contextKey.set: this advanced command can be used for definying new custom context keys, which you might want to play with for adding vim- or emacs-like shortcuts to the app
  • Shortcuts (help page)
    • 241 shortcuts have been implemented
    • Custom shortcuts can be added
    • Shortcuts trigger commands, optionally passing them some arguments
    • Shortcuts can be enabled dynamically depending on the evaluation of a context keys expression
    • Shortcuts using special tokens like CmdOrCtrl are resolved dynamically depending on the OS the app is running on
    • Any built-in shortcut can be removed
    • Both global-level and data-directory-level shortcuts can be added
    • Shortcut sequences, like Cmd+K Cmd+1, are fully supported
    • Shortcut hints are provided throughout the app in menu items and in buttons' tooltips
      • If you add some custom shortcuts then your custom shortcuts will be displayed as hints instead, when possible
    • Some notable shortcuts:
      • CmdOrCtrl+Esc: it triggers view.reset, which resets the view to its original state
      • Alt+Tab: it triggers note.go.heading.next, which navigates to the next heading in the note
      • CmdOrCtrl+T: it triggers tab.new, which asks you to select a note to open in a new tab
      • CmdOrCtrl+K CmdOrCtrl+W: it triggers tabs.close, which closes all tabs
      • CmdOrCtrl+Shift+S: it triggers export, which will export your active notes
  • Context keys (help page)
    • 83 context keys have been implemented
    • Each context key describes a particular aspect of the state the app is currently in, you can think of context keys as like variables in a programming language
    • Most context keys represent boolean values, they are either true or false
    • You can combine context keys in an expression that will be evaluated dynamically to either true or false
    • Context keys expressions are written in a safe subset of JavaScript
    • Some notable context keys:
      • hasTab: it tells you if there is a tab open
      • settings: maybe the most powerful context key, it provides you with access to the entire settings object
      • isThemeDark: maybe you want to run some shortcuts only if the current theme is dark? Maybe not, but you can if you want
      • isMultiNoteEditorOpen: it tells you if the multi-note editor is currently active
      • editorLanguage: it tells you the language of the text in the current editor, useful for writing Markdown-only or JSON-only shortcuts
  • Settings (//TODO: Maybe write an help page for settings too?)
    • Settings, this includes shortcuts too, are represented in the JSON format
    • Settings are stored on disk as JSON files
    • Both global-level and data-directory-level settings can be configured
    • All settings are preserved across restarts
    • Inline comments are supported
    • Path properties are supported (e.g. "theme.active": "dark")
    • Each setting is validated so it's impossible to configure an invalid setting that breaks the app, the app would just ignore it
    • Settings can be edited from outside the app too with any standalone text editor
    • Some notable settings:
      • editor.indentation.guides.enabled: it sets whether indentation guides are visible or not in the editor
      • katex.macro: you can define custom macros for KaTeX here
      • tabs.alwaysPersistent: it lets you always open persistent tab, without requiring double-clicks
  • Theming (help page)
    • 177 colors have been implemented
    • All themes are entirely generated from those configurable colors
    • Colors can be customized by configuring the "theme.colors" setting
    • Both global-level and theme-level custom colors can be configured
      • Global-level colors should be provided at "theme.colors"
      • Theme-level colors should be provided at ``"theme.colors.[Title]"`, where "Title" is the title of a particular theme you want to customize the colors of
    • Built-in themes generate most of their colors from some other colors, so you only need to customize a handful of them to get a totally different-looking theme
    • Any valid CSS color can be used
    • Some notable colors:
      • colors:primary:background: this is probably the most dependend on color in each theme, changing it will have a ripple effect throughout the theme
      • window:border: when this color is not transparent a border will be added to your window, it could be useful for more easily distringuishing between data directories when configuring a different color for each one
      • editor:guide:backgroundActive: if you have indentation guides enabled you can configure this color to be different than editor:guide:background, this way the editor will tell you which indentation level is currently active
      • editor:fold:background: you can customize this color to have folded lines colored specially
  • Themes
    • All built-in themes have been rewritten
    • The Dark theme in particular is now much more polished
    • A new, special, "Print" theme has been implemented
      • It's the theme used for priting
      • It's designed to reduce ink usage
      • It don't support global-level colors customizations but only theme-level customizations
  • Palette
    • 19 standalone palettes have been implemented
    • All these palettes are available also from the main palette
    • The actual palette that will be searched into depends on the prefix used in your query
    • Shortcut hints for quickly picking results are provided
    • Many more palette-like widgets will be opened on demand by various commands for prompting you for a selection
    • Some notable ...
Read more