[package] name = "thoughtsync-desktop" version = "0.1.0" description = "ThoughtSync desktop — local-first Keep-style thought capture" authors = ["bvandeusen"] edition = "2021" # App logic lives in the library (Tauri v2 pattern: a single `run()` entry point # reusable across desktop and any future mobile target); main.rs is a thin shim. [lib] name = "thoughtsync_desktop_lib" crate-type = ["staticlib", "cdylib", "rlib"] [build-dependencies] tauri-build = { version = "2", features = [] } [dependencies] tauri = { version = "2", features = [] } serde = { version = "1", features = ["derive"] } serde_json = "1" # Local-first store (M10.4): bundled = compile SQLite in, so there's no system # libsqlite dependency to vary across the AppImage / native / Windows builds. rusqlite = { version = "0.32", features = ["bundled"] } uuid = { version = "1", features = ["v4"] } # RFC3339 timestamps for created_at/updated_at/remind_at (Date.parse-able on the JS side). chrono = { version = "0.4", default-features = false, features = ["clock"] } # Startup + operation logging to stdout AND a persistent file, so portability # issues are diagnosable from any environment. `log` is the facade the code uses. tauri-plugin-log = "2" log = "0.4" # In-app updates (M10.9). Signature verification is minisign; the public half lives # in tauri.conf.json and the private half only ever as a CI secret. tauri-plugin-updater = "2" # HTTP for the opt-in server handshake (M10.6) and, next, the sync engine (M10.7). # # native-tls, NOT rustls, deliberately: on x86_64-pc-windows-msvc native-tls # resolves to `schannel` — pure-Rust bindings to the OS TLS stack — so nothing C or # assembly has to cross-compile on the Windows lane, which is the fragile one (it # builds on Linux via cargo-xwin, and a C dependency there is what broke it before). # rustls would instead pull in ring/aws-lc-rs and their assembler. On Linux # native-tls uses OpenSSL, whose headers (libssl-dev) ci-tauri already ships. # default-features off drops http2/charset we don't need for a JSON API. reqwest = { version = "0.12", default-features = false, features = ["json", "native-tls"] } # Verifying downloaded attachment bytes against the sha256 the server advertised. # Pure Rust (no C/asm beyond optional cpufeatures), so it costs the Windows # cross-compile lane nothing — see ci-requirements.md on why that matters here. sha2 = "0.10" # Tauri's default release profile: smaller, faster shipped binaries. [profile.release] codegen-units = 1 lto = true opt-level = "s" panic = "abort" strip = true