1589 Commits

Author SHA1 Message Date
UncleCode 7e80152142 Merge pull request #2077 from unclecode/release/v0.9.2
Docker Release / docker (push) Has been cancelled
Release Pipeline / release (push) Has been cancelled
release: Crawl4AI v0.9.2
docker-rebuild-v0.9.2 v0.9.2
2026-07-15 10:24:13 +02:00
UncleCode bd8b1302f5 Update README.md
Fix Star history image
2026-07-15 12:28:14 +07:00
ntohidi 055e2ecdc7 release: Crawl4AI v0.9.2
Bump version to 0.9.2 across all references.
Add release notes, demo verification script, and doc updates.

Key highlights:
- Dispatcher: clean up leaked tasks/pages on streaming crawl close (#2071)
- Docker: fix Playground Advanced Config 400 (#2059) and Monitor WebSocket 500 (#2060)
- Docker: include Playwright headless shell (#2067)
- GPU: fix ENABLE_GPU=true builds via CUDA toolkit non-free apt source (#2020)
2026-07-14 11:08:22 +02:00
ntohidi 9e9e826aaa fix(CONTRIBUTORS.md): update section title from 'Core Team' to 'Maintainers' 2026-07-14 10:43:24 +02:00
Nasrin 935f5911ed Merge pull request #2072 from reallav0/agent/cancel-streaming-dispatch-tasks
fix(dispatcher): clean up closed stream tasks
2026-07-14 10:40:55 +02:00
NhatNguyen 9fb2aa8d7a fix(dispatcher): clean up closed stream tasks 2026-07-12 23:17:43 +07:00
ntohidi 9ee84cc277 fix(test): update monitor auth test for WS-safe router config
The router-level token_dep was intentionally removed (PR #2063) because
it broke WebSocket upgrades. Update the structural test to assert the
dependency is absent — auth is enforced by AuthGateMiddleware.
2026-07-11 10:24:38 +02:00
ntohidi a94041c339 fix(test): correct regex group name in headless shell test
The test used group("commands") but the regex defines group("artifacts").
2026-07-11 09:58:53 +02:00
ntohidi f1fdf27e09 Merge branch 'develop' of https://github.com/unclecode/crawl4ai into develop 2026-07-11 09:58:01 +02:00
Nasrin 6357f8530e Merge pull request #2067 from reallav0/agent/include-playwright-headless-shell
fix(docker): include Playwright headless shell
2026-07-11 09:57:44 +02:00
ntohidi d980cede5a Merge branch 'develop' of https://github.com/unclecode/crawl4ai into develop 2026-07-11 09:47:51 +02:00
Nasrin a8ab4cecbc Merge pull request #2063 from Pitchfork-and-Torch/fix/docker-playground-type-and-monitor-ws
fix(docker): playground config type + monitor websocket auth dep
2026-07-11 09:46:40 +02:00
NhatNguyen b4e155152e test(docker): target Playwright cache copy command 2026-07-10 20:51:08 +07:00
NhatNguyen 1ca47f19de fix(docker): include Playwright headless shell 2026-07-10 16:19:56 +07:00
Pitchfork-and-Torch 1a28980713 fix(docker): playground config type + monitor websocket auth dep
Playground Advanced Config always 400'd because /config/dump requires
type but pyConfigToJson only sent code. Include #cfg-type, align stream
fallback with dump shape, and teach shouldUseStream both nestings.

Monitor dashboard WS /monitor/ws 500'd because router-level token_dep is
HTTP Request-only and cannot inject into WebSocket scopes. Auth remains
on AuthGateMiddleware; admin routes keep require_admin.

Fixes #2059
Fixes #2060
2026-07-09 20:54:07 -04:00
ntohidi 0414271da3 Merge remote-tracking branch 'origin/main' into develop 2026-07-09 16:50:02 +02:00
Nasrin 20502898eb chore: add v0.9.1 contributors and security researcher credits (#2062)
Add new contributors (fstark96, TobiasWallura-xitaso, harshmathurx,
RajanChavada, bibi-creator), update existing entries (nightcityblade,
hafezparast) with v0.9.1 PRs, and acknowledge security researchers
Y4tacker and Rafael in SECURITY-CREDITS.md.
2026-07-09 16:46:56 +02:00
Nasrin 202ff7153b Merge pull request #2057 from harshmathurx/fix/gpu-dockerfile-non-free
fix: add non-free apt sources for nvidia-cuda-toolkit on Bookworm
2026-07-09 16:10:34 +02:00
Harsh Mathur 65e0430425 fix: include contrib apt source for CUDA toolkit 2026-07-08 16:43:31 +00:00
UncleCode 987541e441 Merge pull request #2061 from unclecode/release/v0.9.1
Docker Release / docker (push) Has been cancelled
Release Pipeline / release (push) Has been cancelled
release: Crawl4AI v0.9.1
docker-rebuild-v0.9.1 v0.9.1
2026-07-08 16:26:44 +02:00
ntohidi 7d1c9397d1 Merge remote-tracking branch 'origin/main' into release/v0.9.1 2026-07-08 16:06:11 +02:00
ntohidi a9fa82811d release: Crawl4AI v0.9.1
Bump version to 0.9.1 across all references.
Add release notes, demo verification script, and doc updates.

Key highlights:
- PruningContentFilter preserve_classes/preserve_tags whitelist
- 12 bug fixes across Docker, browser, core, and extraction
- lxml ceiling widened to allow 6.x
2026-07-08 16:03:17 +02:00
Nasrin f4cf6fbd7c Merge pull request #1895 from hafezparast/fix/maysam-http-timeout-unit-mismatch-1894
fix: convert page_timeout ms to seconds for aiohttp (#1894)
2026-07-07 18:33:38 +02:00
Nasrin 1c6370bfb2 Merge pull request #1904 from hafezparast/fix/maysam-pruning-preserve-whitelist-1900
feat: add preserve_classes/preserve_tags whitelist to PruningContentFilter (#1900)
2026-07-07 18:28:45 +02:00
Nasrin f992a1b46e Merge pull request #2004 from nightcityblade/fix/issue-1998
fix: stabilize best-first batch ordering
2026-07-07 18:05:52 +02:00
ntohidi 057b45b585 fix(deps): widen lxml ceiling to allow 6.x (fixes #2019)
Relax lxml~=5.3 (>=5.3,<6) to >=5.3,<7 so crawl4ai can co-install
with packages requiring lxml 6.x (e.g. scrapling). Crawl4ai only uses
stable lxml APIs (etree, html, fromstring, CSSSelector) unchanged in 6.x.
2026-07-07 17:54:01 +02:00
Nasrin 4144bc7e02 Merge pull request #2028 from nightcityblade/fix/issue-2025
fix(docker): cap FastAPI below 0.137
2026-07-07 17:46:26 +02:00
Nasrin f05b84e02c Merge pull request #2039 from unclecode/fix/docker-ui-auth-gate
fix(docker): let dashboard/playground load when auth gate is active
2026-07-07 17:40:22 +02:00
ntohidi b8511616bb test(posture): move dashboard/playground to public UI assertions
The auth gate fix (cbf5e5c) intentionally makes UI shell pages load
without credentials. Update the posture-gate tests to match: move
/dashboard/ and /playground/ from PROTECTED_ENDPOINTS to a new
PUBLIC_UI_PATHS list with an explicit 200 assertion.
2026-07-07 17:35:35 +02:00
bibi-creator de634ac7b5 docs(readme): split sponsors into Strategic Partners and Enterprise Sponsors (#2056)
- Replace single Enterprise Sponsors & Partners section with two sections:
  Strategic Partners (Massive) and Enterprise Sponsors (Kipo, Kidocode, Aleph Null)
- Add Become a Strategic Partner or Sponsor CTA with contact email
- Remove CapSolver tip blockquote
- Fix Massive description punctuation
2026-07-07 10:24:01 +02:00
Harsh Mathur 9462ef1177 fix: add non-free apt sources for nvidia-cuda-toolkit on Bookworm
The python:3.12-slim-bookworm base image only has main and
non-free-firmware components enabled. nvidia-cuda-toolkit lives in
non-free, which is not included by default in Debian Bookworm slim
images.

Add deb http://deb.debian.org/debian bookworm non-free to sources.list
before the GPU install block so ENABLE_GPU=true builds don't fail with
"Package has no installation candidate".

Also fixes a stray trailing space after apt-get clean.

Fixes #2020
2026-07-07 06:07:55 +00:00
Nasrin a5edc3e63c Merge pull request #2051 from fstark96/fix/windows-channel-crash
fix: skip channel chromium on Windows to prevent TargetClosedError
2026-07-06 11:43:19 +02:00
bibi-creator 704d0a9073 fix(readme): replace Silver/Bronze sponsors with Massive as first Gold partner (#2052)
- Add Massive (joinmassive.com) as first entry in Enterprise Sponsors table
- Remove Thordata, NstProxy, Scrapeless, and Capsolver rows
- Add locally hosted light/dark logo variants for Massive
- Normalise all sponsor logo heights to 40px for visual consistency
- Remove stray KidoCode text link from Kidocode row
2026-07-06 11:34:45 +02:00
Stark c34ffc0067 fix: skip channel='chromium' on Windows to prevent Chrome exit code 0
BrowserConfig.chrome_channel defaults to 'chromium'. When passed to
playwright.chromium.launch() as channel='chromium', Playwright looks
for a system Chrome installation instead of using the bundled
ms-playwright binary.  On Windows this causes Chrome to exit
immediately with code 0, resulting in:

  TargetClosedError: BrowserType.launch: Target page, context or
  browser has been closed

Skip passing channel when it equals the default 'chromium' value.
2026-07-04 02:28:42 +05:30
Nasrin af608a421d Merge pull request #2047 from TobiasWallura-xitaso/bugfix/docker-supervisord-redis-dirs
fix(docker): use writable directories for supervisord pid and redis data
2026-07-03 12:37:40 +02:00
Nasrin aea193c979 fix(readme): add dark theme logos for Thordata and Aleph Null sponsors (#2049)
Use <picture> with prefers-color-scheme so sponsor logos with dark text
render correctly on GitHub dark mode. Also host Aleph Null logo locally.
2026-07-03 10:49:28 +02:00
Nasrin da5e178649 fix(readme): host sponsor logos locally to fix broken images on GitHub (#2038)
GitHub's Camo proxy fails to render external SVGs from gist URLs and
nstproxy.com. Move Thor Data and nstproxy logos into the repo and also
fix the nstproxy fallback URL typo (ttps -> https).
2026-07-03 08:55:04 +02:00
Tobias Wallura 9b57c5697f fix(docker): use writable directories for supervisord pid and redis data
- supervisord: write pidfile to /tmp (tmpfs) instead of read-only /app
- redis: set working dir to /var/lib/redis (tmpfs) for RDB snapshots

Fixes "could not write pidfile" and "Failed opening temp RDB file" errors
in read-only root filesystem deployment (docker-compose.yml security hardening).

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-07-01 17:50:06 +02:00
Nasrin acd16fa316 Merge pull request #2043 from harshmathurx/fix/2040-redis-auth-hello
fix(docker): authenticate rate limit Redis storage
2026-07-01 12:32:12 +02:00
Nasrin 9b5a090e15 Merge pull request #2042 from RajanChavada/bugfix/remove-dead-code
fix: remove dead code from utils and adaptive_crawler
2026-07-01 10:33:23 +02:00
Harsh Mathur 979e8e6e31 fix(docker): authenticate rate limit redis storage 2026-06-29 17:05:40 +00:00
Rajan Chavada 44968c5fe5 chore: remove dead normalize_url definitions from utils
Two unreachable functions in utils.py:

- The first `normalize_url` (plain urljoin wrapper) was silently shadowed
  by the extended `normalize_url` defined ~20 lines later. Python last-write
  wins, so the first definition was never callable.

- `normalize_url_tmp` was a hand-rolled URL joiner (string split on "/")
  with no callers outside utils.py itself. `urllib.parse.urljoin` already
  covers this correctly.
2026-06-29 11:34:17 -04:00
Rajan Chavada 6a181da92a chore: remove accidental copy of adaptive_crawler
adaptive_crawler copy.py was an uncommitted editor artifact that ended up
tracked in the repo. It is byte-for-byte identical to adaptive_crawler.py
and is not imported anywhere.
2026-06-29 11:34:17 -04:00
ntohidi 511c73c7fd fix(html2text): preserve all attributes on table tags when bypass_tables is enabled (#2007) 2026-06-28 10:24:22 +02:00
Nasrin e1ec7431f2 Merge pull request #2003 from nightcityblade/fix/issue-1999
fix: close browser contexts from snapshot
2026-06-28 09:55:54 +02:00
ntohidi cbf5e5c926 fix(docker): let dashboard/playground load when auth gate is active (#2037)
The AuthGateMiddleware blocked UI static pages with 401 because browsers
cannot attach Authorization headers to top-level navigation. The UI shell
serves no data, so it is safe to load without credentials.

- Add public_prefixes to AuthGateMiddleware for prefix-based path bypass
- Register /dashboard, /playground, /static as public prefixes
- Add token input bar to both playground and dashboard UIs
- Replace all bare fetch() calls with authFetch() that attaches Bearer token
- Append ?token= to monitor WebSocket URL (gate already accepts it for WS)

All API/data routes remain fail-closed behind the auth gate.

Closes #2037
2026-06-27 18:32:48 +02:00
Nasrin 9fe0a7d0aa Merge pull request #2034 from nightcityblade/fix/issue-2027
fix(docker): make read-only tmpfs writable
2026-06-27 13:24:32 +02:00
nightcityblade c8aee8cd67 fix(docker): make read-only tmpfs writable 2026-06-22 23:13:57 +08:00
nightcityblade 9018f60fbb fix(docker): cap FastAPI below 0.137 2026-06-21 11:12:58 +08:00
unclecode c66f3276fd docs(0.9.0): flag secure-by-default changes on the self-hosting page
Docker Release / docker (push) Has been cancelled
Release Pipeline / release (push) Has been cancelled
- Add a 0.9.0 secure-by-default callout + migration-guide link at the top.
- Mark the inline-Python hooks section as removed/replaced by declarative
  hooks (it described an unauthenticated code-execution surface).
- Note the 0.9.0 secure defaults on the embedded security config block.
- Bump docs site_name to v0.9.x.
A fuller per-example rewrite of self-hosting.md will follow.
docker-rebuild-v0.9.0 v0.9.0
2026-06-18 09:28:51 +00:00