1.0.5
Everything from the 1.0.5 betas, released.
Choose what to keep when linking a vault
The starting-point comparison now asks two questions, each only when it applies:
- Which version wins for files that exist in both places with different contents — this vault, or GitHub.
- What to do with files only one side has — Keep both (merge), Use only this vault (delete GitHub's extras from the repository), or Use only GitHub (move the vault's extras to the trash).
Everything a choice loses is listed and confirmed before anything moves. A file deleted from GitHub stays in the repository's history; a trashed file follows Obsidian's own Deleted files setting. Files that already match on both sides are recorded as synced and never transferred.
Fixed: "Upload this vault" never actually uploaded a differing file. The push saw an untracked path GitHub already held and reported a collision, so you got conflict copies instead of your version winning.
Push and Reset & re-pull work with Sync off
Both buttons now work whatever the Sync switch says, and both show their progress in the button: it fills from the left as the file count advances, and slides while there is no count yet. Pressing Push on a vault that has never been linked runs the comparison above first, and the choice made there carries the push out; Sync stays off.
Polling reliability
- A 404 from GitHub's compare endpoint — a synced commit rewritten away, or a replica that had not seen it yet — was treated like a bad token and switched Sync off. It is now read as diverged and reconciled with deletions withheld; only a 404 the repository itself answers stops sync.
- The branch-ref poll bypasses the platform HTTP cache.
requestUrlgoes through Chromium's cache on desktop and the system cache on iOS, and GitHub marks API responses cacheable for a minute — long enough for a five-second poll to keep reporting a branch that had already moved. - The thorough check on returning to a device runs at most every five minutes instead of on every window focus, and focus and visibility no longer fire it twice.
- Transient 502/503/504 answers are retried with a short backoff instead of failing the operation.
Saved tokens
Every token that passes the connection check is kept in Obsidian's secret storage for this vault, labelled with the repository and the date. Settings shows a Saved tokens dropdown above the token field whenever there are any: choose one and the field below is greyed out and ignored, or choose Enter a new token to type one.
This is what a reinstall now offers. Uninstalling removes the plugin folder but not the vault's secret store, and Obsidian gives a plugin no hook at uninstall time, so the previous token used to reappear in the field by itself. It is now preselected in that list instead, and taking it up is a deliberate Save.
The reset arrow at the top of settings forgets every saved token, along with the credentials and the plugin's whole record of synced files, conflicts and logs. Its confirmation says so.
Data safety
Reset & re-pull trashed the vault's files, and those delete events armed a push that could have removed up to twenty files from GitHub without asking, before the re-pull brought them back. Vault events are now muted while the plugin moves files in bulk, and every pull write is marked as the plugin's own immediately before it happens rather than once at the start — where the mark lapsed long before a large pull finished, which is also what made "Local changes pending" flicker during a pull.
Smaller
- Saving credentials that point at a different repository or branch clears the synchronization record, which would otherwise read as mass deletions against the new repository. Saving a new token for the same repository no longer re-runs the comparison.
- Debug lines no longer rewrite the whole data file per line, and the status panel no longer rebuilds on every keystroke.