From c06e854975c9d9c1324aede1582a590288057678 Mon Sep 17 00:00:00 2001 From: xintaofei Date: Fri, 3 Apr 2026 19:03:55 +0800 Subject: [PATCH] feat: add favicon for web/server mode browser tabs Co-Authored-By: Claude Opus 4.6 (1M context) --- public/icon-128x128.png | Bin 0 -> 7060 bytes public/icon-32x32.png | Bin 0 -> 1345 bytes public/icon.svg | 36 ++++++++++++++++++++++++++++++++++++ src/app/favicon.ico | Bin 0 -> 602 bytes src/app/layout.tsx | 7 +++++++ 5 files changed, 43 insertions(+) create mode 100644 public/icon-128x128.png create mode 100644 public/icon-32x32.png create mode 100644 public/icon.svg create mode 100644 src/app/favicon.ico diff --git a/public/icon-128x128.png b/public/icon-128x128.png new file mode 100644 index 0000000000000000000000000000000000000000..f4f78cfd1dc1c33d6663e7a5835ad8df0e729230 GIT binary patch literal 7060 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 literal 0 HcmV?d00001 diff --git a/public/icon-32x32.png b/public/icon-32x32.png new file mode 100644 index 0000000000000000000000000000000000000000..90078f99605464ef017d66795dc343b755910250 GIT binary patch literal 1345 zcmV-H1-|-;P)SxR5^vEb3>Jt2N(}nP8}3*B62{LZJA7ZO?&$fDZmIoaq+Y(jWKVDmS9Zca-+eef9SSX09>Ol{r5cG5r_d`HMgtH8%Z`T6~ zG5;Ys03#M4A{aY-xU~k6k()Xq0oGc4-zU|T8aB4GGllQ_SUa*lHmm^8^XTmCV&bHU zTy@n9R0nTTs>-ZcGniC1k6J7zK2OsNo0u}?T++R1j4>F) z(PilE?PcnDQ+Vms&1~LU&-Ce)B$FM(iWpFUh+wUyy*AZwuSEzfVO)IrWXtF?-HTlI=;XwS(5h3Gze)Ri&fj4{pC> zKFe1uBNmVI@{6zV*pustdmb1Mmv&rIX;Fl)zV5{{koGgISW?5`!|mL9>pa$NSi`t+ zMZEsn8|3Hb|CReVzLJs)PB_$bIzx5MV(wnFfNVCPzOI3~rY5S2DtNG9DnE6m2p9jz z^*0HTAWPl5MLco%KJrQm@!zVad-qNj-doMm>ctpi*wXX@o9Y{h#bQG{V2mM^I>H01 zmUHKVJ7{ffW9{no?AY-UrDqnhcHH?)>dEDtX#t6wEFCFj3>gkyx(IEZfp5}eZ(hlm zpTA>sLlgUd-OtJgR1WyY`nHoRLJ`3jLr1cMS+i$S`*1Deii-H~{T-}Z`y@fuM~vY}Pu~$F5*Fti z(MW{aM{236x|+7O-+27d)$IIu7h}hc#W^=%6C1D(s48I?QczgHuAQH7U-dFtnp?PL zZWWWyo=k5#0|htClnME5QgEP9dtkkj)nCs zU7cN&SCms$R>tSMKOeNIs4ACTeknii`-SGc&75)O7=j=iD*f;R0E{(c(iwc;CpR~D z$k^`gZlcjB@pz0dbVJ6%V87u%;6g_<8YLEsolwR9ME;n3)ai)GM=SvP>>X+n_QQ>k zxF7$E8`0>zLPiEPsvH0rz30#%#2^aVZbaB>j4`0WY2*(@jHt>7Qe1pd0{l;{jZ`|9 z&5rWxNc+gG=bTHb+6zr<>lZyDZmw$hr7>PaPUcE`(hxDm^FZ4`uWf7F^NY||h_0~k z-27N9zDk6fRkif!_fsh*1P+0G6a;R~p+n!cz>W4#M71ayH)EI_00000NkvXXu0mjf DH6e>f literal 0 HcmV?d00001 diff --git a/public/icon.svg b/public/icon.svg new file mode 100644 index 0000000..1c20b0c --- /dev/null +++ b/public/icon.svg @@ -0,0 +1,36 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/app/favicon.ico b/src/app/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..b27ca17ed0e1212bc941f5e37bdca90388b9314b GIT binary patch literal 602 zcmV-g0;T-`0096201yxW0000W07L=+02TlM0EtjeM-2)Z3IG5A4M|8uQUCw|5C8xG z5C{eU001BJ|6u?C0t-n*K~#90jgmoY6Hyd}zxQU6GIoMBP16wa1ByavH@4zGup3<~ z)uO0WaG|Siv;{5w2O=$~P}G&~`~$8EBGjFm;=)CfhLnmQKi)7Y;InWGX`8NbiOI6=xvj>a5h__*_y(Z!mFsG171$4;syoGlAY+}mg zNlm++s@w}bKBhzJl8rHVo;SeoJP%{K2F)?Y^r>2Fan7;d*hfV$28;m_rP0{OIfu3V zM!Pr9^N8b^AP87__LTf+p2Ne0--nLT!a1I=tq=qOaUAzKv>oMUvq^Eh$mZME_`wj> zYJ;&tmP!%o)jDS~KAZ2~P%IXSn$d}qN@Yq5g$bRVozv~@9liT_S+9=F==aNuTHl)1 zPoL*?Wc`N*m#*uh2TQv3bw@AGT+u>dLMxRi?Hfo`QB_bSX|=&A>Xah^Nz3Vb4@|i{ zsn%MeD56v<@pAnIU%qX#`eco^(|eX6@vhQnb*B;A3Ckjv$$ z)oR?FUm*E)#CR#sUZc&=J;T^|fw+}$>&61LT8%IlA|fXadcQGA5~3&~7lv3bozOWY zikgIBi0}Jd@<4-5kUDwzJ4hljumhi-SOP{>2gs?5ftmo;0vopD_5YzMM?cz3=HQ`o o?iHA$0ssI2 literal 0 HcmV?d00001 diff --git a/src/app/layout.tsx b/src/app/layout.tsx index cfc1b60..2ecacb6 100644 --- a/src/app/layout.tsx +++ b/src/app/layout.tsx @@ -16,6 +16,13 @@ const jetbrainsMono = JetBrains_Mono({ export const metadata: Metadata = { title: "codeg", description: "AI Coding Agent Conversation Manager", + icons: { + icon: [ + { url: "/icon-32x32.png", sizes: "32x32", type: "image/png" }, + { url: "/icon.svg", type: "image/svg+xml" }, + ], + apple: { url: "/icon-128x128.png", sizes: "128x128", type: "image/png" }, + }, } export default async function RootLayout({