Repository navigation
v1.54.0
What's Changed
- feat(billing): Billing engine v2 date services by @brunomiguelpinto in #6267
- refactor(catalog): stop reading pricing_type and transitional plan_id by @rsempe in #6335
- feat(billing): add metered segment source by @tiagolupepic in #6292
- chore: Remove payment-gated-subscriptions FF by @ancorcruz in #5827
- chore(db): drop retired pricing_type and plan_id by @rsempe in #6337
- refactor(catalog): drop stale pricing_type/plan_id ignores by @rsempe in #6338
- refactor(catalog): move catalog serializers to V2 namespace by @rsempe in #6339
- feat(events): filter billing segments by @tiagolupepic in #6296
- feat(catalog): update a pending contract by @rsempe in #6340
- feat(catalog): delete a catalog plan and expose plan counts by @rsempe in #6345
- feat(contracts): add billing settings by @tiagolupepic in #6334
- refactor(fees): centralize amount calculations by @tiagolupepic in #6343
- refactor(fees): share and cache filter matching by @tiagolupepic in #6347
- fix(catalog): lock code and currency on a contracted plan by @rsempe in #6352
- refactor(billing): introduce Billing::Context by @tiagolupepic in #6354
- refactor(catalog): remove wallet_targetable from rate cards by @rsempe in #6353
- chore(db): drop the rate_cards.wallet_targetable column by @rsempe in #6355
- feat(billing): scaffold fixed segment processing by @tiagolupepic in #6349
- feat(account-tree): add table and model setup for usage_attribution_types by @lovrocolic in #6332
- feat(account-tree): Add usage_attribution_values table and model by @lovrocolic in #6342
- feat(organization): Ignore pre_filter_events column by @vincent-pochet in #6360
- fix: permit payment method in payment request controller by @lovrocolic in #6351
- misc(clickhouse): remove enriched store migration by @vincent-pochet in #6363
- misc(clickhouse): remove enriched expanded dedup by @vincent-pochet in #6365
- misc(clickhouse): stop routing to the enriched store by @vincent-pochet in #6368
- feat(streaming): store where an organization's events should be streamed by @toommz in #6297
- feat(streaming): deliver current usage to kinesis on wallet refresh by @toommz in #6298
- feat(streaming): make delivery failures and silence observable by @toommz in #6299
- misc(clickhouse): remove enriched aggregation flag by @vincent-pochet in #6369
- perf(plans): Optimize subscription and invoice counts by @annvelents in #6362
- fix: Handle invoice preview fee timestamps by @annvelents in #6376
- fix: Make contract billing migration retryable by @tiagolupepic in #6371
- fix(catalog): forbid hiding fees on a fixed rate card by @rsempe in #6359
- feat(events): accept external_contract_id on ingestion by @rsempe in #6372
- misc(clickhouse): remove the enriched events store by @vincent-pochet in #6370
- fix(usage): minimize ignored charge filters [ING-637] by @vincent-pochet in #6382
- fix(events): replay queries ClickHouse cannot parse [ING-638] by @vincent-pochet in #6383
- fix: correct progressive billing coupon credits by @annvelents in #6356
- fix(plans): scope draft invoice refresh by @toommz in #6378
- misc(db): drop the enriched store migration tables by @vincent-pochet in #6366
- [ING-483] misc(cache): Stop eager charge cache expiration by @vincent-pochet in #5977
- feat(smtp): Configure auth and STARTTLS by @lago-claude-ai-agent[bot] in #6282
- refactor(product): rename product_type usage to metered by @rsempe in #6381
- feat(rate-cards): filter by products and product categories by @rsempe in #6386
- misc(cache): remove lazy charge usage cache flag by @vincent-pochet in #6390
- fix(catalog): seed metered product type by @ansmonjol in #6392
- feat(streaming): pass the external id when assuming the kinesis writer role by @toommz in #6391
- fix(payments-syncs): Support payments sync on async resolution paths by @osmarluz in #5982
- refactor(events): mint sibling stores from the store by @vincent-pochet in #6394
- feat(rate-cards): reject backdated rates by @brunomiguelpinto in #6395
- fix(rate-cards): make regroup_paid_fees nullable (null = standalone) by @rsempe in #6398
- [ING-684] perf(db): tune events analyze trigger by @vincent-pochet in #6399
- feat(catalog): create product metered fees from billing segments by @tiagolupepic in #6393
- fix(billing): skip no-op fixed charge unit updates by @annvelents in #6322
- [ING-504] fix(alerts): report duplicate wallet alert codes on the code field by @aquinofb in #6361
- fix(wallet): preserve billable metric limitations when applies_to is omitted by @lago-claude-ai-agent[bot] in #6094
- fix(wallets): resolve active wallet on code lookup by @lago-claude-ai-agent[bot] in #6163
- fix(exports): emit deleted invoices instead of filtering them out by @mikeh-lago in #6273
- fix(exports): serialize the charge on fixed-charge fees by @mikeh-lago in #6274
- feat(account-tree): add create flow for usage_attribution_type resource by @lovrocolic in #6375
- feat(account-tree): add destroy flow for usage attribution types by @lovrocolic in #6377
- fix: Retire forecasted usage endpoints by @mikeh-lago in #6404
- fix(billing): display product fee filters by @tiagolupepic in #6405
- refactor(aggregations): inject the event store [ING-630] by @vincent-pochet in #6261
- feat(account-tree): add update flow for usage attribution types by @lovrocolic in #6384
- feat(usage): add the usage buckets table [ING-586] by @vincent-pochet in #6408
- feat(catalog): enforce a slug-safe code on v2 catalog objects by @rsempe in #6403
- feat(catalog): block metric filter edits that orphan product filters by @rsempe in #6406
- feat(account-tree): add API CRUD actions for usage attribution type by @lovrocolic in #6415
- feat(contracts): expose billing, invoicing & payment settings by @rsempe in #6407
- feat(account-tree): add missing resolvers for usage attribution type resource by @lovrocolic in #6418
- fix(puma): bind control-app to a loopback TCP socket by @IxDay in #6410
- feat: add Dockerfile.staging for the SOC2-hardened build path by @IxDay in #6400
- fix(taxes): skip zero-amount fees in the Anrok tax payload by @annvelents in #6289
- fix(payments): cancel abandoned provider redirects by @brunomiguelpinto in #6416
- [ING-545] feat(alerts): expose notify_on on the dashboard schema by @aquinofb in #6133
- perf(streaming): produce current usage from the wallet refresh by @toommz in #6409
- feat(streaming): report usage per wallet instead of naming one by @toommz in #6411
- feat(streaming): omit charges with no usage from the payload by @toommz in #6412
- feat(currencies): add Tunisian Dinar (TND) support by @vincent-pochet in #6424
- fix(usage): Preserve ClickHouse dynamic cents by @lago-claude-ai-agent[bot] in #6423
- docs: refine testing guidelines by @tiagolupepic in #6425
- feat(usage): serve usage from ClickHouse buckets [ING-586] by @vincent-pochet in #6262
- [ING-466] feat(wallets): accept connections param by @mariohd in #6344
- feat(catalog): wire metered billing through ProcessService by @tiagolupepic in #6396
- feat(contracts): terminate a live contract by @rsempe in #6417
- feat(currencies): add SYP support by @okerx in #6433
- feat(usage): read the pre-aggregated buckets [ING-586] by @vincent-pochet in #6427
- fix: pull hardened bases from GHCR instead of ECR by @IxDay in #6435
- refactor(usage): let a store answer precomputed [ING-586] by @vincent-pochet in #6428
- feat(contracts): add list filters and search by @rsempe in #6419
- chore(events): remove EventsEnrichedExpanded model by @vincent-pochet in #6441
- feat(usage): route current usage to the buckets [ING-586] by @vincent-pochet in #6268
- feat(catalog): add applied rate card mutations by @rsempe in #6432
- fix(usage): keep projected reads off the buckets [ING-631] by @vincent-pochet in #6440
- Let a worker chain through an intermediate role by @koikonom in #6434
- refactor(usage): serve every current usage window [ING-587] by @vincent-pochet in #6439
- fix(stripe-customer-balance): implement auto payment retry for canceled intent with customer balance by @lovrocolic in #6223
- feat(account-tree): add attribution_labels to events_enriched by @lovrocolic in #6421
- feat(contracts): generate externalId when omitted by @rsempe in #6449
- perf(usage): scope the bucket read [ING-587] by @vincent-pochet in #6291
- feat: produce due billing segments by @brunomiguelpinto in #6348
- refactor(billing): use advance billing contexts by @tiagolupepic in #6438
- feat(wallets): refresh wallets from usage triggers [ING-632] by @vincent-pochet in #6453
- refactor: promote hardened Dockerfile to default, keep legacy variant by @IxDay in #6451
- refactor(billing): Use metered items for pay-in-advance by @tiagolupepic in #6414
- chore(console): Remove OTEL info at startup by @jdenquin in #6457
- fix(usage): serve buckets for deduplicating orgs by @vincent-pochet in #6460
- perf(billing): index billing segments awaiting invoicing by @brunomiguelpinto in #6462
- Ing 467 by @mariohd in #6387
- feat(account-tree): switch attribution key from string to array of strings by @lovrocolic in #6458
- feat(wallets): observe the refresh lane [ING-659] by @vincent-pochet in #6456
- [ING-683] feat(wallets): expose connections by @mariohd in #6401
- Feat/cs admin panel by @annvelents in #5396
- feat(billing): Persist billing segments status by @tiagolupepic in #6471
- feat(billing): invoice due billing segments by @brunomiguelpinto in #6461
- misc: add migration that register new webhook event by @lovrocolic in #6473
- feat(catalog): copy plan phases onto contract cards by @rsempe in #6464
- [ING-711] feat(alerts): expose the evaluation state on the dashboard schema by @aquinofb in #6430
- fix(billing): Add specs to cover BillingSegments::CreateService by @tiagolupepic in #6472
- chore(admin): Put admin namespace only for local envs by @jdenquin in #6477
- chore(docker): remove Dockerfile.legacy by @IxDay in #6468
- feat(exports): expose deleted rows to the pipeline by @annvelents in #6284
- refactor(billing): remove unused duration lookup by @tiagolupepic in #6484
- fix(subscriptions): prevent concurrent termination by @endenis in #6485
- feat(catalog): add contracts terminate permission by @rsempe in #6486
- [ING-507] fix(alerts): lock the alert while evaluating by @aquinofb in #6130
- fix(credit-notes): preserve provider tax rates by @lago-claude-ai-agent[bot] in #6481
- misc(clickhouse): Drop events_enriched_expanded by @vincent-pochet in #6475
- perf(usage): pre-filter bucket-served charges by @vincent-pochet in #6466
- feat(billing): bill advance contracts on creation by @brunomiguelpinto in #6476
- feat(account-tree): return structured GQL output applicable for UI rendering by @lovrocolic in #6469
- feat(account-tree): add usage attribution type desc by @lovrocolic in #6492
- Add page numbering to billing PDFs by @lago-claude-ai-agent[bot] in #6489
- feat(usage): compare bucket and events store usage [ING-590] by @vincent-pochet in #6459
- feat(catalog): allow editing active contracts by @rsempe in #6490
- feat(catalog): add contractAppliedRateCards query by @rsempe in #6491
- feat(catalog): filter plan and contract rate cards by @rsempe in #6496
- feat(usage): add a realtime usage eligibility recipe [ING-633] by @vincent-pochet in #6494
- fix(taxes): preserve sub-cent tax details by @lago-claude-ai-agent[bot] in #6497
- fix(billing): Preserve one-off period dates by @lago-claude-ai-agent[bot] in #6207
- feat(plans): order deleted plans after active ones by @lago-claude-ai-agent[bot] in #6033
- fix(catalog): enforce the indefinite phase tail by @rsempe in #6467
- feat(usage): serve max and latest from buckets [ING-729] by @vincent-pochet in #6504
- feat(usage): add precise amount to usage buckets [ING-730] by @vincent-pochet in #6505
- feat(usage): serve dynamic charges from buckets [ING-730] by @vincent-pochet in #6508
- feat(catalog): single end date for contract cards by @rsempe in #6499
- chore(db): drop contract rate card end date by @rsempe in #6500
- feat(webhooks): add high priority webhook queue by @vincent-pochet in #6520
- fix: serialize product fees in invoices by @endenis in #6470
- fix(security): block SSRF to private IPs [INT-295] by @vincent-pochet in #6525
- Ing 462 by @mariohd in #6367
- feat(fees): support products and plans pay-in-advance by @tiagolupepic in #6422
- feat(realtime-usage): serve expression metrics by @vincent-pochet in #6539
- fix(usage): read stream aggregation type names from buckets by @vincent-pochet in #6538
- Ing 463 by @mariohd in #6429
- Ing 713 by @mariohd in #6447
- fix(db): make fee provenance migration retryable by @rsempe in #6540
- refactor(taxes): share mapping and tax setup by @annvelents in #6478
- fix(taxes): use booked provider tax downstream by @annvelents in #6479
- fix(e-invoices): reconcile exported tax totals by @annvelents in #6480
- fix(taxes): group charge fees in provider calls by @annvelents in #6329
- feat(db): enforce retryable concurrent migrations by @tiagolupepic in #6542
- fix(refunds): refund payment request payments by @annvelents in #6541
- fix(charges): price negative volume usage as zero by @jdenquin in #6543
- fix(ci): Detect stale model annotations by @tiagolupepic in #6546
- feat(api): add v2 base controller [BIL-228] by @toommz in #6512
- feat(api): add v2 cursor token [BIL-228] by @toommz in #6533
- feat(api): validate v2 cursor parameters [BIL-228] by @toommz in #6534
- feat(api): add v2 keyset pagination [BIL-228] by @toommz in #6535
- feat(api): add v2 total count [BIL-228] by @toommz in #6536
- perf(db): add v2 catalog cursor indexes [BIL-228] by @toommz in #6513
- fix(filters): bill events on one filter [ING-733] by @vincent-pochet in #6527
- feat(catalog): define rate tiers by upper bound by @rsempe in #6524
- Preserve SSO client secrets on updates by @lago-claude-ai-agent[bot] in #6547
- feat(x402): Add x402 payment type and flags by @osmarluz in #6528
- feat(x402): Add address and payment digest helpers by @osmarluz in #6526
- feat(catalog): allow decimal prorated tiers by @rsempe in #6549
- perf(usage): project from current usage [ING-734] by @vincent-pochet in #6548
- fix(api-logs): Add patch to http_method enum by @aquinofb in #5229
- feat(account-tree): add initial query logic for attributed usage by @lovrocolic in #6507
- feat(x402): Add EVM and Solana chain readers by @osmarluz in #6530
- feat(x402): Add Coinbase CDP facilitator adapter by @osmarluz in #6529
- fix(invoice): format percentage charge rates by @lago-claude-ai-agent[bot] in #6238
- feat(api): cursor paginate v2 products [BIL-228] by @toommz in #6514
- feat(api): cursor paginate v2 catalog [BIL-228] by @toommz in #6515
- feat(api): cursor paginate v2 nested [BIL-228] by @toommz in #6516
- feat(api): return all v2 rate card rates [BIL-228] by @toommz in #6517
- feat(account-tree): add api support for fetching attributed usage by @lovrocolic in #6566
- test(api): drop flaky contracts explain [BIL-228] by @toommz in #6573
- feat(contracts): expose the effective anchor by @rsempe in #6577
- feat(contracts): support invoice custom sections by @rsempe in #6450
- fix(billing): Deduplicate advance product fees by @tiagolupepic in #6545
- feat(auth): add additional domains to Entra ID by @mikeh-lago in #6576
- feat(billing): Reuse fees by boundary identity by @tiagolupepic in #6488
- feat(x402): Add x402 connections and settlements by @osmarluz in #6550
- feat(x402): Add x402 columns to customers, wallets and invoices by @osmarluz in #6564
- fix(billing): Preserve graduated proration tiers by @tiagolupepic in #6581
- fix(contracts): honor REST invoicing settings by @tiagolupepic in #6586
- feat(account-tree): add GQL support for fetching attributed usage by @lovrocolic in #6587
- fix(account-tree): adapt query service result by @lovrocolic in #6597
- fix(contracts): activate contracts on their start by @rsempe in #6544
- perf(taxes): Cache Anrok draft tax answers by @mikeh-lago in #6591
- feat(billing): Apply contract invoice sections by @tiagolupepic in #6596
- refactor(fees): extract advance fee attachment by @tiagolupepic in #6592
- feat(catalog): scope plan lists by catalog objects by @rsempe in #6589
- feat(wallets): Order wallets by expiration date by @annvelents in #6599
- chore(smtp): Replace mailhog by mailpit on development by @jdenquin in #6203
New Contributors
Full Changelog: v1.53.0...v1.54.0