A fork of Polygon's x402 AutoPay with some Quality-of-Life Improvements

[Website Branding Detection]
Added branding detection for payment prompts. Checks HTTP headers, manifest.json, and HTML meta tags (favicons, theme colors) in priority order. Caches results per origin to avoid repeated fetches. Automatically adjusts contrast to meet WCAG minimums so text stays readable even with bad theme colors.
[Wallet Security Improvements]
Refactored the wallet UI to follow common wallet patterns. Private keys are masked by default and only shown after explicit confirmation. Moved sensitive actions (import, export, remove) into modals with typed confirmations. Added status indicators for lock/unlock. Single-wallet model for now; switching wallets requires removing the current one first.
[ENS Name Resolution]
Added ENS reverse lookup to show names like vitalik.eth instead of hex addresses. Fetches avatars when available. Caches for 24 hours to reduce RPC calls. Falls back to truncated addresses if ENS isn't available.
[Mnemonic Phrase Import]
Extended wallet import to accept 12/24-word mnemonic phrases in addition to private keys. Detects format and converts using ethers.js. Still requires a passphrase for encryption.
Built with Bun for bundling (TypeScript to ESM), ethers.js v6 for crypto, and Chrome Extension APIs.
Branding detection uses chrome.scripting.executeScript to read DOM meta tags and manifest.json, then fetches logos as data URIs (2MB limit) and caches per origin. ENS resolution hits public RPC endpoints (llamarpc.com) with 24h caching. Contrast adjustment uses linear interpolation toward black/white to meet WCAG minimums: simple but works.

