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 (Private), 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 VS Code 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

Seeds (Private)

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

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 meant 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.