Link Search Menu Expand Document

Release Notes(version 0.12)

Dendron 0.12 is here 🌱

This week's focus was on publishing. We have a bunch of enhancements and additions to the publishing workflows. We also introduced the seeds library, a way of you to remix existing content with Dendron. You can see an example of this here

This release also brings some changes to Dendron's update cycle. You might have noticed that Dendron updates rather aggressively πŸš€πŸš€πŸš€

Our current release cycle is a patch update every day and a minor release every week. Moving forward, we will be doing patch updates every few days and a minor release every two weeks.

The move to this new release cycle is a reflection that Dendron is growing rapidly and starting to mature.

We will be working on some major changes in October to stabilize the core feature set and make them easier to use. We will also be shifting our underlying architecture from a VSCode plugin to the Language Server Protocol which will result in a richer feature set and the ability for Dendron to be more easily integrated into additional editors.

As part of this update, we've put out the first version of the Dendron principles which reflects our design philosophies and the direction we are taking Dendron.

This is a work in progress so feel free to make suggestions and comments in the discord.

I've mentioned this before but we will also be releasing our formal roadmap by the end of the month. This roadmap will cover all major projects we plan on doing in 2020.

We are looking to come out of preview by the end of October and do a formal 1.0 release before the end of the year.

I want to take this moment to again thank everyone for being part of our journey to build a better tool for managing knowledge πŸ‘¨β€πŸŒΎπŸ‘©β€πŸŒΎ

I believe we're are planting something special here and am excited to see us grow 🌱

These release notes are summary of the more notable changes, for the full list, please look at our CHANGELOG


Cli

Support for seeds

dendron.topic.seeds

Enhancements

  • Standardize on core cli flags across all commands
  • More options when planting seeds

Hierarchies

Fixes

  • Rename when stub is present

Lookup

Lookup new notes with Selection

If you have text highlighted while creating a new note with a lookup, the new note will be created using the text selected. How the text will be used depends on the dendron.defaultLookupCreateBehavior setting.

  • values:
    • selectionExtract (default): create new note with text from the old note. remove text from the old note
    • selection2link: create new empty note and turn selection into a link referencing the old note

Vault Selection for New Notes

If you have multiple vaults in your workspace, you can control the behavior of which vault your new note will be placed in:

Vault Location when Creating a Note

When creating a note in lookup, Dendron will try to create your note in the correct vault. By default, it will place the note into the same vault as the currently opened note. But if it detects that the new note matches an existing hierarchy in a different vault, you will get prompted to pick the destination vault:

Prompt for Vault Selection Each Time

lookupConfirmVaultOnCreate

With this set, you will be prompted to select the vault location each time you create a note when you have multiple vaults in your workspace.

To enable, add lookupConfirmVaultOnCreate: true in the dendron configuration. Instructions to do so below.

  1. Dendron: Configure (yaml)

  2. add lookupConfirmVaultOnCreate: true so your configuration looks like the following:
version: 0
...
lookupConfirmVaultOnCreate: true

Enhancements

  • Lookup can extract highlighted text

Pods

Implement Json import pod

Summary

  • id: dendron.json
  • coverage
    • βœ… import
    • βœ… export
    • βœ… publish

Import

Imports a JSON file as Dendron notes

  • format:
    • fname: name of note (without extension)
    • body: contents of note
  • eg:
[
  {
    "fname": "one",
    "body": "one body"
  }
]

Export

Below is sample output from an export of a vault with the following files

.
└── vault
    β”œβ”€β”€ root.md
    β”œβ”€β”€ sample.child.md
    └── sample.md

Exported JSON

[
  {
    "id": "root",
    "title": "root",
    "desc": "",
    "type": "note",
    "updated": 1599430958377,
    "created": 1599430958377,
    "fname": "root",
    "data": {},
    "stub": false,
    "custom": {},
    "parent": null,
    "children": [
      "01d712a3-3676-403c-87d7-f3e7057ca43e",
      "01d712a3-3676-403c-87d7-f3e7057ca43e"
    ]
  },
  {
    "id": "01d712a3-3676-403c-87d7-f3e7057ca43e",
    "title": "Sample",
    "desc": "",
    "type": "note",
    "updated": 1599430965554,
    "created": 1599430965554,
    "fname": "sample",
    "data": {},
    "stub": false,
    "custom": {
      "tags": [
        "one",
        "two",
        "three"
      ]
    },
    "parent": "root",
    "children": [
      "1d947d6e-39c4-4d31-9bec-749a467fc514"
    ]
  },
  {
    "id": "1d947d6e-39c4-4d31-9bec-749a467fc514",
    "title": "Child",
    "desc": "",
    "type": "note",
    "updated": 1599430969355,
    "created": 1599430969355,
    "fname": "sample.child",
    "data": {},
    "stub": false,
    "custom": {
      "customProp": "yellow",
      "customStat": 5
    },
    "parent": "01d712a3-3676-403c-87d7-f3e7057ca43e",
    "children": []
  }
]

Video example of exporting to JSON

Publish Pod

Publish note to JSON and copy into clipboard

Sample output

{
    "id": "814f9a2c-f011-4852-a077-c887dd985656",
    "title": "Two",
    "type": "note",
    "desc": "",
    "links": [
        {
            "type": "wiki",
            "from": {
                "fname": "bar.two",
                "id": "814f9a2c-f011-4852-a077-c887dd985656"
            },
            "original": "bar.two.child",
            "value": "bar.two.child",
            "alias": "bar.two.child",
            "pos": {
                "start": 23,
                "end": 40
            },
            "to": {
                "fname": "bar.two.child"
            }
        },
        {
            "type": "wiki",
            "from": {
                "fname": "bar.two",
                "id": "814f9a2c-f011-4852-a077-c887dd985656"
            },
            "original": "bar.two.child",
            "value": "bar.two.child",
            "alias": "bar.two.child",
            "pos": {
                "start": 50,
                "end": 67
            },
            "to": {
                "fname": "bar.two.child"
            }
        }
    ],
    "fname": "bar.two",
    "updated": 1603305706789,
    "created": 1602872932440,
    "parent": "93f6a3ad-2b0f-4843-9b65-961c65de9237",
    "children": [
        "8e19c23d-4335-4684-846e-ca7fed893b51"
    ],
    "body": "\n\n# Inner Note\n\n((ref: [[bar.two.child]]))\n((ref: [[bar.two.child]]))",
    "data": {},
    "custom": {},
    "schema": {
        "schemaId": "bar",
        "moduleId": "bar"
    }
}

Enhancements

  • All filepaths can be set relative to the workspace root
  • Json pod can import filenames as links
  • Standardize interface for import/export pod commands

Fixes

  • Handle stub notes correctly on import

Publishing

Publish command

  • shortcuts: none

Build, commit and publish your notes with a single command

  • NOTE: this is mean for v1 publishing. V2 publishing currently does not have a publish command.

Copy note url command

  • shortcuts:
    • mac: cmd+shift+u
    • windows: ctrl+shift+u

Get URL of current note from published site

If you highlight a header, will copy the url with the header set as the anchor

The url is taken from the siteUrl property.


Enhancements

  • Support relative path for all file paths
  • Set custom path for publishing repo
  • Keyboard shortcuts for copy note url cmd
  • Be able to pass in custom args to commands
  • Support incremental page building

Fixes

  • Copy url truncates //

Thank You

Last and most of all, a big thanks to the following gardeners that brought up issues, contributions, and fixes to this release.