Skip to content

Directory aspect detection

State: open/verified · Kind: module · Audience: system

  • Classifies a directory by marker subdirectories (.git/, .obsidian/) into an Aspect enum, and resolves an Obsidian vault’s own vault id from Obsidian’s global config.
  • Published standalone to crates.io as the fleet’s first crate on the snapshot-mirror publishing channel.

Desktop tooling that opens arbitrary directories (vault pickers, project registries) needs to know cheaply what kind of folder it has before enabling kind-specific behavior. detect_aspects checks for .git/ and .obsidian/ and returns a Vec<Aspect> that always includes Generic. detect_obsidian_vault_id reads Obsidian’s own obsidian.json so a moved vault is recognized by its existing id rather than re-minted.

  • detect_aspects(path) -> Vec<Aspect>: marker-directory classification.
  • detect_obsidian_vault_id(path) -> Option<String>: the Obsidian-assigned vault id, for obsidian://open?vault-id=... links.
  • Aspect serializes as lowercase strings; the optional specta feature derives Tauri/TypeScript bindings.
  • No workspace dependencies; tested and publishable on its own.
  • packages/rust/dir-aspect/src/lib.rs: the whole crate, with unit tests.
  • packages/rust/dir-aspect/
  • packages/rust/dir-aspect/src/lib.rs#Aspect
  • packages/rust/dir-aspect/src/lib.rs#detect_aspects
  • packages/rust/dir-aspect/src/lib.rs#detect_obsidian_vault_id

← Back to Capabilities