Skip to content

chore: update paykit to rc56 - #1365

Merged
ovitrif merged 4 commits into
masterfrom
chore/paykit-rc56
Sep 29, 2026
Merged

ovitrif merged 4 commits into
masterfrom
chore/paykit-rc56

Conversation

@ben-kaufman

@ben-kaufman ben-kaufman commented Sep 28, 2026 •

Copy link
Copy Markdown
Contributor

Closes #1366

This PR updates Bitkit to the Paykit 0.1.0-rc56 release and adapts the existing Bitcoin payment request and proof calls.

Companion: synonymdev/bitkit-ios#823

Description

  • Pins the released SDK and supplies the new optional conversion, payment deadline, allowance, and quote fields without enabling new payment features.
  • Preserves deadline-bearing requests and subscriptions in history, including paid periods and subscription cancellation. Acceptance, new payments, and reminders remain disabled because Bitkit does not yet enforce actual-payment deadlines. Subscription review explains that those payment details are unsupported.
  • Updates existing request, subscription, proof, and interoperability fixtures for the released bindings.

This upgrade is independent of the USDT integration. It adds no migrations, legacy compatibility paths, or wallet resets.

Preview

Reuses the existing subscription review layout and unsupported-payment explanation.

Design

N/A — no design available. Reuses the existing subscription review components and copy.

QA Notes

Manual Tests

  • 1. Contacts → pay a contact: the existing Bitcoin payment flow works.
  • 2. Payment Requests → create and accept a Bitcoin request → pay: the request and payment proof are delivered.
  • 3. Subscriptions → create and accept a subscription → pay an installment: billing periods and proof delivery remain correct.

Journeys

  • journeys/payment-requests/payment-deadline-history.xml is included on both platforms. Not run end to end: it requires a controlled rc56 peer with accepted and paid deadline-bearing records. The repository tests exercise those states with fixtures.

Automated Checks

  • just compile, just test, and just lint passed against the published rc56 AAR, verified against its release SHA-256. The full unit suite ran 2949 tests with 0 failures (0 skipped). Existing unrelated compiler/lint warnings remain.
  • PaykitPaymentRequestRepoTest.kt and PaykitPaymentRequestRepoSubscriptionTest.kt cover history retention, deadline payment rejection, paid recurring periods, proof-delivery retries, and cancellation. PaykitSubscriptionNotificationSchedulerTest.kt covers reminder suppression. The other fixture changes match rc56 constructors; no existing test coverage was removed.
  • Independent UI and journey/docs reviews, XML parsing and cross-platform journey comparison, and git diff --check passed.

@ben-kaufman
ben-kaufman marked this pull request as ready for review September 29, 2026 12:06
@greptile-apps

greptile-apps Bot commented Sep 29, 2026 •

Copy link
Copy Markdown
Contributor

RetriggerConfidence Score: 4/5

[High risk] Updates payment SDK dependency and adapts code to new API.

This should not merge until deadline-bearing requests that were already accepted or paid remain visible in payment history.

Findings

  1. P1 Deadlined requests disappear from history ▶

Summary

Updates the Paykit dependency to rc56, supplies the new SDK constructor fields, and excludes deadline-bearing requests from payment. Test fixtures and deadline-rejection coverage were updated. The one-time request guard also excludes already completed records from history.

Reviews (1) · Last reviewed commit: "chore: update paykit to rc56"

Comment thread app/src/main/java/to/bitkit/repositories/PaykitPaymentRequestRepo.kt Outdated
@github-actions

github-actions Bot commented Sep 29, 2026 •

Copy link
Copy Markdown
Contributor

Regtest APK

Built from b496f28 (run).

Download bitkit-dev-debug universal APK (expires in 30 days).

@ovi-reviewer ovi-reviewer Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Advice: ✅ Approve


Review: diff 12 files.
Equivalent to synonymdev/bitkit-ios#823.

Findings:
1 inline (1 LOW)

Audit:
Skipped - nothing a reviewer would report across 12 files (threshold 0.4; strongest app/src/main/java/to/bitkit/repositories/PaykitPaymentRequestRepo.kt at 0.13).

Coverage:
QA: waits for the other reviewers' approval, or @ovi-reviewer test


Reviewed by gpt-6-sol-xhigh via gh-pr-review-loop skill
Commands: @ovi-reviewer review · test · retest · audit (author or owner) · wrong <why> (owner)

@jvsena42 jvsena42 left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

One MEDIUM (journey) and one LOW inline. No SDK-adaptation findings.

Checked and clean:

  • Every new outbound field (conversion, paymentDeadline, allowanceId, conversionQuoteId) is sent as null, and rc56 omits them on the wire, so v2.5.0 (rc51) peers still parse proposals and proofs.
  • Conversion terms cannot open a cross-asset path: only btc requests over btc endpoints are paid, and same-asset proofs need no quote id.
  • Deadline gating covers every pay entry: the parse guard keeps them out of pendingRequests, plus dueRequests, applySubscriptionRecordLocked, accept(subscription), paymentDueOnAcceptance and the scheduler, which also cancels queued work. History and paid periods are kept.
  • paymentDeadline is only a presence check; no counterparty timestamp is parsed or displayed.
  • The SDK storage schema is unchanged from rc55 to rc56. rc56's startup reclassification finds dedupe records for rc55-malformed items, so init does not fail after upgrade from v2.5.0 or master.
  • Retained corrective/crossing proofs cannot double-count, thanks to distinct() paid periods, lastOrNull() proof kind and value-based resubmission dedupe.

Comment thread journeys/payment-requests/payment-deadline-history.xml Outdated
Comment thread app/src/main/java/to/bitkit/repositories/PaykitSubscription.kt

@ovi-reviewer ovi-reviewer Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Advice: ✅ Approve


Reaudit: diff 6 files.
No new findings; the rest is in the review.
Pair PR synonymdev/bitkit-ios#823: equivalent.

Coverage:
Journeys: 55% - The updated 23-step deadline journey matches Android routes and the resolved iOS companion.


Reviewed by gpt-6-sol-xhigh via gh-pr-review-loop skill
Commands: @ovi-reviewer review · test · retest · audit (author or owner) · wrong <why> (owner)

@jvsena42 jvsena42 left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Re-checked b496f28. No findings; both threads are resolved. The journey now matches synonymdev/bitkit-ios#823 apart from the documented row-tag suffix.

@ovi-reviewer ovi-reviewer Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Verdict: ✅ Approve


Tests for the review: journey J1 could not be completed because it needs a fixture issuer and rc56 peer; Tests 1, 2 and 3 passed.

Audit:
Skipped - nothing a reviewer would report across 6 files (threshold 0.4; strongest docs/paykit-issuer-interoperability.md at 0.14).

QA:
Tested on two Android 16 emulators (Pixel 10 Pro)

Test 1 ✅ passed

evidence
1.mp4

Test 2 ✅ passed

evidence
2.mp4

Test 3 ✅ passed

evidence
3.mp4

Test J1 ⚠️ not verified: requires a fixture issuer and rc56 peer, which were unavailable.

Warning

The payment deadline history journey remains unverified on a device because it requires a controlled rc56 peer and fixture issuer.

Manual Tests 1–3 were checked in the PR body.

Tip

Consider adding this journey

Test 1
  • Open Contacts and the saved peer.
  • Tap Pay and enter 5 000 sats from Savings.
  • Verify the peer on Confirm and swipe to pay.
  • Verify Bitcoin Sent on the payer and Received Bitcoin on the peer.
Test 2
  • On the requester, open Subscriptions → Payments and tap Request Payment.
  • Choose the saved payer, enter 21 000 sats and a note, then send the request.
  • On the payer, review the incoming request and swipe to pay.
  • Verify Bitcoin Sent on the payer and Received Bitcoin on the requester.
  • On the requester, open Payments history and verify the received-payment icon on the request.
Test 3
  • On the creator, open Subscriptions → Overview and tap Create.
  • Enter 5 000 sats, select Monthly, name the subscription, and choose the saved payer.
  • Propose the subscription and verify Sent Proposal.
  • On the payer, review the monthly proposal and swipe to subscribe and pay.
  • Review the Savings send and swipe to pay the first installment.
  • Verify Subscribed, then open the subscription details on both devices.
  • Verify Active, the next monthly renewal, and one paid installment on the creator.

Reviewed by gpt-6-sol-xhigh via gh-pr-review-loop skill
Commands: @ovi-reviewer review · test · retest · audit (author or owner) · wrong <why> (owner)

@ovitrif ovitrif left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

utAck

@ovitrif
ovitrif merged commit 90a91f4 into master Sep 29, 2026
21 checks passed
@ovitrif
ovitrif deleted the chore/paykit-rc56 branch September 29, 2026 20:22
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

chore: update paykit to rc56

3 participants