# Changelog of YouTube Channel ID Extractor (`codingfrontend/youtube-channel-id-extractor`) Actor

- **URL**: https://apify.com/codingfrontend/youtube-channel-id-extractor/changelog.md
- **Full Actor documentation**: https://apify.com/codingfrontend/youtube-channel-id-extractor.md

## Changelog

All notable changes to the YouTube Channel ID Extractor are documented here.

### \[2.1.0] - 2026-08-31

#### QA hardening

- Added strict bounded input validation, canonical request deduplication, shorts/embed/live URL support, five unit tests, and fail-closed dataset validation.
- Corrected the public-link and provenance schemas to match emitted objects.
- Made direct browsing the default, made explicit proxy failures strict, and removed inconsistent non-Chromium fingerprints.
- Removed unused filters, utilities, error modules, and a packaged continuation log; switched Docker installs to deterministic `npm ci`.

### \[2.0.0] - 2026-07-29

#### Changed

- Rebuilt identity resolution around public YouTube channel pages and public video-owner metadata.
- Added strict support for handles, UC IDs, canonical and legacy channel URLs, and public video URLs.
- Added source provenance, rich public evidence, recursive output cleaning, strict zero-result failure, five browser fingerprints, bounded retries, and proxy-session rotation.
- Replaced invalid dataset field definitions with an Apify-compatible dataset view and added recursive local dataset validation.

### \[1.1.0] - 2026-05-22

#### Changed

- Added modular `src/errors/` module (ScraperError, ErrorTypes, ErrorHandler) following Brave actor pattern
- Added modular `src/filters/` module with deduplicateResults and normaliseText utilities
- Updated `src/main.js` to import and use `ErrorHandler` in `failedRequestHandler`
- Structured code into separate concerns: extractors, routes, schema, utils, errors, filters
- Improved `failedRequestHandler` to log structured error objects via ErrorHandler.toJSON()

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

#### Added

- Initial production release with Playwright-based scraping
- Modular project structure: `src/main.js`, `src/routes.js`, `src/routes/handlers.js`, `src/extractors/`, `src/schema/`, `src/utils/`
- `.actor/actor.json`, `input_schema.json`, `dataset_schema.json` for Apify platform compatibility
- `validate-datasets.js` for local dataset output validation
- `Dockerfile` with Chrome-based Playwright image
- `README.md` with full Apify usage guide
