Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
89 commits
Select commit Hold shift + click to select a range
fd28721
Begin external projects moderator database frontend
Prospector Mar 28, 2026
804f6ca
add copy link button
Prospector Mar 28, 2026
2d2598b
begin project page permissions settings
Prospector Apr 3, 2026
873a12b
MEL database backend routes
aecsocket Apr 6, 2026
81abcf6
include filename in external files
aecsocket Apr 19, 2026
e1f44b8
wip: when uploading a version file, fetch its overrides as a list
aecsocket Apr 22, 2026
bc9e586
wip: override license checks
aecsocket Apr 23, 2026
8d4076f
improve FileHost ref counting
aecsocket Apr 23, 2026
d846ef7
file host read capability
aecsocket Apr 23, 2026
15f67ea
scan files when inserting version file
aecsocket Apr 23, 2026
796049f
Merge branch 'main' into boris/dev-886-modpack-project
aecsocket May 1, 2026
e33b1dc
add dependency sha1 field
aecsocket May 1, 2026
220733f
clean up version files
aecsocket May 2, 2026
b93f6c6
wip: attributions
aecsocket May 2, 2026
f01d149
update s3 file host
aecsocket May 2, 2026
d983f11
attribution scanning basic works
aecsocket May 2, 2026
1b26f55
works
aecsocket May 2, 2026
e30cf26
insert attribution info after resolving
aecsocket May 3, 2026
d53d5c4
Merge branch 'main' into boris/dev-886-modpack-project
aecsocket May 3, 2026
bfd5924
add routes
aecsocket May 3, 2026
a0471da
Merge remote-tracking branch 'origin/main' into boris/dev-886-modpack…
Prospector May 5, 2026
91d74e7
Merge branch 'main' into boris/dev-886-modpack-project
aecsocket May 6, 2026
84888dc
remove dep sha1 stuff
aecsocket May 6, 2026
1fdaf8e
prepr
Prospector May 7, 2026
9819611
wip: override file sources
aecsocket May 7, 2026
2ee217b
add files_missing_attributions to versions
aecsocket May 7, 2026
b6b5271
return extended version info + attributed at/by
aecsocket May 7, 2026
867aadc
hook up frontend to backend (mostly)
Prospector May 9, 2026
0d488d1
Merge remote-tracking branch 'origin/main' into boris/dev-886-modpack…
Prospector May 9, 2026
c07b7af
expose version date published
aecsocket May 9, 2026
7315c35
withholding version visibility
aecsocket May 14, 2026
c75e17e
frontend work
Prospector May 15, 2026
3801039
prepr
Prospector May 15, 2026
030dc2b
Merge branch 'main' into boris/dev-886-modpack-project
Prospector May 15, 2026
1f28196
use api-client for img upload
Prospector May 15, 2026
00993a3
moar frontend
Prospector May 16, 2026
3eb76da
prepr
Prospector May 16, 2026
2d3b4ab
Add schema to attribution resolution and Flame project results
aecsocket May 16, 2026
8d82bf3
sqlx prepare
aecsocket May 16, 2026
61ff32a
Merge branch 'main' into boris/dev-886-modpack-project
aecsocket May 16, 2026
cf02d15
changes
aecsocket May 16, 2026
9ae1ddc
remove feature flag, fix optional proof images
Prospector May 16, 2026
e11cd51
fix schema
aecsocket May 16, 2026
e16884a
fmt
aecsocket May 17, 2026
876a4b6
Merge branch 'main' into boris/dev-886-modpack-project
aecsocket May 19, 2026
5d7a77c
Merge branch 'main' into boris/dev-886-modpack-project
aecsocket May 19, 2026
0bfa162
fix deletion and file fetch
aecsocket May 19, 2026
6de97cc
prepare
aecsocket May 19, 2026
50eaecf
Merge remote-tracking branch 'origin/main' into boris/dev-886-modpack…
Prospector May 20, 2026
9071f7d
fix admonition
Prospector May 20, 2026
61209ac
update frontend stuff to new schema
Prospector May 20, 2026
25c63b5
prepr
Prospector May 20, 2026
549e9d5
attribution on dependencies
aecsocket May 21, 2026
611e308
fixes
aecsocket May 21, 2026
578b8df
sqlx prepare
aecsocket May 21, 2026
2fecbe9
fixes
aecsocket May 21, 2026
84bcf36
routes
aecsocket May 21, 2026
cee57ff
fix routes
aecsocket May 21, 2026
690f5c1
Version grandfathering
aecsocket May 21, 2026
145c79f
prepare
aecsocket May 21, 2026
3cd1a06
wip: bulk routes
aecsocket May 23, 2026
e8114a3
Merge remote-tracking branch 'origin/main' into boris/dev-886-modpack…
Prospector May 24, 2026
8658dbf
Merge remote-tracking branch 'origin/main' into boris/dev-886-modpack…
Prospector May 24, 2026
c8b64df
pushing what i've got rn
Prospector May 25, 2026
af2224d
include link in NoPermission
aecsocket May 25, 2026
99c77d7
change hash insert to bulk route
aecsocket May 25, 2026
8bc26f2
query flame even if entry in MEL
aecsocket May 25, 2026
ecd7781
delete file with weird name
Prospector May 25, 2026
7a420f0
Prioritise putting override files in existing groups even with Extern…
aecsocket May 27, 2026
4653b0c
fix how hex bytes are handled in route
aecsocket May 27, 2026
edb82b5
Merge branch 'main' into boris/dev-886-modpack-project
aecsocket May 27, 2026
2175be5
feat: coolbot moderation changes (#6215)
Prospector May 28, 2026
dc1c3c8
QA
Prospector May 28, 2026
78b617c
Merge remote-tracking branch 'origin/main' into boris/dev-886-modpack…
Prospector May 29, 2026
04bdbd2
prepr
Prospector May 29, 2026
888d70f
Merge branch 'main' into boris/dev-886-modpack-project
aecsocket Jun 1, 2026
e2f2fd8
should group by project
aecsocket Jun 1, 2026
cccaf1e
return attribution resolution correctly
aecsocket Jun 2, 2026
ed4d759
updated by moderator info
aecsocket Jun 2, 2026
471b67f
Track what moderator reviewed an attribution moderation status
aecsocket Jun 2, 2026
9834e86
default deser FMA field
aecsocket Jun 7, 2026
f135f12
new version page
Prospector Jun 7, 2026
a6be110
clean up fetching + add a couple missing features
Prospector Jun 7, 2026
5050da8
qa items
Prospector Jun 8, 2026
7f972c4
Merge remote-tracking branch 'origin/main' into boris/dev-886-modpack…
Prospector Jun 8, 2026
4943d71
prepr
Prospector Jun 8, 2026
5fc8171
provide moderation package stuff with DI
Prospector Jun 8, 2026
7e54d9d
format?
Prospector Jun 8, 2026
722e35f
don't redact moderated_at
aecsocket Jun 8, 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
128 changes: 61 additions & 67 deletions Cargo.toml
Original file line number Diff line number Diff line change
@@ -1,18 +1,18 @@
[workspace]
resolver = "2"
members = [
"apps/app",
"apps/app-playground",
"apps/daedalus_client",
"apps/labrinth",
"packages/app-lib",
"packages/ariadne",
"packages/daedalus",
"packages/labrinth-derive",
"packages/modrinth-log",
"packages/modrinth-maxmind",
"packages/modrinth-util",
"packages/path-util",
"apps/app",
"apps/app-playground",
"apps/daedalus_client",
"apps/labrinth",
"packages/app-lib",
"packages/ariadne",
"packages/daedalus",
"packages/labrinth-derive",
"packages/modrinth-log",
"packages/modrinth-maxmind",
"packages/modrinth-util",
"packages/path-util",
]

[workspace.package]
Expand All @@ -36,18 +36,16 @@ async-compression = { version = "0.4.32", default-features = false }
async-minecraft-ping = { path = "packages/async-minecraft-ping" }
async-recursion = "1.1.1"
async-stripe = { version = "0.41.0", default-features = false, features = [
"runtime-tokio-hyper-rustls",
"runtime-tokio-hyper-rustls",
] }
async-trait = "0.1.89"
async-tungstenite = { version = "0.31.0", default-features = false, features = [
"futures-03-sink"
] }
async-tungstenite = { version = "0.31.0", default-features = false, features = ["futures-03-sink"] }
async-walkdir = "2.1.0"
async_zip = "0.0.18"
aws-sdk-s3 = { version = "=1.122.0", default-features = false, features = [
"default-https-client",
"rt-tokio",
"rustls",
"default-https-client",
"rt-tokio",
"rustls",
] }
base64 = "0.22.1"
bitflags = "2.9.4"
Expand All @@ -56,9 +54,7 @@ bytes = "1.10.1"
censor = "0.3.0"
chardetng = "0.1.17"
chrono = "0.4.42"
cidre = { version = "0.15.0", default-features = false, features = [
"macos_15_0"
] }
cidre = { version = "0.15.0", default-features = false, features = ["macos_15_0"] }
clap = "4.5.48"
clickhouse = "0.14.0"
color-eyre = "0.6.5"
Expand Down Expand Up @@ -93,10 +89,10 @@ hickory-resolver = "0.25.2"
hmac = "0.12.1"
hyper = "1.7.0"
hyper-rustls = { version = "0.27.7", default-features = false, features = [
"aws-lc-rs",
"http1",
"native-tokio",
"tls12",
"aws-lc-rs",
"http1",
"native-tokio",
"tls12",
] }
hyper-util = "0.1.17"
iana-time-zone = "0.1.64"
Expand All @@ -107,15 +103,15 @@ itertools = "0.14.0"
jemalloc_pprof = "0.8.1"
json-patch = { version = "4.1.0", default-features = false }
lettre = { version = "0.11.19", default-features = false, features = [
"aws-lc-rs",
"builder",
"hostname",
"pool",
"rustls",
"rustls-native-certs",
"smtp-transport",
"tokio1",
"tokio1-rustls",
"aws-lc-rs",
"builder",
"hostname",
"pool",
"rustls",
"rustls-native-certs",
"smtp-transport",
"tokio1",
"tokio1-rustls",
] }
maxminddb = "0.26.0"
meilisearch-sdk = { version = "0.30.0", default-features = false }
Expand All @@ -138,40 +134,37 @@ prometheus = "0.14.0"
quartz_nbt = "0.2.9"
quick-xml = "0.38.3"
quote = { version = "1.0" }
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
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
redis = "0.32.7"
regex = "1.12.2"
reqwest = { version = "0.12.24", default-features = false }
rgb = "0.8.52"
rust_decimal = { version = "1.39.0", features = [
"serde-with-float",
"serde-with-str"
] }
rust_decimal = { version = "1.39.0", features = ["serde-with-float", "serde-with-str"] }
rust_iso3166 = "0.1.14"
rust-s3 = { version = "0.37.0", default-features = false, features = [
"fail-on-err",
"tags",
"tokio-rustls-tls",
"fail-on-err",
"tags",
"tokio-rustls-tls",
] }
rustls = "0.23.32"
rusty-money = "0.4.1"
secrecy = "0.10.3"
sentry = { version = "0.45.0", default-features = false, features = [
"backtrace",
"contexts",
"debug-images",
"panic",
"reqwest",
"rustls",
"backtrace",
"contexts",
"debug-images",
"panic",
"reqwest",
"rustls",
] }
serde = "1.0.228"
serde_bytes = "0.11.19"
serde_cbor = "0.11.2"
serde_ini = "0.2.0"
serde_json = "1.0.145"
serde_with = "3.15.0"
serde-xml-rs = "0.8.1" # Also an XML (de)serializer, consider dropping yaserde in favor of this
serde-xml-rs = "0.8.1" # Also an XML (de)serializer, consider dropping yaserde in favor of this
sha1 = "0.10.6"
sha1_smol = { version = "1.0.1", features = ["std"] }
sha2 = "0.10.9"
Expand All @@ -193,8 +186,8 @@ tauri-plugin-opener = "2.5.0"
tauri-plugin-os = "2.3.1"
tauri-plugin-single-instance = "2.3.4"
tauri-plugin-updater = { version = "2.9.0", default-features = false, features = [
"rustls-tls",
"zip",
"rustls-tls",
"zip",
] }
tauri-plugin-window-state = "2.4.0"
tempfile = "3.23.0"
Expand All @@ -220,19 +213,19 @@ utoipa-scalar = { version = "0.3.0", default-features = false }
uuid = "1.18.1"
validator = "0.20.0"
webp = { version = "0.3.1", default-features = false }
webview2-com = "0.38.0" # Should be updated in lockstep with wry
webview2-com = "0.38.0" # Should be updated in lockstep with wry
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
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
winreg = "0.55.0"
woothee = "0.13.0"
yaserde = "0.12.0"
zbus = "5.11.0"
zip = { version = "6.0.0", default-features = false, features = [
"bzip2",
"deflate",
"deflate64",
"zstd",
"bzip2",
"deflate",
"deflate64",
"zstd",
] }
zxcvbn = "3.1.0"

Expand All @@ -241,6 +234,7 @@ bool_to_int_with_if = "warn"
borrow_as_ptr = "warn"
cfg_not_test = "warn"
clear_with_drain = "warn"
type_complexity = "allow"
cloned_instead_of_copied = "warn"
collection_is_never_read = "warn"
dbg_macro = "warn"
Expand Down Expand Up @@ -278,15 +272,15 @@ opt-level = 3

# Optimize for speed and reduce size on release builds
[profile.release]
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
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

# Specific profile for labrinth production builds
[profile.release-labrinth]
inherits = "release"
opt-level = 2
strip = false # Keep debug symbols for Sentry
lto = "thin" # Enable LTO but keep compile times reasonable
panic = "unwind" # Don't exit the whole app on panic in production
strip = false # Keep debug symbols for Sentry
lto = "thin" # Enable LTO but keep compile times reasonable
panic = "unwind" # Don't exit the whole app on panic in production
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@
</div>
<div class="input-group">
<ButtonStyled circular>
<button :class="!collapsed && '[&>svg]:rotate-180'" @click="$emit('toggleCollapsed')">
<button :class="{ '[&>svg]:rotate-180': !collapsed }" @click="$emit('toggleCollapsed')">
<DropdownIcon class="duration-250 transition-transform ease-in-out" />
</button>
</ButtonStyled>
Expand Down
2 changes: 1 addition & 1 deletion apps/frontend/src/components/ui/thread/ThreadView.vue
Original file line number Diff line number Diff line change
Expand Up @@ -59,7 +59,7 @@
</ButtonStyled>
<ButtonStyled v-if="visibleQuickReplies.length > 0">
<OverflowMenu :options="visibleQuickReplies">
Quick Reply
Quick reply
<ChevronDownIcon />
</OverflowMenu>
</ButtonStyled>
Expand Down
3 changes: 2 additions & 1 deletion apps/frontend/src/composables/featureFlags.ts
Original file line number Diff line number Diff line change
Expand Up @@ -48,14 +48,15 @@ export const DEFAULT_FEATURE_FLAGS = validateValues({
useV1ContentTabAPI: true,
labrinthApiCanary: false,
dismissedExternalProjectsInfo: false,
modpackPermissionsPage: false,
showAllBanners: false,
alwaysIgnoreErrorBanner: false,
showViewProdRouteBanner: false,
showModeratorProjectMemberUi: false,
showModeratorPrivateMessageHighlight: true,
archonApiStaging: false,
showHostingAccessInstanceAuditLog: false,
versionDevInfoCollapsed: true,
alwaysShowVersionDevInfo: false,
} as const)

export type FeatureFlag = keyof typeof DEFAULT_FEATURE_FLAGS
Expand Down
7 changes: 7 additions & 0 deletions apps/frontend/src/composables/queries/version.ts
Original file line number Diff line number Diff line change
Expand Up @@ -8,4 +8,11 @@ export const versionQueryOptions = {
queryFn: () => client.labrinth.versions_v3.getVersion(versionId),
staleTime: STALE_TIME,
}),

fromProject: (projectId: string, versionIdOrNumber: string, client: AbstractModrinthClient) => ({
queryKey: ['project', projectId, 'version', 'v3', versionIdOrNumber] as const,
queryFn: () =>
client.labrinth.versions_v3.getVersionFromIdOrNumber(projectId, versionIdOrNumber),
staleTime: STALE_TIME,
}),
}
6 changes: 0 additions & 6 deletions apps/frontend/src/locales/de-CH/index.json
Original file line number Diff line number Diff line change
Expand Up @@ -3113,9 +3113,6 @@
"project.moderation.thread.help-center-note.2": {
"message": "Falls du Hilfe brauchst oder du hast andere Anfragen, besuche bitte das <help-center-link>Modrinth Hilfe Center</help-center-link> und klicke auf die blaue Sprechblase um den Kundensupport zu kontaktieren."
},
"project.moderation.thread.moderator-see-user-ui-toggle": {
"message": "Zeige Benutzer UI"
},
"project.moderation.thread.private-description": {
"message": "Dies ist eine private Konversation mit den Modrinth Moderatoren. Sie könnten dich bezüglich Problemen im Zusammenhang mit diesem Projekt kontaktieren."
},
Expand Down Expand Up @@ -3242,9 +3239,6 @@
"project.versions.withheld-versions-warning.description": {
"message": "{count, plural, one {Diese Version ist} other {Diese Versionen sind}} derzeit zurückgehalten und nicht öffentlich gelistet. Bitte stelle einen Nachweis bereit, dass du die Erlaubnis hast, bestimmte Dateien weiterzuverbreiten, die in {count, plural, one {der Modpack-Version} other {den Modpack-Versionen}} enthalten sind."
},
"project.versions.withheld-versions-warning.resolve-button": {
"message": "Beheben"
},
"project.versions.withheld-versions-warning.title": {
"message": "{count, plural, one {Version {version_name}} other {Versionen}} zurückgehalten aufgrund von unbekannten eingebetteten Inhalten"
},
Expand Down
6 changes: 0 additions & 6 deletions apps/frontend/src/locales/de-DE/index.json
Original file line number Diff line number Diff line change
Expand Up @@ -3113,9 +3113,6 @@
"project.moderation.thread.help-center-note.2": {
"message": "Falls du Hilfe brauchst oder du hast andere Anfragen, besuche bitte das <help-center-link>Modrinth Hilfe Center</help-center-link> und klicke auf die blaue Sprechblase um den Kundensupport zu kontaktieren."
},
"project.moderation.thread.moderator-see-user-ui-toggle": {
"message": "Zeige Benutzer UI"
},
"project.moderation.thread.private-description": {
"message": "Dies ist eine private Konversation mit den Modrinth Moderatoren. Sie könnten dich bezüglich Problemen im Zusammenhang mit diesem Projekt kontaktieren."
},
Expand Down Expand Up @@ -3242,9 +3239,6 @@
"project.versions.withheld-versions-warning.description": {
"message": "{count, plural, one {Diese Version ist} other {Diese Versionen sind}} derzeit zurückgehalten und nicht öffentlich gelistet. Bitte stelle einen Nachweis bereit, dass du die Erlaubnis hast, bestimmte Dateien weiterzuverbreiten, die im Modpack in {count, plural, one {Version} other {Versionen}} enthalten sind."
},
"project.versions.withheld-versions-warning.resolve-button": {
"message": "Beheben"
},
"project.versions.withheld-versions-warning.title": {
"message": "{count, plural, one {Version {version_name} wurde} other {Versionen wurden}} aufgrund unbekannter eingebetteter Inhalte zurückgehalten"
},
Expand Down
Loading