François-Xavier Talbot and GitHub
224c28f29d
feat: more details linked account info for support/moderation ( #6897 )
...
* feat: show discord + steam ID + github profile in "Show details" user modal
* pnpm intl:extract
2026-07-27 19:20:38 +00:00
François-Xavier Talbot and GitHub
20adb0f16a
fix(labrinth): let through emails when neverbounce hangs or fails ( #6898 )
...
* fix(labrinth): let through emails when neverbounce hangs or fails
* chore(ci): stack size
2026-07-27 18:10:54 +00:00
François-Xavier Talbot and GitHub
2cf71a53f2
chore(ci): increase rust stack size ( #6874 )
2026-07-26 00:11:08 +00:00
François-Xavier Talbot and GitHub
944f99a14e
chore(labrinth): add extra logging on muralpay failed txn ( #6870 )
2026-07-24 23:53:37 +02:00
François-Xavier Talbot and GitHub
b4d681e713
feat(labrinth): Redis Cluster ( #6771 )
...
* chore(labrinth): bump to redis 1.4.1
* feat(labrinth): redis cluster
* chore: cleanup
* feat(labrinth): cache locking
* fix(labrinth): clippy
* chore(labrinth): cleanup env, remove postcard support
* chore(ci): fix test env for labrinth
* chore(labrinth): bump all key versions
* chore(labrinth): improve redis key identities handling
* chore(labrinth): simplify deadline handling
* chore(labrinth): remove unused lease tracking
* chore(labrinth): remove distributed cache locking for now
* chore(labrinth): improve redis backend init error
* feat(labrinth): expose redis read replica strategy
* chore(ci): remove other connection mode tests
* chore: split xredis crate
* feat(xredis): primaries routing
* chore: tombi fmt
* chore: clippy
* chore: update query cache
2026-07-23 11:35:02 +02:00
François-Xavier Talbot and GitHub
96e2d95d02
feat(labrinth): route to update subscriptions for archon ( #6811 )
...
* feat(labrinth): add /_internal/billing/subscriptions/manager/update_many
* chore: fixes
* chore: clippy
* chore: fixes
2026-07-22 16:18:08 +00:00
François-Xavier Talbot and GitHub
79013c21c2
feat(app): handle rate limits ( #6790 )
...
* feat(app): handle rate limits + governor rate limits
* feat(app): add hysteresis to rate limiter
* fix(ci): make sure sccache directory exists if mount fail
* fix(ci): also apply sccache mount fix to daedalus-docker
* fix(ci): sudo
2026-07-21 11:33:01 -07:00
François-Xavier Talbot and GitHub
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
François-Xavier Talbot and GitHub
7144f08f0f
feat: require verified email to publish, to prevent spam ( #6777 )
...
* feat: require verified email to create projects, collections and organizations
* fix(labrinth): fix tests
* chore: fmt
* chore: intl
2026-07-20 02:51:16 +00:00
François-Xavier Talbot and GitHub
c579925f03
feat: honeypot signup field ( #6776 )
...
feat: account consent
2026-07-19 21:54:23 +00:00
François-Xavier Talbot and GitHub
6b569e4ee4
redis compression ( #6769 )
...
* feat(labrinth): encode/decode redis values with postcard, add version in namespaces
* chore(labrinth): split cache ex special cases without version
* chore(labrinth): simplify get_many
* fix: tombi
* feat(labrinth): compression support
* chore(labrinth): cleanup redis ser/de
* fix(labrinth): use get_deserialized in tests
2026-07-19 01:25:00 +02:00
François-Xavier Talbot and GitHub
6b62e3b480
fix(labrinth): register debug routes ( #6766 )
2026-07-19 01:24:52 +02:00
François-Xavier Talbot and GitHub
9e1e8788e2
feat(labrinth): return tax amount in user subscription listing ( #6496 )
...
* feat(labrinth): include next charge's tax amount
* chore(api-client): add next_charge_tax_amount
* fix
2026-07-13 17:06:22 +00:00
François-Xavier Talbot and GitHub
407641ee7c
fix(labrinth): serde(default) new search document fields ( #6656 )
2026-07-07 15:28:54 -07:00
François-Xavier Talbot and GitHub
3ed75a146a
fix(labrinth): fix routing config for /v3/content ( #6649 )
2026-07-07 16:48:14 +00:00
François-Xavier Talbot and GitHub
517c3d2d72
fix(labrinth): fix prefix stripping in mrpack scanning ( #6646 )
2026-07-07 01:31:07 +00:00
François-Xavier Talbot and GitHub
977bb2ff58
ci: fix ( #6640 )
...
* ci: use apt
* fix(ci): sudo
* bruhj
2026-07-06 17:51:09 +00:00
4a6fa9fc3d
feat: better api docs ( #6586 )
...
* feat: docs
* fix tombi
* chore: fix some of the routes rendering with missing /
* response schemas
* fix: restore labrinth docs routes
* Fix path parameter docs in routes
* remove utoipa-actix-web
* consistency
* improve version intros
* improve formatting, examples
* better hash examples, move openapi stuff to openapi.rs
* more utoipa param fixes
* request body docs
* chore: remove moderation route from v2, remove ingest & webhooks from v3 spec
* fixes
* chore: tweak sources titles
* fix
* fix test
* improve examples
* increase compiler spawned thread stack size
* remove unused tests & script
* test
* bro what
* fix
---------
Co-authored-by: aecsocket <43144841+aecsocket@users.noreply.github.com >
2026-07-04 14:19:21 +00:00
François-Xavier Talbot and GitHub
d5be2bd739
fix(labrinth): include SharedInstanceInvite notifications for ws ( #6603 )
...
* fix(labrinth): include SharedInstanceInvite notifications for ws
* chore: fmt
2026-07-03 17:06:58 +00:00
François-Xavier Talbot and GitHub
45c417e406
fix query cache ( #6488 )
2026-06-24 06:42:14 +02:00
François-Xavier Talbot and GitHub
47c60788ff
attributions fixes ( #6487 )
...
* feat(labrinth): begin & commit one transaction per file scans
* chore(labrinth): use ro pool for the query
2026-06-24 06:19:10 +02:00
François-Xavier Talbot and GitHub
486b467af2
cont: fix(frontend): dont assume wss for panel pingtest as well ( #6421 )
...
* fix(frontend): dont assume wss for panel pingtest as well
* fix(frontend): wss assumptions
* chore: fix export
* chore: prettier
2026-06-17 22:54:09 +00:00
François-Xavier Talbot and GitHub
5ed322d281
feat(frontend): don't assume secure protocol for kyros websocket/fs ( #6420 )
...
* feat(frontend): don't assume https as websocket/fs protocol
* fix(frontend): actually do the same for websocket
* fix(frontend): don't strip ws path
2026-06-16 21:39:38 +00:00
François-Xavier Talbot and GitHub
3aaa2ef071
feat(app-backend): key circuit breaker by URI path pattern ( #6383 )
...
* feat(app-lib): split `FetchFence` on base URI path
* chore: fmt
* fix(app-lib): fix test timing
2026-06-16 18:49:06 +00:00
François-Xavier Talbot and GitHub
b72bc18a6b
Add moderator notes to users & organizations ( #6094 )
...
* Moderator notes
* Use macros
* Improve queries
* Query cache
* Accept missing If-Match if no existing note
* Undo v2 compat changes
* Fix tests
* Remove CONSTRAINT CHECK on moderation_notes
* Respect 1-indexing on moderation_notes.version default in DB migration
* Remove double Option
* .body("") -> .finish()
* .remove() -> .get().clone()
* cloned
* Review comments
* moderation_notes everywhere
2026-05-16 16:30:36 +00:00
François-Xavier Talbot and GitHub
e9eb98f97e
push: true ( #6096 )
2026-05-14 00:54:37 +02:00
François-Xavier Talbot and GitHub
71559d62c8
fix app build ( #6086 )
2026-05-12 13:30:13 -07:00
François-Xavier Talbot and GitHub
264aade726
Use AWS SDK ( #5959 )
2026-05-01 09:58:26 +00:00
François-Xavier Talbot and GitHub
281bf066de
Fix typo lint ( #5860 )
2026-04-19 04:40:41 +00:00
François-Xavier Talbot and GitHub
90deb7310e
Fix daedalus NeoForge ( #5713 )
...
* Support NeoForge version for year-based Minecraft versions
* Run on CI
* Fix
* Fix branch
* Undo branch switch
2026-03-30 17:53:29 +00:00
François-Xavier Talbot and GitHub
b68aeddedc
hosting: Copy ID button for backups when developer mode is on ( #5681 )
...
* Copy ID button in backups tab
* Remove codex slop
2026-03-27 00:18:33 +00:00
François-Xavier Talbot and GitHub
bf24ed8d12
Add feature flag to force Archon requests to be traced ( #5666 )
2026-03-26 06:34:04 +00:00
François-Xavier Talbot and GitHub
7b3471944d
hosting: "Reset to onboarding" support-only action ( #5659 )
...
* Reset to onboarding button
* Lint
* Intl
2026-03-25 14:50:31 +00:00
François-Xavier Talbot and GitHub
0aecfa3140
hosting: support java 25 ( #5654 )
...
* Add Java 25, handle new version format
* Changelog
* Revert "Changelog"
This reverts commit 0c1c7e2fe8 .
2026-03-24 20:39:04 +00:00
François-Xavier Talbot and GitHub
789ec8966c
Add refresh button in files tab behind feature flag ( #5431 )
2026-03-09 19:16:01 +00:00
François-Xavier Talbot and GitHub
f81f951814
Don't persist read search client across reqs ( #5277 )
2026-02-02 14:09:00 +00:00
François-Xavier Talbot and GitHub
345ada27c0
Increase/make configurable search timeouts ( #5261 )
...
* Increase default operation timeout, make it configurable via SEARCH_OPERATION_TIMEOUT
* Don't update index settings when unneeded
* Add to env local
2026-02-02 13:27:29 +00:00
François-Xavier Talbot and GitHub
e3395a7366
Development app builds ( #5255 )
...
* Workflow changes
* Propagate app_identifier via State
* Remove old updater stuff
* Remove patch file
* Remove unused binding
* Fix application loading
* Don't sign windows binaries by default
* Remove the damn emojis
* Figure out where windows artifacts are
* Fix windows artifacts
2026-02-02 13:10:23 +00:00
François-Xavier Talbot and GitHub
f998a8dca5
Allow node transfer field to recv more than 1 node ( #5220 )
2026-01-26 22:49:21 +00:00
François-Xavier Talbot and GitHub
2d7e87a4cb
Local cache lock ( #5193 )
2026-01-24 00:35:46 +01:00
François-Xavier Talbot and GitHub
79217e78b4
Theseus circuit breaker ( #5196 )
...
* Impl request fence
* Reduce max FETCH_ATTEMPTS
* Tweak fail threshold & window
* Check block status every retry iteration
* Fix fmt
* Fix fmt 2
2026-01-23 20:28:50 +00:00
François-Xavier Talbot and GitHub
5c29a8c7dd
Batched search indexing ( #5191 )
...
* Use RO pool for search indexing
* Batched search indexing that actually works
* Query cache
2026-01-23 12:32:02 +00:00
François-Xavier Talbot and GitHub
ca1d66d070
Increase index swap timeout, better index swap task o11y ( #5171 )
2026-01-21 15:54:34 +00:00
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
François-Xavier Talbot and GitHub
2c096a85d6
Better observability for search indexing, fix remove_documents ( #5143 )
...
* Better observability for search timeout, fix remove_documents
* Log client idx
2026-01-16 21:51:51 +00:00
François-Xavier Talbot and GitHub
1dd1629884
Server transfer admin UI ( #5116 )
...
* Initial frontend
* doc for opus (TO REMOVE)
* Make better
* Clarified language
* Remove agent docs
* No scss
* Fmt
* Remove i18n
* Fmt
* Add transferred node tagging
2026-01-15 20:43:37 +00:00
François-Xavier Talbot and GitHub
3ffa78aa07
Allow many Meilisearch write addrs ( #5102 )
...
* Write to many Meilisearch write addrs
* Keep client results ordered
* Attach Read Meilisearch client to actix data
* Load balanced meilisearch Compose profile
* Nginx config (round_robin)
* Fix nginx
* Meilisearch + nginx in same net
* Fix env vars example
* Fix env example again
* Fix env again
* Use try_collect with FuturesOrdered
* maybe fix remove_documents
* Clippy
2026-01-15 01:38:09 +01:00
François-Xavier Talbot and GitHub
3bf5a6ebec
Allow projects in tech review to still show up in moderation queue ( #5068 )
...
* Don't prevent projects from appearing in moderation queue if there are pending delphi reports
* Update query cache
2026-01-08 20:47:32 +01:00
François-Xavier Talbot and GitHub
ff222aa168
PG/RedisPool configuration/o11y improvements ( #5032 )
...
* Don't retain Redis connections while doing database queries
* Optional REDIS_WAIT_TIMEOUT_MS
* Attach more data to CacheTimeout errrors
* Fix locks_released
* Fmt
* Set default REDIS_WAIT_TIMEOUT_MS to 15s
* Fix lint
* Close Redis connections idle for > 5 minutes
* Exponential backoff on cache spin lock
2026-01-08 20:47:13 +01:00
François-Xavier Talbot and GitHub
6221fe5e08
Fix build with updater feature ( #5067 )
2026-01-08 02:38:02 +00:00
François-Xavier Talbot and GitHub
4a8f882063
Fix underflow in QuickPlay compat check ( #5065 )
2026-01-08 02:14:05 +00:00
François-Xavier Talbot and GitHub
17db55a0bc
Include OS in theseus User-Agent ( #5046 )
2026-01-08 02:11:18 +00:00
François-Xavier Talbot and GitHub
a1d9268d00
Fix daedalus ( #5064 )
...
* Support default-user-jvm arguments type
* Use this branch's container
* Allow no rules in Ruled argument variant
* Run main
2026-01-08 01:43:47 +00:00
François-Xavier Talbot and GitHub
14d227a1a3
Revert "Use backup physical_id for progress updates matching" ( #5060 )
...
* Revert "Use backup physical_id for progress updates matching"
This reverts commit de2f6275b9 .
* Fix page crash on backups page reload
2026-01-07 22:28:57 +00:00
François-Xavier Talbot and GitHub
3fd6ce1b6d
Use fill v3 API for fetching paper build versions ( #5063 )
2026-01-07 22:27:46 +00:00
François-Xavier Talbot and GitHub
7eb1b38cc7
Support updated servers backup route schema, remove backup locking ( #5053 )
...
* Use backup physical_id for progress updates matching
* Remove locking
* Fmt
2026-01-06 01:03:46 +00:00
François-Xavier Talbot and GitHub
9924faab84
Fix tech rev rejection query ( #4963 )
2025-12-29 21:06:47 +00:00
François-Xavier Talbot and GitHub
8fb38ba0f2
Remove tag="type" on PaymentRequestMetadata ( #4931 )
...
This would conflict with the flattened kind: PaymentRequestMetadataKind
enum, which itself is internally tagged with "type", leading to two
"type" fields being serialized, confusing the deserializer.
Deserialization would fail, be silenced in the stripe webhook and lead
to the incorrect region being assigned to a server.
2025-12-19 00:52:43 +01:00
François-Xavier Talbot and GitHub
e837d9fa30
Add route to reprocess a refund charge's tax record ( #4791 )
2025-11-18 11:36:55 +00:00
François-Xavier Talbot and GitHub
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
François-Xavier Talbot and GitHub
92698e4bb5
Update tax change notification timings ( #4706 )
2025-11-03 22:15:16 +00:00
François-Xavier Talbot and GitHub
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 and GitHub
a4015d9df3
Fix v1 servers handling ( #4596 )
2025-10-21 06:40:10 +00:00
François-Xavier Talbot and GitHub
977de0e18a
Fix MaxMind ( #4595 )
...
* add maxmind to app data
* add back maxmind account id check
2025-10-21 00:24:47 +02:00
François-Xavier Talbot and GitHub
c379e4b173
admin/credit: don't credit unprovisioned subscriptions ( #4594 )
...
* Remove pointless sorting
* Filter subscriptions by labrinth's provisioned state
2025-10-20 20:31:20 +00:00
François-Xavier Talbot and GitHub
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 and GitHub
79502a19d6
bump clickhouse, disable validation ( #4593 )
...
* bump clickhouse, disable validation
* tombi fmt
2025-10-20 17:30:28 +00:00
François-Xavier Talbot and GitHub
3dbfd69bdd
Fix clickhouse ( #4592 )
2025-10-20 19:07:23 +02:00
François-Xavier Talbot and GitHub
859d7f57cf
Downgrade CH dep ( #4591 )
2025-10-20 18:50:16 +02:00
François-Xavier Talbot and GitHub
8a30b7978d
Support ctoken_ in PATCH subscription ( #4578 )
2025-10-20 10:03:20 +00:00
François-Xavier Talbot and GitHub
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
7796273529
Clearer error on TIN mismatch ( #4579 )
...
* Clearer error on TIN mismatch
* Remove ctoken code (how did that end up there)
* polish: frontend for TIN/SSN mismatch
* fix: lint
* polish: only banner + change text
* fix: logic
* fix: lint
---------
Co-authored-by: Calum H. (IMB11) <contact@cal.engineer >
2025-10-19 21:03:21 +00:00
François-Xavier Talbot and GitHub
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
François-Xavier Talbot and GitHub
2a61916d1e
Mark charges from stripe customers with no address as unresolvable ( #4521 )
2025-10-11 18:24:21 +00:00
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 and GitHub
c88bdda3e6
More flexible datetime parsing ( #4533 )
2025-10-09 20:01:07 +00:00
François-Xavier Talbot and GitHub
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 and GitHub
a13647b9e2
Negate refund amount ( #4481 )
2025-10-03 23:29:22 +00:00
François-Xavier Talbot and GitHub
bea0ba017c
Fix interactive payments in non-USD currencies ( #4476 )
...
* Use price's currency rather than inferred stripe currency in PaymentIntent
* Correctly convert to stripe::Currency
* Include original currency code in error message
2025-10-03 13:26:06 +00:00
François-Xavier Talbot and GitHub
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 and GitHub
24504cb94d
Fix CI ( #4477 )
2025-10-03 12:35:43 +00:00
François-Xavier Talbot and GitHub
9315af9b20
Only skip attaching payment method when using ctoken ( #4460 )
2025-09-30 18:41:17 -07:00
François-Xavier Talbot and GitHub
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 and GitHub
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 and GitHub
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 and GitHub
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 and GitHub
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 and GitHub
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 and GitHub
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 and GitHub
e6edf07eae
Fill variables for subject line ( #4415 )
2025-09-24 10:52:43 +00:00
François-Xavier Talbot and GitHub
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
François-Xavier Talbot and GitHub
f33efed91b
Less emails per transactinos ( #4406 )
2025-09-22 19:40:59 +00:00
François-Xavier Talbot and GitHub
d41b31c775
Fix track1099 ( #4405 )
...
* don't parse datetime
* fix import
* update comments
2025-09-22 18:08:22 +00:00
François-Xavier Talbot and GitHub
afcdb1d0a1
more loggging ( #4404 )
2025-09-22 16:53:27 +00:00
François-Xavier Talbot and GitHub
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
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 e0d6614afe .
* 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 and GitHub
3fc55184a7
Support alternative read-replica PgPool ( #4374 )
...
* Add ReadOnlyPgPool
* Clippy, fmt
2025-09-14 15:44:52 +00:00
François-Xavier Talbot and GitHub
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 and GitHub
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 and GitHub
ea607c1a04
Include Tremendous image_logo_url ( #4349 )
2025-09-08 12:34:51 +00:00