@BeeWarloc BeeWarloc released this May 7, 2018

Assets 4

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 />

@ehvattum ehvattum released this Apr 17, 2018

Assets 6

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 />

@ehvattum ehvattum released this Apr 16, 2018

Assets 6

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 />

@ehvattum ehvattum released this Apr 16, 2018

Assets 6

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[]).

@ehvattum ehvattum released this Apr 16, 2018

Assets 6

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.

@ehvattum ehvattum released this Apr 16, 2018

Assets 6

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.

@ehvattum ehvattum released this Apr 16, 2018

Assets 6

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.

@ehvattum ehvattum released this Apr 16, 2018

Assets 6

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.

@ehvattum ehvattum released this Apr 16, 2018

Assets 6

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 the context is still available via the internal field so that the tests can work. This will need to be fixed.
  • Fuse.Reactive now depends on Fuse.Scripting so that it can talk about the Scripting.Context in it's provided interfaces.
  • DateTimeConverterHelpers moved to its own uno file.
  • IMirror's Reflect now takes a Scripting.Context
  • IThreadWorker no longer implement IDispatcher
  • Fuse.Scripting.JavaScript's ThreadWorker no longer blocks on construction
  • Implemented console.error, console.warn and console.info
  • Improved formatting for the above functions, as well as for console.log
  • The ScriptMethod<T> constructor now throws if it's passed ExecutionThread.MainThread with Func, instead of failing to run it later on.
  • The ScriptMethodInline constructor that takes an ExecutionThread as an argument is now obsolete. Use the one without instead. JavaScript needs to run on the JavaScript thread anyway.
  • The ScriptMethod<T> constructor that takes Func and ExecutionThread as arguments is now obsolete. Use the one without instead.
  • Calling script-methods that doesn't take any arguments should now consistently give an error. This was already the case for many functions. This is intended to ensure user-code is forward-compatible.
  • ScriptException.ErrorMessage has been marked as obsolete, use ScriptException.Message instead.
  • ScriptException.Message no longer includes all details about the script-exception, only the message itself. If you want the extra information, use ScriptException.ToString(), or check the specific fields.
  • Fuse.IScriptException has been marked as obsolete. This was previously unused.
  • ScriptException.JSStackTrace has been marked as obsolete, use ScriptException.ScriptStackTrace instead.
  • ScriptException.SourceLine has been marked as obsolete, and consistently returns null now. The latter was always the case except for when using V8 before. The same information can be deduced from the project files and FileName + LineNumber fields.
  • ModuleResult.Object has been marked as obsolete. Use ModuleResult.GetObject(Context) instead.
  • ModuleResult.Exports has been marked as obsolete. Use ModuleResult.GetExports(Context) instead.
  • Function.Call, Function.Construct, Object.InstanceOf and Object.CallMethod now takes a Context as their first argument. The old signatures has been marked as obsolete.

JavaScript: JavaScriptCore on Android

  • Added support for JavaScriptCore on Android. Build with -DUSE_JAVASCRIPTCORE to enable it on Android. JavaScriptCore is by default enabled on iOS.

Uno

Environment variables

The following environment variables can be used to configure Uno globally, potentially useful in CI environments:

  • LOG_LEVEL=<0..3> - Set verbosity level (default = 0)
  • LOG_TRACE=1 - Print exception stack traces where available
  • DEBUG_GL=1 - Enable the OpenGL debug layer in .NET builds

Android build target

  • Added the following build properties for requiring gradle repositories via UXL:
    • Gradle.BuildScript.Repository
    • Gradle.AllProjects.Repository

Project files

  • Support for iPhone 20pt 2x and 3x icons has been added. This can be customized using the iOS.Icons.iPhone_20_2x and iOS.Icons.iPhone_20_3x project-setting, respectively.
  • Support for iPad 20pt 1x and 2x icons has been added. This can be customized using the iOS.Icons.iPad_20_1x and iOS.Icons.iPad_20_2x project-setting, respectively.
  • Support for iPad Pro icons has been added. This can be customized using the iOS.Icons.iPad_83.5_2x project-setting.
  • Support for iOS Marketing icons has been added. This can be customized using the iOS.Icons.iOS-Marketing_1024_1x project-setting.
  • Support for iPhoneX Launch Image has been added. This can be customized using the iOS.LaunchImages.iPhone_Portrait_iPhoneX_3x and iOS.LaunchImages.iPhone_Landscape_iPhoneX_3x project-setting.

Command-line interface

  • The following old commands were removed from the release: cp, disasm, mkdir.

.NET backend

  • Set DEBUG_GL=1 in your environment to enable the OpenGL debug layer at run-time. This is available in .NET builds on macOS and Windows.

AppDelegate

  • Fixed regression on iOS where, because we had implemented the methods for pushnotifications apps were rejected from the app store for not requiring notifications even if they didnt use the notification's feature

Long path? Long code.

We can now extract zip files containing long filenames (255+ characters) on Windows. This should enable us to do things like providing Node.js on-demand in the future.

Premiumlibs

CameraView

  • Fixed issue where photos captured in landscape on iOS did not contain correct EXIF data for rotation
  • Fixed issue where photos captured on Android could end up with incorrect rotation in its EXIF data
  • Made all Futures in the CameraView uno API resolve or reject on the UI thread instead of it being undefined. One would never not use this API from the UI thread anyways.
  • Changed iOS to request permission to use microphone when capture mode is set to video.
  • Made saving photos on Android async. Before this would block the JS or UI thread
  • Fixed issue where user set picture size could be reset on some android devices
  • Fixed aspect ration mismatch issue between preview and photo captured when using user specified picture size
  • Fixed issue where setting a PreviewStretchMode could end up stretching incorrectly
  • Fixed issue where the live preview's aspect ratio did not match captured photos
  • Fixed issue where the Camera hardware resources were not released if the app enters background

Fuse Studio

  • Fixed an issue where in certain situations starting local preview of a project that was already open in Fuse would open a new Fuse window, rather than just focusing the existing window

@ehvattum ehvattum released this Apr 16, 2018

Assets 6

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.