François-Xavier Talbot
a9641dadff
Meilisearch task management, improved task o11y, timeout & batch size adjustments ( #5158 )
...
* Better observability
* Search management routes
* Probably fluke
* Use utoipa routes
* Update apps/labrinth/src/routes/internal/search.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/search/indexing/mod.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/routes/internal/search.rs
Co-authored-by: aecsocket <aecsocket@tutanota.com >
Signed-off-by: François-Xavier Talbot <108630700+fetchfern@users.noreply.github.com >
* Fix
---------
Signed-off-by: François-Xavier Talbot <108630700+fetchfern@users.noreply.github.com >
Co-authored-by: aecsocket <aecsocket@tutanota.com >
2026-01-20 19:06:37 +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
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
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
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
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
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
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
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
Josiah Glosson
62de07e4e6
Version updates ( #3626 )
...
* Update some Labrinth dependencies
* Update some Labrinth dependencies
* Update some Labrinth dependencies
* Update zip in Labrinth
* Update itertools in Labrinth
* Update validator in labrinth
* Update thiserror in labrinth
* Update rust_decimal, redis, and deadpool-redis in labrinth
* Update totp-rs and spdx in labrinth
* Update maxminddb and tar in labrinth
* Update sentry and sentry-actix in labrinth
* Update image in labrinth
* Update lettre in labrinth
* Update derive-new and rust_iso3166 in labrinth
* Update async-stripe and json-patch in labrinth
* Update clap and iana-time-zone in labrinth
* Update labrinth to Rust 2024
* Cargo fmt
* Just do a full cargo update
* Update daedelus to Rust 2024
* Update daedelus_client to Rust 2024
* Set the formatting edition to 2024
* Fix formatting
IntelliJ messed up my formatting
2025-05-09 12:27:55 +00: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