<commit_before># Unreleased

## RangeControl
- `LinearRangeBehavior` now correctly responds to `UserStep` values, providing quantized input
- Fixed `RangeControl.RelativeValue` to properly update when bound in UX
- Allowed `Minimum` to be less than `Maximum` on `RangeControl` making it easier to do left-to-right `100..0` ranges.
- Fixed a defect in position calculations in `LinearRangeBehavior`. It now uses the immediate Element parent for bounds calculation as opposed to the `RangeControl`.

## WebView
- Exported the methods goBack, goForward, reload and stop for use in FuseJS

## ScrollViewPager
- Fixed a NullReferenceError that could happen while using ScrollViewPager in preview

## DatePicker
- Introduced Fuse.Controls.DatePicker class, which wraps native date pickers on Android and iOS. See the `DatePicker` class documentation for more details.

## TimePicker
- Introduced Fuse.Controls.TimePicker class, which wraps native time pickers on Android and iOS. See the `TimePicker` class documentation for more details.

## TextView
- Fixed bug on Android where setting `TextWrapping="NoWrap"` would force the `TextView` to be single line. New behavior is to instead allow the view to scroll horizontally instead of automatically wrapping the text.

## MultiDensityImageSource
- Added native support, meaning it can be used by images inside a `NativeViewHost`.

## Video
- Fixed bug in Video where playback actions, like `Play`, used before the video was initialized would end up getting swallowed.
- Added some JavaScript methods to `Video` to make it easier to control playback from JavaScript, as well as obtaining information the video duration.
- Made `Video.Duration` and `Video.Position` property-bindable.

## Fuse.Marshal:
- Fixed a bug where UX expressions that produce two component floats did not expand to four compoent floats the same same way as literals did.

## Fuse.Reactive framework changes (Uno-level)
- These are breaking changes, but very unlikely to affect your app:
 * The `DataBinding`, `EventBinding` and `ExpressionBinding` class constructors no longer take a `NameTable` argument.
 * The `Name` and `This` expression classes has been removed. The UX compiler will now compile these as `Constant` expressions that contain the actual objects instead.
 * The `IContext` interface no longer contains the `NameTable` property.
 * The `Fuse.IRaw` interface removed (now internal to the `Fuse.Reactive.JavaScript` package). Had no practical public use.
 * The `Fuse.Reactive.ListMirror` class is no longer public. This was never intended to be public and has no practical public application.
 * Added detailed docs for many of the interfaces in the `Fuse.Reactive` namespace.
 * The `Fuse.Reactive.IWriteable` interface has changed (breaking!). The method signature is now `bool TrySetExclusive(object)` instead of `void SetExclusive(object)`. Unlikely to affect your code.
 * `IObservable` and `IObservableArray` no longer push their initial value on `Subscribe`.


# 1.3

## 1.3.0

### Native UI:
- Fixed bug on iOS that could cause native views from thirdparty libraries to get an incorrect position. (Fixes issues with Firebase AdMob)

### JavaScript: Optional explicit require() of UX symbols
- Symbols declared with `ux:Name`, `ux:Dependency` or `dep` are now also available to `require()` for `<JavaScript>` modules using the `ux:` prefix. This allows us to write code that plays nicer with transpilers and linters. Using require for names declared in UX is optional, but may make the code more readable and maintainable, e.g. `var router = require("ux:router")` over just using `router` with no declaration.

### Fuse.Drawing.Surface
- Fixed a problem where horizontal or vertical lines would not draw in the .NET backend.

### Attract
- Fixed an issue with `attract` not updating when using a data binding as the source value

### Fonts
- Fixed bug where the default font on Android could end up being null.

### ViewHandle
- Fixed issue where Images with Mask could end up not displaying. This happend due to unnecessary invalidation of the implicit native GraphicsView in the app root. This invalidation was introduced when the Surface API was implemented for native. Invalidation is now opt-in on ViewHandle<commit_msg>Add to changelog that image respects exif orientation<commit_after># Unreleased

## RangeControl
- `LinearRangeBehavior` now correctly responds to `UserStep` values, providing quantized input
- Fixed `RangeControl.RelativeValue` to properly update when bound in UX
- Allowed `Minimum` to be less than `Maximum` on `RangeControl` making it easier to do left-to-right `100..0` ranges.
- Fixed a defect in position calculations in `LinearRangeBehavior`. It now uses the immediate Element parent for bounds calculation as opposed to the `RangeControl`.

## WebView
- Exported the methods goBack, goForward, reload and stop for use in FuseJS

## ScrollViewPager
- Fixed a NullReferenceError that could happen while using ScrollViewPager in preview

## DatePicker
- Introduced Fuse.Controls.DatePicker class, which wraps native date pickers on Android and iOS. See the `DatePicker` class documentation for more details.

## TimePicker
- Introduced Fuse.Controls.TimePicker class, which wraps native time pickers on Android and iOS. See the `TimePicker` class documentation for more details.

## TextView
- Fixed bug on Android where setting `TextWrapping="NoWrap"` would force the `TextView` to be single line. New behavior is to instead allow the view to scroll horizontally instead of automatically wrapping the text.

## MultiDensityImageSource
- Added native support, meaning it can be used by images inside a `NativeViewHost`.

## Video
- Fixed bug in Video where playback actions, like `Play`, used before the video was initialized would end up getting swallowed.
- Added some JavaScript methods to `Video` to make it easier to control playback from JavaScript, as well as obtaining information the video duration.
- Made `Video.Duration` and `Video.Position` property-bindable.

## Fuse.Marshal:
- Fixed a bug where UX expressions that produce two component floats did not expand to four compoent floats the same same way as literals did.

## Fuse.Reactive framework changes (Uno-level)
- These are breaking changes, but very unlikely to affect your app:
 * The `DataBinding`, `EventBinding` and `ExpressionBinding` class constructors no longer take a `NameTable` argument.
 * The `Name` and `This` expression classes has been removed. The UX compiler will now compile these as `Constant` expressions that contain the actual objects instead.
 * The `IContext` interface no longer contains the `NameTable` property.
 * The `Fuse.IRaw` interface removed (now internal to the `Fuse.Reactive.JavaScript` package). Had no practical public use.
 * The `Fuse.Reactive.ListMirror` class is no longer public. This was never intended to be public and has no practical public application.
 * Added detailed docs for many of the interfaces in the `Fuse.Reactive` namespace.
 * The `Fuse.Reactive.IWriteable` interface has changed (breaking!). The method signature is now `bool TrySetExclusive(object)` instead of `void SetExclusive(object)`. Unlikely to affect your code.
 * `IObservable` and `IObservableArray` no longer push their initial value on `Subscribe`.

## Image
- Image will now respect Exif orientation.

# 1.3

## 1.3.0

### Native UI:
- Fixed bug on iOS that could cause native views from thirdparty libraries to get an incorrect position. (Fixes issues with Firebase AdMob)

### JavaScript: Optional explicit require() of UX symbols
- Symbols declared with `ux:Name`, `ux:Dependency` or `dep` are now also available to `require()` for `<JavaScript>` modules using the `ux:` prefix. This allows us to write code that plays nicer with transpilers and linters. Using require for names declared in UX is optional, but may make the code more readable and maintainable, e.g. `var router = require("ux:router")` over just using `router` with no declaration.

### Fuse.Drawing.Surface
- Fixed a problem where horizontal or vertical lines would not draw in the .NET backend.

### Attract
- Fixed an issue with `attract` not updating when using a data binding as the source value

### Fonts
- Fixed bug where the default font on Android could end up being null.

### ViewHandle
- Fixed issue where Images with Mask could end up not displaying. This happend due to unnecessary invalidation of the implicit native GraphicsView in the app root. This invalidation was introduced when the Surface API was implemented for native. Invalidation is now opt-in on ViewHandle
{'fraction_non_alphanumeric': 0.06609461966604824, 'fraction_numerical': 0.0020871985157699443, 'mean_word_length': 4.730897009966777, 'pattern_counts': {'":': 0, '<': 5, '<?xml version=': 0, '>': 5, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '3980250', 'n_tokens_mistral': 2205, 'n_tokens_neox': 2106, 'n_words': 1173}