fix: replace broken remote logo refs with local assets#41
Merged
BitHighlander merged 2 commits intodevelopfrom Apr 21, 2026
Merged
fix: replace broken remote logo refs with local assets#41BitHighlander merged 2 commits intodevelopfrom
BitHighlander merged 2 commits intodevelopfrom
Conversation
The client referenced api.keepkey.info/coins/{keepkey,pioneerMan,ethereum}.png
shortnames that never existed on the CDN (all 403). The CDN only serves
CAIP-base64-encoded filenames, which the dynamic asset-icon code already
generates correctly. This change fixes every hardcoded shortname usage:
- KeepKey brand marks across popup + side-panel switch to bundled /kk-logo.png
(and chrome.runtime.getURL for the EIP-6963 announce icon and manifest
web_accessible_resources so dapps can load it).
- AddDappModal default icon now uses caipToIcon('eip155:1/slip44:60'), which
the CDN does serve.
- NetworkDropdown hides the avatar entirely when no network is selected
instead of rendering Chakra's default silhouette from a 403 fallback.
- headerUtils.getIconUrl last-resort fallback no longer builds
btoa(chainSymbol) URLs (always 403); returns '' so Chakra Avatar falls
back to an initial letter.
- wallet.ts serviceImageUrl points at pioneers.dev (chrome-extension:// URLs
can't load in the vault desktop UI).
Third-party image hosts also replaced with bundled assets:
- Animated kk.gif (5.6MB from i.ibb.co) converted to kk.webp (286KB, 240px,
15fps) — 95% smaller, same animation.
- MetaMask fox and Keplr logos downloaded from their official repos.
- Xfi src dropped (Coming Soon overlay covers the avatar; letter fallback).
Net: zero remote image hosts remain outside the working CAIP CDN pattern.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Absolute src="/kk.webp" and /brand/... paths resolve to the extension origin root (chrome-extension://<id>/kk.webp). Vite's base:'' does not rewrite these, so emitting them under pages/side-panel/public/ (→ dist/side-panel/) was a 404. Moving to chrome-extension/public/ lands them at the dist root and matches the already-working /kk-logo.png convention. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
BitHighlander
added a commit
that referenced
this pull request
Apr 21, 2026
SidePanel.tsx default-state welcome screen uses <img src="/logo_vertical.svg"> as an opacity-0.25 watermark. The file was in pages/side-panel/public/, so Vite emitted it to dist/side-panel/logo_vertical.svg while the absolute path requested chrome-extension://<id>/logo_vertical.svg — 404. Same class of bug that #41 fixed for kk.webp and brand icons. Moving both vertical logos to chrome-extension/public/ lands them at the dist root and matches the working /kk-logo.png / /kk.webp convention. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
api.keepkey.info/coins/{keepkey,pioneerMan,ethereum}.pngshortnames that never existed on the CDN (all 403). CDN only serves CAIP-base64-encoded filenames, which the dynamic asset-icon code already builds correctly.kk-logo.png(40KB), added toweb_accessible_resourcesso dapps can load it for EIP-6963 announce.kk.giffromi.ibb.cowas converted to a 286KB animated WebP — 95% smaller, same animation.What was broken
Pre-fix, every one of these returned 403:
api.keepkey.info/coins/keepkey.png— KeepKey brand avatar in 7 componentsapi.keepkey.info/coins/pioneerMan.png— 2 componentsapi.keepkey.info/coins/ethereum.png— default dapp iconapi.keepkey.info/coins/<btoa(chainSymbol)>.png—headerUtils.tsfallback (always broken; encoded symbol, not CAIP)Third-party hosts with ongoing fragility:
upload.wikimedia.org/...MetaMask_Fox.svg...— 429 at audit timei.ibb.co/jR8WcJM/kk.gif,cdn.iconscout.com/...,cdn.dealspotr.com/...— remote deps for decorative UIDynamic CAIP-based icons (
caipToIcon,networkIdToIcon) already work for every chain + ERC-20 the client touches — live audit returned 200 for all of them. No changes to that path.Changes
Code
popup/*/ProjectInfoCard.tsx+popup/evm/ContractDetailsCard.tsx→/kk-logo.pngwithnamefallbackside-panel/NetworkAccountHeader.tsx→/kk-logo.pngside-panel/Settings.tsx→chrome.runtime.getURL('kk-logo.png')for EIP-6963 announce; local/brand/metamask-fox.svg+/brand/keplr.png; Xfisrcdropped (Coming Soon overlay + letter fallback)side-panel/AddDappModal.tsx→caipToIcon('eip155:1/slip44:60')for default dapp icon;/kk-logo.pngfor KeepKey markside-panel/SidePanel.tsx→/kk.webpside-panel/header/NetworkDropdown.tsx→ hide Avatar entirely when no network is selectedside-panel/header/headerUtils.ts→ drop brokenbtoa(chainSymbol)fallback, return''so Avatar renders initial letterchrome-extension/src/background/wallet.ts→serviceImageUrlpoints atpioneers.dev/coins/keepkey.png(chrome-extension:// URLs can't load in the vault desktop UI)chrome-extension/manifest.js→ addkk-logo.pngtoweb_accessible_resourcesNew bundled assets (+302KB total)
chrome-extension/public/kk-logo.png(40KB, 512×512)pages/side-panel/public/kk.webp(286KB, animated, 240×135, 15fps — was 5.6MB GIF)pages/side-panel/public/brand/metamask-fox.svg(3KB, from MetaMask official repo)pages/side-panel/public/brand/keplr.png(13KB, from Keplr official repo)Test plan
personal_sign/eth_sendTransactionapproval popup on any dapp — KeepKey sub-avatar renders the local logo instead of a broken-image icon.Failed to load resource: 403 (keepkey.png)or similar errors in devtools console on any flow.chrome.runtime.getURL('kk-logo.png')is reachable from a dapp origin (EIP-6963 announce flow) — manifestweb_accessible_resourcesincludes it.🤖 Generated with Claude Code