mirror of
https://github.com/vrtmrz/obsidian-livesync.git
synced 2026-11-05 07:48:18 +00:00
Default new CLI and Obsidian environments to NFC path identity
This commit is contained in:
1 parent
ac502b0261
commit
39cc31c2e8
26 files changed
+1466
-61
No files matched your search
@@ -106,9 +106,19 @@ 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
|
||||
|
||||
The later Journal and P2P extension uses NFC for newly generated CLI settings
|
||||
and Obsidian manual onboarding. It retains legacy defaults for stored settings
|
||||
and old Setup URIs, and reads an existing central remote's declaration before
|
||||
first participation. This refines the original default decision without
|
||||
implicitly changing existing document IDs. Shared Commonlib defaults and other
|
||||
hosts remain unchanged. See the maintained [design](../design_docs/unicode_path_identity.md#initial-settings-and-existing-environments)
|
||||
for the initial-setup and failure rules.
|
||||
|
||||
## Alternatives considered
|
||||
|
||||
- **Use NFC by default:** rejected because existing clients and databases must
|
||||
- **Use NFC by default for all settings:** rejected because existing clients and databases must
|
||||
retain their current IDs until their owners deliberately migrate them.
|
||||
- **Normalise only lookups:** rejected because new Metadata writes and deletes
|
||||
could continue using legacy IDs and create duplicate documents.
|
||||
|
||||
@@ -23,7 +23,8 @@ and is included in current Commonlib `0.2.2`, used by Self-hosted LiveSync
|
||||
release.
|
||||
|
||||
An unreleased extension adds Journal and P2P for the same maintained CLI and
|
||||
Obsidian hosts, and moves the setting to General Settings. The original dates
|
||||
Obsidian hosts, moves the setting to General Settings, and defaults new
|
||||
synchronisation environments to NFC. The original dates
|
||||
and reviewed versions above remain the historical baseline.
|
||||
|
||||
## Scope
|
||||
@@ -67,6 +68,31 @@ under legacy identity cannot be resumed under version `1`, or vice versa. This
|
||||
reuses the existing checkpoint identity and does not add a separate recovery
|
||||
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
|
||||
host policy does not extend to WebApp or WebPeer. An absent settings file alone
|
||||
does not establish that an existing local database is new.
|
||||
|
||||
Before saving initial manual CouchDB or Object Storage setup, the host reads
|
||||
the remote declaration through its owned connection resource. A configured
|
||||
remote supplies `0` or `1`; only a confirmed empty remote retains the new
|
||||
settings' selected version. Read failures and unsupported or contradictory
|
||||
declarations stop setup without saving a guessed value. The CLI makes the same
|
||||
read before opening the local database for an unconfigured client's first
|
||||
explicit Fetch. Ordinary configured startup and source Rebuild do not adopt a
|
||||
remote's mode automatically.
|
||||
|
||||
CouchDB inspection reads the version document without preparing encryption or
|
||||
creating a database. Without a version document, a non-empty database remains
|
||||
legacy. Journal inspection reads its existing milestone ranges and preferred
|
||||
Tweaks without registering a node, preparing a Security Seed, or resetting a
|
||||
checkpoint. P2P Setup URIs carry the selected version. Manual P2P configuration
|
||||
requires the owner to match the source; the signalling probe does not establish
|
||||
the remote database's identity, and replication still rejects a mismatch.
|
||||
|
||||
## Admission and database compatibility
|
||||
|
||||
Clients validate local and remote database identity before accepting ordinary
|
||||
@@ -337,7 +363,7 @@ This design does not:
|
||||
- migrate remote document IDs or revision histories in place;
|
||||
- choose among ambiguous NFC-equivalent files or parents, or merge their
|
||||
content;
|
||||
- change the default away from legacy path identity;
|
||||
- automatically change existing settings or database identity;
|
||||
- enable version `1` for Direct file access, WebApp, or an
|
||||
unverified host adapter; or
|
||||
- claim native iOS or macOS filesystem compatibility.
|
||||
|
||||
+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. Version `0` remains the default and preserves legacy identity. 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. 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).
|
||||
|
||||
This migration reconstructs the databases from one authoritative Vault. It does not rewrite document IDs in place or rename files.
|
||||
|
||||
|
||||
+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 and is the default for existing and new settings. 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 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 `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