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
Expand any commit for its author, full message, clarity score, changed files, triage signals, analysis, and source link.
Security candidatefix(shopinbit): back off pollers on error and pause when backgroundedby sneurlax · 5ebb52c2 · Jun 4, 2026 · 3 filesMessage 85 · StrongLow 37Details
Commit message · sneurlax
fix(shopinbit): back off pollers on error and pause when backgrounded
The payment, car-research, and ticket-detail views polled on fixed 15s/30s timers that kept firing at full rate even when a request failed, so a 429 just got ignored and re-provoked. Switch each to a self-scheduling timer that doubles its interval on failure (capped at 120s) and resets on success, and pause polling while the app is backgrounded via WidgetsBindingObserver. Previously swallowed poll errors are now logged.
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
authentication path
AI analysis · Low 37/100
This commit fixes a bug in Stack Wallet's ShopInBit feature where the app kept asking the server for updates every 15 or 30 seconds, even when the server was already saying 'slow down' (HTTP 429) or the request failed. The fix adds a backoff that doubles the wait time after failures, pauses polling when the app is in the background, and starts logging errors that were previously silently ignored. It is a defensive hardening change, not an active vulnerability being exploited.
Security candidatefix(shopinbit): back off the real-car-ticket adoption retriesby sneurlax · 5caf4095 · Jun 4, 2026 · 1 fileMessage 62 · AdequateInformational 19Details
Commit message · sneurlax
fix(shopinbit): back off the real-car-ticket adoption retries
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 change adjusts how the app waits for a car-purchase ticket to become available. Instead of asking the server every 3 seconds for 36 seconds (12 tries), it now asks fewer times and waits longer between each try. This is a reliability and politeness fix that reduces unnecessary load on the server and the user's device; it does not appear to be a security patch.
Security candidatefix(shopinbit): retry 429s with backoff at the request chokepointby sneurlax · 99345336 · Jun 4, 2026 · 2 filesMessage 85 · StrongLow 29Details
Commit message · sneurlax
fix(shopinbit): retry 429s with backoff at the request chokepoint
All ShopinBit requests funnel through _send, which treated 429 like any other error and let callers re-fire immediately. Add 429-aware retry there: respect a server Retry-After when present, else exponential backoff with jitter, capped at 30s. Widen the http Response to carry headers so Retry-After is readable.
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
authentication path
AI analysis · Low 29/100
This commit fixes a reliability issue in the Stack Wallet app's integration with ShopinBit. Previously, when the ShopinBit server was overwhelmed and returned a '429 Too Many Requests' error, the app would immediately give up and let the caller retry right away, potentially hammering the server even harder. Now, the app automatically waits and retries up to three times, respecting the server's 'Retry-After' instruction or using a sensible backoff delay. This is a defensive improvement that reduces accidental denial-of-service behavior and improves request success rates under load.
Security candidatefeat(shopinbit): show a QR code for manual crypto paymentsby sneurlax · 2b4d0cbc · Jun 2, 2026 · 1 fileMessage 62 · AdequateInformational 15Details
Commit message · sneurlax
feat(shopinbit): show a QR code for manual crypto payments
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 adds a QR code display to a payment screen so users can scan an address with another wallet app instead of copying and pasting it. There is no security issue visible in the change.
Security candidatefix(shopinbit): don't tear down the payment dialog when opening Send fromby sneurlax · 0a387bda · Jun 2, 2026 · 2 filesMessage 62 · AdequateInformational 17Details
Commit message · sneurlax
fix(shopinbit): don't tear down the payment dialog when opening Send from
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 17/100
This commit fixes a user-experience bug in the Stack Wallet app's ShopInBit payment flow on desktop. Previously, opening the 'send from' wallet dialog would close the entire payment dialog, so after sending funds the user was dumped back at the Services page instead of returning to the payment view. The change keeps the payment dialog open underneath the send dialog. There is no security vulnerability here—just a navigation/UI behavior fix.
Security candidatefix(shopinbit): retry the real car ticket longer, offer a My Requests shortcutby sneurlax · a10633a2 · Jun 2, 2026 · 1 fileMessage 62 · AdequateInformational 15Details
Commit message · sneurlax
fix(shopinbit): retry the real car ticket longer, offer a My Requests shortcut
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-experience improvement for a cryptocurrency wallet's car-research payment flow. It makes the app wait a bit longer for a backend ticket to appear and adds a 'My Requests' shortcut button so users don't have to navigate manually. There is no security-relevant change in the diff.
Security candidatefix: log previously-swallowed errors in ShopinBit and CakePay flowsby sneurlax · d911bfd2 · Jun 2, 2026 · 7 filesMessage 62 · AdequateInformational 20Details
Commit message · sneurlax
fix: log previously-swallowed errors in ShopinBit and CakePay flows
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 20/100
This commit only adds logging to error paths in the ShopinBit and CakePay shopping/payment flows. It does not change how errors are handled or fix any underlying bug; it simply records details that were previously silently ignored. There is no direct security fix here, but better logging can help developers detect and diagnose future problems.
Security candidatefix(shopinbit): stop polling a ticket once it reaches a terminal stateby sneurlax · f6babb46 · Jun 2, 2026 · 1 fileMessage 62 · AdequateInformational 18Details
Commit message · sneurlax
fix(shopinbit): stop polling a ticket once it reaches a terminal state
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 minor behavior bug in the Stack Wallet app's ShopInBit ticket screen. Previously, the app kept checking (polling) a support or order ticket every 30 seconds even after the ticket was already closed, merged, or refunded. The change makes the app stop polling once the ticket reaches a final, unchangeable state. This is mainly a resource/battery/network efficiency fix, not a security fix.
Lower-priorityfix(cakepay): make refreshAll single-flight so awaiters see completionby sneurlax · 7ba661a4 · Jun 2, 2026 · 2 filesMessage 62 · AdequateTriage 0Details
Commit message · sneurlax
fix(cakepay): make refreshAll single-flight so awaiters see completion
62/100 · AdequateMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope! No meaningful explanatory body
Security candidatefix(shopinbit): open the real car ticket after the research fee, not the receiptby sneurlax · a5b8a4b3 · Jun 2, 2026 · 2 filesMessage 62 · AdequateInformational 23Details
Commit message · sneurlax
fix(shopinbit): open the real car ticket after the research fee, not the receipt
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 fixes a bug in the Stack Wallet app's ShopInBit car-research payment flow. Previously, after a customer paid the research fee, the app tried to open the wrong ticket (a partner-only fee receipt that the customer cannot view), which could leave the user stuck or confused. The fix adds logic to find and open the actual customer-facing car-research ticket instead, with retries and a clearer message if it isn't ready yet.
Security candidatefix(shopinbit): tolerate empty/missing fields when parsing API JSONby sneurlax · 5de22578 · Jun 2, 2026 · 5 filesMessage 62 · AdequateInformational 23Details
Commit message · sneurlax
fix(shopinbit): tolerate empty/missing fields when parsing API JSON
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 the app more forgiving when it receives incomplete or oddly formatted data from the ShopinBit shopping service. It replaces several strict parsing rules with fallback values (for example, using today's date if an expiration date is missing, or 0 if a ticket ID can't be read). The change is defensive and reduces the chance that a malformed API response will crash the wallet, but it also silently hides bad data instead of reporting it. There is no direct evidence this fixes an active security vulnerability or was exploited.
✓ Subject identifies a change✓ Uses a recognizable type or scope! No meaningful explanatory body
Why it was queued
authentication path
AI analysis · Informational 16/100
This commit updates a status-checking helper in the Stack Wallet app so that two additional order/ticket states ('pendingClose' and 'refunded') are treated as 'terminal' or final states. Previously, only 'closed', 'closedCancelled', and 'merged' were considered finished. The change is a small bug fix in business logic and does not, by itself, appear to introduce a security vulnerability. The main security-relevant concern is whether treating these states as terminal could hide or prematurely stop handling of orders that still need user action or refunds, but the diff alone does not show that such mishandling actually occurs or is exploitable.
Security candidatefix: optimize a little bitby julian · c25b5cbc · Jun 1, 2026 · 2 filesMessage 57 · ThinInformational 12Details
Commit message · julian
fix: optimize a little bit
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 small performance optimization for a feature that fetches support ticket details from a third-party shopping service. It adds a shortcut so that if a ticket is already in a final state (closed, cancelled, or merged), the app skips making three API calls and uses the locally stored data instead. There is no indication this change fixes a security vulnerability.
Security candidatefix: empty string in response and more loggingby julian · 170cd9dd · Jun 1, 2026 · 2 filesMessage 57 · ThinInformational 20Details
Commit message · julian
fix: empty string in response and more logging
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 20/100
This commit fixes a minor app crash and adds better error logging. The app was failing when a backend response contained an empty VAT rate field, because the code expected a number and couldn't handle an empty string. The fix makes the VAT rate optional and safely parses it. The logging change helps developers see what went wrong during invoice loading.
Security candidatefix: log polling issue. Dialog isn't great here as its polling and... well...by julian · 44531dd8 · Jun 1, 2026 · 1 fileMessage 62 · AdequateInformational 16Details
Commit message · julian
fix: log polling issue. Dialog isn't great here as its polling and... well...
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 is a small user-experience and diagnostics fix in a cryptocurrency wallet's car-research payment screen. It replaces a silent failure during a background polling loop with a logged error message, while keeping the existing on-screen error notification. There is no direct security vulnerability visible in the change.
Lower-priorityfix: record order by using named paramsby julian · 4ef3fb35 · Jun 1, 2026 · 1 fileMessage 57 · ThinTriage 0Details
Commit message · julian
fix: record order by using named params
57/100 · ThinMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope! No meaningful explanatory body
Lower-priorityfix cakepay order refresh so awaiters can be sure a refresh has occurredby julian · 44042b0b · Jun 1, 2026 · 1 fileMessage 50 · ThinTriage 0Details
Commit message · julian
fix cakepay order refresh so awaiters can be sure a refresh has occurred
50/100 · ThinMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component! No meaningful explanatory body
✓ Subject identifies a change! No meaningful explanatory body! Contains work-in-progress language! Opaque security-relevant change
Why it was queued
authentication path
AI analysis · Informational 14/100
This commit is a large work-in-progress refactor of the ShopinBit feature inside the Stack Wallet app. It restructures local database tables, generated code, and UI files to support a new customer-key-based account model and ticket storage. There is no direct evidence in the commit message or diff that this is a security fix, security patch, or response to a reported vulnerability. It appears to be ordinary feature/codebase maintenance.
AI review queuedre enable shopinbitby julian · 0042ca98 · May 31, 2026 · 2 filesMessage 28 · OpaqueInformational 17Details
Commit message · julian
re enable shopinbit
28/100 · OpaqueMessage clarity
✓ Subject identifies a change! No meaningful explanatory body
Why it was queued
signing or wallet pathsecond-pass: opaque commit messagesecond-pass: security-sensitive path
AI analysis · Informational 17/100
This commit simply turns a feature flag back on for a third-party shopping integration called 'shopinBit' in two build configuration scripts. It adds one line to each script that includes the feature in the list of enabled app features. There is nothing in the commit that fixes, introduces, or describes a security vulnerability.
Security candidatepre loading example combined with required args in widget/viewby julian · cfb37fe1 · May 30, 2026 · 4 filesMessage 50 · ThinInformational 16Details
Commit message · julian
pre loading example combined with required args in widget/view
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 16/100
This commit refactors how a shopping feature in Stack Wallet loads country lists. Instead of fetching countries inside the shipping screen, it now fetches them earlier when the user accepts an offer, shows a loading spinner, validates the delivery country, and passes the list forward as a required argument. The change makes the shipping screen simpler and removes a fallback path where users could pick a different delivery country for restored orders. There is no obvious security bug in the diff, but the change removes some flexibility and error tolerance.
AI review queuedtemporarily disable shopinbit uiby julian · afb40b84 · May 30, 2026 · 2 filesMessage 35 · OpaqueInformational 17Details
Commit message · julian
temporarily disable shopinbit ui
35/100 · OpaqueMessage clarity
✓ Descriptive subject! No meaningful explanatory body
Why it was queued
signing or wallet pathsecond-pass: opaque commit messagesecond-pass: security-sensitive path
AI analysis · Informational 17/100
This commit removes a feature flag called 'shopinBit' from two build configuration scripts, effectively hiding that feature from two app variants (Stack Wallet and Stack Duo). There is no code change that fixes or changes any security behavior, cryptographic operation, network request, permission, or data handling. It is a straightforward feature-toggle removal with no apparent security relevance based on the diff alone.
Lower-priorityRevert "fix(desktop settings): clamp selected menu index to prevent RangeError"by julian · 0132c180 · May 30, 2026 · 1 fileMessage 77 · AdequateTriage 0Details
Commit message · julian
Revert "fix(desktop settings): clamp selected menu index to prevent RangeError"
This reverts commit 2d5c5b4fcb07f5a4b45b26292905b0a92c1b0141.
77/100 · AdequateMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides an explanatory body✓ Explains rationale or failure mode
✓ Descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope! No meaningful explanatory body
AI review queuedfix: account for Firo OP_RETURN in fee previewsby Navid Rahimi · 706779c1 · May 30, 2026 · 6 filesMessage 57 · ThinLow 31Details
Commit message · Navid Rahimi
fix: account for Firo OP_RETURN in fee previews
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 31/100
This commit fixes a bug in Stack Wallet where transaction fee previews did not include the extra cost of adding an OP_RETURN data output for Firo public-balance sends. As a result, users could have been shown a lower fee than what the network would actually charge, or the wallet might have constructed an under-funded transaction. The patch adds the missing fee calculation, makes the OP_RETURN state provider auto-dispose to avoid stale data, and guards state updates with a 'mounted' check to prevent crashes after a screen is closed.
AI review queuedAdd OP_RETURN support required for rosen bridgeby Navid Rahimi · c9035e41 · May 30, 2026 · 6 filesMessage 45 · ThinLow 37Details
Commit message · Navid Rahimi
Add OP_RETURN support required for rosen bridge
45/100 · ThinMessage clarity
✓ Descriptive subject✓ Names a concrete action or component! No meaningful explanatory body
Why it was queued
signing or wallet pathsecond-pass: security-sensitive path
AI analysis · Low 37/100
This commit adds support for embedding small pieces of public metadata (called OP_RETURN data) into cryptocurrency transactions, specifically to enable a feature called Rosen Bridge. The code lets users paste a special payment link or scan a QR code that includes bridge instructions, shows a warning if the user tries to use a private balance, and only allows the metadata on public Firo transactions. It also enforces an 80-byte size limit and validates the data before adding it to the transaction.