# Changelog of Agentic Crawler (`hpix/agentic-crawler`) Actor

- **URL**: https://apify.com/hpix/agentic-crawler/changelog.md
- **Full Actor documentation**: https://apify.com/hpix/agentic-crawler.md

## Changelog

### v0.3.0 — Model Optimization (2026-08-16)

#### Changed

- **Switched default models to GPT-5.6 Luna + Qwen3.7 Flash** for 42-74% cost reduction.
  - Scraper agent: `google/gemini-3-flash-preview` → `openai/gpt-5.6-luna` ($0.10/$0.60 per 1M tokens)
  - Page analyzer: `google/gemini-2.5-flash-lite` → `qwen/qwen3.7-flash` ($0.03/$0.13 per 1M tokens)
  - Schema planner: `google/gemini-2.5-flash-lite` → `qwen/qwen3.7-flash` ($0.03/$0.13 per 1M tokens)
- Updated pricing table in `src/models.py` with entries for `gpt-5.6-luna`, `qwen3.7-flash`, and `qwen3.8-27b`.
- Updated cost estimates in README: typical extraction now ~67 units (~$0.07) vs ~403 units (~$0.40).

#### Fixed

- GPT-5.6 Luna no longer gets stuck in navigation loops on complex catalog sites (Gemini would loop for 10+ minutes on maxongroup.us).

#### Added

- `docs/model-benchmark.md` — full benchmark report comparing Gemini, GPT-5.6 Luna, Qwen3.7, Qwen3.8, and MiMo across 6 test sites.
- Dockerfile: added `libgtk-3-0`, `libdbus-glib-1-2`, `libxt6`, `libx11-xcb1`, `libasound2t64`, `xvfb` for Camoufox browser support.

#### Known Issues

- `create_site_knowledge` tool fails with `TypeError: 'NoneType' object is not subscriptable` when `run_context.metadata` is None (pre-existing bug, not model-related).
- MiMo v2.5 Pro (`xiaomi/mimo-v2.5-pro`) does not support vision/image input on OpenRouter — cannot be used as scraper agent.

### v0.2.0 — Epic 5: Knowledge Reuse (2026-08-08)

#### Added

- Selector blueprints: the agent now saves and reuses CSS selectors from successful extractions.
- `get_knowledge_with_blueprint` accepts `task_type` parameter for more accurate matching.
- Blueprint failure tracking resets per navigation (no more premature abandonment across pages).
- `success_count` only increments when blueprint selectors are actually used.

#### Changed

- Removed `soft_budget_units` from input schema (hardcoded internally).
- Removed `hard_budget_units` from Task model (hardcoded as class constant).
- Renamed `get_budget_pct` → `get_budget_percentage`.
- Budget warning now fires at ≥50% (was firing at any spending).
- Moved `import json` to module top-level in planner.py.

### v0.1.0 — Initial Release

#### Features

- AI-powered web scraping with Playwright + Camoufox browser.
- ToolGuard circuit breaker to prevent repeated failed tool calls.
- Per-trace budget guardrail (soft + hard cap).
- Langfuse observability integration.
- Automatic output schema inference.
- Knowledge base for site-specific learning.
