[package] name = "thoughtsync-desktop" version = "0.2.0" description = "ThoughtSync desktop — local-first Keep-style thought capture" authors = ["bvandeusen"] edition = "2021" # The executable is named below, not inferred from this package name. Off so the # inferred `thoughtsync-desktop` target and the explicit one can't both claim # src/main.rs. autobins = false # App logic lives in the library (Tauri v2 pattern: a single `run()` entry point); # main.rs is a thin shim. # # rlib only. The staticlib/cdylib types existed for Tauri mobile, which Android no # longer uses — it is a native Kotlin client over `thoughtsync-core` instead # (Scribe note 2730), and the .so it loads is built from that crate, not this one. [lib] name = "thoughtsync_desktop_lib" crate-type = ["rlib"] # The shipped command is `thoughtsync` on every install channel, and the binary's # own name is what the desktop actually keys on: GTK derives the window's WM_CLASS # from it, and Tauri's generated .desktop file sets StartupWMClass to that same # name. (Written without braces on purpose: `tauri android init` round-trips this # file through a TOML serializer that reformats brace tokens inside comments.) # So the canonical name has to be carried by the build target itself, not just by # the path it gets installed to (issue 2075). The crate stays `thoughtsync-desktop` # — only the executable is renamed. `thoughtsync` is also fixed under kebab-casing, # which the AppImage bundler applies to the binary name on its way in. [[bin]] name = "thoughtsync" path = "src/main.rs" [build-dependencies] tauri-build = { version = "2", features = [] } [dependencies] # The framework-free client core: local SQLite store + sync engine. Shared with the # Android client, which binds the same crate through uniffi (Scribe note 2730). thoughtsync-core = { path = "../../core" } tauri = { version = "2", features = [] } serde = { workspace = true } serde_json = { workspace = true } log = { workspace = true } # Startup + operation logging to stdout AND a persistent file, so portability # issues are diagnosable from any environment. tauri-plugin-log = "2" # 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. Desktop only — # the plugin declares android support level "none", which is why the Android client # gets a server-served update path instead (Scribe note 2725). tauri-plugin-updater = "2"