a websocket byte relay onto x11vnc's tcp socket, the same shape as the terminal's relay onto the pty sidecar. this is the piece plugins/desktop could not have: a plugin cannot claim a websocket provider. the rfb client is ours rather than vendored novnc — raw and copyrect, one pixel format we dictate so a rectangle memcpys into ImageData. we control the server, so the other eight encodings are surface we would carry and never run. execution, so owner-only: wine runs as the owner, which makes the game's menus file dialogs over the owner's home. two bugs worth keeping. the token key is BEARER_TOKEN, not token, so the upgrade 401'd before any rfb byte moved. and the /status health check opened a tcp connection to prove liveness — libvncserver blocks its accept loop peeking for a websocket handshake, so a polled health check filled the backlog and locked out the real viewer. a liveness check must not be indistinguishable from a client; it reads /proc/net/tcp now. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
10 lines
290 B
TypeScript
10 lines
290 B
TypeScript
import type { LayoutNode } from 'officerdev';
|
|
|
|
// One panel. The board is 152x214 and there is nothing to put beside it — a split here would be a
|
|
// second panel of empty space.
|
|
export const defaultLayout: LayoutNode = {
|
|
type: 'panel',
|
|
id: 'minesweeper',
|
|
appType: 'minesweeper',
|
|
};
|