-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathCargo.toml
More file actions
144 lines (140 loc) · 5.93 KB
/
Copy pathCargo.toml
File metadata and controls
144 lines (140 loc) · 5.93 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
[workspace]
resolver = "2"
members = [
"crates/driven-core",
"crates/driven-remote",
"crates/driven-backend",
"crates/driven-drive",
"crates/driven-s3",
"crates/driven-sftp",
"crates/driven-rclone",
"crates/driven-localfs",
"crates/driven-crypto",
"crates/driven-power",
"crates/driven-diskstat",
"crates/driven-vss",
"crates/driven-vss-helper",
"crates/driven-apfs",
"crates/driven-net",
"crates/driven-tls",
"crates/driven-cli",
"crates/driven-test-fixtures",
"crates/driven-chaos",
"crates/driven-e2e",
"crates/driven-bench",
"src-tauri",
]
# M9b (SPEC s16): the telemetry Cloudflare Worker has its own (TypeScript/wrangler)
# toolchain and is NOT a cargo crate - keep it out of the workspace so a stray
# manifest there could never be pulled into `cargo build --workspace`.
exclude = [
"telemetry-worker",
]
[workspace.package]
version = "2.12.0"
edition = "2021"
rust-version = "1.85"
authors = ["Driven contributors"]
license = "MIT OR Apache-2.0"
repository = "https://github.com/pmaxhogan/driven"
homepage = "https://driven.maxhogan.dev"
[workspace.dependencies]
tokio = { version = "1", features = ["full"] }
anyhow = "1"
thiserror = "2"
serde = { version = "1", features = ["derive"] }
serde_json = "1"
tracing = "0.1"
tracing-subscriber = { version = "0.3", features = ["env-filter"] }
# Persistent rolling file logs for the installed app (src-tauri `logging.rs`).
# An installed build has no console, so the previous stdout-only subscriber
# discarded every line and the diagnostic bundle shipped with no logs. Provides
# the DAILY rolling appender + the non-blocking writer that keeps file I/O off
# the calling thread.
tracing-appender = "0.2"
async-trait = "0.1"
bytes = "1"
futures = "0.3"
uuid = { version = "1", features = ["v4", "serde"] }
hex = "0.4"
parking_lot = "0.12"
# M3 CPU-bound work: parallel hashing + encryption off the tokio reactor
# (DESIGN s11.4.4, s11.4.5). Consumed by driven-core's executor impl and
# the deep-verify pass.
rayon = "1.10"
# M3 filesystem watcher backend (inotify / FSEvents / ReadDirectoryChangesW,
# DESIGN s5.9.1). Wired into the watcher impl crate; driven-core stays
# I/O-free and holds only the trait surface.
notify = "8"
# M3 network-resilience layer (DESIGN s5.8): the HTTP client for the
# three-probe topology + Drive traffic. `rustls-tls-native-roots` (NOT the bare
# `rustls-tls`, which bundles the webpki-roots Mozilla set) pulls
# `rustls-native-certs` so we trust the OS / enterprise trust store - corporate
# private CAs work behind a TLS-inspecting proxy (DESIGN s5.8.7, codex R-P2-2).
# The DNS re-resolution probe (DESIGN s5.8.1) uses `tokio::net::lookup_host`,
# not a resolver crate; `hickory-resolver` was the optional s5.8.5 escalation
# and is not wired in V1 (dropped to clear RUSTSEC-2026-0119 in hickory-proto's
# name compression).
reqwest = { version = "0.12", default-features = false, features = [
"rustls-tls-native-roots",
"http2",
"stream",
# Issue #34 (SOCKS5 + PAC proxy support): the `socks` feature enables
# `socks5://` and `socks5h://` proxy URLs on `reqwest::Proxy` (the `h`
# variant does proxy-side DNS). Off by default; required for manual SOCKS5
# proxies and any PAC decision that returns a SOCKS proxy.
"socks",
] }
# M3 encryption (DESIGN s7): XChaCha20-Poly1305 STREAM for content +
# single-shot for filenames; BIP39 recovery phrase over the master key;
# base32hex filename encoding; zeroize to scrub key material.
chacha20poly1305 = { version = "0.10", features = ["stream"] }
bip39 = "2"
base32 = "0.5"
zeroize = { version = "1", features = ["derive"] }
# Drive's `md5Checksum` is the ciphertext MD5 (DESIGN s7.1). The crypto
# content encryptor and the executor's plaintext-path hasher both compute it
# (the RustCrypto `md-5` crate, imported as `md_5`).
md5 = { version = "0.10", package = "md-5" }
# M4 Google OAuth (SPEC s4): PKCE loopback installed-app flow. oauth2 v5
# declares its `reqwest` dep with default-features=false and gates TLS behind
# its own feature flags, so `default-features=false` + the `reqwest` +
# `rustls-tls` features bring in reqwest 0.12 with rustls ONLY - it never
# pulls native-tls/openssl (SPEC s4: bring-your-own reqwest client, no
# native-tls). The flow hands oauth2 our own redirect-disabled
# `reqwest::Client` (SSRF defence per SPEC s4 / the oauth2 v5 upgrade notes).
oauth2 = { version = "5", default-features = false, features = [
"reqwest",
"rustls-tls",
] }
# M4 OS keychain (SPEC s4.1): refresh tokens persist in the keychain only.
# Promoted from driven-crypto's direct dep to a workspace dep so both crates
# share one version; keyring 4.x's default `v1` feature bundles the per-OS
# native stores.
keyring = "4"
# M4 URL building for the Drive REST endpoints + the loopback redirect URI
# (SPEC s4).
url = "2"
# M4 base64url for PKCE / token plumbing and any binary-in-JSON Drive fields.
base64 = "0.23"
# M4 CLI surface (ROADMAP M4 acceptance: `cargo run --bin driven-cli auth`).
# `derive` for the `#[derive(Parser)]` command tree.
clap = { version = "4", features = ["derive", "env"] }
# V2 small-file bundling (issue #35): pack cold folders of many tiny files into a
# single `.tar.gz` Drive object to cut round-trips / rate-limit pressure. `tar`
# builds and reads the archive; `flate2` with the pure-Rust `rust_backend`
# (miniz_oxide) does the gzip layer with NO C toolchain dependency (keeps the
# reproducible cross-platform build; matches the app's no-native-deps posture).
tar = "0.4"
flate2 = { version = "1", default-features = false, features = ["rust_backend"] }
# Raw POSIX calls the std library does not expose: `ioprio_set` / `setpriority`
# for the below-normal backup-thread priority (`driven_core::priority`), and the
# chaos harness's fault injection. Pulled per-crate under a `cfg(unix)` target
# section - the Windows backends call kernel32 directly.
libc = "0.2"
[profile.dev]
opt-level = 1
[profile.release]
lto = "thin"
codegen-units = 1
strip = "symbols"