chore: bump version 2.4.1 - #1174
Conversation
fix: update DataStore for 16 KB compatibility
fix: harden ldk node teardown on stop
fix: integrate ldk crash fixes
…overy fix: stop auto-accepting stale monitors
…time feat: increase background stop debounce time
…h-86ae fix: secure shop payments and locked links
fix: gate pubky auth handler
…ted-vss fix: fail closed without vss auth
fix: consume vss-client 0.5.23
Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
Greptile SummaryThis hotfix release bumps Bitkit to 2.4.1 (build 188) and cherry-picks security and stability fixes from master.
Confidence Score: 3/5This PR should not ship until the Electrum probe bounds remote response sizes to prevent a configured endpoint from exhausting application memory. The new probe reads arbitrary remote response data with unbounded readLine() calls, allowing a malicious custom Electrum endpoint to grow heap usage until the wallet crashes. Files Needing Attention: app/src/main/java/to/bitkit/services/ElectrumProbeService.kt
|
| Filename | Overview |
|---|---|
| app/src/main/java/to/bitkit/services/ElectrumProbeService.kt | Adds preflight Electrum validation, but reads attacker-controlled response lines without a size bound. |
| app/src/main/java/to/bitkit/repositories/LightningRepo.kt | Adds debounced stopping, serialized configuration changes, Electrum probing, and native-release gating. |
| app/src/main/java/to/bitkit/services/LightningService.kt | Makes teardown non-cancellable, explicitly releases native handles, gates rebuilds, and removes stale-monitor recovery. |
| app/src/main/java/to/bitkit/services/PubkyAuthHandlerRegistrar.kt | Dynamically enables the Pubky authorization alias only when Paykit, identity, and local-key requirements are met. |
| app/src/main/java/to/bitkit/ui/screens/shop/shopWebView/ShopWebViewInterface.kt | Replaces the broad JavaScript bridge with an origin-scoped WebMessageListener and fails closed when unsupported. |
| app/src/main/java/to/bitkit/viewmodels/AppViewModel.kt | Defers scans until authentication and serializes scan processing to prevent overlapping payment flows. |
| app/src/main/java/to/bitkit/data/backup/VssBackupClient.kt | Removes unauthenticated VSS fallback and fails closed when LNURL authentication is unavailable. |
| app/build.gradle.kts | Bumps the release to version 2.4.1/build 188 and adds AndroidX WebKit. |
Sequence Diagram
sequenceDiagram
actor User
participant UI as Electrum settings
participant Repo as LightningRepo
participant Probe as ElectrumProbeService
participant Server as Custom Electrum server
User->>UI: Enter or scan endpoint
UI->>Repo: restartWithElectrumServer(url)
Repo->>Probe: probe(parsed server)
Probe->>Server: server.version
Server-->>Probe: JSON-RPC response line
Probe->>Server: server.features
Server-->>Probe: JSON-RPC response line
alt Probe succeeds
Repo->>Repo: Stop and rebuild LDK node
Repo->>Repo: Persist server setting
else Probe fails
Repo-->>UI: Reject server without stopping node
end
Reviews (1): Last reviewed commit: "chore: version 2.4.1" | Re-trigger Greptile
|
E2E test run: https://github.com/synonymdev/bitkit-android/actions/runs/32469183566 ✅ |
fix: prevent crash during wallet backup
|
Test re-run after cherry-picking also: E2E test run: https://github.com/synonymdev/bitkit-android/actions/runs/32496087612 ⌛ |
| @IoDispatcher ioDispatcher: CoroutineDispatcher, | ||
| ) { | ||
| private val scope: CoroutineScope = appScope(ioDispatcher, TAG) | ||
| private val scope: CoroutineScope = CoroutineScope(ioDispatcher + SupervisorJob()) |
There was a problem hiding this comment.
regression from adaptation, should be appScope(ioDispatcher, TAG)
Bump version to 2.4.1 (build 188) 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 consumedchangelog.d/next/fragments, and bump master's version.Description
versionCode: 187 → 188versionName: 2.4.0 → 2.4.1Cherry-picked from master
ldk-node0.7.0-rc.62)Also on this branch:
fix: compile release-2.4.1 cherry-picks(strip 2.5.0 leftovers so the cherry-picks compile on 2.4.0).Preview
N/A
QA Notes
N/A
Made with Cursor