openvibers/openvibe.games Commits
Games: /updates links the site icon (the browser watch saw a /favicon.ico 404) (#80)
Changes
@@@ -29,6 +29,8 @@ describe('GET /updates: the shared update log', () => {expect(r.headers['content-type']).toMatch(/^text\/html/)expect(r.headers['cache-control']).toBe('public, max-age=300')expect(r.body).toContain('<h1>What shipped on OpenVibe.Games</h1>')++ // The site's icon, or the browser asks for /favicon.ico and logs a 404 (browser-watch "errors", 2026-10-15).++ expect(r.body).toContain('<link rel="icon" type="image/svg+xml" href="/favicon.svg" />')expect(r.body).toContain('data-ov-shipped="log" data-service="games"')expect((r.body.match(/<h1[\s>]/g) ?? []).length).toBe(1)expect(r.body).toContain('<link rel="canonical" href="https://openvibe.games/updates">')@@@ -42,6 +42,8 @@ export function updatesHandler(req: NodeRequire = createRequire(import.meta.url)description: `Every change deployed to ${SITE_NAME}, newest first.`,canonical: `${SITE_URL}/updates`,robots: 'index, follow',++ // The site's icon, as on every other page (apps/client/*.html): without it the browser asks for /favicon.ico (404).++ head: '<link rel="icon" type="image/svg+xml" href="/favicon.svg" />',navbar: {service: 'games',apiBase: NETWORK_URL,
@@ -29,6 +29,8 @@ describe('GET /updates: the shared update log', () => {
@@ -29,6 +29,8 @@ describe('GET /updates: the shared update log', () => {
expect(r.headers['content-type']).toMatch(/^text\/html/)
expect(r.headers['content-type']).toMatch(/^text\/html/)
expect(r.headers['cache-control']).toBe('public, max-age=300')
expect(r.headers['cache-control']).toBe('public, max-age=300')
expect(r.body).toContain('<h1>What shipped on OpenVibe.Games</h1>')
expect(r.body).toContain('<h1>What shipped on OpenVibe.Games</h1>')
+ // The site's icon, or the browser asks for /favicon.ico and logs a 404 (browser-watch "errors", 2026-10-15).
+ expect(r.body).toContain('<link rel="icon" type="image/svg+xml" href="/favicon.svg" />')
expect(r.body).toContain('data-ov-shipped="log" data-service="games"')
expect(r.body).toContain('data-ov-shipped="log" data-service="games"')
expect((r.body.match(/<h1[\s>]/g) ?? []).length).toBe(1)
expect((r.body.match(/<h1[\s>]/g) ?? []).length).toBe(1)
expect(r.body).toContain('<link rel="canonical" href="https://openvibe.games/updates">')
expect(r.body).toContain('<link rel="canonical" href="https://openvibe.games/updates">')
@@ -42,6 +42,8 @@ export function updatesHandler(req: NodeRequire = createRequire(import.meta.url)
@@ -42,6 +42,8 @@ export function updatesHandler(req: NodeRequire = createRequire(import.meta.url)
description: `Every change deployed to ${SITE_NAME}, newest first.`,
description: `Every change deployed to ${SITE_NAME}, newest first.`,
canonical: `${SITE_URL}/updates`,
canonical: `${SITE_URL}/updates`,
robots: 'index, follow',
robots: 'index, follow',
+ // The site's icon, as on every other page (apps/client/*.html): without it the browser asks for /favicon.ico (404).
+ head: '<link rel="icon" type="image/svg+xml" href="/favicon.svg" />',
navbar: {
navbar: {
service: 'games',
service: 'games',
apiBase: NETWORK_URL,
apiBase: NETWORK_URL,