SW
← All projectsSparrow

Sparrow Wallet

Desktop Bitcoin wallet focused on security, privacy, multisignature, and hardware signers.

BitcoinHardware integrationSoftware walletsNormal
Repository coverage

410 commits in the local evidence base

Every captured commit receives deterministic security triage and a separate communication-quality score. Security candidates and broader second-pass signals receive full-patch Ollama analysis.

71security candidates271second-pass queue399AI analyses
88commits · 30 days
151commits · 60 days
249commits · 180 days
404commits · 365 days
Backfill bands
Aug 5 → Feb 6100 seen9 candidatesComplete
Feb 6 → Jun 6128 seen15 candidatesComplete
Jun 6 → Jul 67 seen1 candidatesComplete
Jul 6 → Aug 546 seen8 candidatesComplete
Commit communication

Does the history explain itself?

Message quality measures whether a commit identifies its scope, purpose, rationale, testing, and supporting references. It does not change the security-severity score.

48/100 average clarity
0Strong · 80–100
35Adequate · 60–79
324Thin · 40–59
51Opaque · 0–39
2security candidates with opaque commit messaging
Read the scoring rubric →
Developer activity

Who is changing the project?

Public Git author strings; identities are not independently verified.

DeveloperCommitsCandidatesAnalyzedHigh riskMessage avg.
Craig Raw39667385647
doblon8313048
nzb-tuxxx212060
Michele Balistreri212048
nroktib111050
Liz Lightning202045
PeterXMR101045
Ian McKenzie101050
ottosch101050
craigraw101060
Analysis record

Published AI watches

Last scanned 16 minutes ago

Informational 17 AI analysisMessage 50 · Thin
SW SparrowSparrow Wallet BitcoinHardware integrationSoftware wallets

remove the surplus signatures progress bar segments a finalized multisig transaction discards

This commit fixes a UI display bug in Sparrow Wallet's signature progress bar. When a multi-signature Bitcoin transaction becomes finalized, extra signatures beyond the required threshold are discarded. Previously, the progress bar did not…

UI state desynchronization after multisig finalizationProgress bar segment count mismatch with actual signature setNo change to cryptographic or transaction validation code
40f77206by Craig Raw+9−12 files
No security note in commit
Informational 15 AI analysisMessage 38 · Opaque
SW SparrowSparrow Wallet BitcoinHardware integrationSoftware wallets

bump to v2.5.6

This commit is a routine version bump from 2.5.5 to 2.5.6. It only changes version strings in four files (build configuration, documentation, macOS app metadata, and a Java source constant). There are no code logic changes, no bug fixes, a…

f7f36d00by Craig Raw+4−44 files
No security note in commit
Informational 17 AI analysisMessage 50 · Thin
SW SparrowSparrow Wallet BitcoinHardware integrationSoftware wallets

use a framerate-capped interpolated timeline for the server toggle and wallet tab loading pulse animations, and stop any running server toggle pulse before starting a new one

This commit tweaks two visual animations in the Sparrow Wallet desktop app: the server connection toggle pulse and the wallet loading pulse. It caps how often the screen is redrawn during the pulse and makes sure any already-running pulse …

Resource-consumption / performance hardening: capped animation framerate reduces CPU/GPU load from continuous 60 Hz redraws.State-management hardening: stopping an existing pulse before starting a new one prevents accumulation of running Timelines.No direct security flaw is present in the diff; signals are defensive-hardening in nature.
4da29f4eby Craig Raw+7−132 files
No security note in commit
Low 45 AI analysisMessage 50 · Thin
SW SparrowSparrow Wallet BitcoinHardware integrationSoftware wallets

cut pasted amounts to the unit precision in the send tab and send to many, and stop the csv import skipping fractional sats and exponent amounts

This commit fixes how Sparrow Wallet handles pasted or imported Bitcoin amounts. Previously, very small or oddly formatted amounts (like scientific notation '1e-8' or fractional satoshis) could be misread or silently skipped during CSV imp…

Amount parsing inconsistency between UI paste and CSV importSilent swallowing of NumberFormatException could skip payment rowsUse of Double.parseDouble for monetary amounts
9e999d3fby Craig Raw+39−362 files
No security note in commit
Informational 15 AI analysisMessage 50 · Thin
SW SparrowSparrow Wallet BitcoinHardware integrationSoftware wallets

add a system theme option that follows the os light or dark setting, and make it the default for new installs

This commit adds a new 'System' theme option to the Sparrow Wallet desktop app that automatically follows the operating system's light or dark mode setting, and makes it the default for new installations. It also updates various UI compone…

a573f22aby Craig Raw+90−3215 files
No security note in commit
Low 36 AI analysisMessage 50 · Thin
SW SparrowSparrow Wallet BitcoinHardware integrationSoftware wallets

refuse bitbox02 keystore import and discovery for legacy p2sh and p2pkh wallets it cannot sign for, and hide those script types from the device import menus

This commit tightens how Sparrow Wallet handles BitBox02 hardware wallets when working with older Bitcoin address formats (legacy P2PKH and P2SH). Previously, the app could let a user import or discover a wallet that the BitBox02 cannot ac…

Prevents user from configuring a signing device for wallet types the device cannot sign forCould avoid funds becoming unspendable or requiring complex recovery if a user unknowingly imported an unsupported legacy script typeReplaces hard-coded device-specific logic with a generic capability model, reducing future similar issues
de169b18by Craig Raw+23−73 files
No security note in commit
Low 37 AI analysisMessage 50 · Thin
SW SparrowSparrow Wallet BitcoinHardware integrationSoftware wallets

reject unknown command line options and values given to flags with an error and exit code instead of starting on the default network, and accept the --option=value form

This commit tightens how Sparrow Wallet handles command-line arguments. Previously, typos or unexpected values could silently be ignored, causing the wallet to start on the default Bitcoin network instead of the one the user intended. Now,…

Command-line argument parsing now rejects unknown options instead of silently ignoring themBoolean flags now reject `--flag=value` forms that would otherwise silently pass the value through as a file/URI argumentProgram now exits with non-zero status on argument errors, reducing risk of unintended default-network startup
46197586by Craig Raw+26−12 files
No security note in commit
Low 37 AI analysisMessage 50 · Thin
SW SparrowSparrow Wallet BitcoinHardware integrationSoftware wallets

ignore amount digits beyond the selected unit precision in the send tab amount and fee fields and the send to many grid, instead of truncating them in the payment

This commit fixes a UI bug in the Sparrow Bitcoin wallet where typing or pasting too many decimal digits into amount or fee fields could be silently truncated, potentially causing a user to send a different amount than they saw on screen. …

Precision-loss / truncation bug in financial input fieldsUser-facing amount/fee mismatch between displayed value and parsed valueInput validation now tied to unit-specific precision (satoshis indivisible)
6cde97adby Craig Raw+48−315 files
No security note in commit
Low 41 AI analysisMessage 50 · Thin
SW SparrowSparrow Wallet BitcoinHardware integrationSoftware wallets

derive public keys from the seed when importing a sparrow wallet file

This commit changes how Sparrow Wallet restores its own wallet files. Previously, when importing a Sparrow wallet file, the public keys (used to find transactions and addresses) might not be correctly rebuilt from the seed phrase. The fix …

Correctness fix for key material restoration during wallet importAdds test coverage for encrypted and unencrypted seed-based wallet importAdds test coverage for watch-only wallet import
1fb4e8bbby Craig Raw+149−23 files
No security note in commit
Informational 21 AI analysisMessage 50 · Thin
SW SparrowSparrow Wallet BitcoinHardware integrationSoftware wallets

add file import of the xpub descriptor jade writes to usb storage

This commit adds the ability to import a Bitcoin wallet's extended public key (xpub) into Sparrow Wallet from a file written by a Blockstream Jade hardware wallet via USB storage. Previously, Jade only supported QR-code import. The change …

New file import path parses external descriptor data and converts it to a keystoreScript type mismatch is explicitly rejected with an IllegalArgumentExceptionSilent payments policy (SINGLE_SP) is explicitly rejected
c4b53879by Craig Raw+74−44 files
No security note in commit
Low 34 AI analysisMessage 50 · Thin
SW SparrowSparrow Wallet BitcoinHardware integrationSoftware wallets

include the non-witness utxo in psbts for krux keystores, and in the qr display when the psbt has more than one input

This commit changes how Sparrow Wallet builds QR codes for partially-signed Bitcoin transactions (PSBTs). For certain hardware wallets (Krux), it now includes extra data (the full previous transaction, called 'non-witness utxo') in the QR …

Hardware wallet signing correctness: missing non-witness UTXO data can cause some signers to reject or mis-handle multi-input segwit PSBTsQR payload size increase: larger QR codes may be harder to scan reliably, potentially affecting usabilitySubproject update (drongo) likely contains related serialization logic changes
0e2c402fby Craig Raw+4−32 files
No security note in commit
Low 35 AI analysisMessage 50 · Thin
SW SparrowSparrow Wallet BitcoinHardware integrationSoftware wallets

clear a scanned wallet when a file, text payload or unrecognised qr is imported in the same pane

This commit fixes a UI state bug in Sparrow Wallet's import pane. Previously, when a user scanned or imported a wallet and then imported a non-wallet file, text payload, or unrecognized QR code in the same pane, the previously loaded walle…

Stale UI state could mislead users about which wallet is loadedCross-import state retention in single import paneUser interface consistency fix with security-relevant consequences
d7ded1e7by Craig Raw+4−21 file
No security note in commit
Low 35 AI analysisMessage 50 · Thin
SW SparrowSparrow Wallet BitcoinHardware integrationSoftware wallets

lock the cormorant store against client connection reads and serve history as a copy, and close the client socket however its handler exits

This commit fixes two reliability issues in Sparrow Wallet's built-in Electrum server (Cormorant). First, it makes sure the internal transaction store is locked while being read or updated, and returns a fresh copy of a wallet's history so…

Concurrency: shared mutable store accessed by client handler and polling threads now synchronizedData consistency: history returned as a defensive copy to avoid iterator seeing concurrent modificationsResource leak: client socket now closed in finally block regardless of exception path
6cc4d50aby Craig Raw+57−94 files
No security note in commit
Low 44 AI analysisMessage 50 · Thin
SW SparrowSparrow Wallet BitcoinHardware integrationSoftware wallets

ensure cormorant responses and notifications are always serialized per client connection

This commit fixes a race condition in Sparrow Wallet's built-in Electrum server (Cormorant). Previously, a response to a wallet client and an asynchronous notification (like a new block or a balance update) could be written to the same net…

Race condition on shared socket output streamConcurrent writes from RPC response path and event-bus notification pathPotential interleaving/framing of JSON-RPC messages on same TCP connection
6d9d3014by Craig Raw+146−303 files
No security note in commit
Low 27 AI analysisMessage 50 · Thin
SW SparrowSparrow Wallet BitcoinHardware integrationSoftware wallets

wake a silent payments history waiter when a failed widening restores a completed scan, rather than leaving it parked for the session

This commit fixes a bug in Sparrow Wallet's silent-payments scanning cache. If a background scan had already finished, then a later 'widening' request to extend the scan failed and rolled back, any history request that arrived during the f…

Concurrency / condition-variable waiter starvationSilent-payments history lookup hang / wallet UI unresponsivenessFailure-recovery path missing signal on rollback
7868a94dby Craig Raw+100−122 files
No security note in commit
Informational 18 AI analysisMessage 60 · Adequate
SW SparrowSparrow Wallet BitcoinHardware integrationSoftware wallets

guard a short server.version response in the desktop and terminal connection tests

This commit fixes a minor crash bug in Sparrow Wallet's connection-test screens. Previously, if a Bitcoin Electrum server answered the version request with an unusually short response, the wallet would try to read list items that didn't ex…

Input validation hardening for external server responseIndexOutOfBoundsException prevented in UI feedback pathNo cryptographic, authentication, or transaction logic touched
66348fafby Craig Raw+4−42 files
No security note in commit
Low 37 AI analysisMessage 50 · Thin
SW SparrowSparrow Wallet BitcoinHardware integrationSoftware wallets

omit a paynym contact whose payment code does not parse rather than keeping it with a null code or failing the whole paynym response

This commit fixes a bug in Sparrow Wallet's PayNym (BIP47 reusable payment code) contact handling. Previously, if a single contact in your PayNym following/followers list had a malformed payment code, the app either kept a broken contact w…

Null payment code previously stored in contact objectPotential NullPointerException or downstream dereference of null PaymentCode in contact lists/searchWhole PayNym response could fail on one malformed contact
94ebb849by Craig Raw+43−114 files
No security note in commit
Informational 19 AI analysisMessage 50 · Thin
SW SparrowSparrow Wallet BitcoinHardware integrationSoftware wallets

skip the exchange currencies request in offline mode in the desktop and terminal general settings

This change stops Sparrow Wallet from trying to fetch live fiat-currency exchange rates when the user has explicitly chosen 'offline mode'. Instead of making a network request that is doomed to fail, it now reuses the currency already save…

Avoids unnecessary network egress in offline modeReduces error/warning noise for expected offline behavior
b91f7993by Craig Raw+15−12 files
No security note in commit
Low 37 AI analysisMessage 50 · Thin
SW SparrowSparrow Wallet BitcoinHardware integrationSoftware wallets

skip addresses already given out under a label and widen the gap limit on an explicit advance in the terminal receive dialog

This commit fixes two related Bitcoin wallet behaviors in Sparrow. First, when you ask for a new receive address, the wallet now skips any address that already has a label, because a label means that address was already given to someone. P…

Address reuse prevention: labeled-but-empty addresses are now skipped consistently across desktop and terminal receive flowsGap-limit widening on explicit advance reduces risk of missing funds during wallet recovery/rescanLogic centralized in WalletForm to reduce UI-specific divergence
cae870ceby Craig Raw+85−164 files
No security note in commit
Low 44 AI analysisMessage 50 · Thin
SW SparrowSparrow Wallet BitcoinHardware integrationSoftware wallets

cap bbqr display and pdf encodings at the 1295 parts the header can number, using larger parts for data that needs more rather than emitting a sequence that cannot be reassembled

This commit fixes a bug in Sparrow Wallet's BBQ QR code format. Previously, if a large transaction or data blob needed more than 1,295 QR-code-sized pieces, the app would generate pieces with impossible sequence numbers that could not be r…

Integer/sequence-number overflow-like limit violation in a data-encoding protocolPotential denial-of-service or data-integrity failure when exporting large transactions via QRRound-trip unit test added to prevent regression
4b5326d8by Craig Raw+27−12 files
No security note in commit
Repository ledger

Explore captured commits

Expand any commit for its author, full message, clarity score, changed files, triage signals, analysis, and source link.

Security candidateremove the surplus signatures progress bar segments a finalized multisig transaction discardsby Craig Raw · 40f77206 · Sep 22, 2026 · 2 filesMessage 50 · ThinInformational 17Details
Commit message · Craig Raw

remove the surplus signatures progress bar segments a finalized multisig transaction discards

50/100 · ThinMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component! No meaningful explanatory body
Why it was queued
signing boundarysigning or wallet path
AI analysis · Informational 17/100

This commit fixes a UI display bug in Sparrow Wallet's signature progress bar. When a multi-signature Bitcoin transaction becomes finalized, extra signatures beyond the required threshold are discarded. Previously, the progress bar did not remove the visual segments representing those discarded signatures, which could leave the bar showing more segments than actually exist. The fix cleans up those surplus segments and resets progress to zero for any segment whose signature was removed. There is no direct evidence this affects funds or transaction security.

AI review queuedbump to v2.5.6by Craig Raw · f7f36d00 · Sep 17, 2026 · 4 filesMessage 38 · OpaqueInformational 15Details
Commit message · Craig Raw

bump to v2.5.6

38/100 · OpaqueMessage clarity
✓ Subject identifies a change✓ Names a concrete action or component! No meaningful explanatory body
Why it was queued
signing or wallet pathsecond-pass: opaque commit messagesecond-pass: security-sensitive path
AI analysis · Informational 15/100

This commit is a routine version bump from 2.5.5 to 2.5.6. It only changes version strings in four files (build configuration, documentation, macOS app metadata, and a Java source constant). There are no code logic changes, no bug fixes, and no security-related content in the diff.

AI review queueduse a framerate-capped interpolated timeline for the server toggle and wallet tab loading pulse animations, and stop any running server toggle pulse before starting a new oneby Craig Raw · 4da29f4e · Sep 17, 2026 · 2 filesMessage 50 · ThinInformational 17Details
Commit message · Craig Raw

use a framerate-capped interpolated timeline for the server toggle and wallet tab loading pulse animations, and stop any running server toggle pulse before starting a new one

50/100 · ThinMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component! No meaningful explanatory body
Why it was queued
signing or wallet pathsecond-pass: security-sensitive path
AI analysis · Informational 17/100

This commit tweaks two visual animations in the Sparrow Wallet desktop app: the server connection toggle pulse and the wallet loading pulse. It caps how often the screen is redrawn during the pulse and makes sure any already-running pulse is stopped before a new one starts. There is no direct security vulnerability here; it is primarily a performance and robustness improvement for UI animations.

AI review queuedcut pasted amounts to the unit precision in the send tab and send to many, and stop the csv import skipping fractional sats and exponent amountsby Craig Raw · 9e999d3f · Sep 17, 2026 · 2 filesMessage 50 · ThinLow 45Details
Commit message · Craig Raw

cut pasted amounts to the unit precision in the send tab and send to many, and stop the csv import skipping fractional sats and exponent amounts

50/100 · ThinMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component! No meaningful explanatory body
Why it was queued
signing or wallet pathsecond-pass: security-sensitive path
AI analysis · Low 45/100

This commit fixes how Sparrow Wallet handles pasted or imported Bitcoin amounts. Previously, very small or oddly formatted amounts (like scientific notation '1e-8' or fractional satoshis) could be misread or silently skipped during CSV imports. The change now cuts pasted amounts to the correct precision and parses CSV amounts more carefully, preventing accidental wrong payment amounts.

AI review queuedadd a system theme option that follows the os light or dark setting, and make it the default for new installsby Craig Raw · a573f22a · Sep 16, 2026 · 15 filesMessage 50 · ThinInformational 15Details
Commit message · Craig Raw

add a system theme option that follows the os light or dark setting, and make it the default for new installs

50/100 · ThinMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component! No meaningful explanatory body
Why it was queued
signing or wallet pathsecond-pass: security-sensitive path
AI analysis · Informational 15/100

This commit adds a new 'System' theme option to the Sparrow Wallet desktop app that automatically follows the operating system's light or dark mode setting, and makes it the default for new installations. It also updates various UI components to use the active theme (which may be derived from the system setting) when choosing icons and stylesheets. There is no security-relevant change here.

AI review queuedrefuse bitbox02 keystore import and discovery for legacy p2sh and p2pkh wallets it cannot sign for, and hide those script types from the device import menusby Craig Raw · de169b18 · Sep 16, 2026 · 3 filesMessage 50 · ThinLow 36Details
Commit message · Craig Raw

refuse bitbox02 keystore import and discovery for legacy p2sh and p2pkh wallets it cannot sign for, and hide those script types from the device import menus

50/100 · ThinMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component! No meaningful explanatory body
Why it was queued
signing or wallet pathsecond-pass: security-sensitive path
AI analysis · Low 36/100

This commit tightens how Sparrow Wallet handles BitBox02 hardware wallets when working with older Bitcoin address formats (legacy P2PKH and P2SH). Previously, the app could let a user import or discover a wallet that the BitBox02 cannot actually sign transactions for, which could lead to funds being stuck or user confusion. The fix filters out unsupported script types from device menus and shows a clear error if a user tries to import or discover such a wallet.

Lower-prioritydeclare the runtime classpath as an input of the native library extraction task to avoid the gradle 10 undeclared artifact transform deprecationby Craig Raw · cc8e97c3 · Sep 16, 2026 · 1 fileMessage 62 · AdequateTriage 0Details
Commit message · Craig Raw

declare the runtime classpath as an input of the native library extraction task to avoid the gradle 10 undeclared artifact transform deprecation

62/100 · AdequateMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Explains rationale or failure mode! No meaningful explanatory body
AI review queuedreject unknown command line options and values given to flags with an error and exit code instead of starting on the default network, and accept the --option=value formby Craig Raw · 46197586 · Sep 16, 2026 · 2 filesMessage 50 · ThinLow 37Details
Commit message · Craig Raw

reject unknown command line options and values given to flags with an error and exit code instead of starting on the default network, and accept the --option=value form

50/100 · ThinMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component! No meaningful explanatory body
Why it was queued
signing or wallet pathsecond-pass: security-sensitive path
AI analysis · Low 37/100

This commit tightens how Sparrow Wallet handles command-line arguments. Previously, typos or unexpected values could silently be ignored, causing the wallet to start on the default Bitcoin network instead of the one the user intended. Now, unknown options and values mistakenly attached to on/off flags cause the program to print an error and exit. It also adds support for the common `--option=value` syntax. The main risk is operational: a user or script could accidentally connect to the wrong network and not notice, which in a Bitcoin wallet can lead to using the wrong wallet keys or broadcasting transactions on the wrong network.

Lower-priorityreject taproot output descriptors containing a script treeby Craig Raw · 071c06eb · Sep 16, 2026 · 1 fileMessage 50 · ThinTriage 0Details
Commit message · Craig Raw

reject taproot output descriptors containing a script tree

50/100 · ThinMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component! No meaningful explanatory body
AI review queuedignore amount digits beyond the selected unit precision in the send tab amount and fee fields and the send to many grid, instead of truncating them in the paymentby Craig Raw · 6cde97ad · Sep 16, 2026 · 5 filesMessage 50 · ThinLow 37Details
Commit message · Craig Raw

ignore amount digits beyond the selected unit precision in the send tab amount and fee fields and the send to many grid, instead of truncating them in the payment

50/100 · ThinMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component! No meaningful explanatory body
Why it was queued
signing or wallet pathsecond-pass: security-sensitive path
AI analysis · Low 37/100

This commit fixes a UI bug in the Sparrow Bitcoin wallet where typing or pasting too many decimal digits into amount or fee fields could be silently truncated, potentially causing a user to send a different amount than they saw on screen. The fix now ignores extra digits beyond the selected unit's precision (for example, satoshis have no decimal places) instead of truncating them in the final payment. It is a user-experience and correctness fix rather than a remote-exploitable vulnerability.

AI review queuedderive public keys from the seed when importing a sparrow wallet fileby Craig Raw · 1fb4e8bb · Sep 16, 2026 · 3 filesMessage 50 · ThinLow 41Details
Commit message · Craig Raw

derive public keys from the seed when importing a sparrow wallet file

50/100 · ThinMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component! No meaningful explanatory body
Why it was queued
signing or wallet pathsecond-pass: security-sensitive path
AI analysis · Low 41/100

This commit changes how Sparrow Wallet restores its own wallet files. Previously, when importing a Sparrow wallet file, the public keys (used to find transactions and addresses) might not be correctly rebuilt from the seed phrase. The fix forces the app to derive public keys from the seed during import, and adds tests to confirm imported wallets pass internal consistency checks. It is a correctness/reliability fix rather than an obvious remote attack vector.

AI review queuedadd file import of the xpub descriptor jade writes to usb storageby Craig Raw · c4b53879 · Sep 15, 2026 · 4 filesMessage 50 · ThinInformational 21Details
Commit message · Craig Raw

add file import of the xpub descriptor jade writes to usb storage

50/100 · ThinMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component! No meaningful explanatory body
Why it was queued
signing or wallet pathsecond-pass: security-sensitive path
AI analysis · Informational 21/100

This commit adds the ability to import a Bitcoin wallet's extended public key (xpub) into Sparrow Wallet from a file written by a Blockstream Jade hardware wallet via USB storage. Previously, Jade only supported QR-code import. The change parses a descriptor string from a file, validates it matches the expected script type, and creates a keystore. There is no direct evidence in the commit or supplied references that this is a security fix or vulnerability; it appears to be a normal feature addition.

Security candidateinclude the non-witness utxo in psbts for krux keystores, and in the qr display when the psbt has more than one inputby Craig Raw · 0e2c402f · Sep 15, 2026 · 2 filesMessage 50 · ThinLow 34Details
Commit message · Craig Raw

include the non-witness utxo in psbts for krux keystores, and in the qr display when the psbt has more than one input

50/100 · ThinMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component! No meaningful explanatory body
Why it was queued
signing boundarysigning or wallet path
AI analysis · Low 34/100

This commit changes how Sparrow Wallet builds QR codes for partially-signed Bitcoin transactions (PSBTs). For certain hardware wallets (Krux), it now includes extra data (the full previous transaction, called 'non-witness utxo') in the QR code when the transaction has more than one input. This extra data is needed by some devices to verify inputs securely, but it also makes the QR code larger and slower to scan. The change appears to be a correctness/usability fix for hardware signing rather than a traditional software vulnerability.

AI review queuedclear a scanned wallet when a file, text payload or unrecognised qr is imported in the same paneby Craig Raw · d7ded1e7 · Sep 15, 2026 · 1 fileMessage 50 · ThinLow 35Details
Commit message · Craig Raw

clear a scanned wallet when a file, text payload or unrecognised qr is imported in the same pane

50/100 · ThinMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component! No meaningful explanatory body
Why it was queued
signing or wallet pathsecond-pass: security-sensitive path
AI analysis · Low 35/100

This commit fixes a UI state bug in Sparrow Wallet's import pane. Previously, when a user scanned or imported a wallet and then imported a non-wallet file, text payload, or unrecognized QR code in the same pane, the previously loaded wallet data was not cleared. This could mislead the user into thinking an old wallet was still active or associated with the new import. The fix explicitly sets the wallet list to null before handling these alternative import paths.

AI review queuedlock the cormorant store against client connection reads and serve history as a copy, and close the client socket however its handler exitsby Craig Raw · 6cc4d50a · Sep 15, 2026 · 4 filesMessage 50 · ThinLow 35Details
Commit message · Craig Raw

lock the cormorant store against client connection reads and serve history as a copy, and close the client socket however its handler exits

50/100 · ThinMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component! No meaningful explanatory body
Why it was queued
signing or wallet pathsecond-pass: security-sensitive path
AI analysis · Low 35/100

This commit fixes two reliability issues in Sparrow Wallet's built-in Electrum server (Cormorant). First, it makes sure the internal transaction store is locked while being read or updated, and returns a fresh copy of a wallet's history so a slow client doesn't see data change mid-request. Second, it ensures the client network socket is always closed when the handler finishes, even if something goes wrong. These are defensive fixes that prevent data races and resource leaks rather than obvious user-facing exploits.

AI review queuedensure cormorant responses and notifications are always serialized per client connectionby Craig Raw · 6d9d3014 · Sep 15, 2026 · 3 filesMessage 50 · ThinLow 44Details
Commit message · Craig Raw

ensure cormorant responses and notifications are always serialized per client connection

50/100 · ThinMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component! No meaningful explanatory body
Why it was queued
signing or wallet pathsecond-pass: security-sensitive path
AI analysis · Low 44/100

This commit fixes a race condition in Sparrow Wallet's built-in Electrum server (Cormorant). Previously, a response to a wallet client and an asynchronous notification (like a new block or a balance update) could be written to the same network connection at the same time from different threads, potentially interleaving their bytes and producing garbled JSON. The fix routes all outgoing messages through a single synchronized method so they are sent one at a time per client connection. The included test demonstrates that a notification now waits until an in-progress response finishes writing, and that each message arrives as a complete line.

AI review queuedwake a silent payments history waiter when a failed widening restores a completed scan, rather than leaving it parked for the sessionby Craig Raw · 7868a94d · Sep 15, 2026 · 2 filesMessage 50 · ThinLow 27Details
Commit message · Craig Raw

wake a silent payments history waiter when a failed widening restores a completed scan, rather than leaving it parked for the session

50/100 · ThinMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component! No meaningful explanatory body
Why it was queued
signing or wallet pathsecond-pass: security-sensitive path
AI analysis · Low 27/100

This commit fixes a bug in Sparrow Wallet's silent-payments scanning cache. If a background scan had already finished, then a later 'widening' request to extend the scan failed and rolled back, any history request that arrived during the failed widening would wait forever instead of being told the scan was already complete. The fix makes the rollback path signal those waiting threads so the wallet history can return promptly. It is a reliability/availability bug, not a direct theft-of-funds vulnerability.

AI review queuedguard a short server.version response in the desktop and terminal connection testsby Craig Raw · 66348faf · Sep 15, 2026 · 2 filesMessage 60 · AdequateInformational 18Details
Commit message · Craig Raw

guard a short server.version response in the desktop and terminal connection tests

60/100 · AdequateMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Mentions testing or verification! No meaningful explanatory body
Why it was queued
signing or wallet pathsecond-pass: security-sensitive path
AI analysis · Informational 18/100

This commit fixes a minor crash bug in Sparrow Wallet's connection-test screens. Previously, if a Bitcoin Electrum server answered the version request with an unusually short response, the wallet would try to read list items that didn't exist and throw an IndexOutOfBoundsException. The patch now checks that the list has at least one element before using it and only appends the protocol version if a second element exists. It is a UI-only hardening change, not a cryptographic or funds-theft issue.

AI review queuedomit a paynym contact whose payment code does not parse rather than keeping it with a null code or failing the whole paynym responseby Craig Raw · 94ebb849 · Sep 15, 2026 · 4 filesMessage 50 · ThinLow 37Details
Commit message · Craig Raw

omit a paynym contact whose payment code does not parse rather than keeping it with a null code or failing the whole paynym response

50/100 · ThinMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component! No meaningful explanatory body
Why it was queued
signing or wallet pathsecond-pass: security-sensitive path
AI analysis · Low 37/100

This commit fixes a bug in Sparrow Wallet's PayNym (BIP47 reusable payment code) contact handling. Previously, if a single contact in your PayNym following/followers list had a malformed payment code, the app either kept a broken contact with a null payment code or could fail the entire PayNym response. Now it simply skips that bad contact and keeps the rest. This is a robustness fix that prevents crashes or broken contact lists, but it is not a direct theft-of-funds vulnerability.

AI review queuedskip the exchange currencies request in offline mode in the desktop and terminal general settingsby Craig Raw · b91f7993 · Sep 15, 2026 · 2 filesMessage 50 · ThinInformational 19Details
Commit message · Craig Raw

skip the exchange currencies request in offline mode in the desktop and terminal general settings

50/100 · ThinMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component! No meaningful explanatory body
Why it was queued
signing or wallet pathsecond-pass: security-sensitive path
AI analysis · Informational 19/100

This change stops Sparrow Wallet from trying to fetch live fiat-currency exchange rates when the user has explicitly chosen 'offline mode'. Instead of making a network request that is doomed to fail, it now reuses the currency already saved in settings. It also hides the warning that normally appears when the currency list fails to load, because in offline mode that failure is expected. This is a reliability/usability fix, not a security patch.

AI review queuedskip addresses already given out under a label and widen the gap limit on an explicit advance in the terminal receive dialogby Craig Raw · cae870ce · Sep 15, 2026 · 4 filesMessage 50 · ThinLow 37Details
Commit message · Craig Raw

skip addresses already given out under a label and widen the gap limit on an explicit advance in the terminal receive dialog

50/100 · ThinMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component! No meaningful explanatory body
Why it was queued
signing or wallet pathsecond-pass: security-sensitive path
AI analysis · Low 37/100

This commit fixes two related Bitcoin wallet behaviors in Sparrow. First, when you ask for a new receive address, the wallet now skips any address that already has a label, because a label means that address was already given to someone. Previously, the desktop app skipped labeled addresses but the terminal app did not, so the terminal could accidentally hand the same address to two different payers. Second, when you explicitly advance past the normal gap limit, the wallet now widens the gap limit so that a later wallet recovery with the saved gap limit will still find that address. This prevents funds sent to a far-ahead address from being missed during recovery scans.

AI review queuedcap bbqr display and pdf encodings at the 1295 parts the header can number, using larger parts for data that needs more rather than emitting a sequence that cannot be reassembledby Craig Raw · 4b5326d8 · Sep 15, 2026 · 2 filesMessage 50 · ThinLow 44Details
Commit message · Craig Raw

cap bbqr display and pdf encodings at the 1295 parts the header can number, using larger parts for data that needs more rather than emitting a sequence that cannot be reassembled

50/100 · ThinMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component! No meaningful explanatory body
Why it was queued
signing or wallet pathsecond-pass: security-sensitive path
AI analysis · Low 44/100

This commit fixes a bug in Sparrow Wallet's BBQ QR code format. Previously, if a large transaction or data blob needed more than 1,295 QR-code-sized pieces, the app would generate pieces with impossible sequence numbers that could not be reassembled by a scanner. The fix caps the number of pieces at 1,295 and makes each piece bigger instead, so scanning still works. It is a reliability/data-integrity bug rather than a direct theft-of-funds vulnerability, but a malformed or unrecoverable QR sequence could disrupt wallet operations.

AI review queuedmap transaction hex witness segments by the segwit flag and treat an input with no witness as empty, matching the serializer rather than relying on it having filled them inby Craig Raw · 0030aee2 · Sep 15, 2026 · 1 fileMessage 50 · ThinInformational 16Details
Commit message · Craig Raw

map transaction hex witness segments by the segwit flag and treat an input with no witness as empty, matching the serializer rather than relying on it having filled them in

50/100 · ThinMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component! No meaningful explanatory body
Why it was queued
signing or wallet pathsecond-pass: security-sensitive path
AI analysis · Informational 16/100

This commit fixes how Sparrow Wallet's transaction hex viewer highlights the parts of a SegWit Bitcoin transaction. Previously, if a SegWit transaction contained an input with no witness data, the viewer would skip highlighting that input's witness section entirely, causing the colored segments to fall out of sync with the actual raw transaction bytes. The change now correctly shows an empty witness for such inputs, keeping the display aligned with how the transaction is really serialized.

AI review queuedhold unit format decimal formatters per thread rather than sharing one instance between the export task and table cellsby Craig Raw · e8d82c49 · Sep 15, 2026 · 1 fileMessage 50 · ThinLow 34Details
Commit message · Craig Raw

hold unit format decimal formatters per thread rather than sharing one instance between the export task and table cells

50/100 · ThinMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component! No meaningful explanatory body
Why it was queued
signing or wallet pathsecond-pass: security-sensitive path
AI analysis · Low 34/100

This change fixes a thread-safety bug in how Bitcoin amounts are formatted for display and export. Previously, the same number-formatting objects were shared between background export tasks and the on-screen transaction table. Because those formatters are not safe for concurrent use, two threads could corrupt each other's output, potentially causing wrong decimal places, separators, or digits to appear in exported data or on screen. The fix gives each thread its own private formatter.

AI review queuedregister only transaction entries held in a wallets transactions model for confirmation updates, and unregister them on removal, history clear and tab closeby Craig Raw · 58856f7d · Sep 15, 2026 · 4 filesMessage 50 · ThinLow 35Details
Commit message · Craig Raw

register only transaction entries held in a wallets transactions model for confirmation updates, and unregister them on removal, history clear and tab close

50/100 · ThinMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component! No meaningful explanatory body
Why it was queued
signing or wallet pathsecond-pass: security-sensitive path
AI analysis · Low 35/100

This commit fixes a resource-leak bug in Sparrow Wallet's transaction list. Previously, every temporary transaction object automatically subscribed to blockchain-tip updates when it was created, and many of those temporary objects were never unsubscribed. Over time this left stale 'listeners' piling up in memory, which could slow the wallet down, waste resources, and potentially cause confusing display updates. The change makes subscription explicit: only transaction entries that are actually shown in the wallet's transaction list are registered for updates, and they are cleanly unregistered when removed, when history is cleared, or when a wallet tab is closed.