Repository navigation
feat(pass): Profullstack Pass grants Pro until it expires - #271
Merged
Merged
Conversation
CoinPay userinfo carries a `pass` claim (coinpay-onboard 0.5.0 finishSignIn returns it parsed). On CoinPay sign-in an active pass becomes a free Pro term from now until pass.expires_at: a memberships row (plan pro, price 0, grant_ref coinpay-pass:<sub>:<expires_at>), idempotent on the (user_id, grant_ref) index. isProUser already reads it, and a paid Pro term bought during the pass stacks after it. Bound to the CoinPay sub only. /premium gets one line pointing at https://coinpayportal.com/pass. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
sh1pt-actions-fleet
Bot
force-pushed
the
feat/coinpay-pass
branch
from
November 7, 2026 16:13
e116d66 to
acd2858
Compare
|
Review the following changes in direct dependencies. Learn more about Socket for GitHub.
|
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Profullstack Pass on nichedb.dev.
packages/payments/src/coinpay-pass.js: reads the pass claim (active only with a futureexpires_at), inserts one free Pro term (planpro, price 0) from now until the pass expires,grant_ref = coinpay-pass:<coinpay sub>:<expires_at>, idempotent on the existing(user_id, grant_ref)index.isProUser/activeMembershippick it up unchanged; a paid Pro term bought during the pass stacks after it. Data dumps are not included.sub(login and Settings connect). Never by email. A grant failure never blocks sign-in.pass).Tests: two new cases in
apps/web/src/routes/coinpay.test.js(full callback on PGlite): active pass -> one Pro row until expiry across repeat sign-ins; inactive/expired/no-expiry -> nothing.bun run lint+bun testgreen (2682 pass).🤖 Generated with Claude Code