docs: finalise 1.0.50 release notes and publication records

This commit is contained in:
vorotamoroz committed 2026-11-12 19:00:57 +00:00
1 parent 7bed1291c5
commit 53281c5fe5
5 files changed
+160 -158

No files matched your search

+148
View File
@@ -2,6 +2,154 @@
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.45
5th November, 2026
Some of my recent replies have been sporting the Codex icon. Rest assured: I simply ask Codex to polish my English and discreetly intercept the occasional ill-judged remark before I post.
### New Feature
#### Synchronisation
- We can recognise equivalent composed and decomposed Unicode file names as the same file when synchronising through Object Storage or P2P. (#1309)
- Select **Unicode NFC path identity** under **General Settings** → **File identity**. Supported by the CLI and Obsidian; physical file names and Chunk IDs remain unchanged.
- To migrate a Legacy database, update every participating client, stop synchronisation and editing, and preserve a complete, backed-up authoritative Vault, unique edits, and required history. Resolve colliding names before Rebuild on the source and Fetch on the remaining devices. With P2P, Rebuild prepares only the source database; keep that device online for Fetch.
- New CLI settings and Obsidian manual setup use NFC. Existing settings and older Setup URIs retain Legacy identity; initial CouchDB or Object Storage setup follows the remote's declared identity.
- Object Storage remotes with existing Journals but no compatibility declaration also require Rebuild, even in Legacy mode.
### Fixed
#### Object Storage
- Journal receive failures now stop replication instead of silently passing over records which could not be decoded, processed, or saved. (#1318)
- After correcting the cause, retry replication with the same local database to receive the failed Journal again.
- If a Journal cannot be recovered and missing content or history is acceptable, use **Maintenance** → **Syncing** → **Skip stopped Journal and resume**. The confirmation identifies its exact key and failure stage. Only that Journal is skipped; the next failure still stops receipt.
- Journals already passed over by an earlier version require **Reset journal received history** to be replayed. This re-reads Journals still available remotely, except those sent by this device, and cannot recreate missing remote Journals.
- A remote-only Rebuild resends the local database even when the Object Storage remote is already empty and this device retains its earlier transfer progress.
#### Synchronisation
- CouchDB synchronisation and Fetch no longer fail with decryption errors caused by stale encrypted responses in the Internal API cache after a Rebuild or plug-in restart. (#1234)
- Reads use a cache query parameter based on the current start-up and Security Seed.
- **Use headers only for HTTP cache control (compatibility)** under **Power users** → **CouchDB Connection Tweak** is disabled by default. Enable it only if the server or proxy rejects the additional query parameter; affected native caches may then reuse stale encrypted responses after Rebuild.
#### Conflict resolution
- Disabling or reloading the plug-in no longer causes a secondary error when pending work writes to the log. Late logs remain available in Obsidian's console.
- Open conflict dialogues for ordinary files close immediately, and queued checks report cancellation.
#### Settings
- The English description of **Do not split chunks in the background** now correctly states that enabling the setting moves Chunk splitting to the UI thread. (#1313)
#### Translations
- The notice shown when a translation is available now displays the **Display Language** setting label correctly in English, French, Hebrew, Russian, and Simplified Chinese. Hebrew interface messages also display their referenced labels correctly. (#1298)
#### WebApp
- The experimental WebApp rejects unsupported NFC path identity before opening its database or processing Vault files, preserving the selected files and settings.
- WebApp remains Legacy-only. Changing the setting does not migrate an NFC database.
### Improved
#### Translations
- More of the interface is available in Japanese, including dialogue buttons, Vault history, SyncGuard, inspection reports, and Fetch restart confirmations. Japanese setup and settings guides have also been refreshed. (#1317)
### CLI
#### New Feature
- We can resume Object Storage receipt after deliberately skipping one unrecoverable Journal with `journal-skip <journal-key>`.
- Retry `sync` with `--debug` to inspect the stopped Journal key and failure stage. The command retries replication first and skips only the supplied Journal if it remains stopped.
- Use this only when missing content or history is acceptable. The next Journal failure still stops receipt.
#### Fixed
- `fetch` and `rebuild` no longer replay pending file updates from the previous database at start-up. The old pending updates are discarded only after the local database reset succeeds.
- `fetch` and `daemon` can write received files to the Vault when `handleFilenameCaseSensitive` is enabled. The CLI detects whether the Vault filesystem distinguishes letter case. (#1319)
- NFC file lookups and directory scans report permission and I/O failures. Unreadable files are no longer treated as absent, and incomplete scans no longer count as successful.
### Miscellaneous
- Updated dependencies.
### Acknowledgements
Thank you for your contributions!
- @cwatanab, for improving Japanese translations and documentation, correcting translated labels, and correcting the Chunk splitting setting description (#1298, #1313, #1317).
## 1.0.44
1st November, 2026
Recently, I have been concentrating on maintenance and improvements to individual features. I began to wonder whether I had been focusing a little too closely on the details and could give more attention to the overall picture. That led me to a somewhat broader round of changes, including reworking parts of the architecture. Along the way, I was able to bring several implementations of the same concepts together, introduce shared abstractions, and tidy up the codebase a little.
Please let me know if any problems arise from these changes.
### Fixed
#### Synchronisation
- Files containing a raw unit separator (`U+001F`) are no longer truncated when received through S3-compatible Object Storage. (#1303)
- Update every participating client to prevent further truncation. Updating alone does not repair copies already damaged.
- Before recovery, preserve verified intact copies, unique unsynchronised edits, and any required history, then follow the [recovery procedure](https://github.com/vrtmrz/obsidian-livesync/blob/1.0.44/docs/recovery.md#recover-files-truncated-during-object-storage-reception).
- Rebuild and Fetch leave Hidden File Sync and Customisation Sync disabled. Initialise them deliberately after ordinary file recovery is complete.
- We can continue CouchDB synchronisation after rebuilding an encrypted remote when **Use Internal API** is enabled. (#1234)
- Cached responses encrypted with the previous Security Seed no longer interfere with subsequent reads.
#### Conflict resolution
- A queued conflict check no longer gets stuck waiting for a response to an outdated comparison of the same file.
#### Hidden File Sync and Customisation Sync
- Newer local hidden files are no longer omitted when initialising Hidden File Sync with `Merge`.
- Refreshing the Customisation Sync catalogue no longer brings back outdated items from an earlier scan.
### Improved
#### Hidden File Sync
- We can review the latest hidden-file revisions when changes arrive during a manual JSON comparison.
- The earlier comparison closes, and the latest revisions are checked again. If another device has resolved the conflict, the comparison closes without asking for another selection.
### Sunset
#### Recovery
- Recovery from old cleanup locks is now unified around the standard recovery dialogue, including on devices using the legacy IndexedDB adapter.
- Use Fetch to reconstruct the local database from the remote, unlock the device when both databases are already aligned, or dismiss the dialogue.
- These choices replace the legacy in-place `Cleanup` operation. Garbage Collection V3 remains available.
- Before Fetch, preserve unsynchronised work and any required local history, as it replaces the local database.
### CLI
#### Fixed
- We can continue using the reconstructed database after CLI `fetch` or `rebuild`, avoiding the empty-database restart and file deletion reported in #1304.
- Subsequent commands retain the selected database even without `--write-settings`. Interrupted reconstruction blocks ordinary synchronisation until recovery.
- Older runtime state with no recorded owner requires explicit reconstruction from a verified source. Back up unique edits before choosing Fetch or Rebuild.
- The CLI mirror starts correctly on Windows when the Vault path is omitted and the database directory is also used as the Vault.
### Miscellaneous
- Installation and update downloads are smaller.
- Database initialisation handles encrypted change notifications more reliably. (Commonlib #191)
### Acknowledgements
Thank you for your contributions!
- @AdrianNicu, for improving decryption handling during database initialisation (Commonlib #191).
## 1.0.43
30th October, 2026