Skip to content

feat(build): 🔨 version bump tooling, browser endpoint env var, and docs#229

Merged
justapithecus merged 6 commits intomainfrom
andrew/feat/build/version-bump-and-browser-dx
Mar 14, 2026
Merged

feat(build): 🔨 version bump tooling, browser endpoint env var, and docs#229
justapithecus merged 6 commits intomainfrom
andrew/feat/build/version-bump-and-browser-dx

Conversation

@justapithecus
Copy link
Member

Summary

Adds automated lockstep version bumping, the QUARRY_BROWSER_ENDPOINT environment variable for container-native browser pool configuration, a pre-run health gate for external browsers, and comprehensive multi-crawler deployment documentation. Closes #227.

Highlights

  • task version:bump V=X.Y.Z — single command updates all 7+ lockstep version targets (Go canonical, SDK package.json, CONTRACT_VERSION, golden fixtures, Go test fixtures, CLI_PARITY.json, container image tags), rebuilds SDK and executor bundle, and verifies lockstep. AGENTS.md release checklist simplified to reference the task.
  • QUARRY_BROWSER_ENDPOINT env var — binds to --browser-ws-endpoint flag via urfave/cli EnvVars. Container Compose configs can now set browser endpoints via environment instead of mounting YAML config files.
  • Pre-run health gate — when an external browser endpoint is configured, the runtime verifies reachability via /json/version before launching the executor. Fails fast with a clear error instead of a cryptic executor crash.
  • Multi-crawler docs — new "Multi-crawler with shared browser pool" section in container.md with N-crawler + 1-pool Compose example, deployment pattern decision matrix, and stealth/cross-host limitations.
  • Docs sweep — updated cli.md (transparent vs explicit reuse), configuration.md (env var tables), CONTRACT_CLI.md (health gate semantics), PUBLIC_API.md, CLI_PARITY.json, and README.md (container deployment link).

Test plan

  • task version:bump round-trips cleanly (99.99.99 → 0.13.1, zero drift)
  • Full Go test suite passes (all packages)
  • CLI parity tests pass
  • SDK tests pass (287/287)
  • CI passes on PR
  • Manual: verify QUARRY_BROWSER_ENDPOINT=ws://... quarry run connects to external browser
  • Manual: verify health gate rejects unreachable endpoint with clear message

🤖 Generated with Claude Code

justapithecus and others added 6 commits March 14, 2026 10:52
Automates the 8-step manual version bump checklist into a single
`task version:bump V=X.Y.Z` command. Updates all lockstep targets
(Go canonical, SDK package.json, CONTRACT_VERSION, golden fixtures,
Go test fixtures, CLI_PARITY.json, container image tags), rebuilds
SDK and executor bundle, and verifies lockstep.

CHANGELOG promotion remains manual (hard to automate well).

- Add version:bump task to Taskfile.yaml with inline summary docs
- Simplify AGENTS.md release checklist to reference the task

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
…th gate

Two improvements for external browser pool deployments:

- Bind QUARRY_BROWSER_ENDPOINT env var to --browser-ws-endpoint flag,
  making container Compose configs more natural (no YAML config mount needed)
- Add pre-run health gate: when an external browser endpoint is configured,
  verify reachability via /json/version before launching the executor.
  Catches "pool is down" early with a clear error instead of a cryptic
  executor crash after a full process startup.

Export HealthCheckBrowser (was healthCheck) for use from both the
transparent reuse path and the new pre-run gate.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- container.md: add multi-crawler shared browser pool Compose example,
  decision matrix for deployment patterns, stealth/cross-host limitations
- container.md: update slim image section to use QUARRY_BROWSER_ENDPOINT
  env var and document pre-run health gate behavior
- cli.md: expand browser reuse section with transparent vs explicit modes,
  env var alternative, health check behavior, link to container guide
- configuration.md: add QUARRY_BROWSER_ENDPOINT to flag and env var tables
- CONTRACT_CLI.md: document QUARRY_BROWSER_ENDPOINT and health gate semantics
- PUBLIC_API.md: add env var column, health check note, container guide link
- CLI_PARITY.json: add envVar field to browser-ws-endpoint
- README.md: add Container Deployment link to Key Concepts

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
HealthCheckBrowser() hardcoded 127.0.0.1 for the /json/version probe,
which breaks container topologies where the browser is on a different
host (e.g., ws://chrome:9222, ws://browser-pool:3000). Now extracts
the hostname from the WebSocket URL so the health check reaches the
actual browser endpoint.

Also extend version:bump to cover README.md, PUBLIC_API.md, SUPPORT.md,
and docs/IMPLEMENTATION_PLAN.md — these contain hardcoded version strings
in install commands, image tags, and section headings that were previously
missed during version bumps.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
HealthCheckBrowser() hardcoded http:// for the /json/version probe
and defaulted missing ports to 9222, breaking wss:// endpoints.
Now maps ws→http, wss→https and uses u.Host directly (preserves
explicit port, falls back to scheme default when omitted).

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
…p.sh

The inline shell block in Taskfile.yaml was too large for a YAML file.
Extract to a standalone script; the Taskfile task now just calls it
and chains the rebuild/verify steps.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
@justapithecus justapithecus merged commit bc0ccf7 into main Mar 14, 2026
13 checks passed
@justapithecus justapithecus deleted the andrew/feat/build/version-bump-and-browser-dx branch March 14, 2026 20:50
@justapithecus justapithecus mentioned this pull request Mar 14, 2026
5 tasks
justapithecus added a commit that referenced this pull request Mar 14, 2026
## Summary

Bump lockstep version 0.13.1 → 0.13.2 across all targets, promote
CHANGELOG, and include review fixes from #229.

## Highlights

- **Version bump**: All 17 lockstep targets updated via `task
version:bump V=0.13.2` — Go canonical, SDK package.json,
CONTRACT_VERSION, golden fixtures, Go test fixtures, CLI_PARITY.json,
container image tags, executor bundle, and public-facing docs
- **Browser health gate fix**: Pre-run health check downgraded from
hard-fail to warn-and-continue — no longer false-rejects tokenized or
path-prefixed external browser WS endpoints
- **macOS portability**: Replaced GNU-specific `grep -P` and `sed -i` in
`scripts/version-bump.sh` and `Taskfile.yaml` with POSIX-compatible
alternatives
- **CHANGELOG promoted**: `[Unreleased]` entries moved to `[0.13.2] -
2026-03-14`

## Test plan

- [x] `task version:lockstep` — Go 0.13.2 == SDK 0.13.2
- [x] Full Go test suite passes (all packages)
- [x] SDK tests pass (287/287)
- [x] `bash -n scripts/version-bump.sh` — syntax check passes
- [ ] CI passes

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

feat: support shared browser pool for containerized deployments

1 participant