From 4677232ac13be95f7548f431301b9b35b3a008bf Mon Sep 17 00:00:00 2001 From: vorotamoroz Date: Sun, 27 Sep 2026 12:55:53 +0000 Subject: [PATCH] Clarify internal file Properties encryption wording --- docs/settings.md | 2 +- docs/troubleshooting.md | 2 +- src/modules/features/SetupManager.ts | 6 +++--- .../SetupWizard/dialogs/SetupRemoteE2EE.svelte | 10 ++++++---- .../scripts/internal-metadata-migration.ts | 6 +++--- 5 files changed, 14 insertions(+), 12 deletions(-) diff --git a/docs/settings.md b/docs/settings.md index 3cff2855..449fa5ab 100644 --- a/docs/settings.md +++ b/docs/settings.md @@ -245,7 +245,7 @@ Setting key: usePathObfuscation In default, the path of the file is not obfuscated to improve the performance. If you enable this, the path of the file will be obfuscated. This is useful when you want to hide the path of the file. -#### Encrypt internal file Metadata +#### Encrypt internal file Properties Setting key: encryptInternalMetadata diff --git a/docs/troubleshooting.md b/docs/troubleshooting.md index 95489ba1..0d19c90a 100644 --- a/docs/troubleshooting.md +++ b/docs/troubleshooting.md @@ -96,7 +96,7 @@ Current releases automatically align compatible settings which control how new c A missing legacy file-name case setting means case-insensitive handling. It matches an explicit disabled setting and does not require a rebuild for that difference. An explicitly enabled setting can use different document IDs and still requires a compatibility decision against either value. Other configuration differences shown in the dialogue must still be resolved. -If the mismatch names **Encrypt internal file Metadata**, update every device before accepting that preference. It affects subsequent Metadata writes for Hidden File Sync and Customisation Sync; it does not automatically protect existing Metadata. A manual remote Rebuild is strongly recommended if you need to protect existing paths, times, sizes, and Chunk references. +If the mismatch names **Encrypt internal file Properties**, update every device before accepting that preference. It affects subsequent Metadata writes for Hidden File Sync and Customisation Sync; it does not automatically protect existing Metadata. A manual remote Rebuild is strongly recommended if you need to protect existing paths, times, sizes, and Chunk references. The `Sync now` command keeps routine replication progress quiet so that it is convenient to assign to a keyboard shortcut; assign one in Obsidian if that suits your workflow. A quiet command may still open this dialogue when a mismatch or another decision requires your attention. diff --git a/src/modules/features/SetupManager.ts b/src/modules/features/SetupManager.ts index 7c6aa349..3dfc3802 100644 --- a/src/modules/features/SetupManager.ts +++ b/src/modules/features/SetupManager.ts @@ -346,12 +346,12 @@ export class SetupManager extends AbstractModule { if (e2eeConf.encryptInternalMetadata && currentSetting.remoteType === REMOTE_COUCHDB) { const proceed = "Enable without rebuilding — update every other device first"; const choice = await this.core.confirm.askSelectStringDialogue( - "A manual remote Rebuild is strongly recommended to protect existing Metadata. " + + "A manual remote Rebuild is strongly recommended to protect existing file properties. " + "Before continuing without rebuilding, update every other synchronising device to a version " + "which supports this option, including devices currently running LiveSync. " + - "Existing Metadata remains unchanged until it is rewritten or rebuilt.", + "Existing properties remain unchanged until they are rewritten or rebuilt.", [proceed, "Cancel"], - { title: "Encrypt internal file Metadata", defaultAction: "Cancel" } + { title: "Encrypt internal file Properties", defaultAction: "Cancel" } ); if (choice !== proceed) return false; } diff --git a/src/modules/features/SetupWizard/dialogs/SetupRemoteE2EE.svelte b/src/modules/features/SetupWizard/dialogs/SetupRemoteE2EE.svelte index 43ecdb2a..dff27936 100644 --- a/src/modules/features/SetupWizard/dialogs/SetupRemoteE2EE.svelte +++ b/src/modules/features/SetupWizard/dialogs/SetupRemoteE2EE.svelte @@ -93,7 +93,7 @@ {/if} - + - This option applies only to CouchDB and requires End-to-End Encryption, the V2 algorithm, and Property Encryption + This option encrypts file properties used by Hidden File Sync and Customisation Sync. +
+ It applies only to CouchDB and requires End-to-End Encryption, the V2 algorithm, and Property Encryption (Obfuscate Properties). The remote type is selected later in this setup wizard.
- It protects Metadata written after the option is enabled; existing Metadata is not rewritten. A manual remote - Rebuild is strongly recommended to protect existing Metadata. Update every other synchronising device to a compatible + It protects properties written after the option is enabled; existing properties are not rewritten. A manual remote + Rebuild is strongly recommended to protect existing properties. Update every other synchronising device to a compatible version before enabling this option, including devices currently running LiveSync.
diff --git a/test/e2e-obsidian/scripts/internal-metadata-migration.ts b/test/e2e-obsidian/scripts/internal-metadata-migration.ts index 416dd436..3b45b3af 100644 --- a/test/e2e-obsidian/scripts/internal-metadata-migration.ts +++ b/test/e2e-obsidian/scripts/internal-metadata-migration.ts @@ -164,9 +164,9 @@ async function main(): Promise { .getByRole("button", { name: "Configure", exact: true }) .click(); const dialog = await waitForVisibleObsidianDialogue(navigator.page, "End-to-End Encryption"); - await dialog.getByLabel("Encrypt internal file Metadata", { exact: true }).check(); + await dialog.getByLabel("Encrypt internal file Properties", { exact: true }).check(); await dialog.getByRole("button", { name: "Proceed", exact: true }).click(); - const warning = await waitForVisibleObsidianDialogue(navigator.page, "Encrypt internal file Metadata"); + const warning = await waitForVisibleObsidianDialogue(navigator.page, "Encrypt internal file Properties"); await warning .getByRole("button", { name: "Enable without rebuilding — update every other device first", @@ -221,7 +221,7 @@ async function main(): Promise { await withObsidianPage(session!.remoteDebuggingPort, async (page) => { const dialog = await waitForVisibleObsidianDialogue(page, "Configuration Mismatch Detected"); await dialog - .getByText("Encrypt internal file Metadata", { exact: false }) + .getByText("Encrypt internal file Properties", { exact: false }) .first() .waitFor({ state: "visible" }); await dialog.getByRole("button", { name: "Dismiss", exact: true }).click();