chore: bump version 2.4.1 - #678

Closed
piotr-iohk wants to merge 8 commits into
masterfrom
release-2.4.1
Closed

chore: bump version 2.4.1#678
piotr-iohk wants to merge 8 commits into
masterfrom
release-2.4.1

Conversation

@piotr-iohk

@piotr-iohkpiotr-iohk commented Aug 21, 2026

Copy link
Copy Markdown
Collaborator

Bump version to 2.4.1 (build 196) for release.

This is a hotfix branch cut from v2.4.0, not from master. Do not merge this branch into master. Master already contains these commits plus 2.5.0 work. After store ship, open a small follow-up on master to insert ## [2.4.1], drop consumed changelog.d/next/ fragments, and bump master's version.

Description

  • CURRENT_PROJECT_VERSION: 195 → 196
  • MARKETING_VERSION: 2.4.0 → 2.4.1

Cherry-picked from master

Linked Issues/Tasks

N/A

Screenshot / Video

N/A

Made with Cursor

jvsena42and others added 6 commits August 21, 2026 08:39
…very
fix: stop auto-accepting stale monitors
Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
@greptile-apps

Copy link
Copy Markdown

Greptile Summary

This hotfix release advances Bitkit to version 2.4.1 (build 196) and incorporates security hardening from the listed master commits.

  • Pins the VSS client dependency to version 0.5.23.
  • Rejects stale channel-monitor recovery and unauthenticated VSS operation.
  • Preserves pending channel migrations when node setup fails.
  • Restricts shop payment messages and navigation to trusted Bitrefill origins and payment-request types.
  • Adds focused migration, shop-origin, payment-request, and payment-navigation tests.

Confidence Score: 5/5

The reviewed changes appear safe for their intended hotfix release branch, with no actionable defects identified.

The changed security boundaries, migration-consumption lifecycle, lock cleanup, authenticated VSS setup, dependency pin, and release metadata are internally consistent and covered by focused tests.

Important Files Changed

FilenameOverview
Bitkit/Components/ShopWebView.swiftAdds native sender-origin validation and restricts checkout navigation while leaving non-shop web views unrestricted.
Bitkit/Utilities/ShopOrigin.swiftCentralizes trusted Bitrefill host, message-origin, and main-frame navigation policies.
Bitkit/ViewModels/AppViewModel.swiftAdds a payment-only scan scope that rejects setup, authentication, gift, and other non-payment payloads before resetting send state.
Bitkit/Services/LightningService.swiftRemoves stale-monitor auto-acceptance, requires authenticated VSS setup, and releases the process lock when setup fails before creating a node.
Bitkit/Services/MigrationsService.swiftDefers deletion of pending channel migration data until the consuming setup operation succeeds.
Bitkit/Services/VssBackupClient.swiftRemoves the unauthenticated VSS fallback and consistently fails closed when LNURL-auth parameters are unavailable.
Bitkit.xcodeproj/project.pbxprojAdvances all relevant targets to version 2.4.1 build 196 and pins vss-rust-client-ffi to 0.5.23.

Sequence Diagram

sequenceDiagram
participant B as Bitrefill Embed
participant W as ShopWebView
participant O as ShopOrigin
participant A as AppViewModel
participant P as Payment Sheet
B->>W: postMessage(payment_intent)
W->>O: Validate frame and exact origin
alt Trusted embed origin
O-->>W: Allow
W->>A: handleScannedData(paymentRequests)
A->>A: Decode and validate payment type
A->>P: Open validated payment request
else Untrusted origin or request
O-->>W: Reject
W-->>B: Ignore or block navigation
end
Loading

Reviews (1): Last reviewed commit: "chore: version 2.4.1" | Re-trigger Greptile

@piotr-iohk

piotr-iohk commented Aug 21, 2026

Copy link
Copy Markdown
CollaboratorAuthor

@piotr-iohkpiotr-iohk self-assigned this Aug 21, 2026
@pwltr

Copy link
Copy Markdown
Contributor

Branch has conflicts with the base branch

@piotr-iohk

Copy link
Copy Markdown
CollaboratorAuthor

Branch has conflicts with the base branch

Expected. This branch was cut from v2.4.0, so it conflicts with master (already on the 2.5.0 train). We are not merging this PR.

The cherry-picked fixes are already on master via their original PRs. After store ship, a small follow-up on master will add ## [2.4.1] to the changelog and bump the version.

@piotr-iohk

piotr-iohk commented Aug 24, 2026

Copy link
Copy Markdown
CollaboratorAuthor

@ovitrifovitrif 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.

Reviewed manually, approved (using neutral review to block accidental merges)

@jvsena42jvsena42 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.

No new issues found in the port

Testing...

@jvsena42jvsena42 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.

✅ Approved

  • Performed basic tests on app startup/initialization for VSS setup
  • Bitrefill internal links navigation

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.

5 participants

@piotr-iohk@pwltr@ovitrif@jvsena42@ben-kaufman
, '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

chore: bump version 2.4.1 - #678

Closed
piotr-iohk wants to merge 8 commits into
masterfrom
release-2.4.1
Closed

chore: bump version 2.4.1#678
piotr-iohk wants to merge 8 commits into
masterfrom
release-2.4.1

Conversation

@piotr-iohk

@piotr-iohkpiotr-iohk commented Aug 21, 2026

Copy link
Copy Markdown
Collaborator

Bump version to 2.4.1 (build 196) for release.

This is a hotfix branch cut from v2.4.0, not from master. Do not merge this branch into master. Master already contains these commits plus 2.5.0 work. After store ship, open a small follow-up on master to insert ## [2.4.1], drop consumed changelog.d/next/ fragments, and bump master's version.

Description

  • CURRENT_PROJECT_VERSION: 195 → 196
  • MARKETING_VERSION: 2.4.0 → 2.4.1

Cherry-picked from master

Linked Issues/Tasks

N/A

Screenshot / Video

N/A

Made with Cursor

jvsena42and others added 6 commits August 21, 2026 08:39
…very
fix: stop auto-accepting stale monitors
Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
@greptile-apps

Copy link
Copy Markdown

Greptile Summary

This hotfix release advances Bitkit to version 2.4.1 (build 196) and incorporates security hardening from the listed master commits.

  • Pins the VSS client dependency to version 0.5.23.
  • Rejects stale channel-monitor recovery and unauthenticated VSS operation.
  • Preserves pending channel migrations when node setup fails.
  • Restricts shop payment messages and navigation to trusted Bitrefill origins and payment-request types.
  • Adds focused migration, shop-origin, payment-request, and payment-navigation tests.

Confidence Score: 5/5

The reviewed changes appear safe for their intended hotfix release branch, with no actionable defects identified.

The changed security boundaries, migration-consumption lifecycle, lock cleanup, authenticated VSS setup, dependency pin, and release metadata are internally consistent and covered by focused tests.

Important Files Changed

FilenameOverview
Bitkit/Components/ShopWebView.swiftAdds native sender-origin validation and restricts checkout navigation while leaving non-shop web views unrestricted.
Bitkit/Utilities/ShopOrigin.swiftCentralizes trusted Bitrefill host, message-origin, and main-frame navigation policies.
Bitkit/ViewModels/AppViewModel.swiftAdds a payment-only scan scope that rejects setup, authentication, gift, and other non-payment payloads before resetting send state.
Bitkit/Services/LightningService.swiftRemoves stale-monitor auto-acceptance, requires authenticated VSS setup, and releases the process lock when setup fails before creating a node.
Bitkit/Services/MigrationsService.swiftDefers deletion of pending channel migration data until the consuming setup operation succeeds.
Bitkit/Services/VssBackupClient.swiftRemoves the unauthenticated VSS fallback and consistently fails closed when LNURL-auth parameters are unavailable.
Bitkit.xcodeproj/project.pbxprojAdvances all relevant targets to version 2.4.1 build 196 and pins vss-rust-client-ffi to 0.5.23.

Sequence Diagram

sequenceDiagram
participant B as Bitrefill Embed
participant W as ShopWebView
participant O as ShopOrigin
participant A as AppViewModel
participant P as Payment Sheet
B->>W: postMessage(payment_intent)
W->>O: Validate frame and exact origin
alt Trusted embed origin
O-->>W: Allow
W->>A: handleScannedData(paymentRequests)
A->>A: Decode and validate payment type
A->>P: Open validated payment request
else Untrusted origin or request
O-->>W: Reject
W-->>B: Ignore or block navigation
end
Loading

Reviews (1): Last reviewed commit: "chore: version 2.4.1" | Re-trigger Greptile

@piotr-iohk

piotr-iohk commented Aug 21, 2026

Copy link
Copy Markdown
CollaboratorAuthor

@piotr-iohkpiotr-iohk self-assigned this Aug 21, 2026
@pwltr

Copy link
Copy Markdown
Contributor

Branch has conflicts with the base branch

@piotr-iohk

Copy link
Copy Markdown
CollaboratorAuthor

Branch has conflicts with the base branch

Expected. This branch was cut from v2.4.0, so it conflicts with master (already on the 2.5.0 train). We are not merging this PR.

The cherry-picked fixes are already on master via their original PRs. After store ship, a small follow-up on master will add ## [2.4.1] to the changelog and bump the version.

@piotr-iohk

piotr-iohk commented Aug 24, 2026

Copy link
Copy Markdown
CollaboratorAuthor

@ovitrifovitrif 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.

Reviewed manually, approved (using neutral review to block accidental merges)

@jvsena42jvsena42 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.

No new issues found in the port

Testing...

@jvsena42jvsena42 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.

✅ Approved

  • Performed basic tests on app startup/initialization for VSS setup
  • Bitrefill internal links navigation

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.

5 participants

@piotr-iohk@pwltr@ovitrif@jvsena42@ben-kaufman
, '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

chore: bump version 2.4.1 - #678

Closed
piotr-iohk wants to merge 8 commits into
masterfrom
release-2.4.1
Closed

chore: bump version 2.4.1#678
piotr-iohk wants to merge 8 commits into
masterfrom
release-2.4.1

Conversation

@piotr-iohk

@piotr-iohkpiotr-iohk commented Aug 21, 2026

Copy link
Copy Markdown
Collaborator

Bump version to 2.4.1 (build 196) for release.

This is a hotfix branch cut from v2.4.0, not from master. Do not merge this branch into master. Master already contains these commits plus 2.5.0 work. After store ship, open a small follow-up on master to insert ## [2.4.1], drop consumed changelog.d/next/ fragments, and bump master's version.

Description

  • CURRENT_PROJECT_VERSION: 195 → 196
  • MARKETING_VERSION: 2.4.0 → 2.4.1

Cherry-picked from master

Linked Issues/Tasks

N/A

Screenshot / Video

N/A

Made with Cursor

jvsena42and others added 6 commits August 21, 2026 08:39
…very
fix: stop auto-accepting stale monitors
Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
@greptile-apps

Copy link
Copy Markdown

Greptile Summary

This hotfix release advances Bitkit to version 2.4.1 (build 196) and incorporates security hardening from the listed master commits.

  • Pins the VSS client dependency to version 0.5.23.
  • Rejects stale channel-monitor recovery and unauthenticated VSS operation.
  • Preserves pending channel migrations when node setup fails.
  • Restricts shop payment messages and navigation to trusted Bitrefill origins and payment-request types.
  • Adds focused migration, shop-origin, payment-request, and payment-navigation tests.

Confidence Score: 5/5

The reviewed changes appear safe for their intended hotfix release branch, with no actionable defects identified.

The changed security boundaries, migration-consumption lifecycle, lock cleanup, authenticated VSS setup, dependency pin, and release metadata are internally consistent and covered by focused tests.

Important Files Changed

FilenameOverview
Bitkit/Components/ShopWebView.swiftAdds native sender-origin validation and restricts checkout navigation while leaving non-shop web views unrestricted.
Bitkit/Utilities/ShopOrigin.swiftCentralizes trusted Bitrefill host, message-origin, and main-frame navigation policies.
Bitkit/ViewModels/AppViewModel.swiftAdds a payment-only scan scope that rejects setup, authentication, gift, and other non-payment payloads before resetting send state.
Bitkit/Services/LightningService.swiftRemoves stale-monitor auto-acceptance, requires authenticated VSS setup, and releases the process lock when setup fails before creating a node.
Bitkit/Services/MigrationsService.swiftDefers deletion of pending channel migration data until the consuming setup operation succeeds.
Bitkit/Services/VssBackupClient.swiftRemoves the unauthenticated VSS fallback and consistently fails closed when LNURL-auth parameters are unavailable.
Bitkit.xcodeproj/project.pbxprojAdvances all relevant targets to version 2.4.1 build 196 and pins vss-rust-client-ffi to 0.5.23.

Sequence Diagram

sequenceDiagram
participant B as Bitrefill Embed
participant W as ShopWebView
participant O as ShopOrigin
participant A as AppViewModel
participant P as Payment Sheet
B->>W: postMessage(payment_intent)
W->>O: Validate frame and exact origin
alt Trusted embed origin
O-->>W: Allow
W->>A: handleScannedData(paymentRequests)
A->>A: Decode and validate payment type
A->>P: Open validated payment request
else Untrusted origin or request
O-->>W: Reject
W-->>B: Ignore or block navigation
end
Loading

Reviews (1): Last reviewed commit: "chore: version 2.4.1" | Re-trigger Greptile

@piotr-iohk

piotr-iohk commented Aug 21, 2026

Copy link
Copy Markdown
CollaboratorAuthor

@piotr-iohkpiotr-iohk self-assigned this Aug 21, 2026
@pwltr

Copy link
Copy Markdown
Contributor

Branch has conflicts with the base branch

@piotr-iohk

Copy link
Copy Markdown
CollaboratorAuthor

Branch has conflicts with the base branch

Expected. This branch was cut from v2.4.0, so it conflicts with master (already on the 2.5.0 train). We are not merging this PR.

The cherry-picked fixes are already on master via their original PRs. After store ship, a small follow-up on master will add ## [2.4.1] to the changelog and bump the version.

@piotr-iohk

piotr-iohk commented Aug 24, 2026

Copy link
Copy Markdown
CollaboratorAuthor

@ovitrifovitrif 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.

Reviewed manually, approved (using neutral review to block accidental merges)

@jvsena42jvsena42 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.

No new issues found in the port

Testing...

@jvsena42jvsena42 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.

✅ Approved

  • Performed basic tests on app startup/initialization for VSS setup
  • Bitrefill internal links navigation

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.

5 participants

@piotr-iohk@pwltr@ovitrif@jvsena42@ben-kaufman
, '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

chore: bump version 2.4.1 - #678

Closed
piotr-iohk wants to merge 8 commits into
masterfrom
release-2.4.1
Closed

chore: bump version 2.4.1#678
piotr-iohk wants to merge 8 commits into
masterfrom
release-2.4.1

Conversation

@piotr-iohk

@piotr-iohkpiotr-iohk commented Aug 21, 2026

Copy link
Copy Markdown
Collaborator

Bump version to 2.4.1 (build 196) for release.

This is a hotfix branch cut from v2.4.0, not from master. Do not merge this branch into master. Master already contains these commits plus 2.5.0 work. After store ship, open a small follow-up on master to insert ## [2.4.1], drop consumed changelog.d/next/ fragments, and bump master's version.

Description

  • CURRENT_PROJECT_VERSION: 195 → 196
  • MARKETING_VERSION: 2.4.0 → 2.4.1

Cherry-picked from master

Linked Issues/Tasks

N/A

Screenshot / Video

N/A

Made with Cursor

jvsena42and others added 6 commits August 21, 2026 08:39
…very
fix: stop auto-accepting stale monitors
Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
@greptile-apps

Copy link
Copy Markdown

Greptile Summary

This hotfix release advances Bitkit to version 2.4.1 (build 196) and incorporates security hardening from the listed master commits.

  • Pins the VSS client dependency to version 0.5.23.
  • Rejects stale channel-monitor recovery and unauthenticated VSS operation.
  • Preserves pending channel migrations when node setup fails.
  • Restricts shop payment messages and navigation to trusted Bitrefill origins and payment-request types.
  • Adds focused migration, shop-origin, payment-request, and payment-navigation tests.

Confidence Score: 5/5

The reviewed changes appear safe for their intended hotfix release branch, with no actionable defects identified.

The changed security boundaries, migration-consumption lifecycle, lock cleanup, authenticated VSS setup, dependency pin, and release metadata are internally consistent and covered by focused tests.

Important Files Changed

FilenameOverview
Bitkit/Components/ShopWebView.swiftAdds native sender-origin validation and restricts checkout navigation while leaving non-shop web views unrestricted.
Bitkit/Utilities/ShopOrigin.swiftCentralizes trusted Bitrefill host, message-origin, and main-frame navigation policies.
Bitkit/ViewModels/AppViewModel.swiftAdds a payment-only scan scope that rejects setup, authentication, gift, and other non-payment payloads before resetting send state.
Bitkit/Services/LightningService.swiftRemoves stale-monitor auto-acceptance, requires authenticated VSS setup, and releases the process lock when setup fails before creating a node.
Bitkit/Services/MigrationsService.swiftDefers deletion of pending channel migration data until the consuming setup operation succeeds.
Bitkit/Services/VssBackupClient.swiftRemoves the unauthenticated VSS fallback and consistently fails closed when LNURL-auth parameters are unavailable.
Bitkit.xcodeproj/project.pbxprojAdvances all relevant targets to version 2.4.1 build 196 and pins vss-rust-client-ffi to 0.5.23.

Sequence Diagram

sequenceDiagram
participant B as Bitrefill Embed
participant W as ShopWebView
participant O as ShopOrigin
participant A as AppViewModel
participant P as Payment Sheet
B->>W: postMessage(payment_intent)
W->>O: Validate frame and exact origin
alt Trusted embed origin
O-->>W: Allow
W->>A: handleScannedData(paymentRequests)
A->>A: Decode and validate payment type
A->>P: Open validated payment request
else Untrusted origin or request
O-->>W: Reject
W-->>B: Ignore or block navigation
end
Loading

Reviews (1): Last reviewed commit: "chore: version 2.4.1" | Re-trigger Greptile

@piotr-iohk

piotr-iohk commented Aug 21, 2026

Copy link
Copy Markdown
CollaboratorAuthor

@piotr-iohkpiotr-iohk self-assigned this Aug 21, 2026
@pwltr

Copy link
Copy Markdown
Contributor

Branch has conflicts with the base branch

@piotr-iohk

Copy link
Copy Markdown
CollaboratorAuthor

Branch has conflicts with the base branch

Expected. This branch was cut from v2.4.0, so it conflicts with master (already on the 2.5.0 train). We are not merging this PR.

The cherry-picked fixes are already on master via their original PRs. After store ship, a small follow-up on master will add ## [2.4.1] to the changelog and bump the version.

@piotr-iohk

piotr-iohk commented Aug 24, 2026

Copy link
Copy Markdown
CollaboratorAuthor

@ovitrifovitrif 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.

Reviewed manually, approved (using neutral review to block accidental merges)

@jvsena42jvsena42 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.

No new issues found in the port

Testing...

@jvsena42jvsena42 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.

✅ Approved

  • Performed basic tests on app startup/initialization for VSS setup
  • Bitrefill internal links navigation

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.

5 participants

@piotr-iohk@pwltr@ovitrif@jvsena42@ben-kaufman
, '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

chore: bump version 2.4.1 - #678

Closed
piotr-iohk wants to merge 8 commits into
masterfrom
release-2.4.1
Closed

chore: bump version 2.4.1#678
piotr-iohk wants to merge 8 commits into
masterfrom
release-2.4.1

Conversation

@piotr-iohk

@piotr-iohkpiotr-iohk commented Aug 21, 2026

Copy link
Copy Markdown
Collaborator

Bump version to 2.4.1 (build 196) for release.

This is a hotfix branch cut from v2.4.0, not from master. Do not merge this branch into master. Master already contains these commits plus 2.5.0 work. After store ship, open a small follow-up on master to insert ## [2.4.1], drop consumed changelog.d/next/ fragments, and bump master's version.

Description

  • CURRENT_PROJECT_VERSION: 195 → 196
  • MARKETING_VERSION: 2.4.0 → 2.4.1

Cherry-picked from master

Linked Issues/Tasks

N/A

Screenshot / Video

N/A

Made with Cursor

jvsena42and others added 6 commits August 21, 2026 08:39
…very
fix: stop auto-accepting stale monitors
Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
@greptile-apps

Copy link
Copy Markdown

Greptile Summary

This hotfix release advances Bitkit to version 2.4.1 (build 196) and incorporates security hardening from the listed master commits.

  • Pins the VSS client dependency to version 0.5.23.
  • Rejects stale channel-monitor recovery and unauthenticated VSS operation.
  • Preserves pending channel migrations when node setup fails.
  • Restricts shop payment messages and navigation to trusted Bitrefill origins and payment-request types.
  • Adds focused migration, shop-origin, payment-request, and payment-navigation tests.

Confidence Score: 5/5

The reviewed changes appear safe for their intended hotfix release branch, with no actionable defects identified.

The changed security boundaries, migration-consumption lifecycle, lock cleanup, authenticated VSS setup, dependency pin, and release metadata are internally consistent and covered by focused tests.

Important Files Changed

FilenameOverview
Bitkit/Components/ShopWebView.swiftAdds native sender-origin validation and restricts checkout navigation while leaving non-shop web views unrestricted.
Bitkit/Utilities/ShopOrigin.swiftCentralizes trusted Bitrefill host, message-origin, and main-frame navigation policies.
Bitkit/ViewModels/AppViewModel.swiftAdds a payment-only scan scope that rejects setup, authentication, gift, and other non-payment payloads before resetting send state.
Bitkit/Services/LightningService.swiftRemoves stale-monitor auto-acceptance, requires authenticated VSS setup, and releases the process lock when setup fails before creating a node.
Bitkit/Services/MigrationsService.swiftDefers deletion of pending channel migration data until the consuming setup operation succeeds.
Bitkit/Services/VssBackupClient.swiftRemoves the unauthenticated VSS fallback and consistently fails closed when LNURL-auth parameters are unavailable.
Bitkit.xcodeproj/project.pbxprojAdvances all relevant targets to version 2.4.1 build 196 and pins vss-rust-client-ffi to 0.5.23.

Sequence Diagram

sequenceDiagram
participant B as Bitrefill Embed
participant W as ShopWebView
participant O as ShopOrigin
participant A as AppViewModel
participant P as Payment Sheet
B->>W: postMessage(payment_intent)
W->>O: Validate frame and exact origin
alt Trusted embed origin
O-->>W: Allow
W->>A: handleScannedData(paymentRequests)
A->>A: Decode and validate payment type
A->>P: Open validated payment request
else Untrusted origin or request
O-->>W: Reject
W-->>B: Ignore or block navigation
end
Loading

Reviews (1): Last reviewed commit: "chore: version 2.4.1" | Re-trigger Greptile

@piotr-iohk

piotr-iohk commented Aug 21, 2026

Copy link
Copy Markdown
CollaboratorAuthor

@piotr-iohkpiotr-iohk self-assigned this Aug 21, 2026
@pwltr

Copy link
Copy Markdown
Contributor

Branch has conflicts with the base branch

@piotr-iohk

Copy link
Copy Markdown
CollaboratorAuthor

Branch has conflicts with the base branch

Expected. This branch was cut from v2.4.0, so it conflicts with master (already on the 2.5.0 train). We are not merging this PR.

The cherry-picked fixes are already on master via their original PRs. After store ship, a small follow-up on master will add ## [2.4.1] to the changelog and bump the version.

@piotr-iohk

piotr-iohk commented Aug 24, 2026

Copy link
Copy Markdown
CollaboratorAuthor

@ovitrifovitrif 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.

Reviewed manually, approved (using neutral review to block accidental merges)

@jvsena42jvsena42 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.

No new issues found in the port

Testing...

@jvsena42jvsena42 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.

✅ Approved

  • Performed basic tests on app startup/initialization for VSS setup
  • Bitrefill internal links navigation

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.

5 participants

@piotr-iohk@pwltr@ovitrif@jvsena42@ben-kaufman
, '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

chore: bump version 2.4.1 - #678

Closed
piotr-iohk wants to merge 8 commits into
masterfrom
release-2.4.1
Closed

chore: bump version 2.4.1#678
piotr-iohk wants to merge 8 commits into
masterfrom
release-2.4.1

Conversation

@piotr-iohk

@piotr-iohkpiotr-iohk commented Aug 21, 2026

Copy link
Copy Markdown
Collaborator

Bump version to 2.4.1 (build 196) for release.

This is a hotfix branch cut from v2.4.0, not from master. Do not merge this branch into master. Master already contains these commits plus 2.5.0 work. After store ship, open a small follow-up on master to insert ## [2.4.1], drop consumed changelog.d/next/ fragments, and bump master's version.

Description

  • CURRENT_PROJECT_VERSION: 195 → 196
  • MARKETING_VERSION: 2.4.0 → 2.4.1

Cherry-picked from master

Linked Issues/Tasks

N/A

Screenshot / Video

N/A

Made with Cursor

jvsena42and others added 6 commits August 21, 2026 08:39
…very
fix: stop auto-accepting stale monitors
Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
@greptile-apps

Copy link
Copy Markdown

Greptile Summary

This hotfix release advances Bitkit to version 2.4.1 (build 196) and incorporates security hardening from the listed master commits.

  • Pins the VSS client dependency to version 0.5.23.
  • Rejects stale channel-monitor recovery and unauthenticated VSS operation.
  • Preserves pending channel migrations when node setup fails.
  • Restricts shop payment messages and navigation to trusted Bitrefill origins and payment-request types.
  • Adds focused migration, shop-origin, payment-request, and payment-navigation tests.

Confidence Score: 5/5

The reviewed changes appear safe for their intended hotfix release branch, with no actionable defects identified.

The changed security boundaries, migration-consumption lifecycle, lock cleanup, authenticated VSS setup, dependency pin, and release metadata are internally consistent and covered by focused tests.

Important Files Changed

FilenameOverview
Bitkit/Components/ShopWebView.swiftAdds native sender-origin validation and restricts checkout navigation while leaving non-shop web views unrestricted.
Bitkit/Utilities/ShopOrigin.swiftCentralizes trusted Bitrefill host, message-origin, and main-frame navigation policies.
Bitkit/ViewModels/AppViewModel.swiftAdds a payment-only scan scope that rejects setup, authentication, gift, and other non-payment payloads before resetting send state.
Bitkit/Services/LightningService.swiftRemoves stale-monitor auto-acceptance, requires authenticated VSS setup, and releases the process lock when setup fails before creating a node.
Bitkit/Services/MigrationsService.swiftDefers deletion of pending channel migration data until the consuming setup operation succeeds.
Bitkit/Services/VssBackupClient.swiftRemoves the unauthenticated VSS fallback and consistently fails closed when LNURL-auth parameters are unavailable.
Bitkit.xcodeproj/project.pbxprojAdvances all relevant targets to version 2.4.1 build 196 and pins vss-rust-client-ffi to 0.5.23.

Sequence Diagram

sequenceDiagram
participant B as Bitrefill Embed
participant W as ShopWebView
participant O as ShopOrigin
participant A as AppViewModel
participant P as Payment Sheet
B->>W: postMessage(payment_intent)
W->>O: Validate frame and exact origin
alt Trusted embed origin
O-->>W: Allow
W->>A: handleScannedData(paymentRequests)
A->>A: Decode and validate payment type
A->>P: Open validated payment request
else Untrusted origin or request
O-->>W: Reject
W-->>B: Ignore or block navigation
end
Loading

Reviews (1): Last reviewed commit: "chore: version 2.4.1" | Re-trigger Greptile

@piotr-iohk

piotr-iohk commented Aug 21, 2026

Copy link
Copy Markdown
CollaboratorAuthor

@piotr-iohkpiotr-iohk self-assigned this Aug 21, 2026
@pwltr

Copy link
Copy Markdown
Contributor

Branch has conflicts with the base branch

@piotr-iohk

Copy link
Copy Markdown
CollaboratorAuthor

Branch has conflicts with the base branch

Expected. This branch was cut from v2.4.0, so it conflicts with master (already on the 2.5.0 train). We are not merging this PR.

The cherry-picked fixes are already on master via their original PRs. After store ship, a small follow-up on master will add ## [2.4.1] to the changelog and bump the version.

@piotr-iohk

piotr-iohk commented Aug 24, 2026

Copy link
Copy Markdown
CollaboratorAuthor

@ovitrifovitrif 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.

Reviewed manually, approved (using neutral review to block accidental merges)

@jvsena42jvsena42 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.

No new issues found in the port

Testing...

@jvsena42jvsena42 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.

✅ Approved

  • Performed basic tests on app startup/initialization for VSS setup
  • Bitrefill internal links navigation

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.

5 participants

@piotr-iohk@pwltr@ovitrif@jvsena42@ben-kaufman
, '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

chore: bump version 2.4.1 - #678

Closed
piotr-iohk wants to merge 8 commits into
masterfrom
release-2.4.1
Closed

chore: bump version 2.4.1#678
piotr-iohk wants to merge 8 commits into
masterfrom
release-2.4.1

Conversation

@piotr-iohk

@piotr-iohkpiotr-iohk commented Aug 21, 2026

Copy link
Copy Markdown
Collaborator

Bump version to 2.4.1 (build 196) for release.

This is a hotfix branch cut from v2.4.0, not from master. Do not merge this branch into master. Master already contains these commits plus 2.5.0 work. After store ship, open a small follow-up on master to insert ## [2.4.1], drop consumed changelog.d/next/ fragments, and bump master's version.

Description

  • CURRENT_PROJECT_VERSION: 195 → 196
  • MARKETING_VERSION: 2.4.0 → 2.4.1

Cherry-picked from master

Linked Issues/Tasks

N/A

Screenshot / Video

N/A

Made with Cursor

jvsena42and others added 6 commits August 21, 2026 08:39
…very
fix: stop auto-accepting stale monitors
Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
@greptile-apps

Copy link
Copy Markdown

Greptile Summary

This hotfix release advances Bitkit to version 2.4.1 (build 196) and incorporates security hardening from the listed master commits.

  • Pins the VSS client dependency to version 0.5.23.
  • Rejects stale channel-monitor recovery and unauthenticated VSS operation.
  • Preserves pending channel migrations when node setup fails.
  • Restricts shop payment messages and navigation to trusted Bitrefill origins and payment-request types.
  • Adds focused migration, shop-origin, payment-request, and payment-navigation tests.

Confidence Score: 5/5

The reviewed changes appear safe for their intended hotfix release branch, with no actionable defects identified.

The changed security boundaries, migration-consumption lifecycle, lock cleanup, authenticated VSS setup, dependency pin, and release metadata are internally consistent and covered by focused tests.

Important Files Changed

FilenameOverview
Bitkit/Components/ShopWebView.swiftAdds native sender-origin validation and restricts checkout navigation while leaving non-shop web views unrestricted.
Bitkit/Utilities/ShopOrigin.swiftCentralizes trusted Bitrefill host, message-origin, and main-frame navigation policies.
Bitkit/ViewModels/AppViewModel.swiftAdds a payment-only scan scope that rejects setup, authentication, gift, and other non-payment payloads before resetting send state.
Bitkit/Services/LightningService.swiftRemoves stale-monitor auto-acceptance, requires authenticated VSS setup, and releases the process lock when setup fails before creating a node.
Bitkit/Services/MigrationsService.swiftDefers deletion of pending channel migration data until the consuming setup operation succeeds.
Bitkit/Services/VssBackupClient.swiftRemoves the unauthenticated VSS fallback and consistently fails closed when LNURL-auth parameters are unavailable.
Bitkit.xcodeproj/project.pbxprojAdvances all relevant targets to version 2.4.1 build 196 and pins vss-rust-client-ffi to 0.5.23.

Sequence Diagram

sequenceDiagram
participant B as Bitrefill Embed
participant W as ShopWebView
participant O as ShopOrigin
participant A as AppViewModel
participant P as Payment Sheet
B->>W: postMessage(payment_intent)
W->>O: Validate frame and exact origin
alt Trusted embed origin
O-->>W: Allow
W->>A: handleScannedData(paymentRequests)
A->>A: Decode and validate payment type
A->>P: Open validated payment request
else Untrusted origin or request
O-->>W: Reject
W-->>B: Ignore or block navigation
end
Loading

Reviews (1): Last reviewed commit: "chore: version 2.4.1" | Re-trigger Greptile

@piotr-iohk

piotr-iohk commented Aug 21, 2026

Copy link
Copy Markdown
CollaboratorAuthor

@piotr-iohkpiotr-iohk self-assigned this Aug 21, 2026
@pwltr

Copy link
Copy Markdown
Contributor

Branch has conflicts with the base branch

@piotr-iohk

Copy link
Copy Markdown
CollaboratorAuthor

Branch has conflicts with the base branch

Expected. This branch was cut from v2.4.0, so it conflicts with master (already on the 2.5.0 train). We are not merging this PR.

The cherry-picked fixes are already on master via their original PRs. After store ship, a small follow-up on master will add ## [2.4.1] to the changelog and bump the version.

@piotr-iohk

piotr-iohk commented Aug 24, 2026

Copy link
Copy Markdown
CollaboratorAuthor

@ovitrifovitrif 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.

Reviewed manually, approved (using neutral review to block accidental merges)

@jvsena42jvsena42 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.

No new issues found in the port

Testing...

@jvsena42jvsena42 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.

✅ Approved

  • Performed basic tests on app startup/initialization for VSS setup
  • Bitrefill internal links navigation

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.

5 participants

@piotr-iohk@pwltr@ovitrif@jvsena42@ben-kaufman
, '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

chore: bump version 2.4.1 - #678

Closed
piotr-iohk wants to merge 8 commits into
masterfrom
release-2.4.1
Closed

chore: bump version 2.4.1#678
piotr-iohk wants to merge 8 commits into
masterfrom
release-2.4.1

Conversation

@piotr-iohk

@piotr-iohkpiotr-iohk commented Aug 21, 2026

Copy link
Copy Markdown
Collaborator

Bump version to 2.4.1 (build 196) for release.

This is a hotfix branch cut from v2.4.0, not from master. Do not merge this branch into master. Master already contains these commits plus 2.5.0 work. After store ship, open a small follow-up on master to insert ## [2.4.1], drop consumed changelog.d/next/ fragments, and bump master's version.

Description

  • CURRENT_PROJECT_VERSION: 195 → 196
  • MARKETING_VERSION: 2.4.0 → 2.4.1

Cherry-picked from master

Linked Issues/Tasks

N/A

Screenshot / Video

N/A

Made with Cursor

jvsena42and others added 6 commits August 21, 2026 08:39
…very
fix: stop auto-accepting stale monitors
Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
@greptile-apps

Copy link
Copy Markdown

Greptile Summary

This hotfix release advances Bitkit to version 2.4.1 (build 196) and incorporates security hardening from the listed master commits.

  • Pins the VSS client dependency to version 0.5.23.
  • Rejects stale channel-monitor recovery and unauthenticated VSS operation.
  • Preserves pending channel migrations when node setup fails.
  • Restricts shop payment messages and navigation to trusted Bitrefill origins and payment-request types.
  • Adds focused migration, shop-origin, payment-request, and payment-navigation tests.

Confidence Score: 5/5

The reviewed changes appear safe for their intended hotfix release branch, with no actionable defects identified.

The changed security boundaries, migration-consumption lifecycle, lock cleanup, authenticated VSS setup, dependency pin, and release metadata are internally consistent and covered by focused tests.

Important Files Changed

FilenameOverview
Bitkit/Components/ShopWebView.swiftAdds native sender-origin validation and restricts checkout navigation while leaving non-shop web views unrestricted.
Bitkit/Utilities/ShopOrigin.swiftCentralizes trusted Bitrefill host, message-origin, and main-frame navigation policies.
Bitkit/ViewModels/AppViewModel.swiftAdds a payment-only scan scope that rejects setup, authentication, gift, and other non-payment payloads before resetting send state.
Bitkit/Services/LightningService.swiftRemoves stale-monitor auto-acceptance, requires authenticated VSS setup, and releases the process lock when setup fails before creating a node.
Bitkit/Services/MigrationsService.swiftDefers deletion of pending channel migration data until the consuming setup operation succeeds.
Bitkit/Services/VssBackupClient.swiftRemoves the unauthenticated VSS fallback and consistently fails closed when LNURL-auth parameters are unavailable.
Bitkit.xcodeproj/project.pbxprojAdvances all relevant targets to version 2.4.1 build 196 and pins vss-rust-client-ffi to 0.5.23.

Sequence Diagram

sequenceDiagram
participant B as Bitrefill Embed
participant W as ShopWebView
participant O as ShopOrigin
participant A as AppViewModel
participant P as Payment Sheet
B->>W: postMessage(payment_intent)
W->>O: Validate frame and exact origin
alt Trusted embed origin
O-->>W: Allow
W->>A: handleScannedData(paymentRequests)
A->>A: Decode and validate payment type
A->>P: Open validated payment request
else Untrusted origin or request
O-->>W: Reject
W-->>B: Ignore or block navigation
end
Loading

Reviews (1): Last reviewed commit: "chore: version 2.4.1" | Re-trigger Greptile

@piotr-iohk

piotr-iohk commented Aug 21, 2026

Copy link
Copy Markdown
CollaboratorAuthor

@piotr-iohkpiotr-iohk self-assigned this Aug 21, 2026
@pwltr

Copy link
Copy Markdown
Contributor

Branch has conflicts with the base branch

@piotr-iohk

Copy link
Copy Markdown
CollaboratorAuthor

Branch has conflicts with the base branch

Expected. This branch was cut from v2.4.0, so it conflicts with master (already on the 2.5.0 train). We are not merging this PR.

The cherry-picked fixes are already on master via their original PRs. After store ship, a small follow-up on master will add ## [2.4.1] to the changelog and bump the version.

@piotr-iohk

piotr-iohk commented Aug 24, 2026

Copy link
Copy Markdown
CollaboratorAuthor

@ovitrifovitrif 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.

Reviewed manually, approved (using neutral review to block accidental merges)

@jvsena42jvsena42 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.

No new issues found in the port

Testing...

@jvsena42jvsena42 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.

✅ Approved

  • Performed basic tests on app startup/initialization for VSS setup
  • Bitrefill internal links navigation

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.

5 participants

@piotr-iohk@pwltr@ovitrif@jvsena42@ben-kaufman