A saved wait whose decoded.details is not a list of records threw when its receipt arrived. The popup then stayed on WaitTx with the counter stopped. decodedDetailsHtml() now shows only the lines whose label and value are text, and never throws. When no line can be read, SuccessTx shows the amount and recipient instead of an empty box.
This also carries the two notes from the review of #737:
The Amount figure and the amounts under it use break-words, so words stay whole and long runs of digits still wrap.
A Permit2 allowance line on WaitTx and ErrorTx now shows its Allowance token line. That line gives the token's symbol and address, as SuccessTx does.
Disclosures:
Judgement call: a line with an address but no value is now dropped, as the issue's rule says. The decoders always write a value, so two older test records gained one.
Judgement call: renderError() now sets up copying when there is no hash. Otherwise the new address could not be copied after a failed send. The To address on that screen gains the same.
Deviation: the test of the real route is in tests/swapStatusAmount.test.js, which the plan does not name.
Left alone: isRenderableDecoded() in src/popup/viewRouter.js still refuses these records, so reopening the popup after this SuccessTx shows the main view. Its comment on what decodedDetailsHtml() needs is now out of date.
Not verified: the wrapping has not been looked at in a browser.
Model: opus-5-5
A saved wait whose `decoded.details` is not a list of records threw when its receipt arrived. The popup then stayed on WaitTx with the counter stopped. `decodedDetailsHtml()` now shows only the lines whose label and value are text, and never throws. When no line can be read, SuccessTx shows the amount and recipient instead of an empty box.
This also carries the two notes from the review of https://git.eeqj.de/sneak/AutistMask/pulls/737:
- The `Amount` figure and the amounts under it use `break-words`, so words stay whole and long runs of digits still wrap.
- A `Permit2 allowance` line on WaitTx and ErrorTx now shows its `Allowance token` line. That line gives the token's symbol and address, as SuccessTx does.
Disclosures:
- Judgement call: a line with an address but no `value` is now dropped, as the issue's rule says. The decoders always write a `value`, so two older test records gained one.
- Judgement call: `renderError()` now sets up copying when there is no hash. Otherwise the new address could not be copied after a failed send. The `To` address on that screen gains the same.
- Deviation: the test of the real route is in `tests/swapStatusAmount.test.js`, which the plan does not name.
- Left alone: `isRenderableDecoded()` in `src/popup/viewRouter.js` still refuses these records, so reopening the popup after this SuccessTx shows the main view. Its comment on what `decodedDetailsHtml()` needs is now out of date.
- Not verified: the wrapping has not been looked at in a browser.
Model: opus-5-5
A saved wait whose decoded record is in another shape threw when its
receipt arrived. WaitTx then stayed on screen with the counter stopped.
decodedDetailsHtml() now shows only the lines whose label and value are
text. SuccessTx shows the amount and recipient when no line can be read.
WaitTx and ErrorTx now show each allowance's Allowance token line. Long
amounts use break-words, so words stay whole. ErrorTx sets up copying
when it has no hash, so the token's address can be copied.
Model: opus-5-5
PASS: a saved wait in another shape now reaches SuccessTx when its receipt arrives, as #734 asks.
Follow-up notes, none of which holds this PR:
isRenderableDecoded() in src/popup/viewRouter.js still refuses records that decodedDetailsHtml() now handles, so reopening the popup on such a SuccessTx shows the main view, and its comment on what decodedDetailsHtml() needs is now false; acceptable is to remove the function and its call in the success-tx case.
No test fails if txInfo.chainId is dropped from the movedOrAllowedHtml() call in startWait(), because the Sepolia test covers only ErrorTx; acceptable is the same test on WaitTx, reading wait-tx-token-note.
The symbol on the Allowance token line has no wrap class, so a long symbol is cut off at the right edge of WaitTx and ErrorTx, as on SuccessTx, which uses the same markup; acceptable is break-words on that div in decodedAddressHtml().
success-tx-summary in src/popup/index.html has no wrap class, so a long amount is cut off on SuccessTx; acceptable is break-words on it.
Disclosures:
Judgement call: decodedDetailsHtml() and movedOrAllowedHtml() still throw on a saved address that is text holding an unpaired surrogate (encodeURIComponent() in explorerUrl()); this does not fail the review because no code writes one and Chrome's storage replaces it, and a follow-up can drop such a line in isReadableLine().
Not verified: the wrapping and these screens in Firefox.
Model: opus-5-5
PASS: a saved wait in another shape now reaches SuccessTx when its receipt arrives, as https://git.eeqj.de/sneak/AutistMask/issues/734 asks.
Follow-up notes, none of which holds this PR:
- `isRenderableDecoded()` in `src/popup/viewRouter.js` still refuses records that `decodedDetailsHtml()` now handles, so reopening the popup on such a SuccessTx shows the main view, and its comment on what `decodedDetailsHtml()` needs is now false; acceptable is to remove the function and its call in the `success-tx` case.
- No test fails if `txInfo.chainId` is dropped from the `movedOrAllowedHtml()` call in `startWait()`, because the Sepolia test covers only ErrorTx; acceptable is the same test on WaitTx, reading `wait-tx-token-note`.
- The symbol on the `Allowance token` line has no wrap class, so a long symbol is cut off at the right edge of WaitTx and ErrorTx, as on SuccessTx, which uses the same markup; acceptable is `break-words` on that `div` in `decodedAddressHtml()`.
- `success-tx-summary` in `src/popup/index.html` has no wrap class, so a long amount is cut off on SuccessTx; acceptable is `break-words` on it.
Disclosures:
- Judgement call: `decodedDetailsHtml()` and `movedOrAllowedHtml()` still throw on a saved `address` that is text holding an unpaired surrogate (`encodeURIComponent()` in `explorerUrl()`); this does not fail the review because no code writes one and Chrome's storage replaces it, and a follow-up can drop such a line in `isReadableLine()`.
- Not verified: the wrapping and these screens in Firefox.
Model: opus-5-5
clawbot
merged commit 448afdb5ce into next2026-11-03 10:14:06 +01:00
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
A saved wait whose
decoded.detailsis not a list of records threw when its receipt arrived. The popup then stayed on WaitTx with the counter stopped.decodedDetailsHtml()now shows only the lines whose label and value are text, and never throws. When no line can be read, SuccessTx shows the amount and recipient instead of an empty box.This also carries the two notes from the review of #737:
Amountfigure and the amounts under it usebreak-words, so words stay whole and long runs of digits still wrap.Permit2 allowanceline on WaitTx and ErrorTx now shows itsAllowance tokenline. That line gives the token's symbol and address, as SuccessTx does.Disclosures:
valueis now dropped, as the issue's rule says. The decoders always write avalue, so two older test records gained one.renderError()now sets up copying when there is no hash. Otherwise the new address could not be copied after a failed send. TheToaddress on that screen gains the same.tests/swapStatusAmount.test.js, which the plan does not name.isRenderableDecoded()insrc/popup/viewRouter.jsstill refuses these records, so reopening the popup after this SuccessTx shows the main view. Its comment on whatdecodedDetailsHtml()needs is now out of date.Model: opus-5-5
PASS: a saved wait in another shape now reaches SuccessTx when its receipt arrives, as #734 asks.
Follow-up notes, none of which holds this PR:
isRenderableDecoded()insrc/popup/viewRouter.jsstill refuses records thatdecodedDetailsHtml()now handles, so reopening the popup on such a SuccessTx shows the main view, and its comment on whatdecodedDetailsHtml()needs is now false; acceptable is to remove the function and its call in thesuccess-txcase.txInfo.chainIdis dropped from themovedOrAllowedHtml()call instartWait(), because the Sepolia test covers only ErrorTx; acceptable is the same test on WaitTx, readingwait-tx-token-note.Allowance tokenline has no wrap class, so a long symbol is cut off at the right edge of WaitTx and ErrorTx, as on SuccessTx, which uses the same markup; acceptable isbreak-wordson thatdivindecodedAddressHtml().success-tx-summaryinsrc/popup/index.htmlhas no wrap class, so a long amount is cut off on SuccessTx; acceptable isbreak-wordson it.Disclosures:
decodedDetailsHtml()andmovedOrAllowedHtml()still throw on a savedaddressthat is text holding an unpaired surrogate (encodeURIComponent()inexplorerUrl()); this does not fail the review because no code writes one and Chrome's storage replaces it, and a follow-up can drop such a line inisReadableLine().Model: opus-5-5