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
309Adequate · 60–79
506Thin · 40–59
190Opaque · 0–39
32security candidates with opaque commit messaging
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
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
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
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.
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
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
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
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
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)
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
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
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
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
✓ 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 simply corrects an error message text. When a part of the app called ShopInBitService is used before being set up, the thrown error now tells the user to call ensureInitialized() instead of the outdated init(). There is no security change.
AI review queuedwip use "infinite" scrolling list viewby julian · c7c1c870 · May 25, 2026 · 2 filesMessage 25 · OpaqueInformational 15Details
Commit message · julian
wip use "infinite" scrolling list view
25/100 · OpaqueMessage clarity
✓ Descriptive subject✓ Names a concrete action or component! No meaningful explanatory body! Contains work-in-progress language
Why it was queued
second-pass: opaque commit message
AI analysis · Informational 15/100
This commit is a routine user-interface refactor. It replaces a one-shot list of gift-card vendors with an 'infinite scroll' list that loads more cards as the user scrolls, and updates the backend client to return paginated results. There is no security-relevant change visible in the diff.
✓ 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 cleans up a merge conflict in the Stack Wallet app. It adds a new optional database column to store the raw order status text from a third-party shopping service (ShopInBit), updates the generated database code, and fixes a small logic bug where an order status could be set to null. There is no obvious security vulnerability here; it looks like a routine data-model and bug-fix cleanup after merging two branches.
Security candidatefix(ui): More shopinbit stuff, navigation fixes, styling, etc etc. Probably still a WIPby julian · 28f495cf · May 25, 2026 · 8 filesMessage 42 · ThinInformational 18Details
Commit message · julian
fix(ui): More shopinbit stuff, navigation fixes, styling, etc etc. Probably still a WIP
42/100 · ThinMessage clarity
✓ Specific, 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
authentication path
AI analysis · Informational 18/100
This commit is a routine user-interface refactor for a third-party shopping feature called ShopinBit. It replaces some desktop-specific popup dialog code with a shared navigation system, tweaks button layouts, and fixes styling. There is no clear security bug being patched, and no sensitive data handling or cryptographic code is changed.
✓ Descriptive subject✓ Uses a recognizable type or scope! No meaningful explanatory body
Why it was queued
authentication path
AI analysis · Informational 15/100
This commit changes a single user-interface label in a travel booking form. The dropdown that previously showed the placeholder text 'Month or season' now shows just 'Month'. There is no security relevance: it is purely a wording correction.
Security candidateuse date picker widget in shopinbit formby julian · bb4ca156 · May 23, 2026 · 1 fileMessage 45 · ThinInformational 15Details
Commit message · julian
use date picker widget in shopinbit form
45/100 · ThinMessage clarity
✓ Descriptive subject✓ Names a concrete action or component! No meaningful explanatory body
Why it was queued
authentication path
AI analysis · Informational 15/100
This commit replaces two separate date text fields in a travel booking form with a single built-in date-range picker widget. It is a routine user-interface cleanup with no apparent security relevance.
AI review queuedfeat(ui): extract date picker widgetby julian · 0376406d · May 23, 2026 · 2 filesMessage 57 · ThinInformational 15Details
Commit message · julian
feat(ui): extract date picker widget
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 15/100
This commit is a routine user-interface cleanup: it moves the date-range picker code out of the transaction-search screen and into a reusable widget file. There is no security-relevant change visible in the diff.
Security candidatefeat(ui): date picker range selectionby julian · 491d6d6a · May 23, 2026 · 5 filesMessage 57 · ThinInformational 15Details
Commit message · julian
feat(ui): date picker range selection
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 pathauthentication path
AI analysis · Informational 15/100
This commit is a routine user-interface feature update. It extends the app's custom date picker so it can optionally return a date range instead of a single date, and updates the existing call sites to keep using only the first selected date. There is no security-relevant change visible in the diff.
Security candidatefix(ui): date picker styleby julian · 8493d129 · May 23, 2026 · 2 filesMessage 57 · ThinInformational 15Details
Commit message · julian
fix(ui): date picker style
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 user-interface styling fix. It swaps the standard Flutter date picker for a custom Stack Wallet date picker in a travel booking form and makes the custom picker accept optional start/end date limits. There is no security-relevant change visible in the code.
Security candidatetweak mobile layout to make checkboxes look betterby julian · c97aa979 · May 23, 2026 · 3 filesMessage 50 · ThinInformational 15Details
Commit message · julian
tweak mobile layout to make checkboxes look better
50/100 · ThinMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component! No meaningful explanatory body
Why it was queued
authentication path
AI analysis · Informational 15/100
This commit only adjusts vertical spacing (padding) between checkboxes and buttons on mobile screens in three shopping/concierge forms. It is a cosmetic UI tweak with no security relevance.
Security candidatefix(ui): only show close warning dialog when appropriateby julian · 09bf8ce2 · May 22, 2026 · 6 filesMessage 62 · AdequateInformational 18Details
Commit message · julian
fix(ui): only show close warning dialog when appropriate
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 18/100
This commit fixes a user-interface annoyance in Stack Wallet. Previously, closing certain pop-up dialogs would show an unnecessary 'are you sure you want to close?' warning even when no important progress was at risk. The change makes the warning appear only when appropriate, such as when the user is in the middle of a multi-step flow, and skips it on the very first step or when the navigation stack is empty. There is no direct evidence this is a security fix.
AI review queuedci: add AppImage builds and full platform coverage for campfire and stack_duoby Dan Miller · b37c4655 · May 22, 2026 · 15 filesMessage 72 · AdequateInformational 15Details
Commit message · Dan Miller
ci: add AppImage builds and full platform coverage for campfire and stack_duo
72/100 · AdequateMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope✓ Mentions testing or verification! No meaningful explanatory body
Why it was queued
signing or wallet pathsecond-pass: security-sensitive path
AI analysis · Informational 15/100
This commit only adds new build and packaging automation. It creates GitHub Actions jobs to produce AppImage, Flatpak, Android, Windows, macOS, and iOS builds for the Campfire and Stack Duo wallet variants, plus small launcher scripts and desktop metadata files. There is no change to wallet logic, cryptography, networking, or user data handling.
Security candidatefeat(ui): allow custom nested nav flow close argsby julian · 8413a3dd · May 22, 2026 · 6 filesMessage 57 · ThinInformational 12Details
Commit message · julian
feat(ui): allow custom nested nav flow close args
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 12/100
This commit is a user-interface cleanup. It moves the 'Are you sure you want to close?' confirmation logic into a shared dialog widget and lets different screens choose whether to show a warning, a generic message, or no warning at all. There is no indication this fixes a security vulnerability; it appears to be a normal feature/refactoring change.
✓ 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 cleanup for the ShopinBit checkout flow. It swaps one dialog widget for another, adjusts spacing and padding, replaces a Material icon with an SVG icon, removes an unused internal warning dialog, and tweaks dropdown positioning. There is no indication of any security fix or behavior change that would affect user safety.
AI review queuedAdd flatpak build job to CIby Dan Miller · c457649f · May 22, 2026 · 5 filesMessage 45 · ThinInformational 15Details
Commit message · Dan Miller
Add flatpak build job to CI
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 · Informational 15/100
This commit adds a new automated build step that produces a Flatpak installer for Linux. It does not change the wallet's code, cryptographic handling, or permissions beyond what a normal Linux desktop app needs. There is no indication this is a security fix or introduces a vulnerability.
AI review queuedflatpak: grant filesystem access to ~/.stackwalletby Dan Miller · 94168a9b · May 22, 2026 · 1 fileMessage 50 · ThinLow 26Details
Commit message · Dan Miller
flatpak: grant filesystem access to ~/.stackwallet
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 26/100
This commit changes the Flatpak packaging for Stack Wallet so the app can read and write files in a folder named .stackwallet inside the user's home directory. Flatpak apps normally run in a sandbox with limited access to the rest of the system. The change gives the app access to one specific, named folder, which is a common and usually reasonable way for a wallet app to store its data. By itself, this is not a vulnerability, but it slightly widens the sandbox. If the app were ever compromised, that folder could be read or modified by the attacker.
AI review queuedAdd flatpak build job to CIby Dan Miller · 8e44e2c3 · May 22, 2026 · 5 filesMessage 45 · ThinInformational 15Details
Commit message · Dan Miller
Add flatpak build job to CI
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 · Informational 15/100
This commit adds a new automated build step that packages the existing Linux version of Stack Wallet as a Flatpak installer. It does not change the wallet's actual code, only the build/release pipeline and packaging metadata. There is no indication of a security fix or vulnerability.
AI review queuedflatpak: grant filesystem access to ~/.stackwalletby Dan Miller · 8b704da0 · May 22, 2026 · 1 fileMessage 50 · ThinLow 29Details
Commit message · Dan Miller
flatpak: grant filesystem access to ~/.stackwallet
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 29/100
This change updates the Flatpak packaging for Stack Wallet so the app can read and write files in the user's ~/.stackwallet folder. This is likely needed so the wallet can store its data outside the sandbox. By itself, granting access to a dedicated wallet directory is a routine, expected permission change and not a vulnerability. However, it slightly widens the app's sandbox escape surface because a bug or malicious component inside the app could now access, modify, or delete files in that folder, including wallet backups or configuration data.
Security candidaterefactor(shopinbit): remove ticket count from "My requests" buttonby sneurlax · c3197dc5 · May 22, 2026 · 2 filesMessage 62 · AdequateInformational 15Details
Commit message · sneurlax
refactor(shopinbit): remove ticket count from "My requests" button
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 simply removes a small UI feature that showed the number of open support tickets on a 'My requests' button in the ShopInBit service area. The button still works and opens the requests page; it just no longer displays the count. There is no security relevance visible in the change.
✓ 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 20/100
This commit is a user-interface refactor for two third-party order/payment features (CakePay and ShopInBit). It moves order loading and polling out of the UI screens into dedicated background services, adds pull-to-refresh and refresh buttons, and removes full-screen loading spinners that previously blocked the app. There is no direct evidence in the commit that it fixes a security vulnerability; it appears aimed at improving responsiveness and fixing UI lock-ups.
feat(shopinbit): add warning dialog when closing mid-flow
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 adds a confirmation dialog that asks users 'Are you sure you want to close?' when they click the X button partway through a ShopInBit or CakePay purchase flow. Previously, the X button could close the whole checkout window unexpectedly, which might cause a user to lose their place or abandon a payment. There is no sign of a security vulnerability being fixed; it is a usability improvement to prevent accidental closure.
Security candidatefeat(shopinbit): don't repetitively ask for the user's display nameby sneurlax · 3bf4f8b9 · May 22, 2026 · 2 filesMessage 62 · AdequateInformational 15Details
Commit message · sneurlax
feat(shopinbit): don't repetitively ask for the user's display name
it's already been set
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 small user-experience improvement for the ShopinBit feature in Stack Wallet. It skips a screen that repeatedly asks the user for their display name when that name has already been saved. There is no security issue visible in the change.
AI review queuedhide/disable shopinbit/cakepay based on app features flagsby julian · fd8bb87b · May 22, 2026 · 6 filesMessage 50 · ThinInformational 15Details
Commit message · julian
hide/disable shopinbit/cakepay based on app features flags
50/100 · ThinMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component! No meaningful explanatory body
Why it was queued
signing or wallet pathsecond-pass: security-sensitive path
AI analysis · Informational 15/100
This commit simply hides or shows two app features—ShopinBit and CakePay gift cards—based on configuration flags. It is a normal UI customization change, not a security fix or vulnerability.
Security candidatefix(shopinbit): handle timestamps from the API consistentlyby sneurlax · 7cff09c4 · May 22, 2026 · 1 fileMessage 77 · AdequateInformational 16Details
Commit message · sneurlax
fix(shopinbit): handle timestamps from the API consistently
whether they have the timezone suffix or not
77/100 · AdequateMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope✓ Provides an explanatory body
Why it was queued
authentication path
AI analysis · Informational 16/100
This commit is a small UI fix for the ShopInBit ticket detail screen. It changes how timestamps received from the API are displayed to users, making the formatting consistent whether or not the API includes timezone information. It also adds the date (e.g., 'Jan 5') when a message is not from today. There is no security issue visible in this change.
Security candidatefeat(shopinbit): migrate forms to AdaptiveTextField, delete step4 fieldby sneurlax · 79d4087c · May 22, 2026 · 6 filesMessage 62 · AdequateInformational 15Details
Commit message · sneurlax
feat(shopinbit): migrate forms to AdaptiveTextField, delete step4 field
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 cleanup. It replaces several custom-built text input boxes in the ShopInBit shopping flow with a shared, reusable component called AdaptiveTextField, and removes an old, now-unused custom text field file. There is no indication this change fixes or introduces a security problem.