Skip to content
This repository has been archived by the owner on Mar 7, 2020. It is now read-only.

Releases: fusetools/fuse-releases

1.8.2.15696

07 May 12:14
630a7aa
Compare
Choose a tag to compare

This is a bug fix release

  • Uno.Net.Http: Fixed a crash-bug when reading AbsoluteUri on custom URI-types

Change log from 1.8.0:

Highlights

  • Lots of improvements to the new Sketch importer
    • Coincidentally leading to a number of bug fixes for vector rendering :)
  • New feature for argument passing from UX to FuseJS models
  • SafeEdgePanel for creating iPhone X compatible layouts
  • Thumbnail support and faster photo preview in CameraView
  • And a lot of bug fixes all around!

Fuse Studio

  • Sketch import

    • New menu option Project/Sketch import to select which Sketch files to import symbols from.
    • Opacity on layers now translate to opacity on the resulting ux panel
    • Fixed a bug where shadows where flipped in the X-direction in UX compared to Sketch
    • Shadow mode set to PerPixel in UX to yield the expected result
    • Shadows on texts in Sketch now supported
    • Warn about not supporting inner shadows in UX
    • Fixed a bug where shapes split into multiple parts by scissoring where ignored
    • Set TextWrapping mode to Wrap on all texts in UX for better default behavior
    • Multiple text styles on one text object in Sketch now gives warning when generating UX
  • You can now filter custom classes in components view

  • Improved the performance of the log view

  • Added a file dialog for browsing for FileSource of an Image

  • Fixed a bug that caused comments to be removed when dragging into an element

  • Fixed issue where introducing an ux:Property would in some cases report Member 'EmulatePropertyChanged' could not be found on object of type 'Uno.UX.PropertyObject' in preview.

  • If Fuse Studio is unable to open devices.json for editing, an error message is now displayed. Previously, this could cause Fuse Studio to crash.

Fuselibs

SafeEdgePanel

  • Added SafeEdgePanel to assist in creating iPhone X capable layouts.

Android

  • Fixed a defect that performed layout with a 0 density on Android at startup

Vector Drawing

  • Fixed a defect in partial line drawing in Preview that resulted in a spurious line being drawn. This happened when the partial curve overlapped the end of the path data.
  • Fixed a defect that prevented a single-segment, horizontal or vertical, line from rendering in Path with StretchMode="Uniform" (the default StretchMode).
  • Fixed a defect that prevented a Path with a single horizontal or vertical line from rendering in Preview (DotNet).
  • Fixed the width of strokes in Preview (DotNet). They were too small on devices with a density other than 1.
  • Fixed a Preview/DotNet rendering defect that resulted from unclosed paths in Path.Data.
  • Fixed Android strokes to use the correct cap and join instead of always being Butt and Bevel.
  • Fixed bug where setting Data on a Path could end up not rendering inside a NativeViewHost on iOS

Grid

  • Fixed a Grid defect that resulted in some cells not calculating the correct layout size.
  • Grid now detects a common invalid configuration and emits an error. This may trigger on projects that currently work, but are relying on undefined/broken behavior.

Instance / Each

  • Added IsEnabled to allow conditional instantion of templates in Instance
  • Added Match to pick a specific template
  • Added Defaults to limit default instances, useful when using bindings to match criteria

FuseJS

  • Added support for passing arguments from UX to the model constructor using the ModelArgs attribute.

EdgeNavigator

  • Improved the JavaScript model and object support on EdgeNavigator.
    • EdgeNavigator.Pages functions like PageControl.Pages, binding model data to templated pages.
    • Set IsRouterOutlet="true" to enable Router functionality.

Internal APIs

  • The following protected internal members have been made just internal, as they refer to internal types and weren't meant to be available to derived types:
    • Fuse.Controls.TextInputControl.Editor
    • Fuse.Controls.TextInputControl.TextInputControl(TextEdit)
    • Fuse.Physics.ForceFieldTrigger.SetForce(Body, float)
    • Fuse.Physics.ForceFieldEventTrigger.OnTriggered(Body)
    • Fuse.Controls.TextControl._textRenderer

Grid

  • Fixed a defect in the default metric mode of Grid that could result in incorrect layout calculations, in particular if putting a Grid inside a StackPanel with auto columns.

Selection

  • Added isSelected function for determine selection status within an expression

Element

  • Added Size and Height to Element as an alternate way to control the layout. This is useful for some animation and binding situations.

Cycle

  • Added Restore option Forward to allow animating forward to return to rest state

Device and window()

  • Marked several types internal that should not have been public: SystemUI and related types
  • Changed ClientPanel to use Padding instead of panels.
  • Added window() function to get device UI borders: safeMargins, staticMargins and experimental deviceMargins. This will allow developing for devices with extended border areas such as the iPhone X
  • Added Device global to query platform details, such as Device.isIOS and Device.isAndroid
  • Removed the RelativeToKeyboardMode relative translation. This was undocumented and did not appear to work correctly, or do something useful. To move relative to device controls you can now use window().safeMargins and window().staticMargins

Keyframe

  • Fixed Keyframe to allow expressions on the property values.

SwipeGesture

  • A Simple or Auto SwipeGesture will no longer automatically activate at the halfway point, whereas a Active gesture will. To get the old default behavior, which is considered a defect, use Threshold="0.5".
  • Added a SwipeGesture.Threshold to configure the automatic activation distnace.

Image loading errors

  • Added more info to the messages reported on failure during image loading.

Fuse.Scripting

  • Marked NativeMember.Context as Obsolete. Either use passed-down Context, or dispatch to ThreadWorker instead.

Uno

Uno compiler

  • Exposing internal types through protected members is now a compilation error, to match C#'s behavior. Some code may need to be updated, for instance by making the exposed type public or the member internal.
  • Fixed a bug that resulted in a crash at startup during the construction of Uno's runtime type information when using certain (rare) combinations of generic types.

UX Compiler

  • Fixed a codegen bug where property bindings to properties with generic type arguments (such as LetFloat) would generate invalid Uno code.

Uno.Net.Http

  • Made the following types internal. They were never meant to be exposed in the first place, and shouldn't be used:
    • Uno.Net.Http.AbsolutePathParser
    • Uno.Net.Http.HashParser
    • Uno.Net.Http.HostInfo
    • Uno.Net.Http.HostInfoParser
    • Uno.Net.Http.QueryParser
    • Uno.Net.Http.SchemeParserResult
    • Uno.Net.Http.SchemeParserResult
    • Uno.Net.Http.UserInfoParser
    • Uno.Net.Http.UriScheme
    • Uno.Net.Http.UriSchemeType
  • Introduced Uri.Fragment.
  • Marked Uri.Hash as obsolete. Use Uri.Fragment instead.
  • Marked Uri.GetQueryParameters() as obsolete. Use Query.Substring(1).Split('&') instead.
  • Marked Uri.Combine(string, string) as obsolete. Use String.Format("{0}/{1}, baseUri.TrimEnd(new char[] { '/' }, uri.TrimStart(new char[] { '/' }))" instead.
  • Marked Uri.Combine(string, string) as obsolete. Use Uri(Uri, string).OriginalString instead.
  • Marked Uri.Encode as obsolete. Use Uri.EscapeDataString(string) instead.
  • Marked Uri.Decode as obsolete. Use Uri.UnescapeDataString(string) instead.

Uno.Threading

  • Marked public versions of ConcurrentDictionary.Add(TKey, TValue) and ConcurrentDictionary.Remove(TKey) as obsolete. Use IDictionary-versions instead.
  • Marked public versions of ConcurrentDictionary.GetEnumerator() as obsolete. Use IEnumerable-versions instead.
  • Marked public versions of ConcurrentDictionary.Keys and ConcurrentDictionary.Values as obsolete. Use IDictionary-versions instead.

UnoCore

  • Removed obosolete methods from Uno.Color. These has been obsolete since Uno 0.46:
    • Uno.Color.ToRgb24(float3)
    • Uno.Color.ToRgba32(float4)
    • Uno.Color.FromRgb24(int3)
    • Uno.Color.FromRgb24(uint)
    • Uno.Color.FromRgba32(int4)
    • Uno.Color.FromRgba32(uint)
    • Uno.Color.ToHex(int3)
    • Uno.Color.ToHex(int4)

.NET

  • Fixed a code-generator bug where long-literals that were larger than int.MaxValue, but smaller than uint.MaxValue accidentally got sign-extended.
  • Fixed a code-generator bug where shifts on unsigned values accidentally got sign-extended.

Premiumlibs

CameraView

  • Fixed issue where saving captured photos on iOS did not include EXIF data
  • Added ability to save thumbnails of captured photos.
  • Add <PhotoPreview />, a class that enableds a fast-path for previewing captured photos inside a <NativeViewHost />

1.8.1.15610

17 Apr 11:35
630a7aa
Compare
Choose a tag to compare

This is a bug fix release since we had managed to break Fuse.Views in our previous release.

Change log from 1.8.0:

Highlights

  • Lots of improvements to the new Sketch importer
    • Coincidentally leading to a number of bug fixes for vector rendering :)
  • New feature for argument passing from UX to FuseJS models
  • SafeEdgePanel for creating iPhone X compatible layouts
  • Thumbnail support and faster photo preview in CameraView
  • And a lot of bug fixes all around!

Fuse Studio

  • Sketch import

    • New menu option Project/Sketch import to select which Sketch files to import symbols from.
    • Opacity on layers now translate to opacity on the resulting ux panel
    • Fixed a bug where shadows where flipped in the X-direction in UX compared to Sketch
    • Shadow mode set to PerPixel in UX to yield the expected result
    • Shadows on texts in Sketch now supported
    • Warn about not supporting inner shadows in UX
    • Fixed a bug where shapes split into multiple parts by scissoring where ignored
    • Set TextWrapping mode to Wrap on all texts in UX for better default behavior
    • Multiple text styles on one text object in Sketch now gives warning when generating UX
  • You can now filter custom classes in components view

  • Improved the performance of the log view

  • Added a file dialog for browsing for FileSource of an Image

  • Fixed a bug that caused comments to be removed when dragging into an element

  • Fixed issue where introducing an ux:Property would in some cases report Member 'EmulatePropertyChanged' could not be found on object of type 'Uno.UX.PropertyObject' in preview.

  • If Fuse Studio is unable to open devices.json for editing, an error message is now displayed. Previously, this could cause Fuse Studio to crash.

Fuselibs

SafeEdgePanel

  • Added SafeEdgePanel to assist in creating iPhone X capable layouts.

Android

  • Fixed a defect that performed layout with a 0 density on Android at startup

Vector Drawing

  • Fixed a defect in partial line drawing in Preview that resulted in a spurious line being drawn. This happened when the partial curve overlapped the end of the path data.
  • Fixed a defect that prevented a single-segment, horizontal or vertical, line from rendering in Path with StretchMode="Uniform" (the default StretchMode).
  • Fixed a defect that prevented a Path with a single horizontal or vertical line from rendering in Preview (DotNet).
  • Fixed the width of strokes in Preview (DotNet). They were too small on devices with a density other than 1.
  • Fixed a Preview/DotNet rendering defect that resulted from unclosed paths in Path.Data.
  • Fixed Android strokes to use the correct cap and join instead of always being Butt and Bevel.
  • Fixed bug where setting Data on a Path could end up not rendering inside a NativeViewHost on iOS

Grid

  • Fixed a Grid defect that resulted in some cells not calculating the correct layout size.
  • Grid now detects a common invalid configuration and emits an error. This may trigger on projects that currently work, but are relying on undefined/broken behavior.

Instance / Each

  • Added IsEnabled to allow conditional instantion of templates in Instance
  • Added Match to pick a specific template
  • Added Defaults to limit default instances, useful when using bindings to match criteria

FuseJS

  • Added support for passing arguments from UX to the model constructor using the ModelArgs attribute.

EdgeNavigator

  • Improved the JavaScript model and object support on EdgeNavigator.
    • EdgeNavigator.Pages functions like PageControl.Pages, binding model data to templated pages.
    • Set IsRouterOutlet="true" to enable Router functionality.

Internal APIs

  • The following protected internal members have been made just internal, as they refer to internal types and weren't meant to be available to derived types:
    • Fuse.Controls.TextInputControl.Editor
    • Fuse.Controls.TextInputControl.TextInputControl(TextEdit)
    • Fuse.Physics.ForceFieldTrigger.SetForce(Body, float)
    • Fuse.Physics.ForceFieldEventTrigger.OnTriggered(Body)
    • Fuse.Controls.TextControl._textRenderer

Grid

  • Fixed a defect in the default metric mode of Grid that could result in incorrect layout calculations, in particular if putting a Grid inside a StackPanel with auto columns.

Selection

  • Added isSelected function for determine selection status within an expression

Element

  • Added Size and Height to Element as an alternate way to control the layout. This is useful for some animation and binding situations.

Cycle

  • Added Restore option Forward to allow animating forward to return to rest state

Device and window()

  • Marked several types internal that should not have been public: SystemUI and related types
  • Changed ClientPanel to use Padding instead of panels.
  • Added window() function to get device UI borders: safeMargins, staticMargins and experimental deviceMargins. This will allow developing for devices with extended border areas such as the iPhone X
  • Added Device global to query platform details, such as Device.isIOS and Device.isAndroid
  • Removed the RelativeToKeyboardMode relative translation. This was undocumented and did not appear to work correctly, or do something useful. To move relative to device controls you can now use window().safeMargins and window().staticMargins

Keyframe

  • Fixed Keyframe to allow expressions on the property values.

SwipeGesture

  • A Simple or Auto SwipeGesture will no longer automatically activate at the halfway point, whereas a Active gesture will. To get the old default behavior, which is considered a defect, use Threshold="0.5".
  • Added a SwipeGesture.Threshold to configure the automatic activation distnace.

Image loading errors

  • Added more info to the messages reported on failure during image loading.

Fuse.Scripting

  • Marked NativeMember.Context as Obsolete. Either use passed-down Context, or dispatch to ThreadWorker instead.

Uno

Uno compiler

  • Exposing internal types through protected members is now a compilation error, to match C#'s behavior. Some code may need to be updated, for instance by making the exposed type public or the member internal.
  • Fixed a bug that resulted in a crash at startup during the construction of Uno's runtime type information when using certain (rare) combinations of generic types.

UX Compiler

  • Fixed a codegen bug where property bindings to properties with generic type arguments (such as LetFloat) would generate invalid Uno code.

Uno.Net.Http

  • Made the following types internal. They were never meant to be exposed in the first place, and shouldn't be used:
    • Uno.Net.Http.AbsolutePathParser
    • Uno.Net.Http.HashParser
    • Uno.Net.Http.HostInfo
    • Uno.Net.Http.HostInfoParser
    • Uno.Net.Http.QueryParser
    • Uno.Net.Http.SchemeParserResult
    • Uno.Net.Http.SchemeParserResult
    • Uno.Net.Http.UserInfoParser
    • Uno.Net.Http.UriScheme
    • Uno.Net.Http.UriSchemeType
  • Introduced Uri.Fragment.
  • Marked Uri.Hash as obsolete. Use Uri.Fragment instead.
  • Marked Uri.GetQueryParameters() as obsolete. Use Query.Substring(1).Split('&') instead.
  • Marked Uri.Combine(string, string) as obsolete. Use String.Format("{0}/{1}, baseUri.TrimEnd(new char[] { '/' }, uri.TrimStart(new char[] { '/' }))" instead.
  • Marked Uri.Combine(string, string) as obsolete. Use Uri(Uri, string).OriginalString instead.
  • Marked Uri.Encode as obsolete. Use Uri.EscapeDataString(string) instead.
  • Marked Uri.Decode as obsolete. Use Uri.UnescapeDataString(string) instead.

Uno.Threading

  • Marked public versions of ConcurrentDictionary.Add(TKey, TValue) and ConcurrentDictionary.Remove(TKey) as obsolete. Use IDictionary-versions instead.
  • Marked public versions of ConcurrentDictionary.GetEnumerator() as obsolete. Use IEnumerable-versions instead.
  • Marked public versions of ConcurrentDictionary.Keys and ConcurrentDictionary.Values as obsolete. Use IDictionary-versions instead.

UnoCore

  • Removed obosolete methods from Uno.Color. These has been obsolete since Uno 0.46:
    • Uno.Color.ToRgb24(float3)
    • Uno.Color.ToRgba32(float4)
    • Uno.Color.FromRgb24(int3)
    • Uno.Color.FromRgb24(uint)
    • Uno.Color.FromRgba32(int4)
    • Uno.Color.FromRgba32(uint)
    • Uno.Color.ToHex(int3)
    • Uno.Color.ToHex(int4)

.NET

  • Fixed a code-generator bug where long-literals that were larger than int.MaxValue, but smaller than uint.MaxValue accidentally got sign-extended.
  • Fixed a code-generator bug where shifts on unsigned values accidentally got sign-extended.

Premiumlibs

CameraView

  • Fixed issue where saving captured photos on iOS did not include EXIF data
  • Added ability to save thumbnails of captured photos.
  • Add <PhotoPreview />, a class that enableds a fast-path for previewing captured photos inside a <NativeViewHost />

1.8.0.15593

16 Apr 14:56
630a7aa
Compare
Choose a tag to compare

Highlights

  • Lots of improvements to the new Sketch importer
    • Coincidentally leading to a number of bug fixes for vector rendering :)
  • New feature for argument passing from UX to FuseJS models
  • SafeEdgePanel for creating iPhone X compatible layouts
  • Thumbnail support and faster photo preview in CameraView
  • And a lot of bug fixes all around!

Fuse Studio

  • Sketch import

    • New menu option Project/Sketch import to select which Sketch files to import symbols from.
    • Opacity on layers now translate to opacity on the resulting ux panel
    • Fixed a bug where shadows where flipped in the X-direction in UX compared to Sketch
    • Shadow mode set to PerPixel in UX to yield the expected result
    • Shadows on texts in Sketch now supported
    • Warn about not supporting inner shadows in UX
    • Fixed a bug where shapes split into multiple parts by scissoring where ignored
    • Set TextWrapping mode to Wrap on all texts in UX for better default behavior
    • Multiple text styles on one text object in Sketch now gives warning when generating UX
  • You can now filter custom classes in components view

  • Improved the performance of the log view

  • Added a file dialog for browsing for FileSource of an Image

  • Fixed a bug that caused comments to be removed when dragging into an element

  • Fixed issue where introducing an ux:Property would in some cases report Member 'EmulatePropertyChanged' could not be found on object of type 'Uno.UX.PropertyObject' in preview.

  • If Fuse Studio is unable to open devices.json for editing, an error message is now displayed. Previously, this could cause Fuse Studio to crash.

Fuselibs

SafeEdgePanel

  • Added SafeEdgePanel to assist in creating iPhone X capable layouts.

Android

  • Fixed a defect that performed layout with a 0 density on Android at startup

Vector Drawing

  • Fixed a defect in partial line drawing in Preview that resulted in a spurious line being drawn. This happened when the partial curve overlapped the end of the path data.
  • Fixed a defect that prevented a single-segment, horizontal or vertical, line from rendering in Path with StretchMode="Uniform" (the default StretchMode).
  • Fixed a defect that prevented a Path with a single horizontal or vertical line from rendering in Preview (DotNet).
  • Fixed the width of strokes in Preview (DotNet). They were too small on devices with a density other than 1.
  • Fixed a Preview/DotNet rendering defect that resulted from unclosed paths in Path.Data.
  • Fixed Android strokes to use the correct cap and join instead of always being Butt and Bevel.
  • Fixed bug where setting Data on a Path could end up not rendering inside a NativeViewHost on iOS

Grid

  • Fixed a Grid defect that resulted in some cells not calculating the correct layout size.
  • Grid now detects a common invalid configuration and emits an error. This may trigger on projects that currently work, but are relying on undefined/broken behavior.

Instance / Each

  • Added IsEnabled to allow conditional instantion of templates in Instance
  • Added Match to pick a specific template
  • Added Defaults to limit default instances, useful when using bindings to match criteria

FuseJS

  • Added support for passing arguments from UX to the model constructor using the ModelArgs attribute.

EdgeNavigator

  • Improved the JavaScript model and object support on EdgeNavigator.
    • EdgeNavigator.Pages functions like PageControl.Pages, binding model data to templated pages.
    • Set IsRouterOutlet="true" to enable Router functionality.

Internal APIs

  • The following protected internal members have been made just internal, as they refer to internal types and weren't meant to be available to derived types:
    • Fuse.Controls.TextInputControl.Editor
    • Fuse.Controls.TextInputControl.TextInputControl(TextEdit)
    • Fuse.Physics.ForceFieldTrigger.SetForce(Body, float)
    • Fuse.Physics.ForceFieldEventTrigger.OnTriggered(Body)
    • Fuse.Controls.TextControl._textRenderer

Grid

  • Fixed a defect in the default metric mode of Grid that could result in incorrect layout calculations, in particular if putting a Grid inside a StackPanel with auto columns.

Selection

  • Added isSelected function for determine selection status within an expression

Element

  • Added Size and Height to Element as an alternate way to control the layout. This is useful for some animation and binding situations.

Cycle

  • Added Restore option Forward to allow animating forward to return to rest state

Device and window()

  • Marked several types internal that should not have been public: SystemUI and related types
  • Changed ClientPanel to use Padding instead of panels.
  • Added window() function to get device UI borders: safeMargins, staticMargins and experimental deviceMargins. This will allow developing for devices with extended border areas such as the iPhone X
  • Added Device global to query platform details, such as Device.isIOS and Device.isAndroid
  • Removed the RelativeToKeyboardMode relative translation. This was undocumented and did not appear to work correctly, or do something useful. To move relative to device controls you can now use window().safeMargins and window().staticMargins

Keyframe

  • Fixed Keyframe to allow expressions on the property values.

SwipeGesture

  • A Simple or Auto SwipeGesture will no longer automatically activate at the halfway point, whereas a Active gesture will. To get the old default behavior, which is considered a defect, use Threshold="0.5".
  • Added a SwipeGesture.Threshold to configure the automatic activation distnace.

Image loading errors

  • Added more info to the messages reported on failure during image loading.

Fuse.Scripting

  • Marked NativeMember.Context as Obsolete. Either use passed-down Context, or dispatch to ThreadWorker instead.

Uno

Uno compiler

  • Exposing internal types through protected members is now a compilation error, to match C#'s behavior. Some code may need to be updated, for instance by making the exposed type public or the member internal.
  • Fixed a bug that resulted in a crash at startup during the construction of Uno's runtime type information when using certain (rare) combinations of generic types.

UX Compiler

  • Fixed a codegen bug where property bindings to properties with generic type arguments (such as LetFloat) would generate invalid Uno code.

Uno.Net.Http

  • Made the following types internal. They were never meant to be exposed in the first place, and shouldn't be used:
    • Uno.Net.Http.AbsolutePathParser
    • Uno.Net.Http.HashParser
    • Uno.Net.Http.HostInfo
    • Uno.Net.Http.HostInfoParser
    • Uno.Net.Http.QueryParser
    • Uno.Net.Http.SchemeParserResult
    • Uno.Net.Http.SchemeParserResult
    • Uno.Net.Http.UserInfoParser
    • Uno.Net.Http.UriScheme
    • Uno.Net.Http.UriSchemeType
  • Introduced Uri.Fragment.
  • Marked Uri.Hash as obsolete. Use Uri.Fragment instead.
  • Marked Uri.GetQueryParameters() as obsolete. Use Query.Substring(1).Split('&') instead.
  • Marked Uri.Combine(string, string) as obsolete. Use String.Format("{0}/{1}, baseUri.TrimEnd(new char[] { '/' }, uri.TrimStart(new char[] { '/' }))" instead.
  • Marked Uri.Combine(string, string) as obsolete. Use Uri(Uri, string).OriginalString instead.
  • Marked Uri.Encode as obsolete. Use Uri.EscapeDataString(string) instead.
  • Marked Uri.Decode as obsolete. Use Uri.UnescapeDataString(string) instead.

Uno.Threading

  • Marked public versions of ConcurrentDictionary.Add(TKey, TValue) and ConcurrentDictionary.Remove(TKey) as obsolete. Use IDictionary-versions instead.
  • Marked public versions of ConcurrentDictionary.GetEnumerator() as obsolete. Use IEnumerable-versions instead.
  • Marked public versions of ConcurrentDictionary.Keys and ConcurrentDictionary.Values as obsolete. Use IDictionary-versions instead.

UnoCore

  • Removed obosolete methods from Uno.Color. These has been obsolete since Uno 0.46:
    • Uno.Color.ToRgb24(float3)
    • Uno.Color.ToRgba32(float4)
    • Uno.Color.FromRgb24(int3)
    • Uno.Color.FromRgb24(uint)
    • Uno.Color.FromRgba32(int4)
    • Uno.Color.FromRgba32(uint)
    • Uno.Color.ToHex(int3)
    • Uno.Color.ToHex(int4)

.NET

  • Fixed a code-generator bug where long-literals that were larger than int.MaxValue, but smaller than uint.MaxValue accidentally got sign-extended.
  • Fixed a code-generator bug where shifts on unsigned values accidentally got sign-extended.

Premiumlibs

CameraView

  • Fixed issue where saving captured photos on iOS did not include EXIF data
  • Added ability to save thumbnails of captured photos.
  • Add <PhotoPreview />, a class that enableds a fast-path for previewing captured photos inside a <NativeViewHost />

1.7.3.15528

16 Apr 14:56
630a7aa
Compare
Choose a tag to compare

This is a bug fix release, with the following fixes:

The Mystery of the Missing Bug Fixes

What's worse than having bugs? Fixing the bugs and then reintroducing them one release later!
A couple of the issues fixed in 1.6 managed to crawl back into Fuse 1.7 due to a bit of clutter with our release processes. They're now fixed... again!

  • Added back removed API Context.Invoke(Action ...).
  • Fixed a NullReferenceException in NativeEvent.RaiseAsync(params object[]).

1.7.2.15505

16 Apr 14:56
630a7aa
Compare
Choose a tag to compare

This is a bug fix release, with the following fixes:

Router

  • Fixed a crash in Router.GoUp that could be seen when pressing the back button at the root page of navigation.

1.7.1.15473

16 Apr 14:53
630a7aa
Compare
Choose a tag to compare

This is a bug fix release, with the following fixes:

Fuse.Nodes

  • Fixed a bug where triggering onParameterChanged on an element would lead to a crash.

UnoCore

  • Fixed a bug in IntPtr.GetHashCode where the returned hash-code was more or less random. This lead especially to big problems when using IntPtr as a Dictionary key.

1.7.0.15432

16 Apr 14:53
630a7aa
Compare
Choose a tag to compare

Highlights

  • New partial curves feature. Very handy for drawing growing vector shapes!
  • Lots of bugfixes overall.
  • And someone seems to have sneaked in a very early version of our new Sketch importer!

Fuse Studio

  • New experimental Sketch Importer available which lets you convert Sketch symbols to UX classes. Read the docs carefully and keep in mind that it's still very early days for this feature. :) (The old Sketch importer still works as before.)
  • Fixed suggestions for ux:Class and ux:Property in the UX code completer

Fuselibs

Partial Curves

  • Added support for drawing partial curves to Path and Curve. Refer to the PathStart, PathLength and PathEnd properties.
  • Added the path expressions pathPointAtDistance and pathTangentAngleAtDistance for locating an offset along a Path or Curve and the heading.

PageControl

  • Fixed a crash resulting from adding dynamic pages and binding by name

Router / Navigator

  • Fixed the invalid reuse of an existing page if the context does not match
  • Fixed goBack to properly modify the route with two duplicate routes in the history

FuseJS

  • Fixed bug where arrays inside arrays would produce unexpected behavior
  • Fixed bug where a cycle in the object graph would result in infinite recursion in some cases
  • Fixed bug where changing the value of a property from an object to a primitive value would cause odd behavior in some cases.

TextColor Opacity

  • Fixed a failure to render translucent TextColor correctly
  • Fixed the rendering of opaque emoji when TextColor is translucent (they will not also be translucent, though still use the font coloring)

Node Data Context

  • Removed some deprecated methods and classes from Node: IDataListener, OnDataChanged. These were not meant to be public.
  • Deprecated {} in favour of the new data() function. {} had unusual binding rules and would often not bind to the intended context. data() always binds to the prime data context, it's unambiguous and predictable.
  • Fixed the object provided to JavaScript callbacks in args.data. It will now always be the prime data context, not just the next contextual data.
  • Deprecated and removed several functions which were not meant to be public. The deprecated ones will be removed shortly, as the current interface cannot be supported in the future. ISiblingDataProvider, ISubtreeDataProvider, IDataEnumerator, Node.GetFirstData, Node.EnumerateData, Node.BroadcastDataChange, Node.IDataListenere, Node.OnDataChanged, Node.AddDataListener, Node.RemoveDataListener, IObject, IArray

LinearGradient

  • Fixed bugs in gradient rendering on desktop (DotNet targets)

Expressions

  • Added support for boolean == and != expressions, which can be used for things like negating boolean expressions.
  • Added support for the logical not operator. This means you can do "!someBoolean" to logically negate it.
  • Fixed negation operator (-, eg. -someValue). Previously it was far to positive. ;)
  • Added vector accessors x(v), y(v), z(v), w(v) to access the component values of float/2/3/4 values. (Note: x and y have an overloaded meaning now, also providing Element position).
  • Added atanVector to compute arc-tangent from a float2 input

ScrollView

  • Fixed bug where ScrollView's inside a NativeViewHost would scroll to fast
  • Fixed bug where the scrolling indicator in a native ScrollView would not show on iOS
  • Added ContentSize property on the Fuse.Controls.Native.IScrollViewHost interface. Needed by iOS to layout the native scrollview correctly

Control

  • Setting the Background property to something else than SolidColor or StaticSolidColor has been deprecated, and gives a warning. Support for this will be removed in an upcoming release.

Video

  • Setting the StretchMode property to Scale9 on VideoVisual has been depecated, and gives a warning. Support for this will be removed in an upcoming release.
  • Removed protected constructor for LayoutFunction, this was not meant to be public. Sealed the derived classes, they were not meant to be extendable.

JavaScript

  • Added JavaScript.Names with option Require to prevent injecting names into the JavaScript code namespace.
  • Several Uno functions in ScriptModule and related classes have been marked internal. These were never meant to be part of the public API.

Uno

  • Removed obsolete method BitmapFont.CreateFromPbf().
  • Removed obsolete classes SdfFontImporter, SdfFontShaderBlock and SdfFontShader.
  • Made String.IndexOf() and String.LastIndexOf() throw ArgumentOutOfRangeException on negative values on all build-targets.
  • Implemented String.IndexOf(char, int, int), String.LastIndexOf(char, int, int), String.IndexOfAny() and String.LastIndexOfAny.
  • Implemented Array.IndexOf<T>() and Array.LastIndexOf<T>().
  • Removed everything in Uno.Content.Splines and Uno.Content.Models. This was already marked as obsolete a while ago, and all known users of the API has been removed.
  • Random.NextInt(int) now throws ArgumentOutOfRangeException when passed negative values, and returns zero when passed zero.
  • Random API has been more aligned with the .NET API:
    • The SetSeed-method has been marked as obsolete. Construct a new Random object instead to change the seed.
    • The NextInt-methods has been renamed to Next. The old methods are still available, but will produce obsolete warnings when used.
    • A NextDouble has been added, that returns a number between 0.0 and 1.0.
    • The NextFloat-methods has been marked as obsolete. Use the NextDouble method instead.
    • The NextFloat2, NextFloat3 and NextFloat4-methods has been marked as obsolete. Use multiple calls to NextDouble instead.

1.6.1.15360

16 Apr 14:53
630a7aa
Compare
Choose a tag to compare

This is a bug fix release, with the following fixes:

UX Compiler

  • Fixed a bug introduced in 1.6 that caused E0000: The given key was not present in the dictionary. errors to be generated for some UX document roots.

Fuse.Scripting

  • Restore accidentally broken NativeEvent.RaiseAsync() API.
  • Rolled back NativeProperty constructor API to the pre-1.6 state. Code updated to 1.6 needs to be rolled back as well.
  • Previous changes resulted in a breaking change we would rather avoid so we reintroduce Invoke(Action ..) so we can take it through the usual deprecation cycle.

1.6.0.15273

16 Apr 14:53
630a7aa
Compare
Choose a tag to compare

Highlights

  • The new JavaScript programming model is finally available!
    • It's still in BETA so here be dragons. Make sure to read the docs carefully! (But something as exciting as this is worth the risk of a few dragons)
  • More features supported in the stand-alone Fuse Preview app. (We kinda forgot them last time.... Sorry about that!)
  • A metric ton (according to our measurements) of updates & bugfixes in Fuselibs.

Fuse Preview app

  • Fuse.Camera, Fuse.CameraRoll, Fuse.Sound and Fuse.LocalNotifications are now supported in the app available on the iOS app store and Google Play.
  • Support for the new FuseJS features will be added once the rest of this release has gone through the QA phase.

FuseJS

  • A new model for structuring your apps which should make development (and testing!) much nicer.
  • ES6 support through transpiling so that you can write modern JS
  • Automatic change detection (e.g. you can choose to not use Observables)
  • But keep in mind that this is still in beta and things may change so read the docs carefully

Fuselibs

Image

  • Fixed issue where <Image /> inside a <NativeViewHost /> on android could display incorrectly

ScrollView

  • Fixed bug where ScrollView's inside a NativeViewHost would scroll to fast
  • Fixed bug where the scrolling indicator in a native ScrollView would not show on iOS
  • Added ContentSize property on the Fuse.Controls.Native.IScrollViewHost interface. Needed by iOS to layout the native scrollview correctly

Let

  • Introduced an experimental Let feature that allows creating expression aliases and local variables in UX
  • Added specific type version of Let, such as LetFloat and LetString. This improve the ability to connect pieces of the UX together and do animation/transitions in UX without using JavaScript.

Instantiator

  • Improved the internals of Instantiator (the base for Each and Instance). This also fixed a few corner cases with templates not updating, but should otherwise not affect user code.
  • Fixed the creation of templates in Each / Instance when the data context is null/non-extant. It will now not instantiate the templates are all. This prevents some kinds of binding defects and improves efficiency with default templates.

Element

  • Fixed an incorrect cascade of MinWidth / MinHeight. This could only be noticed in certain scenarios using BoxSizing="FillAspect".
  • Fixed the width, height, x, and y functions to support an element losing its layout. They become undefined in this case, thus allowing a syntax like width(element) ?? 50

StackPanel

  • Fixed the invalid propagation of MaxWidth/MaxHeight in a StackPanel to its children

Data Context

  • Resolved a situation with nested context binding {}, such as With and Instance, where the data would not correctly update

Selection

  • Fixed the ordering of events so that SelectionChanged is emitted after the bound value is updated

Expressions

  • Deprecated UnaryOperator.OnNewOperand and OnLostOperand. These are part of a broken pattern of using unary expressions (and were not present on Binary/Ternary/QuaternaryOperator). You generally shouldn't need this, and should implement Compute instead. In the rare cases you need the virtuals you'll need to extend Expression and implement Subscribe, using ExpressionListener as a way to capture the correct functionality.
  • Moved VarArgFunction.Argument to Expression.Argument. It's in a base class so still has visibility in VarArgFunction.
  • VarArgFunction.Subscription.OnNewData and OnLostData have been sealed. They should not have been open for overriding before as it conflicts with the inner workings on the class. Only the OnNewPartialArguments and OnNewArguments should be overridden.
  • Improved error handling on several operators and math functions. Instead of exceptions these should produce the standard conversion/computation warnings for invalid types.
  • Added size() function to force conversion to a Size or Size2 type. Useful when dealing with unknown types and some operators that would otherwise result in the undesired conversion.

Navigation

  • Fixed an issue with Navigator.Pages not registering pages correctly in certain initialization orders
  • Added $navigationRequest to Navigation.Pages objects. This can be used to fine-tune the navigation.

Instance

  • Added Instance.Item to work similar to an Each with a single data item

Expression Functions

  • Added nonNull for special evaluation handling for temporary null values. This may be useful in migrating code that is now producing many incompatible argument warnings.
  • Changed operators / functions to report warnings if they are provided with invalid arguments. This should help locate errors in code that were previously silent and just didn't evaluate, or evaluated wrong. Consider using the ?? operator, and the isNull, isDefined and nonNull functions to deal with non-data scenarios.
  • Removed protected from BinaryOperator.OnNewOperands. This was intended to be internal as there is no correct way to overload it. If you happened to use it we can provide a different base-class to use for you.

Fuse.Preview Selection

  • Removed the following APIs, that were never meant to be exposed to user-code:
    • Fuse.Visual.DrawLocalSelection(DrawContext, Rect)
    • Fuse.Visual.DrawSelection(DrawContext)
    • Fuse.AppBase.InvalidateSelection()
    • Fuse.App.DrawSelection(DrawContext)
    • Fuse.Preview.SelectionManager
    • Fuse.Preview.ISelection

Conversions

  • Added float() expression to force conversion to float values
  • Added string() expression to force conversion to string values

Timer

  • Fixed issue where creating a repeating Timer with 0 delay in JavaScript would not prevent the worker thread to become idle.

RangeControl

  • RangeControl.Value and RangeControl2D.Value are not longer clamped to the Range of the control. This fixes issues where the Value was incorrectly modified when the range and value were both data bound. The user behaviors LinearRangeBehavior and CircularRangeBehavior will both however clamp to the range -- the user cannot select outside the range.

Observables and bindings

  • Fixed an issue where missing data was propagated as null. This will affect Observable's that contain zero data, and may have resulted in some bindings showing old/incorrect data.

Multi-density image sources

  • Fixed an issue where the desired size of a multi-density source ended up as the pixel size of the selected image source. The effect was that images rendered on a high-density screen, would appear larger than on a low density screen.

Timeline

  • Fixed an issue where PlayMode="Wrap" would not loop if the duration was less than 1 second

Expressions

  • Added isDefined to check if a value is known in the context
  • Added isNull to check if a value is null or doesn't exist

Router

  • Added object support to Router script functions, such as goto, push, bookmark, etc. This mirrors the upcoming Model ability to use objects as path elements.
  • Added object support to Modify/Push/GotoRoute actions.
  • Added NavigationControl.modifyPath to the JavaScript interface. This allows extended local path manipulation without using a router.

TextView

  • Fixed iOS issue where the return key would display "next" instead of "return".

Navigation

  • Navigator blocks input to pages while transitioning to new pages. To get the old behaviour, where input is not blocked, set <Navigator BlockInput="Never">.

Fuse.Reactive

  • Added OnLostData to the IListener interface. This is needed to properly deal with changes in context in
    Preview, Model, and some JavaScript situations.
  • Added OnLostData to the InnerListener class. Implementations should deal with this scenario.
  • Changed null coalesce ?? to use the default when the left operand doesn't exist, not just when it's null

Fuse.Marshal

  • ToDouble replaced with TryToDouble for naming consistency (old names remain as deprecated)

Fuse.Panel

  • Fixed a bug where IsFrozen would ignore Panel.Opacity.

Fuse.Controls.DatePicker/Fuse.Controls.TimePicker

  • Fixed an Uno reflection bug that caused these pickers to crash in preview.

Scripting

  • Fuse.Scripting's Function type has a Call method, this now takes a Scripting.Context. This guarantees that it can only occur on the VM thread.
  • Fuse.Scripting's Object type has a CallMethod method, this now takes a Scripting.Context. This guarantees that it can only occur on the VM thread.
  • IMirror is no longer implemented by ThreadWorker. This functionality has been moved to the context
  • Moved ArrayMirror, ClassInstance, ModuleInstance, ObjectMirror, Observable, ObservableProperty, RootableScriptModule & ThreadWorker to the Fuse.Scripting.JavaScript namespace
  • Removed the CanEvaluate method and instead rely on the passing of the Scripting.Context to know if we are on the VM thread or not.
  • The 'wrapping' functionality has been moved from the ThreadWorker to a standalone static class called TypeWrapper. The IThreadWorker no longer provides Wrap & UnWrap
  • ThreadWorker.ScriptClass functionality moved to context. We will likely want to factor this out to a helper class however for now the major benefit is that ThreadWorker no longer owns these features.
  • Remove the public Context property from the ThreadWorker. Sadly t...

1.5.0.15046

16 Apr 14:53
630a7aa
Compare
Choose a tag to compare

Highlights

  • Brand new stand-alone preview app!
  • Fuse Studio now much faster & snappier with larger app projects

Tool updates

  • Stand-alone preview app which means you can preview (most) projects without needing Xcode or the Android SDK/NDK!
  • Improved performance of Fuse Studio, especially when working with larger projects
  • Fixed an issue where double clicking the Fuse tray icon on Windows would show an error message "Unable to create Fuse document client. Please try again."
  • Fixed an issue where the building indicator bar would not show when you opened a project
  • Clicking the "Build failed" and "Auto reload failed" indicator bars now opens the log view
  • Fixed an issue on macOS where UnoHost processes were left running if Fuse crashed
  • Fuse now prints information about OpenGL version when local preview starts, and gives an error message if the version is lower than 2.1
  • Added tool tips to several label-less inspector editors
  • Show busy indicator as a notification bar if building or reifying takes more than 250ms

Library updates

  • Premium libs: Fixed issue where older iOS devices would fail to capture photos after CameraView.PhotoCaptureImageSource has been used once to display a captured photo.
  • Fixed a defect in NodeGroup that would cause some nodes to be inserted in the wrong order, in particular if using combinations of Each, With, triggers, and Defer.

Expressions

  • Fixed an issue where toUpper and toLower would crash on null intput. Now they propagate null instead.

DatePicker/TimePicker

  • Fixed an issue where some properties (for example TimePicker.Is24HourView) wouldn't work when set from UX.
  • Fixed a documentation issue with TimePicker where the code example used the wrong name for the Is24HourView property.