No description
Find a file
ml2310 b90fcf458a chore: sync package-lock.json to current version/license
Lockfile was stale at 1.0.6/ISC across several version bumps.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-07-13 17:22:16 +08:00
docs Add NeoGDSync logo 2026-06-04 16:40:08 +08:00
oauth-proxy v1.0.9: fix data-loss and correctness bugs across the sync engine (rebased onto v1.0.8) (#5) 2026-07-13 11:56:55 +08:00
src v1.0.10: mask refresh token field in settings (#6) 2026-07-13 15:10:16 +08:00
tests v1.0.9: fix data-loss and correctness bugs across the sync engine (rebased onto v1.0.8) (#5) 2026-07-13 11:56:55 +08:00
.gitignore chore: ignore data.json backups (contain refresh token) 2026-07-12 12:34:08 +08:00
esbuild.config.mjs Initial release of NeoGDSync v0.1.0 2026-04-13 01:44:39 +08:00
eslint.config.mjs Fix: revert ID→id overcorrection; eslint-plugin confirms ID is correct (acronym) 2026-04-15 11:55:45 +08:00
LICENSE Add MIT LICENSE 2026-04-14 00:09:51 +08:00
main.js v1.0.10: mask refresh token field in settings (#6) 2026-07-13 15:10:16 +08:00
manifest.json v1.0.10: mask refresh token field in settings (#6) 2026-07-13 15:10:16 +08:00
package-lock.json chore: sync package-lock.json to current version/license 2026-07-13 17:22:16 +08:00
package.json v1.0.10: mask refresh token field in settings (#6) 2026-07-13 15:10:16 +08:00
README.md v1.0.9: fix data-loss and correctness bugs across the sync engine (rebased onto v1.0.8) (#5) 2026-07-13 11:56:55 +08:00
styles.css Fix review bot: replace element.style.* with CSS class 2026-05-01 17:59:31 +08:00
tsconfig.json v1.0.9: fix data-loss and correctness bugs across the sync engine (rebased onto v1.0.8) (#5) 2026-07-13 11:56:55 +08:00
versions.json v1.0.10: mask refresh token field in settings (#6) 2026-07-13 15:10:16 +08:00
vitest.config.ts v1.0.9: fix data-loss and correctness bugs across the sync engine (rebased onto v1.0.8) (#5) 2026-07-13 11:56:55 +08:00

NeoGDSync logo

NeoGDSync

Lightweight Google Drive sync plugin for Obsidian.

Features

  • Smart Sync — auto conflict detection, only syncs changed files
  • Force Push — local vault → Google Drive
  • Force Pull — Google Drive → local vault
  • Conflict handling — saves Drive copy as a conflict file, never overwrites silently
  • Path-based index — fast, no full crawl needed after first sync
  • Version history — optionally keep file revisions on Drive
  • Configurable excludes — glob patterns to skip files/folders
  • URI handlerobsidian://neogdsync?mode=smart|push|pull for automation

Setup

  1. Install the plugin
  2. Go to Settings → NeoGDSync
  3. Enter your Google OAuth2 Refresh Token
  4. Enter your Google Drive Vault Root Folder ID (the Drive folder that maps to your vault root)
  5. Click the ☁ ribbon icon or run a command to sync

Getting a Refresh Token

This plugin uses a standard OAuth2 refresh token with read/write access to Google Drive.

You can obtain one via:

The refresh token is stored locally in your vault's plugin data. To obtain short-lived access tokens, the plugin sends the refresh token to an OAuth proxy (by default the NeoGDSync Cloudflare Worker, see oauth-proxy/worker.js), which exchanges it with Google and returns the access token. The proxy does not store tokens. If you prefer not to route through the shared proxy, deploy your own Worker (instructions in oauth-proxy/worker.js) and set its URL in Settings → NeoGDSync → Auth proxy URL.

Commands

Command Description
Smart Sync Detect and sync only changed files, with conflict detection
Force Push Upload all local changes to Drive
Force Pull Download all Drive changes to local
Rebuild Drive Index Re-crawl Drive vault folder to rebuild index
Show Conflicts View detected conflicts

URI Handler

Trigger sync from outside Obsidian (Shortcuts, scripts, etc.):

obsidian://neogdsync?mode=smart
obsidian://neogdsync?mode=push
obsidian://neogdsync?mode=pull

License

MIT