From 7b4f7bf514e955d179dbcf3d18c4cb2f7afe3ad2 Mon Sep 17 00:00:00 2001 From: vorotamoroz Date: Thu, 3 Sep 2026 04:17:05 +0000 Subject: [PATCH] Prepare release 1.0.24 --- manifest.json | 2 +- package-lock.json | 10 +++++----- package.json | 2 +- src/apps/cli/package.json | 2 +- src/apps/webapp/package.json | 2 +- src/apps/webpeer/package.json | 2 +- test/e2e-obsidian/runner/setupUri.ts | 3 ++- test/e2e-obsidian/scripts/dialog-mounts.ts | 5 +++-- updates.md | 15 +++++++++++++++ versions.json | 3 ++- 10 files changed, 32 insertions(+), 14 deletions(-) diff --git a/manifest.json b/manifest.json index 2205cc64..fcc7423a 100644 --- a/manifest.json +++ b/manifest.json @@ -1,7 +1,7 @@ { "id": "obsidian-livesync", "name": "Self-hosted LiveSync", - "version": "1.0.23", + "version": "1.0.24", "minAppVersion": "1.7.2", "description": "Community implementation of self-hosted livesync. Reflect your vault changes to some other devices immediately. Please make sure to disable other synchronize solutions to avoid content corruption or duplication.", "author": "vorotamoroz", diff --git a/package-lock.json b/package-lock.json index 19f88510..f57d9273 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "obsidian-livesync", - "version": "1.0.23", + "version": "1.0.24", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "obsidian-livesync", - "version": "1.0.23", + "version": "1.0.24", "license": "MIT", "workspaces": [ "src/apps/cli", @@ -12937,7 +12937,7 @@ }, "src/apps/cli": { "name": "self-hosted-livesync-cli", - "version": "1.0.23-cli", + "version": "1.0.24-cli", "dependencies": { "chokidar": "^4.0.0", "minimatch": "^10.2.5", @@ -12962,7 +12962,7 @@ }, "src/apps/webapp": { "name": "livesync-webapp", - "version": "1.0.23-webapp", + "version": "1.0.24-webapp", "dependencies": { "octagonal-wheels": "^0.1.53" }, @@ -12974,7 +12974,7 @@ } }, "src/apps/webpeer": { - "version": "1.0.23-webpeer", + "version": "1.0.24-webpeer", "dependencies": { "octagonal-wheels": "^0.1.53" }, diff --git a/package.json b/package.json index 03b6b285..945dd729 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "obsidian-livesync", - "version": "1.0.23", + "version": "1.0.24", "description": "Reflect your vault changes to some other devices immediately. Please make sure to disable other synchronize solutions to avoid content corruption or duplication.", "main": "main.js", "type": "module", diff --git a/src/apps/cli/package.json b/src/apps/cli/package.json index fb7270d7..fb4afa0f 100644 --- a/src/apps/cli/package.json +++ b/src/apps/cli/package.json @@ -1,7 +1,7 @@ { "name": "self-hosted-livesync-cli", "private": true, - "version": "1.0.23-cli", + "version": "1.0.24-cli", "main": "dist/index.cjs", "type": "module", "scripts": { diff --git a/src/apps/webapp/package.json b/src/apps/webapp/package.json index f29d556b..ca08eac1 100644 --- a/src/apps/webapp/package.json +++ b/src/apps/webapp/package.json @@ -1,7 +1,7 @@ { "name": "livesync-webapp", "private": true, - "version": "1.0.23-webapp", + "version": "1.0.24-webapp", "type": "module", "description": "Browser-based Self-hosted LiveSync using FileSystem API", "scripts": { diff --git a/src/apps/webpeer/package.json b/src/apps/webpeer/package.json index 2aae30de..eb33c694 100644 --- a/src/apps/webpeer/package.json +++ b/src/apps/webpeer/package.json @@ -1,7 +1,7 @@ { "name": "webpeer", "private": true, - "version": "1.0.23-webpeer", + "version": "1.0.24-webpeer", "type": "module", "scripts": { "dev": "vite", diff --git a/test/e2e-obsidian/runner/setupUri.ts b/test/e2e-obsidian/runner/setupUri.ts index 3a1adbaa..4f292bc0 100644 --- a/test/e2e-obsidian/runner/setupUri.ts +++ b/test/e2e-obsidian/runner/setupUri.ts @@ -1,4 +1,5 @@ import type { Locator, Page } from "playwright"; +import { $msg } from "../../../src/common/translation.ts"; import { evalObsidianJson } from "./cli.ts"; import { captureObsidianDialogue, captureObsidianElement, withObsidianPage } from "./ui.ts"; @@ -166,7 +167,7 @@ export async function generateSetupURIFromDevice( ); await withObsidianPage(port, async (page) => { const result = modalByTitle(page, resultTitle); - await result.getByRole("button", { name: "OK", exact: true }).click({ timeout: uiTimeoutMs }); + await result.getByRole("button", { name: $msg("Ok"), exact: true }).click({ timeout: uiTimeoutMs }); await result.waitFor({ state: "hidden", timeout: uiTimeoutMs }); }); diff --git a/test/e2e-obsidian/scripts/dialog-mounts.ts b/test/e2e-obsidian/scripts/dialog-mounts.ts index 17d10d45..093bed02 100644 --- a/test/e2e-obsidian/scripts/dialog-mounts.ts +++ b/test/e2e-obsidian/scripts/dialog-mounts.ts @@ -1,5 +1,6 @@ import { readFile } from "node:fs/promises"; import { join } from "node:path"; +import { $msg } from "../../../src/common/translation.ts"; import { discoverObsidianCli, requireObsidianBinary } from "../runner/environment.ts"; import { createE2eCouchDbPluginData, waitForLiveSyncCoreReady } from "../runner/liveSyncWorkflow.ts"; import { assertMobileDialogueLayout, assertMobileNoticeLayout, setObsidianMobileTestMode } from "../runner/mobileUi.ts"; @@ -909,7 +910,7 @@ async function verifyLogAndReportSurfaces(): Promise<{ log: string; report: stri if (!report.includes("# ---- Debug Info Dump ----")) { throw new Error("The full-report dialogue did not contain the generated debug report."); } - await modal.getByRole("button", { name: "OK", exact: true }).waitFor({ + await modal.getByRole("button", { name: $msg("Ok"), exact: true }).waitFor({ state: "visible", timeout: uiTimeoutMs, }); @@ -920,7 +921,7 @@ async function verifyLogAndReportSurfaces(): Promise<{ log: string; report: stri const modal = page.locator(".modal-container").filter({ hasText: "Your Debug info is ready to be copied", }); - await modal.getByRole("button", { name: "OK", exact: true }).click({ timeout: uiTimeoutMs }); + await modal.getByRole("button", { name: $msg("Ok"), exact: true }).click({ timeout: uiTimeoutMs }); await modal.waitFor({ state: "hidden", timeout: uiTimeoutMs }); }); diff --git a/updates.md b/updates.md index b2f7e710..efc55edd 100644 --- a/updates.md +++ b/updates.md @@ -12,6 +12,21 @@ Earlier releases remain available in the 1.0 release history, the 1.0 preview hi ## Unreleased +## 1.0.24 + +3rd September, 2026 + +### Interface and translation + +#### Fixed + +- The Setup Wizard now correctly explains that the existing-device path adds this device to an existing synchronisation (PR #1118). Thank you to @nikhilmaddirala for the contribution! +- Spanish translations now resolve the **Display language** placeholder, cover previously untranslated Setup Wizard and CouchDB text, translate user-facing Config Doctor values and confirmation controls, and use Spanish sentence case (PR #1129). Thank you to @zeedif for the contribution! + +#### Improved + +- The Setup Wizard now shows the passphrase and **Obfuscate Properties** controls only after E2EE is enabled, provides a password-visibility button, allows longer translated labels to wrap, and keeps the invitation link compact on desktop while preserving its mobile touch target (PR #1130). Thank you to @zeedif for the contribution! + ### Synchronisation and storage #### Fixed diff --git a/versions.json b/versions.json index 27835788..735c11e0 100644 --- a/versions.json +++ b/versions.json @@ -35,5 +35,6 @@ "1.0.20": "1.7.2", "1.0.21": "1.7.2", "1.0.22": "1.7.2", - "1.0.23": "1.7.2" + "1.0.23": "1.7.2", + "1.0.24": "1.7.2" }