mirror of
https://github.com/garrytan/gstack.git
synced 2026-09-28 07:32:14 +02:00
* fix(browse): prepare reliable cookie import wave for validation * ci: sequence quality and behavior for validation branch * fix(browse): isolate Windows qualification and preserve native diagnostics * test(browse): cover cookie workflow quality and isolate Windows user paths * test(browse): trace native member startup and initialize fresh folders * fix(browse): keep Windows member stdin alive through EOF * fix(browse): latch native timeouts and compare contained Edge startup * test(browse): verify native version metadata and actual Windows argv * test(browse): qualify Dia import on isolated macOS CI * fix(browse): require picker origin for session mutations * fix(browse): bound credential reads through stream completion * test(browse): inspect owned Windows process arguments natively * test(evals): preserve passing coverage during cookie repair reruns * test(browse): isolate Dia qualification in a fresh macOS account * test(browse): pass bounded integer timeouts to native Mac probes * test(browse): distinguish Windows profile initialization from containment * test(browse): await descendant pipe readiness before parent exit * test(browse): initialize and restore isolated macOS Keychain state * test(browse): initialize Windows fixture folders before qualification * test(ci): pin the same Node runtime across Windows checks * test(browse): distinguish native macOS browser preflight stages * test(browse): isolate Windows descendant console lifetime * test(browse): preserve native receipts and identify fixture lock holders * test(browse): prepare dependency resolution before native Mac worker startup * test(ci): include lock and close checks in native diagnostics * test(browse): preserve native owner probe stages and subprocess deadlines * fix(browse): classify Chromium profile-in-use exit precisely * test(browse): retain Mac qualification evidence through cleanup failures * test(browse): bound Mac fixture paths and retire its owned user domain * test(browse): accept vanished fixture entries without weakening cleanup * test(browse): identify probe-created macOS user domains safely * test(browse): observe Mac user domains without targeting them first * test(browse): use passive fresh-user ownership throughout Mac qualification * test(browse): distinguish profile and registered-home Keychain lookups * test(browse): qualify Dia under one registered account home * test(browse): identify Dia startup and owned process-group failures * test(browse): classify bounded Dia startup diagnostics without leaking output * fix(test): preserve native Mac sandboxing and reap owned browser children * fix(browse): preserve Chromium sandboxing for native profile imports * test(browse): inspect signed Mach-O architecture without launching Xcode tools * test(browse): sample pending Dia startup and reap on all cleanup paths * test(browse): compare protected Dia launches in fresh Bun and Node accounts * test(browse): inspect isolated Mac GUI readiness without browser access * v1.90.0.0 fix: bind cookie picker actions to their document * test: validate cookie guards and fit nested launch fixtures * ci: configure the bundled Chromium sandbox helper * fix(browse): classify Playwright authentication timeouts * test: retain bounded Windows lifecycle diagnostics * test(cso): reuse bounded NTFS precision candidates * test(review): handle explicit preservation choices safely * test(browse): remove owned fixture directories with explicit primitives * test(review): distinguish descriptive reuse from edit commitments * test: admit only the approved unscored cookie workflow refusal * test: keep the Office Hours judge mock export-complete * fix: keep dependency-free CI planners independent of the model SDK * test: observe the exact holder after a native fixture unlink failure * fix: start seeded PTY observations at owned readiness * test: acquire identity-bound Windows deletion admission before profile resets * test: preserve qualified Git index bits without authorizing mutations
59 lines
2.2 KiB
Bash
Executable File
59 lines
2.2 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
# Build a Node.js-compatible server bundle for Windows.
|
|
#
|
|
# On Windows, Bun can't launch or connect to Playwright's Chromium
|
|
# (oven-sh/bun#4253, #9911). This script produces a server bundle
|
|
# that runs under Node.js with Bun API polyfills.
|
|
|
|
set -e
|
|
|
|
GSTACK_DIR="$(cd "$(dirname "$0")/../.." && pwd)"
|
|
# Windows (MSYS/Git Bash): convert to a Windows-style path — Bun cannot open
|
|
# MSYS /c/... absolute paths ("FileNotFound opening root directory").
|
|
case "$(uname -s)" in
|
|
MINGW*|MSYS*|CYGWIN*) GSTACK_DIR="$(cygpath -m "$GSTACK_DIR")" ;;
|
|
esac
|
|
SRC_DIR="$GSTACK_DIR/browse/src"
|
|
DIST_DIR="$GSTACK_DIR/browse/dist"
|
|
mkdir -p "$DIST_DIR"
|
|
|
|
echo "Building Node-compatible server bundle..."
|
|
|
|
# Step 1: Transpile server.ts to a single .mjs bundle (externalize runtime deps)
|
|
#
|
|
# Externalize packages with native addons, dynamic imports, or runtime resolution.
|
|
# If you add a new dependency that uses `await import()` or has a .node addon,
|
|
# add it here. Otherwise `bun build --outfile` will fail with
|
|
# "cannot write multiple output files without an output directory".
|
|
bun build "$SRC_DIR/server.ts" \
|
|
--target=node \
|
|
--outfile "$DIST_DIR/server-node.mjs" \
|
|
--external playwright \
|
|
--external playwright-core \
|
|
--external diff \
|
|
--external "bun:sqlite" \
|
|
--external "@ngrok/ngrok"
|
|
|
|
# Step 2: Post-process
|
|
# Replace import.meta.dir with a resolvable reference
|
|
perl -pi -e 's/import\.meta\.dir/__browseNodeSrcDir/g' "$DIST_DIR/server-node.mjs"
|
|
|
|
# Step 3: Create the final file with polyfill header injected after the first line
|
|
{
|
|
head -1 "$DIST_DIR/server-node.mjs"
|
|
echo '// ── Windows Node.js compatibility (auto-generated) ──'
|
|
echo 'import { fileURLToPath as _ftp } from "node:url";'
|
|
echo 'import { dirname as _dn } from "node:path";'
|
|
echo 'const __browseNodeSrcDir = _dn(_dn(_ftp(import.meta.url))) + "/src";'
|
|
echo '{ const _r = createRequire(import.meta.url); _r("./bun-polyfill.cjs"); }'
|
|
echo '// ── end compatibility ──'
|
|
tail -n +2 "$DIST_DIR/server-node.mjs"
|
|
} > "$DIST_DIR/server-node.tmp.mjs"
|
|
|
|
mv "$DIST_DIR/server-node.tmp.mjs" "$DIST_DIR/server-node.mjs"
|
|
|
|
# Step 4: Copy polyfill to dist/
|
|
cp "$SRC_DIR/bun-polyfill.cjs" "$DIST_DIR/bun-polyfill.cjs"
|
|
|
|
echo "Node server bundle ready: $DIST_DIR/server-node.mjs"
|