No description
Find a file
Andras Schmelczer 42c9d55489 split: sync-engine rewrite (sync-operations + sync-client.ts)
Replace the single unrestricted-syncer.ts with a two-loop architecture:
- syncer.ts drains the FIFO wire queue (HTTP + WS handlers).
- reconciler.ts moves files to make localPath match remoteRelativePath
  (topo-sorted move graph, in-memory cycle resolution with crash-safe
  swap markers).
- sync-event-queue.ts holds the byDocId / byLocalPath indexes and the
  pending-create promise chain.
- offline-change-detector.ts, expected-fs-events.ts, types.ts, and a
  rewritten cursor-tracker.ts / file-change-notifier.ts round it out.
Plus sync-client.ts wiring, tracing/sync-history.ts updates, index.ts
re-exports, and sync-client tsconfig/webpack/package.json.
2026-05-08 21:37:26 +01:00
.forgejo/workflows split: CI workflows, scripts, root tooling, and docs 2026-05-08 21:35:07 +01:00
.github split: CI workflows, scripts, root tooling, and docs 2026-05-08 21:35:07 +01:00
.vscode split: CI workflows, scripts, root tooling, and docs 2026-05-08 21:35:07 +01:00
docs split: CI workflows, scripts, root tooling, and docs 2026-05-08 21:35:07 +01:00
frontend split: sync-engine rewrite (sync-operations + sync-client.ts) 2026-05-08 21:37:26 +01:00
scripts split: CI workflows, scripts, root tooling, and docs 2026-05-08 21:35:07 +01:00
sync-server split: server websocket + cursors 2026-05-08 21:35:52 +01:00
.editorconfig Fix and apply editorconfig 2025-12-07 16:42:23 +00:00
.gitignore split: CI workflows, scripts, root tooling, and docs 2026-05-08 21:35:07 +01:00
CLAUDE.md split: CI workflows, scripts, root tooling, and docs 2026-05-08 21:35:07 +01:00
manifest.json Bump versions to 0.14.0 2025-12-14 23:31:40 +00:00
package-lock.json split: CI workflows, scripts, root tooling, and docs 2026-05-08 21:35:07 +01:00
README.md split: CI workflows, scripts, root tooling, and docs 2026-05-08 21:35:07 +01:00
rustfmt.toml split: CI workflows, scripts, root tooling, and docs 2026-05-08 21:35:07 +01:00

VaultLink self-hosted Obsidian plugin for file syncing

Check E2E tests Publish server Docker image Publish CLI Publish Obsidian plugin

Develop

Set up Node.JS 25 with nvm

  • curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.1/install.sh | bash
  • nvm install 25
  • nvm use 25
  • Optionally, set the system-wide default: nvm alias default 25

Set up Rust

  • Install rustup: curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
  • Install wasm-pack: curl https://rustwasm.github.io/wasm-pack/installer/init.sh -sSf | sh
  • cargo install cargo-insta sqlx-cli

Install Obsidian on Linux

apt install flatpak
flatpak remote-add --if-not-exists flathub https://dl.flathub.org/repo/flathub.flatpakrepo
flatpak install flathub md.obsidian.Obsidian
flatpak run md.obsidian.Obsidian

Run in development mode

Start the server:

cargo install sqlx-cli
cd sync-server
cargo run config-e2e.yml
cd frontend
npm install
npm run dev

Scripts

Before pushing

scripts/check.sh --fix

Update HTTP API TS bindings

scripts/update-api-types.sh

Publish new version

scripts/bump-version.sh patch

Run E2E tests

scripts/e2e.sh 8

And to clean up the logs & database files, run scripts/clean-up.sh

Projects