# Changelog

## [0.0.33] - 2025-12-19

### Fixed

- [RN] Fix Android JSI binding

### Added

- [Feature] Add set timezone offset for date operations
- [Feature] Add selective paths evaluation


## [0.0.32] - 2025-12-12

### Fixed

- [RN] Fix Android build - moved template function outside `extern "C"` block (templates must have C++ linkage)

## [0.0.31] - 2025-11-14

### Fixed

- [validation] Fix validation for disabled field

## [0.0.30] - 2025-11-12

### Fixed

- [core] Fix non mandatory table dependency check

## [0.0.29] - 2025-10-30

### Added

- [core] Implement `format` option on `getSchemaByPaths`, `getEvaluatedSchemaByPaths`

## [0.0.28] - 2025-10-30

### Added

- [core] Implement `getSchemaByPath`, `getSchemaPaths`, `getEvaluatedSchemaByPath`, `getEvaluatedSchemaPaths`
- [bindings] Implement `getSchemaByPath`, `getSchemaPaths`, `getEvaluatedSchemaByPath`, `getEvaluatedSchemaPaths` for C# and FFI
- [bindings] Implement `getEvaluatedSchemaByPath` and `getEvaluatedSchemaPaths` for Web and React Native
- [react-native] Enhance RN build

## [0.0.27] - 2025-10-27

### Changed

- [core] Implement micro optimization

### Fixed

- [react-native] Fix Android build - moved template function outside `extern "C"` block (templates must have C++ linkage)

## [0.0.26] - 2025-10-25

### Changed

- [core] Optimize parallel evaluation

## [0.0.25] - 2025-10-25

### Added

- Comprehensive operator documentation under `docs/`, including quick reference and per-category guides.
- GitHub Pages configuration and workflow to publish documentation from the `docs/` directory.
- Automated release workflow that tags, publishes releases, and triggers binding builds.

### Changed

- README now links directly to the documentation hub.
- Binding build workflow now responds to auto-release completion when uploading artifacts.

## [0.0.24] - 2025-10-24

### Fixed

- [bindings] fix C# & RN FFI binding

## [0.0.23] - 2025-10-24

### Changed

- [core] toggle on/off evaluation cache
- [core] enhance evaluation cache to be smart, purging caches per-changed data key only

## [0.0.22] - 2025-10-24

### Changed

- [core] optimize schema to be immutable and lightly clone, expose getSchemaByPath

### Fixed

- [core] Logic evaluate dependents

## [0.0.21] - 2025-10-24

### Changed

- [core] Refactored `evalDepends` to accept multiple evaluation paths and an option to trigger evaluation automatically from latest data
- [core] Fixed date operations and `evalDepends` path
- [android] Fixed JNI calls in `evaluateDependents`

## [0.0.20] - 2025-10-23

### Added

- [validation] Support for custom evaluation rules with `$evaluation` expressions
  - Rules can have `value.$evaluation` that dynamically evaluates validation logic
  - Supports `message.$evaluation` for dynamic error messages
  - Supports `data[key].$evaluation` for computed error data
  - Supports array format: `"evaluation": [{ "code": "...", "message": "...", "$evaluation": {...} }]`
  - Falsy evaluation results (false, 0, null, empty) trigger validation errors with type "evaluation"

### Changed

- [validation] Enhanced ValidationError structure to match JS version with additional fields:
  - `type` (renamed from `ruleType`, with backwards compatibility in C#)
  - `code` - error code (defaults to `{path}.{ruleName}` if not specified)
  - `pattern` - regex pattern (for pattern rule only)
  - `fieldValue` - actual field value (for pattern rule only)
  - `data` - additional data (for evaluation rules)
- [bindings] Updated C# and FFI bindings to expose new validation error fields

### Performance

- [validation] Major validation optimization: moved heavy operations to schema parse time
  - Fields with rules are collected during schema parsing (one-time cost)
  - Rules with `$evaluation` are evaluated during `evaluate()` so values are available in `evaluated_schema`
  - No tree walking during validation - uses pre-parsed field list
  - Validates only fields that have rules: O(fields_with_rules) vs O(all_fields)
  - Removed 40+ lines of runtime tree-walking code
  - Significant performance improvement for large schemas with few validated fields

## [0.0.19] - 2025-10-23

### Fixed

- [validation] Fix minValue/maxValue validation for schemas without root properties wrapper

## [0.0.18] - 2025-10-23

### Fixed

- [layout] Flag $path, $fullpath on direct layout mapping

## [0.0.17] - 2025-10-23

### Fixed

- [layout] Flag $path, $fullpath, hideLayout on direct layout mapping
- [android] Fix multiple duplicate so files

## [0.0.16] - 2025-10-23

### Fixed

- [layout] Flag $parentHide, $path with dot annotation

## [0.0.15] - 2025-10-23

### Fixed

- Enable Parallel on Native

## [0.0.14] - 2025-10-22

### Fixed

- Fix FFI compile and run logic with context data.

## [0.0.13] - 2025-10-22

### Fixed

- Fix FFI compile and run logic from string.

## [0.0.12] - 2025-10-22

### Added

- Introduced parsed schema cache instantiation path for `JSONEval`, enabling reuse of precompiled logic.
- Added dependency-injected parsed cache support across the C# bindings and reload flows for C#, React Native, and WASM targets.

### Changed

- Refactored FFI and WASM layers to integrate the parsed schema cache pipeline.

### Fixed

- Resolved doctest failures, build warnings, and packaging issues across C#, iOS, Android, and React Native targets.

## [0.0.11] - 2025-10-22

### Added

- Introduced parsed schema cache storage and reload workflows across `JSONEval`.
- Enabled dependency-injected parsed cache support within the C# bindings.
- Added cross-platform cache reload integration for React Native and WASM targets.

### Changed

- Refactored FFI and WASM layers to support cache hydration while reducing duplication.
- Enhanced release pipelines with Linux ARM artifacts and faster packaging steps.

### Fixed

- Resolved packaging and build issues across C#, iOS (XCFramework), Android, and React Native targets.

## [0.0.10] - 2025-10-21

### Added

- Implemented the subform evaluation pipeline.
- Added template string support for options definitions.
- Exposed `get_evaluated_schema_by_path()` and layout resolution helpers.

### Fixed

- Patched C# binding regressions impacting packaging consistency.

## [0.0.9] - 2025-10-20

### Added

- Added MessagePack serialization support for schema and data interchange.

### Fixed

- Corrected sum operator threshold handling and topological sort edge cases.

## [0.0.8] - 2025-10-18

### Changed

- Reverted the C# serializer swap to maintain compatibility with existing bindings.

## [0.0.7] - 2025-10-18

### Added

- Optimized the React Native binding with zero-copy data paths.

### Changed

- Migrated C# bindings to `System.Text.Json` for serialization.

### Fixed

- Stabilized cross-platform build outputs.

## [0.0.6] - 2025-10-18

### Changed

- Improved FFI performance and introduced dedicated C# benchmarks.

## [0.0.5] - 2025-10-17

### Added

- Enabled retrieving schemas without `$params` and accessing evaluated values by path.
- Exposed library version metadata via FFI and C# bindings.
- Added a dedicated C# benchmark suite.

### Fixed

- Resolved evaluation dependency propagation issues and .NET packaging problems.
- Improved comparison tooling and dependency collection accuracy.

## [0.0.3] - 2025-10-16

### Changed

- Updated build pipelines and removed prebuilt artifacts to simplify releases.

### Fixed

- Addressed C# nullable reference warnings, exception constructors, and React Native TypeScript configuration.
- Stabilized FFI builds across targets.

## [0.0.2] - 2025-10-16

### Added

- Added .NET Standard support and Android JNI fixes.

### Fixed

- Patched web binding behaviors and return-operator handling.
- Streamlined CI pipeline and binding packaging flows.

## [0.0.1] - 2025-10-XX

### Added

- Initial release with core evaluation engine
- Multi-platform bindings (Rust, C#, Web, React Native)
- Advanced caching and parallel processing
- Schema validation with detailed error reporting
- CLI tool for testing and benchmarking
- Comprehensive documentation and examples
