mirror of
https://github.com/garrytan/gstack.git
synced 2026-09-22 21:00:51 +02:00
131 lines
4.9 KiB
Markdown
131 lines
4.9 KiB
Markdown
<!-- GENERATED by scripts/gstack2/generate-skill-tree.ts; do not edit. -->
|
|
<!-- GSTACK2_PROVENANCE source=setup-browser-cookies/SKILL.md.tmpl base=bb57306d98c97011b0919c6132705a15b1579781 blob=f812d9f56f27c32fb5f102083bbe418344c1a652 baseline_render_sha256=22b03503fa8ba63de98866d64ab0563291f4b41e1577c8022d09add3e0bdb59c ported_render_sha256=8ab5dfb05136a637ce41067d9e50ade76c4a8b957587e4eab134eaa260b29ac3 disposition=BUG_FIX -->
|
|
<!-- GSTACK2_ROUTING replacement=$qa --mode Report --module setup-browser-cookies visibility=internal depth=standard mutation=configuration web=local-browser -->
|
|
|
|
<!-- GSTACK2_LEGACY_BODY_START source=setup-browser-cookies -->
|
|
## Host-neutral runtime bindings
|
|
|
|
These assignments select stable paths only; they do not install anything or grant consent:
|
|
|
|
```bash
|
|
GSTACK_HOME="${GSTACK_HOME:-$HOME/.gstack}"
|
|
GSTACK_ROOT="$GSTACK_HOME"
|
|
GSTACK_STATE_ROOT="$GSTACK_HOME"
|
|
GSTACK_BIN="$GSTACK_HOME/bin"
|
|
B="$GSTACK_BIN/browse"
|
|
D="$GSTACK_BIN/gstack-design"
|
|
P="$GSTACK_BIN/make-pdf"
|
|
```
|
|
# Setup Browser Cookies
|
|
|
|
Import logged-in sessions from your real Chromium browser into the headless browse session.
|
|
|
|
## CDP mode check
|
|
|
|
First, check if browse is already connected to the user's real browser:
|
|
```bash
|
|
$B status 2>/dev/null | grep -q "Mode: cdp" && echo "CDP_MODE=true" || echo "CDP_MODE=false"
|
|
```
|
|
If `CDP_MODE=true`: tell the user "Not needed — you're connected to your real browser via CDP. Your cookies and sessions are already available." and stop. No cookie import needed.
|
|
|
|
## How it works
|
|
|
|
1. Find the browse binary
|
|
2. Run `cookie-import-browser` to detect installed browsers and open the picker UI
|
|
3. User selects which cookie domains to import in their browser
|
|
4. Cookies are decrypted and loaded into the Playwright session
|
|
|
|
## Steps
|
|
|
|
### 1. Find the browse binary
|
|
|
|
## SETUP (run this check BEFORE any browse command)
|
|
|
|
```bash
|
|
_ROOT=$(git rev-parse --show-toplevel 2>/dev/null)
|
|
B=""
|
|
[ -n "$_ROOT" ] && [ -x "$GSTACK_BIN/browse" ] && B="$GSTACK_BIN/browse"
|
|
[ -z "$B" ] && B="${GSTACK_HOME:-$HOME/.gstack}/bin/browse"
|
|
if [ -x "$B" ]; then
|
|
echo "READY: $B"
|
|
else
|
|
echo "NEEDS_SETUP"
|
|
fi
|
|
```
|
|
|
|
If `NEEDS_SETUP`:
|
|
1. Tell the user: "gstack browse needs a one-time build (~10 seconds). OK to proceed?" Then STOP and wait.
|
|
2. Read `references/RUNTIME.md` and follow its explicit capability bootstrap. Never assume a standard-installed skill directory contains `./setup`.
|
|
3. If `bun` is not installed:
|
|
```bash
|
|
if ! command -v bun >/dev/null 2>&1; then
|
|
BUN_VERSION="1.3.10"
|
|
BUN_INSTALL_SHA="bab8acfb046aac8c72407bdcce903957665d655d7acaa3e11c7c4616beae68dd"
|
|
tmpfile=$(mktemp)
|
|
curl -fsSL "https://bun.sh/install" -o "$tmpfile"
|
|
actual_sha=$(shasum -a 256 "$tmpfile" | awk '{print $1}')
|
|
if [ "$actual_sha" != "$BUN_INSTALL_SHA" ]; then
|
|
echo "ERROR: bun install script checksum mismatch" >&2
|
|
echo " expected: $BUN_INSTALL_SHA" >&2
|
|
echo " got: $actual_sha" >&2
|
|
rm "$tmpfile"; exit 1
|
|
fi
|
|
BUN_VERSION="$BUN_VERSION" bash "$tmpfile"
|
|
rm "$tmpfile"
|
|
fi
|
|
```
|
|
|
|
### 2. Open the cookie picker
|
|
|
|
```bash
|
|
$B cookie-import-browser
|
|
```
|
|
|
|
This auto-detects installed Chromium browsers and opens
|
|
an interactive picker UI in your default browser where you can:
|
|
- Switch between installed browsers
|
|
- Search domains
|
|
- Click "+" to import a domain's cookies
|
|
- Click trash to remove imported cookies
|
|
|
|
Tell the user: **"Cookie picker opened — select the domains you want to import in your browser, then tell me when you're done."**
|
|
|
|
### 3. Direct import (alternative)
|
|
|
|
If the user specifies a domain directly (e.g., `$qa --mode Report --module setup-browser-cookies github.com`), skip the UI:
|
|
|
|
```bash
|
|
$B cookie-import-browser comet --domain github.com
|
|
```
|
|
|
|
Replace `comet` with the appropriate browser if specified.
|
|
|
|
### 4. Verify
|
|
|
|
After the user confirms they're done:
|
|
|
|
```bash
|
|
$B cookies
|
|
```
|
|
|
|
Show the user a summary of imported cookies (domain counts).
|
|
|
|
## Notes
|
|
|
|
- On macOS, the first import per browser may trigger a Keychain dialog — click "Allow" / "Always Allow"
|
|
- On Linux, `v11` cookies may require `secret-tool`/libsecret access; `v10` cookies use Chromium's standard fallback key
|
|
- Cookie picker is served on the same port as the browse server (no extra process)
|
|
- Only domain names and cookie counts are shown in the UI — no cookie values are exposed
|
|
- The browse session persists cookies between commands, so imported cookies work immediately
|
|
<!-- GSTACK2_LEGACY_BODY_END source=setup-browser-cookies -->
|
|
|
|
<!-- GSTACK2_BUG_FIX_START pr=679 anchor=GSTACK2_FIX_679_MATCH_USER_LANGUAGE -->
|
|
## Upstream judgment port: PR #679
|
|
|
|
[Match the user language](https://github.com/garrytan/gstack/pull/679)
|
|
|
|
### User-language rule
|
|
|
|
Write questions, progress updates, reports, and artifacts in the language used by the user. Source material, code identifiers, commands, and quotations may remain in their original language when translating them would reduce accuracy.
|
|
<!-- GSTACK2_BUG_FIX_END pr=679 -->
|