From 018ef3b2dbb4f66e0c9cd4ab6a63d524ec3c8b74 Mon Sep 17 00:00:00 2001 From: Abraham Date: Wed, 22 Jul 2026 14:44:30 -0700 Subject: [PATCH] chore(visimer): favicon + full SEO meta (#2847) * chore(visimer/site): favicon, OG image, and full SEO meta - Adds public/favicon.svg (logo on paper bg so it reads on dark browser themes) - Adds public/og-image.svg + og-image.png for social cards (baked with sips) - Adds public/robots.txt and public/sitemap.xml - index.html gains description tuned for search, Open Graph, Twitter Card, canonical URL, theme-color, JSON-LD SoftwareApplication schema, apple-touch-icon, mask-icon Canonical hostname is visimer.com. Adjust if the attached domain differs. * chore(visimer/site): swap OG image for a playground screenshot The playground shot is more compelling than the branded card: viewers see the actual product before they land. * fix(visimer/site): stable fade origin + instant CTA scroll - Star-hint fade recomputes its origin on every scroll and reacts to resize, so a late font layout shift or viewport change doesn't leave the ratio stale. - Playground CTA parks the page at the demo section before expanding so exit lands on the playground instead of back at the hero. scrollTo uses behavior: 'instant' to override the html { scroll-behavior: smooth } rule that otherwise gets frozen mid-animation by the body.overflow=hidden expand triggers. GitOrigin-RevId: 3bf650b65f4b2f505b22435e35c87abf7e637885 --- apps/site/index.html | 56 +++++++++++++++++++++++++++++++++- apps/site/public/favicon.svg | 10 ++++++ apps/site/public/og-image.png | Bin 0 -> 50767 bytes apps/site/public/robots.txt | 4 +++ apps/site/public/sitemap.xml | 8 +++++ apps/site/src/App.tsx | 29 ++++++++++++++---- 6 files changed, 100 insertions(+), 7 deletions(-) create mode 100644 apps/site/public/favicon.svg create mode 100644 apps/site/public/og-image.png create mode 100644 apps/site/public/robots.txt create mode 100644 apps/site/public/sitemap.xml diff --git a/apps/site/index.html b/apps/site/index.html index 7062b2d..c53943e 100644 --- a/apps/site/index.html +++ b/apps/site/index.html @@ -3,17 +3,71 @@ + + + Visimer · Edit Mermaid diagrams by hand + + + + + + + + + + + + + + + + + + + + + + + + + + + +
diff --git a/apps/site/public/favicon.svg b/apps/site/public/favicon.svg new file mode 100644 index 0000000..7fe624d --- /dev/null +++ b/apps/site/public/favicon.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/apps/site/public/og-image.png b/apps/site/public/og-image.png new file mode 100644 index 0000000000000000000000000000000000000000..244d13a1669f011fd4c7062c12e1bd4d5f0e2e29 GIT binary patch literal 50767 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

9+H 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

L0k%#+qPg= z)eRGX-~_rO!36BloeRJqfIvnz+2dLRzTWTy@ zeLcuO!yUKF#|FclcI%sgI+nyUn61_e}<%;;y_Kt=m zHQX%VuuIt%mmGk`l0uCKnBmRMp{E_uo!I%A$NJZu=%L&{RO-4tdBCl{{B%O*ALn8P z;I0BZ=w*YzS4l-V;)>O=fC&D8ATR&W{kMF zcuc;=2D~;j1-{V7acE1Y(HPmMUI{EuunZtP;vH57a}9GEXNNfW-x$VI(!KyY2M-4v6#{|73FKxJz?4F~-hV+%bD*yb U&z6iIyaN#yka%Cn_vy?30@u>jY5)KL literal 0 HcmV?d00001 diff --git a/apps/site/public/robots.txt b/apps/site/public/robots.txt new file mode 100644 index 0000000..6000662 --- /dev/null +++ b/apps/site/public/robots.txt @@ -0,0 +1,4 @@ +User-agent: * +Allow: / + +Sitemap: https://visimer.com/sitemap.xml diff --git a/apps/site/public/sitemap.xml b/apps/site/public/sitemap.xml new file mode 100644 index 0000000..d528d5d --- /dev/null +++ b/apps/site/public/sitemap.xml @@ -0,0 +1,8 @@ + + + + https://visimer.com/ + weekly + 1.0 + + diff --git a/apps/site/src/App.tsx b/apps/site/src/App.tsx index 817698f..f068ebd 100644 --- a/apps/site/src/App.tsx +++ b/apps/site/src/App.tsx @@ -276,14 +276,22 @@ export default function App() { const badge = badgeRef.current if (!badge) return const navBottom = 80 - const startTop = badge.getBoundingClientRect().top + window.scrollY - navBottom - const onScroll = () => { - const distance = badge.getBoundingClientRect().top - navBottom - setStarHintOpacity(Math.max(0, Math.min(1, distance / startTop))) + const compute = () => { + const rect = badge.getBoundingClientRect() + // Re-derive the fade origin every tick so a late web-font layout + // shift or viewport resize doesn't leave the ratio stale. + const startTop = rect.top + window.scrollY - navBottom + if (startTop <= 0) return 0 + return Math.max(0, Math.min(1, (rect.top - navBottom) / startTop)) } + const onScroll = () => setStarHintOpacity(compute()) onScroll() window.addEventListener('scroll', onScroll, { passive: true }) - return () => window.removeEventListener('scroll', onScroll) + window.addEventListener('resize', onScroll, { passive: true }) + return () => { + window.removeEventListener('scroll', onScroll) + window.removeEventListener('resize', onScroll) + } }, []) const switchType = (next: string) => { @@ -541,7 +549,16 @@ export default function App() { href="#demo" onClick={(e) => { e.preventDefault() - document.getElementById('demo')?.scrollIntoView({ behavior: 'smooth' }) + // Park the page at the demo section BEFORE expanding, so that + // when the user exits fullscreen they land on the playground + // instead of back at the hero. scrollTo is synchronous; + // scrollIntoView({smooth}) would be frozen mid-animation by + // the body.overflow=hidden expand triggers. + const demo = document.getElementById('demo') + // `behavior: 'instant'` overrides the html { scroll-behavior: + // smooth } rule; a smooth scroll here gets frozen mid-way by + // the body.overflow=hidden the useEffect triggers on expand. + if (demo) window.scrollTo({ top: demo.offsetTop - 20, behavior: 'instant' }) setExpandedAnimated(true) }} style={{