fix: enable incoming onchain request swipe - #1221

Closed
ovitrif wants to merge 1 commit into
masterfrom
codex/1218-incoming-onchain-request-swipe
Closed

fix: enable incoming onchain request swipe#1221
ovitrif wants to merge 1 commit into
masterfrom
codex/1218-incoming-onchain-request-swipe

Conversation

@ovitrif

@ovitrifovitrif commented Sep 2, 2026

Copy link
Copy Markdown
Collaborator

Fixes#1218

This PR persists successful amount validation for incoming on-chain Paykit Payment Requests, enabling the confirmation swipe only after the existing request validation and affordability checks pass.

Description

  • Marks a valid, affordable incoming on-chain request amount as input-valid immediately before opening Send Confirm.
  • Preserves the resolved endpoint, fixed request amount, private contact context, and existing acceptance ordering.
  • Keeps invalid and unaffordable incoming requests blocked.
  • Adds focused regression coverage and one user-facing changelog fragment.

Preview

QA Notes

Manual Tests

  • 1. Pubky marketplace → open a valid incoming on-chain Payment Request: Send Confirm showed the seller, resolved endpoint, exactly 15,000 sats, and an enabled swipe on the exact PR head using a fresh arm64 regtest emulator.
  • 2. Send Confirm → swipe to accept: the request broadcast exactly once as the sole mempool transaction with the exact 15,000-sat invoice output, confirmed after one regtest block, reached Paykit confirmed/1, completed Locks, and returned HTTP 200 for the guarded resource.
  • 3. Invalid or unaffordable incoming on-chain Payment Request → open request: confirmation remains blocked.

Automated Checks

  • AppViewModelSendFlowTest.kt: covers the payable resolved on-chain state, fixed request amount, endpoint, private contact context, and unaffordable block.
  • just compile: passes.
  • just test: passes all 2,267 tests.
  • just lint: passes with existing baseline findings outside this change.
  • ./gradlew assembleDevDebug: passes.
  • Dev APK launch smoke on an isolated sdk_gphone64_arm64 regtest emulator: passes with MainActivity resumed and no fatal or ANR logs.

@ovitrif
ovitrif marked this pull request as draft September 2, 2026 08:39
@greptile-apps

greptile-appsBot commented Sep 2, 2026

Copy link
Copy Markdown

Greptile Summary

This PR enables confirmation for validated, affordable incoming on-chain Paykit payment requests.

  • Persists successful amount validation before opening Send Confirm.
  • Adds regression coverage for payable and unaffordable incoming on-chain requests.
  • Adds a user-facing changelog fragment.

Confidence Score: 5/5

The PR appears safe to merge.

No blocking failure remains.

Important Files Changed

FilenameOverview
app/src/main/java/to/bitkit/viewmodels/AppViewModel.ktMarks the fixed incoming-request amount valid only after the existing validation and affordability checks succeed.
app/src/test/java/to/bitkit/viewmodels/AppViewModelSendFlowTest.ktAdds focused coverage for successful on-chain confirmation state and rejection of an unaffordable request.
changelog.d/next/1221.fixed.mdDocuments that affordable incoming on-chain payment requests can now be confirmed.

Reviews (3): Last reviewed commit: "fix: enable onchain request swipe (#1218..." | Re-trigger Greptile

@ovitrif
ovitrif marked this pull request as ready for review September 2, 2026 09:12
@ovitrif

Copy link
Copy Markdown
CollaboratorAuthor

I am closing this PR as superseded by #1178. I created it from the live disabled-swipe defect observed on the then-current master; it supplied a one-line fix, focused regression coverage, and successful marketplace end-to-end evidence. The then-open #1178 already contained the production-equivalent fix e041150 and later merged it, together with positive regression 10ff0df, into master at 9698dea. My initial overlap check did not catch the matching change inside that open PR. This PR therefore no longer has an independent product deliverable, and retaining a conflicting branch only for incremental negative coverage is not warranted. No product behavior or validation evidence is lost.

@ovitrifovitrif closed this Sep 2, 2026
@ovitrifovitrif reopened this Sep 2, 2026
@ovitrif
ovitrif marked this pull request as draft September 2, 2026 10:28
@ovitrifovitrif closed this Sep 2, 2026
@ovitrifovitrif reopened this Sep 2, 2026
@ovitrif

Copy link
Copy Markdown
CollaboratorAuthor

Re-closing after task automation reopened this PR while producing a local APK. The supersession decision above remains unchanged: merged #1178 owns the production fix and regression coverage, so this PR stays closed without merge.

@ovitrifovitrif closed this Sep 2, 2026
Sign up for freeto 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.

fix: enable incoming on-chain request swipe

1 participant

@ovitrif
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

fix: enable incoming onchain request swipe - #1221

Closed
ovitrif wants to merge 1 commit into
masterfrom
codex/1218-incoming-onchain-request-swipe
Closed

fix: enable incoming onchain request swipe#1221
ovitrif wants to merge 1 commit into
masterfrom
codex/1218-incoming-onchain-request-swipe

Conversation

@ovitrif

@ovitrifovitrif commented Sep 2, 2026

Copy link
Copy Markdown
Collaborator

Fixes#1218

This PR persists successful amount validation for incoming on-chain Paykit Payment Requests, enabling the confirmation swipe only after the existing request validation and affordability checks pass.

Description

  • Marks a valid, affordable incoming on-chain request amount as input-valid immediately before opening Send Confirm.
  • Preserves the resolved endpoint, fixed request amount, private contact context, and existing acceptance ordering.
  • Keeps invalid and unaffordable incoming requests blocked.
  • Adds focused regression coverage and one user-facing changelog fragment.

Preview

QA Notes

Manual Tests

  • 1. Pubky marketplace → open a valid incoming on-chain Payment Request: Send Confirm showed the seller, resolved endpoint, exactly 15,000 sats, and an enabled swipe on the exact PR head using a fresh arm64 regtest emulator.
  • 2. Send Confirm → swipe to accept: the request broadcast exactly once as the sole mempool transaction with the exact 15,000-sat invoice output, confirmed after one regtest block, reached Paykit confirmed/1, completed Locks, and returned HTTP 200 for the guarded resource.
  • 3. Invalid or unaffordable incoming on-chain Payment Request → open request: confirmation remains blocked.

Automated Checks

  • AppViewModelSendFlowTest.kt: covers the payable resolved on-chain state, fixed request amount, endpoint, private contact context, and unaffordable block.
  • just compile: passes.
  • just test: passes all 2,267 tests.
  • just lint: passes with existing baseline findings outside this change.
  • ./gradlew assembleDevDebug: passes.
  • Dev APK launch smoke on an isolated sdk_gphone64_arm64 regtest emulator: passes with MainActivity resumed and no fatal or ANR logs.

@ovitrif
ovitrif marked this pull request as draft September 2, 2026 08:39
@greptile-apps

greptile-appsBot commented Sep 2, 2026

Copy link
Copy Markdown

Greptile Summary

This PR enables confirmation for validated, affordable incoming on-chain Paykit payment requests.

  • Persists successful amount validation before opening Send Confirm.
  • Adds regression coverage for payable and unaffordable incoming on-chain requests.
  • Adds a user-facing changelog fragment.

Confidence Score: 5/5

The PR appears safe to merge.

No blocking failure remains.

Important Files Changed

FilenameOverview
app/src/main/java/to/bitkit/viewmodels/AppViewModel.ktMarks the fixed incoming-request amount valid only after the existing validation and affordability checks succeed.
app/src/test/java/to/bitkit/viewmodels/AppViewModelSendFlowTest.ktAdds focused coverage for successful on-chain confirmation state and rejection of an unaffordable request.
changelog.d/next/1221.fixed.mdDocuments that affordable incoming on-chain payment requests can now be confirmed.

Reviews (3): Last reviewed commit: "fix: enable onchain request swipe (#1218..." | Re-trigger Greptile

@ovitrif
ovitrif marked this pull request as ready for review September 2, 2026 09:12
@ovitrif

Copy link
Copy Markdown
CollaboratorAuthor

I am closing this PR as superseded by #1178. I created it from the live disabled-swipe defect observed on the then-current master; it supplied a one-line fix, focused regression coverage, and successful marketplace end-to-end evidence. The then-open #1178 already contained the production-equivalent fix e041150 and later merged it, together with positive regression 10ff0df, into master at 9698dea. My initial overlap check did not catch the matching change inside that open PR. This PR therefore no longer has an independent product deliverable, and retaining a conflicting branch only for incremental negative coverage is not warranted. No product behavior or validation evidence is lost.

@ovitrifovitrif closed this Sep 2, 2026
@ovitrifovitrif reopened this Sep 2, 2026
@ovitrif
ovitrif marked this pull request as draft September 2, 2026 10:28
@ovitrifovitrif closed this Sep 2, 2026
@ovitrifovitrif reopened this Sep 2, 2026
@ovitrif

Copy link
Copy Markdown
CollaboratorAuthor

Re-closing after task automation reopened this PR while producing a local APK. The supersession decision above remains unchanged: merged #1178 owns the production fix and regression coverage, so this PR stays closed without merge.

@ovitrifovitrif closed this Sep 2, 2026
Sign up for freeto 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.

fix: enable incoming on-chain request swipe

1 participant

@ovitrif
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

fix: enable incoming onchain request swipe - #1221

Closed
ovitrif wants to merge 1 commit into
masterfrom
codex/1218-incoming-onchain-request-swipe
Closed

fix: enable incoming onchain request swipe#1221
ovitrif wants to merge 1 commit into
masterfrom
codex/1218-incoming-onchain-request-swipe

Conversation

@ovitrif

@ovitrifovitrif commented Sep 2, 2026

Copy link
Copy Markdown
Collaborator

Fixes#1218

This PR persists successful amount validation for incoming on-chain Paykit Payment Requests, enabling the confirmation swipe only after the existing request validation and affordability checks pass.

Description

  • Marks a valid, affordable incoming on-chain request amount as input-valid immediately before opening Send Confirm.
  • Preserves the resolved endpoint, fixed request amount, private contact context, and existing acceptance ordering.
  • Keeps invalid and unaffordable incoming requests blocked.
  • Adds focused regression coverage and one user-facing changelog fragment.

Preview

QA Notes

Manual Tests

  • 1. Pubky marketplace → open a valid incoming on-chain Payment Request: Send Confirm showed the seller, resolved endpoint, exactly 15,000 sats, and an enabled swipe on the exact PR head using a fresh arm64 regtest emulator.
  • 2. Send Confirm → swipe to accept: the request broadcast exactly once as the sole mempool transaction with the exact 15,000-sat invoice output, confirmed after one regtest block, reached Paykit confirmed/1, completed Locks, and returned HTTP 200 for the guarded resource.
  • 3. Invalid or unaffordable incoming on-chain Payment Request → open request: confirmation remains blocked.

Automated Checks

  • AppViewModelSendFlowTest.kt: covers the payable resolved on-chain state, fixed request amount, endpoint, private contact context, and unaffordable block.
  • just compile: passes.
  • just test: passes all 2,267 tests.
  • just lint: passes with existing baseline findings outside this change.
  • ./gradlew assembleDevDebug: passes.
  • Dev APK launch smoke on an isolated sdk_gphone64_arm64 regtest emulator: passes with MainActivity resumed and no fatal or ANR logs.

@ovitrif
ovitrif marked this pull request as draft September 2, 2026 08:39
@greptile-apps

greptile-appsBot commented Sep 2, 2026

Copy link
Copy Markdown

Greptile Summary

This PR enables confirmation for validated, affordable incoming on-chain Paykit payment requests.

  • Persists successful amount validation before opening Send Confirm.
  • Adds regression coverage for payable and unaffordable incoming on-chain requests.
  • Adds a user-facing changelog fragment.

Confidence Score: 5/5

The PR appears safe to merge.

No blocking failure remains.

Important Files Changed

FilenameOverview
app/src/main/java/to/bitkit/viewmodels/AppViewModel.ktMarks the fixed incoming-request amount valid only after the existing validation and affordability checks succeed.
app/src/test/java/to/bitkit/viewmodels/AppViewModelSendFlowTest.ktAdds focused coverage for successful on-chain confirmation state and rejection of an unaffordable request.
changelog.d/next/1221.fixed.mdDocuments that affordable incoming on-chain payment requests can now be confirmed.

Reviews (3): Last reviewed commit: "fix: enable onchain request swipe (#1218..." | Re-trigger Greptile

@ovitrif
ovitrif marked this pull request as ready for review September 2, 2026 09:12
@ovitrif

Copy link
Copy Markdown
CollaboratorAuthor

I am closing this PR as superseded by #1178. I created it from the live disabled-swipe defect observed on the then-current master; it supplied a one-line fix, focused regression coverage, and successful marketplace end-to-end evidence. The then-open #1178 already contained the production-equivalent fix e041150 and later merged it, together with positive regression 10ff0df, into master at 9698dea. My initial overlap check did not catch the matching change inside that open PR. This PR therefore no longer has an independent product deliverable, and retaining a conflicting branch only for incremental negative coverage is not warranted. No product behavior or validation evidence is lost.

@ovitrifovitrif closed this Sep 2, 2026
@ovitrifovitrif reopened this Sep 2, 2026
@ovitrif
ovitrif marked this pull request as draft September 2, 2026 10:28
@ovitrifovitrif closed this Sep 2, 2026
@ovitrifovitrif reopened this Sep 2, 2026
@ovitrif

Copy link
Copy Markdown
CollaboratorAuthor

Re-closing after task automation reopened this PR while producing a local APK. The supersession decision above remains unchanged: merged #1178 owns the production fix and regression coverage, so this PR stays closed without merge.

@ovitrifovitrif closed this Sep 2, 2026
Sign up for freeto 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.

fix: enable incoming on-chain request swipe

1 participant

@ovitrif
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

fix: enable incoming onchain request swipe - #1221

Closed
ovitrif wants to merge 1 commit into
masterfrom
codex/1218-incoming-onchain-request-swipe
Closed

fix: enable incoming onchain request swipe#1221
ovitrif wants to merge 1 commit into
masterfrom
codex/1218-incoming-onchain-request-swipe

Conversation

@ovitrif

@ovitrifovitrif commented Sep 2, 2026

Copy link
Copy Markdown
Collaborator

Fixes#1218

This PR persists successful amount validation for incoming on-chain Paykit Payment Requests, enabling the confirmation swipe only after the existing request validation and affordability checks pass.

Description

  • Marks a valid, affordable incoming on-chain request amount as input-valid immediately before opening Send Confirm.
  • Preserves the resolved endpoint, fixed request amount, private contact context, and existing acceptance ordering.
  • Keeps invalid and unaffordable incoming requests blocked.
  • Adds focused regression coverage and one user-facing changelog fragment.

Preview

QA Notes

Manual Tests

  • 1. Pubky marketplace → open a valid incoming on-chain Payment Request: Send Confirm showed the seller, resolved endpoint, exactly 15,000 sats, and an enabled swipe on the exact PR head using a fresh arm64 regtest emulator.
  • 2. Send Confirm → swipe to accept: the request broadcast exactly once as the sole mempool transaction with the exact 15,000-sat invoice output, confirmed after one regtest block, reached Paykit confirmed/1, completed Locks, and returned HTTP 200 for the guarded resource.
  • 3. Invalid or unaffordable incoming on-chain Payment Request → open request: confirmation remains blocked.

Automated Checks

  • AppViewModelSendFlowTest.kt: covers the payable resolved on-chain state, fixed request amount, endpoint, private contact context, and unaffordable block.
  • just compile: passes.
  • just test: passes all 2,267 tests.
  • just lint: passes with existing baseline findings outside this change.
  • ./gradlew assembleDevDebug: passes.
  • Dev APK launch smoke on an isolated sdk_gphone64_arm64 regtest emulator: passes with MainActivity resumed and no fatal or ANR logs.

@ovitrif
ovitrif marked this pull request as draft September 2, 2026 08:39
@greptile-apps

greptile-appsBot commented Sep 2, 2026

Copy link
Copy Markdown

Greptile Summary

This PR enables confirmation for validated, affordable incoming on-chain Paykit payment requests.

  • Persists successful amount validation before opening Send Confirm.
  • Adds regression coverage for payable and unaffordable incoming on-chain requests.
  • Adds a user-facing changelog fragment.

Confidence Score: 5/5

The PR appears safe to merge.

No blocking failure remains.

Important Files Changed

FilenameOverview
app/src/main/java/to/bitkit/viewmodels/AppViewModel.ktMarks the fixed incoming-request amount valid only after the existing validation and affordability checks succeed.
app/src/test/java/to/bitkit/viewmodels/AppViewModelSendFlowTest.ktAdds focused coverage for successful on-chain confirmation state and rejection of an unaffordable request.
changelog.d/next/1221.fixed.mdDocuments that affordable incoming on-chain payment requests can now be confirmed.

Reviews (3): Last reviewed commit: "fix: enable onchain request swipe (#1218..." | Re-trigger Greptile

@ovitrif
ovitrif marked this pull request as ready for review September 2, 2026 09:12
@ovitrif

Copy link
Copy Markdown
CollaboratorAuthor

I am closing this PR as superseded by #1178. I created it from the live disabled-swipe defect observed on the then-current master; it supplied a one-line fix, focused regression coverage, and successful marketplace end-to-end evidence. The then-open #1178 already contained the production-equivalent fix e041150 and later merged it, together with positive regression 10ff0df, into master at 9698dea. My initial overlap check did not catch the matching change inside that open PR. This PR therefore no longer has an independent product deliverable, and retaining a conflicting branch only for incremental negative coverage is not warranted. No product behavior or validation evidence is lost.

@ovitrifovitrif closed this Sep 2, 2026
@ovitrifovitrif reopened this Sep 2, 2026
@ovitrif
ovitrif marked this pull request as draft September 2, 2026 10:28
@ovitrifovitrif closed this Sep 2, 2026
@ovitrifovitrif reopened this Sep 2, 2026
@ovitrif

Copy link
Copy Markdown
CollaboratorAuthor

Re-closing after task automation reopened this PR while producing a local APK. The supersession decision above remains unchanged: merged #1178 owns the production fix and regression coverage, so this PR stays closed without merge.

@ovitrifovitrif closed this Sep 2, 2026
Sign up for freeto 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.

fix: enable incoming on-chain request swipe

1 participant

@ovitrif
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

fix: enable incoming onchain request swipe - #1221

Closed
ovitrif wants to merge 1 commit into
masterfrom
codex/1218-incoming-onchain-request-swipe
Closed

fix: enable incoming onchain request swipe#1221
ovitrif wants to merge 1 commit into
masterfrom
codex/1218-incoming-onchain-request-swipe

Conversation

@ovitrif

@ovitrifovitrif commented Sep 2, 2026

Copy link
Copy Markdown
Collaborator

Fixes#1218

This PR persists successful amount validation for incoming on-chain Paykit Payment Requests, enabling the confirmation swipe only after the existing request validation and affordability checks pass.

Description

  • Marks a valid, affordable incoming on-chain request amount as input-valid immediately before opening Send Confirm.
  • Preserves the resolved endpoint, fixed request amount, private contact context, and existing acceptance ordering.
  • Keeps invalid and unaffordable incoming requests blocked.
  • Adds focused regression coverage and one user-facing changelog fragment.

Preview

QA Notes

Manual Tests

  • 1. Pubky marketplace → open a valid incoming on-chain Payment Request: Send Confirm showed the seller, resolved endpoint, exactly 15,000 sats, and an enabled swipe on the exact PR head using a fresh arm64 regtest emulator.
  • 2. Send Confirm → swipe to accept: the request broadcast exactly once as the sole mempool transaction with the exact 15,000-sat invoice output, confirmed after one regtest block, reached Paykit confirmed/1, completed Locks, and returned HTTP 200 for the guarded resource.
  • 3. Invalid or unaffordable incoming on-chain Payment Request → open request: confirmation remains blocked.

Automated Checks

  • AppViewModelSendFlowTest.kt: covers the payable resolved on-chain state, fixed request amount, endpoint, private contact context, and unaffordable block.
  • just compile: passes.
  • just test: passes all 2,267 tests.
  • just lint: passes with existing baseline findings outside this change.
  • ./gradlew assembleDevDebug: passes.
  • Dev APK launch smoke on an isolated sdk_gphone64_arm64 regtest emulator: passes with MainActivity resumed and no fatal or ANR logs.

@ovitrif
ovitrif marked this pull request as draft September 2, 2026 08:39
@greptile-apps

greptile-appsBot commented Sep 2, 2026

Copy link
Copy Markdown

Greptile Summary

This PR enables confirmation for validated, affordable incoming on-chain Paykit payment requests.

  • Persists successful amount validation before opening Send Confirm.
  • Adds regression coverage for payable and unaffordable incoming on-chain requests.
  • Adds a user-facing changelog fragment.

Confidence Score: 5/5

The PR appears safe to merge.

No blocking failure remains.

Important Files Changed

FilenameOverview
app/src/main/java/to/bitkit/viewmodels/AppViewModel.ktMarks the fixed incoming-request amount valid only after the existing validation and affordability checks succeed.
app/src/test/java/to/bitkit/viewmodels/AppViewModelSendFlowTest.ktAdds focused coverage for successful on-chain confirmation state and rejection of an unaffordable request.
changelog.d/next/1221.fixed.mdDocuments that affordable incoming on-chain payment requests can now be confirmed.

Reviews (3): Last reviewed commit: "fix: enable onchain request swipe (#1218..." | Re-trigger Greptile

@ovitrif
ovitrif marked this pull request as ready for review September 2, 2026 09:12
@ovitrif

Copy link
Copy Markdown
CollaboratorAuthor

I am closing this PR as superseded by #1178. I created it from the live disabled-swipe defect observed on the then-current master; it supplied a one-line fix, focused regression coverage, and successful marketplace end-to-end evidence. The then-open #1178 already contained the production-equivalent fix e041150 and later merged it, together with positive regression 10ff0df, into master at 9698dea. My initial overlap check did not catch the matching change inside that open PR. This PR therefore no longer has an independent product deliverable, and retaining a conflicting branch only for incremental negative coverage is not warranted. No product behavior or validation evidence is lost.

@ovitrifovitrif closed this Sep 2, 2026
@ovitrifovitrif reopened this Sep 2, 2026
@ovitrif
ovitrif marked this pull request as draft September 2, 2026 10:28
@ovitrifovitrif closed this Sep 2, 2026
@ovitrifovitrif reopened this Sep 2, 2026
@ovitrif

Copy link
Copy Markdown
CollaboratorAuthor

Re-closing after task automation reopened this PR while producing a local APK. The supersession decision above remains unchanged: merged #1178 owns the production fix and regression coverage, so this PR stays closed without merge.

@ovitrifovitrif closed this Sep 2, 2026
Sign up for freeto 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.

fix: enable incoming on-chain request swipe

1 participant

@ovitrif
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

fix: enable incoming onchain request swipe - #1221

Closed
ovitrif wants to merge 1 commit into
masterfrom
codex/1218-incoming-onchain-request-swipe
Closed

fix: enable incoming onchain request swipe#1221
ovitrif wants to merge 1 commit into
masterfrom
codex/1218-incoming-onchain-request-swipe

Conversation

@ovitrif

@ovitrifovitrif commented Sep 2, 2026

Copy link
Copy Markdown
Collaborator

Fixes#1218

This PR persists successful amount validation for incoming on-chain Paykit Payment Requests, enabling the confirmation swipe only after the existing request validation and affordability checks pass.

Description

  • Marks a valid, affordable incoming on-chain request amount as input-valid immediately before opening Send Confirm.
  • Preserves the resolved endpoint, fixed request amount, private contact context, and existing acceptance ordering.
  • Keeps invalid and unaffordable incoming requests blocked.
  • Adds focused regression coverage and one user-facing changelog fragment.

Preview

QA Notes

Manual Tests

  • 1. Pubky marketplace → open a valid incoming on-chain Payment Request: Send Confirm showed the seller, resolved endpoint, exactly 15,000 sats, and an enabled swipe on the exact PR head using a fresh arm64 regtest emulator.
  • 2. Send Confirm → swipe to accept: the request broadcast exactly once as the sole mempool transaction with the exact 15,000-sat invoice output, confirmed after one regtest block, reached Paykit confirmed/1, completed Locks, and returned HTTP 200 for the guarded resource.
  • 3. Invalid or unaffordable incoming on-chain Payment Request → open request: confirmation remains blocked.

Automated Checks

  • AppViewModelSendFlowTest.kt: covers the payable resolved on-chain state, fixed request amount, endpoint, private contact context, and unaffordable block.
  • just compile: passes.
  • just test: passes all 2,267 tests.
  • just lint: passes with existing baseline findings outside this change.
  • ./gradlew assembleDevDebug: passes.
  • Dev APK launch smoke on an isolated sdk_gphone64_arm64 regtest emulator: passes with MainActivity resumed and no fatal or ANR logs.

@ovitrif
ovitrif marked this pull request as draft September 2, 2026 08:39
@greptile-apps

greptile-appsBot commented Sep 2, 2026

Copy link
Copy Markdown

Greptile Summary

This PR enables confirmation for validated, affordable incoming on-chain Paykit payment requests.

  • Persists successful amount validation before opening Send Confirm.
  • Adds regression coverage for payable and unaffordable incoming on-chain requests.
  • Adds a user-facing changelog fragment.

Confidence Score: 5/5

The PR appears safe to merge.

No blocking failure remains.

Important Files Changed

FilenameOverview
app/src/main/java/to/bitkit/viewmodels/AppViewModel.ktMarks the fixed incoming-request amount valid only after the existing validation and affordability checks succeed.
app/src/test/java/to/bitkit/viewmodels/AppViewModelSendFlowTest.ktAdds focused coverage for successful on-chain confirmation state and rejection of an unaffordable request.
changelog.d/next/1221.fixed.mdDocuments that affordable incoming on-chain payment requests can now be confirmed.

Reviews (3): Last reviewed commit: "fix: enable onchain request swipe (#1218..." | Re-trigger Greptile

@ovitrif
ovitrif marked this pull request as ready for review September 2, 2026 09:12
@ovitrif

Copy link
Copy Markdown
CollaboratorAuthor

I am closing this PR as superseded by #1178. I created it from the live disabled-swipe defect observed on the then-current master; it supplied a one-line fix, focused regression coverage, and successful marketplace end-to-end evidence. The then-open #1178 already contained the production-equivalent fix e041150 and later merged it, together with positive regression 10ff0df, into master at 9698dea. My initial overlap check did not catch the matching change inside that open PR. This PR therefore no longer has an independent product deliverable, and retaining a conflicting branch only for incremental negative coverage is not warranted. No product behavior or validation evidence is lost.

@ovitrifovitrif closed this Sep 2, 2026
@ovitrifovitrif reopened this Sep 2, 2026
@ovitrif
ovitrif marked this pull request as draft September 2, 2026 10:28
@ovitrifovitrif closed this Sep 2, 2026
@ovitrifovitrif reopened this Sep 2, 2026
@ovitrif

Copy link
Copy Markdown
CollaboratorAuthor

Re-closing after task automation reopened this PR while producing a local APK. The supersession decision above remains unchanged: merged #1178 owns the production fix and regression coverage, so this PR stays closed without merge.

@ovitrifovitrif closed this Sep 2, 2026
Sign up for freeto 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.

fix: enable incoming on-chain request swipe

1 participant

@ovitrif
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

fix: enable incoming onchain request swipe - #1221

Closed
ovitrif wants to merge 1 commit into
masterfrom
codex/1218-incoming-onchain-request-swipe
Closed

fix: enable incoming onchain request swipe#1221
ovitrif wants to merge 1 commit into
masterfrom
codex/1218-incoming-onchain-request-swipe

Conversation

@ovitrif

@ovitrifovitrif commented Sep 2, 2026

Copy link
Copy Markdown
Collaborator

Fixes#1218

This PR persists successful amount validation for incoming on-chain Paykit Payment Requests, enabling the confirmation swipe only after the existing request validation and affordability checks pass.

Description

  • Marks a valid, affordable incoming on-chain request amount as input-valid immediately before opening Send Confirm.
  • Preserves the resolved endpoint, fixed request amount, private contact context, and existing acceptance ordering.
  • Keeps invalid and unaffordable incoming requests blocked.
  • Adds focused regression coverage and one user-facing changelog fragment.

Preview

QA Notes

Manual Tests

  • 1. Pubky marketplace → open a valid incoming on-chain Payment Request: Send Confirm showed the seller, resolved endpoint, exactly 15,000 sats, and an enabled swipe on the exact PR head using a fresh arm64 regtest emulator.
  • 2. Send Confirm → swipe to accept: the request broadcast exactly once as the sole mempool transaction with the exact 15,000-sat invoice output, confirmed after one regtest block, reached Paykit confirmed/1, completed Locks, and returned HTTP 200 for the guarded resource.
  • 3. Invalid or unaffordable incoming on-chain Payment Request → open request: confirmation remains blocked.

Automated Checks

  • AppViewModelSendFlowTest.kt: covers the payable resolved on-chain state, fixed request amount, endpoint, private contact context, and unaffordable block.
  • just compile: passes.
  • just test: passes all 2,267 tests.
  • just lint: passes with existing baseline findings outside this change.
  • ./gradlew assembleDevDebug: passes.
  • Dev APK launch smoke on an isolated sdk_gphone64_arm64 regtest emulator: passes with MainActivity resumed and no fatal or ANR logs.

@ovitrif
ovitrif marked this pull request as draft September 2, 2026 08:39
@greptile-apps

greptile-appsBot commented Sep 2, 2026

Copy link
Copy Markdown

Greptile Summary

This PR enables confirmation for validated, affordable incoming on-chain Paykit payment requests.

  • Persists successful amount validation before opening Send Confirm.
  • Adds regression coverage for payable and unaffordable incoming on-chain requests.
  • Adds a user-facing changelog fragment.

Confidence Score: 5/5

The PR appears safe to merge.

No blocking failure remains.

Important Files Changed

FilenameOverview
app/src/main/java/to/bitkit/viewmodels/AppViewModel.ktMarks the fixed incoming-request amount valid only after the existing validation and affordability checks succeed.
app/src/test/java/to/bitkit/viewmodels/AppViewModelSendFlowTest.ktAdds focused coverage for successful on-chain confirmation state and rejection of an unaffordable request.
changelog.d/next/1221.fixed.mdDocuments that affordable incoming on-chain payment requests can now be confirmed.

Reviews (3): Last reviewed commit: "fix: enable onchain request swipe (#1218..." | Re-trigger Greptile

@ovitrif
ovitrif marked this pull request as ready for review September 2, 2026 09:12
@ovitrif

Copy link
Copy Markdown
CollaboratorAuthor

I am closing this PR as superseded by #1178. I created it from the live disabled-swipe defect observed on the then-current master; it supplied a one-line fix, focused regression coverage, and successful marketplace end-to-end evidence. The then-open #1178 already contained the production-equivalent fix e041150 and later merged it, together with positive regression 10ff0df, into master at 9698dea. My initial overlap check did not catch the matching change inside that open PR. This PR therefore no longer has an independent product deliverable, and retaining a conflicting branch only for incremental negative coverage is not warranted. No product behavior or validation evidence is lost.

@ovitrifovitrif closed this Sep 2, 2026
@ovitrifovitrif reopened this Sep 2, 2026
@ovitrif
ovitrif marked this pull request as draft September 2, 2026 10:28
@ovitrifovitrif closed this Sep 2, 2026
@ovitrifovitrif reopened this Sep 2, 2026
@ovitrif

Copy link
Copy Markdown
CollaboratorAuthor

Re-closing after task automation reopened this PR while producing a local APK. The supersession decision above remains unchanged: merged #1178 owns the production fix and regression coverage, so this PR stays closed without merge.

@ovitrifovitrif closed this Sep 2, 2026
Sign up for freeto 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.

fix: enable incoming on-chain request swipe

1 participant

@ovitrif
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

fix: enable incoming onchain request swipe - #1221

Closed
ovitrif wants to merge 1 commit into
masterfrom
codex/1218-incoming-onchain-request-swipe
Closed

fix: enable incoming onchain request swipe#1221
ovitrif wants to merge 1 commit into
masterfrom
codex/1218-incoming-onchain-request-swipe

Conversation

@ovitrif

@ovitrifovitrif commented Sep 2, 2026

Copy link
Copy Markdown
Collaborator

Fixes#1218

This PR persists successful amount validation for incoming on-chain Paykit Payment Requests, enabling the confirmation swipe only after the existing request validation and affordability checks pass.

Description

  • Marks a valid, affordable incoming on-chain request amount as input-valid immediately before opening Send Confirm.
  • Preserves the resolved endpoint, fixed request amount, private contact context, and existing acceptance ordering.
  • Keeps invalid and unaffordable incoming requests blocked.
  • Adds focused regression coverage and one user-facing changelog fragment.

Preview

QA Notes

Manual Tests

  • 1. Pubky marketplace → open a valid incoming on-chain Payment Request: Send Confirm showed the seller, resolved endpoint, exactly 15,000 sats, and an enabled swipe on the exact PR head using a fresh arm64 regtest emulator.
  • 2. Send Confirm → swipe to accept: the request broadcast exactly once as the sole mempool transaction with the exact 15,000-sat invoice output, confirmed after one regtest block, reached Paykit confirmed/1, completed Locks, and returned HTTP 200 for the guarded resource.
  • 3. Invalid or unaffordable incoming on-chain Payment Request → open request: confirmation remains blocked.

Automated Checks

  • AppViewModelSendFlowTest.kt: covers the payable resolved on-chain state, fixed request amount, endpoint, private contact context, and unaffordable block.
  • just compile: passes.
  • just test: passes all 2,267 tests.
  • just lint: passes with existing baseline findings outside this change.
  • ./gradlew assembleDevDebug: passes.
  • Dev APK launch smoke on an isolated sdk_gphone64_arm64 regtest emulator: passes with MainActivity resumed and no fatal or ANR logs.

@ovitrif
ovitrif marked this pull request as draft September 2, 2026 08:39
@greptile-apps

greptile-appsBot commented Sep 2, 2026

Copy link
Copy Markdown

Greptile Summary

This PR enables confirmation for validated, affordable incoming on-chain Paykit payment requests.

  • Persists successful amount validation before opening Send Confirm.
  • Adds regression coverage for payable and unaffordable incoming on-chain requests.
  • Adds a user-facing changelog fragment.

Confidence Score: 5/5

The PR appears safe to merge.

No blocking failure remains.

Important Files Changed

FilenameOverview
app/src/main/java/to/bitkit/viewmodels/AppViewModel.ktMarks the fixed incoming-request amount valid only after the existing validation and affordability checks succeed.
app/src/test/java/to/bitkit/viewmodels/AppViewModelSendFlowTest.ktAdds focused coverage for successful on-chain confirmation state and rejection of an unaffordable request.
changelog.d/next/1221.fixed.mdDocuments that affordable incoming on-chain payment requests can now be confirmed.

Reviews (3): Last reviewed commit: "fix: enable onchain request swipe (#1218..." | Re-trigger Greptile

@ovitrif
ovitrif marked this pull request as ready for review September 2, 2026 09:12
@ovitrif

Copy link
Copy Markdown
CollaboratorAuthor

I am closing this PR as superseded by #1178. I created it from the live disabled-swipe defect observed on the then-current master; it supplied a one-line fix, focused regression coverage, and successful marketplace end-to-end evidence. The then-open #1178 already contained the production-equivalent fix e041150 and later merged it, together with positive regression 10ff0df, into master at 9698dea. My initial overlap check did not catch the matching change inside that open PR. This PR therefore no longer has an independent product deliverable, and retaining a conflicting branch only for incremental negative coverage is not warranted. No product behavior or validation evidence is lost.

@ovitrifovitrif closed this Sep 2, 2026
@ovitrifovitrif reopened this Sep 2, 2026
@ovitrif
ovitrif marked this pull request as draft September 2, 2026 10:28
@ovitrifovitrif closed this Sep 2, 2026
@ovitrifovitrif reopened this Sep 2, 2026
@ovitrif

Copy link
Copy Markdown
CollaboratorAuthor

Re-closing after task automation reopened this PR while producing a local APK. The supersession decision above remains unchanged: merged #1178 owns the production fix and regression coverage, so this PR stays closed without merge.

@ovitrifovitrif closed this Sep 2, 2026
Sign up for freeto 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.

fix: enable incoming on-chain request swipe

1 participant

@ovitrif