# Changelog of CSV & Excel Data Cleaner | Dedupe & Fix (`makentest/csv-excel-data-cleaner-dedupe-fix`) Actor

- **URL**: https://apify.com/makentest/csv-excel-data-cleaner-dedupe-fix/changelog.md
- **Full Actor documentation**: https://apify.com/makentest/csv-excel-data-cleaner-dedupe-fix.md

## Changelog

All notable changes to this Actor and to its **input schema** are listed here. The input schema is versioned
(`INPUT_SCHEMA_VERSION`, shown in the input form title and written to every `RUN_SUMMARY.json`) with semantic versioning:
a MAJOR bump means an input field was removed/renamed or its meaning changed; MINOR adds optional fields; PATCH changes
only texts/limits. The summary format has its own `summarySchemaVersion`.

### 0.1.1 – input schema 1.1.0

- **Fixed:** the input schema was rejected by Apify's validator (one property had an empty description), which made the Console show
  "No input schema found". All `.actor/*.json` files are now validated against Apify's official JSON schemas in the test suite.
- **Added:** Actor output schema (`.actor/output_schema.json`, required for the Store): the run's Output tab lists cleaned rows,
  clean files, rejected rows, change log, column profile and run summary. Key-value store collections reorganized.
- **Added:** *Data file* upload field (`fileUrl` now uses the Console's file upload; Apify key-value store references are read with the run's
  own credentials) and an optional **Settings file (JSON)** (`settingsFileUrl`) so data and settings can be two uploaded files.
- **Added:** `PUBLISHING.md` (deploy, pricing, publish), `scripts/clean_local.py` (run locally without Apify).
- **Fixed:** memory guard now works on Windows (no `resource` module).

### 0.1.0 – initial release (input schema 1.0.0, summary schema 1.0.0)

- Inputs: pasted text, file URL, Apify dataset, key-value store record; CSV/TSV, XLSX, JSON/JSON Lines.
- Cleaning: trim, collapse spaces, encoding/mojibake repair, smart quotes, invisible characters, header normalization,
  blank/null normalization, find/replace (literal/regex), value casing, include/exclude columns, required columns.
- Typed conversion: currency/percent stripping into true numbers, date normalization (ISO/US/EU), email and phone format flags.
- Duplicates: exact, key-based and fuzzy detection; first/last/most-complete precedence; duplicates quarantined with an audit trail.
- Audit: before/after counts, row-level change log, column profiling report, rejected-row quarantine, `RUN_SUMMARY.json`
  (with disclaimer), preserve-originals option.
- Outputs: dataset (overview view), CSV, JSON, multi-sheet XLSX (Clean, Rejected, Summary, Profile).
- Saved cleaning profiles (by name or inline JSON).
- Pay-per-event charging (`cleaned-record`) with clean stop at the user's max charge limit; dry run is never charged.
- Hard limits: rows, input size, output size, timeout, memory guard; chunked processing.
- Golden-file and edge-case tests.

#### Known gaps / planned

- Excel serial-number dates in CSV, two-digit years and non-English month names are not parsed.
- `.xls` (legacy) input is not supported.
