aecsocket
ac00e2bd5d
allow returning strings from CEL as shorthand
2026-08-13 18:12:46 +00:00
aecsocket
43818e4f90
add dummy fixture
2026-08-13 18:03:56 +00:00
aecsocket
7ef2492d03
prepare
2026-08-13 17:50:07 +00:00
aecsocket
37d371e46c
Merge branch 'main' into boris/dev-1205-trace-rules
2026-08-13 17:14:18 +00:00
755825b09a
project disclosures frontend ( #6955 )
...
* begin project disclosures
* new project settings header
* begin disclosure settings, edit content rules
* togglecards
* update phrasing of the rules, prepr
* more disclosure settings structuring
* add functionality toggle
* implement functionality with staging api
* improve project settings head titles
* feat(labrinth): project disclosures model
* feat(labrinth): project disclosures database model
* feat(labrinth): project disclosures get endpoint
* feat(labrinth): censor user ids if set by moderator
* feat(labrinth): wrap disclosures in struct
* feat(labrinth): edit project disclosures endpoint
* style(labrinth): cargo fmt
* style(labrinth): fix typo
* feat(labrinth): add fields for ai content disclosure
* fix(labrinth): field typo
* chore(labrinth): update query cache
* feat(labrinth): index disclosures in search
* refactor(labrinth): use enum instead of bools
* feat(labrinth): trigger incremental index on disclosure change
* feat(labrinth): change archived status to disclosure
* feat(labrinth): use disclosure for archival status
* fix(labrinth): error type for deserialization
* fix(labrinth): migration timestamp
* fix(labrinth): add disclosures to elasticsearch schema
* disclosures in search
* update photosensitivity warning copy
* update archiving, move general project settings to v3 (start redesign there), use project id lookups for stable cache keys, advanced in server search
* blue archive banner
* display AI use types
* improve labels
* add modrinth to link
* add placeholder missing disclosure report type
* add AI metadata checking to block image uploads with notice
* update copy
* update section 4 of rules
* Update rule 6 layout
* fix(labrinth): don't remove archival disclosure when changing status via v3 api
* feat(labrinth): derive str for ai usages and telemtry consent
* feat(labrinth): include ai usages and telemetry consent in disclosure types
* Update moderation checklist (#7056 )
* fix: missing delphi severity (#7054 )
* Utils nav, new disclosures stage, ai button in rules
* add prefix to collect
* Finish up new disclosures stage
* update r4 messages
* new r4 msg, update showcase clarity message
* fix: version upload failing to detect mrpack loader (#7063 )
* fix: mrpack exporting with zip64 (#7064 )
* fix: action bar max width (#7048 )
* fix: action bar max width
* fix: width
* changelog
* Rule placeholders with subsections & anchors, update messages.
* update new messages to account for new rule and placeholder layout
* Add nag for content disclosures
---------
Co-authored-by: ThatGravyBoat <gravy@thatgravyboat.tech >
Co-authored-by: chyzman <chyzalt@gmail.com >
Co-authored-by: Truman Gao <106889354+tdgao@users.noreply.github.com >
Co-authored-by: Prospector <6166773+Prospector@users.noreply.github.com >
* prepr
* refactor(labrinth): move disclosure parsing to document creation
* fix(labrinth): prevent removing moderator added archival disclosures
* fix(labrinth): dedupe ai usages
* fix(labrinth): auth logic on archived disclosure removal
* feat(labrinth): add interactions field
* style(labrinth): cargo fmt
* feat(labrinth): granular disclosure locking
* add 5.8, move 5.9, update messages and placeholders accordingly.
* move disclosures stage earlier
* include consent model info in telemetry disclosure msgs
* prepr + update date
* typo
* qa pass
* search suboptions
* add empty state
* checkboxes in column
* persistent advanced filters
* blog draft
* prepr
* support soft deletion
* reload instead of optimistically updating
* update blog
* TOS update + minor verbiage adjustment
* 45 day grace
---------
Co-authored-by: sychic <47618543+Sychic@users.noreply.github.com >
Co-authored-by: coolbot <76798835+coolbot100s@users.noreply.github.com >
Co-authored-by: ThatGravyBoat <gravy@thatgravyboat.tech >
Co-authored-by: chyzman <chyzalt@gmail.com >
Co-authored-by: Truman Gao <106889354+tdgao@users.noreply.github.com >
2026-08-13 09:01:18 -07:00
Sychic
e087e571f3
fix(labrinth): disclosure modification attribution ( #7121 )
2026-08-13 14:51:22 +00:00
Sychic
9ecbe8eaa6
feat(labrinth): granular disclosure locking ( #7108 )
...
* feat(labrinth): granular disclosure locking
* chore(labrinth): update query cache
2026-08-12 17:26:15 -07:00
Sychic
549b333eb2
feat(labrinth): project disclosures ( #6945 )
...
* feat(labrinth): project disclosures model
* feat(labrinth): project disclosures database model
* feat(labrinth): project disclosures get endpoint
* feat(labrinth): censor user ids if set by moderator
* feat(labrinth): wrap disclosures in struct
* feat(labrinth): edit project disclosures endpoint
* style(labrinth): cargo fmt
* style(labrinth): fix typo
* feat(labrinth): add fields for ai content disclosure
* fix(labrinth): field typo
* chore(labrinth): update query cache
* feat(labrinth): index disclosures in search
* refactor(labrinth): use enum instead of bools
* feat(labrinth): trigger incremental index on disclosure change
* feat(labrinth): change archived status to disclosure
* feat(labrinth): use disclosure for archival status
* fix(labrinth): error type for deserialization
* fix(labrinth): migration timestamp
* fix(labrinth): add disclosures to elasticsearch schema
* fix(labrinth): don't remove archival disclosure when changing status via v3 api
* feat(labrinth): derive str for ai usages and telemtry consent
* feat(labrinth): include ai usages and telemetry consent in disclosure types
* refactor(labrinth): move disclosure parsing to document creation
* fix(labrinth): prevent removing moderator added archival disclosures
* fix(labrinth): dedupe ai usages
* fix(labrinth): auth logic on archived disclosure removal
* feat(labrinth): add interactions field
* style(labrinth): cargo fmt
* feat(labrinth): soft delete disclosures
* feat(labrinth): return soft-deleted disclosures
* fix(labrinth): update disclosure on removal
---------
Co-authored-by: Prospector <6166773+Prospector@users.noreply.github.com >
2026-08-12 17:26:14 -07:00
Prospector
2fd4495104
rejected projects go to ghost on delete ( #7107 )
...
* draft: rejected projects go to ghost on delete
* don't free slug
* fix sqlx
* free slugs but different
* add auto reject for processing items given to ghost, as well as send thread messages with a little info on who it came from
2026-08-12 23:54:57 +00:00
François-Xavier Talbot
552bc3f739
fix(labrinth): webhook scopes ( #7114 )
...
fix(labrinth): scope paypal & tremendous webhooks in payout scope
2026-08-12 18:34:33 +02:00
aecsocket
c34bd26f87
fix: search indexing and schema changes ( #7090 )
...
* fix: incremental indexing uses latest db data
* dependent search fields
2026-08-12 11:54:35 -04:00
aecsocket
26e1d645b8
live/outdated label on rules
2026-08-12 09:29:23 +00:00
aecsocket
04d00c0ba0
improve errors for CEL input
2026-08-12 08:12:44 +00:00
aecsocket
7f59feeb98
Merge branch 'main' of github.com:modrinth/code into boris/dev-1205-trace-rules
...
# Conflicts:
# apps/frontend/src/components/ui/moderation/GlobalDetailLocalTraceCard.vue
# apps/frontend/src/pages/moderation.vue
# apps/labrinth/.sqlx/query-06384971752b20c04d7a747777bf03a765ab60c2b029a47fcd3fe97c02ee5b2a.json
# apps/labrinth/.sqlx/query-1551b022217df05490a01e715b3584d26550d01a1917d1af64fe236d63dd5005.json
# apps/labrinth/.sqlx/query-33d4e31565ece4a99832cbfd0a39bc49666e9fc8a400a5c41660504205e7cac5.json
# apps/labrinth/.sqlx/query-4680c4a59c6679f90e3b9e1a33ed1cb1fb60b93ffb79ba5b99e01ee0c14c991a.json
# apps/labrinth/.sqlx/query-5a68c53bd00c08edf9dfb9ffdabc28f86cdd77cd06bbb10c9a8e5199509f9c4b.json
# apps/labrinth/.sqlx/query-87d30e8802ebe69858141d0d918cafb5286f984cfe55ad1a7ac2219ec50539a4.json
# apps/labrinth/.sqlx/query-aedd5d9fe052a9fa70e585f389c3b4915a88cb9c3ec54493a2a29582c80b5c76.json
# apps/labrinth/.sqlx/query-befd8c75e7ed4621f5e99d88719c0fde9d617b6603b99b75cc18d1a02387bac4.json
# apps/labrinth/.sqlx/query-c268a2a256f11a65449bd132a14f931c2e9776ffed87f4406bb5c2bc30087f5b.json
# apps/labrinth/.sqlx/query-c40c2085202bc4486568fb24db9201239cefbe174f4a5cc4b8eb21a10268cd73.json
# apps/labrinth/.sqlx/query-d37041da5452ecb82da506a83154cd66b78ebb9a1dbf0bb46e5bd6bb2b3a9bb9.json
# apps/labrinth/.sqlx/query-d3d320af2786bf7908e65f5b7a35ade08110fb341d694ca0f25eecca2f5ad5bf.json
# apps/labrinth/src/routes/internal/delphi/tech_review_sync.rs
# apps/labrinth/src/routes/internal/moderation/tech_review/global.rs
2026-08-11 06:35:49 +00:00
aecsocket
f8f05ce91b
fix: expose raw icon URL in project response ( #7086 )
...
* fix: expose raw icon URL in project response
* remove unnecessary test
2026-08-10 15:48:23 +00:00
aecsocket
07bac8ffde
fix: v3 environment fields in all v2 endpoints ( #7082 )
2026-08-10 15:42:56 +00:00
Calum H.
e8aee15664
chore: cleanup standards ( #6970 )
...
* chore: cleanup standards & skills
* remove: figma mcp doc, not needed anymore
2026-08-10 15:15:44 +00:00
ThatGravyBoat
b78dd9bf1b
fix: missing delphi severity ( #7054 )
2026-08-07 18:16:13 -07:00
aecsocket
3fa6905006
refactor: labrinth ApiError and error reporting ( #6981 )
...
* refactor: labrinth `ApiError` and error reporting
* fix clippy
* fix ci
2026-08-07 15:47:54 +00:00
aecsocket
c57e88ecd4
fix: improve analytics dependents query ( #7025 )
...
* fix: improve analytics dependents query
* fix up compose
2026-08-07 10:33:15 -04:00
Calum H.
bca8b1a02b
fix: moderation queue endpoint regression ( #7003 )
...
fix: regression caused by 2308ac1 changes
2026-08-05 10:47:06 +00:00
aecsocket
5148e8ec35
feat: use postcard for redis serde ( #6956 )
...
* redo error handling in xredis
* give proper types to metadata fields
* add round-trip tests
* inline loader enum metadata fields
* postcard roundtrips
* prepare
* bump redis key version
* serde-binhum
* clippy
* fix
* fix frontend checking existence of component fields rather than non-null-ness
* prepare
2026-08-05 10:36:05 +00:00
aecsocket
6715a9c679
fix: global traces QA notes ( #6977 )
...
* updated at cols + search by path
* speed up scanning
* migration does not auto-set updated_at
* merge migrations
2026-08-03 18:15:13 +00:00
aecsocket
c3249ee51d
feat: ElasticSearch backend ( #6903 )
...
* (do not merge) search test branch
* perf
* fix up search pagination
* more parity and perf work
* expand what parity does
* fix author query
* approach parity even without explicit parity enabled
* remove old parity code
* fix shear
* fix
* fmt
2026-08-03 17:14:07 +00:00
aecsocket
4c8abfb78d
adjust schema
2026-08-02 17:05:41 +01:00
aecsocket
5ead1499cd
flatten input context
2026-08-02 15:13:13 +01:00
aecsocket
ddb45f6aac
move hidden to severity
2026-08-02 15:08:27 +01:00
Michael H.
18b0b2848d
feat: labrinth argo
2026-07-31 13:10:58 +02:00
Michael H.
c5ce5bc9b3
fix: create clickhouse db in tests only
2026-07-30 20:08:49 +02:00
Michael H.
572b8027ff
fix: clickhouse migrations should not run normally
2026-07-30 19:23:10 +02:00
aecsocket
0a53211389
fix: analytics event endpoint ( #6938 )
...
* fix: analytics event endpoint
* split admin-only routes into internal
* fix pr comment
2026-07-30 04:40:52 +00:00
aecsocket
cc77fd1b87
Merge branch 'main' into boris/dev-1205-trace-rules
2026-07-30 05:15:25 +01:00
Michael H.
06262e7bb1
feat: clickhouse partitioning and header TTL
2026-07-29 22:10:20 +02:00
Calum H.
82348fe40a
qa: shared instances post release ( #6893 )
...
* fix: 20 user cap
* qa: invite modal dropdown + other + clamp limits
* fix: hide filters if just one type
* feat: update req banner
* feat: invite management frontend
* fix: moderation issues with shared instances
* feat: instance icon improvements
* fix: better offline handling
* fix: lint
* feat: show avatar in install to play modal
* feat: smaller qa points
* fix: fmt
* fix: fmt
* fix: yeet svg
* fix: 50 user limit
2026-07-28 14:10:12 +00:00
Sychic
ebc7cac8b0
feat(labrinth): user blocking ( #6837 )
...
* feat(labrinth): user blocking
still wip, nothing is hooked up
* style(labrinth): cargo fmt
* refactor(labrinth): move block/unblock routes to public api
* feat(labrinth): block friend requests if blocked
* feat(labrinth): remove friend/request on block
* feat(labrinth): get blocked users endpoint
2026-07-27 19:41:57 +00:00
François-Xavier Talbot
224c28f29d
feat: more details linked account info for support/moderation ( #6897 )
...
* feat: show discord + steam ID + github profile in "Show details" user modal
* pnpm intl:extract
2026-07-27 19:20:38 +00:00
aecsocket
e192f6a0af
feat: define default search vars in env ( #6902 )
...
* feat: define default search vars in env
* fix
2026-07-27 19:17:14 +00:00
François-Xavier Talbot
20adb0f16a
fix(labrinth): let through emails when neverbounce hangs or fails ( #6898 )
...
* fix(labrinth): let through emails when neverbounce hangs or fails
* chore(ci): stack size
2026-07-27 18:10:54 +00:00
aecsocket
b92fc10e54
cleanup
2026-07-27 17:47:17 +01:00
aecsocket
849943ed4e
clean up db stuff
2026-07-27 10:41:26 +01:00
aecsocket
7c7efd5efe
Merge branch 'main' into boris/dev-1205-trace-rules
2026-07-27 10:05:50 +01:00
aecsocket
158de019a6
fix: search indexing performance and batching ( #6521 )
...
* Add consume batching delay
* maybe fix
* max batch size
* more logging
* parallelize remove tasks
* delete/upsert project/version messages
* prepare
* more logging
* log number of docs
* try more targeted, homogenous version change ops
* ensure only necessary fields are serialized into typesense
* disable index background task
* wip: script changes
* don't facet by project id
* fix
* fix clippy
* batch by document and dedup loaders
* fix test
* wip: projects/versions collections
* clean up SearchBackend interface
* cleanup pass
* cleanup pass 2
* standardise fn names
* cleanup pass
* fix compile
* factor out filter rewriting
* query perf
* put categories into the project doc
* wip: search filter AST
* doc comment
* more AST normalization
* (temp) convert search request errors into internal errors
* implement unary NOT
* tombi fmt
* fix tests
* revert request error
* try increase stack size
2026-07-26 14:55:00 +00:00
aecsocket
4c5e1074fd
fix
2026-07-26 15:36:41 +01:00
aecsocket
36d3aab0de
fmt
2026-07-26 15:26:02 +01:00
aecsocket
88c0915066
Merge branch 'main' into boris/dev-1205-trace-rules
2026-07-26 15:20:26 +01:00
aecsocket
f0dff8ebd5
clean up __dummy stuff
2026-07-26 15:17:50 +01:00
François-Xavier Talbot
944f99a14e
chore(labrinth): add extra logging on muralpay failed txn ( #6870 )
2026-07-24 23:53:37 +02:00
aecsocket
a6d9bb7b3e
feat: allow bulk deleting attribution groups for moderators ( #6839 )
...
* feat: allow bulk deleting attribution groups for moderators
* prepr
2026-07-24 13:42:36 +00:00
Calum H. and sychic
e58af98f21
feat: instance sharing thru shared-instances service ( #6569 )
...
* feat: implement instance share page + search_users backend call
* feat: invite players modal
* feat: use tanstack queries for friends sync across app pages
* feat: base shared instances implementation
* fix: admon style
* feat: impl instance admonitions like server panel
* fix: impl get + del usage
* feat: support modpack links
* feat: invite notif accepting
* fix: lint + fmt
* feat: impl install to play
* feat: impl usage of UpdateToPlayModal
* feat: warnings on deleting/disabling shared-instance version content
* fix: send instance name
* feat: align with backend
* feat: shared instances qa
* feat: wrong account protection
* feat: qa
* fix: smartly apply updates
* fix: install bug
* fix: 401/404 differentiation
* fix: fmt+prepr
* feat: qa
* feat: qa
* fix: signing out messes up revoke/deleted checks
* feat: qa
* fix: fmt + lint
* feat: lock content if part of shared instance
* fix: lint
* [do not merge] feat: rough invite links impl temp (#6666 )
* fix: wrong cmd
* feat: invite page
* fix: server-manager DTO mismatch
* fix: drop anonymous invite link acceptance
* refactor: structured shared-instance unavailable errors
* refactor: centralise error presentations
* refactor: dedupe shared instance diff detection
* fix: logging in reqwests
* refactor: move app.vue shared instances into handler
* refactor: break up Share.vue
* refactor: split up shared instances state outside of instance index
* refactor: dedicated shared instances install/update modals + split up page
* refactor: centralized managed content
* refactor: split up install shared to own runner + shared.rs split up
* refactor: dedupe sql for instance metadata enrichmnt
* refactor: friends composable + dedupe friends logic across usages
* chore: reduced unused code
* fix: align with backend
* fix: lint
* fix: file sha changes
* fix: invite links not working due to icon signed
* feat: qa
* feat: reporting frontend dummy
* fix: try use header
* remove: file hash field
* fix: pin box
* feat: malware warning for shared instances
* fix: cache rule
* feat: config files syncing
* feat: disable config sharing
* fix: header
* fix: use mark ready
* fix: dont cause push update for configs
* fix: lint
* feat: sharing page in settings
* feat: move config + change flow
* fix: qa
* fix: lint prepr
* feat: proxy file upload thru shared instances backend
* fix: use collapisible
* fix: push config
* fix: config
* feat: swap out sign in modal for new one
* fix: report flow
* fix: exclude configs.zip from external warnings
* fix: nuxi init
* fix: config bundle downloading
* fix: error notif
* fix: polling
* fix: qa
* fix: lint + prepr
* feat: shared instances moderation frontend + hook up report flow
* fix: report copy
* fix: lint
* fix: lint
* fix: modrinth ids being undefined
* feat: instance quarantining
* fix: prepr + fmt
* fix: quarantined -> locked terminology
* fix: missing endpoint impls + fmt
* fix: missing api in build.rs
* fix: share tab jittery
* fix: fmt
*PT bug
* fix: invites count as users even if pending
* fix: prepr
* fix: invite page owner in users list
* fix: lint
* fix: qa
* fix: lint
* fix: members stale not clearing
* fix: invite use joined_at field
* fix: lint
* fix: qa
---------
Co-authored-by: sychic <47618543+Sychic@users.noreply.github.com >
2026-07-24 13:06:38 +00:00
aecsocket
8d82c228cf
rules affect tech review detail statuses
2026-07-24 13:49:20 +01:00