#obsidian-vault #notes #markdown #tui #vaults #heading-level #from-str

basalt-core

Provides the core functionality for Basalt TUI application

17 releases (6 breaking)

0.8.3 Feb 21, 2026
0.8.0 Dec 26, 2025
0.6.1 Jun 7, 2025
0.2.2 Feb 27, 2025

#1293 in Filesystem

Download history 31/week @ 2025-12-29 37/week @ 2026-01-05 62/week @ 2026-01-12 85/week @ 2026-01-19 106/week @ 2026-01-26 70/week @ 2026-02-02 65/week @ 2026-02-09 120/week @ 2026-02-16 129/week @ 2026-02-23 59/week @ 2026-03-02 83/week @ 2026-03-09 73/week @ 2026-03-16 41/week @ 2026-03-23 49/week @ 2026-03-30 60/week @ 2026-04-06 44/week @ 2026-04-13

200 downloads per month
Used in 2 crates

MIT license

65KB
1K SLoC

Basalt Core: basalt-core

This crate provides the core functionality for Basalt TUI application and interoperability layer to Obsidian vaults and notes.

Obsidian

Obsidian module provides functionality operating with Obsidian. It lets you read and manipulate Obsidian's configuration, vaults, and notes.

Currently supports reading vaults, notes, and writing to note path.

Example

use basalt_core::obsidian::{ObsidianConfig, Error, Vault};

let config = ObsidianConfig::from([
  ("Obsidian", Vault::default()),
  ("My Vault", Vault::default()),
]);

_ = config.get_vault_by_name("Obsidian");

Markdown

Markdown module provides a markdown parser that produces a custom AST using the pulldown_cmark::Parser. The "AST" acts as an intermediate layer. This enables segregation of the parsing logic into it's own module under basalt-core lib.

Example

use basalt_core::markdown::{from_str, Node, HeadingLevel, Text};

let markdown = "# My Heading\n\nSome text.";
let nodes = from_str(markdown);

assert_eq!(nodes, vec![
  Node::Heading {
    level: HeadingLevel::H1,
    text: Text::from("My Heading"),
  },
  Node::Paragraph {
    text: Text::from("Some text."),
  },
])

Dependencies

~1.2–4MB
~79K SLoC