Skip to content

Promote: staging -> develop - #949

Merged
TaprootFreak merged 2 commits into
developfrom
staging
Aug 26, 2026
Merged

Promote: staging -> develop#949
TaprootFreak merged 2 commits into
developfrom
staging

Conversation

@github-actions

Copy link
Copy Markdown
Contributor

Automatic Staging PR

This PR was automatically created after changes were pushed to staging.

Commits: 1 new commit(s)

Checklist

  • Review all changes
  • Verify CI passes
  • Approve and merge to promote into develop

EN:
If a software-wallet REALU send already broadcast but the receipt wait
timed out, the app now treats that as success when the HTTP status is
500 and the error names the tx hash. A 400 or 409 whose JSON body
happens to look like a timeout stays a failure. The failure sheet never
shows raw viem or exception text for generic errors. The in-progress
copy no longer asks the user to confirm in a wallet.

DE:
Wenn ein REALU-Send mit Software-Wallet schon broadcastet ist und der
Receipt-Wait ausläuft, zeigt die App Erfolg nur bei HTTP 500 und einem
Fehler, der den tx-Hash nennt. Ein 400 oder 409, dessen JSON-Body wie
ein Timeout aussieht, bleibt ein Fehler. Das Fehler-Sheet zeigt bei
generic keinen viem- oder Exception-Rohtext. Der Fortschrittstext
verlangt keine Wallet-Bestätigung mehr.

<details>
<summary>Details</summary>

- The transfer service maps HTTP 500 plus a receipt-wait timeout phrase
(`timed out while waiting for transaction` and `0x` + 64 hex) to
`TransferReceiptTimeoutException`. The cubit maps only that type to
success.
- Body `statusCode` must not override the HTTP status: HTTP 400/409 with
a timeout-like JSON body stays `ApiException`.
- Generic failures always use localized copy; viem/timeout strings are
never shown.
- `sendSigning`: EN `Sending the transfer` / DE `Überweisung wird
gesendet`.
- The signing-state visual baseline was refreshed from the self-hosted
Visual Regression runner for that copy.
- Retry still reuses the same prepare id.
- Tests on the build host: exception surface, transfer service, send
cubit, send page — 113 passed.

The matching API change is a separate public pull request.

</details>

---------

Co-authored-by: TaprootFreakAI <315477232+TaprootFreakAI@users.noreply.github.com>
@TaprootFreak TaprootFreak added the tier3:full Opt-in: run Tier 3 Maestro handbook flows on this PR label Aug 26, 2026
EN:
Send and Pay no longer stack a second amount or quote page when the
camera keeps seeing the same QR. Both scanner pages re-arm only after
that route pops. A catalog, real-cubit double-capture tests, and a
CONTRIBUTING rule make the same mistake a blocking review finding.

DE:
Senden und Bezahlen stapeln keine zweite Betrags- oder Quote-Seite mehr,
wenn die Kamera denselben QR weiter sieht. Beide Scanner-Seiten rüsten
erst wieder auf, nachdem diese Route geschlossen wurde. Katalog, Tests
mit echtem Cubit und eine CONTRIBUTING-Regel machen denselben Fehler zum
blockierenden Review-Fund.

<details>
<summary>Details</summary>

`QrScannerView` forwards every camera frame. The send recipient page and
the pay scan page used to `Navigator.push` the next step and `reset()`
the cubit in the same listener turn. That dropped the decoded/valid
guard, so the next frame pushed a second copy of the same page.

Both consumers now use `pushThenRearm`: push first, call `reset` only
after the route pops. Invalid-scan snackbars that do not push still
reset immediately.

Tests:

- Catalog `test/helper/scanner_navigation_catalog.dart` plus a discovery
self-test that fails if any `QrScannerView(` under `lib/` is missing
from the catalog.
- Real-cubit widget tests fire two `BarcodeCapture`s and expect the
destination `findsOne`; after pop, a third capture is accepted.
- Existing mock page tests now assert `reset` is not called until pop.

CONTRIBUTING.md has a new **Scanner navigation — CRITICAL** section;
`docs/testing.md` has the matching test contract.

</details>

---------

Co-authored-by: TaprootFreakAI <315477232+TaprootFreakAI@users.noreply.github.com>
@TaprootFreak
TaprootFreak merged commit ce58eee into develop Aug 26, 2026
9 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

tier3:full Opt-in: run Tier 3 Maestro handbook flows on this PR

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants