Obsidian plugin to sync notes to digital garden https://brad.quest/garden
  • TypeScript 94%
  • CSS 4.5%
  • JavaScript 1.5%
Find a file
Brad Wenner 24fa535409 commands: add "Insert publish template frontmatter"
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>
2026-04-12 13:48:46 -07:00
forgejo perf: SHA-based pre-filter + tree API + parallel fetch 2026-04-12 13:31:41 -07:00
sync perf: SHA-based pre-filter + tree API + parallel fetch 2026-04-12 13:31:41 -07:00
views commit messages: summarize what changed instead of generic 2026-04-12 13:39:21 -07:00
.gitignore initial: brad.quest-sync Obsidian plugin 2026-04-12 13:25:47 -07:00
esbuild.config.mjs initial: brad.quest-sync Obsidian plugin 2026-04-12 13:25:47 -07:00
main.ts commands: add "Insert publish template frontmatter" 2026-04-12 13:48:46 -07:00
manifest.json initial: brad.quest-sync Obsidian plugin 2026-04-12 13:25:47 -07:00
package-lock.json initial: brad.quest-sync Obsidian plugin 2026-04-12 13:25:47 -07:00
package.json initial: brad.quest-sync Obsidian plugin 2026-04-12 13:25:47 -07:00
README.md initial: brad.quest-sync Obsidian plugin 2026-04-12 13:25:47 -07:00
settings.ts initial: brad.quest-sync Obsidian plugin 2026-04-12 13:25:47 -07:00
styles.css initial: brad.quest-sync Obsidian plugin 2026-04-12 13:25:47 -07:00
tsconfig.json initial: brad.quest-sync Obsidian plugin 2026-04-12 13:25:47 -07:00

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:repository scope 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 script
  • sync/hashtags.ts — hashtag extraction from body/first-line
  • sync/images.ts — wikilink + markdown image resolution via Obsidian's metadata cache
  • sync/transformer.ts — turns a vault TFile into its repo (path, content, images)
  • sync/scanner.ts — walks vault for dg-publish: true notes
  • sync/diff.ts — compares local state to remote, detects renames, produces FileChange list
  • forgejo/client.ts — minimal Forgejo API client (list contents, batch commit)
  • views/sync-view.ts — right-sidebar UI