Link Search Menu Expand Document

Changelog

0.13.4 (2020-10-28)

Features

Migrate Existing Workspaces to Server Mode

This is the last phase in Dendron’s server mode migration. All new workspaces are already running in server mode as well as well as users that have opted into it. This update transparently migrates remaining workspaces to server mode.

As a reminder, server mode is a re-architecture of Dendron that enables both better performance and a vast array of new features.

Finally, we do have an escape valve in things something goes terribly wrong. You can set the following option to revert server mode behavior. If you end up using this, please also cut as a ticket or a message in discord.

dendron.noServerMode

  • type: boolean
  • default: none

revert server mode

Enhancements

  • notes: selection2link will auto generate a title based on the selection (9964339)

selectionType

  • controls selection modifier
  • options
    • selectionExtract: selection is extracted to newly created note (default)
    • selection2link: selection is turned into a link to newly created note. note path is set to {current-path}.{slug-of-selection}
      • a slug is the human readable portion of an url
    • you can control this behavior using dendron.linkSelectAutoTitleBehavior
  • type: string
  • default: slug
  • options: [‘none’, ‘slug’]

Control title behavior when using selection2link with lookup

  • workbench: graceful failure on bad schema (4db5064)
    • instead of refusing to initialize, Dendron will skip bad schemas and generate an error report post-startup
  • workbench: nicer error messages (9e371e1)
    • certain errors now have human friendly messages instead of JSON goop

Bug Fixes

  • workbench: read json config with comments (1741553)
    • Dendron gets sad if your workspace has comments

Community

Horticulturalist

Dendron now has a new role -> the Horticulturalist. These are folks who have contributed to the Dendron code base: 👨‍🌾👩‍🌾

Kudos to @britt#3020 and @lukecarrier#2081 for being the first to earn this distinction!

Dendrologist

Excited to welcome a new dendrologist –> @I’m a lightbulb#6986

@I’m a lightbulb#6986 was one of our earliest users and one of the first to publish using dendron.

As a reminder, dendrologist are active members of the community who are recognized with said title and a few additional discord super powers.

0.13.3 (2020-10-24)

Features

Direct Child Filter

  • lookup: support direct child filter (1cae082)

By default, unless you are at the root of your workspace, dendron does a fuzzy search of all notes that match your current hierarchy prefix. This is useful to see your entire sub-tree in one glance but can be overwhelming if you have a lot of notes.

Dendron’s directChildFilter is a toggle that limits lookup to just the next level in the tree. This is useful for exploring your hierarchy one level at a time.

  • you can create a keyboard shortcut to do a lookup with the direct child filter pre-selected

    filterType

    • controls notes shown for lookup
    • options:
      • directChildOnly: filter all notes that are not the direct children of the current note

Enhancements

  • publish: be able to set config for all hierarchies (a27d94a)

    config

    Per hierarchy specific config. To set options for all hierarchies, set {hiearchy name} to root.

    config:
      {hierarchy name}: {hierarchy options}
    

    The list of possible options:

    • publishByDefault: boolean, default: true
      • if set to false, dendron will only publish notes within the hierarchy that have published: true set in the frontmatter
    • noindexByDefault: boolean, default: false
      • if set to true, dendron will add the following meta tag <meta name="robots" content="noindex, nofollow”> which will tell google to not index your page
      • when google indexes a page, it will penalize sites that have duplicate content from other sites. this is useful if you are using your hiearchy as a cache
    • customFrontmatter: list, default: []
      • if set, dendron will add the specified frontmatter to each published note in the hierarchy. note that this will override existing keys with the same name when publishing
      • eg. add toc: true to all notes published under the iam.* hierarchy
        config:
          iam: 
              customFrontmatter: [
                {
                  key: "toc",
                  value: true,
                }
              ]
        
  • schema: add custom props from schema template (5264544)

Schema templates let you designate a note as a template. Newly created notes that match a schema with a template will have both the contents and custom frontmatter of the template note applied at creation.

This is extremely useful whenever you want to re-use the outline of a note. Examples include daily journals, weekly shopping lists, and weekly reviews.

  • workbench: reload index re-create root if not exist (c66e242)
    • dendron requires root.md and root.schema.yml to start indexing and would previously throw an error if these files were deleted
    • this change will create these files within the vault instead of throwing said error

Bug Fixes

  • comp:common-server: don’t throw error on missing log vars (9d00e55)
  • notes: refactor will miss links in newly created notes (c8a5dde)
  • lookup: don’t update lookup text unless a note btn is pressed (30140f7)
  • workbench: Doctor command will create two doc directories if no doc directory is found (43f7bfc9) –> ( 🙏 thanks to Britt for the pull request)

House Cleaning

Dendron: Change Workspace will no longer create a workspace if no workspace exists

Previously, if you wanted to use an existing folder (aka vault) with a workspace, we recommended you run Change Workspace which would create a Dendron workspace inside the folder if it didn’t exist. This turns out to be an anti-pattern that interferes with features like publishing which expect the workspace to be in a separate folder from its vaults.

If you’ve used Change Workspace to bootstrap existing files, we recommend using the following guide to migrate your notes to a new workspace.

Use Dendron with a current folder

    1. start by initializing a workspace

Initialize Workspace

  • shortcuts: none

Create a new workspace

    1. by default, dendron uses a vaults folder underneath your workspace to store you vaults. Update your settings and change vault to the path of your current notes (alternatively, you can also copy your current notes into vault)
"folders": [
    {
        "path": "vault"
    },
    ...
],
    1. Run > Dendron: Reload Index for Dendron to pick up changes

0.13.2 (2020-10-22)

Features

Pod Publishing

  • pods: add publish pod cmd (8947a60)

In addition to import and export, you can now also publish notes with pods.

Publishing lets you take one note and output it into a different format/destination.

For example, you might want to use our markdown pod to take a note with note references and publish it as a regular markdown note to use in a github issue or another tool.

Future uses of the publish method will be taking a note and publishing it to social media (eg. twitter, facebook, linkedin), publishing it to Gmail, and publishing to destinations like Medium and dev.to.

Realtime Schema Validation

  • schemas: realtime schema validation (server mode) (42191bcd)

You will now get a warning if you are trying to save a badly formatted schema.

Enhancements

  • publishing: preserve abbreviations (06d9191) –> thank you Luke Carrier for the pull request
  • pods: add json publish pod (127dd7c)
  • pods: add markdown publish pod (127dd7c)
  • pods: update placeholder text (57a4af8)
  • refs: render error when ref doesn’t exist (ba1be1a)

Breaking

  • dendron.pod.file has been renamed dendron.markdown
  • dendron.pod.json has been renamed dendron.json

Documentation Updates

Pods

Documentation for pods has been re-written to reflect recent changes with pods

Pods

Pod image courtesy of Ilana Lin

Dendron refers to pods as any tool or location that is used to hold information. Tools like Evernote and Roam are pods. Social media services like Twitter and Facebook are pods. Publication destinations like static sites and Medium are pods. Everything is a pod.

Pods let you do the following:

  • import your notes from any existing location into Dendron
  • export your notes from Dendron to any existing location
  • publish your notes from Dendron to any existing location

To access pods, Dendron exposes three commands:

  • Dendron: Import Pod: imports notes
  • Dendron: Export Pod: export notes
  • Dendron: Publish Pod: publish notes

NOTE: not all pods will expose all three commands. Each pod implementation can choose to implement any subset of the three commands.

Pod Methods

Import

Importing lets you bulk import notes from a given source and into Dendron. The notes are formatted and converted to Dendron’s hierarchal structure.

Export

Exporting lets you bulk export notes from Dendron into another destinations. The notes will be formatted and converted to the native format of the destination.

Publish

Publishing lets you take one note and output it into a different format/destination.

For example, you might want to use our markdown pod to take a note with note references and publish it as a regular markdown note to use in a github issue or another tool.

Future uses of the publish method will be taking a note and publishing it to social media (eg. twitter, facebook, linkedin), publishing it to Gmail, and publishing to destinations like Medium and dev.to.

Types of Pods

There are two types of pods:

  • builtin
  • custom

Builtin Pods

Builtin pods are managed by Dendron and are available when you install Dendron. They can be used with either the dendron-cli or from within the Dendron extension to import/export/publish your notes from/to anywhere

Custom Pods

  • STATUS: DRAFT
  • NOTE: this documentation is for future functionality. It is not currently implemented. Progress can be tracked in this issue.

Custom pods can be developed by anyone as a NodeJS package and used after a user installs it in their workspace. They can be used with either the dendron-cli or from within the Dendron extension to import/export/publish your notes from/to anywhere

0.13.1 (2020-10-21)

Features

Generate table of contents when Publishing

  • publishing: generate toc when publishing (53ee270)

toc

  • type: boolean
  • default: false

To generate a table of contents in a given note, enable this directive in the note frontmatter.

toc: true

You will also need to include the following line somewhere in the note body. Dendron will generate a table of contents when it finds that particular header

## Table of Contents

The output will look like the below.

  • NOTE: in order to generate a table of contents, the heading levels after ToC need to be at an equal level or greater than the heading level of Table of Contents
    • this is okay
      ## Table of Contents
      ## Header1
      ## Header2
      
    • this is not
      ## Table of Contents
      ### Header1
      ### Header2
      
  • publishing: set frontmatter overrides globally when publishing (782d637)

Enhancements

  • lookup: add contrast btw note/schema lookup (4faec8e)

Bug Fixes

  • publish: issues with Publish command in server mode (7f3789a)
  • lookup: re-enable schema suggestions on namespace (56ee6c4)
  • workbench: reload index will update tree view (deadedc)
  • lookup: display schema id if title undefined (6c7cc70)
  • seeds: update replace merge strategy to really replace (a02e08a)

0.12.11

Features

Recursive Note References

Note references can refer to notes with references inside. Dendron current supports references two levels deep. This applies to both the local preview as well as publishing.

Bug Fixes

  • time decorator lose position: updating the frontmatter will cause the time decorator to sometimes lose its position
  • time decorator not updating: turned off temporarily to investigate performance impact
  • rename note: doesn’t update all links in some cases

Other

  • we’ve created a bug catcher role for folks that reported bugs to Dendron. currently trying to backfill with all the people that have contributed bugs. feel free to ping me if I missed you and big thanks to the current bug catchers!

0.12.10 (2020-10-16)

Features

Rename and Refactor Commands an Order of Magnitude Faster Now (server mode) 🚀🚀🚀

These commands have been completely re-written and use a proper markdown parser to find links (vs many fragile regex statements). The re-write results in both much faster performance as well as a more correct implementation.

Enhancements

  • progress indicator on startup (server mode): loading indicator to help with large workspaces
  • rename command support (server mode): rename command is now available in server mode
  • refactor command support (server mode): refactor hierarchy command is now available in server mode
  • publish notes support (server mode): publish notes command is now available in server mode
  • archive command support (server mode): archive hierarchy is now available in server mode
  • doctor command support (server mode): doctor command is now available in server mode

Bug Fixes

  • schema templates not working (server mode): issue where schema templates were not being applied

0.12.9 (2020-10-15)

Features

Human Friendly Timestamps (server mode)

Timestamps now have human friendly decorators on the side.

Enhancements

  • copyAssets configuration: when publishing, you can now toggle whether you want to copy assets or not
  • dump state: dendron now has a Dump State command which will dump the internal state into the logs (useful for debugging)

Bug Fixes

  • assets not being copied: assets not copied on publishing when assetsPrefix was set
  • GoUp comman go to wrong note (server mode): GoUp would sometimes try to open a stub node which would result in an error
  • Multiple workspaces result in bad timestamps (server mode): Having multiple workspaces of the same vaults open could result in bad timestamps

Documentation

Error upgrading

Dendron will update keybindings/settings/etc to the latest defaults if not currently set on upgrade. If you see the above error, it means that Dendron had trouble parsing one of your settings files. This doesn’t stop dendron from starting but it does mean that the latest settings aren’t being applied.

The most likely culprit of this error is a bad snippets file. To fix, bring up the command prompt, type >Configure User Snippets, open dendron.code-snippets and see if there’s anything funky with the json on the line mentioned by the error. You can also use tools like jsonlint to validate your JSON.

0.12.8 (2020-10-14)

Features

Really update time in frontmatter (server only)

Dendron notes have frontmatter with an updated field. This field is supposed to show you the time in milliseconds of when the document was last updated. Until today’s update, this field did not actually change 😅

id: 65b03213-d3d1-46c0-9881-a6280ed9bdeb
title: New
desc: ''
updated: 1602096212957
created: 1602096212957

Today’s update makes updated update!

Enhancements

  • support BuildPod command (server mode): build pod now works when server mode is enabled

Bug Fixes

  • navigating to special notes: scratch/journal notes could fail to open if note already exists

Other

Useful Extensions

Git

  • Git Automator: one command to commit and push all changes
  • Git Doc: auto-commit and (optionally) auto push your notes at fixed intervals

Other

  • Macros: Define custom macros

Browser Extensions

Web Clipper

Copy and Paste Web Content into Dendron

First copy it into Notion or use the notion web clipper to clip it. This will format it nicely in markdown. You can then paste it into Dendron with markdown and everything :)

Mobile Support

Dendron does not have a dedicated mobile client at this time. There are numerous mobile markdown editors that can be used to view and edit Dendron notes. Some popular options are listed below:

0.12.7 (2020-10-13)

Features

(Local) Server Side Indexing

Dendron can now index and manage your notes as a standalone local server independent from VSCode.

This is part of the server migration milestone which we took on for October.

Dendron’s server side indexing is a complete rewrite of the Dendron engine which powers Dendron’s lookup capabilities. The new engine is leaner, meaner, and significantly faster (especially when initializing your workspace with a large amount of notes).

Server site indexing is a pre-cursor enables our upcoming roadmap items which include:

  • multi-vault support
  • rich graphical interfaces for schemas, pods, and publishing
  • unified index for all dendron extensions (currently each extension makes a separate index of your notes and requires manual reloading)
  • realtime updates for graph extensions
  • custom dendron extensions written in any language

Server side indexing is currently off by default since it’s still a beta feature. You can turn it on by adding the following in your settings.

"dendron.useExperimentalLSPSupport": true

Note that the current commands are currently un-available when you switch on on server side indexing:

  • RenameNote
  • Refactor Hierarchy
  • Archive Hierarchy
  • Realtime Schema Updates
  • Pod Commands

You can switch back to regular indexing at anytime by changing the above setting to false and running > Developer: Reload Window.

Enhancements

  • Additional Arguments for lookup: You can now use noConfirm and value arguments when creating custom lookup shortcuts (docs)
  • Update Default Snippets: default todo snippet now leaves a space after insertion
  • Set custom log levels: you can now define the verbosity of dendron logs using the dendron.logLevel configuration
  • Upgraded Schema defaults (server only): new schemas will be created using version one defaults
  • Cleaner note frontmatter (server only): new notes won’t have the optional attributes in frontmatter

Bug Fixes

  • Missing logs: issue where Open Logs would not show logs
  • Tree View empty: tree view would not populate in some cases
  • Upgrade Snippets with comments: Upgrading settings would fail if they had comments inside the JSON

Breaking Changes

  • Remove Scratch Note Command: replaced by Lookup Scratch Note shortcut
  • Remove Journal Note Command: replaced by Lookup Journal Note shortcut

Progress

Server Migration

These past two weeks have been spent on server migration work. We are almost at the end and I’m aiming to have full coverage of all existing functionality by early next week.

  • add LSP server to Dendron (0.12)
  • add api server to Dendron (0.12)
  • hook server into dendron startup (0.12.4)
  • migrate lookup to server model
    • support query notes (0.12.6)
    • support query notes with schema (0.12.6)
    • support write notes (0.12.6)
    • support write note with schema (0.12.6)
    • support delete note (0.12.7)
    • support query schema (0.12.7)
    • support write schema (0.12.7)
    • support delete schema (0.12.7)
  • optimize server lookup performance (0.12.7)
  • enable file watcher (0.12.7)
  • dendron tree view (0.12.7)
  • migrate commands
    • scratch note (0.12.7)
    • journal note (0.12.7)
    • copy note command (0.12.7)
    • copy note url (0.12.7)
    • lookup scratch note (0.12.7)
    • lookup journal note (0.12.7)
    • global journal note (0.12.7)
    • build pod (0.12.8)
    • rename note
    • archive hierarchy
    • refactor hiearchy
    • doctor
  • integration tests for all server functionality

Other

0.12.6 (2020-10-07)

Features

Default Snippets

Dendron now initializes your workspace with common default snippets

Dendron comes with a series of default snippets when you first initialize your workspace. They are located in {workspace}/vault/.vscode/dendron.code-snippets.

{
todo: {
    prefix: "to",
    scope: "markdown",
    body: "- [ ]",
    description: "render todo box",
},
tag: {
    prefix: "#",
    scope: "markdown,yaml",
    body: "[[#${1:my-tag}|tag.${1}]]",
    description: "tag",
},
date: {
    prefix: "date",
    scope: "markdown,yaml",
    body: "$CURRENT_YEAR.$CURRENT_MONTH.$CURRENT_DATE",
    description: "today's date",
},
time: {
    prefix: "time",
    scope: "markdown,yaml",
    body: "$CURRENT_YEAR-$CURRENT_MONTH-$CURRENT_DATE $CURRENT_HOUR:$CURRENT_MINUTE",
    description: "time",
}
}

Latex Support on Published Site

You can enable math using the following options in the _config.yml. By default, this will be located in {workspace}/docs/_config.yml

enable_mathjax: true;
kramdown:
  math_engine: mathjax
  • NOTE: If you are using the local preview, be sure to reload your server to have the changes take place.

You can now add math using the standard mathjax notation.

  • NOTE: only block level mathjax is supported at the current time

Introduce siteRepoDir Customization

  • required: no
  • type: string

Location of the github repo where your site notes are located. By default, this is assumed to be your workspaceRoot if not set. This is used with the Publish Notes command

Bug Fixes

  • trying to publish the dendron-template no longer results in a missing links report
  • issue with schemas not showing up under lookup

Progress

This section tracks our progress against the milestones in our public roadmap

  • Seeds v0
  • Server migration, progress: 70/100 ```
    • below is a summary of our progress. we are currently about half way done
    • aiming to have a workable version using the Dendron server by next week ```
    • add LSP server to Dendron (0.12)
    • add api server to Dendron (0.12)
    • hook server into dendron startup (0.12.4)
    • migrate lookup to server model
      • support query notes (0.12.6)
      • support query notes with schema (0.12.6)
      • support write notes (0.12.6)
      • support write note with schema (0.12.6)
      • support delete note (0.12.7)
      • support query schema (0.12.7)
      • support write schema (0.12.7)
      • support delete schema (0.12.7)
    • optimize server lookup performance (0.12.7)
    • enable file watcher (0.12.7)
    • dendron tree view (0.12.7)
    • migrate commands
      • scratch note (0.12.7)
      • journal note (0.12.7)
      • copy note command (0.12.7)
      • copy note url (0.12.7)
      • lookup scratch note (0.12.7)
      • lookup journal note (0.12.7)
      • global journal note (0.12.7)
      • build pod (0.12.8)
      • rename note
      • archive hierarchy
      • refactor hiearchy
      • doctor
    • integration tests for all server functionality

Other

Seeds

  • We launched two seeds. A seed is a dendron site that tries to be be a all encompassing reference for a particular vertical. Dendron provides specific libraries and CLIs that make it easy for users to create seeds from existing open source content as well as personal notes.

Current Seeds:

- open PKM catalogue
- open AWS catalogue

Alternatives

this announcement also comes with an ask. Dendron is now in AlternativesTo, a crowdsourced catalogue for software recommendations. If you like Dendron and want to help us spread the word 🌱, please leave us a review here 🙏

0.12.4 (2020-09-30)

Features

Live schema updates

  • schema changes are now updated in realtime. no more Reload Index
  • NOTE: this doesn’t yet apply to Show Schema Graph. you’ll still need to run Reload Index to see the changes in the graph

Enhancements

  • lookup: special notes are now created via lookup (da825a9)
    • instead of being a separate command, journal and scratch notes are now created using the regular lookup interface
    • new keybindings have been introduced to map old commands to new style lookups
    • Create Journal Note and Create Scratch Note still exist as commands but will be deprecated in the next minor release
  • lookup: support lookups opening with a new split (da825a9)

Split toggle

When opening a note via lookup, you can decide to have the note open in a horizontal split.This works when you’re creating new notes or opening an existing note

  • refs: easier note ref selection(114ff87)

Dendron will now recognize a header selection if you have any part of the header highlighted (vs needing to highlight the entire line)

Copy Note Ref

  • shortcuts:
    • key: ctrl+shift+r
    • mac: cmd+shift+r
    • when: editorFocus

Copies a reference to the current open document

Lets you quickly create a note reference to the current note.

If you have a header selected while running this command, it will copy the note ref with the selected header to the next note ref

Documentation

  • we published our public roadmap

Project Public Roadmap

The Dendron Public Roadmap is a list of all the things we’re working on for the year.

You can see the corresponding issues on github where you can leave comments and feedback. You can also comment in our #feedback channel on discord.

Legend

  • [x]: done
  • #wip: work in progress
  • #feedback: actively looking for feedback

Epics

Long Lived Initiatives

These projects don’t have an end date. They are something we’ll continuously work towards.

  • changelog moved to dedicated page
  • lookup menu docs

    Lookup Menu

    When working with lookup, users can toggle one of the different menu items on the upper right corner.

    These menus are divided into 4 categories:

    • filter toggle
    • selection toggle
    • note toggle
    • split toggle

Community Highlights

0.12.3 (2020-09-26)

Features

When building your site by running Dendron: Build Pod, Dendron will generate a bad links report of all wiki-links that did not resolve. It will also update the links to point to a 404 page instead.

Enhancements

  • lookup: lookup command accept args (3e1fe8a)
  • publishing: better 404 page (e74c4a2)
  • plugin: dramatically reduce extension bundle size (22cfff8)

0.12.2 (2020-09-24)

Enhancements

  • refs: support partial header selection (6e35393)

Bug Fixes

  • publishing: incremental builds not setting correct links (e3dedf5)

0.12.1 (2020-09-22)

Features

Create scratch or journal notes via lookup

A journal note is a self contained note that is meant to track something over time. Examples of journals include recording workout sessions, making meeting notes, and keeping a mood journal.

To create a journal note, trigger a lookup and then click on the calendar icon.

A scratch note is a self contained note that is meant to be used as scratchpad. Use it for thoughts or when you want to expand on a bullet point. Scratch notes are created in the scratch domain and have the following format: {domain}.journal.{Y-MM-DD-HHHHmmss}.

  • lookup: support selection modifiers when creating special notes (591c55f)

Enhancements

  • lookup: support selection and note toggles (70cf9eb)
  • refs: better header selection (ba9a4d9)
  • refs: emit error when header not found (5deb2d1)
  • publish: configure repoDir via config (fa838e4)