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(itemprop='image' content=buildImgPath('ol-brand/overleaf_og_logo.png'))
meta(name='image' content=buildImgPath('ol-brand/overleaf_og_logo.png')) meta(name='image' content=buildImgPath('ol-brand/overleaf_og_logo.png'))
else else
//- the default image for Overleaf Community Edition/Server Pro //- the default image for Verso Community Edition
meta(itemprop='image' content=buildBaseAssetPath() + 'apple-touch-icon.png') meta(itemprop='image' content=buildBaseAssetPath() + 'og-image.png')
meta(name='image' content=buildBaseAssetPath() + 'apple-touch-icon.png') meta(name='image' content=buildBaseAssetPath() + 'og-image.png')
//- Keywords //- Keywords
if metadata && metadata.keywords if metadata && metadata.keywords
@@ -78,14 +78,17 @@ else if settings.overleaf
content=buildImgPath('ol-brand/overleaf_og_logo.png') content=buildImgPath('ol-brand/overleaf_og_logo.png')
) )
else else
//- the default image for Overleaf Community Edition/Server Pro //- the default image for Verso Community Edition
meta( meta(
name='twitter:image' name='twitter:image'
content=buildBaseAssetPath() + 'apple-touch-icon.png' content=buildBaseAssetPath() + 'og-image.png'
) )
//- Open Graph //- 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 if settings.social && settings.social.facebook && settings.social.facebook.appId
meta(property='fb:app_id' content=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') content=buildImgPath('ol-brand/overleaf_og_logo.png')
) )
else else
//- the default image for Overleaf Community Edition/Server Pro //- the default image for Verso Community Edition
meta( meta(
property='og:image' property='og:image'
content=buildBaseAssetPath() + 'apple-touch-icon.png' content=buildBaseAssetPath() + 'og-image.png'
) )
if metadata && metadata.openGraphType if metadata && metadata.openGraphType
meta(property='og:type' metadata.openGraphType) meta(property='og:type' content=metadata.openGraphType)
else else
meta(property='og:type' content='website') 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"> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 160 160">
<defs> <polygon points="18,22 142,22 80,132" fill="black"/>
<clipPath id="c"><circle cx="50" cy="50" r="48"/></clipPath> <polygon points="44,22 116,22 80,120" fill="white"/>
</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> </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": [ "icons": [
{ {
"src": "/android-chrome-192x192.png", "src": "/android-chrome-192x192.png",
@@ -12,7 +13,7 @@
"type": "image/png" "type": "image/png"
} }
], ],
"theme_color": "#1b222c", "theme_color": "#0a0a0a",
"background_color": "#ffffff", "background_color": "#0a0a0a",
"display": "standalone" "display": "standalone"
} }