diff --git a/docs/releases/1.0.md b/docs/releases/1.0.md index 8d7731e1..59912591 100644 --- a/docs/releases/1.0.md +++ b/docs/releases/1.0.md @@ -2,6 +2,23 @@ This document contains earlier published releases from the 1.0 line of the [current Self-hosted LiveSync release history](../../updates.md). Beta and release-candidate builds published before 1.0.0 are recorded in the [1.0 preview history](1.0-previews.md). Earlier release lines continue in the [0.25 history](0.25.md) and the [legacy history](legacy.md). +## 1.0.32 + +27th September, 2026 + +The 1.0.31 pre-release was not promoted after validation found that a receiving device could reject encrypted CouchDB changes when Path Obfuscation was enabled. This release includes its changes and corrects that issue. + +### Synchronisation and storage + +#### Fixed + +- The receiving device now accepts encrypted file information when both end-to-end encryption and Path Obfuscation are enabled. The 1.0.31 pre-release could reject this information, leaving files from another device absent from the Vault. +- Files with colons in their names now retain their full paths in synchronisation data instead of appearing as incorrectly named copies at the Vault root. (#1206) + - Obsidian may refuse to create a missing file with such a name. LiveSync also treats these names as invalid on Windows and Android, so the file may not appear in those devices' Vaults. Existing misplaced copies are left for you to review; this change does not remove them automatically. +- Received changes within the configured modification-time limit are applied to the Vault again while remediation mode is active. Changes newer than the limit remain blocked; changes arriving while a fetch makes the local database unavailable are kept for a later attempt. +- A scheduled fetch no longer offers Simple Fetch while remediation mode is active. This prevents the fetch from bypassing the modification-time limit; the detailed flow explains the restriction and offers to clear it first (#1202). Thank you to @kimjansheden for both fixes and the regression tests in PR #1208! +- On start-up, an unchanged file with a missing local revision record can be recognised before newer content arrives, avoiding an unnecessary conflict. Files with actual local edits still require conflict review. (#1207) + ## 1.0.31 26th September, 2026 diff --git a/manifest.json b/manifest.json index 7c275c93..7c23c321 100644 --- a/manifest.json +++ b/manifest.json @@ -1,7 +1,7 @@ { "id": "obsidian-livesync", "name": "Self-hosted LiveSync", - "version": "1.0.36", + "version": "1.0.37", "minAppVersion": "1.7.2", "description": "Community implementation of self-hosted livesync. Reflect your vault changes to some other devices immediately. Please make sure to disable other synchronize solutions to avoid content corruption or duplication.", "author": "vorotamoroz", diff --git a/package-lock.json b/package-lock.json index cc64cbc6..6aadafc4 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "obsidian-livesync", - "version": "1.0.36", + "version": "1.0.37", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "obsidian-livesync", - "version": "1.0.36", + "version": "1.0.37", "license": "MIT", "workspaces": [ "src/apps/cli", @@ -11862,7 +11862,7 @@ }, "src/apps/cli": { "name": "self-hosted-livesync-cli", - "version": "1.0.36-cli", + "version": "1.0.37-cli", "dependencies": { "chokidar": "^4.0.0", "minimatch": "^10.2.5", @@ -11887,7 +11887,7 @@ }, "src/apps/webapp": { "name": "livesync-webapp", - "version": "1.0.36-webapp", + "version": "1.0.37-webapp", "dependencies": { "octagonal-wheels": "^0.1.55" }, @@ -11899,7 +11899,7 @@ } }, "src/apps/webpeer": { - "version": "1.0.36-webpeer", + "version": "1.0.37-webpeer", "dependencies": { "octagonal-wheels": "^0.1.55" }, diff --git a/package.json b/package.json index c725c1f4..16dc3c0b 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "obsidian-livesync", - "version": "1.0.36", + "version": "1.0.37", "description": "Reflect your vault changes to some other devices immediately. Please make sure to disable other synchronize solutions to avoid content corruption or duplication.", "main": "main.js", "type": "module", diff --git a/src/apps/cli/package.json b/src/apps/cli/package.json index fdec9290..bef046f8 100644 --- a/src/apps/cli/package.json +++ b/src/apps/cli/package.json @@ -1,7 +1,7 @@ { "name": "self-hosted-livesync-cli", "private": true, - "version": "1.0.36-cli", + "version": "1.0.37-cli", "main": "dist/index.cjs", "type": "module", "scripts": { diff --git a/src/apps/webapp/package.json b/src/apps/webapp/package.json index 7b4129ff..f9e24148 100644 --- a/src/apps/webapp/package.json +++ b/src/apps/webapp/package.json @@ -1,7 +1,7 @@ { "name": "livesync-webapp", "private": true, - "version": "1.0.36-webapp", + "version": "1.0.37-webapp", "type": "module", "description": "Browser-based Self-hosted LiveSync using FileSystem API", "scripts": { diff --git a/src/apps/webpeer/package.json b/src/apps/webpeer/package.json index fb45ced0..e6b8dcba 100644 --- a/src/apps/webpeer/package.json +++ b/src/apps/webpeer/package.json @@ -1,7 +1,7 @@ { "name": "webpeer", "private": true, - "version": "1.0.36-webpeer", + "version": "1.0.37-webpeer", "type": "module", "scripts": { "dev": "vite", diff --git a/updates.md b/updates.md index d362d1a4..31d529ec 100644 --- a/updates.md +++ b/updates.md @@ -12,6 +12,14 @@ Earlier releases remain available in the 1.0 release history, the 1.0 preview hi ## Unreleased +## 1.0.37 + +16th October, 2026 + +### Security + +- Fixed an issue where synchronised changes could reach files outside the intended synchronisation scope under certain conditions. Updating is recommended. + ### CLI #### Fixed @@ -23,6 +31,12 @@ Earlier releases remain available in the 1.0 release history, the 1.0 preview hi - We can select CLI-only Docker patches by their full release tag, such as `1.0.36-patch1-cli`, while keeping the Obsidian plug-in version. - Patch and RC images receive version and SHA-qualified tags. The `latest` and major-minor tags remain reserved for ordinary stable releases. +### Acknowledgements + +Thank you for your contributions! + +- @kimjansheden, for reporting the issue and contributing the fix and regression tests. + ## 1.0.36 13th October, 2026 @@ -173,20 +187,3 @@ Thank you for your contributions! ### Issue replies I am a little behind on replying to issues, but I am reading them and will respond as I work through them. I have had little uninterrupted time recently, and that should improve soon. - -## 1.0.32 - -27th September, 2026 - -The 1.0.31 pre-release was not promoted after validation found that a receiving device could reject encrypted CouchDB changes when Path Obfuscation was enabled. This release includes its changes and corrects that issue. - -### Synchronisation and storage - -#### Fixed - -- The receiving device now accepts encrypted file information when both end-to-end encryption and Path Obfuscation are enabled. The 1.0.31 pre-release could reject this information, leaving files from another device absent from the Vault. -- Files with colons in their names now retain their full paths in synchronisation data instead of appearing as incorrectly named copies at the Vault root. (#1206) - - Obsidian may refuse to create a missing file with such a name. LiveSync also treats these names as invalid on Windows and Android, so the file may not appear in those devices' Vaults. Existing misplaced copies are left for you to review; this change does not remove them automatically. -- Received changes within the configured modification-time limit are applied to the Vault again while remediation mode is active. Changes newer than the limit remain blocked; changes arriving while a fetch makes the local database unavailable are kept for a later attempt. -- A scheduled fetch no longer offers Simple Fetch while remediation mode is active. This prevents the fetch from bypassing the modification-time limit; the detailed flow explains the restriction and offers to clear it first (#1202). Thank you to @kimjansheden for both fixes and the regression tests in PR #1208! -- On start-up, an unchanged file with a missing local revision record can be recognised before newer content arrives, avoiding an unnecessary conflict. Files with actual local edits still require conflict review. (#1207) diff --git a/versions.json b/versions.json index f68eb530..57ffb18a 100644 --- a/versions.json +++ b/versions.json @@ -47,5 +47,6 @@ "1.0.33": "1.7.2", "1.0.34": "1.7.2", "1.0.35": "1.7.2", - "1.0.36": "1.7.2" + "1.0.36": "1.7.2", + "1.0.37": "1.7.2" }