Commit Graph

6 Commits

Author SHA1 Message Date
Keysat d2caa98248 Fix credit-counter reset on early subscription renewal
extendUserTier called setUserTier, which unconditionally zeroed
monthly_consumed and re-anchored the cycle. A user who renewed mid-cycle
(or a webhook double-firing across a restart) got their full monthly
allotment back for free. The monthly cycle already rolls on its own
anniversary via ensureRenewalRollover, so renewal must not reset it. Add
resetCycle to setUserTier (default true, preserving operator-grant
behavior); extendUserTier passes false for an in-force subscription and
true only for a brand-new or lapsed one. Add regression tests.
2026-06-13 16:23:26 -05:00
Keysat 0aa648706e Add self-serve billing: tiers, credits, BTCPay and Zaprite 2026-06-13 13:36:05 -05:00
local 9af70302b1 v0.2.7 configurable Gemini models + per-pipeline backend preference 2026-05-12 00:15:07 -05:00
local cd377683fb v0.2.6 calendar-anniversary billing 2026-05-11 23:02:57 -05:00
local 6797aae404 v0.2.3 Core tier 10/5/5 split + dynamic health version 2026-05-11 21:53:50 -05:00
local b9d86fa303 initial relay scaffold 2026-05-11 20:03:27 -05:00