tauri-plugin-syncular 0.15.21

A native syncular client inside the Tauri process, exposed to the webview as commands + events (consumes the Rust client core directly — no FFI)
Documentation
[package]
name = "tauri-plugin-syncular"
version = "0.15.21"
edition = "2021"
description = "A native syncular client inside the Tauri process, exposed to the webview as commands + events (consumes the Rust client core directly — no FFI)"
license = "Apache-2.0"
repository = "https://github.com/syncular/syncular"
# Required by tauri-plugin's build script (it keys permission generation off
# the links name); must equal package.name.
links = "tauri-plugin-syncular"
# Isolated from rust: Tauri's crate tree is heavy and must not bloat the
# main workspace's cargo test/clippy gate. This crate lives in its own
# workspace at bindings/tauri/ (see ../Cargo.toml) with path deps reaching
# across the workspace boundary into the client + command crates.

[dependencies]
# Path deps across the workspace boundary into the main rust tree — the plugin
# consumes the client core DIRECTLY and dispatches through the shared router.
# The version constraints are what a `cargo publish` resolves against the
# crates.io index (path deps are stripped at publish time).
syncular-client = { path = "../../../rust/crates/client", version = "0.15.21" }
syncular-command = { path = "../../../rust/crates/command", version = "0.15.21" }
tauri = "2"
serde = { version = "1", features = ["derive"] }
serde_json = "1"

[build-dependencies]
tauri-plugin = { version = "2", features = ["build"] }

[dev-dependencies]
# The mock runtime (tauri::test) drives the plugin commands without a real
# window — a genuine round-trip through the Tauri IPC + invoke handler.
tauri = { version = "2", features = ["test"] }

[features]
# Default OFF: the lean build (client-local commands, offline apps, tests) has
# no HTTP/WS stack compiled in. Real apps enable `native-transport` for network
# sync/segments/blobs/realtime.
default = []
native-transport = ["syncular-client/native-transport"]
# §5.11 client-side encryption. Native apps opt in explicitly; forwarding the
# feature through the plugin keeps encrypted schemas usable without reaching
# into the plugin's transitive crate graph.
e2ee = ["syncular-client/e2ee", "syncular-command/e2ee"]
# §5.10.5 native CRDT commands (crdtText/crdtInsertText/crdtDeleteText/
# crdtApplyUpdate). Off by default so a lean plugin build skips yrs; the
# example enables it so the demo can show collaborative text. Forwards to the
# shared router — the plugin adds no code (the commands ride `dispatch`).
crdt-yjs = ["syncular-command/crdt-yjs"]