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

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

## Changelog

### 1.2.1 - 2026-08-31

- Reject invalid mode, required search fields, and inconsistent location hierarchy before creating a proxy or browser session.
- Omit unavailable optional values recursively from case dataset rows and exclude local QA/generated files from cloud build contexts.

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

#### Changed

- Restored the configured external CAPTCHA solver; `CAPTCHA_API_KEY` is now
  required as an Actor environment secret and is redacted from diagnostics.
- Search location fields are optional and expand into a complete sequential
  state/district/complex/establishment cascade.
- Added the API-equivalent 30-session base budget, 60-session cascade reserve,
  five complete retry cycles, and 30-second cycle cooldown; the default Apify
  Proxy country rotation remains GB, US, then IN.
- Aligned inputs, output schemas, dataset location provenance, and Delhi/Saket
  examples with the current party-search behavior.

#### Fixed

- Searches every concrete location instead of returning the first location's
  cases, and deduplicates repeated CNR/view/fallback identities.
- Preserves successful cascade locations across proxy rotation and defers
  dataset writes so retries cannot emit duplicate rows.
- Resolves unsuffixed complex values and expands `@Y` complexes without an
  establishment while treating complete `@N` values as concrete.
- Distinguishes valid empty searches, partial cascades, and complete upstream
  failures in `OUTPUT`.
- Retries navigation, response-wait, HTTP/2, tunnel, session-invalid, and other
  transient failures handled by the API cascade.

### \[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.
- Limited recovery to one sequential same-page session reset.
- Removed sensitive CAPTCHA and response-preview logging.
- Declared `searchEstCode` 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 Party 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
