mirror of
https://github.com/flectar/mail.git
synced 2026-11-13 10:34:15 +00:00
180 lines
6.5 KiB
TOML
180 lines
6.5 KiB
TOML
[workspace]
|
|
members = ["crates/flectar-mail-core", "crates/renderer-probe"]
|
|
exclude = ["crates/blitz-dom", "crates/blitz-paint"]
|
|
resolver = "3"
|
|
|
|
[workspace.dependencies]
|
|
tokio = { version = "1", features = ["rt-multi-thread", "macros", "sync", "time", "net", "io-util", "fs"] }
|
|
serde = { version = "1", features = ["derive"] }
|
|
serde_json = "1"
|
|
thiserror = "2"
|
|
anyhow = "1"
|
|
tracing = "0.1"
|
|
chrono = { version = "0.4", features = ["serde"] }
|
|
|
|
[patch.crates-io]
|
|
blitz-dom = { path = "crates/blitz-dom" }
|
|
blitz-paint = { path = "crates/blitz-paint" }
|
|
|
|
[package]
|
|
name = "flectar-mail"
|
|
version = "0.1.0-alpha.5"
|
|
description = "A native email client built with Rust, Slint, and Blitz"
|
|
license = "AGPL-3.0-only"
|
|
repository = "https://github.com/flectar/mail"
|
|
homepage = "https://flectar.com"
|
|
publish = false
|
|
edition = "2024"
|
|
rust-version = "1.92"
|
|
build = "build.rs"
|
|
autobins = false
|
|
|
|
[lib]
|
|
path = "src/lib.rs"
|
|
|
|
[[bin]]
|
|
name = "flectar-mail"
|
|
path = "src/desktop.rs"
|
|
|
|
[features]
|
|
# Desktop builds include both renderers. The saved runtime preference defaults
|
|
# to CPU, which does not initialize WGPU. Minimal/mobile builds opt out below.
|
|
default = ["remote-content", "gpu-renderer"]
|
|
gpu-renderer = [
|
|
"dep:anyrender_vello",
|
|
"dep:vello",
|
|
"slint/renderer-femtovg-wgpu",
|
|
"slint/unstable-wgpu-29",
|
|
]
|
|
# Normal builds include the bounded image-loader capability, but the persisted
|
|
# runtime setting remains off by default. `--no-default-features` omits all
|
|
# remote body-image loading code for a capability-free minimal build.
|
|
remote-content = []
|
|
# The Flatpak sandbox omits Slint's legacy StatusNotifierItem integration.
|
|
# Native packages retain the system tray and close-to-tray behavior.
|
|
flatpak = []
|
|
# Slint's documented iOS backend uses Skia. Keep it opt-in so desktop builds
|
|
# retain the smaller software-rendered dependency set.
|
|
ios = ["slint/renderer-skia"]
|
|
|
|
[dependencies]
|
|
pdfium-render = { version = "=0.9.4", default-features = false, features = ["pdfium_7881", "thread_safe"] }
|
|
anyrender = "0.13"
|
|
anyrender_vello = { version = "0.14", optional = true }
|
|
anyrender_vello_cpu = "0.17"
|
|
# Email templates use CSS floats and legacy table/image align attributes.
|
|
# Keep float layout enabled on every platform, including minimal builds.
|
|
blitz-dom = { version = "=0.3.0-beta.2", features = ["floats"] }
|
|
blitz-html = "=0.3.0-beta.2"
|
|
blitz-paint = "=0.3.0-beta.2"
|
|
blitz-traits = "=0.3.0-beta.2"
|
|
base64 = "0.22"
|
|
percent-encoding = "2"
|
|
data-url = "0.3"
|
|
html5ever = "0.39"
|
|
cssparser = "0.37"
|
|
unicode-segmentation = "1.13"
|
|
parley = "0.11"
|
|
pulldown-cmark = "0.13.4"
|
|
vello = { version = "0.10", optional = true }
|
|
# This native shell currently exposes keyword/FTS search, not local semantic
|
|
# search. Do not link Candle, tokenizers, or Hugging Face into every AppImage.
|
|
flectar-mail-core = { path = "crates/flectar-mail-core", default-features = false }
|
|
# Slint 1.17 and Blitz beta.2 use adjacent, semver-incompatible Fontique
|
|
# releases that share the same native Fontconfig crate. Enable dynamic loading
|
|
# on both so Cargo's shared native feature set cannot select an ABI that only
|
|
# one consumer is prepared to use.
|
|
fontique_0_10 = { package = "fontique", version = "=0.10.0", features = ["fontconfig-dlopen"] }
|
|
fontique_0_11 = { package = "fontique", version = "=0.11.1", features = ["fontconfig-dlopen"] }
|
|
dirs = "6"
|
|
chrono.workspace = true
|
|
cosmic-text = { version = "0.19", default-features = false, features = ["std", "swash"] }
|
|
image = { version = "0.25", default-features = false, features = ["gif", "ico", "jpeg", "png", "webp"] }
|
|
keyboard-types = "0.7"
|
|
reqwest = { version = "0.13", default-features = false, features = ["rustls", "http2"] }
|
|
sha2 = "0.10"
|
|
serde.workspace = true
|
|
serde_json.workspace = true
|
|
sys-locale = "0.3"
|
|
tempfile = "3"
|
|
# The application paints its own controls on Slint's winit backend. Desktop
|
|
# Linux enables both Wayland and X11; Apple and Windows use their native winit
|
|
# integrations. Android supplies its dedicated activity backend separately.
|
|
# The `gpu-renderer` feature adds WGPU and exposes its device/queue to Vello.
|
|
slint = { version = "1.17", default-features = false, features = [
|
|
"std",
|
|
"renderer-software",
|
|
"system-tray",
|
|
"unstable-fontique-010",
|
|
"compat-1-2",
|
|
] }
|
|
tokio = { version = "1", features = ["rt-multi-thread", "sync", "time", "net", "io-util", "fs", "process"] }
|
|
tracing.workspace = true
|
|
unicode-properties = { version = "0.1", default-features = false, features = ["emoji"] }
|
|
url = "2"
|
|
webbrowser = "1.2"
|
|
|
|
[target.'cfg(target_os = "windows")'.dependencies]
|
|
windows-sys = { version = "0.61", features = ["Win32_Foundation", "Win32_Security", "Win32_System_JobObjects", "Win32_System_Threading"] }
|
|
|
|
[target.'cfg(unix)'.dependencies]
|
|
libc = "0.2"
|
|
|
|
[target.'cfg(target_os = "linux")'.dependencies]
|
|
ashpd = { version = "0.11", default-features = false, features = ["tokio"] }
|
|
landlock = "0.4.7"
|
|
seccompiler = "0.5"
|
|
slint = { version = "1.17", default-features = false, features = ["backend-winit"] }
|
|
|
|
[target.'cfg(any(target_os = "windows", target_os = "macos", target_os = "ios"))'.dependencies]
|
|
slint = { version = "1.17", default-features = false, features = ["backend-winit"] }
|
|
|
|
[target.'cfg(not(any(target_os = "android", target_os = "ios")))'.dependencies]
|
|
arboard = { version = "3.6", default-features = false, features = ["wayland-data-control"] }
|
|
rfd = { version = "0.16", default-features = false, features = ["tokio", "xdg-portal"] }
|
|
|
|
[package.metadata.appimage]
|
|
icon = "resources/app-icon/flectar-mail-masked-512.png"
|
|
desktop_entry = "resources/com.flectar.mail.desktop"
|
|
auto_link = true
|
|
auto_link_exclude_list = [
|
|
"ld-linux*.so*",
|
|
"libc.so*",
|
|
"libdl.so*",
|
|
"libgcc_s.so*",
|
|
"libm.so*",
|
|
"libpthread.so*",
|
|
"librt.so*",
|
|
"libstdc++.so*",
|
|
]
|
|
|
|
# The Fontique aliases deliberately align a feature across Slint's and Blitz's
|
|
# transitive font stacks.
|
|
# `slint-build`, iOS-only `cc`, and Windows-only `winresource` are consumed by build.rs.
|
|
# These do not appear as normal Rust paths on every host, so dependency
|
|
# scanners need the explicit exceptions.
|
|
[package.metadata.cargo-machete]
|
|
ignored = ["fontique_0_10", "fontique_0_11", "slint-build", "winresource", "cc"]
|
|
|
|
[build-dependencies]
|
|
cc = "1"
|
|
slint-build = "1.17"
|
|
winresource = "0.1"
|
|
|
|
[profile.release]
|
|
opt-level = 3
|
|
lto = "thin"
|
|
codegen-units = 1
|
|
panic = "unwind"
|
|
strip = "symbols"
|
|
|
|
# Full DWARF for this renderer/protocol dependency graph consumes many GiB and
|
|
# makes every integration-test binary expensive to link. Line tables preserve
|
|
# useful file/line backtraces while keeping development builds substantially
|
|
# smaller and less memory-hungry.
|
|
[profile.dev]
|
|
debug = 1
|
|
|
|
[profile.test]
|
|
debug = 1
|