feat(soak): --watch=tiled launches N headed host windows
SessionPool accepts headedHostCount; when > 0 it launches a second Chromium in headed mode and creates the first N sessions in it. Joiners (sessions N..count) stay headless in the main browser. Each headed context gets a 960×900 viewport — tall enough to show the full game table (deck + opponent row + own 2×3 card grid + status area) without clipping. Horizontal tiling still fits two windows side-by-side on a 1920-wide display. window.moveTo is kept as a best-effort tile-placement hint, but viewport from newContext() is what actually sizes the window (window.resizeTo is a no-op on modern Chromium / Wayland). Verified: 1-room tiled run plays a full game cleanly; 2-room parallel tiled had one window get closed mid-run, which is consistent with a user manually dismissing a window — tiled mode is a best-effort hands-on debugging aid, not an automation mode. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -101,20 +101,17 @@ async function main(): Promise<void> {
|
||||
|
||||
// Build dependencies
|
||||
const credFile = path.resolve(__dirname, '.env.stresstest');
|
||||
const headedHostCount = watch === 'tiled' ? rooms : 0;
|
||||
const pool = new SessionPool({
|
||||
targetUrl,
|
||||
inviteCode,
|
||||
credFile,
|
||||
logger,
|
||||
headedHostCount,
|
||||
});
|
||||
const coordinator = new RoomCoordinator();
|
||||
const screencaster = new Screencaster(logger);
|
||||
|
||||
if (watch === 'tiled') {
|
||||
logger.warn('tiled_not_yet_implemented');
|
||||
console.warn('Watch mode "tiled" not yet implemented (Task 24). Falling back to none.');
|
||||
}
|
||||
|
||||
const abortController = new AbortController();
|
||||
|
||||
const onSignal = (sig: string) => {
|
||||
|
||||
Reference in New Issue
Block a user