Conversation
8 tasks
This branch has not been deployed
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.
Depends on pubky/paykit-rs#161 (open; head 8b893f0, the top of the #158 → #159 → #160 → #161 stack). The Paykit bindings are built from that head and resolved only from a Maven directory beside the checkout, so CI cannot build this branch until #161 is published. The
0.1.0-rc55coordinates are unchanged on purpose. To build it, publish the Kotlin bindings of that head ascom.synonym:paykit-android:0.1.0-rc55into../maven(paykit-rspaykit-ffi/bindings/android,publishToMavenLocalwith-Dmaven.repo.localpointing there).iOS port: synonymdev/bitkit-ios#799
This PR adds allowances: a payer sets a per-payment and a monthly limit for a Paykit contact, and that contact's requests within the limits are paid without asking.
Description
Out of Scope
Design
Figma "Bitkit - Experimental New": Allowances empty state, Set Allowance, Allowances list. The receiver's review sheet and the detail sheet have no frame and follow the drawn film. Deliberate differences: the first tab stays "Overview", the list row's right column reads the monthly limit, and the copy typos are fixed.
Preview
side-by-side.mp4
QA Notes
Journeys
set-and-accept.xml— the offer opens on the payee by itself and both rows turn Activeauto-pay-under-limit.xml— a $2 request pays itself with only a Payment Executed notificationabove-limit-asks.xml— a $20 request arrives as an ordinary Payment Requestmonthly-cap-reached.xml— the third $4 request on a $10 cap raises Limit Reached and asksend-stops-auto-pay.xml— after either side ends it, the next request asksrestart-never-pays-twice.xml— a kill right after the hand-off never leads to a second paymentManual Tests
Automated Checks
PaykitAllowanceTest.kt— limits, terms, capacity and month anchoring of the allowance modelPaykitAllowanceExecutorTest.kt— reserve, hand-off, outcome recording and restart recovery of automatic paymentsPaykitAllowanceRepoTest.kt— admission decisions: automatic, manual, deferred and limit reachedPrivatePaykitAllowancePaymentTest.kt— resolving the payee's private endpoint for an automatic paymentPaykitSdkStateLayoutTest.kt— conversion of the stored Paykit state between the rc55 and allowance layoutsAllowancesViewModelTest.kt— list, set, review and detail stateAppViewModelSendFlowTest.kt— the send flow with the allowance repo wired inPaykitPaymentProofRepoTest.kt— payment proofs carry the allowance id./gradlew --offline assembleDevDebug testDevDebugUnitTest detektagainst the local Paykit build — 2,993 unit tests pass and detekt is clean; CI cannot resolve the Paykit build until Expose Allowance accounting to Swift and Kotlin pubky/paykit-rs#161 is published