openvibers/openvibe.play Commits

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

OP OpenVibers committed 10 days ago · 025db728dc · 6 files, +21 −18

* 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 4e106d4..023bc3f 100644
---- a/README.md
++++ b/README.md
@@@ -151,5 +151,5 @@ AGPL-3.0. Part of the [OpenVibe network](https://openvibe.network).
<!-- versions:start -->
- openvibe-contracts: v0.222.0
- openvibe-sdk: v0.82.0
--- openvibe-shared: v4.107.4
++- openvibe-shared: v4.108.0
<!-- versions:end -->
ddiff --git a/STATUS.json b/STATUS.json
iindex 3d8095d..3212fea 100644
---- a/STATUS.json
++++ b/STATUS.json
@@@ -9,11 +9,11 @@
"domain": "play.openvibe.network",
"contracts": "openvibe-contracts v0.222.0",
"sdk": "openvibe-sdk v0.82.0",
-- "shared": "openvibe-shared v4.107.4",
++ "shared": "openvibe-shared v4.108.0",
"packages": [
"openvibe-contracts v0.222.0",
"openvibe-sdk v0.82.0",
-- "openvibe-shared v4.107.4"
++ "openvibe-shared v4.108.0"
],
"summary": "OpenVibe.Play — achievements and leaderboards for every OpenVibe game (Games ADR-0007 decision 10). A title is registered by its own principal (a game's service or app token), which alone writes to it: achievements (with hidden ones), boards that rank each player's best score, the sum of theirs or their fastest time in milliseconds, this week and all time, idempotent score and unlock posts, and guests adopted by the person who signs in. Boards and titles are public reads (CORS) and pages; people's rows are in the account export and erased with the account.",
"works": [
ddiff --git a/package-lock.json b/package-lock.json
iindex 313581c..538c7f2 100644
---- a/package-lock.json
++++ b/package-lock.json
@@@ -18,7 +18,7 @@
"iovalkey": "^0.4.0",
"openvibe-contracts": "https://codeload.github.com/OpenVibers/OpenVibe.Contracts/tar.gz/refs/tags/v0.222.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.0"
},
"devDependencies": {
@@@ -1191,9 +1191,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 d367099..eeb9b2e 100644
---- a/package.json
++++ b/package.json
@@@ -25,7 +25,7 @@
"iovalkey": "^0.4.0",
"openvibe-contracts": "https://codeload.github.com/OpenVibers/OpenVibe.Contracts/tar.gz/refs/tags/v0.222.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.0"
},
"engines": {
ddiff --git a/server/http/discovery.js b/server/http/discovery.js
iindex fef1967..dfd4421 100644
---- a/server/http/discovery.js
++++ b/server/http/discovery.js
@@@ -71,29 +71,30 @@ function createDiscoveryRoutes(ctx) {
details: 'Each OpenVibe game registers its achievements and leaderboards here with its own token and posts what its '
+ 'players did; the boards are public. A player is a person with an OpenVibe account or a guest of the game. '
+ 'Every page is server-rendered and readable without JavaScript.',
++ markdown: true,
++ base: site,
sections: [
{ title: 'Start here', links: [
{ title: 'OpenVibe.Play', url: abs('/'), note: 'every game and this week\'s leaders' },
{ title: 'The Play API', url: abs('/docs') },
-- { title: 'What shipped on OpenVibe.Play', url: abs('/updates') },
] },
...titles.map((t) => ({ title: t.name, links: [
{ title: `${t.name}: achievements and leaderboards`, url: abs(`/t/${t.id}`), note: `${plural(t.achievements.length, 'achievement', 'achievements')}` },
...t.boards.map((b) => ({ title: `${b.name}, this week`, url: abs(boardPath(t.id, b.id, 'week')) })),
...t.boards.map((b) => ({ title: `${b.name} (JSON)`, url: abs(`/api/v1/titles/${t.id}/boards/${b.id}?period=all`) })),
] })),
++ // A JSON API is what an agent came for, not something to skip (AGT-5 review).
{ title: 'API', links: [
{ title: 'GET /api/v1/titles', url: abs('/api/v1/titles'), note: 'every game, its achievements and boards' },
] },
-- { title: 'Machine-readable', links: [
-- { 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: 'Elsewhere', links: [
-- { title: 'OpenVibe.Games', url: 'https://openvibe.games', note: 'play the games' },
-- { title: 'OpenVibe.Network', url: 'https://openvibe.network', note: 'accounts, apps and grants' },
-- ] },
++ ],
++ 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.Games', url: 'https://openvibe.games', note: 'play the games' },
++ { title: 'OpenVibe.Network', url: 'https://openvibe.network', note: 'accounts, apps and grants' },
++ { title: 'What shipped on OpenVibe.Play', url: abs('/updates') },
],
}));
});
ddiff --git a/test/discovery.test.js b/test/discovery.test.js
iindex adb1b22..04e9442 100644
---- a/test/discovery.test.js
++++ b/test/discovery.test.js
@@@ -36,6 +36,8 @@ const { boot, check, done } = require('./helpers/boot');
assert.match(r.text, /^# OpenVibe\.Play/m);
assert.match(r.text, /Scraplandia: achievements and leaderboards/);
assert.match(r.text, /\/api\/v1\/titles\/scraplandia\/boards\/haul\?period=all/);
++ assert.ok(r.text.includes('(https://play.openvibe.network/index.md)'), 'home link points at its Markdown twin');
++ assert.ok(r.text.includes('\n## Optional\n'), 'llms.txt has an Optional section');
});
await check('llms-full.txt spells out the visible achievements, never a secret one', async () => {