Server Migration

Goals

Migrate the Dendron to (local) client <-> server architecture

Details

Dendron's current architecture can be found here. Currently, all of Dendron's indexing capabilities is provided by the Dendron engine as a library which is included in every extension that uses it. This has many drawbacks - every extension re-indexes all notes and also blocks the client (VS Code) during this process.

The Dendron server migration is to move Dendron to a client server architecture. Note that the migration will involve standing up two servers: one for language server functionality (the lsp server), and another for Dendron's lookup capabilities (the express server).

The rationale for having two servers is discussed here.

They are also elaborated upon here

Instead of calling the engine directly, the Dendron extension, as well as related plugins, will communicate to Dendron's server using IPC and on local ports.

Tasks

  • 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

Next

  • migrate bundled extensions to server model
  • use custom goto definition provider
  • use custom backlink definition provider
  • use schema based completions

Configuration

To enable server mode, update the following setting in your workspace settings "dendron.useExperimentalLSPSupport": true. Run > Developer: Reload Window afterwards for the changes to take effect.


Backlinks