[package] name = "margin-mail" version = "0.0.4" description = "A calm, keyboard-first mail client for Gmail" authors = ["Margin"] edition = "2021" license = "LicenseRef-FSL-1.1-MIT" [lib] name = "margin_mail_lib" crate-type = ["staticlib", "cdylib", "rlib"] [build-dependencies] tauri-build = { version = "2", features = [] } [dependencies] tauri = { version = "2", features = [] } tauri-plugin-opener = "2" tauri-plugin-notification = "2" tauri-plugin-os = "2" # Mobile has no loopback listener to catch Google's redirect, so the OAuth answer comes back as a # custom URI scheme the OS routes to this app. Registered on desktop too, so both flows are one # code path with one difference in it rather than two. tauri-plugin-deep-link = "2" serde = { version = "1", features = ["derive"] } serde_json = "1" base64 = "0.22" sha2 = "0.10" rand = "0.8" url = "2" chrono = { version = "0.4", features = ["serde"] } tokio = { version = "1", features = ["sync", "time", "net", "io-util", "rt"] } # gzip because Gmail's JSON compresses by an order of magnitude and hydration is thousands of # responses; http2 because a batch of 50 and the poll loop share one connection. reqwest = { version = "0.13", default-features = false, features = [ "rustls", "webpki-roots", "json", "gzip", "http2", ] } # `bundled` so FTS5 is compiled in unconditionally rather than depending on what the platform's # libsqlite3 was built with. Several accounts share one process and one connection, so the busy # timeout in `mirror::open` is not optional. rusqlite = { version = "0.40", features = ["bundled"] } # Bodies are parsed from the raw RFC 2822 bytes, never from Gmail's pre-parsed payload: # `full_encoding` is what reads the legacy charsets that still arrive daily. mail-parser = { version = "0.11", features = ["full_encoding"] } mail-builder = "0.5" # The sanitiser. `ammonia` is a whitelist, which is the only shape of HTML filter worth trusting, # and `css-inline` folds the editor's stylesheet into the markup before a message is built so mail # clients that drop