> ## Documentation Index
> Fetch the complete documentation index at: https://docs.joyfill.io/llms.txt
> Use this file to discover all available pages before exploring further.

# Release Notes

> Complete changelog of Joyfill Kotlin Multiplatform SDK releases

## 2.0.0-RC23

<span style={{display: 'inline-block', padding: '4px 12px', border: '1.5px solid #f97316', borderRadius: '6px', color: '#f97316', fontWeight: '600', fontSize: '13px', marginBottom: '12px', marginTop: '16px'}}>CHANGED</span>

* Public API — grouped related `Form` / `DocumentEditor` parameters into focused config objects (following the `DecoratorConfig` pattern), aligned parameter names with the iOS SDK, and consolidated everything under a single swappable config instance
* Formula Engine — stabilized formula behavior across Android, iOS, and Web SDKs to ensure consistent results on all platforms

## 2.0.0-RC22

<span style={{display: 'inline-block', padding: '4px 12px', border: '1.5px solid #f97316', borderRadius: '6px', color: '#f97316', fontWeight: '600', fontSize: '13px', marginBottom: '12px', marginTop: '16px'}}>CHANGED</span>

* Delete Page Dialog — simplified the confirmation message to "Are you sure you want to delete this page?" to match iOS
* Date Columns — removed automatic local time zone assignment to row data when date columns are present, matching iOS behavior
* Row Creation Change Logs — rows added while a filter is active now report the injected filter values instead of column defaults
* Filter Dialogs — improved IME handling (eliminated UI jitter while typing) and rendering performance for large filter lists
* Multi-Select — refined option spacing and reduced the selected-state corner radius
* Table Preview — improved layout, cell/icon alignment, and divider styling

<span style={{display: 'inline-block', padding: '4px 12px', border: '1.5px solid #f97316', borderRadius: '6px', color: '#f97316', fontWeight: '600', fontSize: '13px', marginBottom: '12px', marginTop: '16px'}}>FIXED</span>

* Collection Field Validation — nested child table invalidity is now surfaced in the validation output (`RowValidity` / `ComponentValidity`), so consumers can navigate to the failing nested field via `goto(rowId, columnId)`
* Page Duplication — fixed an out-of-memory crash when duplicating a page with \~11k rows multiple times
* Date Picker — dismissing or clearing the date picker now correctly fires an `onBlur` event
* Read-Only Image Field — focus state no longer updates on read-only image fields
* Table Close — focus is now cleared before the table closes, preventing the cell from being blurred after the table
* Image Dialog — fixed mismatched delete/upload button heights by aligning their padding

## 2.0.0-RC21

<span style={{display: 'inline-block', padding: '4px 12px', border: '1.5px solid #f97316', borderRadius: '6px', color: '#f97316', fontWeight: '600', fontSize: '13px', marginBottom: '12px', marginTop: '16px'}}>FIXED</span>

* Page hidden state regression — pages were incorrectly losing their hidden state

## 2.0.0-RC20

<span style={{display: 'inline-block', padding: '4px 12px', border: '1.5px solid #10b981', borderRadius: '6px', color: '#10b981', fontWeight: '600', fontSize: '13px', marginBottom: '12px'}}>ADDED</span>

* JSON Schema — added decorator definitions to the validation schema

<span style={{display: 'inline-block', padding: '4px 12px', border: '1.5px solid #f97316', borderRadius: '6px', color: '#f97316', fontWeight: '600', fontSize: '13px', marginBottom: '12px', marginTop: '16px'}}>CHANGED</span>

* Collection Field — performance optimization

<span style={{display: 'inline-block', padding: '4px 12px', border: '1.5px solid #f97316', borderRadius: '6px', color: '#f97316', fontWeight: '600', fontSize: '13px', marginBottom: '12px', marginTop: '16px'}}>FIXED</span>

* `editor.goto` with `focus=true` not focusing cells on table and collection fields

## 2.0.0-RC19

<span style={{display: 'inline-block', padding: '4px 12px', border: '1.5px solid #f97316', borderRadius: '6px', color: '#f97316', fontWeight: '600', fontSize: '13px', marginBottom: '12px', marginTop: '16px'}}>CHANGED</span>

* Row Delete Payload — `rowDelete` change logs now include the deleted row data alongside the existing params
* Bulk Edit Change Logs — bulk edits now emit a single change event containing a list of change logs instead of one event per individual change
* Performance — general performance improvements, including a fix for an out-of-memory crash.

<span style={{display: 'inline-block', padding: '4px 12px', border: '1.5px solid #f97316', borderRadius: '6px', color: '#f97316', fontWeight: '600', fontSize: '13px', marginBottom: '12px', marginTop: '16px'}}>FIXED</span>

* Signature Field Readonly — empty signature fields can no longer be opened or edited when the form/field is in readonly mode
* Row Decorator Column — now appears whenever decorator data exists, even when the `decorate` flag is missing

## 2.0.0-RC18

<span style={{display: 'inline-block', padding: '4px 12px', border: '1.5px solid #10b981', borderRadius: '6px', color: '#10b981', fontWeight: '600', fontSize: '13px', marginBottom: '12px'}}>ADDED</span>

* Decorator Icons — added support for two new decorator icons: `pencil` and `pen-to-square`

<span style={{display: 'inline-block', padding: '4px 12px', border: '1.5px solid #f97316', borderRadius: '6px', color: '#f97316', fontWeight: '600', fontSize: '13px', marginBottom: '12px', marginTop: '16px'}}>CHANGED</span>

* Row Decorator Column — improved the UI of inline decorators with horizontal scroll, fixed curvature bugs, and optimized performance
* Chart Blank Coordinates — blank x/y values on chart points are now saved as `null` and displayed as empty in the UI, instead of being coerced to `0`; schema bumped to 1.0.1 to allow nullable coordinates

<span style={{display: 'inline-block', padding: '4px 12px', border: '1.5px solid #f97316', borderRadius: '6px', color: '#f97316', fontWeight: '600', fontSize: '13px', marginBottom: '12px', marginTop: '16px'}}>FIXED</span>

* Decorators Visibility & Interaction — decorators are now visible and interactive on readonly forms
* Duplicate Page Without Values — duplicating a page without values now keeps read-only and display-text field values intact

## 2.0.0-RC17

<span style={{display: 'inline-block', padding: '4px 12px', border: '1.5px solid #10b981', borderRadius: '6px', color: '#10b981', fontWeight: '600', fontSize: '13px', marginBottom: '12px'}}>ADDED</span>

— Added support for row and cell-specific decorators in table and collection fields, accessible via scoped path targeting.

## 2.0.0-RC16

<span style={{display: 'inline-block', padding: '4px 12px', border: '1.5px solid #10b981', borderRadius: '6px', color: '#10b981', fontWeight: '600', fontSize: '13px', marginBottom: '12px'}}>ADDED</span>

* `editor.validate(path)` — validates a specific page, field, row, or cell by path
  * phases: page → field → row → cell, each level narrows the scope
* Dynamic decorator manipulation — `editor.decorators` now supports adding, updating, and removing decorators on fields, rows, and cells via slash-separated paths:

```kotlin theme={null}
// path formats: "pageId/fieldPositionId" | "pageId/fieldPositionId/rowId" | "pageId/fieldPositionId/rowId/columnId"
val path = "$pageId/$fieldPositionId/$rowId/$columnId"

val decorator = Decorator().apply {
    icon = "comment"
    label = "Review"
    color = "#3B82F6"
    action = "open_review"
}

// Add
documentEditor.decorator.add(path, decorator)

// Read
val decorators = documentEditor.decorator.list(path)

// Update (matched by action)
decorator.label = "Open Review"
documentEditor.decorator.update(path, action = "open_review", decorator = decorator)

// Remove
documentEditor.decorator.remove(path, action = "open_review")
```

<span style={{display: 'inline-block', padding: '4px 12px', border: '1.5px solid #f97316', borderRadius: '6px', color: '#f97316', fontWeight: '600', fontSize: '13px', marginBottom: '12px', marginTop: '16px'}}>FIXED</span>

* Date column filter UI now respects the column's configured format (e.g., time-only columns show only time in the filter UI instead of the full date+time)
* `onChange` and `onFieldChange` now fire correctly for:
  * clearing date cells
  * page focus/blur events
  * row actions (delete/move up/move down/insert below)
* `onFocus` now fires correctly for:
  * dropdown field and cell
  * date cell (on open/clear)
  * signature cell
* `onBlur` now fires correctly for:
  * dropdown field and cell
  * multi-select cell
  * signature cell
* Table row form is now visible when a column has a long title

## 2.0.0-RC15

<span style={{display: 'inline-block', padding: '4px 12px', border: '1.5px solid #10b981', borderRadius: '6px', color: '#10b981', fontWeight: '600', fontSize: '13px', marginBottom: '12px'}}>ADDED</span>

* Date column filtering support in table and collection fields
* `reason` property on the validation result returned by `field.validate()` — a list of strings describing why the field is invalid (empty list when valid)
* Per-page action controls — page objects now support configuration properties that allow disabling deletion and/or duplication on a per-page basis; pages with disabled actions hide the corresponding buttons in the paginator UI

<span style={{display: 'inline-block', padding: '4px 12px', border: '1.5px solid #f97316', borderRadius: '6px', color: '#f97316', fontWeight: '600', fontSize: '13px', marginBottom: '12px', marginTop: '16px'}}>FIXED</span>

* `onFieldChange` not being emitted when `inlineFields` mode was enabled for signature and image fields
* `onFieldChange` not being emitted when adding a new row to a table or collection field
* Row decorator `onChange` event now includes the `parentPath` property as expected
* Form flickering when the keyboard is open and the user is typing inside a cell of a table or collection field

## 2.0.0-RC14

<span style={{display: 'inline-block', padding: '4px 12px', border: '1.5px solid #10b981', borderRadius: '6px', color: '#10b981', fontWeight: '600', fontSize: '13px', marginBottom: '12px'}}>ADDED</span>

* Decorators: integrators can attach icons or text to fields or rows; tapping them fires a custom event to the host application, enabling custom UI actions
* `inlineFields` parameter on the `Form` composable: when `true`, openable fields (table, collection, image, signature, chart) expand inline within the existing view instead of opening a modal or new screen, giving the host application full control of the UI layer
* Single field validation via `field.validate()`

<span style={{display: 'inline-block', padding: '4px 12px', border: '1.5px solid #f97316', borderRadius: '6px', color: '#f97316', fontWeight: '600', fontSize: '13px', marginBottom: '12px', marginTop: '16px'}}>CHANGED</span>

* Changelog entries now include a `type` property (mirrors `target`, e.g. `"field.update"`) for consistency with the web SDK

<span style={{display: 'inline-block', padding: '4px 12px', border: '1.5px solid #f97316', borderRadius: '6px', color: '#f97316', fontWeight: '600', fontSize: '13px', marginBottom: '12px', marginTop: '16px'}}>FIXED</span>

* `goto()` now correctly returns a failure result when a valid row ID is provided but the specified `columnId` does not exist
* Multi-select field options with long text are now displayed in full instead of being truncated
* `DateField` clearing now correctly fires `onFieldChange` from the form in addition to `onChange` from the `DocumentEditor`
* Column order in field validation results for table and collection fields now matches the defined column order

## 2.0.0-RC13

<span style={{display: 'inline-block', padding: '4px 12px', border: '1.5px solid #10b981', borderRadius: '6px', color: '#10b981', fontWeight: '600', fontSize: '13px', marginBottom: '12px'}}>ADDED</span>

* Required field validation output now includes rows and cells for validation issues
* Table/collection validation now follows proper hierarchy — validation depends on row validity, not only whether the field is empty or has no rows
* External Navigation Pt.3 — cell navigation and focus highlighting: `goto` supports `columnId` for row-form cell targeting and `focus: true` for auto-focus with highlighted border styles
* Conditional logic on columns — show and hide table/collection columns based on other field values (same pattern as existing conditional logic)

## 2.0.0-RC12

<span style={{display: 'inline-block', padding: '4px 12px', border: '1.5px solid #10b981', borderRadius: '6px', color: '#10b981', fontWeight: '600', fontSize: '13px', marginBottom: '12px'}}>ADDED</span>

* Row metadata support to link rows to pages, fields, or other rows
* Page navigation events (`page.focus`, `page.blur`)
* Row-level navigation via `goto(pageId/fieldPositionId/rowId, { open: true })`

<span style={{display: 'inline-block', padding: '4px 12px', border: '1.5px solid #f97316', borderRadius: '6px', color: '#f97316', fontWeight: '600', fontSize: '13px', marginBottom: '12px', marginTop: '16px'}}>FIXED</span>

* Formula references are now correctly updated when duplicating pages
* Improved stability when navigating between rows

## 2.0.0-RC11

<span style={{display: 'inline-block', padding: '4px 12px', border: '1.5px solid #10b981', borderRadius: '6px', color: '#10b981', fontWeight: '600', fontSize: '13px', marginBottom: '12px'}}>ADDED</span>

* External navigation API — added `goto("pageId/fieldPositionId")` function to externally control which page, field is displayed
* Page deletion confirmation dialog — when page deletion is enabled, a confirmation dialog is shown before deletion
* Page deletion and duplication configuration options — both features can now be enabled/disabled via configuration

<span style={{display: 'inline-block', padding: '4px 12px', border: '1.5px solid #f97316', borderRadius: '6px', color: '#f97316', fontWeight: '600', fontSize: '13px', marginBottom: '12px', marginTop: '16px'}}>CHANGED</span>

* UI improvements for better user experience

<span style={{display: 'inline-block', padding: '4px 12px', border: '1.5px solid #f97316', borderRadius: '6px', color: '#f97316', fontWeight: '600', fontSize: '13px', marginBottom: '12px', marginTop: '16px'}}>FIXED</span>

* Fields without associated fieldPosition are now filtered out from validation output
* Crash scenario with conditional logic when duplicating a page

## 2.0.0-RC10

<span style={{display: 'inline-block', padding: '4px 12px', border: '1.5px solid #10b981', borderRadius: '6px', color: '#10b981', fontWeight: '600', fontSize: '13px', marginBottom: '12px'}}>ADDED</span>

* (JF-243) Support for Page Deletion
* Enhanced Page Duplication UI
* Single Click Option to Open Row Form — when enabled, users can open the row form with a single click instead of multiple clicks
* Loaders while filtering for better UX feedback
* Bulk row actions while filtering — users can now select all rows, bulk edit, or delete all filtered rows
* Additional tests for formulas and various components to ensure stability

<span style={{display: 'inline-block', padding: '4px 12px', border: '1.5px solid #f97316', borderRadius: '6px', color: '#f97316', fontWeight: '600', fontSize: '13px', marginBottom: '12px', marginTop: '16px'}}>CHANGED</span>

* Exposed `ErrorFormState` composable as public API (was internal)
* Refactored hidden state — hidden state will no longer be updated in the JSON when a field changes visibility or a page is modified
* Filter optimization for improved performance

<span style={{display: 'inline-block', padding: '4px 12px', border: '1.5px solid #f97316', borderRadius: '6px', color: '#f97316', fontWeight: '600', fontSize: '13px', marginBottom: '12px', marginTop: '16px'}}>FIXED</span>

* (JF-230) Duplicated pages not appearing in the correct position and not being saved — duplicated page now inserts directly below the source page
* Formulas not working after duplicating a page
* Conditional logic not working after duplicating a page
* Duplicating Table and Collection fields caused row IDs to be shared across pages, leading to unintended row deletions
* Page duplication for Chart field not working due to duplicated point IDs
* Chart data not being saved after modifications
* Crash when duplicating a page
* Multi-select validation incorrectly showing as valid when all visible options are unselected but a deleted option remains selected
* Multi-select column colors not being acknowledged in Table and Collection fields

## 2.0.0-RC9

<span style={{display: 'inline-block', padding: '4px 12px', border: '1.5px solid #10b981', borderRadius: '6px', color: '#10b981', fontWeight: '600', fontSize: '13px', marginBottom: '12px'}}>ADDED</span>

* Row insertion when filter and sort is active in Table and Collection fields
* "Add after" option in row actions dropdown when filter is active

<span style={{display: 'inline-block', padding: '4px 12px', border: '1.5px solid #f97316', borderRadius: '6px', color: '#f97316', fontWeight: '600', fontSize: '13px', marginBottom: '12px', marginTop: '16px'}}>CHANGED</span>

* Performance improvement on Collection field row actions

<span style={{display: 'inline-block', padding: '4px 12px', border: '1.5px solid #f97316', borderRadius: '6px', color: '#f97316', fontWeight: '600', fontSize: '13px', marginBottom: '12px', marginTop: '16px'}}>FIXED</span>

* Multi select options being clickable in readonly mode
* Internal functions incorrectly exposed as public API
* Keyboard not appearing after bulk edit
* Parent path calculation corrupted by row action when editing child rows
* Row form submit button showing "Submitted" state after reopening following bulk edit
* "Add Row" button not disabled in readonly mode for Table fields
* Filtered table allowing navigation to hidden rows in row form
* Duplicate page creating image field attachments with same ID, causing unintended deletion across pages

## 2.0.0-RC8

<span style={{display: 'inline-block', padding: '4px 12px', border: '1.5px solid #10b981', borderRadius: '6px', color: '#10b981', fontWeight: '600', fontSize: '13px', marginBottom: '12px'}}>ADDED</span>

* Row navigation now keeps the target row in view when closing the row form in Collection and Table fields.

## 2.0.0-RC7

<span style={{display: 'inline-block', padding: '4px 12px', border: '1.5px solid #10b981', borderRadius: '6px', color: '#10b981', fontWeight: '600', fontSize: '13px', marginBottom: '12px'}}>ADDED</span>

* Row highlighting for selected rows in Table and Collection fields to improve visibility for users

<span style={{display: 'inline-block', padding: '4px 12px', border: '1.5px solid #f97316', borderRadius: '6px', color: '#f97316', fontWeight: '600', fontSize: '13px', marginBottom: '12px', marginTop: '16px'}}>CHANGED</span>

* Support for additional custom time formats
* Required field validation — added page ID to the validation status object for more accurate field tracking

<span style={{display: 'inline-block', padding: '4px 12px', border: '1.5px solid #f97316', borderRadius: '6px', color: '#f97316', fontWeight: '600', fontSize: '13px', marginBottom: '12px', marginTop: '16px'}}>FIXED</span>

* Crash when adding rows in Table fields caused by invalid default values in columns such as Text, Signature, Date, or Block
* Edge case involving Collection fields and formula calculations
* Multiselect fields not working when a deleted option shared the same value as a non-deleted option
* Formula fields failing to process decimal numbers without a leading zero

## 2.0.0-RC6

<span style={{display: 'inline-block', padding: '4px 12px', border: '1.5px solid #f97316', borderRadius: '6px', color: '#f97316', fontWeight: '600', fontSize: '13px', marginBottom: '12px', marginTop: '16px'}}>FIXED</span>

* Collection field not showing even when the License key has been provided

## 2.0.0-RC5

<span style={{display: 'inline-block', padding: '4px 12px', border: '1.5px solid #10b981', borderRadius: '6px', color: '#10b981', fontWeight: '600', fontSize: '13px', marginBottom: '12px'}}>ADDED</span>

* onFocus event when table field is opened
* onBlur event when table field is closed
* onFocus event when collection field is opened
* onBlur event when collection field is closed
* onBlur event for multi select field
* onFocus event for multi select field
* Removal of date value from fields

<span style={{display: 'inline-block', padding: '4px 12px', border: '1.5px solid #f97316', borderRadius: '6px', color: '#f97316', fontWeight: '600', fontSize: '13px', marginBottom: '12px', marginTop: '16px'}}>CHANGED</span>

* Performance improvement on table when bulk selecting
* Performance improvement on table when scrolling
* Signature field undo button to always show
* Tables without rows should not be selectable
* Submit button when signature field has not be entered or updated

<span style={{display: 'inline-block', padding: '4px 12px', border: '1.5px solid #f97316', borderRadius: '6px', color: '#f97316', fontWeight: '600', fontSize: '13px', marginBottom: '12px', marginTop: '16px'}}>FIXED</span>

* Hidden rows being selected
* Table without rows not being selectable or clickable
* Image Scaling issue
* Move down should be disabled if the selected row is last
* Move up should be disabled if the selected row is first
* Crash if empty Json is passed into the Form
* Table Column ordering

## 2.0.0-RC4

<span style={{display: 'inline-block', padding: '4px 12px', border: '1.5px solid #f97316', borderRadius: '6px', color: '#f97316', fontWeight: '600', fontSize: '13px', marginBottom: '12px', marginTop: '16px'}}>FIXED</span>

* OnFieldChange get triggered even when no image has been captured in onUpload
* Other misc bug fixes not reported by ST

## 2.0.0-RC3

<span style={{display: 'inline-block', padding: '4px 12px', border: '1.5px solid #f97316', borderRadius: '6px', color: '#f97316', fontWeight: '600', fontSize: '13px', marginBottom: '12px', marginTop: '16px'}}>FIXED</span>

* Crashing when a multi select field has been selected
* Crashing with a class cast exception when dealing with dates

## 2.0.0-RC2

<span style={{display: 'inline-block', padding: '4px 12px', border: '1.5px solid #f97316', borderRadius: '6px', color: '#f97316', fontWeight: '600', fontSize: '13px', marginBottom: '12px', marginTop: '16px'}}>FIXED</span>

* Images uploaded on Android are now visible on all other platforms
* Images uploaded on all other platforms are now visible on Android

## 2.0.0-RC1

<span style={{display: 'inline-block', padding: '4px 12px', border: '1.5px solid #10b981', borderRadius: '6px', color: '#10b981', fontWeight: '600', fontSize: '13px', marginBottom: '12px'}}>ADDED</span>

* (JF-195) Additional params added for upload
* (JF-199) License Key Support for collections

<span style={{display: 'inline-block', padding: '4px 12px', border: '1.5px solid #f97316', borderRadius: '6px', color: '#f97316', fontWeight: '600', fontSize: '13px', marginBottom: '12px', marginTop: '16px'}}>FIXED</span>

* (JF-193) Schema validation error after image upload

## 2.0.0-Beta20

<span style={{display: 'inline-block', padding: '4px 12px', border: '1.5px solid #f97316', borderRadius: '6px', color: '#f97316', fontWeight: '600', fontSize: '13px', marginBottom: '12px', marginTop: '16px'}}>CHANGED</span>

* Scroll performance on TableField
* Scroll performance on Collection Field
* Filtering performance
* Validation performance
* Template loading performance

<span style={{display: 'inline-block', padding: '4px 12px', border: '1.5px solid #f97316', borderRadius: '6px', color: '#f97316', fontWeight: '600', fontSize: '13px', marginBottom: '12px', marginTop: '16px'}}>FIXED</span>

* Conditional Logic fixes in collection field
* (JF-136) Performance support for 1000 rows
* (JF-148) Drawing signature out of bounds fixed
* (JF-109) Fix for different ordering of items

## 2.0.0-Beta19

<span style={{display: 'inline-block', padding: '4px 12px', border: '1.5px solid #10b981', borderRadius: '6px', color: '#10b981', fontWeight: '600', fontSize: '13px', marginBottom: '12px'}}>ADDED</span>

* (JF-158) Implemented search and filter on table field

<span style={{display: 'inline-block', padding: '4px 12px', border: '1.5px solid #f97316', borderRadius: '6px', color: '#f97316', fontWeight: '600', fontSize: '13px', marginBottom: '12px', marginTop: '16px'}}>CHANGED</span>

* Table field performance enhancements for 1000 total rows
* (JF-161) Collection field performance enhancements for 1000 total rows
* Data validation and error reporting enhancements
* UI enhancement for fields with really long titles
* Enhanced performance for bulk edit

<span style={{display: 'inline-block', padding: '4px 12px', border: '1.5px solid #f97316', borderRadius: '6px', color: '#f97316', fontWeight: '600', fontSize: '13px', marginBottom: '12px', marginTop: '16px'}}>FIXED</span>

* (JF-109) Field ordering consistency
* (JF-152) Hidden fields are being displayed
* (JF-154) Making subsequent sort choices causes sort to reset

## 2.0.0-Beta17

<span style={{display: 'inline-block', padding: '4px 12px', border: '1.5px solid #10b981', borderRadius: '6px', color: '#10b981', fontWeight: '600', fontSize: '13px', marginBottom: '12px'}}>ADDED</span>

* (JF-20) Data validation error handling and validateSchema helper
* (JF-22) OnChange handler with live UI refresh
* (JF-94) Detailed changelogs for collection and table fields
* (JF-39) Calculated Fields
* (JF-151) onCapture parameter is missing from RawBarcodeField

### Known Issues

* Uploading large images (\~30Mb) causes an Out of Memory Error on Android 14
* Validation Schema treats a Joydoc without the files property as valid (it shouldn't)

## 2.0.0-Beta15

<span style={{display: 'inline-block', padding: '4px 12px', border: '1.5px solid #10b981', borderRadius: '6px', color: '#10b981', fontWeight: '600', fontSize: '13px', marginBottom: '12px'}}>ADDED</span>

* (JF-20) Data validation error handling and validateSchema helper
* (JF-22) OnChange handler with live UI refresh
* (JF-94) Detailed changelogs for onChange handler
* (JF-39) Calculated Fields Beta
* (JF-151) onCapture parameter for RawBarcodeField

## 2.0.0-Beta13

<span style={{display: 'inline-block', padding: '4px 12px', border: '1.5px solid #10b981', borderRadius: '6px', color: '#10b981', fontWeight: '600', fontSize: '13px', marginBottom: '12px'}}>ADDED</span>

* Collection Field Search And Filter (ST:M1.2)

<span style={{display: 'inline-block', padding: '4px 12px', border: '1.5px solid #f97316', borderRadius: '6px', color: '#f97316', fontWeight: '600', fontSize: '13px', marginBottom: '12px', marginTop: '16px'}}>CHANGED</span>

* Performance improvements in the collection field

<span style={{display: 'inline-block', padding: '4px 12px', border: '1.5px solid #f97316', borderRadius: '6px', color: '#f97316', fontWeight: '600', fontSize: '13px', marginBottom: '12px', marginTop: '16px'}}>FIXED</span>

* Crash when adding row to the table in 'NFPA 10 -2022' form (JF-103)

## 2.0.0-Beta09

<span style={{display: 'inline-block', padding: '4px 12px', border: '1.5px solid #10b981', borderRadius: '6px', color: '#10b981', fontWeight: '600', fontSize: '13px', marginBottom: '12px'}}>ADDED</span>

* JF-90: Added support for single image fields
* Changelog emissions for collection fields
* Descriptive error message when image fields fails to load the url
* ImageReplacementSample composable to demonstrate how to replace an image in the ImageField

<span style={{display: 'inline-block', padding: '4px 12px', border: '1.5px solid #f97316', borderRadius: '6px', color: '#f97316', fontWeight: '600', fontSize: '13px', marginBottom: '12px', marginTop: '16px'}}>CHANGED</span>

* Improved the size of the required asterisk on required fields (it was too small)
* Compose Multiplatform: 1.7.3 -> 1.8.1

<span style={{display: 'inline-block', padding: '4px 12px', border: '1.5px solid #f97316', borderRadius: '6px', color: '#f97316', fontWeight: '600', fontSize: '13px', marginBottom: '12px', marginTop: '16px'}}>FIXED</span>

* JF-35: UI now updates when the underlying image url changes
* JF-84: Field validation was still failing when a new table row was added without fields
* JF-87: Some table fields are still editable when the form is in read-only mode
* Changelog emission for non collection fields

## 2.0.0-Beta08

<span style={{display: 'inline-block', padding: '4px 12px', border: '1.5px solid #f97316', borderRadius: '6px', color: '#f97316', fontWeight: '600', fontSize: '13px', marginBottom: '12px', marginTop: '16px'}}>FIXED</span>

* Block Field with negative padding crashing the app
* Validation always returning FieldsInvalid (again)

## 1.1.14

<span style={{display: 'inline-block', padding: '4px 12px', border: '1.5px solid #f97316', borderRadius: '6px', color: '#f97316', fontWeight: '600', fontSize: '13px', marginBottom: '12px', marginTop: '16px'}}>FIXED</span>

* Empty spaces when there are soo many hidden fields (apparently every single hidden field took 8dpi height)
* Last updated TextArea not persisting
* Last updated NumberField not persisting

## 1.1.13

<span style={{display: 'inline-block', padding: '4px 12px', border: '1.5px solid #f97316', borderRadius: '6px', color: '#f97316', fontWeight: '600', fontSize: '13px', marginBottom: '12px', marginTop: '16px'}}>CHANGED</span>

* Kotlin from 2.0.20 to 2.1.10
* Compose Multiplatform from 1.7.0 to 1.7.3

<span style={{display: 'inline-block', padding: '4px 12px', border: '1.5px solid #f97316', borderRadius: '6px', color: '#f97316', fontWeight: '600', fontSize: '13px', marginBottom: '12px', marginTop: '16px'}}>FIXED</span>

* Conditional Logic not resolving on a single input
* Date Field Capturing wrong time
* Last text field entry not updating accordingly

## 1.1.12

<span style={{display: 'inline-block', padding: '4px 12px', border: '1.5px solid #10b981', borderRadius: '6px', color: '#10b981', fontWeight: '600', fontSize: '13px', marginBottom: '12px'}}>ADDED</span>

* Table field: Sort a specific column by either ascending or descending order
* Table field: Filter text columns by a certain search phrase
* Table field: Filter multiple cell values from different columns at once
* Table field: Duplicate multiple selected rows
* Table field: Edit multiple selected rows at once

<span style={{display: 'inline-block', padding: '4px 12px', border: '1.5px solid #f97316', borderRadius: '6px', color: '#f97316', fontWeight: '600', fontSize: '13px', marginBottom: '12px', marginTop: '16px'}}>CHANGED</span>

* Kotlin version from 2.0.10 to 2.0.21
* Compose multiplatform version from 1.6.11 to 1.7.0

## 1.1.11

<span style={{display: 'inline-block', padding: '4px 12px', border: '1.5px solid #f97316', borderRadius: '6px', color: '#f97316', fontWeight: '600', fontSize: '13px', marginBottom: '12px', marginTop: '16px'}}>FIXED</span>

* Conditional logic: multiselect fields would occasionally select deleted values
* Conditional logic: Dropdown fields would not trigger for fields with multiple values
* Conditional logic: Less than operation not triggering same time as greater operation
* Conditional logic: is (and in turn is not) check was performing only case sensitive matches
* Conditional logic: empty check was not triggering on null values
* Conditional logic: wrong is filled notation was been used

## 1.1.7

<span style={{display: 'inline-block', padding: '4px 12px', border: '1.5px solid #10b981', borderRadius: '6px', color: '#10b981', fontWeight: '600', fontSize: '13px', marginBottom: '12px'}}>ADDED</span>

* Chart preview
* Chart full view
* Chart coordinate editing
* Chart Line colors

## 1.1.6

<span style={{display: 'inline-block', padding: '4px 12px', border: '1.5px solid #f97316', borderRadius: '6px', color: '#f97316', fontWeight: '600', fontSize: '13px', marginBottom: '12px', marginTop: '16px'}}>FIXED</span>

* Number field crashing on invalid values

## 1.1.5

<span style={{display: 'inline-block', padding: '4px 12px', border: '1.5px solid #f97316', borderRadius: '6px', color: '#f97316', fontWeight: '600', fontSize: '13px', marginBottom: '12px', marginTop: '16px'}}>FIXED</span>

* Conditional logic for choice fields (multiselect and dropdown) now fires correctly when conditions are not met
* Mobile View regression
* Validation now only validates fields in the required view

## 1.1.4

<span style={{display: 'inline-block', padding: '4px 12px', border: '1.5px solid #10b981', borderRadius: '6px', color: '#10b981', fontWeight: '600', fontSize: '13px', marginBottom: '12px'}}>ADDED</span>

* Field tooltips are now supported
* Table row duplication
* Validation Plugin with field validation support
* Validation Plugin with form validation support
* Validation Plugin with document validation support

<span style={{display: 'inline-block', padding: '4px 12px', border: '1.5px solid #f97316', borderRadius: '6px', color: '#f97316', fontWeight: '600', fontSize: '13px', marginBottom: '12px', marginTop: '16px'}}>FIXED</span>

* Conditional logic for choice fields now works as expected
* Fixed multiselect field showing deleted options

## 1.1.2

<span style={{display: 'inline-block', padding: '4px 12px', border: '1.5px solid #f97316', borderRadius: '6px', color: '#f97316', fontWeight: '600', fontSize: '13px', marginBottom: '12px', marginTop: '16px'}}>FIXED</span>

* Default values on conditional logic are now working as expected

## 1.1.1

<span style={{display: 'inline-block', padding: '4px 12px', border: '1.5px solid #f97316', borderRadius: '6px', color: '#f97316', fontWeight: '600', fontSize: '13px', marginBottom: '12px', marginTop: '16px'}}>FIXED</span>

* Conditional Logic now works as expected

## 1.1.0

<span style={{display: 'inline-block', padding: '4px 12px', border: '1.5px solid #10b981', borderRadius: '6px', color: '#10b981', fontWeight: '600', fontSize: '13px', marginBottom: '12px'}}>ADDED</span>

* Conditional Logic Support

<span style={{display: 'inline-block', padding: '4px 12px', border: '1.5px solid #f97316', borderRadius: '6px', color: '#f97316', fontWeight: '600', fontSize: '13px', marginBottom: '12px', marginTop: '16px'}}>FIXED</span>

* Fixed crashing issues with the image field when it is open with an invalid value

## 1.0.6

<span style={{display: 'inline-block', padding: '4px 12px', border: '1.5px solid #f97316', borderRadius: '6px', color: '#f97316', fontWeight: '600', fontSize: '13px', marginBottom: '12px', marginTop: '16px'}}>CHANGED</span>

* Capitalise button on the keyboard is not set by default when setting the cursor in text fields and text columns
* Made the asterisk (stars) on required fields red

<span style={{display: 'inline-block', padding: '4px 12px', border: '1.5px solid #f97316', borderRadius: '6px', color: '#f97316', fontWeight: '600', fontSize: '13px', marginBottom: '12px', marginTop: '16px'}}>FIXED</span>

* Required text fields would not display the asterisk
* Add Row button is no longer display on readonly forms
* Add Row button is no longer displayed on readonly tables (even when the form is in fill mode)
* Tables with long names now have a visible close button
* Radio buttons are now de-selectable
* Undo-Redo on signature fields is hidden when the user types their signature out
* Dropdown field now saves on choice (instead of saving after onBlur event)
* Tables now preview uniformly even when there are few rows to preview
* Number input fields no longer adds an extra zero while deleting

## 1.0.5

<span style={{display: 'inline-block', padding: '4px 12px', border: '1.5px solid #10b981', borderRadius: '6px', color: '#10b981', fontWeight: '600', fontSize: '13px', marginBottom: '12px'}}>ADDED</span>

* rgb color support on rich text field
* text alignment support for rich text field
* calendar icon on DateField

<span style={{display: 'inline-block', padding: '4px 12px', border: '1.5px solid #f97316', borderRadius: '6px', color: '#f97316', fontWeight: '600', fontSize: '13px', marginBottom: '12px', marginTop: '16px'}}>CHANGED</span>

* Enhanced all field labels to be semibold

<span style={{display: 'inline-block', padding: '4px 12px', border: '1.5px solid #f97316', borderRadius: '6px', color: '#f97316', fontWeight: '600', fontSize: '13px', marginBottom: '12px', marginTop: '16px'}}>FIXED</span>

* Fixed font size issue on block field
* Fixed crashing when pageOrder is null
* Fixed crashing when default date has decimal values

## 0.1.0-RC1

<span style={{display: 'inline-block', padding: '4px 12px', border: '1.5px solid #10b981', borderRadius: '6px', color: '#10b981', fontWeight: '600', fontSize: '13px', marginBottom: '12px'}}>ADDED</span>

* Initial release of Joyfill Kotlin Multiplatform SDK
* Supported Fields: Text, TextArea, Number, DropDown, MultiSelect, Signature, DateTime, Image, Table
* Supported Callbacks: onFocus, onBlur, onChange, onFieldChange, onUpload
* External page Navigation
* Internal page Navigation
* Deleted fields support
* Readonly fields support
* Platform support: Android, Linux (through JVM), Windows (through JVM), MacOs (through JVM)
