Fuse (beta) release #0.5.3278

This release contains several new features and fixes to the libraries, and the tool



  • Simulator client app usability improvements
    • Add option to reconnect when a connection is lost or can’t be established
    • Pause preview when an exception goes unhandled, with options to ignore exception or restart
    • Introduce “offline mode” showing the last successful version of the app
  • Fixed a bug in the UX code completer, where types found in the root namespace were not suggested.

Fuse libraries


  • TransformOrigin enum removed, replaced with singletons in TransformOrigins implementing ITransformOrigin.
  • New modes HorizontalBoxCenter and VerticalBoxCenter for 3D transforms
  • Rotation now supports XYZ values, these are treated as Euler angles (see Quaternion.FromEulerAngles). Shortcuts to DegreesX DegreesY and DegreesZ are now provided. The previous Degrees remains and is equivalent to DegreesZ
  • Rotation.Vector renamed EulerAngle to better reflect what it is and avoid confusion with rotation around a vector


  • IWindow now derives from IViewport, most fields move to base
  • Frustum.PixelToWorldRay has been removed. You must now use the IViewport interface Node.Viewport to get the world ray
  • DefaultShading.Camera is replaced with Viewport and it expects a viewport (defaults to DrawContext.Viewport)
  • Perspective removed from IViewport as it doesn’t belong there. Wrap your app in a Vieport and define the Perspective property
  • ICamera is now IFrustum as it better defines the purpose of those classes
  • OrthographicCamera renamed OrthographicFrustum


  • Node.IsVisible changes meaning: true if the node and all of its parents are visible (this is now a non-virtual function)
  • Node.IsLocalVisible introduced to mean if the local node is marked as visible (this is a virtual function)
  • Node.IsVisibleChanged event raised whenever IsVisible may have changed

Layout Changes

  • InvaildateLayout now takes a InvalidateLayoutReason parameter, but a suitable default has been provided
  • Element.IsLayoutInvalid has been removed as it cannot provide meaningful information.
  • Element.OnResized has been removed, subscribe to the Placed event instead
  • Element.OnPlaced has been removed, subscribe to the Placed event instead
  • PlacedArgs fields simplified. Use the ActualXXX element properties for current data.
  • ResizedArgs removed, only PlacedArgs is used now
  • IActualSize replaced with IActualPlacement
  • PlacedArgs and PlacedHandler now in the Fuse namespace
  • INavigaionPanel.Placed changed signature to match standard Element.Placed(object sender, PlacedArgs args)
  • INavigationPanel.ChildAdded/Removed changed to EventHandle<Node>, with signature (obejct sender, Node child)

Navigation naming

  • Renamed IPageProgress to INavigation
  • INavigationContext merged into INavigation
  • IPageProgress.Count renamed PageCount, and PageCountChanged event
  • IPageProgress.Current renamed PageProgress and PageProgressChanged event
  • PageIndicator.PageProgress is now Navigation
  • StructuredNavigation.ProgressChanged event removed, use PageProgressChanged
  • NavigationContext property renamed Navigation.Navigation
  • {Page key} binding will use the closer of Navigation.Page or the current page of Navigation.Navigation
  • CurrentPageBinding behavior removed, use Navigation.Page or Naviation.Navigation property on element instead


  • Add support for marking projects and packages “Internal”
  • Added Uri.Parse method
  • Android and IOS now use the ‘Mobile.Orientations’ project setting
  • Added OSX and APPLE UXL conditions
  • OSX now uses same http backend as ios and so no longer requires xli
  • Add milliseconds support for OffsetDateTimePattern
  • Increased ticks accuracy in Uno.Time on Android

Previews still seem to be broken in this version as per: https://www.fusetools.com/developers/forums/bug_reports/fuse_previews_no_longer_work_fuse_beta_release_053

Thanks for reporting, I’ve answered in the other thread.