2 Commits
Author SHA1 Message Date
sneak 5b8fc1e738 fix: the swap decoder reads each command's type with its router's mask (closes #535)
check / check (push) Waiting to run
e2e / e2e-chrome (push) Waiting to run
e2e / e2e-firefox (push) Waiting to run
Each Universal Router address now carries the mask its own source reads a
command's type with: 0x1f for UniversalRouterV1, 0x3f for V1_2 and V2, 0x7f
for V2_1_1 and V2_1_2. The fixed 0x1f dropped the 0x20 bit, so
EXECUTE_SUB_PLAN (0x21) was listed as a V3 exact-out swap. A sub-plan step is
now listed as "Execute Sub-Plan (its steps are not shown)". Its commands are
not read and may spend from or pay the user wherever the step stands, so with
one the summary names no swap direction, Token In and Token Out read
"Unknown (could not be decoded)", and there is no Amount or Min. received.

Model: opus-5-5
2026-10-19 04:57:40 +00:00
clawbot f8b050f501 docs: the user guide says switching networks restores the last endpoints used (closes #589)
check / check (push) Waiting to run
e2e / e2e-chrome (push) Waiting to run
e2e / e2e-firefox (push) Waiting to run
The user guide said switching the network in Settings resets the RPC and
Blockscout endpoints to that network's defaults. Switching restores the
endpoints last used on that network, or its defaults if it has none, as
README's Settings section says; the guide now says that.

The guide also said all three approval screens show the phishing warning.
There are four: a connected site's request to switch the network has its own
approval screen with the same warning. The guide now describes that request in
a short paragraph and says four.

Model: opus-5-5
2026-10-19 06:51:17 +02:00
2 changed files with 27 additions and 2 deletions
+10 -2
View File
@@ -306,7 +306,14 @@ enter your password and click "Confirm" to authorize it. Message and typed-data
signature requests work the same way, with a "Sign" button, and also require
your password.
If the requesting site's domain is on the phishing blocklist, all three approval
A connected site can also ask to switch the wallet's network. A popup shows the
site's origin, the current network and the requested network. Nothing changes
unless you click "Switch"; clicking "Reject" or closing the popup leaves
everything as it was. Switching works exactly as it does in Settings, and
changes the network for the whole wallet and for every site, not only for the
one that asked.
If the requesting site's domain is on the phishing blocklist, all four approval
screens show a red phishing warning before you decide.
You can manage site permissions in Settings. Allowed and denied sites can be
@@ -378,7 +385,8 @@ Click the gear icon on the home screen to access settings:
- **Display**: Toggle whether tracked tokens with zero balance are shown, switch
timestamps to UTC, and choose the theme (System, Light, or Dark).
- **Network**: Switch between Ethereum Mainnet and Sepolia Testnet. Switching
resets the RPC and Blockscout endpoints to that network's defaults.
restores the RPC and Blockscout endpoints you last used on that network, or
that network's defaults if you have not used it before.
- **Ethereum RPC**: Change the Ethereum node endpoint. Default is a public RPC.
You can use your own node for maximum privacy.
- **Blockscout API**: Change the Blockscout instance used for token balances and
+17
View File
@@ -1010,6 +1010,23 @@ describe("uniswap decoder", () => {
inputs: [encodePermit2(USDT_ADDR, 1000000n, ROUTER_ADDR), "0x"],
steps: "Permit2 Permit \u2192 Execute Sub-Plan (its steps are not shown)",
},
{
// The sub-plan buys USDC for the user; an UNWRAP_WETH of 0
// follows. No step outside the sub-plan sets the output side, and
// UNWRAP_WETH would then make Token Out ETH.
beside: "an UNWRAP_WETH after",
commands: "0x210c",
inputs: [
encodeSubPlan("0x00", [
encodeV3SwapExactIn(USER_ADDR, 2000000000n, 1900000000n, [
USDT_ADDR,
USDC_ADDR,
]),
]),
encodeWrapEth(USER_ADDR, 0n), // UNWRAP_WETH, same encoding
],
steps: "Execute Sub-Plan (its steps are not shown) \u2192 Unwrap WETH",
},
])(
"$beside an EXECUTE_SUB_PLAN step does not name either side",
({ commands, inputs, steps }) => {