openvibers/openvibe.games Commits

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

OP OpenVibers committed 10 days ago · c4c1a9a9d4 · 6 files, +55 −30

* 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)

Changes

ddiff --git a/README.md b/README.md
iindex 7982e34..b449db7 100644
---- a/README.md
++++ b/README.md
@@@ -293,6 +293,6 @@ between services.
<!-- versions:start -->
- openvibe-contracts: v0.222.0
- openvibe-sdk: v0.82.0
--- openvibe-shared: v4.107.4
++- openvibe-shared: v4.108.0
- openvibe-publishing: v1.4.0
<!-- versions:end -->
ddiff --git a/STATUS.json b/STATUS.json
iindex 33a6405..1ea3301 100644
---- a/STATUS.json
++++ b/STATUS.json
@@@ -6,7 +6,7 @@
"runtime": "node 22, TypeScript (tsx), pnpm workspace; Babylon.js (client) + deterministic Rapier physics; PostgreSQL 18 via openvibe-sdk/db (pg, or embedded PGlite in development); Valkey optional",
"port": 8000,
"domain": "openvibe.games, play.openvibe.games",
-- "contracts": "openvibe-contracts v0.222.0, openvibe-sdk v0.82.0, openvibe-shared v4.107.4, openvibe-publishing v1.4.0 (apps/server/package.json)",
++ "contracts": "openvibe-contracts v0.222.0, openvibe-sdk v0.82.0, openvibe-shared v4.108.0, openvibe-publishing v1.4.0 (apps/server/package.json)",
"capabilities": [
"games.mod.manage",
"games.mod.read",
ddiff --git a/apps/server/package.json b/apps/server/package.json
iindex 23f65e1..bce5f19 100644
---- a/apps/server/package.json
++++ b/apps/server/package.json
@@@ -24,7 +24,7 @@
"openvibe-contracts": "https://codeload.github.com/OpenVibers/OpenVibe.Contracts/tar.gz/refs/tags/v0.222.0",
"openvibe-publishing": "https://codeload.github.com/OpenVibers/OpenVibe.Publishing/tar.gz/refs/tags/v1.4.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",
"quickjs-emscripten": "0.32.0",
"tsx": "^4.19.3",
ddiff --git a/apps/server/src/net/discovery.test.ts b/apps/server/src/net/discovery.test.ts
iindex ee01952..b16d775 100644
---- a/apps/server/src/net/discovery.test.ts
++++ b/apps/server/src/net/discovery.test.ts
@@@ -162,9 +162,14 @@ describe('crawl artifacts (plan T11)', () => {
expect(r.headers['content-type']).toBe('text/plain; charset=utf-8')
expect(r.headers['cache-control']).toBe('public, max-age=3600')
expect(r.body).toContain('# OpenVibe.Games')
-- expect(r.body).toContain('- [OpenVibe.Games home](https://openvibe.games/)')
++ // AGT-5: the site's own pages are linked at their Markdown twins; Scraplandia is another origin and keeps its URL.
++ expect(r.body).toContain('- [OpenVibe.Games home](https://openvibe.games/index.md)')
expect(r.body).toContain('- [Scraplandia](https://play.openvibe.games/)')
-- expect(r.body).toContain('- [Vibe Heroes](https://openvibe.games/play/vibe-heroes)')
++ expect(r.body).toContain('- [Vibe Heroes](https://openvibe.games/play/vibe-heroes.md)')
++ // /steam and /updates have no twin: their URL stays, marked (HTML).
++ expect(r.body).toContain('- [On Steam right now](https://openvibe.games/steam) (HTML)')
++ expect(r.body).toContain('- [What shipped](https://openvibe.games/updates) (HTML)')
++ expect(r.body).toContain('\n## Optional\n')
expect(r.body).toContain('https://openvibe.games/sitemap.xml')
expect(r.body).toContain('https://openvibe.games/robots.txt')
expect(r.body).toContain('https://openvibe.games/map.json')
ddiff --git a/apps/server/src/net/discovery.ts b/apps/server/src/net/discovery.ts
iindex 294f536..8304372 100644
---- a/apps/server/src/net/discovery.ts
++++ b/apps/server/src/net/discovery.ts
@@@ -32,6 +32,11 @@ interface LlmsOptions {
summary: string
details?: string
sections?: LlmsSection[]
++ /** Link the site's own pages at their Markdown twins (openvibe-shared 4.108.0); `base` is the site's origin. */
++ markdown?: boolean
++ base?: string
++ /** llmstxt.org's "## Optional": what an agent may skip for a shorter context. Written last. */
++ optional?: LlmsSection['links']
}
interface SeoUrl {
loc: string
@@@ -129,6 +134,9 @@ const SITE_DETAILS =
// or llms.txt either: sign-in, the per-user API, operational metrics and the noindex editor app.
const DISALLOW = ['/auth/', '/api/', '/metrics', '/editor']
++/** Public pages with no Markdown twin (served by another server, or not rendered as Markdown): linked as HTML. */
++const TWINLESS = new Set([`${SITE}/steam`, `${SITE}/updates`])
++
/** "2026-09-29" or "2026-09-29T12:00:00Z" as YYYY-MM-DD; null when the value is unusable. */
function dayOf(ts: unknown): string | null {
const m = String(ts ?? '').match(/^(\d{4}-\d{2}-\d{2})/)
@@@ -231,31 +239,25 @@ function publicPageDocs(): PublicPageDoc[] {
function llmsBody(): string {
return seo.llmsTxt({
name: SITE_NAME,
++ // AGT-5: each of Games' own pages is linked at its Markdown twin; `base` keeps Scraplandia (play.openvibe.games)
++ // and other sites' links as they are. /steam and /updates have no twin, so they are linked as HTML.
++ markdown: true,
++ base: SITE,
summary: SITE_SUMMARY,
details: SITE_DETAILS,
sections: [
{
title: 'Public pages',
-- links: publicPageDocs().map((p) => ({ title: p.title, url: p.url, note: p.note })),
++ links: publicPageDocs().map((p) => ({
++ title: p.title,
++ url: p.url,
++ note: p.note,
++ ...(TWINLESS.has(p.url) ? { html: true } : {}),
++ })),
},
{
title: 'Machine-readable',
links: [
-- {
-- title: 'Sitemap',
-- url: `${SITE}/sitemap.xml`,
-- note: 'the public pages above, each with a real lastmod',
-- },
-- {
-- title: 'robots.txt',
-- url: `${SITE}/robots.txt`,
-- note: 'search and AI crawlers are welcome on the public pages',
-- },
-- {
-- title: 'Full text (llms-full.txt)',
-- url: `${SITE}/llms-full.txt`,
-- note: 'this site’s public pages as one text document, for a model to read whole',
-- },
{
title: 'World map (JSON)',
url: `${SITE}/map.json`,
@@@ -264,6 +266,24 @@ function llmsBody(): string {
],
},
],
++ // llmstxt.org's "## Optional": what an agent may skip when it needs a shorter context.
++ optional: [
++ {
++ title: 'Sitemap',
++ url: `${SITE}/sitemap.xml`,
++ note: 'the public pages above, each with a real lastmod',
++ },
++ {
++ title: 'robots.txt',
++ url: `${SITE}/robots.txt`,
++ note: 'search and AI crawlers are welcome on the public pages',
++ },
++ {
++ title: 'Full text (llms-full.txt)',
++ url: `${SITE}/llms-full.txt`,
++ note: 'this site’s public pages as one text document, for a model to read whole',
++ },
++ ],
})
}
ddiff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
iindex 78f65de..4b08814 100644
---- a/pnpm-lock.yaml
++++ b/pnpm-lock.yaml
@@@ -128,13 +128,13 @@ importers:
version: https://codeload.github.com/OpenVibers/OpenVibe.Contracts/tar.gz/refs/tags/v0.222.0
openvibe-publishing:
specifier: https://codeload.github.com/OpenVibers/OpenVibe.Publishing/tar.gz/refs/tags/v1.4.0
-- version: https://codeload.github.com/OpenVibers/OpenVibe.Publishing/tar.gz/refs/tags/v1.4.0(openvibe-sdk@https://codeload.github.com/OpenVibers/OpenVibe.SDK/tar.gz/refs/tags/v0.82.0(@electric-sql/[email protected])([email protected])([email protected]))(openvibe-shared@https://codeload.github.com/OpenVibers/OpenVibe.Shared/tar.gz/refs/tags/v4.107.4)
++ version: https://codeload.github.com/OpenVibers/OpenVibe.Publishing/tar.gz/refs/tags/v1.4.0(openvibe-sdk@https://codeload.github.com/OpenVibers/OpenVibe.SDK/tar.gz/refs/tags/v0.82.0(@electric-sql/[email protected])([email protected])([email protected]))(openvibe-shared@https://codeload.github.com/OpenVibers/OpenVibe.Shared/tar.gz/refs/tags/v4.108.0)
openvibe-sdk:
specifier: https://codeload.github.com/OpenVibers/OpenVibe.SDK/tar.gz/refs/tags/v0.82.0
version: https://codeload.github.com/OpenVibers/OpenVibe.SDK/tar.gz/refs/tags/v0.82.0(@electric-sql/[email protected])([email protected])([email protected])
openvibe-shared:
-- specifier: https://codeload.github.com/OpenVibers/OpenVibe.Shared/tar.gz/refs/tags/v4.107.4
-- version: https://codeload.github.com/OpenVibers/OpenVibe.Shared/tar.gz/refs/tags/v4.107.4
++ specifier: https://codeload.github.com/OpenVibers/OpenVibe.Shared/tar.gz/refs/tags/v4.108.0
++ version: https://codeload.github.com/OpenVibers/OpenVibe.Shared/tar.gz/refs/tags/v4.108.0
pg:
specifier: ^8.23.0
version: 8.23.0
@@@ -1449,9 +1449,9 @@ packages:
pg:
optional: true
-- openvibe-shared@https://codeload.github.com/OpenVibers/OpenVibe.Shared/tar.gz/refs/tags/v4.107.4:
-- resolution: {tarball: https://codeload.github.com/OpenVibers/OpenVibe.Shared/tar.gz/refs/tags/v4.107.4}
-- version: 4.107.4
++ openvibe-shared@https://codeload.github.com/OpenVibers/OpenVibe.Shared/tar.gz/refs/tags/v4.108.0:
++ resolution: {tarball: https://codeload.github.com/OpenVibers/OpenVibe.Shared/tar.gz/refs/tags/v4.108.0}
++ version: 4.108.0
hasBin: true
@@@ -2935,11 +2935,11 @@ snapshots:
ajv: 8.20.0
ajv-formats: 3.0.1([email protected])
-- openvibe-publishing@https://codeload.github.com/OpenVibers/OpenVibe.Publishing/tar.gz/refs/tags/v1.4.0(openvibe-sdk@https://codeload.github.com/OpenVibers/OpenVibe.SDK/tar.gz/refs/tags/v0.82.0(@electric-sql/[email protected])([email protected])([email protected]))(openvibe-shared@https://codeload.github.com/OpenVibers/OpenVibe.Shared/tar.gz/refs/tags/v4.107.4):
++ openvibe-publishing@https://codeload.github.com/OpenVibers/OpenVibe.Publishing/tar.gz/refs/tags/v1.4.0(openvibe-sdk@https://codeload.github.com/OpenVibers/OpenVibe.SDK/tar.gz/refs/tags/v0.82.0(@electric-sql/[email protected])([email protected])([email protected]))(openvibe-shared@https://codeload.github.com/OpenVibers/OpenVibe.Shared/tar.gz/refs/tags/v4.108.0):
dependencies:
openvibe-sdk: https://codeload.github.com/OpenVibers/OpenVibe.SDK/tar.gz/refs/tags/v0.82.0(@electric-sql/[email protected])([email protected])([email protected])
optionalDependencies:
-- 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
openvibe-sdk@https://codeload.github.com/OpenVibers/OpenVibe.SDK/tar.gz/refs/tags/v0.82.0(@electric-sql/[email protected])([email protected])([email protected]):
optionalDependencies:
@@@ -2947,7 +2947,7 @@ snapshots:
iovalkey: 0.4.0
pg: 8.23.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:
dependencies:
jsonwebtoken: 9.0.3
linkedom: 0.18.14