diff --git a/bun.lock b/bun.lock
index d6e7220db4..b7949547b5 100644
--- a/bun.lock
+++ b/bun.lock
@@ -29,6 +29,7 @@
"@opencode-ai/console-core": "workspace:*",
"@opencode-ai/console-mail": "workspace:*",
"@opencode-ai/console-resource": "workspace:*",
+ "@opencode-ai/ui": "workspace:*",
"@solidjs/meta": "catalog:",
"@solidjs/router": "catalog:",
"@solidjs/start": "catalog:",
diff --git a/packages/console/app/package.json b/packages/console/app/package.json
index 740bdd743a..3a20b4752d 100644
--- a/packages/console/app/package.json
+++ b/packages/console/app/package.json
@@ -18,6 +18,7 @@
"@opencode-ai/console-core": "workspace:*",
"@opencode-ai/console-mail": "workspace:*",
"@opencode-ai/console-resource": "workspace:*",
+ "@opencode-ai/ui": "workspace:*",
"@solidjs/meta": "catalog:",
"@solidjs/router": "catalog:",
"@solidjs/start": "catalog:",
diff --git a/packages/console/app/public/apple-touch-icon.png b/packages/console/app/public/apple-touch-icon.png
new file mode 120000
index 0000000000..52ebd1c302
--- /dev/null
+++ b/packages/console/app/public/apple-touch-icon.png
@@ -0,0 +1 @@
+../../../ui/src/assets/favicon/apple-touch-icon.png
\ No newline at end of file
diff --git a/packages/console/app/public/favicon-96x96.png b/packages/console/app/public/favicon-96x96.png
new file mode 120000
index 0000000000..0a40e56193
--- /dev/null
+++ b/packages/console/app/public/favicon-96x96.png
@@ -0,0 +1 @@
+../../../ui/src/assets/favicon/favicon-96x96.png
\ No newline at end of file
diff --git a/packages/console/app/public/favicon-zen.svg b/packages/console/app/public/favicon-zen.svg
deleted file mode 100644
index 84aeff32ff..0000000000
--- a/packages/console/app/public/favicon-zen.svg
+++ /dev/null
@@ -1,23 +0,0 @@
-
diff --git a/packages/console/app/public/favicon.ico b/packages/console/app/public/favicon.ico
new file mode 120000
index 0000000000..d861e771f8
--- /dev/null
+++ b/packages/console/app/public/favicon.ico
@@ -0,0 +1 @@
+../../../ui/src/assets/favicon/favicon.ico
\ No newline at end of file
diff --git a/packages/console/app/public/robots.txt b/packages/console/app/public/robots.txt
index f88eb1790c..bddac69dea 100644
--- a/packages/console/app/public/robots.txt
+++ b/packages/console/app/public/robots.txt
@@ -2,4 +2,5 @@ User-agent: *
Allow: /
# Disallow shared content pages
-Disallow: /s/
\ No newline at end of file
+Disallow: /s/
+Disallow: /share/
\ No newline at end of file
diff --git a/packages/console/app/public/site.webmanifest b/packages/console/app/public/site.webmanifest
new file mode 120000
index 0000000000..ce3161b45e
--- /dev/null
+++ b/packages/console/app/public/site.webmanifest
@@ -0,0 +1 @@
+../../../ui/src/assets/favicon/site.webmanifest
\ No newline at end of file
diff --git a/packages/console/app/public/web-app-manifest-192x192.png b/packages/console/app/public/web-app-manifest-192x192.png
new file mode 120000
index 0000000000..9d3590fc2b
--- /dev/null
+++ b/packages/console/app/public/web-app-manifest-192x192.png
@@ -0,0 +1 @@
+../../../ui/src/assets/favicon/web-app-manifest-192x192.png
\ No newline at end of file
diff --git a/packages/console/app/public/web-app-manifest-512x512.png b/packages/console/app/public/web-app-manifest-512x512.png
new file mode 120000
index 0000000000..0ca44b8899
--- /dev/null
+++ b/packages/console/app/public/web-app-manifest-512x512.png
@@ -0,0 +1 @@
+../../../ui/src/assets/favicon/web-app-manifest-512x512.png
\ No newline at end of file
diff --git a/packages/console/app/src/app.tsx b/packages/console/app/src/app.tsx
index 1cf9636427..bc94b443e9 100644
--- a/packages/console/app/src/app.tsx
+++ b/packages/console/app/src/app.tsx
@@ -1,7 +1,8 @@
import { MetaProvider, Title, Meta } from "@solidjs/meta"
import { Router } from "@solidjs/router"
import { FileRoutes } from "@solidjs/start/router"
-import { ErrorBoundary, Suspense } from "solid-js"
+import { Suspense } from "solid-js"
+import { Favicon } from "@opencode-ai/ui/favicon"
import "@ibm/plex/css/ibm-plex.css"
import "./app.css"
@@ -13,6 +14,7 @@ export default function App() {
opencode
+
{props.children}
)}
diff --git a/packages/console/app/src/entry-server.tsx b/packages/console/app/src/entry-server.tsx
index 7d86e4b2b2..913c8ca060 100644
--- a/packages/console/app/src/entry-server.tsx
+++ b/packages/console/app/src/entry-server.tsx
@@ -9,7 +9,6 @@ export default createHandler(
-
{assets}
diff --git a/packages/console/app/src/routes/workspace.tsx b/packages/console/app/src/routes/workspace.tsx
index f7aff5b481..d7117a7d22 100644
--- a/packages/console/app/src/routes/workspace.tsx
+++ b/packages/console/app/src/routes/workspace.tsx
@@ -6,7 +6,6 @@ import { UserMenu } from "./user-menu"
import { withActor } from "~/context/auth.withActor"
import { User } from "@opencode-ai/console-core/user.js"
import { Actor } from "@opencode-ai/console-core/actor.js"
-import { Link } from "@solidjs/meta"
const getUserEmail = query(async (workspaceID: string) => {
"use server"
@@ -22,7 +21,6 @@ export default function WorkspaceLayout(props: RouteSectionProps) {
const userEmail = createAsync(() => getUserEmail(params.id!))
return (
-
diff --git a/packages/console/app/src/routes/zen/index.tsx b/packages/console/app/src/routes/zen/index.tsx
index 871cbf684e..7fd393962d 100644
--- a/packages/console/app/src/routes/zen/index.tsx
+++ b/packages/console/app/src/routes/zen/index.tsx
@@ -33,7 +33,6 @@ export default function Home() {
{/**/}
OpenCode Zen | A curated set of reliable optimized models for coding agents
-
diff --git a/packages/desktop/index.html b/packages/desktop/index.html
index 8e91aab6d8..a7ee5d5f67 100644
--- a/packages/desktop/index.html
+++ b/packages/desktop/index.html
@@ -3,8 +3,12 @@
+
+
+
+
+
-
OpenCode
diff --git a/packages/desktop/public/apple-touch-icon.png b/packages/desktop/public/apple-touch-icon.png
new file mode 120000
index 0000000000..fb6e8b1702
--- /dev/null
+++ b/packages/desktop/public/apple-touch-icon.png
@@ -0,0 +1 @@
+../../ui/src/assets/favicon/apple-touch-icon.png
\ No newline at end of file
diff --git a/packages/desktop/public/favicon-96x96.png b/packages/desktop/public/favicon-96x96.png
new file mode 120000
index 0000000000..155c5ed2fc
--- /dev/null
+++ b/packages/desktop/public/favicon-96x96.png
@@ -0,0 +1 @@
+../../ui/src/assets/favicon/favicon-96x96.png
\ No newline at end of file
diff --git a/packages/desktop/public/favicon.ico b/packages/desktop/public/favicon.ico
new file mode 120000
index 0000000000..1c90f01b16
--- /dev/null
+++ b/packages/desktop/public/favicon.ico
@@ -0,0 +1 @@
+../../ui/src/assets/favicon/favicon.ico
\ No newline at end of file
diff --git a/packages/desktop/public/site.webmanifest b/packages/desktop/public/site.webmanifest
new file mode 120000
index 0000000000..a116d78796
--- /dev/null
+++ b/packages/desktop/public/site.webmanifest
@@ -0,0 +1 @@
+../../ui/src/assets/favicon/site.webmanifest
\ No newline at end of file
diff --git a/packages/desktop/public/web-app-manifest-192x192.png b/packages/desktop/public/web-app-manifest-192x192.png
new file mode 120000
index 0000000000..8cfdf8ca55
--- /dev/null
+++ b/packages/desktop/public/web-app-manifest-192x192.png
@@ -0,0 +1 @@
+../../ui/src/assets/favicon/web-app-manifest-192x192.png
\ No newline at end of file
diff --git a/packages/desktop/public/web-app-manifest-512x512.png b/packages/desktop/public/web-app-manifest-512x512.png
new file mode 120000
index 0000000000..4165998e65
--- /dev/null
+++ b/packages/desktop/public/web-app-manifest-512x512.png
@@ -0,0 +1 @@
+../../ui/src/assets/favicon/web-app-manifest-512x512.png
\ No newline at end of file
diff --git a/packages/desktop/src/index.tsx b/packages/desktop/src/index.tsx
index 43168a021a..149b907bc6 100644
--- a/packages/desktop/src/index.tsx
+++ b/packages/desktop/src/index.tsx
@@ -3,7 +3,8 @@ import "@/index.css"
import { render } from "solid-js/web"
import { Router, Route, Navigate } from "@solidjs/router"
import { MetaProvider } from "@solidjs/meta"
-import { Fonts } from "@opencode-ai/ui/fonts"
+import { Font } from "@opencode-ai/ui/font"
+import { Favicon } from "@opencode-ai/ui/favicon"
import { MarkedProvider } from "@opencode-ai/ui/context/marked"
import { GlobalSyncProvider, useGlobalSync } from "./context/global-sync"
import Layout from "@/pages/layout"
@@ -38,7 +39,7 @@ render(
-
+
(
-
-
-
+
+
+
+
{props.children}
-
-
+
+
)}
>
diff --git a/packages/enterprise/src/entry-server.tsx b/packages/enterprise/src/entry-server.tsx
index f5755ffa3d..436a155c36 100644
--- a/packages/enterprise/src/entry-server.tsx
+++ b/packages/enterprise/src/entry-server.tsx
@@ -8,7 +8,6 @@ export default createHandler(() => (
-
OpenCode
{assets}
diff --git a/packages/ui/src/assets/favicon/apple-touch-icon.png b/packages/ui/src/assets/favicon/apple-touch-icon.png
index 13d79dbec4..70fd01b0ea 100644
Binary files a/packages/ui/src/assets/favicon/apple-touch-icon.png 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
index c9d3cbf0ee..15266d28f1 100644
Binary files a/packages/ui/src/assets/favicon/favicon-96x96.png 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
index a7b497fb92..34ca0b9c01 100644
Binary files a/packages/ui/src/assets/favicon/favicon.ico 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
index ffb5f72981..157edc4d75 100644
--- a/packages/ui/src/assets/favicon/favicon.svg
+++ b/packages/ui/src/assets/favicon/favicon.svg
@@ -1,18 +1,7 @@
-
-
+
\ No newline at end of file
diff --git a/packages/ui/src/assets/favicon/site.webmanifest b/packages/ui/src/assets/favicon/site.webmanifest
index 41290e840c..e2eabbe4c2 100644
--- a/packages/ui/src/assets/favicon/site.webmanifest
+++ b/packages/ui/src/assets/favicon/site.webmanifest
@@ -19,3 +19,4 @@
"background_color": "#ffffff",
"display": "standalone"
}
+
diff --git a/packages/ui/src/assets/favicon/web-app-manifest-192x192.png b/packages/ui/src/assets/favicon/web-app-manifest-192x192.png
index ca53fa8daa..e637755490 100644
Binary files a/packages/ui/src/assets/favicon/web-app-manifest-192x192.png 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
index 91b4eb33f5..f6f0cf514e 100644
Binary files a/packages/ui/src/assets/favicon/web-app-manifest-512x512.png 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
index de32ed2afb..dec18f1adf 100644
--- a/packages/ui/src/components/favicon.tsx
+++ b/packages/ui/src/components/favicon.tsx
@@ -1,19 +1,14 @@
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/fonts.tsx b/packages/ui/src/components/font.tsx
similarity index 97%
rename from packages/ui/src/components/fonts.tsx
rename to packages/ui/src/components/font.tsx
index 0b28e8f3c2..de29910961 100644
--- a/packages/ui/src/components/fonts.tsx
+++ b/packages/ui/src/components/font.tsx
@@ -2,7 +2,7 @@ import { Style, Link } from "@solidjs/meta"
import geist from "../assets/fonts/geist.woff2"
import tx02 from "../assets/fonts/tx-02.woff2"
-export const Fonts = () => {
+export const Font = () => {
return (
<>