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.
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
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
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
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
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)
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
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.
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…
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.
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
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
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
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
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
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
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` …
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
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
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.
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
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
Expand any commit for its author, full message, clarity score, changed files, triage signals, analysis, and source link.
Lower-priorityFix Android ABI conflict with --split-per-abiby Dan Miller · a3794227 · May 2, 2026 · 1 fileMessage 45 · ThinTriage 0Details
Commit message · Dan Miller
Fix Android ABI conflict with --split-per-abi
45/100 · ThinMessage clarity
✓ Descriptive subject✓ Names a concrete action or component! No meaningful explanatory body
Why it was queued
documentation-only discount
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.
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.
✓ 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.
✓ 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.
Lower-priorityInclude Android SDK license hash files in docker imageby Dan Miller · b296975b · May 1, 2026 · 1 fileMessage 50 · ThinTriage 0Details
Commit message · Dan Miller
Include Android SDK license hash files in docker image
50/100 · ThinMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component! No meaningful explanatory body
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.
Lower-priorityAdd -s flag to build_app.sh to use system jsoncpp and libsecret (#1308)by Dan Miller · 3237788b · Apr 30, 2026 · 3 filesMessage 73 · AdequateTriage 0Details
Commit message · Dan Miller
Add -s flag to build_app.sh to use system jsoncpp and libsecret (#1308)
Add back in secure storage dependencies until docker branch is merged
73/100 · AdequateMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides an explanatory body✓ Links an issue, advisory, or supporting reference
Lower-priorityAdd NDK and mingw to ci-builer Dockerfileby Dan Miller · 1740d898 · Apr 30, 2026 · 1 fileMessage 60 · AdequateTriage 0Details
Commit message · Dan Miller
Add NDK and mingw to ci-builer Dockerfile
reorganize apt block with grouping and move SHELL before first RUN
60/100 · AdequateMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Provides an explanatory body
Lower-priorityadd secure storage linux depsby Dan Miller · 8c339cf4 · Apr 29, 2026 · 3 filesMessage 78 · AdequateTriage 0Details
Commit message · Dan Miller
add secure storage linux deps
Don't install unused deb packages
Use stackwallet-ci image for test action workflow
Fix container specification
Add deb packages to Dockerfile needed for build
Add system git safe directory to Dockerfile to deal with user changes
Also run docker image build workflow on staging branch
78/100 · AdequateMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context✓ Mentions testing or verification
Lower-prioritychore: dart format source changes; use submodules:recursive in checkoutby sneurlax · b26a7be6 · Apr 28, 2026 · 5 filesMessage 85 · StrongTriage 0Details
Commit message · sneurlax
chore: dart format source changes; use submodules:recursive in checkout
- dart format node_card, node_options_sheet, add_edit_node_view, node_details_view (format check would have failed on CI) - Switch checkout to submodules:recursive parameter (from ci_fixes); drops separate git submodule update step
85/100 · StrongMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope✓ Provides detailed explanatory context
Lower-priorityCi fixes (#1307)by Dan Miller · 7788537f · Apr 28, 2026 · 1 fileMessage 51 · ThinTriage 0Details
Commit message · Dan Miller
Ci fixes (#1307)
* Replace submodules step in workflow with parameter to checkout action
* Fix workflow step that runs configure script
51/100 · ThinMessage clarity
✓ Subject identifies a change✓ Provides an explanatory body✓ Links an issue, advisory, or supporting reference
Why it was queued
documentation-only discount
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.
Lower-priorityInstall vapigen and tss2 packages for building libsecret (#1306)by Dan Miller · 74077493 · Apr 28, 2026 · 1 fileMessage 58 · ThinTriage 0Details
Commit message · Dan Miller
Install vapigen and tss2 packages for building libsecret (#1306)
58/100 · ThinMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Links an issue, advisory, or supporting reference! No meaningful explanatory body
Why it was queued
documentation-only discount
Lower-priorityUpdate deprecated checkout action and install required rust toolchainsby Dan Miller · 18ad841f · Apr 28, 2026 · 1 fileMessage 65 · AdequateTriage 0Details
Commit message · Dan Miller
Update deprecated checkout action and install required rust toolchains
* Update deprecated checkout action
* Install required rust toolchains
65/100 · AdequateMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides an explanatory body
✓ 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 42/100
This commit fixes how transaction fees are subtracted from Spark mint outputs. The old code could mis-handle cases where an output was too small to cover its share of the fee, potentially leaving leftover fees unassigned or removing outputs incorrectly. The new code walks through outputs one by one, recalculating each remaining output's fair share of the fee, and cleanly removes outputs that cannot cover their portion. It also adds a guard to drop the whole input set if every output gets removed because fees exceed the mint amount.
✓ 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 revises how Stack Wallet builds Spark mint transactions. The visible changes fix a fee-rate floor bug, correct a loop that could remove the wrong recipient when outputs are too small, and tighten error handling when signing keys or change addresses are missing. It also replaces an eager key-caching approach with lazy caching. The commit is framed as responding to an external review, but no security incident or CVE is mentioned in the materials provided.
`dart format $(git diff --name-only origin/staging...HEAD | grep '\.dart$')`
72/100 · AdequateMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope✓ Provides an explanatory body
Why it was queued
signing or wallet pathauthentication path
AI analysis · Informational 15/100
This commit is purely a code-formatting cleanup. It runs the Dart formatter on several files related to the ShopinBit feature, adjusting line breaks, indentation, and whitespace. No functionality, logic, or security behavior was changed.
`dart format $(git diff --name-only origin/staging...HEAD | grep '\.dart$')`
72/100 · AdequateMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope✓ Provides an explanatory body
Why it was queued
signing or wallet pathauthentication path
AI analysis · Informational 15/100
This commit is purely a code-formatting cleanup. It runs the Dart formatter on 21 files related to the CakePay and ShopinBit features, changing only whitespace, line breaks, and indentation. No functionality, logic, or security behavior was altered.
AI review queuedchore: dart format fix/mwcby sneurlax · 4f93355e · Apr 27, 2026 · 2 filesMessage 72 · AdequateInformational 15Details
Commit message · sneurlax
chore: dart format fix/mwc
`dart format $(git diff --name-only origin/staging...HEAD | grep '\.dart$')`
72/100 · AdequateMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope✓ Provides an explanatory body
Why it was queued
signing or wallet pathsecond-pass: security-sensitive path
AI analysis · Informational 15/100
This commit is purely a code-formatting cleanup. It runs Dart's automatic formatter on two files, adjusting whitespace and line breaks without changing any logic, calculations, or behavior. There is no security issue here.
refactor(mwc): consolidate openWallet calls through _ensureWalletOpen
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 16/100
This commit is a small internal cleanup for the Mimblewimblecoin wallet code. It replaces several repeated blocks of 'open the wallet' code with a single shared helper, and adds a 60-second timeout to one wallet-opening call so the app doesn't hang forever if something goes wrong. There is no obvious security bug being fixed; it is a code-quality and reliability improvement.
Lower-priorityfeat(model): add nodeApiSecret field to NodeModelby sneurlax · f8cc879d · Apr 27, 2026 · 2 filesMessage 57 · ThinTriage 0Details
Commit message · sneurlax
feat(model): add nodeApiSecret field to NodeModel
57/100 · ThinMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope! No meaningful explanatory body
AI review queuedrefactor(mwc): read API secret from NodeModel instead of hardcodingby sneurlax · 6170e8cd · Apr 27, 2026 · 3 filesMessage 62 · AdequateModerate 59Details
Commit message · sneurlax
refactor(mwc): read API secret from NodeModel instead of hardcoding
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 · Moderate 59/100
This commit removes a hardcoded API password that was embedded in the Stack Wallet source code for connecting to a default Mimblewimblecoin (MWC) node. Previously, anyone reading the code could see the secret password. Now the wallet reads the password from user-configured node settings instead. This is a security improvement, but the change also shows that a real secret was once hardcoded and may have been exposed to anyone inspecting older versions of the app.