Skip to content

v0.7.0

Choose a tag to compare

@justapithecus justapithecus released this 10 Feb 21:00
· 169 commits to main since this release
fd1236b

Transparent browser reuse, streaming ingestion, and proxy recency windows

Summary

v0.7.0 adds transparent browser reuse across quarry run invocations — Chromium now persists as a self-managing detached process, eliminating cold-start latency for sequential runs. This release also introduces the streaming ingestion policy for long-running workloads and recency_window proxy pool selection to reduce endpoint reuse.

Highlights

  • Browser reuse: First quarry run launches a persistent Chromium process; subsequent runs reuse it via discovery file, saving ~1.5–3s per invocation. Auto-terminates after idle timeout (default 60s, configurable via QUARRY_BROWSER_IDLE_TIMEOUT). Opt out with --no-browser-reuse.
  • Streaming policy: New streaming ingestion policy combines strict's no-drop guarantee with buffered's batched write efficiency. Configurable via --flush-count and --flush-interval, with capacity-triggered emergency flush and backpressure-based flow control.
  • Proxy recency window: recency_window pool option maintains a ring buffer of recently-used endpoint indices, reducing consecutive reuse. LRU fallback when window ≥ endpoint count.
  • Executor --browser-server mode: Self-managing browser server with idle monitoring via /json/list polling, SIGTERM/SIGINT graceful shutdown, and discovery file cleanup.
  • Metrics: flush_triggers counter with per-trigger-type flush counts for streaming policy observability.
  • Performance: statsRecorder converted to sync/atomic counters — 3.7x improvement in 8-goroutine contention benchmarks.

References

Full Changelog: v0.6.3...v0.7.0

What's Changed

  • docs(contracts): 📝 add streaming policy contract sketch by @justapithecus in #139
  • feat(policy): ✨ add streaming ingestion policy by @justapithecus in #140
  • feat(proxy): ✨ add recency window for random selection by @justapithecus in #143
  • test(policy): ✅ add performance benchmarks for all ingestion policies by @justapithecus in #144
  • docs(contracts): 📝 documentation sweep for v0.7.0 features by @justapithecus in #145
  • chore: 🔖 bump lockstep version to 0.7.0 by @justapithecus in #146
  • fix(docs): 🩹 move v0.7.0 changelog from Unreleased to dated section by @justapithecus in #147
  • chore(agents): 🦺 add changelog and golden fixtures to release checklist by @justapithecus in #148
  • feat(runtime): ✨ add transparent browser reuse across quarry run invocations by @justapithecus in #149
  • docs(changelog): 📝 add browser reuse and release checklist to v0.7.0 by @justapithecus in #150

Full Changelog: v0.6.3...v0.7.0