# Changelog of eCourts Advocate Case Scraper (`codingfrontend/ecourts-advocate-case-scraper`) Actor

- **URL**: https://apify.com/codingfrontend/ecourts-advocate-case-scraper/changelog.md
- **Full Actor documentation**: https://apify.com/codingfrontend/ecourts-advocate-case-scraper.md

## Changelog

### \[1.2.0] - 2026-08-13

#### Changed

- Search mode now expands every matching live state, district, complex, and
  establishment instead of selecting only the first high-coverage complex.
- Complete search results are deduplicated across locations before any dataset
  row is written.
- Retryable failures use the API-equivalent 30-session base budget,
  60-session cascade reserve, five complete retry cycles, and 30-second cycle
  cooldown, using GB, US, and IN as the proxy-country rotation.
- Restored bounded CAPTCHA solving through the configured external service;
  `CAPTCHA_API_KEY` is accepted only as an Actor environment secret.

#### Fixed

- Unsuffixed and `@Y` complex codes without an establishment now expand through
  all live establishments, while full `@N` codes remain concrete locations.
- Failed mid-cascade sessions cannot leave partial rows that are duplicated by
  the next proxy/session attempt.
- Completed locations and deduplicated cases now resume across fresh sessions
  and retry cycles instead of restarting the full cascade.
- Navigation, response-wait, HTTP/2, tunnel, session-invalid, and other API
  transient failures rotate to a fresh sticky session.
- Unreadable, rejected, or incomplete results fail truthfully instead of being
  reported as successful empty datasets.
- Input, dataset, key-value-store schemas, examples, and README now describe
  the actual cascade, solver, proxy, retry, and output behavior.

### \[1.1.0] - 2026-07-25

#### Changed

- Enforced one browser/context/page per run with no parallel sessions.
- Replaced local OCR with the CodingFrontend CAPTCHA solver integration.
- Capped CAPTCHA retries at five and bounded all retry loops.
- Added live app-token propagation and same-session API calls.
- Matched Playwright package and Docker image versions exactly.

#### Fixed

- Resolved the full live complex code instead of fabricating its suffix.
- Added circuit breaking for upstream 405, 429, and 5xx responses.
- Removed sensitive cookie, CAPTCHA, and response-preview logging.
- Declared all emitted search metadata in the dataset schema.
- Added an `OUTPUT` summary for valid zero-result searches and failures.
- Moved location selection, CAPTCHA capture, and search submission to the
  official rendered form on the same page.
- Uses one sticky residential proxy route for the complete browser session.

### \[1.0.0] - 2026-05-20

#### Added

- Initial production release of eCourts Advocate Case Scraper
- Full project structure following Brave actor pattern: errors/, extractors/, filters/, routes/, schema/, utils/
- `validate-datasets.js` for local dataset validation
- Proper `.actor/dataset_schema.json` with typed field definitions and table views
- Storage directories: datasets/default, key\_value\_stores/default, request\_queues/default
- Improved README with Apify-focused documentation

#### Changed

- Refactored code into modular structure
- Improved error handling and input validation
- Updated Dockerfile to use `--chown=myuser:myuser` and `--omit=dev --omit=optional`

#### Fixed

- Dockerfile permissions for build reproducibility
