mirror of
https://github.com/vrtmrz/obsidian-livesync.git
synced 2026-11-06 16:28:18 +00:00
Releasing 1.0.45
This commit is contained in:
1 parent
beb6a6bc7d
commit
1fd4c947be
18 files changed
+157
-107
No files matched your search
@@ -13,9 +13,10 @@ Accepted on 2026-10-17. Unicode NFC path identity was released in Self-hosted
|
||||
LiveSync 1.0.38 with Commonlib 0.1.42. Local validation evidence and platform
|
||||
limits are recorded in the design document.
|
||||
|
||||
The maintained design now also describes an unreleased Journal and P2P
|
||||
extension and the move to General Settings. The decision below retains the
|
||||
initial CouchDB support boundary and original acceptance date.
|
||||
The maintained design also records the Journal and P2P extension, the move to
|
||||
General Settings, and new-environment defaults included in Self-hosted LiveSync
|
||||
1.0.45 with Commonlib 0.3.2. The decision below retains the initial CouchDB
|
||||
support boundary and original acceptance date.
|
||||
|
||||
## Context
|
||||
|
||||
@@ -106,7 +107,9 @@ preflight uses the supported host listing and local Metadata. It refuses
|
||||
ambiguous file or parent-directory candidates before database reconstruction;
|
||||
it does not claim to detect physical aliases which a host does not expose.
|
||||
|
||||
## Unreleased extension: defaults for new environments
|
||||
<a id="unreleased-extension-defaults-for-new-environments"></a>
|
||||
|
||||
## Journal and P2P extension: defaults for new environments
|
||||
|
||||
The later Journal and P2P extension uses NFC for newly generated CLI settings
|
||||
and Obsidian manual onboarding. It retains legacy defaults for stored settings
|
||||
|
||||
@@ -36,13 +36,13 @@ The central replication gate, mismatch dialogues, and RedFlag Fetch preparation
|
||||
consume the same effective differences. The P2P transport retains its separate
|
||||
policy: ordinary representation and case differences warn without rejecting
|
||||
transfer, while its existing passphrase and peer checks still apply. Path
|
||||
identity has a separate required check: both peers must use the same version,
|
||||
and a version mismatch rejects before replication. Commonlib `0.3.0` includes
|
||||
NFC protocol support for Journal and P2P, but the matching CLI and Obsidian host
|
||||
adoption remains an unreleased extension tracked by
|
||||
[the Unicode path identity design](unicode_path_identity.md). Sharing
|
||||
assessment does not make the central replication policy appropriate for every
|
||||
transport.
|
||||
identity has a separate required check: both peers must use the same
|
||||
version, and a version mismatch rejects before replication. Commonlib `0.3.0`
|
||||
includes NFC protocol support for Journal and P2P. Matching CLI and Obsidian
|
||||
host adoption is included in Self-hosted LiveSync `1.0.45` with Commonlib
|
||||
`0.3.2`, as described in the [Unicode path identity
|
||||
design](unicode_path_identity.md). Sharing assessment does not make the central
|
||||
replication policy appropriate for every transport.
|
||||
|
||||
## Host responsibilities
|
||||
|
||||
|
||||
@@ -25,19 +25,22 @@ release.
|
||||
Commonlib `0.3.0` publishes the Journal and P2P path-identity protocol
|
||||
extension. The matching Self-hosted LiveSync CLI and Obsidian host adoption,
|
||||
including moving the setting to General Settings and defaulting new
|
||||
synchronisation environments to NFC, remains an unreleased candidate tracked
|
||||
by [pull request #1309](https://github.com/vrtmrz/obsidian-livesync/pull/1309).
|
||||
The original dates and reviewed versions above remain the historical baseline.
|
||||
synchronisation environments to NFC, is included in Self-hosted LiveSync
|
||||
`1.0.45` with Commonlib `0.3.2`. The development candidate was tracked by [pull request #1309](https://github.com/vrtmrz/obsidian-livesync/pull/1309);
|
||||
the original dates and reviewed versions above remain the historical baseline.
|
||||
|
||||
## Unreleased shared storage boundary
|
||||
<a id="unreleased-shared-storage-boundary"></a>
|
||||
|
||||
## Shared storage boundary
|
||||
|
||||
Commonlib `0.3.1` publishes the shared storage-path contract, including
|
||||
its Unicode resolver and typed physical-I/O ports. The LiveSync candidate
|
||||
adopts the shared resolver and typed physical-I/O ports in the CLI. Obsidian
|
||||
adopts shared namespace and comparison helpers while retaining its Vault APIs
|
||||
and existing alias-guard policy. Each NFC scan retains one comparison-policy
|
||||
snapshot; directory and permission errors propagate instead of producing a
|
||||
successful partial scan. LiveSync's host adoption remains unreleased. The
|
||||
its Unicode resolver and typed physical-I/O ports. The LiveSync CLI adopts
|
||||
the shared resolver and typed physical-I/O ports, while Obsidian adopts
|
||||
shared namespace and comparison helpers and retains its Vault APIs and
|
||||
existing alias-guard policy. These host changes are included in Self-hosted
|
||||
LiveSync `1.0.45` with Commonlib `0.3.2`. Each NFC scan retains one
|
||||
comparison-policy snapshot; directory and permission errors propagate
|
||||
instead of producing a successful partial scan. The
|
||||
[developer guide](../../devs.md#file-path-handling) links the Commonlib design
|
||||
and ADR.
|
||||
|
||||
@@ -47,7 +50,7 @@ and ADR.
|
||||
| --- | --- |
|
||||
| Logical identity | Version `1` uses NFC for Metadata ID and path comparison keys. Existing case handling remains a separate rule. Missing and `0` retain legacy behaviour. |
|
||||
| Stored paths and content | Keep the spelling in `Metadata.path` and existing physical Vault names. NFC does not change Chunk IDs or content. |
|
||||
| Maintained hosts and transports | CLI and Obsidian with CouchDB are released; their Journal and P2P host adoption remains unreleased. See the support matrix below. |
|
||||
| Maintained hosts and transports | CLI and Obsidian with CouchDB were first released in Self-hosted LiveSync `1.0.38`; their Journal and P2P host support is included in `1.0.45` with Commonlib `0.3.2`. See the support matrix below. |
|
||||
| Other consumers | Direct-file access and other host adapters are covered separately below; shared path primitives alone do not enable NFC in an application. |
|
||||
| Migration | Rebuild both databases from one complete authoritative Vault, then Fetch each remaining client. Do not rewrite IDs or merge histories in place. |
|
||||
|
||||
@@ -84,9 +87,9 @@ store.
|
||||
|
||||
## Initial settings and existing environments
|
||||
|
||||
The unreleased extension uses version `1` for newly generated CLI settings and
|
||||
Obsidian manual onboarding. Stored settings and old Setup URIs with no path
|
||||
version retain `0`. Commonlib's shared settings defaults remain `0`, so this
|
||||
Self-hosted LiveSync `1.0.45` uses version `1` for newly generated CLI settings
|
||||
and Obsidian manual onboarding. Stored settings and old Setup URIs with no
|
||||
path version retain `0`. Commonlib's shared settings defaults remain `0`, so this
|
||||
host policy does not extend to WebApp or WebPeer. An absent settings file alone
|
||||
does not establish that an existing local database is new.
|
||||
|
||||
@@ -200,8 +203,9 @@ preflight failure. If a required setup decision cannot be made in a headless
|
||||
CLI invocation, the command must fail with a clear remediation message rather
|
||||
than report success after cancellation.
|
||||
|
||||
The unreleased CLI correction for #1304 always retains the Rebuilder's selected
|
||||
local database suffix after successful `fetch` or `rebuild`. `--write-settings`
|
||||
The CLI correction for #1304 is included in Self-hosted LiveSync `1.0.44` and
|
||||
always retains the Rebuilder's selected local database suffix after successful
|
||||
`fetch` or `rebuild`. `--write-settings`
|
||||
still controls other lasting settings changes. Earlier versions required that
|
||||
option to retain the database selection; omitting it could reopen the previous
|
||||
database on the next invocation. The examples retain the option for compatibility.
|
||||
@@ -232,11 +236,11 @@ updates and deletions.
|
||||
|
||||
## Compatibility matrix
|
||||
|
||||
| Host or API | Published baseline | Unreleased or host-specific status |
|
||||
| Host or API | Published baseline | Current support or host-specific status |
|
||||
| --- | --- | --- |
|
||||
| CLI and Obsidian with CouchDB | NFC identity is supported from Self-hosted LiveSync `1.0.38` with Commonlib `0.1.42`. | Commonlib `0.3.1` publishes the shared storage-path contract. LiveSync's CLI adoption of the shared resolver and typed physical-I/O ports, and its Obsidian adoption of shared namespace and comparison helpers, remain unreleased. |
|
||||
| CLI and Obsidian with Journal | Commonlib `0.3.0` publishes the NFC protocol support. | Matching LiveSync host adoption remains an unreleased candidate tracked by [pull request #1309](https://github.com/vrtmrz/obsidian-livesync/pull/1309). Update and migrate every client before using version `1`. |
|
||||
| CLI and Obsidian with P2P | Commonlib `0.3.0` publishes the NFC protocol support. | Matching LiveSync host adoption remains an unreleased candidate. All peers must use the same path version; P2P warns and continues for ordinary representation or case differences. |
|
||||
| CLI and Obsidian with CouchDB | NFC identity is supported from Self-hosted LiveSync `1.0.38` with Commonlib `0.1.42`. | Commonlib `0.3.1` publishes the shared storage-path contract; LiveSync's CLI resolver and Obsidian namespace and comparison-helper adoption are included in Self-hosted LiveSync `1.0.45` with Commonlib `0.3.2`. |
|
||||
| CLI and Obsidian with Journal | Commonlib `0.3.0` publishes the NFC protocol support. | Matching host adoption is included in Self-hosted LiveSync `1.0.45` with Commonlib `0.3.2`. Update and migrate every client before using version `1`. |
|
||||
| CLI and Obsidian with P2P | Commonlib `0.3.0` publishes the NFC protocol support. | Matching host adoption is included in Self-hosted LiveSync `1.0.45` with Commonlib `0.3.2`. All peers must use the same path version; P2P warns and continues for ordinary representation or case differences. |
|
||||
| Bridge | The published baseline uses Legacy version `0`. | The Bridge integration is an unreleased candidate with explicit per-peer opt-in to version `1`; every peer in a group must use the same version. Its ordinary case mismatch check remains enabled unless the Bridge-wide `disableCheckingConfigMismatch: true` override disables that case check. The override does not bypass a path-version mismatch. |
|
||||
| `DirectFileManipulator` | Commonlib `0.3.1` accepts explicit `pathNormalizationVersion` values `0` or `1`, defaults to Legacy (`0`), and rejects a populated database in the opposite mode. | This admission setting does not resolve physical paths; callers own physical path resolution and migration. |
|
||||
| WebApp | Legacy version `0` only. | WebApp remains Legacy-only and rejects an explicit version `1` at startup. The browser resolver primitive does not enable NFC in WebApp. |
|
||||
@@ -298,8 +302,9 @@ The implementation acceptance matrix covers:
|
||||
- URI round trips, checkpoint invalidation across path versions, and
|
||||
explicit Legacy/NFC admission by `DirectFileManipulator` in Commonlib `0.3.1`,
|
||||
including rejection of a populated database in the opposite mode. Journal and
|
||||
P2P protocol support is published in Commonlib `0.3.0`, while matching CLI and
|
||||
Obsidian host adoption and end-to-end checks remain unreleased;
|
||||
P2P protocol support is published in Commonlib `0.3.0`; matching CLI and
|
||||
Obsidian host adoption is included in Self-hosted LiveSync `1.0.45` with
|
||||
Commonlib `0.3.2`;
|
||||
- refusal for ambiguous file or parent-directory candidates before local or
|
||||
remote reset, preserving both databases on rejection, within the paths
|
||||
returned by each host's supported listing; and
|
||||
@@ -339,11 +344,13 @@ the current NFC document, its active state, and its stored path. The existing
|
||||
content, creation-time, physical-name, update, and deletion checks also passed.
|
||||
|
||||
|
||||
### Unreleased Journal and P2P validation
|
||||
<a id="unreleased-journal-and-p2p-validation"></a>
|
||||
|
||||
The extension was initially checked on Linux with a locally packed Commonlib
|
||||
`0.2.3` candidate and real Obsidian `1.12.7`. The Self-hosted LiveSync extension
|
||||
remains unreleased. The initial checks covered:
|
||||
### Journal and P2P validation evidence
|
||||
|
||||
The host adoption is included in Self-hosted LiveSync `1.0.45` with Commonlib
|
||||
`0.3.2`. Initial checks were run on Linux with a locally packed Commonlib
|
||||
`0.2.3` candidate and real Obsidian `1.12.7`. They covered:
|
||||
|
||||
- real S3-compatible Journal transfer with and without E2EE and Path
|
||||
Obfuscation, including restart, logical rename and deletion, both conflict
|
||||
|
||||
@@ -2,9 +2,10 @@
|
||||
|
||||
Implementation note: the receive-failure correction and single-Journal skip
|
||||
API are published in [Commonlib 0.3.2](https://github.com/vrtmrz/livesync-commonlib/releases/tag/0.3.2).
|
||||
The Self-hosted LiveSync host action remains unreleased. The owning contract
|
||||
is Commonlib's
|
||||
[Journal receive failures and recovery](https://github.com/vrtmrz/livesync-commonlib/blob/main/docs/journal-receive-recovery.md).
|
||||
The Self-hosted LiveSync UI and CLI recovery actions are included in
|
||||
Self-hosted LiveSync 1.0.45 with Commonlib 0.3.2. The owning contract is in
|
||||
Commonlib's [Journal receive failures and
|
||||
recovery](https://github.com/vrtmrz/livesync-commonlib/blob/main/docs/journal-receive-recovery.md).
|
||||
The receiver acknowledges successful processing, stops on failure by default,
|
||||
and retries from that Journal with the same database. Explicit skipping does
|
||||
not establish Vault reflection success. The host action names one stopped
|
||||
|
||||
+1
-1
@@ -51,7 +51,7 @@ Compare the recovered files with the preserved originals, including the affected
|
||||
|
||||
## Migrate to Unicode NFC path identity
|
||||
|
||||
Use this coordinated migration when CLI and Obsidian clients should identify composed and decomposed Unicode spellings as the same path. Existing settings and old Setup URIs retain version `0`, which preserves legacy identity. The unreleased extension defaults new CLI settings and Obsidian manual onboarding to version `1`; this does not migrate an existing database. CouchDB support is released; Object Storage and P2P support belong to the unreleased extension described in the [Unicode path identity design](design_docs/unicode_path_identity.md).
|
||||
Use this coordinated migration when CLI and Obsidian clients should identify composed and decomposed Unicode spellings as the same path. Existing settings and old Setup URIs retain version `0`, which preserves legacy identity. Self-hosted LiveSync `1.0.45` defaults new CLI settings and Obsidian manual onboarding to version `1`; this does not migrate an existing database. CouchDB support was first released in `1.0.38`; Object Storage and P2P support are included in `1.0.45` with Commonlib `0.3.2`, as described in the [Unicode path identity design](design_docs/unicode_path_identity.md).
|
||||
|
||||
This migration reconstructs the databases from one authoritative Vault. It does not rewrite document IDs in place or rename files.
|
||||
|
||||
|
||||
@@ -2,6 +2,37 @@
|
||||
|
||||
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.39
|
||||
|
||||
20th October, 2026
|
||||
|
||||
I have been finding troubleshooting difficult, so I decided to go back to basics and prepare the tools we need.
|
||||
|
||||
### Synchronisation
|
||||
|
||||
#### Fixed
|
||||
|
||||
- We can migrate to NFC path identity when deletion or rename history would otherwise block Rebuild or Fetch. (#1259)
|
||||
- Logical deletions without unresolved conflicts no longer block operations which replace the local database. Conflicting histories and ambiguous current files still require review.
|
||||
|
||||
### Diagnostics
|
||||
|
||||
- We can inspect file differences and current conflicts across the local database, CouchDB, and the Vault without changing databases or settings.
|
||||
- Integrity inspection compares Metadata for normal files and checks content for suspect groups. **Include remote database** is enabled by default and can be cleared for one run. Reports distinguish an excluded remote from an unavailable source and retain the evidence collected so far.
|
||||
- We can share reports using pseudonyms and find the affected files locally for follow-up.
|
||||
- Integrity and Usage offer original names or pseudonyms before each run, and omit file contents and credentials in both modes. Path pseudonyms use a random public salt for each report; revision pseudonyms retain their generation number.
|
||||
- The Hatch lookup searches current Vault paths and local Metadata for normal files. It preserves separate document IDs for the same path and can prepare a report for the selected document using the original salt. Public salts permit guessed-path checks.
|
||||
- We can follow progress in large inspections and stop work when enough evidence has been collected.
|
||||
- Integrity shows counts and a gauge for each stage, reduces remote requests with bulk reads and bounded concurrency, and logs read and request timings. Usage shows revision discovery with a growing total, followed by cancellable accounting.
|
||||
- Closing a follow-up dialogue stops further reads after the active read settles. Complete Usage reports retain the existing TSV columns; partial reports use JSON to retain their status and reasons.
|
||||
- We can read and share large Integrity reports more easily.
|
||||
- Compact Markdown retains every observation and its follow-up references, with state counts, a review index, and a field guide. It includes available size, modification-time, Chunk-reference, and case/NFC evidence without additional database or Vault reads. JSON retains the full structure.
|
||||
- Markdown reports use a collapsible code block for sharing in issues. Review candidates indicate where to investigate; they do not establish corruption, and unchecked content remains distinct from healthy content.
|
||||
- We can find reporting actions more easily in Hatch and keep report controls visible in smaller windows.
|
||||
- The five reporting tools are grouped separately from checks, recovery, and reset operations. Name and format choices remain visible, and the report preview resizes around the controls.
|
||||
- We can request and provide targeted troubleshooting evidence through the issue-reporting guide.
|
||||
- Direct links cover Integrity, Usage, pseudonym lookup, and follow-up reports, with request examples for issue discussions.
|
||||
|
||||
## 1.0.38
|
||||
|
||||
17th October, 2026
|
||||
|
||||
+1
-1
@@ -242,7 +242,7 @@ Show verbose log. Please enable when you report the logs
|
||||
|
||||
Setting key: pathNormalizationVersion
|
||||
|
||||
Version `0` preserves legacy file identity. Existing settings and Setup URIs which omit this field retain version `0`. New CLI settings and Obsidian manual onboarding use version `1` in the unreleased extension. On first manual setup or an unconfigured CLI's initial Fetch, an existing CouchDB or Object Storage declaration takes precedence; an unavailable or unsupported declaration stops setup. P2P Setup URIs carry the selected version; manual P2P setup requires matching settings on every peer. Version `1` uses Unicode NFC when deriving document IDs, so equivalent composed and decomposed paths identify the same file across the CLI and Obsidian. Existing physical file names are retained. CouchDB support is released. The unreleased extension also supports Object Storage and P2P for the maintained CLI and Obsidian hosts. This is a common local database setting, independently of the active transport.
|
||||
Version `0` preserves legacy file identity. Existing settings and Setup URIs which omit this field retain version `0`. New CLI settings and Obsidian manual onboarding use version `1` in Self-hosted LiveSync `1.0.45`. On first manual setup or an unconfigured CLI's initial Fetch, an existing CouchDB or Object Storage declaration takes precedence; an unavailable or unsupported declaration stops setup. P2P Setup URIs carry the selected version; manual P2P setup requires matching settings on every peer. Version `1` uses Unicode NFC when deriving document IDs, so equivalent composed and decomposed paths identify the same file across the CLI and Obsidian. Existing physical file names are retained. CouchDB support was first released in Self-hosted LiveSync `1.0.38`. Object Storage and P2P support for the maintained CLI and Obsidian hosts is included in Self-hosted LiveSync `1.0.45` with Commonlib `0.3.2`. This is a common local database setting, independently of the active transport.
|
||||
|
||||
Version `1` requires a coordinated migration: set it on the source client before Rebuild, then set it on each remaining client before Fetch. Changing the setting alone does not migrate existing Metadata. Follow [Migrate to Unicode NFC path identity](recovery.md#migrate-to-unicode-nfc-path-identity) for the complete procedure. Do not resume a version `0` client against the migrated remote.
|
||||
|
||||
|
||||
Reference in new issue
Block a user