Skip to content

Feat: support generic workspaces#14

Merged
totocaster merged 3 commits intomainfrom
feat/generic-workspaces
Jan 31, 2026
Merged

Feat: support generic workspaces#14
totocaster merged 3 commits intomainfrom
feat/generic-workspaces

Conversation

@totocaster
Copy link
Owner

@totocaster totocaster commented Jan 31, 2026

Summary

Arrowhead now works out of the box inside arbitrary Markdown directories while remaining fully backward compatible with Obsidian vaults.

Workspace detection & settings

  1. Vault::new inspects .obsidian/ and .arrowhead/workspace.toml, logging which source was chosen and exposing helpers (workspace_kind, workspace_source). Non-Obsidian folders automatically inherit attachments, ignore lists, daily note formats, and link styles from the Arrowhead config file.
  2. Added arrowhead workspace show/set so users can inspect and mutate .arrowhead/workspace.toml without re-running arrowhead init --force. The command validates relative paths, prevents parent directory escapes, and refuses to run when Obsidian metadata is present.
  3. arrowhead init keeps behaviour unchanged inside Obsidian vaults, but when .obsidian/ is absent it seeds the workspace config up front, restores it after --force, and surfaces --attachments-dir, --ignore, --daily-note-format, and --link-style flags.

Runtime + MCP compatibility

  1. The daemon, CLI indexer, and MCP runtime all use the updated Vault::new, so they share the same workspace semantics with no extra wiring.
  2. MCP discovery_get_vault_conventions now emits both the legacy obsidian block and a new workspace payload so existing clients keep working while newer tools can reason about generic vaults. Tests cover both an Obsidian fixture and a synthetic generic workspace.
  3. Path normalization got stricter (no absolute paths or .. segments), preventing configs from pointing outside the vault. Docs describe the workflow so developers know how to configure generic workspaces.

@totocaster totocaster merged commit 0b761fd into main Jan 31, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant