Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
32 commits
Select commit Hold shift + click to select a range
ebf5f1f
wip: project validation backend
aecsocket Aug 29, 2026
e329852
wip: validate with subsecond
aecsocket Aug 29, 2026
6caf07d
wip: project validation pass
aecsocket Aug 29, 2026
3ba6d0d
validation CLI
aecsocket Aug 29, 2026
20235f2
add --token option
aecsocket Aug 29, 2026
79f7a07
bulk check json, adjust profanity
aecsocket Aug 30, 2026
71d95a3
use rustrict
aecsocket Aug 31, 2026
2037c34
don't allow submitting a project if it fails validation
aecsocket Sep 1, 2026
d5ded8d
Merge branch 'main' into boris/dev-1386-project-validation-backend
aecsocket Sep 2, 2026
9dd4395
update to latest frontend validators
aecsocket Sep 2, 2026
5f8f412
Merge branch 'main' into boris/dev-1386-project-validation-backend
aecsocket Sep 2, 2026
be2eff8
feat: remove links from text before spam check
tdgao Sep 3, 2026
68b9b40
feat: allow gallery description to have 2 fucks
tdgao Sep 3, 2026
942f8a9
feat: improve description spam detection to reduce false positives
tdgao Sep 3, 2026
0594618
feat: add find nag project ids to check project script
tdgao Sep 3, 2026
6b912a5
feat: add ngram density for spam detection
tdgao Sep 3, 2026
410ae64
feat: add affected link fields to external link validation
tdgao Sep 3, 2026
5829976
fail to patch project if fails validation while in review
aecsocket Sep 3, 2026
ee309f0
Merge branch 'main' into boris/dev-1386-project-validation-backend
aecsocket Sep 3, 2026
c25c7a7
add validation to more proj edit routes
aecsocket Sep 3, 2026
b5d7e97
feat: improve description and summary language detection
tdgao Sep 3, 2026
68ade7c
feat: reduce false positives on slurs and profanity
tdgao Sep 3, 2026
40e54b8
fix
aecsocket Sep 3, 2026
cb34b18
skip check when rejecting
aecsocket Sep 4, 2026
5db296a
fix ci
aecsocket Sep 4, 2026
f72420c
fix ci
aecsocket Sep 4, 2026
f7c9a5e
make sure test data has enough words in description
aecsocket Sep 4, 2026
e5b3e9a
fix
aecsocket Sep 4, 2026
1bd70a4
fix
aecsocket Sep 4, 2026
f544ea3
improve error
aecsocket Sep 4, 2026
c23ac75
fix
aecsocket Sep 4, 2026
4efc3b0
Merge of #7415
mergify[bot] Sep 4, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
308 changes: 287 additions & 21 deletions Cargo.lock

Large diffs are not rendered by default.

7 changes: 7 additions & 0 deletions Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -75,6 +75,7 @@ dashmap = "6.1.0"
data-url = "0.3.2"
deadpool-redis = { git = "https://github.com/modrinth/deadpool", rev = "c7209b086829572f368f1194aba54bdea8dc540b", version = "0.23.0" }
derive_more = "2.1.1"
dioxus-devtools = "0.7.10"
directories = "6.0.0"
dirs = "6.0.0"
discord-rich-presence = "1.0.0"
Expand Down Expand Up @@ -123,6 +124,7 @@ lettre = { version = "0.11.19", default-features = false, features = [
"tokio1",
"tokio1-rustls",
] }
linkify = "0.11.0"
lz4_flex = { version = "0.11.5", default-features = false, features = [
"checked-decode",
"safe-decode",
Expand Down Expand Up @@ -150,6 +152,7 @@ postcard = { version = "1.1.3", default-features = false, features = ["alloc"] }
postcard-bindgen = "0.8.0"
proc-macro2 = { version = "1.0" }
prometheus = "0.14.0"
psl = "2.1.226"
quartz_nbt = "0.2.9"
quick-xml = "0.38.3"
quote = { version = "1.0" }
Expand All @@ -168,6 +171,7 @@ rust-s3 = { version = "0.37.0", default-features = false, features = [
"tokio-rustls-tls",
] }
rustls = "0.23.32"
rustrict = { version = "0.7.39", default-features = false, features = ["censor"] }
rusty-money = "0.4.1"
scalar_api_reference = { version = "0.2.2", default-features = false }
secrecy = "0.10.3"
Expand Down Expand Up @@ -229,6 +233,8 @@ tracing-error = "0.2.1"
tracing-subscriber = "0.3.20"
ts-rs = "12.0.1"
typed-path = "0.12.0"
unicode-normalization = "0.1.24"
unicode-segmentation = "1.12.0"
url = "2.5.7"
urlencoding = "2.1.3"
utoipa = { version = "5.4.0", features = ["actix_extras", "chrono", "decimal"] }
Expand All @@ -238,6 +244,7 @@ webauthn-rs = "0.5.5"
webauthn-rs-proto = "0.5.5"
webp = { version = "0.3.1", default-features = false }
webview2-com = "0.38.0" # Should be updated in lockstep with wry
whatlang = "0.18.0"
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
Expand Down
8 changes: 8 additions & 0 deletions apps/labrinth/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ name = "labrinth"
version = "2.7.0"
edition.workspace = true
license = "AGPL-3.0-only"
default-run = "labrinth"

# This seems redundant, but it's necessary for Docker to work
[[bin]]
Expand Down Expand Up @@ -40,6 +41,7 @@ component-derive = { workspace = true }
const_format = { workspace = true }
dashmap = { workspace = true }
derive_more = { workspace = true, features = ["deref", "deref_mut"] }
dioxus-devtools = { workspace = true }
dotenvy = { workspace = true }
either = { workspace = true }
eyre = { workspace = true }
Expand Down Expand Up @@ -70,6 +72,7 @@ image = { workspace = true, features = [
itertools = { workspace = true }
json-patch = { workspace = true }
lettre = { workspace = true }
linkify = { workspace = true }
modrinth-content-management = { workspace = true }
modrinth-util = { workspace = true, features = ["decimal", "sentry", "utoipa"] }
muralpay = { workspace = true, features = ["client", "mock", "utoipa"] }
Expand All @@ -79,6 +82,7 @@ paste = { workspace = true }
path-util = { workspace = true }
postcard = { workspace = true }
prometheus = { workspace = true }
psl = { workspace = true }
quick-xml = { workspace = true }
rand = { workspace = true }
rand_chacha = { workspace = true }
Expand All @@ -89,6 +93,7 @@ reqwest = { workspace = true, features = ["http2", "json", "multipart", "rustls-
rust_decimal = { workspace = true, features = ["serde-with-float", "serde-with-str"] }
rust_iso3166 = { workspace = true }
rustls.workspace = true
rustrict = { workspace = true }
rusty-money = { workspace = true }
scalar_api_reference = { workspace = true, features = ["actix-web"] }
sentry = { workspace = true }
Expand Down Expand Up @@ -118,6 +123,8 @@ tokio-stream = { workspace = true }
totp-rs = { workspace = true, features = ["gen_secret"] }
tracing = { workspace = true }
tracing-actix-web = { workspace = true }
unicode-normalization = { workspace = true }
unicode-segmentation = { workspace = true }
url = { workspace = true }
urlencoding = { workspace = true }
utoipa = { workspace = true, features = ["url"] }
Expand All @@ -126,6 +133,7 @@ validator = { workspace = true, features = ["derive"] }
webauthn-rs = { workspace = true, features = ["conditional-ui", "danger-allow-state-serialisation"] }
webauthn-rs-proto = { workspace = true }
webp = { workspace = true }
whatlang = { workspace = true }
woothee = { workspace = true }
xredis = { workspace = true }
yaserde = { workspace = true, features = ["derive"] }
Expand Down
Loading
Loading