openvibers/openvibe.ai Commits
/updates in the network's type, with a gutter (the stylesheet link did not set the font) (#243)
Changes
@@@ -237,6 +237,10 @@ const HOME_STYLE = `<style>const NAV_LINKS = [{ label: 'Prices', href: '/stats' }, { label: 'Guide', href: GUIDE }];const FOOTER = { service: 'ai', variant: 'full', mount: '#ov-footer', brandName: SITE_NAME, updates: '/updates' };++// The page's type: shell.page sets no font and showcase.css styles only its own sections, so without these rules++// /updates fell back to the browser's Times New Roman (domain sweep, 2026-11-01). Zero specificity: any site rule wins.++const UPDATES_FONT = "<style>:where(body){font-family:var(--ov-font,'Inter',-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',Arial,sans-serif)}:where(main.page){display:block;max-width:880px;margin:0 auto;padding:24px max(16px,env(safe-area-inset-right,0px)) 56px max(16px,env(safe-area-inset-left,0px))}:where(.ov-updates h1){font-size:clamp(1.6rem,5.4vw,2.2rem);line-height:1.15;margin:0 0 10px;text-wrap:balance}</style>";++/** /updates: what shipped on this site (the network's shared update log, openvibe-shared/frame updatesBody). */function renderUpdates({ siteUrl }) {return shell.page({@@@ -248,8 +252,7 @@ function renderUpdates({ siteUrl }) {robots: 'index, follow',navbar: { service: 'ai', apiBase: NETWORK_URL, links: NAV_LINKS, history: { type: 'page', title: SITE_NAME } },footer: FOOTER, home: '/', navLinks: NAV_LINKS,-- // The site's stylesheet: without it /updates fell back to the browser's serif (domain sweep, 2026-11-01).-- head: [appIcon.headTags({ site: 'ai' }), `<link rel="stylesheet" href="${ovServe.url(showcase.STYLESHEET)}">`].join('\n'),++ head: [appIcon.headTags({ site: 'ai' }), UPDATES_FONT].join('\n'),body: `<div id="navbar-mount"></div><main id="main" class="page">${frame.updatesBody({ service: 'ai', siteName: SITE_NAME })}
@@ -237,6 +237,10 @@ const HOME_STYLE = `<style>
@@ -237,6 +237,10 @@ const HOME_STYLE = `<style>
const NAV_LINKS = [{ label: 'Prices', href: '/stats' }, { label: 'Guide', href: GUIDE }];
const NAV_LINKS = [{ label: 'Prices', href: '/stats' }, { label: 'Guide', href: GUIDE }];
const FOOTER = { service: 'ai', variant: 'full', mount: '#ov-footer', brandName: SITE_NAME, updates: '/updates' };
const FOOTER = { service: 'ai', variant: 'full', mount: '#ov-footer', brandName: SITE_NAME, updates: '/updates' };
+// The page's type: shell.page sets no font and showcase.css styles only its own sections, so without these rules
+// /updates fell back to the browser's Times New Roman (domain sweep, 2026-11-01). Zero specificity: any site rule wins.
+const UPDATES_FONT = "<style>:where(body){font-family:var(--ov-font,'Inter',-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',Arial,sans-serif)}:where(main.page){display:block;max-width:880px;margin:0 auto;padding:24px max(16px,env(safe-area-inset-right,0px)) 56px max(16px,env(safe-area-inset-left,0px))}:where(.ov-updates h1){font-size:clamp(1.6rem,5.4vw,2.2rem);line-height:1.15;margin:0 0 10px;text-wrap:balance}</style>";
+
/** /updates: what shipped on this site (the network's shared update log, openvibe-shared/frame updatesBody). */
/** /updates: what shipped on this site (the network's shared update log, openvibe-shared/frame updatesBody). */
function renderUpdates({ siteUrl }) {
function renderUpdates({ siteUrl }) {
return shell.page({
return shell.page({
@@ -248,8 +252,7 @@ function renderUpdates({ siteUrl }) {
@@ -248,8 +252,7 @@ function renderUpdates({ siteUrl }) {
robots: 'index, follow',
robots: 'index, follow',
navbar: { service: 'ai', apiBase: NETWORK_URL, links: NAV_LINKS, history: { type: 'page', title: SITE_NAME } },
navbar: { service: 'ai', apiBase: NETWORK_URL, links: NAV_LINKS, history: { type: 'page', title: SITE_NAME } },
footer: FOOTER, home: '/', navLinks: NAV_LINKS,
footer: FOOTER, home: '/', navLinks: NAV_LINKS,
- // The site's stylesheet: without it /updates fell back to the browser's serif (domain sweep, 2026-11-01).
- head: [appIcon.headTags({ site: 'ai' }), `<link rel="stylesheet" href="${ovServe.url(showcase.STYLESHEET)}">`].join('\n'),
+ head: [appIcon.headTags({ site: 'ai' }), UPDATES_FONT].join('\n'),
body: `<div id="navbar-mount"></div>
body: `<div id="navbar-mount"></div>
<main id="main" class="page">
<main id="main" class="page">
${frame.updatesBody({ service: 'ai', siteName: SITE_NAME })}
${frame.updatesBody({ service: 'ai', siteName: SITE_NAME })}