diff --git a/docs/releases/1.0.md b/docs/releases/1.0.md index e6f105ab..8d7731e1 100644 --- a/docs/releases/1.0.md +++ b/docs/releases/1.0.md @@ -2,6 +2,20 @@ 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.31 + +26th September, 2026 + +### Synchronisation and storage + +#### Fixed + +- 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.30 18th September, 2026 diff --git a/manifest.json b/manifest.json index 63cf5be3..7c275c93 100644 --- a/manifest.json +++ b/manifest.json @@ -1,7 +1,7 @@ { "id": "obsidian-livesync", "name": "Self-hosted LiveSync", - "version": "1.0.35", + "version": "1.0.36", "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 6a4bdc03..3b44d057 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "obsidian-livesync", - "version": "1.0.35", + "version": "1.0.36", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "obsidian-livesync", - "version": "1.0.35", + "version": "1.0.36", "license": "MIT", "workspaces": [ "src/apps/cli", @@ -11862,11 +11862,11 @@ }, "src/apps/cli": { "name": "self-hosted-livesync-cli", - "version": "1.0.35-cli", + "version": "1.0.36-cli", "dependencies": { "chokidar": "^4.0.0", "minimatch": "^10.2.5", - "octagonal-wheels": "^0.1.54", + "octagonal-wheels": "^0.1.55", "pouchdb-adapter-http": "^9.0.0", "pouchdb-adapter-leveldb": "^9.0.0", "pouchdb-core": "^9.0.0", @@ -11887,9 +11887,9 @@ }, "src/apps/webapp": { "name": "livesync-webapp", - "version": "1.0.35-webapp", + "version": "1.0.36-webapp", "dependencies": { - "octagonal-wheels": "^0.1.54" + "octagonal-wheels": "^0.1.55" }, "devDependencies": { "@sveltejs/vite-plugin-svelte": "^7.1.2", @@ -11899,9 +11899,9 @@ } }, "src/apps/webpeer": { - "version": "1.0.35-webpeer", + "version": "1.0.36-webpeer", "dependencies": { - "octagonal-wheels": "^0.1.54" + "octagonal-wheels": "^0.1.55" }, "devDependencies": { "@sveltejs/vite-plugin-svelte": "^7.1.2", diff --git a/package.json b/package.json index c81ba53c..d8b01112 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "obsidian-livesync", - "version": "1.0.35", + "version": "1.0.36", "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 208659aa..fdec9290 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.35-cli", + "version": "1.0.36-cli", "main": "dist/index.cjs", "type": "module", "scripts": { @@ -37,7 +37,7 @@ "dependencies": { "chokidar": "^4.0.0", "minimatch": "^10.2.5", - "octagonal-wheels": "^0.1.54", + "octagonal-wheels": "^0.1.55", "pouchdb-adapter-http": "^9.0.0", "pouchdb-adapter-leveldb": "^9.0.0", "pouchdb-core": "^9.0.0", diff --git a/src/apps/webapp/package.json b/src/apps/webapp/package.json index 1c6993bb..7b4129ff 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.35-webapp", + "version": "1.0.36-webapp", "type": "module", "description": "Browser-based Self-hosted LiveSync using FileSystem API", "scripts": { @@ -15,7 +15,7 @@ "test:browser": "deno test -A --no-check --frozen --config ../../../test/browser-apps/deno.json --lock ../../../test/browser-apps/deno.lock ../../../test/browser-apps/webapp/browser-smoke.test.ts" }, "dependencies": { - "octagonal-wheels": "^0.1.54" + "octagonal-wheels": "^0.1.55" }, "devDependencies": { "@sveltejs/vite-plugin-svelte": "^7.1.2", diff --git a/src/apps/webpeer/package.json b/src/apps/webpeer/package.json index 85b3a6ba..fb45ced0 100644 --- a/src/apps/webpeer/package.json +++ b/src/apps/webpeer/package.json @@ -1,7 +1,7 @@ { "name": "webpeer", "private": true, - "version": "1.0.35-webpeer", + "version": "1.0.36-webpeer", "type": "module", "scripts": { "dev": "vite", @@ -15,7 +15,7 @@ "test:browser": "deno test -A --no-check --frozen --config ../../../test/browser-apps/deno.json --lock ../../../test/browser-apps/deno.lock ../../../test/browser-apps/webpeer/browser-smoke.test.ts" }, "dependencies": { - "octagonal-wheels": "^0.1.54" + "octagonal-wheels": "^0.1.55" }, "devDependencies": { "eslint-plugin-svelte": "^3.19.0", diff --git a/updates.md b/updates.md index 6503da6c..2a25ed9f 100644 --- a/updates.md +++ b/updates.md @@ -12,12 +12,18 @@ Earlier releases remain available in the 1.0 release history, the 1.0 preview hi ## Unreleased +## 1.0.36 + +13th October, 2026 + ### Configuration Encryption #### Fixed -- We now apply the settings for protecting sensitive configuration together, so a successful Apply keeps the saved settings under the selected passphrase. If Apply fails, the edits remain available to retry. (#1238) -- We can now enter a missing or unusable custom configuration passphrase at start-up to unlock protected settings. Cancelling the custom-key recovery prompt preserves the encrypted configuration and stops that start-up attempt; headless command-line start-up cannot complete that prompt when recovery input is required. (#1239) +- We can change the protection of sensitive configuration with Apply and keep our saved settings readable after a restart. (#1238, #1245) + - The selected protection mode and passphrase are saved together. If Apply fails, our edits remain available to retry. +- We can enter a missing or unusable custom configuration passphrase at start-up to unlock our protected settings. (#1239, #1245) + - Cancelling the recovery dialogue preserves the encrypted configuration and stops that start-up attempt. Headless command-line start-up cannot complete the dialogue when recovery input is required. ### Localisation @@ -26,17 +32,19 @@ Earlier releases remain available in the 1.0 release history, the 1.0 preview hi - We can read more settings, maintenance controls, and Fast Setup instructions in Spanish. (#1213, #1214) - Remote database lock warnings now use the existing translations consistently. - Fast Setup follows the selected display language while preserving saved choices across restarts and language changes. +- We can read more settings, setup instructions, and messages in Simplified Chinese. (#1242) ### Maintenance -- Build copying and import alias checks now use repository-owned helpers, removing the vulnerable `braces` dependency from development tooling. -- Updated compatible development dependencies with available security fixes. +- Development tooling now uses compatible dependency versions with available security fixes. (#1245) + - Repository-owned build and import alias helpers remove the vulnerable `braces` dependency. ### Acknowledgements Thank you for your contributions! - @zeedif (#1213, #1214) +- @lingting0 (#1242) ## 1.0.35 @@ -171,17 +179,3 @@ The 1.0.31 pre-release was not promoted after validation found that a receiving - 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 - -### Synchronisation and storage - -#### Fixed - -- 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 b8bb183c..f68eb530 100644 --- a/versions.json +++ b/versions.json @@ -46,5 +46,6 @@ "1.0.32": "1.7.2", "1.0.33": "1.7.2", "1.0.34": "1.7.2", - "1.0.35": "1.7.2" + "1.0.35": "1.7.2", + "1.0.36": "1.7.2" }