222 Commits
Author SHA1 Message Date
germondai 6223a4e593 perf: release v1.0.1 - slimmer image, faster boot, firefox telemetry/dead-feature prefs v1.0.1 2026-07-21 18:31:26 +02:00
GermondandGitHub 21ef01ac37 docs(readme): updated sponsor section 2026-07-15 04:19:01 +02:00
GermondandGitHub 95a2d733de Merge pull request #28 from AxLabs/fix/minor-git-clone-change
docs: minor git clone README change
2026-07-13 22:40:58 +02:00
Guil. Sperb MachadoandGitHub c0e423df51 docs: minor git clone README change 2026-07-13 20:31:48 +00:00
GermondandGitHub 1c949f90d8 docs(readme): tighten features for github line width and unify sponsors 2026-07-13 20:17:05 +02:00
GermondandGitHub 2cfa262b8d docs(readme): refresh marketing copy and add sponsor section 2026-07-13 20:08:49 +02:00
germondai f8c90f0c49 docs: replace dragonflydb references with redis 8.8 and reformat markdown 2026-07-11 17:00:29 +02:00
germondai f746206de9 docs: update trawl docker image size in compare table 2026-07-11 16:37:25 +02:00
germondai 438326f584 docs: add Releases & versioning section to README
Explains the SemVer tag -> publish.yml -> Docker tag flow for issue #24,
and how to publish a specific past commit without waiting for main's tip.
v1.0.0
2026-07-10 21:12:39 +02:00
germondai 6f96285544 chore(release): bump to 1.0.0 and backfill versioned changelog history
Splits the single [Unreleased] CHANGELOG block into dated 0.1.0-1.0.0
sections matching the milestone commits being tagged for issue #24
(numeric release tags), and bumps every package.json to 1.0.0.
2026-07-10 21:11:04 +02:00
germondai 040c7352fb chore(deps): bump typescript to v7 and update workspace dependencies 2026-07-10 19:19:35 +02:00
germondai 9311cb38a4 fix(a11y): drop redundant role attribute and update biome lint config 2026-07-10 19:17:37 +02:00
germondai 1f1a45ee0b style: use shallowRef for primitive refs in web nav 2026-07-10 17:35:25 +02:00
germondai c25889493a style: apply biome formatting to hcaptcha audio test script 2026-07-10 16:13:53 +02:00
germondai 4c46f61b8d docs: update README and changelog for the Redis 8.8 revert 2026-07-10 16:11:24 +02:00
germondai 2f658798ae revert(infra): swap Dragonfly back to Redis 8.8 in compose files 2026-07-10 16:11:12 +02:00
germondai 09bdd18b30 docs: update docs and README for Dragonfly and new structure 2026-07-10 08:31:54 +02:00
germondai e28463b214 chore(infra): swap Redis for Dragonfly across compose files 2026-07-10 01:14:48 +02:00
germondai a40eb1708b feat(web): show live GitHub star count in navbar 2026-07-09 17:57:42 +02:00
germondai 613b41ad23 refactor(api): split index.ts into config, deps, routes, and add root status route 2026-07-09 10:40:36 +02:00
germondai 7a36a6c2c9 refactor(tiers): split into tiers/ and utils/, dedupe cookie and network-failure helpers 2026-07-09 03:23:30 +02:00
germondai 25fe9d739a feat(types): centralize BrowserHandle, BrowserFingerprint, SupportedMethod 2026-07-08 20:06:24 +02:00
GermondandGitHub d873e2662c Merge pull request #23 from germondai/22-bug-js-only-challenge-pages-bypass-tier-1-escalation
22 bug js only challenge pages bypass tier 1 escalation
v0.7.0
2026-07-08 20:06:24 +02:00
germondai b72103bba7 chore: add hCaptcha audio solver smoke test script 2026-07-08 19:40:56 +02:00
germondai 4dfe5be680 fix(tiers): escalate JS-shell challenge pages from Tier 1 to browser 2026-07-08 19:40:38 +02:00
germondai 16499ce2fc feat(tiers): add audio STT fallback to hCaptcha solver 2026-07-08 19:40:24 +02:00
GermondandGitHub 9142838c46 Merge pull request #21 from germondai/20-bug-trawl-fails-to-start---issues-with-healtcheck
20 bug trawl fails to start   issues with healtcheck
v0.6.0
2026-07-08 16:05:58 +02:00
germondai 7f2dc4fb8e docs(web): bump docker image size to 1.14 GB in comparison table 2026-07-08 15:48:48 +02:00
germondai 9fb92d9809 fix(docker): bake GeoLite2 mmdb into api image to prevent geoip startup crash 2026-07-08 15:48:48 +02:00
germondai 52cd0ce3ac fix(docker): install curl in api runtime image so healthcheck works 2026-07-08 15:48:48 +02:00
germondai 973505b7f3 chore(browser): suppress noExplicitAny lint in pool.ts 2026-07-08 03:49:12 +02:00
GermondandGitHub a8eaf8f843 Merge pull request #19 from edasque/fix/tier-detection-and-proxy-wiring
Fix silent false-successes in tier detection, add Tier 4 captcha parity, surface proxy/timing info
2026-07-08 03:36:55 +02:00
germondai 1da2a021b4 docs(web): update comparison benchmarks with measured latency + infra specs 2026-07-08 01:25:00 +02:00
Erik Dasque 7d3204351c fix(tiers): recognize more block/error page variants, add Tier 4 captcha parity, surface proxy/timing info
Found while running trawl against a large batch of real-world URLs: several
cases where the API returned 200 with content that was actually a blocked
page, an empty challenge stub, or Firefox's own error page. Each was a
detection gap where a tier didn't recognize the failure and reported it as a
successful scrape.

- Recognize Firefox's about:neterror/about:certerror page (browser never
  reached a server), Cloudflare's static "you have been blocked" WAF-deny
  page, and a lean CF challenge stub (blank title/body, just the bootstrap
  script) — the stub check is gated on page size since the same script
  snippet also appears on ordinary, fully-loaded CF pages as bot-management
  telemetry.
- Wire the existing isBlocked() status-code check (403/429/202) into Tiers 2
  and 3 — previously only Tier 1 checked status code, so a generic non-CF WAF
  deny that escalated to a browser tier was reported as a success.
- Bring Tier 4 up to parity with Tier 3: captcha solving and the same block
  detection. Sites that need Tier 4 for IP reputation can just as easily have
  an in-page captcha widget.
- Add proxyUsed: boolean to the response, set from the actual proxy used by
  the winning tier — previously the only signal was inferring from tier === 4,
  which doesn't distinguish "no proxy" from Tier 3's datacenter proxy.
- Attach the per-tier timings array to thrown errors via a new ScrapeError,
  and return it in /scrape's error response. The array was already being
  built in memory; it just never survived the throw, so failed requests gave
  a flat error string with no way to see which tier failed or why.
- Add process-level uncaughtException/unhandledRejection handlers. One target
  site's page threw a JS error that Camoufox/Firefox reports in a shape
  playwright-core's dispatcher doesn't expect, which crashed the entire
  process and dropped every in-flight request across all clients.
- Update the native API docs for the new response fields and error shape.

All additive — no existing fields changed shape. Full existing test suite
passes (58/58), and this is rebuilt/smoke-tested against latest dev.
2026-07-07 15:58:54 +00:00
germondai d7476274a2 feat(browser): randomize OS/screen/window per browser and match HTTP UA to platform 2026-07-07 02:32:12 +02:00
germondai f44f7511f9 build(api): prune devDeps and impit platform binaries in deps stage 2026-07-06 23:41:53 +02:00
germondai fb620141f6 build(api): pin Camoufox version, strip symbols, prune deps, switch to debian-slim 2026-07-06 23:10:16 +02:00
germondai 1d818f0498 chore: tighten .dockerignore to drop local agent IDE and unused Dockerfile sources 2026-07-06 22:47:37 +02:00
germondai e42582e6b6 ci: use native bun test instead of npm-script wrapper in CI 2026-07-06 20:52:59 +02:00
GermondandGitHub 91b49d593f Merge pull request #18 from germondai/17-improve-browser-pool-avoid-cold-starts-and-pool-exhaustion-429s-from-browser_recycle_after_contexts
Improve browser pool: recycle-on-blocked + cap content processes
2026-07-06 20:47:23 +02:00
germondai 444df08d00 docs: update CHANGELOG, README, and docs for recycle-on-blocked and content-processes 2026-07-06 20:11:08 +02:00
germondai 2560f9157a feat(scripts): add automated soak test for repeatable perf measurement 2026-07-06 20:10:56 +02:00
germondai 4082c0f3c3 ci: run typecheck and tests in CI workflow 2026-07-06 20:10:42 +02:00
germondai bb062c6bd8 test(browser): cover recycle-on-blocked and contentProcesses options 2026-07-06 20:10:19 +02:00
germondai 7b57cd4f80 refactor(tiers): add normalizeSameSite helper for cookie sameSite 2026-07-06 20:10:13 +02:00
germondai da8f9261e1 feat(api): add BROWSER_CONTENT_PROCESSES env var 2026-07-06 20:09:30 +02:00
germondai a307fe835d feat(browser): cap Firefox content processes via dom.ipc.processCount 2026-07-06 20:08:56 +02:00
germondai 1c90df92d0 feat(tiers): recycle browser only when tier returns blocked 2026-07-06 20:08:32 +02:00
germondai 5d0074c540 docs: add changelog entry for browser recycle env var 2026-07-06 19:43:21 +02:00
GermondandGitHub 47fc0fa647 Merge pull request #14 from CoolDotty/codex/fix-browser-process-leak
Recycle browser pool after temporary contexts
2026-07-06 19:41:42 +02:00