diff --git a/docs/releases/1.0.md b/docs/releases/1.0.md index 59912591..cc8731f8 100644 --- a/docs/releases/1.0.md +++ b/docs/releases/1.0.md @@ -2,6 +2,84 @@ 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.33 + +1st October, 2026 + +This has turned into quite a substantial release, and I think it brings meaningful improvements to the core of Self-hosted LiveSync. If you notice anything, please feel free to let me know. + +### Privacy and compatibility + +#### New Feature + +- An optional saved ID key can generate encrypted Chunk IDs and obfuscated Metadata document IDs independently of the current E2EE passphrase. + - New Vaults use a random key by default; existing Vaults keep their current ID configuration by default. You can also derive a key from the current E2EE passphrase, enter a separate source, or import a recovery code. The source is not retained; the saved key can be revealed locally as a recovery code. + - The saved key stays in place when the E2EE passphrase changes or E2EE is turned off. Share it with another device through a protected Setup URI. Changing document IDs on an existing remote requires the usual Rebuild and Fetch procedure. +- We can now keep the file properties used by Hidden File Sync and Customisation Sync private in CouchDB. + - **Encrypt internal file Properties** extends E2EE V2 and Property Encryption to their paths, times, sizes, and Chunk references. + - Existing configurations keep this preference disabled. New Vaults enable it for use when the required encryption settings are active. + - Update every synchronising device before enabling it. It protects future writes; a manual remote Rebuild is strongly recommended to protect existing properties. +- We can now see which unsupported feature prevents a client from synchronising with CouchDB. + - Clients check the features required by the remote before transferring data or resetting the local database for Fast Fetch. Receiving an unsupported requirement also stops active replication. + +- We can now compare ID generation performance on a desktop or mobile device through **Open review harness**, available with the developers' debug tools enabled. + - The copied report includes legacy and independent ID timings and, where available, approximate JavaScript heap samples. The measurement uses fixed test data and keeps our Vault and settings unchanged. + +#### Fixed + +- Updated `brace-expansion` and `markdown-it` to include upstream security fixes. +- We can now keep using an E2EE passphrase beginning with `%` after restarting Obsidian. (#1221) + - This plug-in encrypts it before saving the settings. If an earlier version saved it in plain text, re-enter the passphrase used to encrypt the existing data after updating. Treat that passphrase as exposed if the affected `data.json` was shared. +- A receiving device now retries an unavailable CouchDB Chunk when file Metadata arrives before that Chunk is visible, helping rapid edits reach the Vault after an initial on-demand lookup misses it. (#1224) + - Retries start after two seconds and continue with increasing delays while finite replication is active. When it ends, this plug-in checks locally and makes a final lookup if needed, without waiting out the remaining retry delay. +- We can now distinguish initial on-demand Chunk requests (`🛄`) from retries (`🔁`) in the status bar. These replace `🧩`; each pending Chunk appears in one category, including while a retry is waiting. + +### Synchronisation and storage + +#### Fixed + +- Received changes held during start-up or a fetch are applied when this plug-in becomes ready, without waiting for another change or a settings save. **Suspend database reflecting** continues to hold changes (#1200). +- Customisation Sync now compares full millisecond timestamps, so the freshness labels and **Select All Shiny** no longer mistake an older copy for a newer one because of timestamp truncation. (#1194) +- **Hide not applicable items** now hides identical Customisation Sync items and refreshes the list when toggled. Items with applicable differences stay visible. (#1193) + +### Interface and translation + +#### Improved + +- More settings and messages are now available in Russian. (#1187) + - Dialogues show generated QR codes, key pairs, and database sizes again. +- We can now use updated Spanish translations for settings and messages. (#1212) + +### Setup + +#### New Feature + +- We can now share a Setup URI with a displayed time limit, or choose **Compatible** for reuse without a time limit. + - **Time-bound** uses the current fixed seven-day UTC window, so the displayed end may be less than seven days away. Compatible retains the existing URI format; receiving devices still need to support the shared settings. + - The time condition applies when opening the URI. It does not revoke imported credentials or prevent reuse after rolling the device clock back. + +#### Improved + +- We can now distinguish the three Setup URI and QR code choices by their short labels and icons: initialise or overwrite the remote, join this device, or apply settings only. + +#### Fixed + +- We can now add a device or open a copied Vault without a compatibility pause solely because its device-local version record is absent. + - Existing version or settings incompatibilities still require review. A pause already saved by an earlier release still needs one explicit resume action. + +### Acknowledgements + +Thank you for your contributions! + +- @kimjansheden (#1219) +- @Immick (#1195, #1196) +- @bolikcraft (#1187) +- @speedy-axolotl (#1212) + +### 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 diff --git a/updates.md b/updates.md index 3b4efc24..c8d1371e 100644 --- a/updates.md +++ b/updates.md @@ -134,81 +134,3 @@ Thank you for your contributions! Thank you for your contributions! - @kimjansheden (#1218) - -## 1.0.33 - -1st October, 2026 - -This has turned into quite a substantial release, and I think it brings meaningful improvements to the core of Self-hosted LiveSync. If you notice anything, please feel free to let me know. - -### Privacy and compatibility - -#### New Feature - -- An optional saved ID key can generate encrypted Chunk IDs and obfuscated Metadata document IDs independently of the current E2EE passphrase. - - New Vaults use a random key by default; existing Vaults keep their current ID configuration by default. You can also derive a key from the current E2EE passphrase, enter a separate source, or import a recovery code. The source is not retained; the saved key can be revealed locally as a recovery code. - - The saved key stays in place when the E2EE passphrase changes or E2EE is turned off. Share it with another device through a protected Setup URI. Changing document IDs on an existing remote requires the usual Rebuild and Fetch procedure. -- We can now keep the file properties used by Hidden File Sync and Customisation Sync private in CouchDB. - - **Encrypt internal file Properties** extends E2EE V2 and Property Encryption to their paths, times, sizes, and Chunk references. - - Existing configurations keep this preference disabled. New Vaults enable it for use when the required encryption settings are active. - - Update every synchronising device before enabling it. It protects future writes; a manual remote Rebuild is strongly recommended to protect existing properties. -- We can now see which unsupported feature prevents a client from synchronising with CouchDB. - - Clients check the features required by the remote before transferring data or resetting the local database for Fast Fetch. Receiving an unsupported requirement also stops active replication. - -- We can now compare ID generation performance on a desktop or mobile device through **Open review harness**, available with the developers' debug tools enabled. - - The copied report includes legacy and independent ID timings and, where available, approximate JavaScript heap samples. The measurement uses fixed test data and keeps our Vault and settings unchanged. - -#### Fixed - -- Updated `brace-expansion` and `markdown-it` to include upstream security fixes. -- We can now keep using an E2EE passphrase beginning with `%` after restarting Obsidian. (#1221) - - This plug-in encrypts it before saving the settings. If an earlier version saved it in plain text, re-enter the passphrase used to encrypt the existing data after updating. Treat that passphrase as exposed if the affected `data.json` was shared. -- A receiving device now retries an unavailable CouchDB Chunk when file Metadata arrives before that Chunk is visible, helping rapid edits reach the Vault after an initial on-demand lookup misses it. (#1224) - - Retries start after two seconds and continue with increasing delays while finite replication is active. When it ends, this plug-in checks locally and makes a final lookup if needed, without waiting out the remaining retry delay. -- We can now distinguish initial on-demand Chunk requests (`🛄`) from retries (`🔁`) in the status bar. These replace `🧩`; each pending Chunk appears in one category, including while a retry is waiting. - -### Synchronisation and storage - -#### Fixed - -- Received changes held during start-up or a fetch are applied when this plug-in becomes ready, without waiting for another change or a settings save. **Suspend database reflecting** continues to hold changes (#1200). -- Customisation Sync now compares full millisecond timestamps, so the freshness labels and **Select All Shiny** no longer mistake an older copy for a newer one because of timestamp truncation. (#1194) -- **Hide not applicable items** now hides identical Customisation Sync items and refreshes the list when toggled. Items with applicable differences stay visible. (#1193) - -### Interface and translation - -#### Improved - -- More settings and messages are now available in Russian. (#1187) - - Dialogues show generated QR codes, key pairs, and database sizes again. -- We can now use updated Spanish translations for settings and messages. (#1212) - -### Setup - -#### New Feature - -- We can now share a Setup URI with a displayed time limit, or choose **Compatible** for reuse without a time limit. - - **Time-bound** uses the current fixed seven-day UTC window, so the displayed end may be less than seven days away. Compatible retains the existing URI format; receiving devices still need to support the shared settings. - - The time condition applies when opening the URI. It does not revoke imported credentials or prevent reuse after rolling the device clock back. - -#### Improved - -- We can now distinguish the three Setup URI and QR code choices by their short labels and icons: initialise or overwrite the remote, join this device, or apply settings only. - -#### Fixed - -- We can now add a device or open a copied Vault without a compatibility pause solely because its device-local version record is absent. - - Existing version or settings incompatibilities still require review. A pause already saved by an earlier release still needs one explicit resume action. - -### Acknowledgements - -Thank you for your contributions! - -- @kimjansheden (#1219) -- @Immick (#1195, #1196) -- @bolikcraft (#1187) -- @speedy-axolotl (#1212) - -### 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.