aecsocket
c94dde9b47
Fix updating mod version if file hash is the same ( #5138 )
...
* Start fixing infinite update glitch
* adjust app cache logic
* more cache logic
* cleanup
* add v2 redirect
* add v2 version file route to config
2026-01-19 21:40:44 +00:00
aecsocket and tdgao
240e5455cc
Auto create NeoForge instance from mod version ( #5142 )
...
* Auto create NeoForge instance from mod version
* prioritise fabric over nf
* pnpm prepr
---------
Co-authored-by: tdgao <mr.trumgao@gmail.com >
2026-01-16 21:21:14 +00:00
aecsocket
c37bf75853
Implement replied/unreplied filter for tech review ( #5006 )
...
* Implement replied/unreplied filter for tech review
* project status filter
* wip: issue type filter
* correct filter field
* wip: break up tech review query
* Improve tech review query
* Get tech review working more properly
* Add get single project reports endpoint
2026-01-15 11:54:20 +00:00
aecsocket
f85a2d3ec1
Make changelog in version response optional ( #5115 )
...
* Make changelog on version routes optional
* fix clippy
* fix ci
2026-01-14 10:55:20 +00:00
aecsocket and Calum H.
d055dc68dc
Payout flows in backend - fix Tremendous forex cards ( #5001 )
...
* wip: payouts flow api
* working
* Finish up flow migration
* vibe-coded frontend changes
* fix typos and vue
* fix: types
---------
Co-authored-by: Calum H. (IMB11) <contact@cal.engineer >
2026-01-14 10:53:35 +00:00
aecsocket
ad3edf541b
Replace MaxMind with CloudFlare headers ( #4934 )
...
* Replace MaxMind with CloudFlare headers
* Remove MaxMind env vars
* Fix test harness
2025-12-30 16:49:49 +00:00
aecsocket
cace1a54cd
Fix tech review query routes ( #4946 )
2025-12-21 09:23:21 +00:00
39f2b0ecb6
Technical review queue ( #4775 )
...
* chore: fix typo in status message
* feat(labrinth): overhaul malware scanner report storage and routes
* chore: address some review comments
* feat: add Delphi to Docker Compose `with-delphi` profile
* chore: fix unused import Clippy lint
* feat(labrinth/delphi): use PAT token authorization with project read scopes
* chore: expose file IDs in version queries
* fix: accept null decompiled source payloads from Delphi
* tweak(labrinth): expose base62 file IDs more consistently for Delphi
* feat(labrinth/delphi): support new Delphi report severity field
* chore(labrinth): run `cargo sqlx prepare` to fix Docker build errors
* tweak: add route for fetching Delphi issue type schema, abstract Labrinth away from issue types
* chore: run `cargo sqlx prepare`
* chore: fix typo on frontend generated state file message
* feat: update to use new Delphi issue schema
* wip: tech review endpoints
* wip: add ToSchema for dependent types
* wip: report issues return
* wip
* wip: returning more data
* wip
* Fix up db query
* Delphi configuration to talk to Labrinth
* Get Delphi working with Labrinth
* Add Delphi dummy fixture
* Better Delphi logging
* Improve utoipa for tech review routes
* Add more sorting options for tech review queue
* Oops join
* New routes for fetching issues and reports
* Fix which kind of ID is returned in tech review endpoints
* Deduplicate tech review report rows
* Reduce info sent for projects
* Fetch more thread info
* Address PR comments
* fix ci
* fix postgres version mismatch
* fix version creation
* Implement routes
* fix up tech review
* Allow adding a moderation comment to Delphi rejections
* fix up rebase
* exclude rejected projects from tech review
* add status change msg to tech review thread
* cargo sqlx prepare
* also ignore withheld projects
* More filtering on issue search
* wip: report routes
* Fix up for build
* cargo sqlx prepare
* fix thread message privacy
* New tech review search route
* submit route
* details have statuses now
* add default to drid status
* dedup issue details
* fix sqlx query on empty files
* fixes
* Dedupe issue detail statuses and message on entering tech rev
* Fix qa issues
* Fix qa issues
* fix review comments
* typos
* fix ci
* feat: tech review frontend (#4781 )
* chore: fix typo in status message
* feat(labrinth): overhaul malware scanner report storage and routes
* chore: address some review comments
* feat: add Delphi to Docker Compose `with-delphi` profile
* chore: fix unused import Clippy lint
* feat(labrinth/delphi): use PAT token authorization with project read scopes
* chore: expose file IDs in version queries
* fix: accept null decompiled source payloads from Delphi
* tweak(labrinth): expose base62 file IDs more consistently for Delphi
* feat(labrinth/delphi): support new Delphi report severity field
* chore(labrinth): run `cargo sqlx prepare` to fix Docker build errors
* tweak: add route for fetching Delphi issue type schema, abstract Labrinth away from issue types
* chore: run `cargo sqlx prepare`
* chore: fix typo on frontend generated state file message
* feat: update to use new Delphi issue schema
* wip: tech review endpoints
* wip: add ToSchema for dependent types
* wip: report issues return
* wip
* wip: returning more data
* wip
* Fix up db query
* Delphi configuration to talk to Labrinth
* Get Delphi working with Labrinth
* Add Delphi dummy fixture
* Better Delphi logging
* Improve utoipa for tech review routes
* Add more sorting options for tech review queue
* Oops join
* New routes for fetching issues and reports
* Fix which kind of ID is returned in tech review endpoints
* Deduplicate tech review report rows
* Reduce info sent for projects
* Fetch more thread info
* Address PR comments
* fix ci
* fix ci
* fix postgres version mismatch
* fix version creation
* Implement routes
* feat: batch scan alert
* feat: layout
* feat: introduce surface variables
* fix: theme selector
* feat: rough draft of tech review card
* feat: tab switcher
* feat: batch scan btn
* feat: api-client module for tech review
* draft: impl
* feat: auto icons
* fix: layout issues
* feat: fixes to code blocks + flag labels
* feat: temp remove mock data
* fix: search sort types
* fix: intl & lint
* chore: re-enable mock data
* fix: flag badges + auto open first issue in file tab
* feat: update for new routes
* fix: more qa issues
* feat: lazy load sources
* fix: re-enable auth middleware
* feat: impl threads
* fix: lint & severity
* feat: download btn + switch to using NavTabs with new local mode option
* feat: re-add toplevel btns
* feat: reports page consistency
* fix: consistency on project queue
* fix: icons + sizing
* fix: colors and gaps
* fix: impl endpoints
* feat: load all flags on file tab
* feat: thread generics changes
* feat: more qa
* feat: fix collapse
* fix: qa
* feat: msg modal
* fix: ISO import
* feat: qa fixes
* fix: empty state basic
* fix: collapsible region
* fix: collapse thread by default
* feat: rough draft of new process/flow
* fix labrinth build
* fix thread message privacy
* New tech review search route
* feat: qa fixes
* feat: QA changes
* fix: verdict on detail not whole issue
* fix: lint + intl
* fix: lint
* fix: thread message for tech rev verdict
* feat: use anim frames
* fix: exports + typecheck
* polish: qa changes
* feat: qa
* feat: qa polish
* feat: fix malic modal
* fix: lint
* fix: qa + lint
* fix: pagination
* fix: lint
* fix: qa
* intl extract
* fix ci
---------
Signed-off-by: Calum H. <contact@cal.engineer >
Co-authored-by: Alejandro González <me@alegon.dev >
Co-authored-by: aecsocket <aecsocket@tutanota.com >
---------
Signed-off-by: Calum H. <contact@cal.engineer >
Co-authored-by: Alejandro González <me@alegon.dev >
Co-authored-by: Calum H. <contact@cal.engineer >
2025-12-20 11:43:04 +00:00
aecsocket
9ad01723a2
Fix optional file type upload validation ( #4924 )
2025-12-18 19:18:05 +00:00
aecsocket
8d894541e8
Add affiliate code revenue analytics ( #4883 )
...
* Add affiliate code revenue analytics
* clean up some error handling
* Add conversions to affiliate code analytics
* Only include affiliate subscriptions which have an associated successful charge
* wip: affiliate code clicks
* affiliate code click ingest route
* Add affiliate code clicks to analytics
* add new cols
2025-12-18 18:02:49 +00:00
dc16a65b62
Improve support for non-USD Tremendous gift cards ( #4887 )
...
* Improve support for non-USD Tremendous gift cards
* add forex info to tremendous payout methods
* fix: partially fix DEV-535
* feat: wip
* eur/usd to usd/eur
* feat: better denom picking
* feat: qa changes
* fix: intl
---------
Co-authored-by: Calum H. (IMB11) <contact@cal.engineer >
Co-authored-by: Prospector <6166773+Prospector@users.noreply.github.com >
2025-12-18 18:02:29 +00:00
aecsocket
609e3896eb
Use alt CDN URL when request header is passed ( #4921 )
...
* Use alt CDN URL when request header is passed
* Modify version routes to use alt CDN
2025-12-17 18:12:29 +00:00
aecsocket
e123e51c66
Fix how processor arguments are generated in app ( #4919 )
2025-12-16 20:03:37 +00:00
aecsocket
7aaf99a0c8
Split logging utils into its own crate ( #4852 )
...
* Split logging utils into its own crate
* fix review comments
* remove anyhow from root
* make meilisearch less verbose
2025-12-12 02:09:57 +00:00
aecsocket
ddcc14d99f
Add details to Mural API errors ( #4886 )
2025-12-11 12:49:59 +00:00
aecsocket
9aa06fbc26
Fix Mural payout status syncing ( #4853 )
...
* Fix Mural payout status syncing
* Make Mural payout code more resilient
* prepare sqlx
* fix test
2025-12-08 20:34:41 +00:00
aecsocket and Prospector
cea5cfa4ab
Add new optional file types ( #4854 )
...
* Add new optional file types
* Fix build
* Add signature file type
---------
Co-authored-by: Prospector <6166773+Prospector@users.noreply.github.com >
2025-12-06 23:45:10 +00:00
aecsocket
79c2633011
Fix slug/project ID collisions ( #4844 )
...
* wip: tool to create project with id
* fix
* fix id/slug collision for orgs
2025-12-03 00:30:18 +00:00
aecsocket
783aaa6553
Add revenue split to affiliate codes v2 ( #4672 )
...
* wip: affiliate payouts again
* Implement affiliate payout queue
* Deactivate subscription affiliations on cancellation
* Remove a test that never compiled in the first place
* Update sqlx cache
* address some PR comments
* more comments
* wip: handle refund charges
* cargo sqlx prepare
* Address PR comments
* cargo sqlx prepare
2025-12-02 00:01:24 +00:00
aecsocket
fe684ab903
Change auth servers reachable check URL ( #4830 )
2025-11-27 19:38:26 +00:00
aecsocket
dfe087df20
Enforce 2dp on payout withdrawals ( #4829 )
...
* fix mural withdraw amount
* Enforce 2dp on all payout logic
2025-11-27 10:03:34 +00:00
aecsocket
be3208c5a1
Fix Docker Compose to match staging/prod environments ( #4828 )
2025-11-26 23:54:03 +00:00
aecsocket
0178fddc38
Install mod update dependencies automatically ( #4800 )
...
* Redownload version dependencies when updating a mod
* Fix update all button as well
2025-11-24 13:35:14 +00:00
aecsocket
31417a2aa1
more logging on sync payouts task ( #4814 )
2025-11-23 21:48:15 +01:00
aecsocket
bcf14a4c51
Fix downloading libraries for Forge 1.7.2 ( #4808 )
...
* wip: fix Forge 1.7.2 downloads
* Bump recursion limit
2025-11-21 22:45:34 +00:00
aecsocket
130c2863ab
Fix exposing Docker Compose ports to broadcast addr ( #4805 )
2025-11-21 11:13:11 +00:00
aecsocket
2f0ef07944
Add logging and change limit of Mural payouts task ( #4798 )
2025-11-19 12:38:30 +00:00
aecsocket and Calum H.
93b79759c7
Add auth servers unreachable warning to app ( #4774 )
...
* Add auth servers unreachable warning to app
* Check auth status every 5 minutes
* Use admonition in auth server warning
* feat: tanstack
* Fix auth server reachability query
* Format
* intl extract
---------
Co-authored-by: Calum H. (IMB11) <contact@cal.engineer >
2025-11-17 18:41:52 +00:00
aecsocket
089cca60ce
Fix PayPal SSO OAuth callback ( #4758 )
...
* Maybe fix PayPal SSO
* cargo sqlx prepare
* maybe works
* Attempt 2 of fixing
* Fix vue
* Try adding more logging to flow
2025-11-16 21:49:48 +00:00
aecsocket
c27f787c91
Task to retroactively update Mural statuses ( #4769 )
...
* Task to retroactively update Mural statuses
* cargo sqlx prepare
* wip: add tests
* Prepare
* Fix up test
* start on muralpay mock
* Move mocking to muralpay crate
2025-11-13 18:16:41 +00:00
aecsocket
1dcb38cb57
Fix dependency installation not respecting mod loader ( #4751 )
...
* Fix dependency installation not respecting mod loader
* fix
2025-11-10 16:48:11 +00:00
aecsocket
98b4970680
Store method ID for payouts ( #4752 )
...
* Store method ID for payouts
* Fixes
2025-11-10 16:41:06 +00:00
aecsocket
9706f1597b
Supporting documents for Mural payouts ( #4721 )
...
* wip: gotenberg
* Generate and provide supporting docs for Mural payouts
* Correct docs
* shear
* update cargo lock because r-a complains otherwise
* Remove local Gotenberg queue and use Redis instead
* Store platform_id in database correctly
* Address PR comments
* Fix up CI
* fix rebase
* Add timeout to default env vars
2025-11-08 23:27:31 +00:00
aecsocket
f8a5a77daa
Expose test utils to Labrinth dependents ( #4703 )
...
* Expose test utils to Labrinth dependents
* Feature gate `labrinth::test`
* Unify db migrators
* Expose `NotificationBuilder::insert_many_deliveries`
* Add logging utils to common crate
* Remove unused console-subscriber layer
* fix CI
2025-11-08 20:26:24 +00:00
aecsocket
608ab988f0
Fetch more data for moderation endpoints ( #4727 )
...
* Moderation endpoints fetch ownership data
* fix up endpoint configs
* add some docs
2025-11-07 18:50:29 +00:00
aecsocket
cb47bc97c7
Logging hotfix for canceling Mural payout requests ( #4730 )
...
* Logging hotfix for canceling payout requests
* Remove Tombi CI step for now
2025-11-07 12:07:10 +01:00
aecsocket
23d098eee5
Fix error chain logging and withdrawal fees ( #4718 )
...
* Log Labrinth errors properly
* Tweak how we do Tremendous fees
* Fix maths for Tremendous fees
2025-11-04 17:50:54 -08:00
aecsocket
6e47de06bb
Address withdrawal QA changes ( #4711 )
...
* Add Mural to balance monitoring
* Add back Visa prepaid Tremendous cards
* cargo sqlx prepare
2025-11-04 16:40:15 +00:00
aecsocket
c38751a38a
cargo sqlx prepare ( #4710 )
2025-11-04 01:34:39 +01:00
aecsocket
2d218d79c6
Mural fixes ( #4709 )
2025-11-04 01:12:30 +01:00
17f395ee55
Mural Pay integration ( #4520 )
...
* wip: muralpay integration
* Basic Mural Pay API bindings
* Fix clippy
* use dotenvy in muralpay example
* Refactor payout creation code
* wip: muralpay payout requests
* Mural Pay payouts work
* Fix clippy
* add mural pay fees API
* Work on payout fee API
* Fees API for more payment methods
* Fix CI
* Temporarily disable Venmo and PayPal methods from frontend
* wip: counterparties
* Start on counterparties and payment methods API
* Mural Pay multiple methods when fetching
* Don't send supported_countries to frontend
* Add countries to muralpay fiat methods
* Compile fix
* Add exchange rate info to fees endpoint
* Add fees to premium Tremendous options
* Add delivery email field to Tremendous payouts
* Add Tremendous product category to payout methods
* Add bank details API to muralpay
* Fix CI
* Fix CI
* Remove prepaid visa, compute fees properly for Tremendous methods
* Add more details to Tremendous errors
* Add fees to Mural
* Payout history route and bank details
* Re-add legacy PayPal/Venmo options for US
* move the mural bank details route
* Add utoipa support to payout endpoints
* address some PR comments
* add CORS to new utoipa routes
* Immediately approve mural payouts
* Add currency support to Tremendous payouts
* Currency forex
* add forex to tremendous fee request
* Add Mural balance to bank balance info
* Add more Tremendous currencies support
* Transaction payouts available use the correct date
* Address my own review comment
* Address PR comments
* Change Mural withdrawal limit to 3k
* maybe fix tremendous gift cards
* Change how Mural minimum withdrawals are calculated
* Tweak min/max withdrawal values
---------
Co-authored-by: Calum H. <contact@cal.engineer >
Co-authored-by: Alejandro González <me@alegon.dev >
2025-11-03 14:19:46 -08:00
aecsocket
b7f0988399
Decouple project deletion from thread deletion ( #4673 )
...
* Decouple project deletion from thread deletion
* Allow a thread to exist without a project
* attempt 2
* Modify migration to set orphaned threads' mods to NULL instead of removing constraint entirely
* Use mod PAT for mod threads
2025-10-31 19:04:01 +00:00
aecsocket
bcc36362be
Expose utilities for setting up the database ( #4657 )
...
* Expose utilities for setting up the database
* Expose migrator directly
* Make some test utils publicly accessible
* expose migrator
* more test fixture utils
* more test fixture utils
* more test fixture utils
* fix
* fix lint
2025-10-30 10:10:25 +00:00
aecsocket
ab886a5ea8
Fix CORS ( #4610 )
2025-10-24 18:27:44 +00:00
aecsocket
03b0eba695
Add utoipa Swagger UI support ( #4602 )
...
* Add utoipa Swagger UI support
* remove unused code
* remove unused code
* consistency with trailing slash
2025-10-24 14:44:50 +00:00
aecsocket
707ff2146b
Update appropriate rows when removing a user ( #4597 )
...
* Update appropriate rows when removing a user
* Update sqlx cache
* Delete rows from payouts_values_notifications instead of make ghost user
2025-10-24 14:19:53 +00:00
aecsocket
24bec6baba
Fix MaxMind ( #4590 )
2025-10-20 15:58:31 +00:00
aecsocket
fa7d1d7942
Use new MaxMind env vars on Labrinth ( #4573 )
...
* Bring in modrinth-maxmind
* integrate modrinth-maxmind into labrinth
* Fix CI
2025-10-18 18:38:19 +00:00
aecsocket
4cd8ccd319
Taplo and typos in CI, TOML cleanup ( #4510 )
...
* Taplo and typos in CI
* Clean up Cargo.toml files
* Fix CI
* Fix CI
* Run typos in CI
* Loosen typos a bit
* Fix typos
* Fix taplo
* Switch to Tombi
* Fix Tombi errors
* Remove unused typos config
* Tombi fmt
* Remove extraneous cargo fmt
* fix typos
2025-10-12 20:18:38 +00:00
aecsocket
e66b131a5d
See available funds history and withdrawls in user payout history ( #4537 )
...
* Add GET /v3/payouts/history
* V3 backwards compat
* Sqlx prepare
* Include user ID in GET /v3/payout
2025-10-11 10:51:38 +00:00
aecsocket
aec49cff7c
Include both analytics v1 and v2 in tree ( #4527 )
...
* Include both analytics v1 and v2 in tree
* fix sqlx cache
* fix tests
2025-10-10 14:58:19 +00:00
aecsocket and Calum H.
6919c8dea9
Analytics backend V2 ( #4408 )
...
* start with analytics v2
* the big ass SQL query™
* downloads and views analytics working
* Implement analytics bucketing API
* allow filtering by monetization
* Use a new format for project metrics and bucketing
* revenue API works
* Add country data to analytics API
* Add checks for number of slices and time slice resolution
* work on docs
* wip: fix tests and add docs
* Fix tests
* Fix tests
* Uncomment crates
* feat: frontend CLAUDE.md (#4433 )
* Slight tweaks to time slicing logic
* More tweaks
* Fix error messages
* Fix sqlx cache
---------
Co-authored-by: Calum H. <contact@cal.engineer >
2025-10-07 22:01:10 +00:00
aecsocket
e303655727
Fix using a private serde_with re-export ( #4489 )
2025-10-04 18:10:42 +00:00
aecsocket
2af7ecc077
Fix affiliate PUT API ( #4456 )
...
* Fix affiliate PUT API
* PR fixes
* wip: merge affiliate code endpoints
2025-10-03 14:24:15 +00:00
aecsocket
b96c5cd5ab
Improve error logging and observability ( #4443 )
...
* Replace actix tracing with custom error tracing
* Fix logging
* wip: JSON logging
* Use LABRINTH_FORMAT to change to JSON output
* sqlx fix?
* CI fix
* Add tracing span info to HTTP requests
* Merge Result and Option error wrapping
* Add http.authorized to tracing
2025-10-03 13:02:20 +00:00
aecsocket
f466470d06
Hard caps on creating projects/orgs/collections ( #4430 )
...
* implement backend limits on project creation
* implement collection, org creation hard caps
* Fix limit api
* Fix clippy
* Fix limits
* Update sqlx queries
* Address PR comments on user limit structure
* sqlx prepare and clippy
* fix test maybe
2025-09-28 10:01:00 +00:00
aecsocket
20281c4efc
Allow users to manage their own affiliate codes ( #4392 )
...
* Allow users to manage their own affiliate codes
* Add a badge to restrict access to affiliate codes
* sqlx prepare and clippy
2025-09-22 16:54:09 +00:00
aecsocket
36d0760a3e
Use Nightly + Cranelift for dev, only fail on warnings in CI ( #4388 )
...
* Switch to nightly + cranelift
* Fail on warnings only in CI
* Fix check errors
* Don't use mold on Linux to fix CI
* Pin nightly toolchain and add default rustup components
* Fix another CI thing
* PR comment
2025-09-18 18:20:19 +00:00
aecsocket
4def0e8407
Initial affiliate codes implementation ( #4382 )
...
* Initial affiliate codes implementation
* some more docs to codes
* sqlx prepare
* Address PR comments
* Address more PR comments
* fix clippy
* Switch to using Json<T> for type-safe responses
2025-09-18 15:43:34 +00:00