# Changelog of Image Comparator (`noisy_alchemy/image-comparator`) Actor

- **URL**: https://apify.com/noisy\_alchemy/image-comparator/changelog.md
- **Full Actor documentation**: https://apify.com/noisy\_alchemy/image-comparator.md

## Changelog

All notable changes to this project will be documented in this file.

The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).

### \[1.44] - 2026-09-10

#### Added

- Documented Apify Store subscription tier discount prices (Bronze, Silver, Gold) in README.

### \[1.43] - 2026-09-07

#### Changed

- Improved terminal logging to group source and target images together and display the comparison result on a separate line below them for better readability.

### \[1.42] - 2026-08-24

#### Added

- **Grayscale Mode** (`grayscale` input): Optional boolean flag (default `false`) that converts all images to grayscale before computing embeddings. When enabled, the AI model ignores colour information and compares images based purely on shapes, textures, and structural patterns. Useful when lighting conditions, colour tints, or recolouring cause false negatives in standard (colour) mode.
- Cache keys now include a grayscale suffix (`:gs`) to prevent cache poisoning between colour and grayscale runs of the same images.
- Added `threshold` field to `INPUT_SCHEMA.json` for visibility in the Apify UI.
- In-depth documentation in README explaining when to use and when to avoid grayscale mode.

### \[1.36] - 2026-08-19

#### Added

- Initial release of the Image Comparator actor.
- Support for 1-to-1 and 1-to-N image comparisons.
- Compatibility with both image URLs and base64 encoded images.
- AI-powered visual embeddings to generate similarity scores and match verdicts.

### \[1.35] - 2026-08-19

#### Added

- Feature: automatic proxy IP rotation on 403 retries and specialized browser image headers
- Feature: browserforge header matching, HTTP/2 domain connection pooling, and anti-rate-limit jitter
- Feature: migrate to curl\_cffi for browser TLS impersonation and add custom IDs support for requests and images
- Added automatic documentation for randomized TLS signature rotation, Apify proxy, and custom headers in README
- Added golden rule of rate limits to README
- Added WAF mitigation notes to README
- Added views to dataset schema for presentation UI
- Added output schema with actorOutputSchemaVersion and output field to actor.json

#### Changed

- Migrated to ONNX runtime to improve performance, fix edge cases, and avoid transformers import
- Updated pricing logic for per-comparison charging (min charge of 2 images even on validation failure)
- Enforced minimum charge of 2 images and removed fallback defaults
- Updated README with Actor Start pricing (2.75)
- Docs: Replaced mermaid diagram with native emoji flowchart for Apify support
- Docs: Enhanced README with TOC and better markdown formatting
- Pinned dependencies to fix asyncio/apify syntax bugs

#### Fixed

- Resolved multiple bugs in image comparator
- Removed invalid `?format=json` from output\_schema.json template URL
- Safely imported RequestsError and CurlError across different curl\_cffi versions
- Added missing type string definition to sourceImage in INPUT\_SCHEMA.json
- Fixed ONNX Runtime warnings
- Fixed UI editors for input schema: textfield and stringList
- Fixed output schema validation by adding template string
- Fixed dataset schema format for Apify and renamed schema to fields
- Removed pricing logs and unused constant
- Fixed Dockerfile build by removing obsolete transformers import
