merge: resolve conflicts with origin/main

- VERSION/package.json: keep v0.3.1
- CHANGELOG: include both v0.3.x entries and v0.0.2 from main
- setup: combine main's smart rebuild logic with our Playwright auto-install
- tests: keep main's CLI server script resolution + dead state file tests,
  fix CONDUCTOR_PORT env leak causing port conflicts

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
Garry Tan
2026-03-13 00:27:50 -07:00
5 changed files with 146 additions and 31 deletions
+20 -5
View File
@@ -13,14 +13,29 @@ ensure_playwright_browser() {
) >/dev/null 2>&1
}
# 1. Build browse binary if needed
# 1. Build browse binary if needed (smart rebuild: stale sources, package.json, lock)
NEEDS_BUILD=0
if [ ! -x "$BROWSE_BIN" ]; then
NEEDS_BUILD=1
elif [ -n "$(find "$GSTACK_DIR/browse/src" -type f -newer "$BROWSE_BIN" -print -quit 2>/dev/null)" ]; then
NEEDS_BUILD=1
elif [ "$GSTACK_DIR/package.json" -nt "$BROWSE_BIN" ]; then
NEEDS_BUILD=1
elif [ -f "$GSTACK_DIR/bun.lock" ] && [ "$GSTACK_DIR/bun.lock" -nt "$BROWSE_BIN" ]; then
NEEDS_BUILD=1
fi
if [ "$NEEDS_BUILD" -eq 1 ]; then
echo "Building browse binary..."
cd "$GSTACK_DIR" && bun install && bun run build
(
cd "$GSTACK_DIR"
bun install
bun run build
)
fi
if [ ! -x "$BROWSE_BIN" ]; then
echo "gstack setup failed: browse binary not found at $BROWSE_BIN" >&2
echo "gstack setup failed: browse binary missing at $BROWSE_BIN" >&2
exit 1
fi
@@ -57,12 +72,12 @@ if [ "$SKILLS_BASENAME" = "skills" ]; then
done
echo "gstack ready."
echo " browse: $GSTACK_DIR/browse/dist/browse"
echo " browse: $BROWSE_BIN"
if [ ${#linked[@]} -gt 0 ]; then
echo " linked skills: ${linked[*]}"
fi
else
echo "gstack ready."
echo " browse: $GSTACK_DIR/browse/dist/browse"
echo " browse: $BROWSE_BIN"
echo " (skipped skill symlinks — not inside .claude/skills/)"
fi