aecsocket
5c4c30e514
wip
2026-08-04 14:17:50 +01: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
aecsocket
c6ef10e798
Incremental search indexing ( #6453 )
...
* wip: initial kafka support
* wip: kafka search queue
* wip: kafka consumer
* wip: create/delete docs
* reindexing works
* reindex in more places
* also incrementally update server pings
* cleanup
* tombi
* fix ci
* update tombi
* prepare
* fix ci
* fix
* fix PLEASE
* 🙏
* add route to force reindex project
2026-06-21 10:03:20 +00:00
aecsocket
c29973ec1a
Pride 26 campaign backend integration ( #6254 )
...
* wip: pride 2026 webhooks and stuff
* setup webhook and link to user
* fix up code
* improve donation resolution
* Pride 26 campaign
* idempotency
* wip: tiltify
* fix
* redis caching
* add num donators
* fix
* Revert openapi
* Prepare
* improve oauth token gen code
2026-05-30 19:21:33 +00:00
aecsocket
ca1b36efde
Analytics request loader and game version validation ( #6064 )
...
* Analytics request loader and game version validation
* tweak agents
* factor tags into its own util
* lock cache refresh to avoid cache stampede
* Make analytics fields opptional
2026-05-11 14:45:50 +00:00
73abe272d1
Harden minecraft-server-play analytics ( #5484 )
...
* Harden minecraft-server-play analytics
* Verify based on mc token
* Fail for non-server projects
* Nitpicks and factor out HTTP client
* Allow passing old minecraft_uuid field for clients
* Remove server play analytics test since it relies on auth against Minecraft API which I don't want to mock :(
* Switch to using hasJoined for uuid validation
* Fix formatting
* Fix sessionserver status code
* Ensure profile name and queried username matches
* replace some wrap_request_errs with internal errs
* add HTTP client into web::Data
* short timeout on client-side session join query
* further fixes
* sqlx prepare
* fix clippy
---------
Co-authored-by: Creeperkatze <178587183+Creeperkatze@users.noreply.github.com >
Co-authored-by: aecsocket <aecsocket@tutanota.com >
2026-03-09 16:26:15 +00:00
aecsocket
ec81bcb13c
Improve environment variable handling and reading ( #5389 )
...
* wip: better env var reading
* move most env vars to env.rs
* migrate more env vars
* more migration
* more migrations
* More migration
* 🦀 dotenvy is gone (almost)
* 🦀 dotenvy is gone 🦀
* Fix mural source account env var handling
* Remove defaults from admin key vars
* dummy commit to update github pr
* fix ci
2026-02-19 17:33:41 +00:00
aecsocket
e072f2237b
Improve Labrinth Sentry integration ( #5174 )
...
* Improve Sentry integration
* remove debug routes
* fix ci
* sentry tracing stuff
* Add spans to Sentry logging
* Fix CI
* Redis op instrumentation
* pr comments
2026-01-21 18:59:05 +00:00
François-Xavier Talbot
4b17eb5d35
Gotenberg/PDF gen implementation ( #4574 )
...
* Gotenberg/PDF gen implementation
* Security, PDF type enum, propagate client
* chore: query cache, clippy, fmt
* clippy fixes + tombi
* Update env example, add GOTENBERG_CALLBACK_URL
* Remove test code
* Fix .env, docker-compose
* Update purpose of payment
* Add internal networking guards to gotenberg webhooks
* Fix error
* Fix lint
2025-10-19 23:56:26 +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
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
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
Geometrically
3fa07f64d3
Ratelimit acct creation ( #2933 )
2024-11-10 22:47:58 -08:00
Jai A
e3a3379615
move to monorepo dir
2024-10-16 14:11:42 -07:00