Skip to content

v1.9.2 - Favicon Fallback

Choose a tag to compare

@jeanlucaslima jeanlucaslima released this 16 Jun 05:08
v1.9.2
25434ec

What's Changed

Favicons that fail to load now fall back to a clean placeholder instead of a broken-image glyph.

The popup renders each tab's favicon as an <img> from a chrome-extension:// origin, which makes loading tab.favIconUrl a cross-origin request. It can fail when the favicon is served with a restrictive Cross-Origin-Resource-Policy (e.g. claude.ai's /favicon.ico ships CORP: same-origin), 404s, or is auth-only. The browser's tab bar still shows it via a privileged fetch, so it was invisible until a cross-origin consumer like ATO tried to render it — and showed a broken glyph.

Now every favicon <img> has an onerror handler that swaps to the existing placeholder, identical to a missing or chrome:// favicon.

Details

  • Favicon creation is factored into one shared helper, so both render paths (domain groups and per-tab rows) behave identically.
  • On failure the handler clears the broken src, switches to the placeholder, and nulls itself so it can't loop.
  • No new permissions and no extra network requests — it just reacts to the existing image load.
  • No regression for favicons that already render.

Fixes #46.

🤖 Generated with Claude Code