# Changelog of Reliable Google Sheets Bridge (`groundedvisionmedia/reliable-sheets-bridge`) Actor

- **URL**: https://apify.com/groundedvisionmedia/reliable-sheets-bridge/changelog.md
- **Full Actor documentation**: https://apify.com/groundedvisionmedia/reliable-sheets-bridge.md

## Changelog

### 0.3.1

- Fixed production upsert matching by normalizing source row mappings—not only their displayed header list—and using an explicit destination grid read.
- Added a stateful regression test for the reported `Michael / OLD CITY` scenario.
- Defined key normalization: NFKC Unicode normalization plus surrounding-whitespace trimming; header names remain case-sensitive; integer-like numeric and string key values match.
- Added tests for single and composite keys, source/destination duplicates, blank keys, numeric/string keys, normalized headers, append, and replace.
- Added `actorVersion` to transfer summaries so cloud runs can prove which build executed.

### 0.3

- Added a credential-free `health_check` default compatible with Apify Store automatic testing.
- Added pay-per-event integration behind the disabled-by-default `RSB_ENABLE_CHARGING` switch.
- Updated to the current Apify Python SDK 4.0.2 charging interfaces.
- Added composite-key upsert and pre-write missing/duplicate-key validation.
- Added strict spreadsheet URL/ID validation and safe A1 tab escaping.
- Added deterministic nested JSON serialization and the Google cell-size guard.
- Added explicit fail-or-truncate row-limit behavior.
- Added header expansion, empty-sheet support, and intentional empty-source replace.
- Added automatic Google API retries and credential-safe error mapping.
- Added 27 automated tests with mocked Google and Apify boundaries.
- Added memory limits, current schemas, deployment instructions, Store copy, pricing analysis, and launch metrics.

### 0.2

- Proved both transfer directions manually.
- Replaced a plain dataset ID field with Apify's dataset resource picker.
- Requested read-only access to the selected dataset under Limited Permissions.
