2024-07-03 11:05:58 -07:00
|
|
|
[workspace]
|
2025-05-15 22:47:29 +02:00
|
|
|
resolver = "2"
|
2024-07-03 11:05:58 -07:00
|
|
|
members = [
|
2025-10-12 21:18:38 +01:00
|
|
|
"apps/app",
|
|
|
|
|
"apps/app-playground",
|
|
|
|
|
"apps/daedalus_client",
|
|
|
|
|
"apps/labrinth",
|
|
|
|
|
"packages/app-lib",
|
|
|
|
|
"packages/ariadne",
|
|
|
|
|
"packages/daedalus",
|
2025-10-18 11:38:19 -07:00
|
|
|
"packages/modrinth-maxmind",
|
|
|
|
|
"packages/modrinth-util",
|
2025-10-12 21:18:38 +01:00
|
|
|
"packages/path-util",
|
2024-07-03 11:05:58 -07:00
|
|
|
]
|
|
|
|
|
|
2025-06-14 01:16:48 +02:00
|
|
|
[workspace.package]
|
|
|
|
|
edition = "2024"
|
2025-10-18 11:38:19 -07:00
|
|
|
rust-version = "1.90.0"
|
|
|
|
|
repository = "https://github.com/modrinth/code"
|
2025-06-14 01:16:48 +02:00
|
|
|
|
2025-05-15 22:47:29 +02:00
|
|
|
[workspace.dependencies]
|
|
|
|
|
actix-cors = "0.7.1"
|
2025-10-15 14:45:47 -06:00
|
|
|
actix-files = "0.6.8"
|
|
|
|
|
actix-http = "3.11.2"
|
2025-05-15 22:47:29 +02:00
|
|
|
actix-multipart = "0.7.2"
|
2025-10-15 14:45:47 -06:00
|
|
|
actix-rt = "2.11.0"
|
2025-05-15 22:47:29 +02:00
|
|
|
actix-web = "4.11.0"
|
|
|
|
|
actix-web-prom = "0.10.0"
|
|
|
|
|
actix-ws = "0.3.0"
|
|
|
|
|
argon2 = { version = "0.5.3", features = ["std"] }
|
|
|
|
|
ariadne = { path = "packages/ariadne" }
|
2025-10-15 14:45:47 -06:00
|
|
|
async-compression = { version = "0.4.32", default-features = false }
|
2025-05-15 22:47:29 +02:00
|
|
|
async-recursion = "1.1.1"
|
|
|
|
|
async-stripe = { version = "0.41.0", default-features = false, features = [
|
2025-10-12 21:18:38 +01:00
|
|
|
"runtime-tokio-hyper-rustls",
|
2025-05-15 22:47:29 +02:00
|
|
|
] }
|
2025-10-15 14:45:47 -06:00
|
|
|
async-trait = "0.1.89"
|
|
|
|
|
async-tungstenite = { version = "0.31.0", default-features = false, features = [
|
2025-10-12 21:18:38 +01:00
|
|
|
"futures-03-sink",
|
|
|
|
|
] }
|
2025-05-15 22:47:29 +02:00
|
|
|
async-walkdir = "2.1.0"
|
2025-10-15 14:45:47 -06:00
|
|
|
async_zip = "0.0.18"
|
2025-05-15 22:47:29 +02:00
|
|
|
base64 = "0.22.1"
|
2025-10-15 14:45:47 -06:00
|
|
|
bitflags = "2.9.4"
|
|
|
|
|
bytemuck = "1.24.0"
|
2025-05-15 22:47:29 +02:00
|
|
|
bytes = "1.10.1"
|
|
|
|
|
censor = "0.3.0"
|
2025-06-13 22:52:57 +02:00
|
|
|
chardetng = "0.1.17"
|
2025-10-15 14:45:47 -06:00
|
|
|
chrono = "0.4.42"
|
|
|
|
|
cidre = { version = "0.11.3", default-features = false, features = [
|
2025-10-12 21:18:38 +01:00
|
|
|
"macos_15_0",
|
|
|
|
|
] }
|
2025-10-15 14:45:47 -06:00
|
|
|
clap = "4.5.48"
|
|
|
|
|
clickhouse = "0.14.0"
|
2025-10-12 21:18:38 +01:00
|
|
|
color-eyre = "0.6.5"
|
2025-05-15 22:47:29 +02:00
|
|
|
color-thief = "0.2.2"
|
|
|
|
|
console-subscriber = "0.4.1"
|
2025-10-12 21:18:38 +01:00
|
|
|
const_format = "0.2.34"
|
2025-05-15 22:47:29 +02:00
|
|
|
daedalus = { path = "packages/daedalus" }
|
|
|
|
|
dashmap = "6.1.0"
|
2025-10-15 14:45:47 -06:00
|
|
|
data-url = "0.3.2"
|
2025-08-08 15:50:44 -07:00
|
|
|
deadpool-redis = "0.22.0"
|
2025-08-29 07:08:26 -07:00
|
|
|
derive_more = "2.0.1"
|
2025-10-18 11:38:19 -07:00
|
|
|
directories = "6.0.0"
|
2025-05-15 22:47:29 +02:00
|
|
|
dirs = "6.0.0"
|
2025-10-15 14:45:47 -06:00
|
|
|
discord-rich-presence = "1.0.0"
|
2025-05-15 22:47:29 +02:00
|
|
|
dotenv-build = "0.1.1"
|
|
|
|
|
dotenvy = "0.15.7"
|
|
|
|
|
dunce = "1.0.5"
|
|
|
|
|
either = "1.15.0"
|
2025-06-13 22:52:57 +02:00
|
|
|
encoding_rs = "0.8.35"
|
2025-10-15 14:45:47 -06:00
|
|
|
enumset = "1.1.10"
|
2025-10-12 21:18:38 +01:00
|
|
|
eyre = "0.6.12"
|
2025-10-15 14:45:47 -06:00
|
|
|
flate2 = "1.1.4"
|
2025-05-15 22:47:29 +02:00
|
|
|
fs4 = { version = "0.13.1", default-features = false }
|
2025-10-15 14:45:47 -06:00
|
|
|
futures = "0.3.31"
|
2025-05-15 22:47:29 +02:00
|
|
|
futures-util = "0.3.31"
|
2025-07-02 21:32:15 +01:00
|
|
|
heck = "0.5.0"
|
2025-05-15 22:47:29 +02:00
|
|
|
hex = "0.4.3"
|
|
|
|
|
hickory-resolver = "0.25.2"
|
|
|
|
|
hmac = "0.12.1"
|
2025-10-15 14:45:47 -06:00
|
|
|
hyper = "1.7.0"
|
tweak(labrinth): drop last remaining dependency on system OpenSSL (#3982)
We standarized on using `rustls` as a TLS implementation across the
monorepo, which is written in Rust and has better ergonomics,
integration with the Rust ecosystem, and consistent behavior among
platforms. However, the Labrinth Clickhouse client was the last
remaining exception to this, using the native, OS-provided TLS
implementation, which on Linux is OpenSSL and requires developers and
Docker images to install OpenSSL development packages to build Labrinth,
in addition to introducing an additional runtime dependency to Labrinth.
Let's make the process of building Labrinth slightly simpler by
switching such client to `rustls` as well, which results in finally
using the same TLS implementation for everything, a simplified build and
distribution process, less transitive dependencies, and potentially
smaller binaries (since `rustls` was already being pulled in for, e.g.,
the SMTP client).
2025-07-12 15:39:41 +02:00
|
|
|
hyper-rustls = { version = "0.27.7", default-features = false, features = [
|
2025-10-15 14:45:47 -06:00
|
|
|
"aws-lc-rs",
|
2025-10-12 21:18:38 +01:00
|
|
|
"http1",
|
|
|
|
|
"native-tokio",
|
|
|
|
|
"tls12",
|
tweak(labrinth): drop last remaining dependency on system OpenSSL (#3982)
We standarized on using `rustls` as a TLS implementation across the
monorepo, which is written in Rust and has better ergonomics,
integration with the Rust ecosystem, and consistent behavior among
platforms. However, the Labrinth Clickhouse client was the last
remaining exception to this, using the native, OS-provided TLS
implementation, which on Linux is OpenSSL and requires developers and
Docker images to install OpenSSL development packages to build Labrinth,
in addition to introducing an additional runtime dependency to Labrinth.
Let's make the process of building Labrinth slightly simpler by
switching such client to `rustls` as well, which results in finally
using the same TLS implementation for everything, a simplified build and
distribution process, less transitive dependencies, and potentially
smaller binaries (since `rustls` was already being pulled in for, e.g.,
the SMTP client).
2025-07-12 15:39:41 +02:00
|
|
|
] }
|
2025-10-15 14:45:47 -06:00
|
|
|
hyper-util = "0.1.17"
|
|
|
|
|
iana-time-zone = "0.1.64"
|
|
|
|
|
image = { version = "0.25.8", default-features = false, features = ["rayon"] }
|
|
|
|
|
indexmap = "2.11.4"
|
2025-08-08 15:50:44 -07:00
|
|
|
indicatif = "0.18.0"
|
2025-05-15 22:47:29 +02:00
|
|
|
itertools = "0.14.0"
|
2025-08-08 15:50:44 -07:00
|
|
|
jemalloc_pprof = "0.8.1"
|
2025-10-15 14:45:47 -06:00
|
|
|
json-patch = { version = "4.1.0", default-features = false }
|
|
|
|
|
lettre = { version = "0.11.19", default-features = false, features = [
|
|
|
|
|
"aws-lc-rs",
|
2025-10-12 21:18:38 +01:00
|
|
|
"builder",
|
|
|
|
|
"hostname",
|
|
|
|
|
"pool",
|
|
|
|
|
"rustls",
|
|
|
|
|
"rustls-native-certs",
|
|
|
|
|
"smtp-transport",
|
|
|
|
|
"tokio1",
|
|
|
|
|
"tokio1-rustls",
|
2025-05-15 22:47:29 +02:00
|
|
|
] }
|
|
|
|
|
maxminddb = "0.26.0"
|
2025-10-15 14:45:47 -06:00
|
|
|
meilisearch-sdk = { version = "0.30.0", default-features = false }
|
2025-10-18 11:38:19 -07:00
|
|
|
modrinth-maxmind = { path = "packages/modrinth-maxmind" }
|
|
|
|
|
modrinth-util = { path = "packages/modrinth-util" }
|
2025-05-15 22:47:29 +02:00
|
|
|
murmur2 = "0.1.0"
|
2025-10-15 14:45:47 -06:00
|
|
|
native-dialog = "0.9.2"
|
2025-08-08 15:50:44 -07:00
|
|
|
notify = { version = "8.2.0", default-features = false }
|
|
|
|
|
notify-debouncer-mini = { version = "0.7.0", default-features = false }
|
2025-05-15 22:47:29 +02:00
|
|
|
p256 = "0.13.2"
|
|
|
|
|
paste = "1.0.15"
|
2025-10-12 21:18:38 +01:00
|
|
|
path-util = { path = "packages/path-util" }
|
2025-10-15 14:45:47 -06:00
|
|
|
phf = { version = "0.13.1", features = ["macros"] }
|
|
|
|
|
png = "0.18.0"
|
2025-05-15 22:47:29 +02:00
|
|
|
prometheus = "0.14.0"
|
|
|
|
|
quartz_nbt = "0.2.9"
|
2025-10-15 14:45:47 -06:00
|
|
|
quick-xml = "0.38.3"
|
2025-10-12 21:18:38 +01:00
|
|
|
rand = "=0.8.5" # Locked on 0.8 until argon2 and p256 update to 0.9
|
|
|
|
|
rand_chacha = "=0.3.1" # Locked on 0.3 until we can update rand to 0.9
|
2025-10-15 14:45:47 -06:00
|
|
|
redis = "0.32.7"
|
|
|
|
|
regex = "1.12.2"
|
|
|
|
|
reqwest = { version = "0.12.24", default-features = false }
|
2025-08-08 15:50:44 -07:00
|
|
|
rgb = "0.8.52"
|
2025-10-15 14:45:47 -06:00
|
|
|
rust_decimal = { version = "1.39.0", features = [
|
2025-10-12 21:18:38 +01:00
|
|
|
"serde-with-float",
|
|
|
|
|
"serde-with-str",
|
|
|
|
|
] }
|
2025-05-15 22:47:29 +02:00
|
|
|
rust_iso3166 = "0.1.14"
|
2025-10-15 14:45:47 -06:00
|
|
|
rust-s3 = { version = "0.37.0", default-features = false, features = [
|
2025-10-12 21:18:38 +01:00
|
|
|
"fail-on-err",
|
|
|
|
|
"tags",
|
|
|
|
|
"tokio-rustls-tls",
|
2025-06-14 01:16:48 +02:00
|
|
|
] }
|
2025-10-15 14:45:47 -06:00
|
|
|
rustls = "0.23.32"
|
2025-05-15 22:47:29 +02:00
|
|
|
rusty-money = "0.4.1"
|
2025-10-15 14:45:47 -06:00
|
|
|
sentry = { version = "0.45.0", default-features = false, features = [
|
2025-10-12 21:18:38 +01:00
|
|
|
"backtrace",
|
|
|
|
|
"contexts",
|
|
|
|
|
"debug-images",
|
|
|
|
|
"panic",
|
|
|
|
|
"reqwest",
|
|
|
|
|
"rustls",
|
2025-05-15 22:47:29 +02:00
|
|
|
] }
|
2025-10-15 14:45:47 -06:00
|
|
|
sentry-actix = "0.45.0"
|
|
|
|
|
serde = "1.0.228"
|
|
|
|
|
serde_bytes = "0.11.19"
|
2025-05-15 22:47:29 +02:00
|
|
|
serde_cbor = "0.11.2"
|
|
|
|
|
serde_ini = "0.2.0"
|
2025-10-15 14:45:47 -06:00
|
|
|
serde_json = "1.0.145"
|
|
|
|
|
serde_with = "3.15.0"
|
2025-10-12 21:18:38 +01:00
|
|
|
serde-xml-rs = "0.8.1" # Also an XML (de)serializer, consider dropping yaserde in favor of this
|
2025-05-15 22:47:29 +02:00
|
|
|
sha1 = "0.10.6"
|
|
|
|
|
sha1_smol = { version = "1.0.1", features = ["std"] }
|
|
|
|
|
sha2 = "0.10.9"
|
2025-10-15 14:45:47 -06:00
|
|
|
spdx = "0.12.0"
|
2025-06-09 14:48:03 -05:00
|
|
|
sqlx = { version = "0.8.6", default-features = false }
|
2025-10-15 14:45:47 -06:00
|
|
|
sysinfo = { version = "0.37.2", default-features = false }
|
2025-05-15 22:47:29 +02:00
|
|
|
tar = "0.4.44"
|
2025-10-15 14:45:47 -06:00
|
|
|
tauri = "2.8.5"
|
|
|
|
|
tauri-build = "2.4.1"
|
|
|
|
|
tauri-plugin-deep-link = "2.4.3"
|
|
|
|
|
tauri-plugin-dialog = "2.4.0"
|
|
|
|
|
tauri-plugin-http = "2.5.2"
|
|
|
|
|
tauri-plugin-opener = "2.5.0"
|
|
|
|
|
tauri-plugin-os = "2.3.1"
|
|
|
|
|
tauri-plugin-single-instance = "2.3.4"
|
2025-06-27 04:54:51 -05:00
|
|
|
tauri-plugin-updater = { version = "2.9.0", default-features = false, features = [
|
2025-10-12 21:18:38 +01:00
|
|
|
"rustls-tls",
|
|
|
|
|
"zip",
|
2025-05-15 22:47:29 +02:00
|
|
|
] }
|
2025-08-08 15:50:44 -07:00
|
|
|
tauri-plugin-window-state = "2.4.0"
|
2025-10-15 14:45:47 -06:00
|
|
|
tempfile = "3.23.0"
|
2025-05-15 22:47:29 +02:00
|
|
|
theseus = { path = "packages/app-lib" }
|
2025-10-15 14:45:47 -06:00
|
|
|
thiserror = "2.0.17"
|
2025-05-15 22:47:29 +02:00
|
|
|
tikv-jemalloc-ctl = "0.6.0"
|
|
|
|
|
tikv-jemallocator = "0.6.0"
|
2025-08-08 15:50:44 -07:00
|
|
|
tokio = "1.47.1"
|
2025-05-15 22:47:29 +02:00
|
|
|
tokio-stream = "0.1.17"
|
2025-08-08 15:50:44 -07:00
|
|
|
tokio-util = "0.7.16"
|
2025-05-15 22:47:29 +02:00
|
|
|
totp-rs = "5.7.0"
|
|
|
|
|
tracing = "0.1.41"
|
2025-10-03 14:02:20 +01:00
|
|
|
tracing-actix-web = { version = "0.7.19", default-features = false }
|
2025-10-12 21:18:38 +01:00
|
|
|
tracing-ecs = "0.5.0"
|
2025-05-15 22:47:29 +02:00
|
|
|
tracing-error = "0.2.1"
|
2025-10-15 14:45:47 -06:00
|
|
|
tracing-subscriber = "0.3.20"
|
|
|
|
|
typed-path = "0.12.0"
|
|
|
|
|
url = "2.5.7"
|
2025-05-15 22:47:29 +02:00
|
|
|
urlencoding = "2.1.3"
|
2025-10-15 14:45:47 -06:00
|
|
|
uuid = "1.18.1"
|
2025-05-15 22:47:29 +02:00
|
|
|
validator = "0.20.0"
|
2025-10-15 14:45:47 -06:00
|
|
|
webp = { version = "0.3.1", default-features = false }
|
2025-10-12 21:18:38 +01:00
|
|
|
webview2-com = "0.38.0" # Should be updated in lockstep with wry
|
2025-10-15 14:45:47 -06:00
|
|
|
whoami = "1.6.1"
|
|
|
|
|
windows = "=0.61.3" # Locked on 0.61 until we can update windows-core to 0.62
|
|
|
|
|
windows-core = "=0.61.2" # Locked on 0.61 until webview2-com updates to 0.62
|
2025-05-15 22:47:29 +02:00
|
|
|
winreg = "0.55.0"
|
|
|
|
|
woothee = "0.13.0"
|
|
|
|
|
yaserde = "0.12.0"
|
2025-10-15 14:45:47 -06:00
|
|
|
zbus = "5.11.0"
|
|
|
|
|
zip = { version = "6.0.0", default-features = false, features = [
|
2025-10-12 21:18:38 +01:00
|
|
|
"bzip2",
|
|
|
|
|
"deflate",
|
|
|
|
|
"deflate64",
|
|
|
|
|
"zstd",
|
2025-05-15 22:47:29 +02:00
|
|
|
] }
|
|
|
|
|
zxcvbn = "3.1.0"
|
|
|
|
|
|
2025-06-14 01:16:48 +02:00
|
|
|
[workspace.lints.clippy]
|
2025-06-14 02:10:12 +02:00
|
|
|
bool_to_int_with_if = "warn"
|
|
|
|
|
borrow_as_ptr = "warn"
|
|
|
|
|
cfg_not_test = "warn"
|
|
|
|
|
clear_with_drain = "warn"
|
|
|
|
|
cloned_instead_of_copied = "warn"
|
|
|
|
|
collection_is_never_read = "warn"
|
|
|
|
|
dbg_macro = "warn"
|
|
|
|
|
default_trait_access = "warn"
|
|
|
|
|
explicit_iter_loop = "warn"
|
|
|
|
|
filter_map_next = "warn"
|
|
|
|
|
flat_map_option = "warn"
|
|
|
|
|
format_push_string = "warn"
|
|
|
|
|
get_unwrap = "warn"
|
|
|
|
|
large_include_file = "warn"
|
|
|
|
|
large_stack_arrays = "warn"
|
|
|
|
|
manual_assert = "warn"
|
|
|
|
|
manual_instant_elapsed = "warn"
|
|
|
|
|
manual_is_variant_and = "warn"
|
|
|
|
|
manual_let_else = "warn"
|
|
|
|
|
map_unwrap_or = "warn"
|
|
|
|
|
match_bool = "warn"
|
|
|
|
|
needless_collect = "warn"
|
|
|
|
|
negative_feature_names = "warn"
|
|
|
|
|
non_std_lazy_statics = "warn"
|
|
|
|
|
pathbuf_init_then_push = "warn"
|
|
|
|
|
read_zero_byte_vec = "warn"
|
|
|
|
|
redundant_clone = "warn"
|
|
|
|
|
redundant_feature_names = "warn"
|
|
|
|
|
redundant_type_annotations = "warn"
|
|
|
|
|
todo = "warn"
|
2025-10-15 14:45:47 -06:00
|
|
|
uninlined_format_args = "warn"
|
2025-06-14 02:10:12 +02:00
|
|
|
unnested_or_patterns = "warn"
|
|
|
|
|
wildcard_dependencies = "warn"
|
|
|
|
|
|
2025-10-12 21:18:38 +01:00
|
|
|
[profile.dev.package.sqlx-macros]
|
|
|
|
|
opt-level = 3
|
|
|
|
|
|
2024-07-03 13:25:49 -07:00
|
|
|
# Optimize for speed and reduce size on release builds
|
2024-07-03 11:05:58 -07:00
|
|
|
[profile.release]
|
2025-10-12 21:18:38 +01:00
|
|
|
opt-level = "s" # Optimize for binary size
|
|
|
|
|
strip = true # Remove debug symbols
|
|
|
|
|
lto = true # Enables link to optimizations
|
|
|
|
|
panic = "abort" # Strip expensive panic clean-up logic
|
|
|
|
|
codegen-units = 1 # Compile crates one after another so the compiler can optimize better
|
2024-07-24 11:03:19 -07:00
|
|
|
|
2025-09-01 15:59:09 +01:00
|
|
|
# Specific profile for labrinth production builds
|
|
|
|
|
[profile.release-labrinth]
|
|
|
|
|
inherits = "release"
|
2025-10-12 21:18:38 +01:00
|
|
|
panic = "unwind" # Don't exit the whole app on panic in production
|