Releases: fusetools/fuse-releases
1.8.2.15696
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
- New menu option
-
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 reportMember '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
withStretchMode="Uniform"
(the defaultStretchMode
). - 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 aPath
could end up not rendering inside aNativeViewHost
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 inInstance
- 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 likePageControl.Pages
, binding model data to templated pages.- Set
IsRouterOutlet="true"
to enableRouter
functionality.
Internal APIs
- The following
protected internal
members have been made justinternal
, as they refer tointernal
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 aGrid
inside aStackPanel
withauto
columns.
Selection
- Added
isSelected
function for determine selection status within an expression
Element
- Added
Size
andHeight
toElement
as an alternate way to control the layout. This is useful for some animation and binding situations.
Cycle
- Added
Restore
optionForward
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 usePadding
instead of panels. - Added
window()
function to get device UI borders:safeMargins
,staticMargins
and experimentaldeviceMargins
. This will allow developing for devices with extended border areas such as the iPhone X - Added
Device
global to query platform details, such asDevice.isIOS
andDevice.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 usewindow().safeMargins
andwindow().staticMargins
Keyframe
- Fixed
Keyframe
to allow expressions on the property values.
SwipeGesture
- A
Simple
orAuto
SwipeGesture
will no longer automatically activate at the halfway point, whereas aActive
gesture will. To get the old default behavior, which is considered a defect, useThreshold="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-downContext
, or dispatch toThreadWorker
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 memberinternal
. - 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. UseUri.Fragment
instead. - Marked
Uri.GetQueryParameters()
as obsolete. UseQuery.Substring(1).Split('&')
instead. - Marked
Uri.Combine(string, string)
as obsolete. UseString.Format("{0}/{1}, baseUri.TrimEnd(new char[] { '/' }, uri.TrimStart(new char[] { '/' }))"
instead. - Marked
Uri.Combine(string, string)
as obsolete. UseUri(Uri, string).OriginalString
instead. - Marked
Uri.Encode
as obsolete. UseUri.EscapeDataString(string)
instead. - Marked
Uri.Decode
as obsolete. UseUri.UnescapeDataString(string)
instead.
Uno.Threading
- Marked public versions of
ConcurrentDictionary.Add(TKey, TValue)
andConcurrentDictionary.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
andConcurrentDictionary.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
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
- New menu option
-
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 reportMember '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
withStretchMode="Uniform"
(the defaultStretchMode
). - 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 aPath
could end up not rendering inside aNativeViewHost
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 inInstance
- 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 likePageControl.Pages
, binding model data to templated pages.- Set
IsRouterOutlet="true"
to enableRouter
functionality.
Internal APIs
- The following
protected internal
members have been made justinternal
, as they refer tointernal
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 aGrid
inside aStackPanel
withauto
columns.
Selection
- Added
isSelected
function for determine selection status within an expression
Element
- Added
Size
andHeight
toElement
as an alternate way to control the layout. This is useful for some animation and binding situations.
Cycle
- Added
Restore
optionForward
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 usePadding
instead of panels. - Added
window()
function to get device UI borders:safeMargins
,staticMargins
and experimentaldeviceMargins
. This will allow developing for devices with extended border areas such as the iPhone X - Added
Device
global to query platform details, such asDevice.isIOS
andDevice.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 usewindow().safeMargins
andwindow().staticMargins
Keyframe
- Fixed
Keyframe
to allow expressions on the property values.
SwipeGesture
- A
Simple
orAuto
SwipeGesture
will no longer automatically activate at the halfway point, whereas aActive
gesture will. To get the old default behavior, which is considered a defect, useThreshold="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-downContext
, or dispatch toThreadWorker
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 memberinternal
. - 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. UseUri.Fragment
instead. - Marked
Uri.GetQueryParameters()
as obsolete. UseQuery.Substring(1).Split('&')
instead. - Marked
Uri.Combine(string, string)
as obsolete. UseString.Format("{0}/{1}, baseUri.TrimEnd(new char[] { '/' }, uri.TrimStart(new char[] { '/' }))"
instead. - Marked
Uri.Combine(string, string)
as obsolete. UseUri(Uri, string).OriginalString
instead. - Marked
Uri.Encode
as obsolete. UseUri.EscapeDataString(string)
instead. - Marked
Uri.Decode
as obsolete. UseUri.UnescapeDataString(string)
instead.
Uno.Threading
- Marked public versions of
ConcurrentDictionary.Add(TKey, TValue)
andConcurrentDictionary.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
andConcurrentDictionary.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
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
- New menu option
-
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 reportMember '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
withStretchMode="Uniform"
(the defaultStretchMode
). - 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 aPath
could end up not rendering inside aNativeViewHost
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 inInstance
- 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 likePageControl.Pages
, binding model data to templated pages.- Set
IsRouterOutlet="true"
to enableRouter
functionality.
Internal APIs
- The following
protected internal
members have been made justinternal
, as they refer tointernal
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 aGrid
inside aStackPanel
withauto
columns.
Selection
- Added
isSelected
function for determine selection status within an expression
Element
- Added
Size
andHeight
toElement
as an alternate way to control the layout. This is useful for some animation and binding situations.
Cycle
- Added
Restore
optionForward
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 usePadding
instead of panels. - Added
window()
function to get device UI borders:safeMargins
,staticMargins
and experimentaldeviceMargins
. This will allow developing for devices with extended border areas such as the iPhone X - Added
Device
global to query platform details, such asDevice.isIOS
andDevice.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 usewindow().safeMargins
andwindow().staticMargins
Keyframe
- Fixed
Keyframe
to allow expressions on the property values.
SwipeGesture
- A
Simple
orAuto
SwipeGesture
will no longer automatically activate at the halfway point, whereas aActive
gesture will. To get the old default behavior, which is considered a defect, useThreshold="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-downContext
, or dispatch toThreadWorker
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 memberinternal
. - 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. UseUri.Fragment
instead. - Marked
Uri.GetQueryParameters()
as obsolete. UseQuery.Substring(1).Split('&')
instead. - Marked
Uri.Combine(string, string)
as obsolete. UseString.Format("{0}/{1}, baseUri.TrimEnd(new char[] { '/' }, uri.TrimStart(new char[] { '/' }))"
instead. - Marked
Uri.Combine(string, string)
as obsolete. UseUri(Uri, string).OriginalString
instead. - Marked
Uri.Encode
as obsolete. UseUri.EscapeDataString(string)
instead. - Marked
Uri.Decode
as obsolete. UseUri.UnescapeDataString(string)
instead.
Uno.Threading
- Marked public versions of
ConcurrentDictionary.Add(TKey, TValue)
andConcurrentDictionary.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
andConcurrentDictionary.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
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
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
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
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
andux:Property
in the UX code completer
Fuselibs
Partial Curves
- Added support for drawing partial curves to
Path
andCurve
. Refer to thePathStart
,PathLength
andPathEnd
properties. - Added the path expressions
pathPointAtDistance
andpathTangentAngleAtDistance
for locating an offset along aPath
orCurve
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 newdata()
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
andy
have an overloaded meaning now, also providing Element position). - Added
atanVector
to compute arc-tangent from afloat2
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 theFuse.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 toScale9
on VideoVisual has been depecated, and gives a warning. Support for this will be removed in an upcoming release. - Removed
protected
constructor forLayoutFunction
, this was not meant to be public. Sealed the derived classes, they were not meant to be extendable.
JavaScript
- Added
JavaScript.Names
with optionRequire
to prevent injecting names into the JavaScript code namespace. - Several Uno functions in
ScriptModule
and related classes have been markedinternal
. These were never meant to be part of the public API.
Uno
- Removed obsolete method
BitmapFont.CreateFromPbf()
. - Removed obsolete classes
SdfFontImporter
,SdfFontShaderBlock
andSdfFontShader
. - Made
String.IndexOf()
andString.LastIndexOf()
throwArgumentOutOfRangeException
on negative values on all build-targets. - Implemented
String.IndexOf(char, int, int)
,String.LastIndexOf(char, int, int)
,String.IndexOfAny()
andString.LastIndexOfAny
. - Implemented
Array.IndexOf<T>()
andArray.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 throwsArgumentOutOfRangeException
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 toNext
. 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 theNextDouble
method instead. - The
NextFloat2
,NextFloat3
andNextFloat4
-methods has been marked as obsolete. Use multiple calls toNextDouble
instead.
- The
1.6.1.15360
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
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
andFuse.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 theFuse.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 asLetFloat
andLetString
. 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 forEach
andInstance
). 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 usingBoxSizing="FillAspect"
. - Fixed the
width
,height
,x
, andy
functions to support an element losing its layout. They become undefined in this case, thus allowing a syntax likewidth(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 asWith
andInstance
, 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
andOnLostOperand
. 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 implementCompute
instead. In the rare cases you need the virtuals you'll need to extend Expression and implementSubscribe
, usingExpressionListener
as a way to capture the correct functionality. - Moved
VarArgFunction.Argument
toExpression.Argument
. It's in a base class so still has visibility inVarArgFunction
. VarArgFunction.Subscription.OnNewData
andOnLostData
have been sealed. They should not have been open for overriding before as it conflicts with the inner workings on the class. Only theOnNewPartialArguments
andOnNewArguments
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 aSize
orSize2
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
toNavigation.Pages
objects. This can be used to fine-tune the navigation.
Instance
- Added
Instance.Item
to work similar to anEach
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 theisNull
,isDefined
andnonNull
functions to deal with non-data scenarios. - Removed
protected
fromBinaryOperator.OnNewOperands
. This was intended to beinternal
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
andRangeControl2D.Value
are not longer clamped to theRange
of the control. This fixes issues where theValue
was incorrectly modified when the range and value were both data bound. The user behaviorsLinearRangeBehavior
andCircularRangeBehavior
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 asgoto
,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 theIListener
interface. This is needed to properly deal with changes in context in
Preview, Model, and some JavaScript situations. - Added
OnLostData
to theInnerListener
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 withTryToDouble
for naming consistency (old names remain as deprecated)
Fuse.Panel
- Fixed a bug where
IsFrozen
would ignorePanel.Opacity
.
Fuse.Controls.DatePicker/Fuse.Controls.TimePicker
- Fixed an Uno reflection bug that caused these pickers to crash in preview.
Scripting
Fuse.Scripting
'sFunction
type has aCall
method, this now takes aScripting.Context
. This guarantees that it can only occur on the VM thread.Fuse.Scripting
'sObject
type has aCallMethod
method, this now takes aScripting.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 theFuse.Scripting.JavaScript
namespace - Removed the
CanEvaluate
method and instead rely on the passing of theScripting.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 calledTypeWrapper
. TheIThreadWorker
no longer providesWrap
&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 thatThreadWorker
no longer owns these features.- Remove the public
Context
property from theThreadWorker
. Sadly t...
1.5.0.15046
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 ofEach
,With
, triggers, andDefer
.
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 theIs24HourView
property.