François-Xavier Talbot
9924faab84
Fix tech rev rejection query ( #4963 )
2025-12-29 21:06:47 +00:00
aecsocket
cace1a54cd
Fix tech review query routes ( #4946 )
2025-12-21 09:23:21 +00:00
aecsocket
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
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
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
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
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
98b4970680
Store method ID for payouts ( #4752 )
...
* Store method ID for payouts
* Fixes
2025-11-10 16:41:06 +00: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
c38751a38a
cargo sqlx prepare ( #4710 )
2025-11-04 01:34:39 +01:00
Calum H.
3765a6ded8
feat: creator revenue page overhaul ( #4204 )
...
* feat: start on tax compliance
* feat: avarala1099 composable
* fix: shouldShow should be managed on the page itself
* refactor: move show logic to revenue page
* feat: security practices rather than info
* feat: withdraw page lock
* fix: empty modal bug & lint issues
* feat: hide behind feature flag
* Use standard admonition components, make casing consistent
* modal title
* lint
* feat: withdrawal check
* feat: tax cap on withdrawals warning
* feat: start on revenue page overhaul
* feat: segment generation for bar
* feat: tooltips and links
* fix: tooltip border
* feat: finish initial layout, start on withdraw modal
* feat: start on withdrawal limit stage
* feat: shade support for primary colors
* feat: start on withdraw details stage
* fix: convert swatches to hex
* feat: payout method/region dropdown temporarily using multiselect
* feat: fix modal open issues and use teleport dropdowns
* feat: hide transactions section if there are no transactions
* refactor: NavStack surfaces
* feat: new dropdown component
* feat: remove teleport dropdown modal in favour of new combobox component
* fix: lint
* refactor: dashboard sidebar layout
* feat: cleanup
* fix: niche bugs
* fix: ComboBox styling
* feat: first part of qa
* feat: animate flash rather than tooltip
* fix: lint
* feat: qa border gradient
* fix: seg hover flashes
* feat: i18n
* feat: i18n and final QA
* fix: lint
* feat: QA
* fix: lint
* fix: merge conflicts
* fix: intl
* fix: blue hover
* fix: transfers page
* feat: surface variables & gradients
* feat: text vars
* fix: lint
* fix: intl
* feat: stages
* fix: lint
* feat: region selection
* feat: method selection btns
* fix: flex col on transactions
* feat: hook up method selection to ctx
* feat: muralpay kyc stage info
* 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
* feat: progress
* fix: broken tax form stage logic
* polish: tax form stage and method selection stage layout
* add mural pay fees API
* Work on payout fee API
* Fees API for more payment methods
* Fix CI
* polish: muralpay qa
* refactor: clean up combobox component
* polish: change from critical -> warning admonition in MuralpayDetailsStage
* Temporarily disable Venmo and PayPal methods from frontend
* polish: clean up transaction component & page
* polish: navbar qa, text color-contrast in chips type buttonstyled, mb on rev/index.vue page
* fix: incorrectly using available balance as tax form withdraw limit after tax forms submitted
* wip: counterparties
* Start on counterparties and payment methods API
* polish: combobox component
* polish: fix broken scroll logic using a composable & web:fix
* fix: lint
* polish: various QA fixes
* feat: hook up with backend (wip)
* feat: draft muralpay rails dynamic logic
* polish: modify rails to support backend changes
* Mural Pay multiple methods when fetching
* Don't send supported_countries to frontend
* Mural Pay multiple methods when fetching
* Don't send supported_countries to frontend
* feat: fees & methods endpoint hookup
* chore: remove duplicates fix
* polish: qa changes + figma match
* Add countries to muralpay fiat methods
* Compile fix
* Add exchange rate info to fees endpoint
* Add fees to premium Tremendous options
* polish: i18n and better document type dropdown -> id input labels
* feat: tremendous
* fix: lint & i18n
* feat: reintroduce tin mismatch logic to index.vue
* polish: qa
* fix: i18n
* feat: remove teleport dropdown menu - combobox should be used
* fix: lint
* fix: jsdoc
* feat: checkbox for reward program terms
* Add delivery email field to Tremendous payouts
* Add Tremendous product category to payout methods
* Add bank details API to muralpay
* Fix CI
* Fix CI
* polish: qa changes
* feat: i18n pass
* feat: deduplicate methods endpoint & fix i18n issues
* chore: deduplicate i18n strings into common-messages.ts
* fix: lint
* fix: i18n
* feat: estimates
* polish: more QA
* Remove prepaid visa, compute fees properly for Tremendous methods
* Add more details to Tremendous errors
* feat: withdraw endpoint impl & internals refactor
* Add more details to Tremendous errors
* feat: completion stage
* Add fees to Mural
* feat: transactions page match figma
* fix: i18n
* polish: QA changes
* polish: qa
* Payout history route and bank details
* polish: autofill and requirements checks
* fix: i18n + lint
* fix: fiat rail fees
* polish: move scroll fade stuff into NewModal rather than just CreatorWithdrawModal
* feat: simplify action btn logic & tax form error
* fix: tax -> Tax form
* Re-add legacy PayPal/Venmo options for US
* feat: mobile responsiveness fixes for modal
* fix: responsiveness issues
* feat: navstack responsiveness
* fix: responsiveness
* move the mural bank details route
* fix: generated state cleanup & bank details input
* fix: lint & i18n
* Add utoipa support to payout endpoints
* address some PR comments
* polish: qa
* add CORS to new utoipa routes
* feat: legacy paypal/venmo stage
* polish: reset amount on back qa
* revert: navstack mr changes
* polish: loading indicator on method selection stage
* fix: paypal modal doesnt reopen after auth
* fix: lint & i18n
* fix: paypal flow
* polish: qa changes
* fix: gitignore
* polish: qa fixes
* fix: payouts_available in payouts.rs
* fix: bug when limit is zero
* polish: qa changes
* fix: qa stuff & muralpay sub-division fix
* Immediately approve mural payouts
* Add currency support to Tremendous payouts
* Currency forex
* add forex to tremendous fee request
* polish: qa & currency support for paypal tremendous
* polish: fx qa
* feat: demo mode flag
* fix: i18n & padding issues
* polish: qa changes
* fix: ml
* Add Mural balance to bank balance info
* polish: show warning for paypal international USD withdrawals + more currencies
* Add more Tremendous currencies support
* fix: colors on balance bars
* fix: empty states
* fix: pl-8 mobile issue
* fix: hide see all
* Transaction payouts available use the correct date
* Address my own review comment
* Address PR comments
* Change Mural withdrawal limit to 3k
* fix: empty state + paypal warning
* maybe fix tremendous gift cards
* Change how Mural minimum withdrawals are calculated
* Tweak min/max withdrawal values
* fix: segment brightness
* fix: min & max for muralpay & legacy paypal
* Fix some icon issues
* more issues
* fix user menu
* fix: remove + network
---------
Signed-off-by: Calum H. <contact@cal.engineer >
Co-authored-by: Prospector <6166773+Prospector@users.noreply.github.com >
Co-authored-by: aecsocket <aecsocket@tutanota.com >
Co-authored-by: Alejandro González <me@alegon.dev >
2025-11-03 15:15:25 -08:00
François-Xavier Talbot
92698e4bb5
Update tax change notification timings ( #4706 )
2025-11-03 22:15:16 +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
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
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
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
Alejandro González
6dbd1e5236
fix(labrinth): make orgs with a single user and only approved projects visible to non-logged-in people ( #4557 )
...
I made a typo on PR https://github.com/modrinth/code/pull/4426 by making
the corresponding SQL query filter by projects with an unexisting
`public` status, instead of `approved`. During my testing, I used the
`archived` status, so I didn't notice it back then.
2025-10-15 18:16:44 +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
Prospector
e9735bd9ba
Revert "Analytics backend V2 ( #4408 )" ( #4524 )
...
This reverts commit 6919c8dea9 .
2025-10-08 19:01:32 +00:00
aecsocket
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
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
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
beb1bdb31f
Skip synchronizing transactions to Anrok if missing payment intent ID ( #4446 )
...
* Skip succeeded txns with no payment platform ID
* chore: query cache, clippy, fmt
2025-09-30 14:36:41 +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
Emma Alexia
324ad65d7c
Fix user deletion with new notification_deliveries table ( #4437 )
2025-09-29 18:04:22 +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
Alejandro González
bb9ce52c9d
feat(labrinth): hide orgs without a purpose, re-enable organization creation ( #4426 )
...
* chore(labrinth): set `DELPHI_URL` to a valid default in `.env.local`
* feat(labrinth): make orgs not publicly visible until they meet some conditions
* Revert "Org disabled frontend (#4424 )"
This reverts commit 2492b11ec0 .
* changelog: update for re-enabling organization creation
* chore: run `sqlx prepare`
* chore(labrinth): tweak tests to work with new org changes
* tweak: apply @triphora's suggestion
Co-authored-by: Emma Alexia <emma@modrinth.com >
Signed-off-by: Alejandro González <7822554+AlexTMjugador@users.noreply.github.com >
* tweak: document `is_visible_organization` relationship with `Project#is_searchable`
---------
Signed-off-by: Alejandro González <7822554+AlexTMjugador@users.noreply.github.com >
Co-authored-by: Emma Alexia <emma@modrinth.com >
2025-09-26 15:42:53 +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
47020f34b6
Tax compliance adjustments ( #4414 )
...
* tax compliance adjustments
* chore: query cache, clippy, fmt
2025-09-25 11:02:33 +00:00
François-Xavier Talbot
71d63fbe17
Fix version upload for popular projects ( #4410 )
...
* Only notify users that exist
* chore: query cache, clippy, fmt
2025-09-22 15:12:17 -07: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
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
Emma Alexia
c017038f71
Fix error when trying to delete user with uploaded images ( #4295 )
...
* Fix error when trying to delete user with uploaded images
`{"error":"database_error","description":"Database Error: Error while interacting with the database: error returned from database: update or delete on table \"users\" violates foreign key constraint \"uploaded_images_owner_id_fkey\" on table \"uploaded_images\""}`
* Update certain things to use Ghost instead of deleting entirely
* Fix mistake
2025-09-06 23:05:34 +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
Emma Alexia
bcf46d440b
Count failed payments as "open" charges ( #4013 )
...
This allows people to cancel failed payments, currently it fails with error "There is no open charge for this subscription"
2025-07-19 14:33:37 +00: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
Jai Agrawal
cf767c7ef2
Fix platform revenue route ( #3857 )
2025-06-28 21:55:01 +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