-
-
Notifications
You must be signed in to change notification settings - Fork 80
Expand file tree
/
Copy pathCargo.toml
More file actions
177 lines (159 loc) · 6.43 KB
/
Copy pathCargo.toml
File metadata and controls
177 lines (159 loc) · 6.43 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
[workspace]
members = ["crates/flectar-mail-core", "crates/renderer-probe"]
exclude = ["crates/blitz-dom", "crates/blitz-paint", "crates/parley", "crates/parley_emoji"]
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" }
parley = { path = "crates/parley" }
[package]
name = "flectar-mail"
version = "0.1.0-alpha.6"
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"
# Backport of upstream emoji presentation selection; see patches/parley.
parley = "=0.11.1"
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.18 and Blitz beta.2 share Fontique 0.11. Keep dynamic Fontconfig
# loading enabled explicitly so both rendering stacks agree on the native ABI.
fontique_0_11 = { package = "fontique", version = "=0.11.1", features = ["fontconfig-dlopen"] }
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.18.1", default-features = false, features = [
"std",
"renderer-software",
"system-tray",
"unstable-fontique-011",
"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.18.1", default-features = false, features = ["backend-winit"] }
[target.'cfg(any(target_os = "windows", target_os = "macos", target_os = "ios"))'.dependencies]
slint = { version = "1.18.1", 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 alias deliberately aligns 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_11", "slint-build", "winresource", "cc"]
[build-dependencies]
cc = "1"
slint-build = "1.18.1"
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