SW
← All projectsStack Wallet

Stack Wallet

Actively maintained multi-coin self-custody wallet with Monero support and on-device keys.

MoneroPrivacy protocolsSoftware walletsNormal
Repository coverage

1053 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.

338security candidates411second-pass queue749AI analyses
81commits · 30 days
175commits · 60 days
600commits · 180 days
1008commits · 365 days
Backfill bands
Sep 27 → Mar 31404 seen73 candidatesComplete
Mar 31 → Jul 29463 seen238 candidatesComplete
Jul 29 → Aug 2887 seen8 candidatesComplete
Aug 28 → Sep 2753 seen6 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.

51/100 average clarity
33Strong · 80–100
316Adequate · 60–79
513Thin · 40–59
191Opaque · 0–39
33security 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.
Navid Rahimi1017154
sneurlax339158241062
julian347112269044
Julian19741144043
Dan Miller831525053
Reuben Yap20318052
Cyrix12615211049
julian-CStack222049
levoncrypto24121043
Tritonn204412052
cassandras-lies413048
NyanCatTW1111045
Analysis record

Published AI watches

Last scanned 37 minutes ago

Informational 24 AI analysisMessage 73 · Adequate
SW Stack WalletStack Wallet MoneroPrivacy protocolsSoftware wallets

Merge pull request #1469 from Cyrix126/building_dialog_cancel

This commit fixes a mobile UI bug where pressing Cancel on a 'building transaction' dialog accidentally closed one too many screens. The fix moves the responsibility for closing the dialog into each screen's cancel handler, and prevents er…

No security-relevant signals in the diffUI-only navigation and error-dialog suppression changesNo cryptographic, authentication, authorization, or data-handling changes
94e6da66by Julian+68−8412 files
No security note in commit
Informational 20 AI analysisMessage 50 · Thin
SW Stack WalletStack Wallet MoneroPrivacy protocolsSoftware wallets

Merge branch 'staging' into building_dialog_cancel

This commit is a routine merge from the project's staging branch into a feature branch. The visible code changes fix small UI/UX bugs in Stack Wallet's send screens: clearing an internal address-validation cache when the form is reset, mak…

Clearing stale address-provider state on form reset reduces the risk of stale validation data influencing a subsequent transactionFee-form caching prevents repeated network calls and accidental fee UI flicker/state races on rebuildQR scan buttons are UX additions with no visible parser/validation logic changes
0485b166by Julian+194−56 files
No security note in commit
Informational 17 AI analysisMessage 58 · Thin
SW Stack WalletStack Wallet MoneroPrivacy protocolsSoftware wallets

Merge pull request #1468 from Cyrix126/desktop_fee_form_refetch

This commit fixes a desktop wallet bug where the send-fee form would repeatedly re-fetch fee estimates on every screen rebuild, wasting resources and possibly flickering. It now caches the fee estimate and only retries if the previous fetc…

No security-relevant signals present in diff or commit metadataChange is a UI/UX performance and reliability improvement
62432946by Julian+176−52 files
No security note in commit
Informational 17 AI analysisMessage 50 · Thin
SW Stack WalletStack Wallet MoneroPrivacy protocolsSoftware wallets

Merge branch 'staging' into desktop_fee_form_refetch

This commit merges a feature branch into another work-in-progress branch. It adds QR-code scanning buttons to two desktop token send screens and resets an internal address-validation state variable when the send form is cleared. There is n…

State reset added to clearForm() to avoid stale validation dataNew QR scan entry points in token send flows (UI feature, not a vulnerability signal)
8a72c82fby Julian+18−04 files
No security note in commit
Low 32 AI analysisMessage 73 · Adequate
SW Stack WalletStack Wallet MoneroPrivacy protocolsSoftware wallets

Merge pull request #1467 from Cyrix126/clear_send_form_validity

This change fixes a UI state bug in the cryptocurrency wallet's send form. When a user clears the send form, the app now also resets whether the entered address is considered valid. Without this fix, the form could incorrectly keep showing…

UI state desynchronization between form field and validity indicatorPotential user confusion from stale valid-address stateNo input validation, cryptographic, or network-layer changes
d3383b4eby Julian+2−02 files
No security note in commit
Informational 15 AI analysisMessage 50 · Thin
SW Stack WalletStack Wallet MoneroPrivacy protocolsSoftware wallets

Merge branch 'staging' into clear_send_form_validity

This commit adds a QR code scanner button to two desktop cryptocurrency send forms. It is a straightforward user-interface feature addition with no apparent security relevance.

22560a59by Julian+16−02 files
No security note in commit
Informational 20 AI analysisMessage 73 · Adequate
SW Stack WalletStack Wallet MoneroPrivacy protocolsSoftware wallets

Merge pull request #1466 from Cyrix126/desktop_token_qr_button

This commit adds a missing QR code scan button to two desktop token send screens in the Stack Wallet app. It is a straightforward user-interface fix that restores a feature already present on mobile and other send views; there is no indica…

47f6d369by Julian+16−02 files
No security note in commit
Informational 15 AI analysisMessage 18 · Opaque
SW Stack WalletStack Wallet MoneroPrivacy protocolsSoftware wallets

style: format

This commit is purely a code-formatting cleanup. It changes line breaks and indentation in four user-interface files so the code is easier to read, but it does not change what the app actually does. There is no security relevance.

ae45aba8by Cyrix126+47−524 files
No security note in commit
Informational 23 AI analysisMessage 62 · Adequate
SW Stack WalletStack Wallet MoneroPrivacy protocolsSoftware wallets

fix: stop estimating the desktop fee for a zero amount

This commit fixes a UI bug in the desktop version of Stack Wallet where the send amount could be lost while the app was trying to estimate transaction fees. The fix keeps the amount 'alive' in memory so fee estimation does not accidentally…

State lifecycle issue in UI provider could lead to loss of user inputFix prevents fee estimation from silently resetting send amount to zeroNo cryptographic, authentication, or network security changes present
90c91bdeby Cyrix126+22−02 files
No security note in commit
Low 32 AI analysisMessage 45 · Thin
SW Stack WalletStack Wallet MoneroPrivacy protocolsSoftware wallets

show split tx warning on confirm screen

This commit updates the Stack Wallet app so that when a single payment is broken into multiple cryptocurrency transactions, the user sees a clear warning on the confirmation screen. It also changes the app's internal record-keeping to hand…

UI now warns users when a payment will be split into multiple on-chain transactionsInternal transaction model changed from single txid to list of txidsMultiple confirmation flows updated to iterate over all txids for notes and trade lookups
80343a5aby Julian+376−23916 files
No security note in commit
Informational 18 AI analysisMessage 62 · Adequate
SW Stack WalletStack Wallet MoneroPrivacy protocolsSoftware wallets

fix: stop refetching the desktop fee rates on every rebuild

This commit fixes a performance bug in the desktop version of Stack Wallet where the app repeatedly re-fetched Bitcoin-style fee rates every time the on-screen fee form rebuilt. The change caches the fee result and only fetches again if th…

Unnecessary repeated network requests reducedFuture result cached to avoid re-execution on widget rebuildError path clears cache to allow retry
a1ca9292by Cyrix126+154−52 files
No security note in commit
Low 34 AI analysisMessage 62 · Adequate
SW Stack WalletStack Wallet MoneroPrivacy protocolsSoftware wallets

fix: reset the address validity when clearing the send form

This commit fixes a UI state bug in Stack Wallet's send form. When a user clears the send form, the wallet now also resets whether the entered address is considered valid. Without this fix, the form could incorrectly keep showing an old ad…

Stale UI state after form resetAddress validity not synchronized with address field resetPotential UI confusion leading to incorrect send confirmation
43dd0477by Cyrix126+2−02 files
No security note in commit
Low 35 AI analysisMessage 73 · Adequate
SW Stack WalletStack Wallet MoneroPrivacy protocolsSoftware wallets

Merge pull request #1450 from Ez3kiel-dev/fix/xelis-integration

This is a large feature/fix merge that restores and rewrites the Xelis (XEL) cryptocurrency integration in Stack Wallet. It swaps the old hand-rolled Xelis code for a new generated native interface (XWF), adds wallet restore/backup support…

Send-flow lifecycle hardening: prepared Xelis transactions are now discarded via cancelSend when the user cancels or the widget is disposedSession-generation checks prevent stale wallet handles from being used after close/reopenMutex serialization added around send preparation, balance, history, and rescan operations
ad945d43by Julian+4298−162634 files
No security note in commit
Low 32 AI analysisMessage 45 · Thin
SW Stack WalletStack Wallet MoneroPrivacy protocolsSoftware wallets

Merge branch 'staging' into fix/xelis-integration

This commit is a large merge that mainly adds integration tests for a desktop 'forgot password' reset feature and makes supporting code changes to safely shut down background database workers during that reset. It also removes a large set …

New integration tests exercise a destructive 'forgot password' data-wipe featureTests assert that password store and wallet key store are deleted on successful resetTests assert that wallet files are deleted while backup and tor state are preserved
b0e5d35aby Julian+2678−330378 files
No security note in commit
Informational 19 AI analysisMessage 73 · Adequate
SW Stack WalletStack Wallet MoneroPrivacy protocolsSoftware wallets

Merge pull request #1361 from cypherstack/fix/305-multiline-transaction-notes

This commit lets users type multi-line notes when editing transaction and trade notes, and fixes the desktop layout so long notes scroll instead of breaking the screen. It also swaps the old `mounted` check for the newer `context.mounted` …

5172e63eby Julian+402−1113 files
No security note in commit
Low 32 AI analysisMessage 50 · Thin
SW Stack WalletStack Wallet MoneroPrivacy protocolsSoftware wallets

Merge branch 'staging' into fix/305-multiline-transaction-notes

This commit is a large merge that mainly removes old integration tests and adds new desktop 'forgot password' reset tests. It also adds a safe-shutdown path for background Firo cache workers and databases. The changes look like defensive h…

Added safe shutdown of Firo cache isolates/SQLite databases before reset exitNew integration tests verify desktop forgot-password reset deletes secrets and preserves backupsTest harness intercepts exit() and IOOverrides to observe reset side effects
21491edbby Julian+2352−319075 files
No security note in commit
Moderate 57 AI analysisMessage 73 · Adequate
SW Stack WalletStack Wallet MoneroPrivacy protocolsSoftware wallets

Merge pull request #1455 from cypherstack/fix/desktop-pw-reset

This commit fixes the desktop "forgot password" reset flow in Stack Wallet. It adds integration tests that verify the app can securely wipe its own data when a user forgets the desktop password, and it updates the Firo cache worker to clos…

Desktop password reset now closes Firo cache workers and SQLite databases before deleting app data, reducing the risk of data leakage or corruption during wipeNew integration tests assert that a successful reset removes password store (hive/desktopdata.hive), wallet key store (isar/desktopStore.isar), and wallet files while preserving backups and tor stateFailed reset scenario leaves a .reset-pending marker and removes password/key stores first, preventing the reset from being undone after partial deletion
055e6c6bby Julian+1077−297154 files
No security note in commit
Low 37 AI analysisMessage 45 · Thin
SW Stack WalletStack Wallet MoneroPrivacy protocolsSoftware wallets

Merge branch 'staging' into fix/desktop-pw-reset

This commit is a large merge that mainly adds a new 'prove you own a Spark address' feature to the Stack Wallet app, plus some related fixes. It also updates a dependency that handles SOCKS5 proxy connections and changes how the app decide…

New cryptographic signing path added: SparkInterface.signMessage now delegates to Spark ownership proof creation using the wallet's private key and spark derivation path.Ownership proof code rejects view-only wallets and blank messages, and searches a 100-address lookahead for the requested address before signing.Dependency upgrade: socks5_proxy 1.0.3+dev.3 -> 2.1.1, which may change SOCKS5/Tor proxy behavior; a new test verifies hostname/onion routing through a fake SOCKS server.
d9b5cc02by Julian+1275−21923 files
No security note in commit
Low 34 AI analysisMessage 83 · Strong
SW Stack WalletStack Wallet MoneroPrivacy protocolsSoftware wallets

Merge pull request #1439 from navidR/dev/navidr/spark-name-verification

This commit adds a new feature to Stack Wallet that lets users prove they own a Spark (privacy) address by generating a cryptographic ownership proof. It also improves the sign/verify screens so view-only wallets can still verify proofs, a…

New cryptographic proof generation using private key material (privateKeyHex, spendKeyIndex, diversifier) inside an isolateView-only wallet guard added for proof creation (throws if isViewOnly)Message whitespace now preserved for pasted/typed challenge messages, preventing proof/verification mismatches caused by silent trimming
a5411a50by Julian+1097−16616 files
No security note in commit
Low 39 AI analysisMessage 60 · Adequate
SW Stack WalletStack Wallet MoneroPrivacy protocolsSoftware wallets

Merge branch 'staging' into dev/navidr/spark-name-verification

This commit merges several changes into a development branch. The most notable security-relevant change is a fix for how the Trocador exchange service routes traffic: it now automatically uses Tor (an anonymity network) when the user has T…

Trocador exchange API previously forced clearnet (`isOnion: false`) at every call site, bypassing Tor even when enabledNew `_useTor` getter centralizes Tor routing decision based on app feature flag and user preferenceOnion service address rotated to a new v3 .onion hostname
92955848by Julian+122−507 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.

AI review queuedformat modified Dart filesby levoncrypto · 2a614467 · May 5, 2026 · 6 filesMessage 35 · OpaqueInformational 15Details
Commit message · levoncrypto

format modified Dart files

35/100 · OpaqueMessage clarity
✓ Descriptive subject! 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 purely a code-formatting cleanup. It adjusts line breaks, indentation, and whitespace across six Dart files to match the project's style rules. No functionality, logic, or security behavior was changed.

AI review queuedset isChange=false for ProReg recipientby levoncrypto · 65112ae6 · May 5, 2026 · 1 fileMessage 45 · ThinLow 41Details
Commit message · levoncrypto

set isChange=false for ProReg recipient

45/100 · ThinMessage clarity
✓ 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 a single flag in the Firo cryptocurrency wallet code. When creating a special 'ProReg' transaction used for masternode registration, the wallet now marks a small recipient output as 'not change' rather than 'change.' In many wallet designs, change outputs are handled differently from payment outputs—potentially affecting how fees are calculated, how the output is selected in future spending, or how the transaction is displayed to the user. The change is too small and context-free to conclude it fixes a serious vulnerability, but it is a plausible correctness or security-related fix for a coin-specific transaction type.

AI review queuedadd some safeguardsby julian · f6a7cae6 · May 5, 2026 · 1 fileMessage 28 · OpaqueInformational 23Details
Commit message · julian

add some safeguards

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

This commit makes a small UI safety tweak in the transaction confirmation screen of a cryptocurrency wallet. It moves a database lookup slightly later in the code and ensures a state update happens after the screen has finished its initial build, which helps avoid a rare Flutter framework error. There is no direct evidence this fixes a security vulnerability, but it is a defensive safeguard against possible app crashes or inconsistent UI state when checking whether a transaction would accidentally spend a valuable 'ordinal' asset.

Security candidateBump frostdart submodule to v0.1.3by Dan Miller · 23613701 · May 5, 2026 · 1 fileMessage 60 · AdequateInformational 4Details
Commit message · Dan Miller

Bump frostdart submodule to v0.1.3

Brings in the openssl + openssl-sys MSRV pins for rustc 1.71.

60/100 · AdequateMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Provides an explanatory body
Why it was queued
cryptography-sensitive path
AI analysis · Informational 4/100

This commit updates a submodule called frostdart to version 0.1.3. The stated reason is to pin two related software libraries (openssl and openssl-sys) to versions compatible with an older Rust compiler version (1.71). There is no code change visible in the commit itself, only a submodule pointer update. No security issue is described or evident from the materials provided.

Security candidateUpdate frostdart submoduleby Dan Miller · 86139a13 · May 5, 2026 · 1 fileMessage 35 · OpaqueInformational 2Details
Commit message · Dan Miller

Update frostdart submodule

35/100 · OpaqueMessage clarity
✓ Descriptive subject! No meaningful explanatory body! Opaque security-relevant change
Why it was queued
cryptography-sensitive path
AI analysis · Informational 2/100

This commit only updates a Git submodule pointer for 'frostdart' inside the Stack Wallet repository. No actual code changes are shown, and no security-related description is provided. On its own, this tells us nothing about whether the submodule update fixes or introduces a security issue.

AI review queuedAdd opt-in --fetch path for mwebd.exe Windows buildby Dan Miller · cc9438dd · May 5, 2026 · 2 filesMessage 50 · ThinLow 39Details
Commit message · Dan Miller

Add opt-in --fetch path for mwebd.exe Windows build

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 39/100

This commit adds an optional shortcut for Windows builds that downloads a pre-built 'mwebd.exe' program from the internet instead of compiling it from source. It checks the downloaded file against a published SHA-256 hash, but the download itself uses plain HTTPs and the source URL can be overridden by an environment variable. There is no claim in the commit that this fixes a security issue; it appears to be a build-convenience change.

AI review queuedperf(ordinals): cache ordinal-spend check off the build pathby sneurlax · 914c31d8 · May 4, 2026 · 1 fileMessage 62 · AdequateInformational 19Details
Commit message · sneurlax

perf(ordinals): cache ordinal-spend check off the build path

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

This commit is a performance refactor, not a security fix. It moves a check that warns users if they are about to spend a Bitcoin 'ordinal' inscription UTXO from the UI build path into an asynchronous initialization step, caching the result. The warning itself and the underlying behavior are unchanged. There is no indication this patch addresses a vulnerability or that the prior code was exploitable.

Security candidatefix(shopinbit): defend against API contract driftby sneurlax · 4ca84ac1 · May 4, 2026 · 7 filesMessage 57 · ThinLow 37Details
Commit message · sneurlax

fix(shopinbit): defend against API contract drift

57/100 · ThinMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope! No meaningful explanatory body
Why it was queued
authentication path
AI analysis · Low 37/100

This commit is a defensive hardening patch for the ShopInBit integration in Stack Wallet. It changes how the app handles unexpected status strings and webhook event types from the ShopInBit API. Previously, unknown values were silently forced into a default known value (for example, an unrecognized ticket state was treated as a brand-new ticket). Now unknown values are explicitly marked as 'unknown,' preserved in raw form, and ignored rather than misapplied. This prevents the app from showing wrong order statuses or acting on unexpected events if the ShopInBit API changes its labels or adds new ones.

Security candidatefix: clean upby julian · 73048331 · May 4, 2026 · 2 filesMessage 40 · ThinInformational 15Details
Commit message · julian

fix: clean up

40/100 · ThinMessage clarity
✓ Subject identifies a change✓ Uses a recognizable type or scope! No meaningful explanatory body
Why it was queued
authentication path
AI analysis · Informational 15/100

This commit is a minor code cleanup in the Stack Wallet app's ShopInBit feature. It removes a duplicate line of code and fixes the indentation of some UI widget code. There is no security-relevant change.

AI review queueddelete unused generated fileby julian · e250f6ae · May 4, 2026 · 1 fileMessage 35 · OpaqueInformational 15Details
Commit message · julian

delete unused generated file

35/100 · OpaqueMessage clarity
✓ Descriptive subject! No meaningful explanatory body
Why it was queued
second-pass: opaque commit message
AI analysis · Informational 15/100

This commit simply deletes an unused auto-generated file that registered data adapters for a local database library called Hive. There is no functional code change, no bug fix, and no security-relevant behavior is altered.

AI review queuedremove extra spaceby julian · 0948c155 · May 4, 2026 · 1 fileMessage 28 · OpaqueInformational 15Details
Commit message · julian

remove extra space

28/100 · OpaqueMessage clarity
✓ Subject identifies a change! No meaningful explanatory body
Why it was queued
second-pass: opaque commit message
AI analysis · Informational 15/100

This commit removes a small vertical spacing widget (an extra 8-pixel gap) from a settings screen. It is purely a cosmetic/UI layout change and has no security relevance.

Security candidateupdate libepiccash refby julian · 01251567 · May 4, 2026 · 1 fileMessage 28 · OpaqueInformational 0Details
Commit message · julian

update libepiccash ref

28/100 · OpaqueMessage clarity
✓ Subject identifies a change! No meaningful explanatory body! Opaque security-relevant change
Why it was queued
cryptography-sensitive path
AI analysis · Informational 0/100

This commit only updates a reference (likely a Git submodule or dependency pointer) to a library called libepiccash. No actual code changes are shown, and no security-related description is provided. There is not enough information to determine whether this update fixes a security issue, adds a feature, or is routine maintenance.

AI review queuedfix(firo): fail empty Spark auto mintsby Reuben Yap · b8f66850 · May 4, 2026 · 1 fileMessage 57 · ThinLow 32Details
Commit message · Reuben Yap

fix(firo): fail empty Spark auto mints

57/100 · ThinMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope! No meaningful explanatory body
Why it was queued
signing or wallet pathsecond-pass: security-sensitive path
AI analysis · Low 32/100

This commit adds a safety check to Stack Wallet's Firo Spark auto-minting feature. Previously, if the wallet tried to automatically convert all eligible coins into Spark private coins and somehow produced no transactions, it would silently return an empty result. Now it throws a clear error instead. This prevents the wallet from incorrectly assuming a successful private mint happened when nothing was actually sent.

AI review queuedfix(firo): tighten Spark mint fee accountingby Reuben Yap · 10ced8df · May 4, 2026 · 1 fileMessage 57 · ThinLow 42Details
Commit message · Reuben Yap

fix(firo): tighten Spark mint fee accounting

57/100 · ThinMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope! No meaningful explanatory body
Why it was queued
signing or wallet pathsecond-pass: security-sensitive path
AI analysis · Low 42/100

This commit tightens how Stack Wallet calculates and checks fees when creating privacy-preserving 'Spark mint' transactions for the Firo cryptocurrency. It fixes a loop that could keep charging fees after outputs were drained, adds an error when a user tries to auto-mint all coins but the balance is too small to pay the fee, and adds a final sanity check comparing the expected fee against the actual fee built into the transaction. The changes appear aimed at preventing incorrect or excessive fees, or transactions that fail silently.

AI review queuedfix: Spark generate-next-address diversifierby levoncrypto · ccb101bd · May 2, 2026 · 1 fileMessage 57 · ThinLow 41Details
Commit message · levoncrypto

fix: Spark generate-next-address diversifier

57/100 · ThinMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope! No meaningful explanatory body
Why it was queued
signing or wallet pathsecond-pass: security-sensitive path
AI analysis · Low 41/100

This one-line change fixes how the wallet picks the next Spark privacy address. Previously it looked at the current regular receiving address to decide the next Spark address number (diversifier). Now it correctly looks at the current Spark receiving address. Using the wrong starting number could cause address reuse or generate addresses that collide with already-used ones, which weakens the privacy guarantees Spark is designed to provide.

AI review queuedreset private balance changesby levoncrypto · 70acbe6d · May 2, 2026 · 4 filesMessage 35 · OpaqueLow 41Details
Commit message · levoncrypto

reset private balance changes

35/100 · OpaqueMessage clarity
✓ Descriptive subject! No meaningful explanatory body
Why it was queued
signing or wallet pathsecond-pass: opaque commit messagesecond-pass: security-sensitive path
AI analysis · Low 41/100

This commit changes how Stack Wallet caches and resets Firo Spark private-balance data. It removes a safety fallback that refetched the full anonymity set when the local cache size looked inconsistent, switches from 'insert-or-ignore' to plain inserts for Spark coins, and simplifies the 'clear Spark cache' button so it only wipes the shared cache and no longer resets per-wallet metadata. A separate change also fixes which address type is used when generating the next Spark receiving address. The overall effect is a reset/rework of private balance tracking, but the commit message and diff alone do not clearly state whether this fixes a security bug or is just a reliability refactor.

AI review queuedrebase 876feb6ceby levoncrypto · 63874c6b · May 2, 2026 · 1 fileMessage 18 · OpaqueInformational 15Details
Commit message · levoncrypto

rebase 876feb6ce

18/100 · OpaqueMessage clarity
✓ Subject identifies a change! Too few words to establish purpose! No meaningful explanatory body
Why it was queued
second-pass: opaque commit message
AI analysis · Informational 15/100

This commit only updates the version numbers and cryptographic hashes of several Dart/Flutter test and utility libraries in the pubspec.lock dependency lock file. There is no indication of a security fix, vulnerability patch, or code change affecting the wallet application itself.

AI review queuedsmall fixesby levoncrypto · ae73bb43 · May 2, 2026 · 7 filesMessage 0 · OpaqueLow 31Details
Commit message · levoncrypto

small fixes

0/100 · OpaqueMessage clarity
! Very short subject! Too few words to establish purpose! No meaningful explanatory body
Why it was queued
signing or wallet pathsecond-pass: opaque commit messagesecond-pass: security-sensitive path
AI analysis · Low 31/100

This commit is a collection of small fixes in the Stack Wallet app. The most notable changes correct how Firo masternode registration transactions are signed and built, fix a bug where the app might pick the same address for both collateral and owner, and improve how the app detects and navigates after a masternode transaction. There are also UI layout tweaks and a change to the Campfire app configuration so it uses the main Firo network instead of the test network. The commit message gives no indication these are security fixes, and the changes look like ordinary bug fixes rather than patches for an exploitable vulnerability.

Security candidatefix(shopinbit): remove unused imports and dead _copyAddress methodby sneurlax · ad92606d · May 1, 2026 · 2 filesMessage 62 · AdequateInformational 15Details
Commit message · sneurlax

fix(shopinbit): remove unused imports and dead _copyAddress method

62/100 · AdequateMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope! No meaningful explanatory body
Why it was queued
authentication path
AI analysis · Informational 15/100

This commit is a routine code cleanup: it removes an unused import and a private, never-called method that copied a cryptocurrency address to the clipboard. There is no functional or security change to the app.

Security candidatefix(shopinbit): fix guidelines skip, sticky button, travel form improvementsby sneurlax · 67569f66 · May 1, 2026 · 2 filesMessage 62 · AdequateInformational 15Details
Commit message · sneurlax

fix(shopinbit): fix guidelines skip, sticky button, travel form improvements

62/100 · AdequateMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope! No meaningful explanatory body
Why it was queued
authentication path
AI analysis · Informational 15/100

This commit is a routine user-interface fix for the ShopInBit shopping feature inside Stack Wallet. It corrects a bug where returning desktop users were not skipping the guidelines screen, makes a submit button sticky, and improves a travel booking form by adding a country dropdown, a details text box, and date pickers. There is no indication this change fixes a security vulnerability.

Security candidatefix(shopinbit): fix double display name prompt, skip service overview for returning usersby sneurlax · 01194106 · May 1, 2026 · 1 fileMessage 62 · AdequateInformational 15Details
Commit message · sneurlax

fix(shopinbit): fix double display name prompt, skip service overview for returning users

62/100 · AdequateMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope! No meaningful explanatory body
Why it was queued
authentication path
AI analysis · Informational 15/100

This commit fixes a user-interface flow bug in the desktop ShopinBit feature. Previously, first-time users were asked for their display name twice and had to go through an extra service overview screen. Now, first-time users enter their name once in setup, see the service overview, and then go straight to the order step. Returning users skip the overview and go directly to the order step. There is no security-relevant change.

Security candidatefix(shopinbit): lock shipping country, fix billing overflow, remove T&C from payment, add done buttonby sneurlax · 0e7898a1 · May 1, 2026 · 2 filesMessage 67 · AdequateInformational 16Details
Commit message · sneurlax

fix(shopinbit): lock shipping country, fix billing overflow, remove T&C from payment, add done button

67/100 · AdequateMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope✓ Names security-relevant behavior explicitly! No meaningful explanatory body
Why it was queued
memory safetyauthentication path
AI analysis · Informational 16/100

This commit tweaks the checkout flow for a third-party shopping integration called ShopInBit. It removes a 'I accept the Terms & Conditions' checkbox from the payment screen, locks the shipping country to whatever was already chosen, fixes a layout overflow on the billing form, and adds a 'View My Requests' button after payment. None of these changes look like a security fix for the wallet itself; they are mostly UI/UX adjustments to a partner service's checkout screens.

Security candidatefix(shopinbit): load offer price in ticket list/detail, add message polling, fix closed ticket messagesby sneurlax · 08a04c5d · May 1, 2026 · 2 filesMessage 62 · AdequateInformational 19Details
Commit message · sneurlax

fix(shopinbit): load offer price in ticket list/detail, add message polling, fix closed ticket messages

62/100 · AdequateMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope! No meaningful explanatory body
Why it was queued
authentication path
AI analysis · Informational 19/100

This commit fixes three minor bugs in the Stack Wallet app's ShopInBit ticket feature: it now loads missing offer prices in the ticket list and detail screens, adds automatic 30-second polling for new messages in the detail view, and removes a restriction that previously stopped closed/cancelled/refunded tickets from refreshing their messages. There is no clear security problem in the code changes themselves.

Security candidateBuild script improvements (#1312)by Dan Miller · e236a23b · May 1, 2026 · 9 filesMessage 76 · AdequateLow 26Details
Commit message · Dan Miller

Build script improvements (#1312)

* add secure storage linux deps

Don't install unused deb packages

Use stackwallet-ci image for test action workflow

* Fix container specification

* add -d flag to download libepiccash from GitHub Releases

* ci: use -d flag to download libepiccash instead of building in tests

* Add flutter_libmwc to download scripts

* Update flutter_libmwc to v0.1.0 release

* Add frostdart downloads to build script

* Add build job

76/100 · AdequateMessage clarity
✓ Descriptive subject✓ Provides detailed explanatory context✓ Mentions testing or verification✓ Links an issue, advisory, or supporting reference
Why it was queued
cryptography-sensitive path
AI analysis · Low 26/100

This commit is a routine build-system update for a cryptocurrency wallet app. It adds a new automated build workflow for Linux and Android, updates the Docker image used for builds, and changes some scripts to download pre-built crypto libraries from GitHub Releases instead of compiling them from source. There is no direct evidence in the diff of a security vulnerability, malicious code, or a backdoor. However, switching to downloaded pre-built binaries introduces a supply-chain risk: if the download source or release artifacts are compromised, the build pipeline could incorporate malicious native libraries into the wallet without reviewers seeing the source code change.

Security candidateci: port tests branch CI fixes to vacayby sneurlax · a2c9e781 · Apr 28, 2026 · 47 filesMessage 90 · StrongInformational 18Details
Commit message · sneurlax

ci: port tests branch CI fixes to vacay

- Replace PowerShell workflow with bash-based test.yaml from tests branch
(rustup install, valac/libtss2-dev deps, git_versions stubs, bash secrets,
ensure_test_app_config.sh, prebuild.sh, build_runner, coverage checks)
- Add scripts/ensure_test_app_config.sh (stub app_config.g.dart for CI)
- Add test infrastructure: hive_ce_test_utils, mock_electrum_server,
platform_test_overrides
- Update test files from tests branch (change_now, node_service, lockscreen,
create_pin, firo_wallet, price, electrumx, cached_electrumx, node_card,
node_options_sheet, utilities)
- Delete stale mock files; regenerate all mocks via build_runner
- Add testNodeConnectionProvider + typedef to test_node_connection.dart;
switch node_card, node_options_sheet, add_edit_node_view, node_details_view
to call via provider so platform_test_overrides can intercept in tests
- Fix logger infinite recursion: swallow dispatch errors instead of
recursively calling t() which causes StackOverflow in tests
- Upgrade bitcoindart to b02aaf6c (adds isParticl param used by particl_wallet)
with dependency_overrides entry to beat bip47's pin
- Pin dart_style 3.1.3 and analyzer <8.4.0 in pubspec.lock for build_runner

90/100 · StrongMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope✓ Provides detailed explanatory context✓ Mentions testing or verification
Why it was queued
access controlmemory safetyseed or entropy pathsigning or wallet pathauthentication path
AI analysis · Informational 18/100

This commit is almost entirely about making the automated test suite run reliably in CI. It swaps a PowerShell CI workflow for a bash one, adds test helpers and stubs, updates many generated mock files, and makes a small code change so the logger does not call itself forever when it fails. There is no obvious security vulnerability being introduced; the main risk is that a real bug in the logger could now be silently swallowed instead of reported.