merge: origin/main into garrytan/multi-checkpoint-resume

Catches up commit 822e843a from main:
- fix: headed browser auto-shutdown + disconnect cleanup (v0.18.1.0) (#1025)

Version collision resolution:
Both main (822e843a) and my branch (6d879cd4) bumped to v0.18.1.0.
Per CLAUDE.md's CHANGELOG rule ("Merging main does NOT mean adopting main's
version. Your branch still needs its OWN version bump on top"), I preserved
main's v0.18.1.0 entry (headed browser fix) as-is and bumped this branch
to v0.18.2.0. VERSION + package.json updated to match.

CHANGELOG.md conflict resolved: main's v0.18.1.0 entry stays (it landed
first); my context-rot-defense entry moves to v0.18.2.0 at the top.
TODOS.md auto-merged cleanly (main added a new Browse TODO about scoping
sidebar-agent kill to session PID — that stays).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
Garry Tan
2026-04-17 07:06:08 +08:00
9 changed files with 255 additions and 18 deletions
+11 -1
View File
@@ -1,9 +1,19 @@
import { describe, test, expect, beforeEach, afterEach } from 'bun:test';
import { describe, test as _bunTest, expect, beforeEach, afterEach } from 'bun:test';
import { execSync } from 'child_process';
import * as fs from 'fs';
import * as path from 'path';
import * as os from 'os';
// Every test in this file shells out to gstack-config + gstack-relink (bash scripts
// invoking subprocess work). Under parallel bun test load, subprocess spawn contends
// with other suites and each test can drift ~200ms past the 5s default. Bump to 15s.
// Object.assign preserves test.only / test.skip / test.each / test.todo sub-APIs.
const test = Object.assign(
((name: any, fn: any, timeout?: number) =>
_bunTest(name, fn, timeout ?? 15_000)) as typeof _bunTest,
_bunTest,
);
const ROOT = path.resolve(import.meta.dir, '..');
const BIN = path.join(ROOT, 'bin');