<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Dendrite</title><link>https://kristianjborgwarth.github.io/dendrite.docs/</link><description>Recent content on Dendrite</description><generator>Hugo</generator><language>en-us</language><atom:link href="https://kristianjborgwarth.github.io/dendrite.docs/index.xml" rel="self" type="application/rss+xml"/><item><title>vault</title><link>https://kristianjborgwarth.github.io/dendrite.docs/docs/concepts/vault/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://kristianjborgwarth.github.io/dendrite.docs/docs/concepts/vault/</guid><description>&lt;h1 id="vault"&gt;&lt;strong&gt;vault&lt;/strong&gt;&lt;a class="anchor" href="#vault"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;A vault is, simply put, a directory on your desktop containing a set of markdown files. These
files contain your notes, and can be connected to each other through links.&lt;/p&gt;
&lt;p&gt;A local index is kept to support searching, linking and navigating your vault, as
the documentation of your knowledge outgrows file managers and directory viewers.&lt;/p&gt;
&lt;blockquote class="book-hint warning" &gt;
&lt;p&gt;&lt;strong&gt;Important:&lt;/strong&gt; Neither &lt;code&gt;dendrite.nvim&lt;/code&gt; nor &lt;code&gt;dendrite.daemon&lt;/code&gt; supports vault switching and
multiple vaults at the moment. While this might change, bear this in mind if you decide
to use Dendrite.&lt;/p&gt;</description></item><item><title>vault commands</title><link>https://kristianjborgwarth.github.io/dendrite.docs/docs/daemon/methods/vault_commands/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://kristianjborgwarth.github.io/dendrite.docs/docs/daemon/methods/vault_commands/</guid><description>&lt;h1 id="vault-commands"&gt;&lt;strong&gt;vault commands&lt;/strong&gt;&lt;a class="anchor" href="#vault-commands"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;Vault commands manage the daemon&amp;rsquo;s connection to a vault and its index. &lt;code&gt;vault/init&lt;/code&gt; must be called before any other command — it is what binds the daemon instance to a vault.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="vaultinit"&gt;&lt;strong&gt;vault/init&lt;/strong&gt;&lt;a class="anchor" href="#vaultinit"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Initializes the daemon against a vault. This sets up the database context and, if the vault has not been indexed before, performs a full index build by scanning the vault directory.&lt;/p&gt;
&lt;p&gt;If the index already contains notes the rebuild is skipped, so calling &lt;code&gt;vault/init&lt;/code&gt; on an already-known vault is safe and cheap.&lt;/p&gt;</description></item><item><title>note commands</title><link>https://kristianjborgwarth.github.io/dendrite.docs/docs/daemon/methods/note_commands/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://kristianjborgwarth.github.io/dendrite.docs/docs/daemon/methods/note_commands/</guid><description>&lt;h1 id="note-commands"&gt;&lt;strong&gt;note commands&lt;/strong&gt;&lt;a class="anchor" href="#note-commands"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;Note commands modify the index by creating or updating notes.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="create-note"&gt;&lt;strong&gt;create note&lt;/strong&gt;&lt;a class="anchor" href="#create-note"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Creates a note at a specified directory, and updates the index. Returns the path to the created note. The note content is generated from a &lt;a href="https://kristianjborgwarth.github.io/dendrite.docs/docs/concepts/templates/"&gt;template&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Method: &lt;code&gt;note/create&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Params:&lt;/p&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Field&lt;/th&gt;
 &lt;th&gt;Type&lt;/th&gt;
 &lt;th&gt;Description&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;title&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;string&lt;/td&gt;
 &lt;td&gt;Title for the new note. Used in frontmatter and converted to a slug for the filename.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;templateName&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;string&lt;/td&gt;
 &lt;td&gt;Name of the template the note will use.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;directory&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;string&lt;/td&gt;
 &lt;td&gt;The directory the note will be placed in, relative to the vault root.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Request:&lt;/p&gt;</description></item><item><title>protocol</title><link>https://kristianjborgwarth.github.io/dendrite.docs/docs/daemon/protocol/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://kristianjborgwarth.github.io/dendrite.docs/docs/daemon/protocol/</guid><description>&lt;h1 id="protocol"&gt;&lt;strong&gt;protocol&lt;/strong&gt;&lt;a class="anchor" href="#protocol"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;Communication between client and daemon is composed of two things: standard streams, often referred to as
stdio (after the popular C library &lt;code&gt;stdio.h&lt;/code&gt;), and JSON-RPC. While this documentation does not
aim to give an in-depth explanation of the two, it will cover some basics, in order for
you to be able to roll your own client.&lt;/p&gt;
&lt;h2 id="standard-streams"&gt;&lt;strong&gt;standard streams&lt;/strong&gt;&lt;a class="anchor" href="#standard-streams"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Standard streams are a set of preconnected communication channels. Of said channels,
there are three: input, output and error. It is quite simple — the client application writes to the daemon&amp;rsquo;s
input channel, and reads from the daemon&amp;rsquo;s output and error channel.&lt;/p&gt;</description></item><item><title>spec</title><link>https://kristianjborgwarth.github.io/dendrite.docs/docs/concepts/note_spec/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://kristianjborgwarth.github.io/dendrite.docs/docs/concepts/note_spec/</guid><description>&lt;h1 id="note-specification"&gt;&lt;strong&gt;note specification&lt;/strong&gt;&lt;a class="anchor" href="#note-specification"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;A note is a markdown file stored inside a vault. Each note carries metadata in a YAML frontmatter block and a body of regular markdown content.&lt;/p&gt;
&lt;h2 id="file-naming"&gt;&lt;strong&gt;file naming&lt;/strong&gt;&lt;a class="anchor" href="#file-naming"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;When a note is created through the daemon, its filename is derived from the title by converting it to a slug. The title is lowercased, digits are preserved, and every other character is replaced with a dash. The resulting slug becomes the filename (with &lt;code&gt;.md&lt;/code&gt; appended) and also acts as the canonical identifier used in internal links.&lt;/p&gt;</description></item><item><title>completion commands</title><link>https://kristianjborgwarth.github.io/dendrite.docs/docs/daemon/methods/completion_commands/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://kristianjborgwarth.github.io/dendrite.docs/docs/daemon/methods/completion_commands/</guid><description>&lt;h1 id="completion-commands"&gt;&lt;strong&gt;completion commands&lt;/strong&gt;&lt;a class="anchor" href="#completion-commands"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;Completion commands are designed to feed editor completion engines. Both accept a partial query and return a list of matching strings, using a substring match against the index.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="completionslug"&gt;&lt;strong&gt;completion/slug&lt;/strong&gt;&lt;a class="anchor" href="#completionslug"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Returns a list of note &lt;a href="https://kristianjborgwarth.github.io/dendrite.docs/docs/concepts/note_spec/#slug-as-identity"&gt;slugs&lt;/a&gt; whose title, path, or slug contains the query string. Intended to power &lt;code&gt;[[link]]&lt;/code&gt; completion in the client editor.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Method:&lt;/strong&gt; &lt;code&gt;completion/slug&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Params:&lt;/strong&gt;&lt;/p&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Field&lt;/th&gt;
 &lt;th&gt;Type&lt;/th&gt;
 &lt;th&gt;Description&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;query&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;string&lt;/td&gt;
 &lt;td&gt;Partial string to match against note title, path, and slug.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;strong&gt;Request:&lt;/strong&gt;&lt;/p&gt;</description></item><item><title>links</title><link>https://kristianjborgwarth.github.io/dendrite.docs/docs/concepts/links/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://kristianjborgwarth.github.io/dendrite.docs/docs/concepts/links/</guid><description>&lt;h2 id="links"&gt;&lt;strong&gt;links&lt;/strong&gt;&lt;a class="anchor" href="#links"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Dendrite supports two kinds of links:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Internal links&lt;/strong&gt; between notes in your vault, using the &lt;code&gt;[[my-note-about-pasta]]&lt;/code&gt; syntax.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;External links&lt;/strong&gt; to URLs, using standard markdown &lt;code&gt;[text](url)&lt;/code&gt; syntax.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Internal links can also carry display text using the pipe separator: &lt;code&gt;[[my-note-about-pasta|Pasta Notes]]&lt;/code&gt;. In this form, the part before the pipe is the target slug and the part after is what the client may choose to render.&lt;/p&gt;
&lt;blockquote class="book-hint info" &gt;
&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; Handling of links is up to the client application. In &lt;code&gt;dendrite.nvim&lt;/code&gt;, external links are rendered as clickable links that open in the default web browser and internal links are opened in a new buffer.&lt;/p&gt;</description></item><item><title>queries</title><link>https://kristianjborgwarth.github.io/dendrite.docs/docs/daemon/methods/query_commands/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://kristianjborgwarth.github.io/dendrite.docs/docs/daemon/methods/query_commands/</guid><description>&lt;h1 id="queries"&gt;&lt;strong&gt;queries&lt;/strong&gt;&lt;a class="anchor" href="#queries"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;Queries read from the index without modifying it. They are used for navigation, discovery, and search.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="goto-note"&gt;&lt;strong&gt;goto note&lt;/strong&gt;&lt;a class="anchor" href="#goto-note"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Supplied with a valid link, returns a target and a type. The target is what the client should navigate to. The type indicates whether the link points to another note within the vault or to an external URL. See &lt;a href="https://kristianjborgwarth.github.io/dendrite.docs/docs/concepts/links/"&gt;links&lt;/a&gt; for details.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Method:&lt;/strong&gt; &lt;code&gt;note/goto&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Params:&lt;/strong&gt;&lt;/p&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Field&lt;/th&gt;
 &lt;th&gt;Type&lt;/th&gt;
 &lt;th&gt;Description&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;link&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;string&lt;/td&gt;
 &lt;td&gt;A link extracted from a note.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;strong&gt;Request:&lt;/strong&gt;&lt;/p&gt;</description></item><item><title>templates</title><link>https://kristianjborgwarth.github.io/dendrite.docs/docs/concepts/templates/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://kristianjborgwarth.github.io/dendrite.docs/docs/concepts/templates/</guid><description>&lt;h1 id="templates"&gt;&lt;strong&gt;templates&lt;/strong&gt;&lt;a class="anchor" href="#templates"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;Templates define the initial content of a newly created note. They live in a dedicated template directory configured at vault initialization (the &lt;code&gt;templateDirectory&lt;/code&gt; parameter of &lt;code&gt;vault/init&lt;/code&gt;).&lt;/p&gt;
&lt;h2 id="template-directory"&gt;&lt;strong&gt;template directory&lt;/strong&gt;&lt;a class="anchor" href="#template-directory"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;The template directory is an ordinary folder containing markdown files. Each file is a template, and its filename (without extension) is the template name. For example, &lt;code&gt;daily.md&lt;/code&gt; in the template directory is referenced as &lt;code&gt;daily&lt;/code&gt; when creating a note.&lt;/p&gt;
&lt;h2 id="placeholders"&gt;&lt;strong&gt;placeholders&lt;/strong&gt;&lt;a class="anchor" href="#placeholders"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Templates support the following placeholders, which are expanded at note creation time:&lt;/p&gt;</description></item><item><title>diagnostics</title><link>https://kristianjborgwarth.github.io/dendrite.docs/docs/daemon/methods/diagnostics/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://kristianjborgwarth.github.io/dendrite.docs/docs/daemon/methods/diagnostics/</guid><description>&lt;h1 id="diagnostics"&gt;&lt;strong&gt;diagnostics&lt;/strong&gt;&lt;a class="anchor" href="#diagnostics"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;Diagnostic commands inspect the index for inconsistencies without modifying it. They are intended to help clients surface problems to the user in real time.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="diagnosticslinks"&gt;&lt;strong&gt;diagnostics/links&lt;/strong&gt;&lt;a class="anchor" href="#diagnosticslinks"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Scans the links recorded for a given note and returns any that point to a slug that does not exist in the index. Intended to be called after a note is saved or opened so clients can display inline warnings.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Method:&lt;/strong&gt; &lt;code&gt;diagnostics/links&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Params:&lt;/strong&gt;&lt;/p&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Field&lt;/th&gt;
 &lt;th&gt;Type&lt;/th&gt;
 &lt;th&gt;Description&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;path&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;string&lt;/td&gt;
 &lt;td&gt;Absolute path to the note to check.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;strong&gt;Request:&lt;/strong&gt;&lt;/p&gt;</description></item><item><title>installation</title><link>https://kristianjborgwarth.github.io/dendrite.docs/docs/installation/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://kristianjborgwarth.github.io/dendrite.docs/docs/installation/</guid><description>&lt;h1 id="1-installation"&gt;&lt;strong&gt;1. installation&lt;/strong&gt;&lt;a class="anchor" href="#1-installation"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;Installing dendrite.daemon is a prerequisite to any client working, as they depend on the
daemon.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="11-requirements"&gt;&lt;strong&gt;1.1 requirements&lt;/strong&gt;&lt;a class="anchor" href="#11-requirements"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Requirement&lt;/th&gt;
 &lt;th&gt;Notes&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;Linux or macOS&lt;/td&gt;
 &lt;td&gt;Windows is not supported.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Neovim 0.9+&lt;/td&gt;
 &lt;td&gt;Required for the diagnostic API used by the plugin.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;curl&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Used by the install script to download the binary.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;hr&gt;
&lt;h2 id="2-install-the-daemon"&gt;&lt;strong&gt;2. install the daemon&lt;/strong&gt;&lt;a class="anchor" href="#2-install-the-daemon"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Run the install script. It will detect your OS and CPU architecture, download the correct binary from the latest release, and place it on your PATH.&lt;/p&gt;</description></item></channel></rss>