CHANGELOG.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).

## [0.9.9] - 2026-02-02

### Added
- Utility functions for cleaning custom properties from the schema:
    - `JSONSchemaEditor.SchemaUtils.clean_custom_property/2`: Removes a specific custom property recursively.
    - `JSONSchemaEditor.SchemaUtils.clean_all_custom_properties/1`: Removes all properties starting with `x-`.

## [0.9.8] - 2026-02-01

### Added
- Support for custom schema extensions (`x-` properties) at any node level
- Automatic type casting for extension values (number, boolean, null)
- Dedicated UI section for managing custom extensions with a new 'tag' icon

## [0.9.7] - 2026-01-27

### Added
- `on_change` callback for real-time schema and data updates
- `header_class` and `toolbar_class` assigns for custom styling
- `on_save` callback support to conditionally render the "Save" button

### Changed
- Refactored CSS to use private variables with fallbacks for better theming support

## [0.9.6] - 2026-01-27

### Changed
- Updated `.jse-host` and `.jse-container` to use `height: 100%` instead of `min-height: 100vh` to better adapt to parent containers

## [0.9.5] - 2026-01-26

### Fixed
- Prevent `on_save` callback in `JSONEditor` when schema validation fails
- Disable "Save" button in `JSONEditor` when schema validation fails

## [0.9.4] - 2026-01-26

### Added
- New `JSONSchemaEditor.JSONEditor` component for editing JSON data according to a schema

## [0.9.3] - 2026-01-22

### Added
- Progressive disclosure UI enhancements for improved skimmability
- Visual highlights for active constraints and logic when sections are collapsed
- Node summaries (property counts, item types) displayed on collapsed nodes
- Error highlighting for collapsed nodes and closed toggle sections
- Automatic expansion of nodes when toggling constraints, logic, or description
- Visual indicator for existing descriptions when collapsed

## [0.9.2] - 2026-01-22

### Changed
- Bump Elixir requirement to ~> 1.18 to use the built-in JSON module

### Fixed
- Improved `SchemaUtils.cast_value/2` to safely handle non-string inputs
- Fixed list index gap handling in `SchemaUtils.update_in_path/3`

## [0.9.1] - 2026-01-22

### Changed
- Improved documentation and usage examples

### Fixed
- Fixed format selection in the UI

## [0.9.0] - 2026-01-22

### Added
- Support for `if`, `then`, `else`, and `not` keywords (conditional logic)
- Progressive disclosure for conditional logic and negation in the UI
- Support for `null` type
- UI state for property ordering

### Changed
- Major internal refactoring: introduced `SchemaMutator` to centralize schema transformations
- Simplified event handling and UI component data flow
- Performance optimization: Pre-compiled regex patterns in `SimpleValidator`
- Performance optimization: Efficient validation error lookup using tuple keys
- Performance optimization: Optimized `SchemaUtils.update_in_path/3` and schema validation logic
- Improved documentation for `Viewer` and `PrettyPrinter` modules
- Expanded test coverage including property-based tests for validator and mutator

### Fixed
- Removed redundant schema update logic when adding properties

## [0.8.0] - 2026-01-21

### Added
- New `JSONSchemaEditor.Viewer` component for standalone JSON display with syntax highlighting
- Structural punctuation highlighting in JSON viewer (braces, brackets, colons, commas)
- Indentation guides (vertical lines) in JSON viewer for better readability

### Changed
- `PrettyPrinter.format/1` now automatically decodes and pretty-prints JSON strings

## [0.7.3] - 2026-01-20

### Fixed
- Fixed Test Lab textarea not stretching to fill its container

## [0.7.2] - 2026-01-20

### Changed
- Increased the default height of the Sample JSON Data textarea in Test Lab

## [0.7.1] - 2026-01-20

### Added
- Quick-set default Schema URI button (inset into the URI input field)

## [0.7.0] - 2026-01-20

### Added
- Test Lab: Live validation of sample JSON against the edited schema
- Built-in `SimpleValidator` to support testing without external dependencies
- Improved button styles and disabled states

## [0.6.0] - 2026-01-20

### Added
- Undo/Redo support for the Visual Editor
- Standardized icons for better UI consistency

## [0.5.0] - 2026-01-20

### Added
- Schema Generation: Infer JSON Schema (Draft 07) from pasted JSON data
- Updated Import Modal to switch between 'Import Schema' and 'Generate from JSON' modes

## [0.4.0] - 2026-01-20

### Added
- Import functionality: Paste JSON from clipboard to hydrate the schema editor
- Import button and modal dialog

## [0.3.1] - 2026-01-19

### Fixed
- Fixed `BadMapError` when updating logic branches (e.g., `anyOf`) by adding list traversal support to `SchemaUtils`
- Removed forced alphabetical sorting of object properties to prevent UI jumping during renaming

## [0.3.0] - 2026-01-15

### Changed
- Major codebase refactor for simplicity and maintainability
- Consolidated and simplified event handlers
- Streamlined validation and schema utility functions
- Improved module documentation and usage examples
- Enhanced UI component data-driven rendering

## [0.2.0] - 2026-01-14

### Added
- Support for $schema field with Draft 07 default
- Tabbed interface with Visual Editor and JSON Preview
- JSON PrettyPrinter for formatted schema display
- Copy to Clipboard functionality for schema export
- Format support for string types (email, date-time, etc.)
- Strict Object Control (additionalProperties: false)
- Composition & Logic support (anyOf, oneOf, allOf)
- Collapsible nodes for better navigation
- Enum support with type-safe casting
- Validation constraints for all types
- Metadata fields (title, description)
- Required fields management
- Expandable description textarea
- Soft encapsulation support for custom classes and attributes

### Changed
- Improved CSS styling and organization
- Refactored component structure for better maintainability
- Enhanced UI/UX with better visual feedback
- Simplified README documentation
- Standardized schema update helpers
- Decoupled UI state from JSON Schema

### Removed
- Tailwind-specific CSS directives
- Redundant type labels from UI
- Packaging guide documentation

## [0.1.0] - 2026-01-14

### Added
- Initial release of JSON Schema Editor.
- Basic recursive schema editing support.
- Real-time validation.
- Phoenix LiveComponent integration.