From 252a55db4b1eb7222a45981a592e4c6581c63317 Mon Sep 17 00:00:00 2001 From: Cho Young-Hwi Date: Tue, 24 Mar 2026 07:57:43 +0000 Subject: [PATCH 1/3] =?UTF-8?q?[#481]=20Complete=20metadata=20for=20all=20?= =?UTF-8?q?platforms=20=E2=80=94=20icons,=20OG,=20Apple,=20Android,=20mani?= =?UTF-8?q?fest?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Claude Opus 4.6 (1M context) --- public/manifest.json | 21 +++++++++++++++++++++ src/app/layout.tsx | 42 ++++++++++++++++++++++++++++++++++++++---- 2 files changed, 59 insertions(+), 4 deletions(-) create mode 100644 public/manifest.json diff --git a/public/manifest.json b/public/manifest.json new file mode 100644 index 00000000..3e9e7852 --- /dev/null +++ b/public/manifest.json @@ -0,0 +1,21 @@ +{ + "name": "PlotLink", + "short_name": "PlotLink", + "icons": [ + { + "src": "/favicon.png", + "sizes": "512x512", + "type": "image/png" + }, + { + "src": "/icon.png", + "sizes": "1024x1024", + "type": "image/png", + "purpose": "any maskable" + } + ], + "theme_color": "#E8DFD0", + "background_color": "#E8DFD0", + "display": "standalone", + "start_url": "/" +} diff --git a/src/app/layout.tsx b/src/app/layout.tsx index 6fc1eaf1..ce6eca1c 100644 --- a/src/app/layout.tsx +++ b/src/app/layout.tsx @@ -23,18 +23,52 @@ const geistMono = Geist_Mono({ const appUrl = process.env.NEXT_PUBLIC_APP_URL ?? "http://localhost:3000"; +const appName = "PlotLink"; +const appDescription = + "Tokenise your story from day 1. Publish plots, drive trading, earn royalties from every trade — powered by the market, not a platform."; +const themeColor = "#E8DFD0"; + export const metadata: Metadata = { metadataBase: new URL(appUrl), - title: "PlotLink", - description: "Tokenise your story from day 1. Publish plots, drive trading, earn royalties from every trade — powered by the market, not a platform.", - icons: { icon: "/favicon.png" }, + title: appName, + description: appDescription, + icons: { + icon: [ + { url: "/favicon.png" }, + { url: "/plotlink-logo-symbol.svg", type: "image/svg+xml" }, + ], + apple: { url: "/icon.png", sizes: "180x180" }, + }, + manifest: "/manifest.json", openGraph: { - images: ["/og-image.png"], + title: appName, + description: appDescription, + url: appUrl, + siteName: appName, + images: [ + { + url: "/og-image.png", + width: 1200, + height: 630, + alt: appName, + }, + ], + type: "website", }, twitter: { card: "summary_large_image", + title: appName, + description: appDescription, images: ["/og-image.png"], }, + appleWebApp: { + capable: true, + statusBarStyle: "default", + title: appName, + }, + other: { + "theme-color": themeColor, + }, }; export default function RootLayout({ From 1715fff79904008f192243943eb0d4bbed1b2c19 Mon Sep 17 00:00:00 2001 From: Cho Young-Hwi Date: Tue, 24 Mar 2026 07:59:28 +0000 Subject: [PATCH 2/3] [#481] Use native themeColor field instead of other meta Co-Authored-By: Claude Opus 4.6 (1M context) --- src/app/layout.tsx | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/src/app/layout.tsx b/src/app/layout.tsx index ce6eca1c..9b357281 100644 --- a/src/app/layout.tsx +++ b/src/app/layout.tsx @@ -66,9 +66,7 @@ export const metadata: Metadata = { statusBarStyle: "default", title: appName, }, - other: { - "theme-color": themeColor, - }, + themeColor, }; export default function RootLayout({ From 13d6a560f64fa923f0cce7648a942ed7c942e148 Mon Sep 17 00:00:00 2001 From: Cho Young-Hwi Date: Tue, 24 Mar 2026 08:00:08 +0000 Subject: [PATCH 3/3] [#481] Add 192x192 icon for Android/PWA manifest Co-Authored-By: Claude Opus 4.6 (1M context) --- public/icon-192.png | Bin 0 -> 4846 bytes public/manifest.json | 5 +++++ 2 files changed, 5 insertions(+) create mode 100644 public/icon-192.png diff --git a/public/icon-192.png b/public/icon-192.png new file mode 100644 index 0000000000000000000000000000000000000000..f2af604ae05c3b8908e382a37987e2505a2f91f9 GIT binary patch literal 4846 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 K6l&$nL;nNd9Jq-9 literal 0 HcmV?d00001 diff --git a/public/manifest.json b/public/manifest.json index 3e9e7852..b7f3d7ec 100644 --- a/public/manifest.json +++ b/public/manifest.json @@ -2,6 +2,11 @@ "name": "PlotLink", "short_name": "PlotLink", "icons": [ + { + "src": "/icon-192.png", + "sizes": "192x192", + "type": "image/png" + }, { "src": "/favicon.png", "sizes": "512x512",