mirror of
https://github.com/vrtmrz/obsidian-livesync.git
synced 2026-07-15 17:16:01 +00:00
Compare commits
6 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 9d70ac8064 | |||
| f44dc76087 | |||
| 962589a40f | |||
| d8bbab6bed | |||
| b475ea64e2 | |||
| 908acc4a84 |
@@ -45,6 +45,11 @@ jobs:
|
||||
node-version: "24.x"
|
||||
cache: npm
|
||||
|
||||
- name: Use Deno
|
||||
uses: denoland/setup-deno@v2
|
||||
with:
|
||||
deno-version: v2.x
|
||||
|
||||
- name: Install dependencies
|
||||
run: npm ci
|
||||
|
||||
|
||||
+1
-1
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"id": "obsidian-livesync",
|
||||
"name": "Self-hosted LiveSync",
|
||||
"version": "0.25.81",
|
||||
"version": "0.25.82",
|
||||
"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",
|
||||
|
||||
Generated
+8
-8
@@ -1,12 +1,12 @@
|
||||
{
|
||||
"name": "obsidian-livesync",
|
||||
"version": "0.25.81",
|
||||
"version": "0.25.82",
|
||||
"lockfileVersion": 3,
|
||||
"requires": true,
|
||||
"packages": {
|
||||
"": {
|
||||
"name": "obsidian-livesync",
|
||||
"version": "0.25.81",
|
||||
"version": "0.25.82",
|
||||
"license": "MIT",
|
||||
"workspaces": [
|
||||
"src/apps/cli",
|
||||
@@ -16226,11 +16226,11 @@
|
||||
},
|
||||
"src/apps/cli": {
|
||||
"name": "self-hosted-livesync-cli",
|
||||
"version": "0.25.81-cli",
|
||||
"version": "0.25.82-cli",
|
||||
"dependencies": {
|
||||
"chokidar": "^4.0.0",
|
||||
"minimatch": "^10.2.5",
|
||||
"octagonal-wheels": "^0.1.50",
|
||||
"octagonal-wheels": "^0.1.51",
|
||||
"pouchdb-adapter-http": "^9.0.0",
|
||||
"pouchdb-adapter-leveldb": "^9.0.0",
|
||||
"pouchdb-core": "^9.0.0",
|
||||
@@ -16252,9 +16252,9 @@
|
||||
},
|
||||
"src/apps/webapp": {
|
||||
"name": "livesync-webapp",
|
||||
"version": "0.25.81-webapp",
|
||||
"version": "0.25.82-webapp",
|
||||
"dependencies": {
|
||||
"octagonal-wheels": "^0.1.50"
|
||||
"octagonal-wheels": "^0.1.51"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@playwright/test": "^1.58.2",
|
||||
@@ -16267,9 +16267,9 @@
|
||||
}
|
||||
},
|
||||
"src/apps/webpeer": {
|
||||
"version": "0.25.81-webpeer",
|
||||
"version": "0.25.82-webpeer",
|
||||
"dependencies": {
|
||||
"octagonal-wheels": "^0.1.50"
|
||||
"octagonal-wheels": "^0.1.51"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@sveltejs/vite-plugin-svelte": "^7.1.2",
|
||||
|
||||
+1
-1
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "obsidian-livesync",
|
||||
"version": "0.25.81",
|
||||
"version": "0.25.82",
|
||||
"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",
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "self-hosted-livesync-cli",
|
||||
"private": true,
|
||||
"version": "0.25.81-cli",
|
||||
"version": "0.25.82-cli",
|
||||
"main": "dist/index.cjs",
|
||||
"type": "module",
|
||||
"scripts": {
|
||||
@@ -41,7 +41,7 @@
|
||||
"dependencies": {
|
||||
"chokidar": "^4.0.0",
|
||||
"minimatch": "^10.2.5",
|
||||
"octagonal-wheels": "^0.1.50",
|
||||
"octagonal-wheels": "^0.1.51",
|
||||
"pouchdb-adapter-http": "^9.0.0",
|
||||
"pouchdb-adapter-leveldb": "^9.0.0",
|
||||
"pouchdb-core": "^9.0.0",
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "livesync-webapp",
|
||||
"private": true,
|
||||
"version": "0.25.81-webapp",
|
||||
"version": "0.25.82-webapp",
|
||||
"type": "module",
|
||||
"description": "Browser-based Self-hosted LiveSync using FileSystem API",
|
||||
"scripts": {
|
||||
@@ -12,7 +12,7 @@
|
||||
"preview": "vite preview"
|
||||
},
|
||||
"dependencies": {
|
||||
"octagonal-wheels": "^0.1.50"
|
||||
"octagonal-wheels": "^0.1.51"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@playwright/test": "^1.58.2",
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "webpeer",
|
||||
"private": true,
|
||||
"version": "0.25.81-webpeer",
|
||||
"version": "0.25.82-webpeer",
|
||||
"type": "module",
|
||||
"scripts": {
|
||||
"dev": "vite",
|
||||
@@ -12,7 +12,7 @@
|
||||
"check": "svelte-check --tsconfig ./tsconfig.app.json && tsc -p tsconfig.node.json"
|
||||
},
|
||||
"dependencies": {
|
||||
"octagonal-wheels": "^0.1.50"
|
||||
"octagonal-wheels": "^0.1.51"
|
||||
},
|
||||
"devDependencies": {
|
||||
"eslint-plugin-svelte": "^3.19.0",
|
||||
|
||||
@@ -105,6 +105,13 @@ for (const dir of workspaceDirs) {
|
||||
console.log(` Dependency '${dep}': ${oldVer} -> ${newVer}`);
|
||||
pkg.dependencies[dep] = newVer;
|
||||
}
|
||||
if (lockWorkspace) {
|
||||
lockWorkspace.dependencies ??= {};
|
||||
if (lockWorkspace.dependencies[dep] !== newVer) {
|
||||
lockWorkspace.dependencies[dep] = newVer;
|
||||
packageLockChanged = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -119,6 +126,13 @@ for (const dir of workspaceDirs) {
|
||||
console.log(` DevDependency '${dep}': ${oldVer} -> ${newVer}`);
|
||||
pkg.devDependencies[dep] = newVer;
|
||||
}
|
||||
if (lockWorkspace) {
|
||||
lockWorkspace.devDependencies ??= {};
|
||||
if (lockWorkspace.devDependencies[dep] !== newVer) {
|
||||
lockWorkspace.devDependencies[dep] = newVer;
|
||||
packageLockChanged = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+15
-1
@@ -5,9 +5,15 @@ The head note of 0.25 is now in [updates_old.md](https://github.com/vrtmrz/obsid
|
||||
|
||||
## Unreleased
|
||||
|
||||
## 0.25.82
|
||||
|
||||
15th July, 2026
|
||||
|
||||
Recently, I created a repository called Fancy Kit and have been trying to build some proper infrastructure around it. Does any of this look like cumbersome bureaucracy? No need to worry: you can carry on as usual. Codex is simply tidying up my usual rambling prose, terrible pull requests, and disjointed remarks.
|
||||
|
||||
### Fixed
|
||||
|
||||
- Refresh the remote Security Seed before each replication, preventing a client that remained open during a remote database rebuild from uploading data encrypted with the previous seed (#1018).
|
||||
- Refreshed the remote Security Seed before each replication, preventing a client that remained open during a remote database rebuild from uploading data encrypted with the previous seed (#1018).
|
||||
- The P2P **Start Sync & Close** action now waits for synchronisation to settle before closing the dialogue, avoiding premature release of screen-awake protection while work remains in flight.
|
||||
|
||||
### Improved
|
||||
@@ -15,6 +21,14 @@ The head note of 0.25 is now in [updates_old.md](https://github.com/vrtmrz/obsid
|
||||
- On supported mobile and desktop devices, one-shot replication, P2P peer discovery and selection, database rebuild and fetch operations, and remote chunk fetching now keep the screen awake for the duration of these finite remote operations. LiveSync also postpones its normal visibility suspension until the operation finishes, although platform restrictions may still pause or terminate background work.
|
||||
- The 📲 status-bar indicator now covers finite remote work as well as HTTP requests. It reports broad remote activity, such as P2P peer selection and remote chunk fetching, rather than an exact physical connection count.
|
||||
|
||||
### Improved (CLI)
|
||||
|
||||
- CLI container images are now published for both AMD64 and ARM64 platforms.
|
||||
|
||||
### Testing
|
||||
|
||||
- Added a local real-Obsidian compatibility test that writes an encrypted, path-obfuscated note through the LiveSync CLI and verifies that the plug-in materialises the same content.
|
||||
|
||||
## 0.25.81
|
||||
|
||||
14th July, 2026
|
||||
|
||||
@@ -113,6 +113,15 @@ describe("release workflow", () => {
|
||||
expect(workflow).toMatch(/git add[^\n]*_types/);
|
||||
});
|
||||
|
||||
it("installs Deno before post-processing fallback type definitions", () => {
|
||||
const workflow = readFileSync(prepareReleaseWorkflow, "utf8");
|
||||
const setupDeno = workflow.indexOf("denoland/setup-deno@v2");
|
||||
const buildTypes = workflow.indexOf("npm run build:lib:types");
|
||||
|
||||
expect(setupDeno).toBeGreaterThan(-1);
|
||||
expect(setupDeno).toBeLessThan(buildTypes);
|
||||
});
|
||||
|
||||
it("keeps the release PR in draft until BRAT validation", () => {
|
||||
const workflow = readFileSync(prepareReleaseWorkflow, "utf8");
|
||||
|
||||
@@ -158,9 +167,18 @@ describe("workspace version update", () => {
|
||||
it("keeps workspace package and lockfile versions together", () => {
|
||||
const directory = makeTemporaryDirectory();
|
||||
const workspaces = ["src/apps/cli", "src/apps/webpeer", "src/apps/webapp"];
|
||||
writeJson(directory, "package.json", { version: "0.25.81", workspaces });
|
||||
writeJson(directory, "package.json", {
|
||||
version: "0.25.81",
|
||||
workspaces,
|
||||
dependencies: { "octagonal-wheels": "^0.1.51" },
|
||||
devDependencies: { typescript: "^5.9.3" },
|
||||
});
|
||||
for (const workspace of ["cli", "webpeer", "webapp"]) {
|
||||
writeJson(directory, `src/apps/${workspace}/package.json`, { version: `0.25.80-${workspace}` });
|
||||
writeJson(directory, `src/apps/${workspace}/package.json`, {
|
||||
version: `0.25.80-${workspace}`,
|
||||
dependencies: { "octagonal-wheels": "^0.1.50" },
|
||||
devDependencies: { typescript: "^5.8.0" },
|
||||
});
|
||||
}
|
||||
writeJson(directory, "package-lock.json", {
|
||||
name: "obsidian-livesync",
|
||||
@@ -168,9 +186,21 @@ describe("workspace version update", () => {
|
||||
lockfileVersion: 3,
|
||||
packages: {
|
||||
"": { version: "0.25.80", workspaces },
|
||||
"src/apps/cli": { version: "0.25.80-cli" },
|
||||
"src/apps/webpeer": { version: "0.25.80-webpeer" },
|
||||
"src/apps/webapp": { version: "0.25.80-webapp" },
|
||||
"src/apps/cli": {
|
||||
version: "0.25.80-cli",
|
||||
dependencies: { "octagonal-wheels": "^0.1.50" },
|
||||
devDependencies: { typescript: "^5.8.0" },
|
||||
},
|
||||
"src/apps/webpeer": {
|
||||
version: "0.25.80-webpeer",
|
||||
dependencies: { "octagonal-wheels": "^0.1.50" },
|
||||
devDependencies: { typescript: "^5.8.0" },
|
||||
},
|
||||
"src/apps/webapp": {
|
||||
version: "0.25.80-webapp",
|
||||
dependencies: { "octagonal-wheels": "^0.1.50" },
|
||||
devDependencies: { typescript: "^5.8.0" },
|
||||
},
|
||||
},
|
||||
});
|
||||
|
||||
@@ -180,6 +210,8 @@ describe("workspace version update", () => {
|
||||
for (const workspace of ["cli", "webpeer", "webapp"]) {
|
||||
const packageJson = JSON.parse(readFileSync(join(directory, `src/apps/${workspace}/package.json`), "utf8"));
|
||||
expect(packageJson.version).toBe(`0.25.81-${workspace}`);
|
||||
expect(packageJson.dependencies["octagonal-wheels"]).toBe("^0.1.51");
|
||||
expect(packageJson.devDependencies.typescript).toBe("^5.9.3");
|
||||
}
|
||||
const packageLock = JSON.parse(readFileSync(join(directory, "package-lock.json"), "utf8"));
|
||||
expect(packageLock.version).toBe("0.25.81");
|
||||
@@ -187,5 +219,9 @@ describe("workspace version update", () => {
|
||||
expect(packageLock.packages["src/apps/cli"].version).toBe("0.25.81-cli");
|
||||
expect(packageLock.packages["src/apps/webpeer"].version).toBe("0.25.81-webpeer");
|
||||
expect(packageLock.packages["src/apps/webapp"].version).toBe("0.25.81-webapp");
|
||||
for (const workspace of workspaces) {
|
||||
expect(packageLock.packages[workspace].dependencies["octagonal-wheels"]).toBe("^0.1.51");
|
||||
expect(packageLock.packages[workspace].devDependencies.typescript).toBe("^5.9.3");
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
+2
-1
@@ -3,5 +3,6 @@
|
||||
"0.25.60": "1.7.2",
|
||||
"1.0.1": "0.9.12",
|
||||
"1.0.0": "0.9.7",
|
||||
"0.25.81": "1.7.2"
|
||||
"0.25.81": "1.7.2",
|
||||
"0.25.82": "1.7.2"
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user