[package] name = "better-twttr" version = "1.0.2" description = "X, extended: themes, plugins and recoverable drafts" license = "GPL-3.0-or-later" edition = "2021" rust-version = "1.88" [lib] name = "better_twttr" path = "src/lib.rs" [[bin]] name = "better-twttr" path = "src/main.rs" required-features = ["desktop"] [features] default = ["desktop"] desktop = [ "dep:tauri", "dep:tauri-build", "dep:tauri-plugin-deep-link", "dep:tauri-plugin-dialog", "waybetter-host/app", "waybetter-host/net", "waybetter-host/macos-private-api", "dep:reqwest", "dep:rustls", ] [build-dependencies] tauri-build = { version = "2", features = [], optional = true } # The host's command list for the app-command manifest (`waybetter_host::commands::manifest`). waybetter-host = { path = "../../../waybetter/crates/waybetter-host" } [dependencies] # The wayBetter framework (git submodule at the repository root): host policy, profiles, plugins, # hotfix/update logic and, with the desktop feature, the app itself (`app::run_app`). # `vault`: the drafts store (CAS revisions, history, export) the app gives its own rules. waybetter-host = { path = "../../../waybetter/crates/waybetter-host", features = ["vault"] } # `macos-private-api`: a transparent shell webview (drawsBackground off) that can rise above the # tab webviews for its overlays (host::raise_shell). Not for the Mac App Store, which we skip. tauri = { version = "2", features = ["unstable", "macos-private-api"], optional = true } serde = { version = "1", features = ["derive"] } serde_json = "1" rusqlite = { version = "0.38", features = ["bundled"] } chrono = { version = "0.4", default-features = false, features = ["clock"] } uuid = { version = "1", features = ["v4"] } url = "2" # The single-instance, window-state, opener, updater, process and notification plugins come with # the wayBetter host (`waybetter-host/app`, registered by `run_app`). # waybetter://install links (install screen only; no capability grants the plugin's JS API). tauri-plugin-deep-link = { version = "2", optional = true } # Gallery folder picker, driven from Rust only (no JS capability grants the dialog plugin). tauri-plugin-dialog = { version = "2", optional = true } # Chat+ link previews (src/link_preview.rs): the same client the host's store uses, no cookies. reqwest = { version = "0.13", default-features = false, features = ["rustls-no-provider"], optional = true } rustls = { version = "0.23", default-features = false, features = ["ring"], optional = true } sha2 = "0.10" base64 = "0.22" # Encrypted settings sync (a folder the owner picks): Argon2id key from the passphrase, # XChaCha20-Poly1305 per snapshot. Pure Rust (RustCrypto), no server, no account. argon2 = { version = "0.5", default-features = false, features = ["alloc"] } chacha20poly1305 = { version = "0.10", default-features = false, features = ["alloc"] } [dev-dependencies] tempfile = "3"