Changelog
Guapocado is pre-1.0. While on 0.0.x, any release may contain breaking
changes — pin exact versions. The full changelog lives in
CHANGELOG.md.
0.0.10
Section titled “0.0.10”Breaking
Section titled “Breaking”@guapocado/better-authnow preserves the selected user, organization, or team ID unchanged ascustomerId. It no longer adds a source prefix. UsemapCustomerIdwhen an integration intentionally needs a namespace or a dedicated billing ID.
Changed
Section titled “Changed”- CLI environment flags renamed to match the platform’s test/live vocabulary:
--sandbox→--test,--production→--liveonpush/pull/plan/generate/listen/diff. The old flags still work as deprecated aliases. When no environment flag is given, the CLI now prompts (or errorsSpecify --test or --live) instead of defaulting. Existingcredentials.jsonfiles keep working without re-login.
@guapocado/sdk— a batteries-included, store-backed local read model:createGuapLocal({ apiKey, store?, webhook?, hooks? })returns a concreteGuapAdapter, a fetch-shaped webhook receiver (handler), a projection test seam (project), and an explicitregister. Verifies theguapocado-signatureheader, dedupes deliveries by event id, and projects domain events into a minimalGuapStore(get/put/delete/listByPrefix) using last-write-wins ordering on the event’screatedAt.createMemoryGuapStore()ships an in-memory implementation;testGuapStoreContract(from@guapocado/sdk/testing) validates a custom SQL/KV-backed store against the same contract suite.createGuapocadoClientWithLocalis the one-liner that wires the adapter in and attaches.handlerto the returned client. New webhook endpoints registerpending_approvaluntil approved in the dashboard — reads stay correct via API miss-through in the meantime.@guapocado/sdk— webhook hooks:guap.handler({ ... })runs your functions after an event is verified and projected, no polling required. Catch-allonEvent; raw per-event hooks (onCustomerUpdated,onSubscriptionUpdated,onPurchaseCompleted,onPurchaseUpdated,onEntitlementsUpdated,onInvoiceUpdated); and semantic transition hooks derived from the previously stored record (onSubscribe,onCancel,onPlanChange,onPurchase). Hooks run after projection but before the delivery is marked handled, so a throwing hook causes a500and an at-least-once retry re-fires it — hooks must be idempotent.@guapocado/sdk—verifyGuapocadoSignature, extracted from@guapocado/better-auth’s internal HMAC check, so any receiver can verify a Guapocado webhook signature the same way the platform does.@guapocado/hono—guapLocalHandler(local, hooks?)adapts aGuapLocal’shandlerinto a one-line Hono route mount.
Breaking
Section titled “Breaking”@guapocado/better-authnow requiresbetter-auth^1.6.11(peer dependency was>=1.0.0). Older cores caused type-inference and runtime mismatches.@guapocado/better-authno longer declares its ownidon the webhook tables — Better Auth adds the primary key. If you generated schema from0.0.1, re-runbetter-auth generate; the old output created a duplicate-idtable.guap logindropped--sandbox/--production. One login authorizes a workspace and mints both keys; useguap workspace selectto switch. Keys stay environment-scoped.- Stripe Connect is the only connection method now (the manual API-key method was removed — the take-rate can’t be charged without the Connect relationship), and it is per environment: sandbox and production are separate authorizations.
- Checkout returns
409for amode: "custom"tier unless the customer has an enterprise contract supplying an inline price.
mode: "custom"(“contact us”) pricing — a tier with no Stripe price, sold via an enterprise deal.guap … --config <path>(alias-c) onpush,plan,generate, andlisten.guap workspace list/guap workspace select.- Exported
@guapocado/better-authclient result types.
Changed
Section titled “Changed”authClient.guapocado.*returns Better Auth’s{ data, error }envelope. (The standalone@guapocado/sdkserver client still returns values directly and throwsGuapocadoError.)