aecsocket
98b4970680
Store method ID for payouts ( #4752 )
...
* Store method ID for payouts
* Fixes
2025-11-10 16:41:06 +00: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
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
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
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
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
47020f34b6
Tax compliance adjustments ( #4414 )
...
* tax compliance adjustments
* chore: query cache, clippy, fmt
2025-09-25 11:02:33 +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
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
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
006b19e3c9
Creator tax compliance ( #4254 )
...
* Initial implementation
* Remove test code
* Query cache
* Appease clippy
* Precise TIN/SSN
* Make tax threshold customizable via env variable
* Address review comments
2025-08-25 16:34:58 +00:00
François-Xavier Talbot
9497ba70a4
Offers, redemption, preview subscriptions ( #4121 )
...
* Initial db migration/impl, guarded partner routes
* Add guard to /redeem
* Add `public` column to products prices, only expose public prices
* Query cache
* Add partner subscription type
* 5 days subscription interval, metadata
* Create server on redeem
* Query cache
* Fix race condition
* Unprovision Medal subscriptions
* Consider due expiring charge as unprovisionable
* Query cache
* Use a queue
* Promote to full subscription, fmt + clippy
* Patch expiring charge on promotion, comments
* Additional comments
* Add `tags` field to Archon /create request
* Address review comments
* Query cache
* Final fixes to edit_subscription
* Appease clippy
* fmt
2025-08-11 21:40:58 +00:00
Alejandro González
c7d0839bfb
fix(labrinth): retire Sendy for new email newsletter subscriptions ( #4073 )
...
* tweak(frontend): do not sign up for the newsletter by default
* fix(labrinth): retire Sendy for new email newsletter subscriptions
2025-07-29 09:51:50 +00:00
Alejandro González
358cf31c87
feat(labrinth): basic offset pagination for moderation reports and projects ( #4063 )
2025-07-26 12:32:35 +00:00
Jai Agrawal
8971d39683
Add bank balances to DB ( #3860 )
2025-06-29 14:46:54 +00:00
Alejandro González
a1812cd954
fix(labrinth): set a proper replica identity during the environments migration ( #3852 )
...
This should fix a migration error that happened on our production
environment.
2025-06-27 12:16:02 +00:00
Josiah Glosson
cc34e69524
Initial shared instances backend ( #3800 )
...
* Create base shared instance migration and initial routes
* Fix build
* Add version uploads
* Add permissions field for shared instance users
* Actually use permissions field
* Add "public" flag to shared instances that allow GETing them without authorization
* Add the ability to get and list shared instance versions
* Add the ability to delete shared instance versions
* Fix build after merge
* Secured file hosting (#3784 )
* Remove Backblaze-specific file-hosting backend
* Added S3_USES_PATH_STYLE_BUCKETS
* Remove unused file_id parameter from delete_file_version
* Add support for separate public and private buckets in labrinth::file_hosting
* Rename delete_file_version to delete_file
* Add (untested) get_url_for_private_file
* Remove url field from shared instance routes
* Remove url field from shared instance routes
* Use private bucket for shared instance versions
* Make S3 environment variables fully separate between public and private buckets
* Change file host expiry for shared instances to 180 seconds
* Fix lint
* Merge shared instance migrations into a single migration
* Replace shared instance owners with Ghost instead of deleting the instance
2025-06-19 19:46:12 +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
ee8ee7af82
feat(labrinth): ignore email case differences in password recovery flow ( #3771 )
...
* feat(labrinth): ignore email case differences in password recovery flow
* chore(labrinth): run `sqlx prepare`
2025-06-11 21:59:21 +00:00
Alejandro González
a3839461cf
perf(labrinth/random_projects_get): speed up through spatial queries according to profiling results ( #3762 )
2025-06-09 22:19:58 +00:00
Emma Alexia
06f1df1995
Fix random_projects route not returning the requested number of projects ( #3758 )
...
* Fix random_projects route not returning the requested number of projects
* fix(labrinth): further improve random project route SQL query
* chore: fix typo in comment
* tweak(labrinth): more apparent and fast randomness for `random_projects_get`
* tweak(labrinth): even better random projects query
* chore: address formatting review
---------
Co-authored-by: Alejandro González <me@alegon.dev >
2025-06-08 23:49:39 +00:00
Emma Alexia
f71830e0fa
Add helpful functions for interacting with db manually ( #3602 )
...
Brought over from modrinth/labrinth#862
2025-05-03 12:15:15 +00:00
Jai A
d7814e115d
fix migration typo
2025-01-17 09:05:42 -08:00
Jai A
24295ea482
fix version uploading
2025-01-17 08:53:54 -08:00
Jai A
701bf853d5
Fix broken migration on labrinth (againx2)
2025-01-16 23:59:07 -08:00
Jai A
7fd3d737b8
Fix broken migration on labrinth (again)
2025-01-16 23:32:26 -08:00
Jai A
497b0bca0b
Fix broken migration on labrinth
2025-01-16 23:00:11 -08:00
Jai A
9e97c068d8
Fix version_fields, loader_fields_loaders missing primary keys
2025-01-16 17:41:41 -08:00
Jai A
5b00ac17e5
fix lint, labrinth crash
2024-12-23 17:13:13 -07:00
Geometrically
2987f507fe
Refunds + Upgrading/Downgrading plans ( #2983 )
...
* Refunds + Upgrading/Downgrading plans
* Servers list route
* Finish, lint
* add GAM fee to payouts
* Sync payment intent id with stripe
* fix lint, update migrations
* Remove tauri generated files
* Register refund route
* fix refund bugs
2024-12-06 19:37:17 -08:00
Geometrically
47b0ccdf78
Friends system for app ( #2958 )
...
* Friends system for app
* Fix impl issues
* move friends to in-memory store
2024-11-26 18:23:29 -07:00
Jai A
e3a3379615
move to monorepo dir
2024-10-16 14:11:42 -07:00