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.
Links
Related
Backlinks