Repository navigation
Plans: sign in to public apps through Peel's wallet connection (app-payments R6, R7) - #626
Open
Evanfeenstra wants to merge 2 commits into
Open
Evanfeenstra wants to merge 2 commits into
Evanfeenstra wants to merge 2 commits into
Conversation
app-payments.md §4.4 rewritten (ruled 2026-11-10): a public app signs a visitor in through the same per-app connection Peel already keeps for payments, on the same sheet. Only strut's challenge is signed, bound to the domain Peel loaded. The root Sphinx key by default, a per-app child key (LUD-05) when the person or the app chooses. This replaces the 2026-11-04 "per-app linking key, never the identity key". It adds `strut/wallet/sign_in`, the `ln-message` verifier, a public app's page as Peel's third kind of page, and work item 9. app-repos.md: Peel's connection is the next sign-in (§5.3, 7). The browser and passkey Sphinx wallets (items 5 and 6) are later.
Signing in is a HOST request (`sign_in`) beside #625's `buy_credit` in specs/WALLET.md §1.2, not a `strut/wallet/*` method. The guard checks the challenge's host against the seller: the one the person's own strut UI names on the Mac (#625's remote mode), the origin Peel loaded on the iPhone. R7 (ruled 2026-11-10): the iPhone has no local strut to host a stranger's app, so it opens the served box directly, keyed by origin, the page's own claims ignored. Bundling strut's UI in Peel stays the later way to use remote mode there too.
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.
Plans only, no code. It rewrites
plans/app-payments.md§4.4 and pointsplans/app-repos.mdat it.Why
A public app on a box the person isn't signed in to needs to know who its players are (app-repos item 4, #624). The person's wallet is Peel, which already keeps a per-app connection with consent and a budget. So signing in should ride that connection rather than a new browser wallet. In the owner's words: "We already have a wallet! It's called Peel!"
What changed
plans/app-payments.mdhostis the seller's domain. That closes sphinx-bridge's old hole (one app minting another's login) by binding the signature to a domain, not by keeping the identity key out of it.ln-messageverifier checks the signature, and the actor issecp:<pubkey>, the same key payments come from.sign_inis a HOST request, beside Remote public apps: any strut UI hosts another server's public app, one-tap payment in Peel #625'sbuy_creditinspecs/WALLET.md§1.2, and listed byhost_capability. It is not astrut/wallet/*method;sign_messagestays "never".plans/app-repos.mdFor reviewers
buy_credit,specs/WALLET.md§1.2) and Signed-in visitors: a public app's players sign in with a key (app-repos work item 4) #624 (signed-in visitors, the challenge and the verifier seam). It merges cleanly with both.