From e0ebfe4fceef73b429a6a8dd1f0fdc7b7c828635 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C5=A0ota=20Giorgadze?= Date: Fri, 10 Jul 2026 13:58:04 +0200 Subject: [PATCH] feat: replace non-square black W favicon with the brand W tile The favicon was the bare black W silhouette at 160x162. It is close to invisible on a dark browser tab strip, and Google's favicon guidelines want a square icon sized to a multiple of 48px, which a 160x162 PNG is not -- so the SERP favicon can be dropped. Use the same purple (#7030a0) tile with the gold (#ffcc00) W as commander, and regenerate the PNG square at 48x48. The colours are fixed, so the icon renders identically in light and dark themes. Docusaurus emits only one link for the `favicon` field, so the SVG and the apple-touch-icon go in top-level `headTags`. Those hrefs are emitted verbatim rather than baseUrl-prefixed, hence the extracted `baseUrl` const. Refs wopee-io-plg/plg#46 Co-Authored-By: Claude Opus 4.8 --- docusaurus.config.js | 27 ++++++++++++++++++++++++++- static/img/apple-touch-icon.png | Bin 0 -> 3128 bytes static/img/favicon.png | Bin 2725 -> 886 bytes static/img/favicon.svg | 4 ++++ 4 files changed, 30 insertions(+), 1 deletion(-) create mode 100644 static/img/apple-touch-icon.png create mode 100644 static/img/favicon.svg diff --git a/docusaurus.config.js b/docusaurus.config.js index 46733f8..e1e3cfc 100644 --- a/docusaurus.config.js +++ b/docusaurus.config.js @@ -5,6 +5,11 @@ const lightCodeTheme = require("prism-react-renderer/themes/github"); const darkCodeTheme = require("prism-react-renderer/themes/dracula"); const path = require("path"); +// The pathname the site is served under. Docusaurus prefixes the `favicon` +// field with this automatically, but not `headTags` hrefs -- those are emitted +// verbatim, so they have to interpolate it themselves. +const baseUrl = "/"; + /** @type {import('@docusaurus/types').Config} */ const config = { // Site title is appended to every page's tag as "Page Title | <site title>". @@ -16,12 +21,32 @@ const config = { "Boost your testing team. Elevate your quality & speed up release pace.", favicon: "img/favicon.png", + // Docusaurus `favicon` emits a single PNG link. Add the SVG (sharper at any + // size) and the apple-touch-icon alongside it; Safari falls back to the PNG. + headTags: [ + { + tagName: "link", + attributes: { + rel: "icon", + type: "image/svg+xml", + href: `${baseUrl}img/favicon.svg`, + }, + }, + { + tagName: "link", + attributes: { + rel: "apple-touch-icon", + href: `${baseUrl}img/apple-touch-icon.png`, + }, + }, + ], + // Set the production url of your site here url: "https://website.wopee.io", // url: "https://wopee.io", // Set the /<baseUrl>/ pathname under which your site is served // For GitHub pages deployment, it is often '/<projectName>/' - baseUrl: "/", + baseUrl, // GitHub pages deployment config. // If you aren't using GitHub pages, you don't need these. diff --git a/static/img/apple-touch-icon.png b/static/img/apple-touch-icon.png new file mode 100644 index 0000000000000000000000000000000000000000..15c527239aea559bcaee76304445cb2cf96bb4a4 GIT binary patch literal 3128 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 literal 0 HcmV?d00001 diff --git a/static/img/favicon.png b/static/img/favicon.png index f3f533d4ae2b1860dbc66fb69ab87c041187fcef..47d32349010d8e6109f9d1fcb663cab6f99323cd 100644 GIT binary patch literal 886 zcmV-+1Bv{JP)<h;3K|Lk000e1NJLTq001xm001xu1^@s6R|5Hm00009a7bBm000XU z000XU0RWnu7ytkRC`m*?RCwBBV88+L_2(M^acjQ8{F6ZXS%LoiKLrL0{?i2m?E={e zvKz>6DKwa?&p<3F(p#to)VzUijwKQUJ+m&)V4f;o#}^vT_sG{@@L{ky9^r`vpYjbC z_+fQCFxtH7noKB3UIq(1F_H~X;^UxqJS--FsU+8UfiiOFZyYL)N5X4ip>H?@9S_9w z|A9*<P*FKFJpfKhO$^Yo7O%o8>#6^H{Tp!NR`(8)EpKq_!)s=#=`3PAaGU|ictJ?v z%Po@s|DR#NiT|Bu{J%6am1xJexOM*jb({^anUB^g5K$s6c*;Ob(TUF@7(USMMzjZ( zWv38jCNV`S12Gm3S`Ps6s0T(pFzSI(4~%+X@Ohv&p#J~)>1O}W&oG7K6*);m!vhr- z)BpcGhP|0EDXePndtgyo22M4Hx?Bdg2MUem|9`eY2B(@oCs_Wsd2|e34=ha0B&hDx zWb47{frFi{ctanCzZ~TGzo{a8@Oj|fE@7h7fjx16ckp?D7I@SH1L*-!iA6OJyxuNG zcMm*SFGoEOfSLv5IAVKk;QxKCo@D7g)@M&W4-iwnqvIb(IQ|0%i^2HgUICKzFV9J) zo(IazW`P|<iUW>Mu!HMAHOYn~y<ZP<|F5&3Ks^tD@W~0bBspSbega(Y(ySDc^j?{3 zKy=fbXb;ScEh5?hpg}88s}!ae6q=yHFJkpi3az5P2g)sG{C~YooG1s}U8aVi|K3U! zqV$5A;w2`tsqX<0KG5z?T<KF6fT4F&MHo?fcQ^TvG{(w6%B&1%(3KcRbo(}8=mm)p zqjy?lDM_<64B#0^5`0XkPPn^V4csq4*H>&jm*61r)p`1)PW(L~YIq$PgUa=8zeb$H z;-I{OPk*OR3r@WtPm(x402*GO-#m0DIOaEiC$xv^6jPqz0zJsAJa7_u2zp`_e3lY4 z13s81xUt~(1-f&UQ09t(p70tf6WyQ{1=tsO=q+>y`)&{~H7L-V=Zkl}1ZV~vG>Ht# zB!el#0t=hf7|90j!VlmiGN_0Jm9?PRKzc8?0oe(%8#EUTFKw^@03#FuJvUT*^Z)<= M07*qoM6N<$g8I0DAOHXW literal 2725 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 YJuF>4pd|gvq8Ae&+8rja_WNJ>4-0Ppf&c&j diff --git a/static/img/favicon.svg b/static/img/favicon.svg new file mode 100644 index 0000000..5d5e655 --- /dev/null +++ b/static/img/favicon.svg @@ -0,0 +1,4 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512" role="img" aria-label="Wopee.io"> + <rect width="512" height="512" rx="112" fill="#7030a0"/> + <path transform="translate(96 94) scale(2)" fill="#ffcc00" d="M4 0L46 0L50 3L51 5L51 90L63 66L64 61L70 56L91 56L93 57L97 61L99 68L105 78L105 81L110 89L110 6L111 6L111 3L115 0L155 0L159 3L160 5L160 107L159 107L159 114L158 114L156 125L154 127L153 133L151 135L149 144L147 146L146 152L142 160L140 160L139 162L102 162L102 161L99 161L96 158L94 148L92 145L92 141L90 138L90 134L88 131L88 127L86 124L86 120L83 115L77 115L75 117L74 124L73 124L71 134L69 137L69 141L67 144L67 148L65 151L65 155L61 161L59 162L22 162L16 157L16 154L14 152L12 143L10 141L8 132L6 130L6 127L5 127L5 124L2 118L2 114L1 114L1 109L0 109L0 4Z"/> +</svg>