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
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
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
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
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
Michael H.
508b96c27f
chore: skip neverbounce for oauth
2026-07-24 02:15:16 +02:00
Sychic
95f97a44ec
feat(labrinth): shared instances moderation ( #6784 )
...
* feat(labrinth): shared instance report type
* style(labrinth): cargo fmt
* feat(labrinth): check that instance exists when reporting
* style(labrinth): cleanup unused import
* feat(labrinth): store version id for shared instance reports
* style(labrinth): satisfy clippy
* fix(labrinth): use string id instead of int
2026-07-23 20:20:25 +00:00
François-Xavier Talbot
b4d681e713
feat(labrinth): Redis Cluster ( #6771 )
...
* chore(labrinth): bump to redis 1.4.1
* feat(labrinth): redis cluster
* chore: cleanup
* feat(labrinth): cache locking
* fix(labrinth): clippy
* chore(labrinth): cleanup env, remove postcard support
* chore(ci): fix test env for labrinth
* chore(labrinth): bump all key versions
* chore(labrinth): improve redis key identities handling
* chore(labrinth): simplify deadline handling
* chore(labrinth): remove unused lease tracking
* chore(labrinth): remove distributed cache locking for now
* chore(labrinth): improve redis backend init error
* feat(labrinth): expose redis read replica strategy
* chore(ci): remove other connection mode tests
* chore: split xredis crate
* feat(xredis): primaries routing
* chore: tombi fmt
* chore: clippy
* chore: update query cache
2026-07-23 11:35:02 +02:00
François-Xavier Talbot
96e2d95d02
feat(labrinth): route to update subscriptions for archon ( #6811 )
...
* feat(labrinth): add /_internal/billing/subscriptions/manager/update_many
* chore: fixes
* chore: clippy
* chore: fixes
2026-07-22 16:18:08 +00:00
aecsocket
07fd4fae5f
fix: make Redis key TTL variable ( #6821 )
2026-07-22 14:43:39 +00:00
aecsocket
ee2ad5f05b
feat: block disposable email addresses ( #6783 )
...
* feat: block disposable email addresses
* fix typos
* remove test
2026-07-20 17:57:36 +00:00
Michael H.
e52ae416a8
feat: email blacklist ( #6779 )
...
* feat: email blacklist
* feat: wildcard support
2026-07-20 14:02:55 +02:00
François-Xavier Talbot
6319832465
feat: email bounce check ( #6774 )
...
* feat: neverbounce API client
* feat(labrinth): integrate neverbounce
* chore: tombi
* chore: typo
* chore: clippy
* chore: remove unused dep
* chore: cleanup
2026-07-20 10:58:46 +02:00
François-Xavier Talbot
7144f08f0f
feat: require verified email to publish, to prevent spam ( #6777 )
...
* feat: require verified email to create projects, collections and organizations
* fix(labrinth): fix tests
* chore: fmt
* chore: intl
2026-07-20 02:51:16 +00:00
François-Xavier Talbot
c579925f03
feat: honeypot signup field ( #6776 )
...
feat: account consent
2026-07-19 21:54:23 +00:00
François-Xavier Talbot
6b569e4ee4
redis compression ( #6769 )
...
* feat(labrinth): encode/decode redis values with postcard, add version in namespaces
* chore(labrinth): split cache ex special cases without version
* chore(labrinth): simplify get_many
* fix: tombi
* feat(labrinth): compression support
* chore(labrinth): cleanup redis ser/de
* fix(labrinth): use get_deserialized in tests
2026-07-19 01:25:00 +02:00
François-Xavier Talbot
6b62e3b480
fix(labrinth): register debug routes ( #6766 )
2026-07-19 01:24:52 +02:00
Sychic
543cb42210
remove(labrinth): old shared instances impl ( #6760 )
2026-07-17 19:27:38 +00:00
aecsocket and Prospector
86c6fb8239
fix: global trace and tech review improvements ( #6699 )
...
* remaining globally safe/unsafe buttons
* tweak global traces layout
* deterministic local trace ordering
* fix preview
* ignore severity for ordering
* show globally resolved traces toggle
* minor frontend changes
* prepr
---------
Co-authored-by: Prospector <6166773+Prospector@users.noreply.github.com >
2026-07-17 15:08:59 +00:00
aecsocket
dad5970e8d
fix: attribution list route permissions ( #6731 )
...
* fix: attribution list route permissions
* proper auth
2026-07-15 14:38:08 +00:00
aecsocket
818a9db9f7
fix: add more logging to index-billing task ( #6708 )
...
* more logging to index billing
* schema update
2026-07-14 07:52:50 +00:00
Robin
31ef22767e
feat: add norisk client source support ( #6707 )
...
Signed-off-by: Robin <me@orb1n.dev >
2026-07-13 15:25:51 -07:00
François-Xavier Talbot
9e1e8788e2
feat(labrinth): return tax amount in user subscription listing ( #6496 )
...
* feat(labrinth): include next charge's tax amount
* chore(api-client): add next_charge_tax_amount
* fix
2026-07-13 17:06:22 +00:00
penguinencounter and aecsocket
7c4df7442b
fix(labrinth): fix filtering not working unless breakdown set to same field ( #6608 )
...
* fix(labrinth): return columns used in filters
fixes modrinth/code#6607
* chore(labrinth): sqlx query data update
* don't implicitly breakdown when filtering by a metric
* fix docs
---------
Co-authored-by: aecsocket <43144841+aecsocket@users.noreply.github.com >
2026-07-12 11:31:56 +02:00
aecsocket
e1556a8ee3
fix: attribution scanning details ( #6651 )
...
* key override file sources on file path, allow deleting groups
* dont scan modrinth files
* delete attr group button
* return what override files already exist on platform
* intl:extract
* uppercase queries
* fix dupe migration key
2026-07-12 09:04:54 +00:00
aecsocket
e877167db7
feat: global trace database frontend + improvements to tech review status sync ( #6671 )
...
* wip
* ui edits
* better logic for syncing tech review state in a single centralized place
* never automatically finish a tech review report
* fix css
* fix clippy
* prepr
2026-07-09 16:09:02 +00:00
Sychic
5f8837604d
feat(labrinth): shared instance icon ( #6665 )
2026-07-08 22:45:15 +00:00
Prospector
795dad040f
feat: add complementary installer source support ( #6667 )
2026-07-08 15:44:59 -07:00
aecsocket
c84b658e41
feat: tech review global trace database ( #6648 )
...
* global detail verdicts system
* global traces frontend
* split global routes into own mod
* tweak migration to only do no-key check at app level
* prepr
2026-07-08 16:06:45 +00:00
Prospector
efdfb51149
fix: add DEI (downloads, equality, and inequality) ( #6664 )
...
fix: add DEI
2026-07-08 15:04:21 +00:00
François-Xavier Talbot
407641ee7c
fix(labrinth): serde(default) new search document fields ( #6656 )
2026-07-07 15:28:54 -07:00
Prospector
96ab120cd0
feat: add all_project_types to search results ( #6654 )
...
* feat: add all_project_types to search results
* update docs
2026-07-07 21:30:42 +00:00
François-Xavier Talbot
3ed75a146a
fix(labrinth): fix routing config for /v3/content ( #6649 )
2026-07-07 16:48:14 +00:00
Prospector
df8ebbd3e0
feat: add /build route ( #6644 )
2026-07-07 15:43:26 +00:00
François-Xavier Talbot
517c3d2d72
fix(labrinth): fix prefix stripping in mrpack scanning ( #6646 )
2026-07-07 01:31:07 +00:00
Calum H. and aecsocket
8d20fd82db
fix: moderation/projects endpoint slow ( #6639 )
...
* fix: moderation/projects endpoint slow
* fix: re-add tech rev toggle off by default
* fix: i18n
* prepare
---------
Co-authored-by: aecsocket <43144841+aecsocket@users.noreply.github.com >
2026-07-06 19:16:52 +00:00
aecsocket
c831e38e32
fix: file scans only consider published files as on-platform ( #6638 )
2026-07-06 18:13:21 +00:00
Sychic
fc7be043c7
fix(labrinth): add invited_by field ( #6625 )
2026-07-06 16:33:00 +00:00
François-Xavier Talbot and aecsocket
4a6fa9fc3d
feat: better api docs ( #6586 )
...
* feat: docs
* fix tombi
* chore: fix some of the routes rendering with missing /
* response schemas
* fix: restore labrinth docs routes
* Fix path parameter docs in routes
* remove utoipa-actix-web
* consistency
* improve version intros
* improve formatting, examples
* better hash examples, move openapi stuff to openapi.rs
* more utoipa param fixes
* request body docs
* chore: remove moderation route from v2, remove ingest & webhooks from v3 spec
* fixes
* chore: tweak sources titles
* fix
* fix test
* improve examples
* increase compiler spawned thread stack size
* remove unused tests & script
* test
* bro what
* fix
---------
Co-authored-by: aecsocket <43144841+aecsocket@users.noreply.github.com >
2026-07-04 14:19:21 +00:00
aecsocket
b26d048a63
Remove AutoMod code ( #6604 )
...
* 🦀 automod is gone 🦀
* prepare
2026-07-03 21:32:11 +00:00