fix: provide PNG and ICO favicons for Google Search #3

Merged
ClaudiuSchuster merged 3 commits from fix/google-favicon-formats-20261010 into main 2026-10-10 17:41:17 +00:00
Owner

Problem

Google displays a generic globe for chatgpt.claudiuschuster.de, while the user's apex-domain result already has a favicon. Project Universe's published version 4 declares only an SVG icon. Google's current favicon guidance explicitly lists PNG and ICO, but does not list SVG. This establishes a supported-format gap; it does not prove that format is the sole cause of Google's current display.

Change

  • Render the existing, unchanged SVG artwork to a stable 96 × 96 PNG at /assets/favicon.png.
  • Supply the conventional /favicon.ico fallback with 16, 32, 48 and 64 px images.
  • Declare the same PNG, MIME type and dimensions in both canonical language pages.
  • Add make favicons, integrate it into the normal build, and extend the existing checks for format, dimensions, ICO structure, page links and crawl permissions.
  • Preserve the prior Search Console documentation from main and add the favicon diagnosis and follow-up workflow.

No new build dependency is introduced. Existing Inkscape/librsvg and ImageMagick are used. The original symbol, canonical pages, sitemap, robots rules, retired-language-route policy and hosting identity are preserved.

Verification

The candidate passed make favicons, metadata regeneration, make check, and git diff --check. Rebuilding produces byte-identical PNG and ICO files with the installed renderer versions. Focused negative checks reject the old SVG declaration, incorrect/duplicate icon declarations, incorrect PNG dimensions and a truncated ICO. The social-image checks retain their existing size and fingerprint requirements. A second independent code review found no material issue.

There is no repository CI workflow for this project; these are the existing local verification gates, not a claim of a remote CI run. The remote comparison contains exactly nine intended files, with 126 text additions and 13 deletions. Both binary files were uploaded as original files.

Generated asset Bytes SHA-256
dist/assets/favicon.png 2,437 26a8fe8814c3a388ccee2513e8b8d17971a88a21d1dee0cded46146b01c35c72
dist/favicon.ico 32,038 e21f0ca810be2b28688cddc9947217fe9b52e8abf21aceb04ca1f0922697cd00

Publication and Google follow-up — completed 2026-10-10

The PR was merged into the canonical repository as 88bc238e6efcba7bb31732ad9e0e107949c62bae. The reviewed source and generated assets were published through the existing public Sites project appgprj_6aca21d607d0819191cb082e490d5217 as version 5, using Sites source snapshot dd6006514de93e3f029ebcc90b0e6d44fca5883d. The Sites deployment succeeded at 19:42:53 CEST (appgdep_6aca790ca59c8191a88223f153a1afbc). The separate Git histories retain the canonical PR merge and the Sites publication snapshot.

The existing Domain property sc-domain:chatgpt.claudiuschuster.de was reused. All times below are CEST (UTC+02:00).

Check Result
Homepage Live Test, 19:43:15 HTTP 200, text/html; crawling and indexing allowed; self-canonical root; the actual Google HTML contains <link rel="icon" href="/assets/favicon.png" type="image/png" sizes="96x96">; all resources loaded, no JavaScript console messages
Homepage response headers No X-Robots-Tag in the displayed response; Cache-Control: public, max-age=0, must-revalidate
PNG Live Test, 19:49:32 HTTP 200, Content-Type: image/png, 2,437 bytes; actual PNG source; crawling allowed; no X-Robots-Tag in the displayed response
Homepage recrawl request Accepted, confirmation observed at 19:51 CEST: “Indexierung wurde beantragt”; one request after this publication
Stored homepage indexing Still indexed, self-canonical; last stored crawl 16:45:31 CEST, which predates the favicon publication
Favicon in Google search results Not yet confirmed; requires Google's subsequent favicon processing and display decision

The German and English canonical pages were already confirmed indexed earlier today. The successful PNG fetch is a Google Inspection Tool result, not proof that Googlebot-Image has fetched or selected this favicon for search results. Processing can take days to weeks, and display is not guaranteed. No sitemap resubmission or content-indexing request for the image was made.

## Problem Google displays a generic globe for `chatgpt.claudiuschuster.de`, while the user's apex-domain result already has a favicon. Project Universe's published version 4 declares only an SVG icon. Google's current [favicon guidance](https://developers.google.com/search/docs/appearance/favicon-in-search) explicitly lists PNG and ICO, but does not list SVG. This establishes a supported-format gap; it does not prove that format is the sole cause of Google's current display. ## Change - Render the existing, unchanged SVG artwork to a stable **96 × 96 PNG** at `/assets/favicon.png`. - Supply the conventional `/favicon.ico` fallback with **16, 32, 48 and 64 px** images. - Declare the same PNG, MIME type and dimensions in both canonical language pages. - Add `make favicons`, integrate it into the normal build, and extend the existing checks for format, dimensions, ICO structure, page links and crawl permissions. - Preserve the prior Search Console documentation from main and add the favicon diagnosis and follow-up workflow. No new build dependency is introduced. Existing Inkscape/librsvg and ImageMagick are used. The original symbol, canonical pages, sitemap, robots rules, retired-language-route policy and hosting identity are preserved. ## Verification The candidate passed `make favicons`, metadata regeneration, `make check`, and `git diff --check`. Rebuilding produces byte-identical PNG and ICO files with the installed renderer versions. Focused negative checks reject the old SVG declaration, incorrect/duplicate icon declarations, incorrect PNG dimensions and a truncated ICO. The social-image checks retain their existing size and fingerprint requirements. A second independent code review found no material issue. There is no repository CI workflow for this project; these are the existing **local verification gates**, not a claim of a remote CI run. The remote comparison contains exactly nine intended files, with 126 text additions and 13 deletions. Both binary files were uploaded as original files. | Generated asset | Bytes | SHA-256 | | --- | ---: | --- | | `dist/assets/favicon.png` | 2,437 | `26a8fe8814c3a388ccee2513e8b8d17971a88a21d1dee0cded46146b01c35c72` | | `dist/favicon.ico` | 32,038 | `e21f0ca810be2b28688cddc9947217fe9b52e8abf21aceb04ca1f0922697cd00` | ## Publication and Google follow-up — completed 2026-10-10 The PR was merged into the canonical repository as **`88bc238e6efcba7bb31732ad9e0e107949c62bae`**. The reviewed source and generated assets were published through the existing public Sites project `appgprj_6aca21d607d0819191cb082e490d5217` as **version 5**, using Sites source snapshot `dd6006514de93e3f029ebcc90b0e6d44fca5883d`. The Sites deployment succeeded at **19:42:53 CEST** (`appgdep_6aca790ca59c8191a88223f153a1afbc`). The separate Git histories retain the canonical PR merge and the Sites publication snapshot. The existing Domain property `sc-domain:chatgpt.claudiuschuster.de` was reused. All times below are CEST (UTC+02:00). | Check | Result | | --- | --- | | Homepage Live Test, **19:43:15** | HTTP **200**, `text/html`; crawling and indexing allowed; self-canonical root; the actual Google HTML contains `<link rel="icon" href="/assets/favicon.png" type="image/png" sizes="96x96">`; all resources loaded, no JavaScript console messages | | Homepage response headers | No `X-Robots-Tag` in the displayed response; `Cache-Control: public, max-age=0, must-revalidate` | | PNG Live Test, **19:49:32** | HTTP **200**, `Content-Type: image/png`, **2,437 bytes**; actual PNG source; crawling allowed; no `X-Robots-Tag` in the displayed response | | Homepage recrawl request | **Accepted**, confirmation observed at **19:51 CEST**: “Indexierung wurde beantragt”; one request after this publication | | Stored homepage indexing | Still indexed, self-canonical; last stored crawl **16:45:31 CEST**, which predates the favicon publication | | Favicon in Google search results | **Not yet confirmed**; requires Google's subsequent favicon processing and display decision | The German and English canonical pages were already confirmed indexed earlier today. The successful PNG fetch is a Google Inspection Tool result, not proof that Googlebot-Image has fetched or selected this favicon for search results. Processing can take days to weeks, and display is not guaranteed. No sitemap resubmission or content-indexing request for the image was made.
Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
ClaudiuSchuster/claudiu-project-universe!3
No description provided.