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
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
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
31417a2aa1
more logging on sync payouts task ( #4814 )
2025-11-23 21:48:15 +01:00
aecsocket
2f0ef07944
Add logging and change limit of Mural payouts task ( #4798 )
2025-11-19 12:38:30 +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
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
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
François-Xavier Talbot
7437a833ef
Fix payout notifications ( #4707 )
...
* Add limit to payouts_values_notifications synchronizer
* Set payout notification threshold to $1
* Fix formatting
* Query cache
2025-11-05 19:43:59 +00: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
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
François-Xavier Talbot
f375913c62
Adjust some values in tax-related tasks ( #4598 )
...
* Adjust some values for tax processing
* chore: query cache, clippy, fmt
2025-10-21 15:55:54 +00:00
François-Xavier Talbot
eeed4e572d
Credit subscriptions ( #4575 )
...
* Implement subscription crediting
* chore: query cache, clippy, fmt
* Improve code, improve query for next open charge
* chore: query cache, clippy, fmt
* Move server ID copy button up
* Node + region crediting
* Make it less ugly
* chore: query cache, clippy, fmt
* Bugfixes
* Fix lint
* Adjust migration
* Adjust migration
* Remove billing change
* Move DEFAULT_CREDIT_EMAIL_MESSAGE to utils.ts
* Lint
* Merge
* bump clickhouse, disable validation
* tombi fmt
* Update cargo lock
2025-10-20 17:35:44 +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
François-Xavier Talbot
5db5bf4c4c
Changes to handling of refunds in Anrok ( #4556 )
...
* Use negations, track transaction version/accounting time, use original charge accounting time in refunds
* query cache
* chore: query cache, clippy, fmt
* Fix tax drift calculation
* Fix migration
* Increase update_tax_transactions rate
2025-10-17 15:57:36 +00:00
Josiah Glosson
b23d3e674f
Update Rust & Java dependencies ( #4540 )
...
* Update Java dependencies
* Baselint lint fixes
* Update Rust version
* Update actix-files 0.6.6 -> 0.6.8
* Update actix-http 3.11.0 -> 3.11.2
* Update actix-rt 2.10.0 -> 2.11.0
* Update async_zip 0.0.17 -> 0.0.18
* Update async-compression 0.4.27 -> 0.4.32
* Update async-trait 0.1.88 -> 0.1.89
* Update async-tungstenite 0.30.0 -> 0.31.0
* Update const_format 0.2.34 -> 0.2.35
* Update bitflags 2.9.1 -> 2.9.4
* Update bytemuck 1.23.1 -> 1.24.0
* Update typed-path 0.11.0 -> 0.12.0
* Update chrono 0.4.41 -> 0.4.42
* Update cidre 0.11.2 -> 0.11.3
* Update clap 4.5.43 -> 4.5.48
* Update data-url 0.3.1 -> 0.3.2
* Update discord-rich-presence 0.2.5 -> 1.0.0
* Update enumset 1.1.7 -> 1.1.10
* Update flate2 1.1.2 -> 1.1.4
* Update hyper 1.6.0 -> 1.7.0
* Update hyper-util 0.1.16 -> 0.1.17
* Update iana-time-zone 0.1.63 -> 0.1.64
* Update image 0.25.6 -> 0.25.8
* Update indexmap 2.10.0 -> 2.11.4
* Update json-patch 4.0.0 -> 4.1.0
* Update meilisearch-sdk 0.29.1 -> 0.30.0
* Update clickhouse 0.13.3 -> 0.14.0
* Fix some prettier things
* Update lettre 0.11.18 -> 0.11.19
* Update phf 0.12.1 -> 0.13.1
* Update png 0.17.16 -> 0.18.0
* Update quick-xml 0.38.1 -> 0.38.3
* Update redis 0.32.4 -> 0.32.7
* Update regex 1.11.1 -> 1.11.3
* Update reqwest 0.12.22 -> 0.12.23
* Update rust_decimal 1.37.2 -> 1.38.0
* Update rust-s3 0.35.1 -> 0.37.0
* Update serde 1.0.219 -> 1.0.228
* Update serde_bytes 0.11.17 -> 0.11.19
* Update serde_json 1.0.142 -> 1.0.145
* Update serde_with 3.14.0 -> 3.15.0
* Update sentry 0.42.0 -> 0.45.0 and sentry-actix 0.42.0 -> 0.45.0
* Update spdx 0.10.9 -> 0.12.0
* Update sysinfo 0.36.1 -> 0.37.2
* Update tauri 2.7.0 -> 2.8.5
* Update tauri-build 2.3.1 -> 2.4.1
* Update tauri-plugin-deep-link 2.4.1 -> 2.4.3
* Update tauri-plugin-dialog 2.3.2 -> 2.4.0
* Update tauri-plugin-http 2.5.1 -> 2.5.2
* Update tauri-plugin-opener 2.4.0 -> 2.5.0
* Update tauri-plugin-os 2.3.0 -> 2.3.1
* Update tauri-plugin-single-instance 2.3.2 -> 2.3.4
* Update tempfile 3.20.0 -> 3.23.0
* Update thiserror 2.0.12 -> 2.0.17
* Update tracing-subscriber 0.3.19 -> 0.3.20
* Update url 2.5.4 -> 2.5.7
* Update uuid 1.17.0 -> 1.18.1
* Update webp 0.3.0 -> 0.3.1
* Update whoami 1.6.0 -> 1.6.1
* Note that windows and windows-core can't be updated yet
* Update zbus 5.9.0 -> 5.11.0
* Update zip 4.3.0 -> 6.0.0
* Fix build
* Enforce rustls crypto provider
* Refresh Cargo.lock
* Update transitive dependencies
* Bump Gradle usage to Java 17
* Use ubuntu-latest consistently across workflows
* Fix lint
* Fix lint in Rust
* Update native-dialog 0.9.0 -> 0.9.2
* Update regex 1.11.3 -> 1.12.2
* Update reqwest 0.12.23 -> 0.12.24
* Update rust_decimal 1.38.0 -> 1.39.0
* Remaining lock-only updates
* chore: move TLS impl of some other dependencies to aws-lc-rs
The AWS bloatware "virus" expands by sheer force of widespread adoption
by the ecosystem... 🫣
* chore(fmt): run Tombi
---------
Co-authored-by: Alejandro González <me@alegon.dev >
2025-10-15 20:45:47 +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
François-Xavier Talbot
2a61916d1e
Mark charges from stripe customers with no address as unresolvable ( #4521 )
2025-10-11 18:24:21 +00:00
François-Xavier Talbot
0c66fa3f12
Custom Emails ( #4526 )
...
* Dynamic email template
* Set lower cache expiry for templates
* Custom email route
* Fix subject line on custom emails
* chore: query cache, clippy, fmt
* Bugfixes
* Key-based caching on custom emails
* Sequentially process emails prone to causing cache stampede
* Fill variables in dynamic body + subject line
* Update apps/labrinth/src/queue/email/templates.rs
Co-authored-by: aecsocket <aecsocket@tutanota.com >
Signed-off-by: François-Xavier Talbot <108630700+fetchfern@users.noreply.github.com >
* Update apps/labrinth/src/queue/email/templates.rs
Co-authored-by: aecsocket <aecsocket@tutanota.com >
Signed-off-by: François-Xavier Talbot <108630700+fetchfern@users.noreply.github.com >
---------
Signed-off-by: François-Xavier Talbot <108630700+fetchfern@users.noreply.github.com >
Co-authored-by: aecsocket <aecsocket@tutanota.com >
2025-10-10 16:30:38 +00:00
François-Xavier Talbot
9589e23118
Link customer ID to Anrok transaction ( #4509 )
...
* Mark transactions with unresolvable addresses as unresolved
* Add customer_name + customer_id to anrok transactions
* Increase rate of Anrok syn
* Remove timer from update_tax_transactions
* chore: query cache, clippy, fmt
2025-10-06 16:06:57 +00:00
Alejandro González
ab6e9dd5d7
fix(app-lib, labrinth): stricter mrpack file path validation ( #4482 )
...
* fix(app-lib, labrinth): stricter mrpack file path validation
* chore: run `cargo fmt`
* tweak: reject reserved Windows device names in mrpacks too
2025-10-04 10:35:30 +00:00
François-Xavier Talbot
7e84659249
Cleanup + fixes to index_billing/index_subscriptions ( #4457 )
...
* Parse refunds
* Cleanup index subscriptions/index billing
* chore: query cache, clippy, fmt
2025-10-03 13:01:52 +00:00
François-Xavier Talbot
54747aa628
Tweaks and fixes to background tasks ( #4447 )
...
* adjustments
* chore: query cache, clippy, fmt
2025-09-30 11:43:59 +00:00
François-Xavier Talbot
b4eba5a0d5
Tax fixes ( #4435 )
...
* Only update the PaymentMethod ID if not using placeholder ID
* comment
* Create Anrok transactions for all charges
* Fix comment
* Prefer using payment method's address rather than customer address
* chore: query cache, clippy, fmt
* Retrieve stripe address from PM
* chore: query cache, clippy, fmt
* fmt
* bring back the query cache
* Better address retrieval for updating tax amounts, always update tax_last_updated
* chore: query cache, clippy, fmt
* Don't set PM in ctoken interactive session for new PIs
2025-09-28 21:13:48 +00:00
François-Xavier Talbot
3f55711f9e
More billing fixes ( #4431 )
...
* Only update the PaymentMethod ID if not using placeholder ID
* comment
* Create Anrok transactions for all charges
* Fix comment
* Prefer using payment method's address rather than customer address
* chore: query cache, clippy, fmt
* Retrieve stripe address from PM
* chore: query cache, clippy, fmt
* fmt
* bring back the query cache
2025-09-27 22:37:30 +00:00
François-Xavier Talbot
14af3d0763
Billing fixes ( #4422 )
...
* Only update the PaymentMethod ID if not using placeholder ID
* comment
* Create Anrok transactions for all charges
* Fix comment
* Prefer using payment method's address rather than customer address
* chore: query cache, clippy, fmt
2025-09-26 15:39:47 +00:00
François-Xavier Talbot
4228a193e9
Charge tax on products ( #4361 )
...
* Initial Anrok integration
* Query cache, fmt, clippy
* Fmt
* Use payment intent function in edit_subscription
* Attach Anrok client, use payments in index_billing
* Integrate Anrok with refunds
* Bug fixes
* More bugfixes
* Fix resubscriptions
* Medal promotion bugfixes
* Use stripe metadata constants everywhere
* Pre-fill values in products_tax_identifiers
* Cleanup billing route module
* Cleanup
* Email notification for tax charge
* Don't charge tax on users which haven't been notified of tax change
* Fix taxnotification.amount templates
* Update .env.docker-compose
* Update .env.local
* Clippy
* Fmt
* Query cache
* Periodically update tax amount on upcoming charges
* Fix queries
* Skip indexing tax amount on charges if no charges to process
* chore: query cache, clippy, fmt
* Fix a lot of things
* Remove test code
* chore: query cache, clippy, fmt
* Fix money formatting
* Fix conflicts
* Extra documentation, handle tax association properly
* Track loss in tax drift
* chore: query cache, clippy, fmt
* Add subscription.id variable
* chore: query cache, clippy, fmt
* chore: query cache, clippy, fmt
2025-09-25 11:29:29 +00:00
François-Xavier Talbot
e6edf07eae
Fill variables for subject line ( #4415 )
2025-09-24 10:52:43 +00:00
François-Xavier Talbot
f33efed91b
Less emails per transactinos ( #4406 )
2025-09-22 19:40:59 +00:00
François-Xavier Talbot
6da190ed01
New Creator Notifications ( #4383 )
...
* Some new notification types
* Fix error
* Use existing DB models rather than inline queries
* Fix template fillout
* Fix ModerationThreadMessageReceived
* Insert more notifications, fix some formatting
* chore: query cache, clippy, fmt
* chore: query cache, clippy, fmt
* Use outer transactions to insert notifications instead of creating a new one
* Join futures
2025-09-17 19:37:21 +00:00
François-Xavier Talbot
902d749293
[DO NOT MERGE] Email notification system ( #4338 )
...
* Migration
* Fixup db models
* Redis
* Stuff
* Switch PKs to BIGSERIALs, insert to notifications_deliveries when inserting notifications
* Queue, templates
* Query cache
* Fixes, fixtures
* Perf, cache template data & HTML bodies
* Notification type configuration, ResetPassword notification type
* Reset password
* Query cache
* Clippy + fmt
* Traces, fix typo, fix user email in ResetPassword
* send_email
* Models, db
* Remove dead code, adjust notification settings in migration
* Clippy fmt
* Delete dead code, fixes
* Fmt
* Update apps/labrinth/src/queue/email.rs
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com >
Signed-off-by: François-Xavier Talbot <108630700+fetchfern@users.noreply.github.com >
* Remove old fixtures
* Unify email retry delay
* Fix type
* External notifications
* Remove `notifications_types_preference_restrictions`, as user notification preferences is out of scope for this PR
* Query cache, fmt, clippy
* Fix join in get_many_user_exposed_on_site
* Remove migration comment
* Query cache
* Update html body urls
* Remove comment
* Add paymentfailed.service variable to PaymentFailed notification variant
* Fix compile error
* Fix deleting notifications
* Update apps/labrinth/src/database/models/user_item.rs
Co-authored-by: Josiah Glosson <soujournme@gmail.com >
Signed-off-by: François-Xavier Talbot <108630700+fetchfern@users.noreply.github.com >
* Update apps/labrinth/src/database/models/user_item.rs
Co-authored-by: Josiah Glosson <soujournme@gmail.com >
Signed-off-by: François-Xavier Talbot <108630700+fetchfern@users.noreply.github.com >
* Update Cargo.toml
Co-authored-by: Josiah Glosson <soujournme@gmail.com >
Signed-off-by: François-Xavier Talbot <108630700+fetchfern@users.noreply.github.com >
* Update apps/labrinth/migrations/20250902133943_notification-extension.sql
Co-authored-by: Josiah Glosson <soujournme@gmail.com >
Signed-off-by: François-Xavier Talbot <108630700+fetchfern@users.noreply.github.com >
* Address review comments
* Fix compliation
* Update apps/labrinth/src/database/models/users_notifications_preferences_item.rs
Co-authored-by: Josiah Glosson <soujournme@gmail.com >
Signed-off-by: François-Xavier Talbot <108630700+fetchfern@users.noreply.github.com >
* Use strfmt to format emails
* Configurable Reply-To
* Configurable Reply-To
* Refactor for email background task
* Send some emails inline
* Fix account creation email check
* Revert "Use strfmt to format emails"
This reverts commit e0d6614afe51fa6349918377e953ba294c34ae0b.
* Reintroduce fill_template
* Set password reset email inline
* Process more emails per index
* clippy fmt
* Query cache
---------
Signed-off-by: François-Xavier Talbot <108630700+fetchfern@users.noreply.github.com >
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com >
Co-authored-by: Josiah Glosson <soujournme@gmail.com >
2025-09-15 19:02:29 +00:00
François-Xavier Talbot
d8d9720495
Only Fire Slack Webhook Once a Day ( #4368 )
...
* Only send webhook once per day
* pat clippy's back
* damn query cache
2025-09-11 23:38:22 +00:00
François-Xavier Talbot
58aac642a9
Slack webhook for payout source threshold alerts ( #4353 )
...
* Slack webhook for payout alerts
* add PAYOUT_ALERT_SLACK_WEBHOOK to check_env_vars
* Fix commit
* Fix webhook format
* Add new env vars in .env.local
* Rename env vars, fire webhook on error
* Fix compilation
* Clippy
* Fix CI
* Add env vars to .env.docker-compose
2025-09-10 21:16:21 +00:00
François-Xavier Talbot
ea607c1a04
Include Tremendous image_logo_url ( #4349 )
2025-09-08 12:34:51 +00:00
François-Xavier Talbot
0511a14bd9
Fix tremendous balance check ( #4337 )
2025-09-04 12:28:22 +00:00
François-Xavier Talbot
bd918c7616
Move update_bank_balances to billing task, don't fail every provider if one fails ( #4332 )
2025-09-03 13:12:34 +00:00
Josiah Glosson
cf190d86d5
Update Rust dependencies ( #4139 )
...
* Update Rust version
* Update async-compression 0.4.25 -> 0.4.27
* Update async-tungstenite 0.29.1 -> 0.30.0
* Update bytemuck 1.23.0 -> 1.23.1
* Update clap 4.5.40 -> 4.5.43
* Update deadpool-redis 0.21.1 -> 0.22.0 and redis 0.31.0 -> 0.32.4
* Update enumset 1.1.6 -> 1.1.7
* Update hyper-util 0.1.14 -> 0.1.16
* Update indexmap 2.9.0 -> 2.10.0
* Update indicatif 0.17.11 -> 0.18.0
* Update jemalloc_pprof 0.7.0 -> 0.8.1
* Update lettre 0.11.17 -> 0.11.18
* Update meilisearch-sdk 0.28.0 -> 0.29.1
* Update notify 8.0.0 -> 8.2.0 and notify-debouncer-mini 0.6.0 -> 0.7.0
* Update quick-xml 0.37.5 -> 0.38.1
* Fix theseus lint
* Update reqwest 0.12.20 -> 0.12.22
* Cargo fmt in theseus
* Update rgb 0.8.50 -> 0.8.52
* Update sentry 0.41.0 -> 0.42.0 and sentry-actix 0.41.0 -> 0.42.0
* Update serde_json 1.0.140 -> 1.0.142
* Update serde_with 3.13.0 -> 3.14.0
* Update spdx 0.10.8 -> 0.10.9
* Update sysinfo 0.35.2 -> 0.36.1
* Update tauri suite
* Fix build by updating mappings
* Update tokio 1.45.1 -> 1.47.1 and tokio-util 0.7.15 -> 0.7.16
* Update tracing-actix-web 0.7.18 -> 0.7.19
* Update zip 4.2.0 -> 4.3.0
* Misc Cargo.lock updates
* Update Dockerfiles
2025-08-08 22:50:44 +00:00
Prospector
897418ead3
Fix moderation message article link
2025-06-30 19:05:16 -07:00
Jai Agrawal
33d26238ce
Fix revenue route incorrect filter (and commit bank transaction) ( #3874 )
...
* Fix revenue route incorrect filtering
* Actually commit transaction
2025-06-30 14:45:23 -07:00
Jai Agrawal
8971d39683
Add bank balances to DB ( #3860 )
2025-06-29 14:46:54 +00:00
Alejandro González
ef04dcc37b
feat(labrinth): rework v3 side types to a single environment field ( #3701 )
...
* feat(labrinth): rework v3 side types to a single `environment` field
This field is meant to be able to represent the existing v2 side type
information and beyond, in a way that may also be slightly easier to
comprehend.
* chore(labrinth/migrations): use proper val for `HAVING` clause
* feat(labrinth): add `side_types_migration_review_status` field to projects
2025-06-16 22:44:57 +00:00
Alejandro González
f84f8c1c2b
chore(clippy): enable and fix many stricter lints ( #3783 )
...
* chore(clippy): enable and fix many stricter lints
These ensure that the codebase uses more idiomatic, performant, and
concise language constructions.
* chore: make non-Clippy compiler warnings also deny by default
2025-06-14 00:10:12 +00:00
Emma Alexia
7b535a1c2a
Enable charity payouts through Tremendous ( #3732 )
2025-06-01 23:53:45 +00:00
Emma Alexia
b66d99c59c
Improve error when Modrinth's PayPal account is out of funds ( #3718 )
...
* Improve error when Modrinth's PayPal account is out of funds
* improve msg
2025-05-30 16:28:00 +00:00
Emma Alexia
74cf3f076e
Automatically fail payments that are older than 30 days ( #3697 )
2025-05-25 19:36:19 +00:00
Josiah Glosson
4e4a7be7ef
Commonize and distinguish a lot of struct names in labrinth::database::models ( #3691 )
2025-05-24 09:38:43 +00:00