mirror of
https://github.com/martinlegend/neogdsync.git
synced 2026-07-22 06:08:29 +00:00
No description
When a new folder and files inside it are created on device A and synced to Drive, device B's smart sync silently skipped all files in that folder. Root cause: the unknownChanges loop in smartSync() skipped FOLDER_MIME entries before files were processed, so when a file's parent folder was also new (not yet in the local index), folderIdToPath.get(parentId) returned undefined and the file was dropped with a console.warn. Fix: split the loop into two passes — Pass 1 resolves new folders and registers them in folderIdToPath, Pass 2 resolves files using the now- complete folder map. This ensures files in newly-created subfolders (e.g. 2026/Attachments/Nala Project/nala.pdf) are downloaded correctly on all other devices without requiring a manual Rebuild Index. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> |
||
|---|---|---|
| src | ||
| .gitignore | ||
| esbuild.config.mjs | ||
| eslint.config.mjs | ||
| LICENSE | ||
| main.js | ||
| manifest.json | ||
| package-lock.json | ||
| package.json | ||
| README.md | ||
| styles.css | ||
| tsconfig.json | ||
| versions.json | ||
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 handler —
obsidian://neogdsync?mode=smart|push|pullfor automation
Setup
- Install the plugin
- Go to Settings → NeoGDSync
- Enter your Google OAuth2 Refresh Token
- Enter your Google Drive Vault Root Folder ID (the Drive folder that maps to your vault root)
- 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 Google Drive for Desktop OAuth flow
- Any OAuth2 tool using scope
https://www.googleapis.com/auth/drive
The token is stored locally in your vault's plugin data and never leaves your device except to authenticate with Google.
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