Canceling a subscription without a Stripe backing (test mode, free plans) writes status=canceled with endedAt set to the end of the current period, so the customer keeps their entitlements until then. But every read path classified subscriptions with isActiveSubscription (active/trialing only), so during the paid-through window the owned product fell through to the one-time-purchase branch: the account settings payments tab showed "One-time purchase" with no end date and no way to tell the plan was winding down, and plan usage reported the free plan while the paid plan's quotas were still in effect. Introduce isSubscriptionInEffect (status-agnostic, endedAt-based — the same semantics Bulldozer's grant timefold and ensure-free-plan already use) and use it at the read sites: product list classification, plan usage resolution, and the switch route's sub-vs-OTP occupancy check. Write sites keep isActiveSubscription so wound-down subs can't be re-canceled or switched from. The product list now also computes is_cancelable instead of hardcoding it, double-canceling returns a dedicated error instead of claiming the product is an OTP, and the Stripe cancel path uses cancel_at_period_end instead of canceling immediately, matching the promise made by the confirmation dialog. The account settings panels render "Ends on <date>" for winding-down subscriptions.
Hexclave
The user infrastructure platform.
Hexclave handles everything around your users: authentication, teams, payments, emails, analytics, and much more. Start in minutes on the hosted cloud. Your data is always yours to export and self-host.
Get started
Setting up Hexclave is one prompt. Paste this into your coding agent of choice:
Read skill.hexclave.com and help me setup hexclave in this project
For AI agents
If you're an AI coding agent, use your web fetch tool or curl the skill documentation for up-to-date integration instructions:
curl -sSL "https://skill.hexclave.com?question=<your-question>&context=<your-context>"
What's included
Hexclave ships as a catalog of apps you switch on as your product needs them. Each one is built on the same user model, and new apps land regularly.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Contributing
Hexclave is open source, and contributions are welcome. Read
CONTRIBUTING.md to get started, and say hello in
Discord before picking up anything large.
Found a security issue? Email [email protected].










