Obsidian plugin to sync notes to digital garden
https://brad.quest/garden
- TypeScript 94%
- CSS 4.5%
- JavaScript 1.5%
Prepends a publish-ready frontmatter block to the current note, pre-filled with the vault path and filename-as-title. Cursor lands in the tags brackets for quick entry. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> |
||
|---|---|---|
| forgejo | ||
| sync | ||
| views | ||
| .gitignore | ||
| esbuild.config.mjs | ||
| main.ts | ||
| manifest.json | ||
| package-lock.json | ||
| package.json | ||
| README.md | ||
| settings.ts | ||
| styles.css | ||
| tsconfig.json | ||
brad.quest-sync
Obsidian plugin that publishes garden notes from an Obsidian vault to brad.quest via the Forgejo API.
Ports the sync logic from brad.quest/scripts/sync-vault.py into TypeScript so no local git clone is needed — commits go straight to Forgejo from inside Obsidian.
Install (dev)
cd brad.quest-sync
npm install
npm run build # produces main.js
Then copy these three files into your Obsidian vault:
{vault}/.obsidian/plugins/brad-quest-sync/
main.js
manifest.json
styles.css
Enable "Brad Quest Sync" in Obsidian Settings → Community Plugins.
Configure
Settings → Brad Quest Sync:
- Forgejo URL:
https://git.brads.house - Repo slug:
brad/brad.quest - Branch:
main - Access token: a Forgejo personal access token with
write:repositoryscope on the target repo
Use
- Ribbon icon (💀) opens the sync panel
- Click Preview changes — scans the vault, fetches current repo state, shows the diff
- Click Publish — sends a single atomic commit with all changes
- Command palette: "Toggle dg-publish on current note" to quickly un/publish the active note
Architecture
sync/frontmatter.ts— YAML-ish parser matching the Python scriptsync/hashtags.ts— hashtag extraction from body/first-linesync/images.ts— wikilink + markdown image resolution via Obsidian's metadata cachesync/transformer.ts— turns a vault TFile into its repo (path, content, images)sync/scanner.ts— walks vault fordg-publish: truenotessync/diff.ts— compares local state to remote, detects renames, produces FileChange listforgejo/client.ts— minimal Forgejo API client (list contents, batch commit)views/sync-view.ts— right-sidebar UI