New in version 1.1.0

Released 2 months ago

Please remember to uno clean your projects after upgrading Fuse.

Highlights

  • Lots of new UX expression functions - including the Each-index we've all wanted for so long!
  • UX compiler has been optimized to reduce compile times and improve editing speed in Fuse Preview. (Real-time preview is now even more real-time.)
  • Control build flags from within Fuse (not just on the command line)
  • HLS video streams should now also work on iOS.
  • Finally got rid of the Freetype- / SIGILL-related crashes on older Mac models. (Thanks Olle! Enjoy the time off with your family!)
  • Added MapMarker.Tapped to make it easier to poke your place of residence.

In addition to a lot of other fixes & features.

Tooling

Build flags dialog
  • Added a new dialog for adding build flags (like -DDEBUG_V8) from within Fuse. It can be found in the Preview menu.
File watching
  • Fixed a bug where Fuse sometimes failed to notice when a file in a project had been created.
Update notificaitons
  • Fixed a bug where the change log would not show up in update notifications
Inspector (Fuse Studio)
  • Replaced the TextTruncation setting for text controls with an option for configuring MaxLength instead.
  • Fixed a bug where the value of certain editors would take on the value from a previously selected element when selected on macOS.

Fuselibs

Fuse.ImageTools
  • KEEP_ASPECT is no longer ignored on Android when using ImageTools.resize
  • Fixed bug in Android implementation that could result in exceptions due to prematurely recycled bitmaps
  • Added supported for encoding/decoding images to/from base64 on DotNet platforms, including Windows and Mac OS X.
Fuse.Camera
  • iOS: Fixed crash when using Fuse.Camera alongside <iOS.StatusBarConfig IsVisible="false" />
Fuse.Launchers
  • Fixed bug on iOS where URIs were incorrectly encoded, leading to some input with reserved URI-characters misbehaving.
FuseJS/Bundle
  • Added .list() to fetch a list of all bundled files
  • Added .readBuffer() to read a bundle as an ArrayBuffer
  • Added .extract() to write a bundled file into a destination path
Image
  • A Url-based Image that has failed to load will now retry when the Url is used again in a new Image
  • Added reload and retry JavaScript functions on Image to allow reloading failed images.
  • Fixed infinite recursion bug that could happen if a MemoryPolicy is set on a MultiDensityImageSource
ScrollingAnimation
  • Fixed issue where the animation could become out of sync if the properties on ScrollingAnimation were updated.
macOS SIGILL problems
  • Updated the bundled Freetype library on macOS to now (again) include both 32-bit and 64-bit symbols, which fixes an issue where .NET and preview builds would crash with a SIGILL at startup when running on older Mac models.
  • Updated the bundled libjpeg, libpng, Freetype, and SDL2 libaries for macOS to not use AVX instructions, since they are incompatible with the CPUs in some older Mac models. This fixes an issue with SIGILLs in native builds.
Native
  • Added feature toggle for implicit GraphicsView. If you are making an app using only Native UI disabling the implicit GraphicsView can increase performance. Disable the GraphicsView by defining DISABLE_IMPLICIT_GRAPHICSVIEW when building. For example uno build -t=ios -DDISABLE_IMPLICIT_GRAPHICSVIEW
Gestures
  • Fuse.Input.Gesture now only has an internal constructor. This means that external code can't instantiate it. However, this was never possible to do in a meaningful way, so this shouldn't really affect any applications.
Native TextInput
  • Fixed issue where focusing a <TextInput /> or <TextView /> by tapping it would not update the caret position accordingly.
Route Navigation Triggers
  • Activated, Deactivated, WhileActive, WhileInactve have all been fixed when used inside nested navigation. Previously they would only consider the local navigation, not the entire tree. If the old behavior is still desired you can set the Path="Local" option on the navigation.
  • Activated, Deactivated have been fixed to only trigger when the navigation has stabilized. If you'd instead like to trigger the moment the active page changes, which is closest to the previous undefined behavior, set When="Immediate"
  • The NavigationPageProxy use pattern has changed. Rooted is removed, Unrooted is now Dispose, and the constructor takes the parent argument. This encourages a safer use (avoiding leaks).
WhileActive
  • Fixed a crash in the rooting of certain tree structures using any of the Navigation triggers such as WhileActive
MapView
  • Support MapMarker icon anchor X/Y/File properties when setting MapMarkers via JS
  • Added <MapMarker Tapped="{myHandler}"/> to retain the data context for each tapped marker.
  • Added <MapView AllowScroll="false"/> to disable the user panning and scrolling around.
  • Fixed a bug causing crashes on iPhone 5s devices when using ShowMyLocation="true"
WebView
  • Added <WebView ScrollEnabled="false"/> to disable the user panning and scrolling around.
MemoryPolicy
  • Added QuickUnload memory policy to keep data in memory for as short as possible.
Fuse.Controls.Video
  • Fixed a bug where HLS streams would become zero-sized on iOS.
Expression functions
  • added index and offsetIndex as funtions to get the position of an element inside an Each
  • added functions mod, even, odd, and alternate to complement the index functions. These allow visually grouping elements on the screen based on their index.
  • added trigonometric math functions sin, cos, tan, asin, acos, atan, atan2, radiansToDegrees, degreesToRadians
  • added math functions abs, sqrt, ceil, floor, exp, exp2, fract,log, log2, sign, pow, round, trunc, clamp
  • added lerp function for linear interpolation between values
Fuse.Reactive
  • Fixes a bug where the app would crash if a databinding resolved to an incompatible type (e.g. binding a number property to a boolean value). (Marshal.TryConvertTo would throw exception instead of fail gracefully).
Fuse.Box / Fuse.Ray
  • Uno.Geometry.Box and Uno.Geometry.Ray has been replaced with Fuse.Box and Fuse.Ray.

Uno

UX Compiler/Fuse Preview Optimizations
  • Many optimizations to the UX compiler to reduce compile times and improve editing speed in Fuse Preview.
  • Android's allowBackup option is now configurable via the optional Android.AllowBackup value in the unoproj file
Uno.Testing
  • Registry.FindTest() has been removed.
  • TestSetup.Runner has been marked as readonly.
  • Assert.Ignore() has been added to allow ignoring tests at run-time.
  • A bug in Assert.AreNotEqual(float, float) and Assert.AreNotEqual(double, double) has been fixed, to make them format the result strings similar to their Assert.AreEqual counter-parts.
  • TestAttribute and IgnoreAttribute have gotten the apropriate AttributeUsages to match their behaviour. This means that using them outside of methods will now give compile-errors instead of doing nothing.
  • A bunch of internal details that were never intended to be public has been marked as internal:
    • AbstractRunner
    • DebugLogMessageDispatcher
    • AssertionFailedException
    • HttpMessageDispatcher
    • NamedTestMethod
    • Registry.Add()
    • Registry.Count
    • NamedTestMethod Registry[int index]
Uno.Data.Json
  • Fixed a bug where a JSON object with the same key repeated would cause a crash.