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

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

334security candidates400second-pass queue734AI analyses
66commits · 30 days
160commits · 60 days
606commits · 180 days
1009commits · 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
309Adequate · 60–79
506Thin · 40–59
190Opaque · 0–39
32security 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
Julian18939136042
Dan Miller831525053
Reuben Yap20318052
julian-CStack222049
levoncrypto24121043
Tritonn204412052
cassandras-lies413048
NyanCatTW1111045
Cyrix126804045
Analysis record

Published AI watches

Last scanned 33 minutes ago

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
Informational 24 AI analysisMessage 60 · Adequate
SW Stack WalletStack Wallet MoneroPrivacy protocolsSoftware wallets

Spark: add address ownership proof signing and verification

This commit adds a new feature to Stack Wallet that lets Spark (Firo privacy) address owners prove they control an address, and lets others verify that proof. It also fixes a few related UI issues: view-only wallets can now only verify (no…

New cryptographic signing/verification API integrated into walletView-only wallet restriction added to prevent signing with private keysWhitespace preservation in pasted messages reduces signature/verification mismatch risk
eb370258by Navid Rahimi+1097−16616 files
No security note in commit
Informational 20 AI analysisMessage 45 · Thin
SW Stack WalletStack Wallet MoneroPrivacy protocolsSoftware wallets

Merge branch 'staging' into feat/trocador-onion

This commit adds a small convenience feature in Stack Wallet: when a user scans or opens a Firo payment QR code that contains a 'message' field and the payment address is a Spark privacy address, the wallet now automatically copies that me…

Untrusted paymentData.message is copied into a transaction memo field without visible escaping/sanitizationRelies on SparkInterface.validateSparkAddress to gate memo population; correctness of that helper is not shown in the diffBehavior parity with firo-qt suggests a UX fix rather than a vulnerability fix
a0a72593by Julian+20−02 files
No security note in commit
Informational 19 AI analysisMessage 73 · Adequate
SW Stack WalletStack Wallet MoneroPrivacy protocolsSoftware wallets

Merge pull request #1463 from cypherstack/fix/firo-uri-message-to-spark-memo

This commit fixes a small user-experience gap in the Stack Wallet app for Firo cryptocurrency users. When someone scans or opens a Firo payment link (URI) that includes a message and the payment is going to a Spark privacy address, the app…

No security-relevant signals detected in the diff.Change is a UI autofill feature for Firo Spark memos from payment URI messages.No input sanitization changes beyond existing address validation.
48d10009by Julian+20−02 files
No security note in commit
Informational 19 AI analysisMessage 85 · Strong
SW Stack WalletStack Wallet MoneroPrivacy protocolsSoftware wallets

fix(firo): fill spark memo from payment URI message

This commit fixes a small user-experience bug in Stack Wallet for Firo cryptocurrency. When a user scanned or pasted a firo: payment link containing a message, the app previously put that message only in the local private note field. Now, …

No input sanitization on URI-derived memo before assigning to controllerBehavior aligned with firo-qt reference implementationNo changes to signing, encryption, address parsing, or network calls
60a6112dby sneurlax+20−02 files
No security note in commit
Low 30 AI analysisMessage 73 · Adequate
SW Stack WalletStack Wallet MoneroPrivacy protocolsSoftware wallets

Merge pull request #1452 from levoncrypto/masternode-operator-reward

This commit removes the user-facing 'operator reward' field from the Firo masternode registration screen and hard-codes that value to zero in the wallet logic. It is a feature removal rather than a fix for an active security flaw, but it d…

Removal of user-supplied numeric field that directly influenced on-chain transaction payload (nOperatorReward basis points)Elimination of locale-dependent decimal parsing and rounding path for a consensus-relevant valueHard-coding of a transaction field that previously had range/validation checks
7d9cba12by Julian+1−622 files
No security note in commit
Low 42 AI analysisMessage 50 · Thin
SW Stack WalletStack Wallet MoneroPrivacy protocolsSoftware wallets

Merge branch 'staging' into masternode-operator-reward

This commit changes how a Firo cryptocurrency wallet picks a special 'owner address' when setting up a masternode. Previously, the wallet only made sure the owner address was different from the collateral address. Now it also checks that t…

Address reuse prevention for masternode owner/payout rolesDefensive validation of derived addresses before useException raised when a suitable distinct address cannot be derived
e88cb980by Julian+9−81 file
No security note in commit
Low 42 AI analysisMessage 58 · Thin
SW Stack WalletStack Wallet MoneroPrivacy protocolsSoftware wallets

Merge pull request #1453 from levoncrypto/masternode-payout-ui

This change updates the Firo wallet's masternode owner address selection so that the chosen owner address is different from both the collateral address and the payout address. Previously, the code only ensured the owner address differed fr…

Defensive address-distinctness check added for masternode owner addressPrevents owner address from matching payout address, not just collateral addressError message updated to reflect new dual-distinctness requirement
fb70bccaby Julian+9−81 file
No security note in commit
Informational 19 AI analysisMessage 45 · Thin
SW Stack WalletStack Wallet MoneroPrivacy protocolsSoftware wallets

Merge branch 'staging' into masternode-payout-ui

This commit is a routine feature merge that adds support for a new Ethereum token called rsFIRO across several app variants. It updates token lists, adds an icon, and includes a database migration so existing users automatically see the ne…

No security-relevant code changes observedNew asset and token configuration onlyDatabase migration is additive and idempotent (checks for existing contract before insert)
1324e37aby Julian+454−29520 files
No security note in commit
Informational 19 AI analysisMessage 50 · Thin
SW Stack WalletStack Wallet MoneroPrivacy protocolsSoftware wallets

Merge branch 'staging' into masternode-operator-reward

This commit is a routine feature merge that adds support for a new Ethereum token called rsFIRO, updates some app configuration scripts, refreshes a privacy-related Git dependency, and fills in missing API-key placeholders for exchange int…

Database migration inserts a hardcoded token contract if the app config includes it and the contract is not already presentExternal Git dependency mobile_app_privacy changed to a new commit; content of new commit not suppliedNew exchange API key placeholders added (Trocador, LetsExchange, CypherGoat) in test/prebuild scripts
8cc81383by Julian+500−30528 files
No security note in commit
Informational 19 AI analysisMessage 73 · Adequate
SW Stack WalletStack Wallet MoneroPrivacy protocolsSoftware wallets

Merge pull request #1448 from reubenyap/codex/rsfiro-app-config

This commit adds support for a new Ethereum token called rsFIRO and makes the list of default Ethereum tokens configurable for each app flavor (Stack Wallet, Stack Duo, Campfire). It also includes a database migration so existing users get…

Database migration inserts a hardcoded ERC-20 contract address into user data based on app configurationMigration checks for existing contract by case-insensitive address comparison before insertionToken icon rendering now branches on contract address equality, which is a presentation-layer change
6203aeaeby Julian+454−29520 files
No security note in commit
Informational 24 AI analysisMessage 45 · Thin
SW Stack WalletStack Wallet MoneroPrivacy protocolsSoftware wallets

allow owner address to equal voting address

This small change relaxes a wallet rule for the Firo cryptocurrency. Previously, when setting up a masternode-like service, the wallet required the 'owner address' to be different from the 'voting address'. Now it allows them to be the sam…

Removal of address distinctness check between owner and voting addressesChange affects Firo masternode address derivation logicNo input validation, cryptographic, or memory-safety changes present
19add823by levoncrypto+3−41 file
No security note in commit
Moderate 59 AI analysisMessage 50 · Thin
SW Stack WalletStack Wallet MoneroPrivacy protocolsSoftware wallets

pick owner address distinct from payout and voting addresses

This change fixes how Stack Wallet picks a special 'owner address' for Firo masternode-related operations. Previously, the wallet only made sure the owner address was different from the collateral address. Now it also ensures it differs fr…

Address reuse prevention across masternode rolesFiro masternode owner/payout/voting address separationPrivacy improvement by avoiding identical addresses for distinct transaction roles
86b9ec97by levoncrypto+10−81 file
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 candidatefix(shopinbit): desktop first run dialogby julian · 5c7f7717 · Jun 23, 2026 · 1 fileMessage 57 · ThinInformational 15Details
Commit message · julian

fix(shopinbit): desktop first run dialog

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 · Informational 15/100

This commit is a routine UI tweak for the desktop version of a feature called ShopinBit. It changes the width of a first-run information dialog, removes a Cancel button, adjusts spacing, and indents bullet points. There is nothing here related to security.

AI review queuedfix: wrong app feature flag usedby julian · a6a72c17 · Jun 22, 2026 · 1 fileMessage 57 · ThinInformational 16Details
Commit message · julian

fix: wrong app feature flag used

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 · Informational 16/100

A single-line fix changes which app feature flag controls whether a 'Gift cards' button appears in the wallet screen. The old code checked a flag named 'shopinBit' but should have checked 'cakePay'. This is almost certainly a UI/functional bug rather than a security vulnerability, but it could affect whether users see or can access a third-party gift-card service integration.

Security candidatefeat(shopinbit): keep polling ticket state & messages of terminal ticketsby sneurlax · 6da8d2fe · Jun 19, 2026 · 2 filesMessage 62 · AdequateInformational 16Details
Commit message · sneurlax

feat(shopinbit): keep polling ticket state & messages of terminal tickets

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

This commit changes the Stack Wallet app so it keeps checking (polling) the status of certain ShopInBit support tickets even after they are in a final, unchangeable state. Previously, the app stopped polling once a ticket was closed, merged, or refunded. The change removes those stop conditions. On its own, this is a behavior change rather than a direct security flaw, but it could slightly increase network traffic, battery use, and the number of API calls made to the ShopInBit server. There is no evidence in the commit that this fixes a security vulnerability or that it introduces one.

Security candidateRevert "chore: disable shopinbit sandbox"by julian · 72cff2bf · Jun 18, 2026 · 1 fileMessage 60 · AdequateLow 26Details
Commit message · julian

Revert "chore: disable shopinbit sandbox"

This reverts commit d00a101abc0bb8da416fa6f81027584f12a4e7b3.

60/100 · AdequateMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Provides an explanatory body
Why it was queued
authentication path
AI analysis · Low 26/100

This commit flips a single setting in the Stack Wallet app so that its built-in ShopInBit shopping feature talks to a test/sandbox environment instead of the real production service. The change is explicitly marked with a TODO saying it must be set to false for production. Using sandbox mode in a production release could mean users see fake/test data, make payments that don't result in real orders, or interact with a less secure/test server. However, the diff alone does not prove this change was ever shipped to users, and the commit message only says it is reverting an earlier change that disabled the sandbox.

Security candidatechore: disable shopinbit sandboxby julian · d00a101a · Jun 18, 2026 · 1 fileMessage 47 · ThinLow 45Details
Commit message · julian

chore: disable shopinbit sandbox

47/100 · ThinMessage clarity
✓ Descriptive subject✓ Uses a recognizable type or scope! No meaningful explanatory body
Why it was queued
authentication path
AI analysis · Low 45/100

This commit changes a third-party shopping integration from 'sandbox' (test) mode to live mode. The developer left a note earlier saying it should be set to false in production. The change itself is a normal production toggle, but because it involves real money/purchases and secret API credentials, it is worth reviewing whether this was released safely and whether any test-only behavior or weaker security settings were carried over accidentally.

Security candidateSwitch default Tezos node to tezos.stackwallet.com which doesn't support /header/shell, so getChainHeight calls /header instead, which also contains level.by Dan Miller · 3c5e7918 · Jun 17, 2026 · 2 filesMessage 50 · ThinInformational 19Details
Commit message · Dan Miller

Switch default Tezos node to tezos.stackwallet.com which doesn't support /header/shell, so getChainHeight calls /header instead, which also contains level.

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

This commit changes the default Tezos blockchain server used by Stack Wallet from a public Tezos node to Stack Wallet's own node, and adjusts the API endpoint used to check the latest block height. There is no direct evidence in the commit of a security vulnerability, but running wallet traffic through a single party-controlled node and changing the data source for chain state can carry trust and reliability risks.

AI review queuedfix(firo): temporarily disable masternode management until its fixedby julian · 2cc98629 · Jun 17, 2026 · 2 filesMessage 62 · AdequateInformational 12Details
Commit message · julian

fix(firo): temporarily disable masternode management until its fixed

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

This commit simply hides the 'Masternodes' menu option for Firo wallets in both mobile and desktop versions of Stack Wallet. The underlying masternode management code is not removed or changed, only the user-facing button that opens it is commented out. The commit message says this is a temporary disablement 'until its fixed,' but gives no details about what is broken or whether it is security-related.

AI review queuedfix(firo): wip masternode ui fixing and cleanupby julian · 476bc108 · Jun 17, 2026 · 2 filesMessage 37 · OpaqueInformational 16Details
Commit message · julian

fix(firo): wip masternode ui fixing and cleanup

37/100 · OpaqueMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope! No meaningful explanatory body! Contains work-in-progress language
Why it was queued
second-pass: opaque commit message
AI analysis · Informational 16/100

This commit tidies up the Firo masternode creation screen. It adds a button-lock so pressing 'Create Masternode' repeatedly doesn't fire multiple times, wraps long-running balance checks in loading spinners, and replaces several hand-built confirmation dialogs with a single reusable dialog widget. There is no obvious security vulnerability being fixed here; it reads as a routine UI polish and bug-fix change.

AI review queuedfeat: initial letsexchangeby julian · 17eb06c8 · Jun 16, 2026 · 9 filesMessage 47 · ThinLow 28Details
Commit message · julian

feat: initial letsexchange

47/100 · ThinMessage clarity
✓ Descriptive subject✓ 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 28/100

This commit adds a new third-party cryptocurrency exchange integration called LetsExchange to the Stack Wallet app. It is a feature addition, not a bug fix. The code introduces network calls to LetsExchange's API, handles user funds routing through that service, and embeds an affiliate/referral ID in transaction requests. There is no direct evidence in the commit of a vulnerability, but integrating a new financial service always carries security and trust risks that warrant review.

Security candidateChange fact0rn explorer address from non-working one.by Dan Miller · a421c789 · Jun 12, 2026 · 1 fileMessage 50 · ThinInformational 19Details
Commit message · Dan Miller

Change fact0rn explorer address from non-working one.

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

This commit simply swaps the default web address used to look up Fact0rn transactions in Stack Wallet. The old explorer (factexplorer.io) was reportedly not working, so the developer reverted to the official explorer.fact0rn.io. There is no code change that handles private keys, balances, or network connections differently. At most, users who click a transaction link may now land on a working website instead of a broken one.

Security candidateUpdate URL for default fact0rn electrumx server.by Dan Miller · ddd18dca · Jun 12, 2026 · 1 fileMessage 45 · ThinInformational 13Details
Commit message · Dan Miller

Update URL for default fact0rn electrumx server.

45/100 · ThinMessage clarity
✓ Descriptive subject✓ Names a concrete action or component! No meaningful explanatory body
Why it was queued
cryptography-sensitive pathsigning or wallet path
AI analysis · Informational 13/100

This commit simply swaps the default server address used by the Stack Wallet app for the Fact0rn cryptocurrency from one Project Factor server (electrumx1) to another (electrumx2). It is a routine infrastructure update. There is no direct evidence in the commit that this fixes a security vulnerability, but changing default servers can be relevant to trust and availability.

AI review queuedfix(salvium): report node connect result in sync statusby Mæhdi MOKHTARI · 0cb62406 · Jun 12, 2026 · 1 fileMessage 85 · StrongInformational 20Details
Commit message · Mæhdi MOKHTARI

fix(salvium): report node connect result in sync status

updateNode() had the ConnectedSyncStatus and FailedSyncStatus calls
commented out, so a failed daemon connection only got logged and the
wallet stayed stuck on "Connecting..." forever instead of showing
"unable to sync".

This uncomments them so connect success and failure are both reflected
in the sync status, matching how lib_monero_wallet already behaves. Both
status classes are defined in this same file so it compiles as is.

85/100 · StrongMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope✓ Provides detailed explanatory context
Why it was queued
signing or wallet pathsecond-pass: security-sensitive path
AI analysis · Informational 20/100

This commit fixes a user-interface bug in the Salvium wallet. When the wallet tried to connect to a network node, the code that reports 'connected' or 'connection failed' was disabled by comment marks, so users saw 'Connecting...' forever even though the connection had already failed. The change simply re-enables those two status updates, making the sync status accurate. It is a reliability/usability fix, not a security vulnerability.

Security candidatefix: reduce pointless API callsby julian · a8e74ffe · Jun 11, 2026 · 1 fileMessage 57 · ThinInformational 18Details
Commit message · julian

fix: reduce pointless API calls

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 · Informational 18/100

This change alters how a wallet feature called ShopInBit refreshes support-ticket details. Previously it fired three API calls at once; now it first checks ticket status and skips the other two calls if the server returns a 403 'permission denied' response. The stated goal is simply to reduce unnecessary network traffic. There is no direct evidence in the commit that this fixes a security vulnerability, but it does reduce the amount of ticket-related data the app requests when the user is no longer authorized to view a ticket.

Security candidatefix: API was updated to show ticket type so we can now filter receipts outby julian · 7dbea236 · Jun 11, 2026 · 2 filesMessage 62 · AdequateInformational 16Details
Commit message · julian

fix: API was updated to show ticket type so we can now filter receipts out

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

This commit updates the wallet's integration with a third-party shopping service. The service's API now labels certain records as 'receipts', and the wallet now skips those records when refreshing ticket data. This appears to be a correctness or data-handling fix rather than a security vulnerability. There is no indication it fixes an exploit or protects user funds directly.

Security candidatefix: ensure ticket gets stored on car invoice polling ticket created/foundby julian · a1ccc0cd · Jun 11, 2026 · 1 fileMessage 62 · AdequateInformational 16Details
Commit message · julian

fix: ensure ticket gets stored on car invoice polling ticket created/found

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

This commit fixes a data-handling bug in a car-research invoice payment screen. Previously, when the app polled the server for invoice status and discovered a newly created support ticket, it did not save that ticket to the local database. The patch adds logic to fetch the full ticket details from the server and store a minimal local record so the rest of the app can see and update it later. There is no indication this is a security vulnerability; it appears to be a functional bug fix.

Security candidatechore: ensure expected field parsing fails ungracefullyby julian · d3aa32e6 · Jun 11, 2026 · 1 fileMessage 62 · AdequateLow 26Details
Commit message · julian

chore: ensure expected field parsing fails ungracefully

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 · Low 26/100

This commit changes how a wallet app parses invoice data from a partner service. Previously, missing or malformed date/number fields were handled gracefully by returning null or skipping them. Now, those same missing or malformed fields will cause the parsing to crash with an exception. The commit title says this ungraceful failure is intentional. This is a defensive change: it makes the app fail loudly instead of silently accepting bad data, which can prevent subtle bugs or misuse. However, it is not a typical security patch and could in theory be abused if an attacker can feed malformed JSON to the app to trigger a crash (denial of service).

Security candidatefix(shopinbit): remove unused customerKey field from ApiResponseby sneurlax · 2f8328e4 · Jun 11, 2026 · 2 filesMessage 62 · AdequateInformational 15Details
Commit message · sneurlax

fix(shopinbit): remove unused customerKey field from ApiResponse

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 removes an unused field called customerKey from a data structure used when the app talks to the ShopInBit service. There is no security fix here; it is a small cleanup that deletes dead code.

Security candidatefix(shopinbit): remove pointless mounted check and verbose commentsby sneurlax · d541d20a · Jun 11, 2026 · 1 fileMessage 62 · AdequateInformational 12Details
Commit message · sneurlax

fix(shopinbit): remove pointless mounted check and verbose comments

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

This commit removes a safety check and some explanatory comments from a Flutter screen that shows a fallback dialog when a car purchase ticket takes too long to appear. The removed 'mounted' check ensured the screen still existed before showing a dialog. On its own, this change does not create a security issue; it is a minor code-cleanup change that slightly increases the theoretical risk of a harmless UI crash if the screen is closed at exactly the wrong moment.

Security candidatefix(shopinbit): only mark car research complete once the ticket existsby sneurlax · 6b7d9bcb · Jun 11, 2026 · 1 fileMessage 62 · AdequateInformational 16Details
Commit message · sneurlax

fix(shopinbit): only mark car research complete once the ticket exists

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

This commit fixes a UI timing bug in a cryptocurrency wallet's car-research payment flow. Previously, the app could mark the payment as 'complete' and try to open the order details before the backend ticket actually existed, which could briefly show the wrong screen or a fallback. Now it waits until the real ticket ID is available before marking the flow complete. There is no direct evidence this is a security vulnerability.

AI review queuedfix(firo): clear stale op return send stateby Navid Rahimi · 7cc95b07 · Jun 11, 2026 · 3 filesMessage 57 · ThinLow 49Details
Commit message · Navid Rahimi

fix(firo): clear stale op return send state

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

This commit fixes a UI state bug in the Stack Wallet app where leftover 'OP_RETURN' data (extra information sometimes attached to a cryptocurrency transaction) could stick around when a user changed the recipient address or scanned a new QR code. The leftover data could then incorrectly block or alter sending for coins that don't support it. The patch clears that stale state in more places and disables the preview-transaction button when OP_RETURN data is present for any coin other than Firo.

Security candidatefix(shopinbit): handle no_payment_required as fully coveredby sneurlax · 0119c48f · Jun 11, 2026 · 2 filesMessage 62 · AdequateInformational 21Details
Commit message · sneurlax

fix(shopinbit): handle no_payment_required as fully covered

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

This commit fixes a UI/workflow bug in Stack Wallet's ShopInBit integration. When an order is fully covered by a voucher or store credit, the payment status becomes 'no_payment_required' and the invoice has no payment addresses. Previously the app treated this as a failed payment load and blocked the user; now it shows a 'fully covered' screen and lets the user continue. It is a functional bug fix rather than a security vulnerability.

Security candidatechore(shopinbit): address review on car-research finalizeby sneurlax · e61d8400 · Jun 11, 2026 · 2 filesMessage 62 · AdequateInformational 23Details
Commit message · sneurlax

chore(shopinbit): address review on car-research finalize

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

This commit makes two small code cleanups in a car-research payment flow. One change removes a manual timer cancellation and relies on the caller to cancel it, which could in theory lead to a timer continuing to run briefly if the caller doesn't always do so. The other change replaces a safe integer parser (which throws a clear error on bad input) with a stricter parser that throws a less informative error. Neither change is obviously a security fix, and the commit message frames them as routine review follow-up rather than a security issue.

Security candidatefix(shopinbit): surface parse errors for required ticket fieldsby sneurlax · 860bd1ab · Jun 11, 2026 · 2 filesMessage 62 · AdequateLow 29Details
Commit message · sneurlax

fix(shopinbit): surface parse errors for required ticket fields


and cleaning

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 · Low 29/100

This commit changes how the Stack Wallet app parses data from its ShopInBit partner service. Previously, missing or malformed fields were silently replaced with empty strings, zero, or the current date/time. Now the app throws visible errors instead. That is generally a good defensive change, but it removes some safety comments and fallback behavior for unknown ticket states, and it makes parsing stricter. The patch is small and appears aimed at surfacing bugs rather than introducing a vulnerability, but it is only a partial hardening of the parsing layer.

Security candidatefix(shopinbit): require remaining required fields across modelsby sneurlax · 8e33585b · Jun 11, 2026 · 5 filesMessage 62 · AdequateLow 26Details
Commit message · sneurlax

fix(shopinbit): require remaining required fields across models

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 · Low 26/100

This commit tightens how the Stack Wallet app reads data from its ShopInBit partner service. Previously, several fields were treated as optional and replaced with safe defaults (empty strings, false, current time) when missing. Now the code requires those fields to be present and correctly typed. This is a defensive correctness fix: it makes the app fail earlier and more visibly if the server sends unexpected or malformed data, rather than silently continuing with placeholder values. There is no direct evidence this fixes an active security vulnerability, but it reduces the risk of logic errors or misleading UI state caused by missing fields.

Security candidatefix(shopinbit): keep car-research expiresAt null on parse failureby sneurlax · 1e820fd7 · Jun 10, 2026 · 1 fileMessage 62 · AdequateLow 35Details
Commit message · sneurlax

fix(shopinbit): keep car-research expiresAt null on parse failure

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 · Low 35/100

This commit fixes a bug in the Stack Wallet app's integration with ShopinBit's car-research service. Previously, if the invoice expiration date was missing or unreadable, the app would silently replace it with the current time, making a brand-new invoice look like it had already expired. Now the app keeps the expiration date as 'unknown' instead of guessing. This is a correctness and user-experience fix, not a remote code execution or theft vulnerability.