What's Changed
- test: enhance BigNumberInput and HashInput coverage (Tier 2) by @gabitoesmiapodo in #416
- test: add hook test coverage (Tier 3) by @gabitoesmiapodo in #417
- test: add component test coverage (Tier 4) by @gabitoesmiapodo in #418
- test: add demo page smoke tests (Tier 5) by @gabitoesmiapodo in #419
- test: add utility and env test coverage (Tier 1) by @gabitoesmiapodo in #415
- fix(a11y): color contrast, skip link, focus rings, and aria attributes by @gabitoesmiapodo in #421
- fix(performance): lazy loading, dns-prefetch, and chunk splitting by @gabitoesmiapodo in #422
- fix(seo): JSON-LD structured data and sitemap hostname by @gabitoesmiapodo in #423
- fix(security): CSP report-only and security headers by @gabitoesmiapodo in #424
- chore(deps): update minor and patch dependencies by @gabitoesmiapodo in #425
- fix: throw when getExplorerLink has no block explorer URL available by @gabitoesmiapodo in #426
- feat: AI integration baseline by @gabitoesmiapodo in #420
- perf: improve Lighthouse performance and best practices scores by @gabitoesmiapodo in #429
- refactor: replace withWalletStatusVerifier HoC with useWalletStatus hook by @fernandomg in #427
- fix: remove dead 1inch IPFS token list and make fetching resilient by @fernandomg in #428
- chore: add SDLC starter kit files by @gabitoesmiapodo in #430
- chore: update safe dependencies by @gabitoesmiapodo in #437
- chore: update medium-risk dependencies by @gabitoesmiapodo in #439
- chore: update high-risk dependencies by @gabitoesmiapodo in #440
- fix: SwitchNetwork dropdown shows only first network item by @gabitoesmiapodo in #444
- fix: use CORS-friendly public RPCs as fallbacks when no PUBLIC_RPC_* env vars are set by @gabitoesmiapodo in #445
- test: add coverage for fetchTokenList('default') bundled token path by @gabitoesmiapodo in #447
- fix(token-input): format max value with thousand separators by @gabitoesmiapodo in #450
- fix: destructure decimal part in TokenAmountField isAllowed validator by @gabitoesmiapodo in #456
- fix: type WalletStatusVerifier children as ReactNode instead of ReactElement by @gabitoesmiapodo in #460
- test: use top-level import in SignButton tests by @gabitoesmiapodo in #458
- fix: use error toast type in watchSignature catch block by @gabitoesmiapodo in #457
- docs: sync architecture.md with current codebase by @gabitoesmiapodo in #459
- feat(token-input): add Sepolia support with AAVE faucet tokens by @gabitoesmiapodo in #462
- fix(token-input): display correct USD value for selected balance by @gabitoesmiapodo in #463
- feat(token-logo): render chain icons for native tokens by @gabitoesmiapodo in #464
- fix(token-lists): drop tokens for chains absent from viem/chains by @gabitoesmiapodo in #470
- fix: pair logger.timeEnd for 'updating tokens cache' in useTokens by @gabitoesmiapodo in #471
- fix(use-tokens): route LI.FI RPC calls through configured transports by @gabitoesmiapodo in #473
- chore: sync SDLC files with bootnode-sdlc starter-kit by @gabitoesmiapodo in #474
- feat(token-select): sort by positive balance by default when wallet connected by @gabitoesmiapodo in #475
- fix(header): remove fixed height from logo to preserve aspect ratio by @gabitoesmiapodo in #478
- fix(token-select): remove trailing divider from last network item by @gabitoesmiapodo in #479
- release: v2.5.0 by @gabitoesmiapodo in #480
Full Changelog: 2.0.4...2.5.0