Add davemhammer/obsidian (#285)

* Add davemhammer/obsidian

Address review: vault path confinement, open_daily vault check,
declare runtime deps (xdg-open, find, sort, head), version 1.0.3.

* Address review: realpath + symlink confinement for vault paths

Reject symlink path components and require realpath -m under vault
before daily read/mkdir/write. Add realpath dependency; v1.0.4.

* Harden recent-notes scan: find -P + path normalize (v1.0.5)

Explicitly never follow symlinks when listing recent markdown; drop
invalid relative paths before display. Align README Notes and bump
version so PR trust attestation matches code.

* Docs: clarify obsidian URI handler and IPC (v1.0.6)

Align README with code for dependency role, capture IPC, and git abort.
This commit is contained in:
Dave Hammer
2026-08-08 17:48:59 -04:00
committed by GitHub
parent 95595088d9
commit 32b7e28c25
15 changed files with 2183 additions and 0 deletions
+120
View File
@@ -0,0 +1,120 @@
{
"title": "Obsidian",
"settings": {
"vault_path": {
"label": "Vault path",
"description": "Root folder of the Obsidian vault."
},
"vault_name": {
"label": "Vault name (URI)",
"description": "Name used in obsidian:// links. Empty = folder name."
},
"daily_folder": {
"label": "Daily notes folder",
"description": "Relative to vault root (empty = vault root)."
},
"daily_format": {
"label": "Daily filename format",
"description": "strftime pattern without .md (default %Y-%m-%d)."
},
"git_commit_message": {
"label": "Default commit message",
"description": "Used when Commit is clicked with an empty message field."
},
"refresh_interval": {
"label": "Refresh interval (seconds)",
"description": "How often to rescan recent notes and git status."
},
"notify_on_action": {
"label": "Notify on actions",
"description": "Desktop notification after capture / git actions."
},
"show_dirty": {
"label": "Show dirty count",
"description": "Show number of changed git files on the bar."
}
},
"widget": {
"tooltip_ok": "{vault} · daily {daily} · git {git}",
"tooltip_missing": "Vault path missing or not a vault",
"tooltip_nogit": "{vault} · no git repo",
"refresh_requested": "Refreshing vault…"
},
"panel": {
"loading": "Scanning vault…",
"busy": "Working…",
"empty": "Nothing to show.",
"select_hint": "Select a note for actions.",
"updated": "Updated {time}",
"vault": "{name}",
"summary": "Daily {daily} · {recent} recent · git {git}",
"capture_placeholder": "Quick note (appended to daily with timestamp)…",
"commit_placeholder": "Commit message (optional)…",
"daily_missing": "Daily note will be created on first capture.",
"daily_path": "Daily: {path}",
"git_branch": "Branch {branch} · {ahead}↑ {behind}↓ · {dirty} dirty",
"git_clean": "Working tree clean",
"git_nogit": "Not a git repository",
"git_files": "Changed files",
"git_in_progress": "Git {kind} in progress — abort before other actions"
},
"tabs": {
"daily": "Daily",
"recent": "Recent",
"git": "Git"
},
"filter": {
"placeholder": "Filter notes…"
},
"actions": {
"open_vault": "Open vault",
"open_daily": "Open daily",
"open_note": "Open",
"capture": "Add to daily",
"refresh": "Refresh",
"copy_link": "Copy [[link]]",
"copy_path": "Copy path",
"git_status": "Status",
"git_commit": "Commit",
"git_pull": "Pull",
"git_push": "Push",
"git_sync": "Pull + push",
"git_abort": "Abort rebase/merge"
},
"result": {
"success": "Done",
"failed": "Failed: {error}",
"busy": "Another operation is running.",
"missing_vault": "Vault not found. Set vault path in settings.",
"invalid_daily_path": "Daily note path is invalid or outside the vault ({error}).",
"invalid_note_path": "Note path is invalid or outside the vault ({error}).",
"captured": "Appended to {name}",
"opened": "Opening…",
"copied": "Copied {name}",
"git_clean": "Working tree clean",
"git_committed": "Committed ({n} files)",
"git_nothing": "Nothing to commit",
"git_pulled": "Pull finished",
"git_pushed": "Push finished",
"git_synced": "Pull + push finished",
"git_in_progress": "Git {kind} in progress — use Abort first",
"git_not_in_progress": "No rebase or merge in progress",
"git_aborted": "Aborted {kind}"
},
"launcher": {
"loading": "Loading vault…",
"missing": "Vault not configured",
"cat": {
"daily": "Open daily note",
"daily-sub": "Today’s note in Obsidian",
"capture": "Capture…",
"capture-sub": "Type: /ob capture your text",
"git": "Git status",
"git-sub": "Dirty / ahead / behind",
"panel": "Open panel",
"panel-sub": "Full Obsidian manager",
"refresh": "Refresh",
"refresh-sub": "Rescan vault + git"
}
}
}