v1.16.0
getlago/lagov1.16.0Nov 20, 2024by nudded
AI Summary
Continued frontend migration to Tailwind CSS and expansion of dunning campaign and billing features.
Key Highlights
- Frontend migration to Tailwind CSS.
- New dunning campaign features including settings and cascade plan changes.
- Custom expressions for billing metrics.
- Billable metrics rounding support.
New Features
- Customer dunning settings
- Custom expressions for billing metrics
- Billable metrics rounding
- Cascade parent plan changes
- Salesforce customers webhooks
Full Release Notes
## What's Changed * misc(docker): Fix dev events_raw topic by @jdenquin in https://github.com/getlago/lago/pull/424 * misc: fix docker-compose.dev typo by @ansmonjol in https://github.com/getlago/lago/pull/427 * fix(compose-dev): docker-compose migrate start script path by @electrosenpai in https://github.com/getlago/lago/pull/429 * Bump version to 1.16.0 by @nudded in https://github.com/getlago/lago/pull/430 **Full Changelog**: https://github.com/getlago/lago/compare/v1.15.2...v1.16.0 ## Front changes * bug: current usage period uses wrong dateTime by @ansmonjol in https://github.com/getlago/lago-front/pull/1848 * feat: Custom expressions for billing metrics by @stephenlago99 in https://github.com/getlago/lago-front/pull/1825 * chore(cors): Support new LAGO_DOMAIN by @jdenquin in https://github.com/getlago/lago-front/pull/1849 * feat: Billable metrics rounding by @stephenlago99 in https://github.com/getlago/lago-front/pull/1847 * misc: change Netsuite item mapping UX by @ansmonjol in https://github.com/getlago/lago-front/pull/1850 * bug(e2e): flaky assertion in beforeEach by @ansmonjol in https://github.com/getlago/lago-front/pull/1851 * misc: make sure Netsuite item's data is fully valid before flagging it as mapped by @ansmonjol in https://github.com/getlago/lago-front/pull/1852 * misc: migrate some Skeleton to use the new API by @ansmonjol in https://github.com/getlago/lago-front/pull/1853 * misc(Skeleton): migrate to remove unnecessary attribute by @ansmonjol in https://github.com/getlago/lago-front/pull/1854 * feat: customer dunning settings by @keellyp in https://github.com/getlago/lago-front/pull/1823 * bug: prevent current usage fetch for pending subscriptions by @ansmonjol in https://github.com/getlago/lago-front/pull/1856 * feat: Cascade parent plan changes by @stephenlago99 in https://github.com/getlago/lago-front/pull/1818 * bug: incoherent draft invoice data display by @ansmonjol in https://github.com/getlago/lago-front/pull/1858 * chore: migrate eslint to v9 by @keellyp in https://github.com/getlago/lago-front/pull/1846 * misc: remove sales order from Netsuite settings by @ansmonjol in https://github.com/getlago/lago-front/pull/1857 * bug: only show override modal on edit mode by @ansmonjol in https://github.com/getlago/lago-front/pull/1860 * misc: refactor keys page and add actions by @ansmonjol in https://github.com/getlago/lago-front/pull/1859 * misc: continue one Skeleton api migration by @ansmonjol in https://github.com/getlago/lago-front/pull/1861 * bug: use typography component for text display by @ansmonjol in https://github.com/getlago/lago-front/pull/1863 * misc(Skeleton): use className to define style by @ansmonjol in https://github.com/getlago/lago-front/pull/1862 * misc: reset password alert should be full screen by @ansmonjol in https://github.com/getlago/lago-front/pull/1865 * bug(cache): make sure to no re-fetch active queries on orga switch by @ansmonjol in https://github.com/getlago/lago-front/pull/1866 **Full Changelog**: https://github.com/getlago/lago-front/compare/v1.15.2...v1.16.0 ## API changes * feat(flexible aggregation) - Support flexible aggregation on billable metric by @nudded in https://github.com/getlago/lago-api/pull/2704 * feat(rounding): Add rounding fields to billable_metrics by @vincent-pochet in https://github.com/getlago/lago-api/pull/2754 * feat(rounding): Expose rounding attributes to APIs by @vincent-pochet in https://github.com/getlago/lago-api/pull/2764 * feat(dunning): campaign creation requires organization premium add-on by @ancorcruz in https://github.com/getlago/lago-api/pull/2759 * feat(dunning): find eligible customers and applied dunning campaign by @ancorcruz in https://github.com/getlago/lago-api/pull/2757 * feat(dunning): only one dunning campaign applied to organization on creation by @ancorcruz in https://github.com/getlago/lago-api/pull/2760 * fix: eager load invoice attachments by @lovrocolic in https://github.com/getlago/lago-api/pull/2776 * feat(rounding): Apply rounding to billable metric aggregation results by @vincent-pochet in https://github.com/getlago/lago-api/pull/2775 * Feat add ability to rotate api key by @floganz in https://github.com/getlago/lago-api/pull/2771 * fix: Ensure DataExports::CombinePartsJob uniqueness by @ancorcruz in https://github.com/getlago/lago-api/pull/2777 * misc(cors): Support new LAGO_DOMAIN by @jdenquin in https://github.com/getlago/lago-api/pull/2780 * feat(dunning): validate dunning campaign has at least one threshold by @ancorcruz in https://github.com/getlago/lago-api/pull/2762 * feat(netsuite): Cleanup syncs by @ivannovosad in https://github.com/getlago/lago-api/pull/2782 * fix: Ensure correct integration customer is used when syncing netsuite payments by @lovrocolic in https://github.com/getlago/lago-api/pull/2785 * feat(salesforce): Added customers webhooks by @brunomiguelpinto in https://github.com/getlago/lago-api/pull/2783 * misc(docker): Improve migrate script by @jdenquin in https://github.com/getlago/lago-api/pull/2778 * bug(DataExport) - Decrease batch size for data export & use tempfile by @nudded in https://github.com/getlago/lago-api/pull/2786 * Bug(DataExport) - update DEFAULT_BATCH_SIZE of ExportResourcesJob by @nudded in https://github.com/getlago/lago-api/pull/2788 * feat(salesforce): Add integration models by @ivannovosad in https://github.com/getlago/lago-api/pull/2787 * feat(api-key-management): Track when API key was last used by @floganz in https://github.com/getlago/lago-api/pull/2779 * feat(DataExport) - don't rely on SubscriptionSerializer for plan code and external id by @nudded in https://github.com/getlago/lago-api/pull/2792 * fix(custom_aggregation): Ensure custom properties are stored as Hash by @vincent-pochet in https://github.com/getlago/lago-api/pull/2781 * feat(Salesforce): Add ability to create salesforce customer by @brunomiguelpinto in https://github.com/getlago/lago-api/pull/2794 * feat(salesforce): Add invoice resynced Webhook by @brunomiguelpinto in https://github.com/getlago/lago-api/pull/2791 * feat(dunning): Permit creation of payment request without email by @rsempe in https://github.com/getlago/lago-api/pull/2784 * Feat salesforce services by @ivannovosad in https://github.com/getlago/lago-api/pull/2795 * feat(DailyUsage): Add daily_usages:fill_history task by @vincent-pochet in https://github.com/getlago/lago-api/pull/2751 * misc(nango): Increase the number of job retries in case of RequestLimitError by @ivannovosad in https://github.com/getlago/lago-api/pull/2798 * feat(dunning): Stop and reset counters for customers by @rsempe in https://github.com/getlago/lago-api/pull/2796 * Fix(anrok): return zero-tax breakdown if client facing taxes sum is 0 by @annvelents in https://github.com/getlago/lago-api/pull/2797 * feat(api-key-management): Add name to the API key model by @floganz in https://github.com/getlago/lago-api/pull/2793 * misc(filters-contracts): Define contracts to validate query objects filters by @ancorcruz in https://github.com/getlago/lago-api/pull/2650 * feat(dunning): schedule process dunning campaigns jobs every hour at 45' by @ancorcruz in https://github.com/getlago/lago-api/pull/2766 * fix(netsuite): Fix netsuite payment payload by @ivannovosad in https://github.com/getlago/lago-api/pull/2790 * fix(subscription): Ensure consistent ordering on the index end-point by @vincent-pochet in https://github.com/getlago/lago-api/pull/2801 * fix(customer): Add missing validation for shipping country by @floganz in https://github.com/getlago/lago-api/pull/2804 * fix(gocardless): Handle validation error with refund by @vincent-pochet in https://github.com/getlago/lago-api/pull/2805 * misc: Add more after_commit to avoid deserialization errors by @vincent-pochet in https://github.com/getlago/lago-api/pull/2803 * fix: Ability to generate legacy invoice pdfs without charges duration by @rsempe in https://github.com/getlago/lago-api/pull/2806 * feat(api-key-management): Add ability to create API key by @floganz in https://github.com/getlago/lago-api/pull/2802 * bug(BillableMetric) - BillableMetrics::DeleteEventsJob remove new-style events as well by @nudded in https://github.com/getlago/lago-api/pull/2810 * feat(plan-charges-cascading): Support charge filters cascading by @lovrocolic in https://github.com/getlago/lago-api/pull/2761 * feat(dunning): Use display name of customer in email by @rsempe in https://github.com/getlago/lago-api/pull/2811 * add migration to set parent_ids to charges by @annvelents in https://github.com/getlago/lago-api/pull/2738 * fix missing children on plan by @annvelents in https://github.com/getlago/lago-api/pull/2813 * improvement(Cascade) - Improve cascade jobs by passing in the expected amount_cents by @nudded in https://github.com/getlago/lago-api/pull/2812 * feat(netsuite): Remove sales orders services by @ivannovosad in https://github.com/getlago/lago-api/pull/2807 * misc(stripe): Refact payment method update webhooks by @vincent-pochet in https://github.com/getlago/lago-api/pull/2808 * fix(payment_request): Avoid deserialization issues by @vincent-pochet in https://github.com/getlago/lago-api/pull/2815 * fix: Ability to delete assigned customer taxes from the API by @rsempe in https://github.com/getlago/lago-api/pull/2814 * fix(gocardless): Handle GoCardlessPro::ValidationError when creating payment by @vincent-pochet in https://github.com/getlago/lago-api/pull/2817 * fix(adyen): Handle Adyen::AuthenticationError when creating the customer by @vincent-pochet in https://github.com/getlago/lago-api/pull/2820 * fix(netsuite): Aggregator jobs should be unique by @ivannovosad in https://github.com/getlago/lago-api/pull/2818 * fix(subscription upgrade): Upgrade subscriptions previously considered downgrade on amount increase by @ancorcruz in https://github.com/getlago/lago-api/pull/2823 * Bug(PayInAdvanceFee) - fix grouped_by logic for Fees::CreatePayInAdvanceService by @nudded in https://github.com/getlago/lago-api/pull/2824 * feat(api-key-management): Add ability to destroy an API key via graphql by @floganz in https://github.com/getlago/lago-api/pull/2809 * Add ability to rotate API key with expiry period by @floganz in https://github.com/getlago/lago-api/pull/2822 * fix(data-export): File key uniqueness by @floganz in https://github.com/getlago/lago-api/pull/2821 * misc(PaymentProviders): Refact webhooks folder structure by @vincent-pochet in https://github.com/getlago/lago-api/pull/2829 * fix(netsuite): Fix possible duplicate integration resources creation by @ivannovosad in https://github.com/getlago/lago-api/pull/2826 * fix(stripe): Handle missing payment by @vincent-pochet in https://github.com/getlago/lago-api/pull/2825 * Fix specs and payment payload by @ivannovosad in https://github.com/getlago/lago-api/pull/2830 * feat(dunning): Add deleted_at to dunning campaign threshold by @ancorcruz in https://github.com/getlago/lago-api/pull/2831 **Full Changelog**: https://github.com/getlago/lago-api/compare/v1.15.2...v1.16.0