From 543eee78a666c32139e87fcfe97a110ebdd9d0bc Mon Sep 17 00:00:00 2001
From: Adam <2363879+adamdotdevin@users.noreply.github.com>
Date: Fri, 31 Oct 2025 06:36:26 -0500
Subject: [PATCH] wip: desktop work
---
packages/desktop/index.html | 2 +-
packages/desktop/public/favicon.svg | 1 +
packages/desktop/src/assets/favicon.svg | 5 -----
.../src/assets/favicon/apple-touch-icon.png | Bin 0 -> 1520 bytes
.../ui/src/assets/favicon/favicon-96x96.png | Bin 0 -> 681 bytes
packages/ui/src/assets/favicon/favicon.ico | Bin 0 -> 15086 bytes
packages/ui/src/assets/favicon/favicon.svg | 18 +++++++++++++++
.../ui/src/assets/favicon/site.webmanifest | 21 ++++++++++++++++++
.../favicon/web-app-manifest-192x192.png | Bin 0 -> 1667 bytes
.../favicon/web-app-manifest-512x512.png | Bin 0 -> 7299 bytes
packages/ui/src/components/favicon.tsx | 19 ++++++++++++++++
packages/ui/src/components/index.ts | 1 +
12 files changed, 61 insertions(+), 6 deletions(-)
create mode 120000 packages/desktop/public/favicon.svg
delete mode 100644 packages/desktop/src/assets/favicon.svg
create mode 100644 packages/ui/src/assets/favicon/apple-touch-icon.png
create mode 100644 packages/ui/src/assets/favicon/favicon-96x96.png
create mode 100644 packages/ui/src/assets/favicon/favicon.ico
create mode 100644 packages/ui/src/assets/favicon/favicon.svg
create mode 100644 packages/ui/src/assets/favicon/site.webmanifest
create mode 100644 packages/ui/src/assets/favicon/web-app-manifest-192x192.png
create mode 100644 packages/ui/src/assets/favicon/web-app-manifest-512x512.png
create mode 100644 packages/ui/src/components/favicon.tsx
diff --git a/packages/desktop/index.html b/packages/desktop/index.html
index 9209acfc..e88b49ac 100644
--- a/packages/desktop/index.html
+++ b/packages/desktop/index.html
@@ -4,7 +4,7 @@
-
+
OpenCode
diff --git a/packages/desktop/public/favicon.svg b/packages/desktop/public/favicon.svg
new file mode 120000
index 00000000..80804d25
--- /dev/null
+++ b/packages/desktop/public/favicon.svg
@@ -0,0 +1 @@
+../../ui/src/assets/favicon/favicon.svg
\ No newline at end of file
diff --git a/packages/desktop/src/assets/favicon.svg b/packages/desktop/src/assets/favicon.svg
deleted file mode 100644
index 3c81bbdb..00000000
--- a/packages/desktop/src/assets/favicon.svg
+++ /dev/null
@@ -1,5 +0,0 @@
-
diff --git a/packages/ui/src/assets/favicon/apple-touch-icon.png b/packages/ui/src/assets/favicon/apple-touch-icon.png
new file mode 100644
index 0000000000000000000000000000000000000000..13d79dbec4fa8f8b2a4adb3611419f1d42f8de3b
GIT binary patch
literal 1520
zcma)6X;4#F7=1|tyin7IV5o>_44WG0P?rP{Bs@Wa0%B1RX%K|s0z|Q4OF@D@2p|w(
zkf;^(DK2d>SP_B&4Tv&`g}j0*2q^-R4zg$?jDSgRr!)OkX8PmaJLfLnJ>U73yr4i|
zis@2Q2!benJnyf;dh7228-v-S(|9ce8C~}C_S%_Bc+4ajfFgIU;^j#DV(x(V*M)$wh?oVGa{mL{G#OmOr51<
zXRe_#gxMCIQ(MIN;Z^g&SrEp$)zG%cXPO}_VHPGbxmt4*l@H*>D`|5vW9afuXqY6J
zU&V_)2MpXF?5#=3gQ;#i!Y&TjbG3a1)jV%8p4UNp&n6(6*ccxs5e?i~eoaAkx7Uq-
zyv~gbC87g#MQgo%afntXlMP;-ndDnJr+(X5ml{5PK16$6{G7ufAfpr8XUzzRRNPQu
zUp%rJt6gt5$|u1YU)Z0#2`HCe8E!fWVUzb_c32S6uI{pPDS#aRwA|_4mox(6duVgH
zgiM`{LfN^1Pf2g_NE8u0wgjUv%^1Qec1+so<|~Njxh`Y)S6i<3OtYgjK#cz~S0b<{
zAZk)X!=Fk*Okk=SL1?G>xa-L06^EyTmBByzSG_L{-h|6`K~Rj?I?65_P)e
zYxL##IQ^QD7_Xa+_oQHbte{UJOfk`;Z=^AF@&@br4Fu$H!1D!RmQD76h&{&vbaF0-
zEPv93!mP?8(qfQMfnqQo73`kX+f1e~v6<-cDr=Z3GHEY*E`=6?qz`j5nG%(L
zK3XwWQX5fQ^h%+!)1gGQTD>_Zjwzb+MFllnCkT~4**|v>?vKdY1Ht^C)zdvB3uOie
za%6C|MtC|+24O?VHZO=oGy>{$NF-C;1e{W*e-3Z1&7v!8botH+N$vz>g(i!{0`4vZ
zTk1#yo&Q7cX!CZKFkaqm4Ps}KmGXv7g6~j58<+n#{78CTZL3?h=V^`uS35-~yGS5x
z6u-#^gd{b*W>*sIAt|pL1iaIIo)JYHkf&dn&HM;(QpPLac9m{~n
zxe#V`sz2)SEyUBqgJMXZd)+H;Vf9tNyGnOs9l5Qr<7yK=^k(b_C1{yiHMAynrSL(B
zmD*d|HWIq50;h*3xSL~Evb~8yBs9M6tv_1nsA;Vx!4-9`w;g~`w3CuBphetwN4JA0
z+gf~HOJfM1z8(
z1`P^)xbXz8MF802`1@HAjn`a
iZ=BJCzHR(>!~O(vi~oJNgi*E+>_C1#f!=Z?^7vmtu%`_G
literal 0
HcmV?d00001
diff --git a/packages/ui/src/assets/favicon/favicon-96x96.png b/packages/ui/src/assets/favicon/favicon-96x96.png
new file mode 100644
index 0000000000000000000000000000000000000000..c9d3cbf0eefae129e0966185139cac21578e7ecb
GIT binary patch
literal 681
zcmeAS@N?(olHy`uVBq!ia0vp^2_VeD1|%QND7Ro>V2bl}aSW+od^6eFkJ(Vf)jg!c
zRUq)vW;HQJ?ZiOAkj6H(*$S~IMDiY=|NOOdlJO+d*1z|*p1-&|nrq+Lw9kLO{HREo
zY8)|BbU|zv%M_DGKGKXVTMA!?wKn8w+?G;Y&>Ov7i>1W*<~0t++&jBM6&FaK+UCZQ
z@%Y+WF2=h7+e~-)GUl#P3FVlOpqt;-P!u+4GC}5HR+;Ik)m*hR3)hxU4zRoY<;cS`
z>oQ)K@4tU;hs$}}+hq$HHhXoG^S@2YFH@;9fj+1jFwK1YFRoMpWjke
zaQE2L&tUi*v53XMYKmmar|3eC3PT_(EX
z2HV_*L+F?x{xU}ttqowFdcgYF)&sSIAAN)_VHb6g%qo2dWqkc$ObQMxRXXh9F
zzAVqY))6dyA^((3@Sk!aXV6cU4_^uT$ub1}Wcl!w
z=A)nW9?w%qcz^Ts@!;xh`uY34beEscBLCUUjgNO%5B|ZwrU9o9pVeaP;Pd6}>g$lJ
zmV?XBXSLWm__Vw~#koeb@OEi9yp-#l)&}NF-qVU12Mp_bTFvIh>8$l6V{l69f$_nA
z9rY*gbI4v=8AyzFEmia{edX;D=lL-{_=o-`pZD?kD}VpR`ZM44x82^oPm-it1`-qM
z^UwYC)CaZ#r^I0VFzXNa7cI$efn^X>f8IS@P3xMk%Kb;{r>YO*m%sm2{VFyDKt)teB5>BC~B+KWrDe&wJGxD#kX2JZ`U`sDx}W!
zSrni5-4F3b{$5^ti2@6Md@p($pBq<}I^X<-h>xPpt`5uilg}nD=TYmf$=T65%ejkl
V))F(?#>G7}h%9*gAQFtX{RSG~hcN&E
literal 0
HcmV?d00001
diff --git a/packages/ui/src/assets/favicon/favicon.svg b/packages/ui/src/assets/favicon/favicon.svg
new file mode 100644
index 00000000..ffb5f729
--- /dev/null
+++ b/packages/ui/src/assets/favicon/favicon.svg
@@ -0,0 +1,18 @@
+
+
diff --git a/packages/ui/src/assets/favicon/site.webmanifest b/packages/ui/src/assets/favicon/site.webmanifest
new file mode 100644
index 00000000..f7522f8f
--- /dev/null
+++ b/packages/ui/src/assets/favicon/site.webmanifest
@@ -0,0 +1,21 @@
+{
+ "name": "OpenCode",
+ "short_name": "OpenCode",
+ "icons": [
+ {
+ "src": "/web-app-manifest-192x192.png",
+ "sizes": "192x192",
+ "type": "image/png",
+ "purpose": "maskable"
+ },
+ {
+ "src": "/web-app-manifest-512x512.png",
+ "sizes": "512x512",
+ "type": "image/png",
+ "purpose": "maskable"
+ }
+ ],
+ "theme_color": "#ffffff",
+ "background_color": "#ffffff",
+ "display": "standalone"
+}
\ No newline at end of file
diff --git a/packages/ui/src/assets/favicon/web-app-manifest-192x192.png b/packages/ui/src/assets/favicon/web-app-manifest-192x192.png
new file mode 100644
index 0000000000000000000000000000000000000000..ca53fa8daa61b3dbf9807186aca2b2be12a944ee
GIT binary patch
literal 1667
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
literal 0
HcmV?d00001
diff --git a/packages/ui/src/components/favicon.tsx b/packages/ui/src/components/favicon.tsx
new file mode 100644
index 00000000..de32ed2a
--- /dev/null
+++ b/packages/ui/src/components/favicon.tsx
@@ -0,0 +1,19 @@
+import { Link, Meta } from "@solidjs/meta"
+import favicon96 from "../assets/favicon/favicon-96x96.png"
+import faviconSvg from "../assets/favicon/favicon.svg"
+import faviconIco from "../assets/favicon/favicon.ico"
+import appleTouchIcon from "../assets/favicon/apple-touch-icon.png"
+import siteWebmanifest from "../assets/favicon/site.webmanifest"
+
+export const Favicon = () => {
+ return (
+ <>
+
+
+
+
+
+
+ >
+ )
+}
diff --git a/packages/ui/src/components/index.ts b/packages/ui/src/components/index.ts
index 8d6ddc89..115e5f14 100644
--- a/packages/ui/src/components/index.ts
+++ b/packages/ui/src/components/index.ts
@@ -9,6 +9,7 @@ export * from "./diff-changes"
export * from "./icon"
export * from "./icon-button"
export * from "./input"
+export * from "./favicon"
export * from "./fonts"
export * from "./list"
export * from "./markdown"