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 00000000..13d79dbe
Binary files /dev/null and b/packages/ui/src/assets/favicon/apple-touch-icon.png differ
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 00000000..c9d3cbf0
Binary files /dev/null and b/packages/ui/src/assets/favicon/favicon-96x96.png differ
diff --git a/packages/ui/src/assets/favicon/favicon.ico b/packages/ui/src/assets/favicon/favicon.ico
new file mode 100644
index 00000000..a7b497fb
Binary files /dev/null and b/packages/ui/src/assets/favicon/favicon.ico differ
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 00000000..ca53fa8d
Binary files /dev/null and b/packages/ui/src/assets/favicon/web-app-manifest-192x192.png differ
diff --git a/packages/ui/src/assets/favicon/web-app-manifest-512x512.png b/packages/ui/src/assets/favicon/web-app-manifest-512x512.png
new file mode 100644
index 00000000..91b4eb33
Binary files /dev/null and b/packages/ui/src/assets/favicon/web-app-manifest-512x512.png differ
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"