The blueprint asked for “a small web UI to browse blocks, transactions and addresses” — read-only, and it shipped exactly that. But a chain you can only browse from the command line is a chain you can’t really use. P13 closes that gap in two deliberately separate pieces.
The explorer stayed read-only and got genuinely useful: a global search box that classifies txids, block hashes, heights and addresses; paginated block history; a dashboard strip with difficulty, peers and mempool fee stats; fee-rate columns; and richer transaction and address pages. Every byte of chain data is still HTML-escaped — chain data is untrusted input like any other.
The wallet UI is the interesting half, because it holds keys — so it was built as its own binary with a stricter contract than anything else in the project. The passphrase decrypts the keystore into an in-memory session and is never stored, logged, or echoed. Sessions are random tokens in HttpOnly SameSite=Strict cookies, capped at 32, expiring after 30 idle minutes, with per-wallet unlock rate limiting. Every POST needs the session’s CSRF token and a matching Origin. Spending is two-step by construction: build+sign produces a review page — to, amount, fee, txid — and only an explicit second POST broadcasts. Even then the node can reject it; the draft is consumed either way.
The verification wasn’t a screenshot. It was a live devnet run: unlock, dashboard showing 150 BTC mature, a 5 BTC send through the review gate, broadcast accepted, and the transaction confirmed in the next block — while wrong-CSRF, wrong-passphrase and foreign-Origin attempts all failed closed, and the audit log recorded events with zero secrets.
What it deliberately is not: no seed display, no wallet creation, no TLS story, no multi-user anything. It’s a localhost devnet tool — the same trust level as the CLI it complements, with the browser’s usual rules (CSRF, cookies, origin) enforced in code rather than assumed.