diff --git a/src/servers/permissions/registry.test.ts b/src/servers/permissions/registry.test.ts index 79b614dd..7d5eb58e 100644 --- a/src/servers/permissions/registry.test.ts +++ b/src/servers/permissions/registry.test.ts @@ -23,7 +23,7 @@ import { assertPermissionTotality, isExemptApiPath } from './totality'; // switched off 2026-08-13. It was listed here until 2026-08-18 and made this file's own totality tests // fail for five days — the mirror claiming a provider the server does not serve, which is precisely the // drift the comment above warns about, caught by the check and then ignored because it was "the baseline". -const REAL_WS = ['terminal', 'chat', 'chat-notify', 'task-runner', 'pipeline', 'sidecar']; +const REAL_WS = ['terminal', 'chat', 'chat-notify', 'task-runner', 'pipeline', 'sidecar', 'minesweeper']; const realApi = () => [...new Set(PERMISSIONS.flatMap((c) => c.api))]; const surface = () => ({ apiPrefixes: [...realApi(), '/auth', '/landing-page-data', '/waitlist', '/sidecar'], diff --git a/src/workspaces/officerdev/src/apps/Minesweeper/rfb.ts b/src/workspaces/officerdev/src/apps/Minesweeper/rfb.ts index 276c067b..37b2f0ea 100644 --- a/src/workspaces/officerdev/src/apps/Minesweeper/rfb.ts +++ b/src/workspaces/officerdev/src/apps/Minesweeper/rfb.ts @@ -66,7 +66,10 @@ export class RfbClient { } } - private send(bytes: Uint8Array): void { + // Uint8Array, not plain Uint8Array: the default is Uint8Array, whose + // buffer may be a SharedArrayBuffer, and WebSocket.send takes only BufferSource. Every caller here + // builds its own array, so narrowing costs nothing. The terminal relay narrows the same way. + private send(bytes: Uint8Array): void { if (this.socket.readyState === WebSocket.OPEN) this.socket.send(bytes); }