openvibers/openvibe.report Commits

openvibe-shared v4.108.0 (was v4.107.4) (#94)

OP OpenVibers committed 10 days ago · 4325262b96 · 6 files, +24 −19

* openvibe-shared v4.108.0 (was v4.107.4)

Opened by scripts/pin-bump.js in OpenVibers/OpenVibe.Shared after the v4.108.0 release.

* llms.txt links each page at its Markdown twin, with an ## Optional section (AGT-5)

* llms.txt: the JSON API stays a main section, not Optional (AGT-5 review)

Changes

ddiff --git a/README.md b/README.md
iindex f927fa5..5c1e5aa 100644
---- a/README.md
++++ b/README.md
@@@ -207,6 +207,6 @@ verifies the Events v2 HMAC. See [SECURITY.md](SECURITY.md).
<!-- versions:start -->
- openvibe-contracts: v0.275.0
- openvibe-sdk: v0.82.0
--- openvibe-shared: v4.107.4
++- openvibe-shared: v4.108.0
- openvibe-publishing: v1.5.0
<!-- versions:end -->
ddiff --git a/STATUS.json b/STATUS.json
iindex a4dbbee..f193b97 100644
---- a/STATUS.json
++++ b/STATUS.json
@@@ -10,12 +10,12 @@
"domain": "openvibe.report",
"contracts": "openvibe-contracts v0.275.0",
"sdk": "openvibe-sdk v0.82.0",
-- "shared": "openvibe-shared v4.107.4",
++ "shared": "openvibe-shared v4.108.0",
"packages": [
"openvibe-contracts v0.275.0",
"openvibe-publishing v1.5.0",
"openvibe-sdk v0.82.0",
-- "openvibe-shared v4.107.4",
++ "openvibe-shared v4.108.0",
"pg v8.23.1",
"pglite v0.5.13 (dev)"
],
ddiff --git a/package-lock.json b/package-lock.json
iindex 55644f0..4d8462a 100644
---- a/package-lock.json
++++ b/package-lock.json
@@@ -16,7 +16,7 @@
"openvibe-contracts": "https://codeload.github.com/OpenVibers/OpenVibe.Contracts/tar.gz/refs/tags/v0.275.0",
"openvibe-publishing": "https://codeload.github.com/OpenVibers/OpenVibe.Publishing/tar.gz/refs/tags/v1.5.0",
"openvibe-sdk": "https://codeload.github.com/OpenVibers/OpenVibe.SDK/tar.gz/refs/tags/v0.82.0",
-- "openvibe-shared": "https://codeload.github.com/OpenVibers/OpenVibe.Shared/tar.gz/refs/tags/v4.107.4",
++ "openvibe-shared": "https://codeload.github.com/OpenVibers/OpenVibe.Shared/tar.gz/refs/tags/v4.108.0",
"pg": "^8.23.1"
},
"devDependencies": {
@@@ -1119,9 +1119,9 @@
}
},
"node_modules/openvibe-shared": {
-- "version": "4.107.4",
-- "resolved": "https://codeload.github.com/OpenVibers/OpenVibe.Shared/tar.gz/refs/tags/v4.107.4",
-- "integrity": "sha512-tThN0m3KMncEHVcBOvE+ysHjsZTlVIDLG1P+/i2Mulmxfc/AUpebAXhpWWrut50OChZ8o+HeePxsSrPI8mUQOQ==",
++ "version": "4.108.0",
++ "resolved": "https://codeload.github.com/OpenVibers/OpenVibe.Shared/tar.gz/refs/tags/v4.108.0",
++ "integrity": "sha512-NPzwjxpzGIpFpIm4uw3+VwHfsxbJ2+cD9yuhRzSwolSwqv2kCmwaVtHJ0DA9gKO3K8PCBfIP3UpKzpuSbYEJ+g==",
"license": "MIT",
"dependencies": {
"jsonwebtoken": "^9.0.0",
ddiff --git a/package.json b/package.json
iindex 36242ca..7319c21 100644
---- a/package.json
++++ b/package.json
@@@ -22,7 +22,7 @@
"openvibe-contracts": "https://codeload.github.com/OpenVibers/OpenVibe.Contracts/tar.gz/refs/tags/v0.275.0",
"openvibe-publishing": "https://codeload.github.com/OpenVibers/OpenVibe.Publishing/tar.gz/refs/tags/v1.5.0",
"openvibe-sdk": "https://codeload.github.com/OpenVibers/OpenVibe.SDK/tar.gz/refs/tags/v0.82.0",
-- "openvibe-shared": "https://codeload.github.com/OpenVibers/OpenVibe.Shared/tar.gz/refs/tags/v4.107.4",
++ "openvibe-shared": "https://codeload.github.com/OpenVibers/OpenVibe.Shared/tar.gz/refs/tags/v4.108.0",
"pg": "^8.23.1"
},
"engines": {
ddiff --git a/server/http/discovery.js b/server/http/discovery.js
iindex cc93db0..87a2a10 100644
---- a/server/http/discovery.js
++++ b/server/http/discovery.js
@@@ -73,27 +73,31 @@ function createDiscoveryRoutes({ config, live, bench }) {
name: SITE_NAME,
summary: 'Every number on OpenVibe, honest: the network\'s open stats, The Rundown of what streamers talked about, and every stream\'s after-show report.',
details: 'The numbers and the write-ups are read from OpenVibe.Network and OpenVibe.Live, cached in this process for a few minutes, and shown as the sources answer them. Nothing here is about a person.',
++ markdown: true,
++ base: site,
sections: [
{ title: 'Start here', links: [
{ title: 'OpenVibe.Report', url: abs('/'), note: 'the Report room' },
{ title: 'Open numbers', url: abs('/stats'), note: 'page views, accounts and traffic for every OpenVibe site' },
-- { title: 'Design health', url: abs('/design'), note: 'how closely each site follows the shared design kit, read from its code; per site at /design/<site>' },
-- { title: 'The Rundown', url: abs('/rundown'), note: 'what streamers talked about, topic by topic' },
++ { title: 'Design health', url: abs('/design'), html: true, note: 'how closely each site follows the shared design kit, read from its code; per site at /design/<site>' },
++ { title: 'The Rundown', url: abs('/rundown'), html: true, note: 'what streamers talked about, topic by topic' },
{ title: 'AI boards', url: abs('/ai'), note: 'Bench ratings, quality and cost across rooms' },
] },
-- { title: 'Machine-readable', links: [
++ // A JSON API is what an agent came for, not something to skip (AGT-5 review).
++ { title: 'API', links: [
{ title: 'Open stats (JSON)', url: abs('/api/v1/stats?days=7'), note: '?days=7, 30 or 90' },
{ title: 'Design health (JSON)', url: abs('/api/v1/design-health'), note: 'every site; /api/v1/design-health/<site> for one' },
{ title: 'The Rundown (JSON)', url: abs('/api/v1/rundown') },
{ title: 'Topics (JSON)', url: abs('/api/v1/rundown/topics') },
-- { title: 'Sitemap', url: abs('/sitemap.xml') },
-- { title: 'Release metadata (JSON)', url: abs('/release.json') },
-- ] },
-- { title: 'Elsewhere', links: [
-- { title: 'OpenVibe.Network', url: 'https://openvibe.network', note: 'the network and its open stats' },
-- { title: 'OpenVibe.Live', url: 'https://openvibe.live', note: 'the streams, The Rundown and the after-show reports' },
] },
],
++ optional: [
++ { title: 'Sitemap', url: abs('/sitemap.xml') },
++ { title: 'Full text for language models', url: abs('/llms-full.txt') },
++ { title: 'Release metadata (JSON)', url: abs('/release.json') },
++ { title: 'OpenVibe.Network', url: 'https://openvibe.network', note: 'the network and its open stats' },
++ { title: 'OpenVibe.Live', url: 'https://openvibe.live', note: 'the streams, The Rundown and the after-show reports' },
++ ],
});
r.get('/llms.txt', (_req, res) => {
res.type('text/plain').set('Cache-Control', CACHE).send(seo.llmsTxt(llmsSite()));
ddiff --git a/test/discovery.test.js b/test/discovery.test.js
iindex 1a09e70..9cc22ef 100644
---- a/test/discovery.test.js
++++ b/test/discovery.test.js
@@@ -47,12 +47,13 @@ const STATUS_UPDATED = JSON.parse(fs.readFileSync(path.join(__dirname, '..', 'ST
assert.strictEqual(r.headers.get('cache-control'), 'public, max-age=3600');
assert.ok(r.text.startsWith('# OpenVibe.Report'));
for (const link of [
-- 'https://openvibe.report/',
-- 'https://openvibe.report/stats',
++ 'https://openvibe.report/index.md',
++ 'https://openvibe.report/stats.md',
'https://openvibe.report/rundown',
'https://openvibe.report/api/v1/stats?days=7',
'https://openvibe.report/sitemap.xml',
]) assert.ok(r.text.includes(`(${link})`), `missing link ${link}`);
++ assert.ok(r.text.includes('\n## Optional\n'), 'llms.txt has an Optional section');
});
await check('llms-full.txt (SEO-33): the site in full, every page llms.txt lists with what it holds', async () => {