Branding polish: Verso favicons, OG image, and meta tag fixes
Build and Deploy Verso / deploy (push) Successful in 10m24s

Replace Overleaf favicons with Verso icon mark across all sizes (16x16,
32x32, 180x180 apple-touch, 192x192/512x512 android-chrome, ICO). Add
OG social preview image (1200x630) for Discord/Twitter link cards.

- New favicon.svg: Verso icon mark with four overlapping circles and V
- mask-favicon.svg: monochrome V polygon (was Overleaf chevron)
- og-image.png: 1200x630 social card with icon mark and "Verso" wordmark
- web.sitemanifest.json: rename "Overleaf" → "Verso", theme_color updated
- _metadata.pug: add og:url tag, fix og:type missing content= attribute,
  point CE default OG/twitter images to og-image.png instead of apple-touch-icon.png

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
claude
2026-06-15 20:19:01 +00:00
parent 323d74cc66
commit e4f1eead25
11 changed files with 27 additions and 34 deletions
+12 -9
View File
@@ -42,9 +42,9 @@ else if settings.overleaf
meta(itemprop='image' content=buildImgPath('ol-brand/overleaf_og_logo.png'))
meta(name='image' content=buildImgPath('ol-brand/overleaf_og_logo.png'))
else
//- the default image for Overleaf Community Edition/Server Pro
meta(itemprop='image' content=buildBaseAssetPath() + 'apple-touch-icon.png')
meta(name='image' content=buildBaseAssetPath() + 'apple-touch-icon.png')
//- the default image for Verso Community Edition
meta(itemprop='image' content=buildBaseAssetPath() + 'og-image.png')
meta(name='image' content=buildBaseAssetPath() + 'og-image.png')
//- Keywords
if metadata && metadata.keywords
@@ -78,14 +78,17 @@ else if settings.overleaf
content=buildImgPath('ol-brand/overleaf_og_logo.png')
)
else
//- the default image for Overleaf Community Edition/Server Pro
//- the default image for Verso Community Edition
meta(
name='twitter:image'
content=buildBaseAssetPath() + 'apple-touch-icon.png'
content=buildBaseAssetPath() + 'og-image.png'
)
//- Open Graph
//- to do - add og:url
if metadata && metadata.canonicalURL
meta(property='og:url' content=metadata.canonicalURL)
else if typeof currentUrl !== 'undefined'
meta(property='og:url' content=settings.siteUrl + currentUrl)
if settings.social && settings.social.facebook && settings.social.facebook.appId
meta(property='fb:app_id' content=settings.social.facebook.appId)
@@ -104,14 +107,14 @@ else if settings.overleaf
content=buildImgPath('ol-brand/overleaf_og_logo.png')
)
else
//- the default image for Overleaf Community Edition/Server Pro
//- the default image for Verso Community Edition
meta(
property='og:image'
content=buildBaseAssetPath() + 'apple-touch-icon.png'
content=buildBaseAssetPath() + 'og-image.png'
)
if metadata && metadata.openGraphType
meta(property='og:type' metadata.openGraphType)
meta(property='og:type' content=metadata.openGraphType)
else
meta(property='og:type' content='website')
Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.4 KiB

After

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 22 KiB

After

Width:  |  Height:  |  Size: 49 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.7 KiB

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.2 KiB

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.8 KiB

After

Width:  |  Height:  |  Size: 2.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.2 KiB

After

Width:  |  Height:  |  Size: 5.3 KiB

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 29 KiB

After

Width:  |  Height:  |  Size: 857 B

+3 -13
View File
@@ -1,14 +1,4 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100">
<defs>
<clipPath id="c"><circle cx="50" cy="50" r="48"/></clipPath>
</defs>
<g clip-path="url(#c)">
<rect x="2" y="2" width="48" height="48" fill="black"/>
<rect x="50" y="2" width="48" height="48" fill="black"/>
<rect x="2" y="50" width="48" height="48" fill="black"/>
<rect x="50" y="50" width="48" height="48" fill="black"/>
<polyline points="16,24 50,76 84,24"
stroke="white" stroke-width="13" fill="none"
stroke-linecap="round" stroke-linejoin="round"/>
</g>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 160 160">
<polygon points="18,22 142,22 80,132" fill="black"/>
<polygon points="44,22 116,22 80,120" fill="white"/>
</svg>

Before

Width:  |  Height:  |  Size: 594 B

After

Width:  |  Height:  |  Size: 180 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 70 KiB

+4 -3
View File
@@ -1,5 +1,6 @@
{
"name": "Overleaf",
"name": "Verso",
"short_name": "Verso",
"icons": [
{
"src": "/android-chrome-192x192.png",
@@ -12,7 +13,7 @@
"type": "image/png"
}
],
"theme_color": "#1b222c",
"background_color": "#ffffff",
"theme_color": "#0a0a0a",
"background_color": "#0a0a0a",
"display": "standalone"
}