New in version 0.27.0

Released one year ago

Please remember to uno clean your projects after upgrading Fuse.

Highlights
  • Changes in how router parameters are handled - to avoid unwanted animations and unnecessary reinitialization.
  • Automated iOS project signing so you won't need to set it manually in Xcode every time you export from Fuse.
  • Deprecation of the old native bindings. Long live foreign code!
  • Faster Android preview builds.

.. and a lot of other goodies!

Preview
  • Improved build times for Android preview. As an example, the example template that ships with Fuse can be expected to build around 20-25% faster. Note: the speedup is constant, meaning that it's most noticeable on smaller projects.
  • Fixed an issue where PulseTrigger.Handler didn't work in preview. This caused errors like Type not found: Fuse.Triggers.ScrolledArgs and Type not found: Uno.EventArgs>.PulseHandle.
Triggers
  • Unsealed lots of Trigger classes making it possible to create useful ux:Classes of them.
  • Added the WhileVisibleInScrollView trigger that is active when an element is positioned in, or near to, the visible area of a ScrollView.
Router and Navigator
  • To avoid problems with default routes and unintentional parameter differences, several default and empty-like parameters are now considered the same in Navigator. These are Uno null and empty string as well as JS null, empty object, and empty string. If these change only a "minor" page change is activated, which will cause an onParameterChanged handler to be called, but does not invoke animation by default.
  • Router will now give error if functions or observables are passed as route parameters (instead of silently failing). Route parameters must be serializeable as they are stored between refreshes in preview.
GraphicsView
  • Fixed issue where using a <GraphicsView /> inside <GraphicsView /> and using it on desktop would crash the app
Fuse.Scripting.Json
  • Fixed issue where newline characters would not be escaped correctly when using Json.Stringify from Uno.
Video
  • Implemented support for Volume in <Video /> on OSX preview
  • Fixed null ref that could trigger if databinding Progress on <Video /> to JavaScript
Rooting
  • Fixed an ordering issue with triggers and adding children. This was a hard to get defect that resulted in some trigger actions, such as in Navigator, not being activated correctly when the child is first added.
JavaScript cleanup
  • Cleaner debugging: Reduced the amount of duplicate utility scripts compiled by the JS context, showing up in some JS debuggers (e.g. Safari).
FileSystem
  • Made Fuse.FileSystem.Nothing, Fuse.FileSystem.FileSystemOperations, Fuse.FileSystem.BclFileInfo and Fuse.FileSystem.BclFileAttributes internal, as they were marked as public by mistake.
TextInput
  • Fixed bug where an unfocused <TextInput /> would not render RTL text correctly
  • Fixed bug where the SoftKeyboard would not appear on screen when <TextInput /> gets focused while in Landscape
ImageTools
  • Fixed getImageFromBase64 on Android
Effects
  • Effects are now Nodes, and can as a result be contained inside triggers.
  • Element.Effects is no longer accessible. The new way of adding effects, is to add them to Element.Children, like other Nodes.
  • Element.HasEffects, Element.HasActiveEffects and HasCompositionEffect are no longer accessible. These were only meant as helpers for the implementation of Element, and shouldn't be needed elsewhere.
Xcode project generation and signing
  • Added a property to set the Xcode Development Team ID, used for code-signing, in unoprojs:

      {
        "iOS": {
          "DevelopmentTeam": "YOURTEAMID"
        },
        ...
      }
    

    This property can also be set using the --set:Project.iOS.DevelopmentTeam="YOURTEAMID" flag to uno build, e.g.

      uno build iOS --set:Project.iOS.DevelopmentTeam="YOURTEAMID"
    

    The Team ID can be found at https://developer.apple.com/account/#/membership/.

  • The Development Team ID can also be set user-wide by adding the following to ~/.unoconfig:

      iOS.DevelopmentTeam: "YOURTEAMID"
    

    The file can be created if it doesn't already exist.

  • Uno now attempts to automatically find a Development Team ID if it hasn't already been set using either of the above methods. It does so by querying the machine's code-signing identities and selecting the first valid one it finds.

Foreign code
Foreign Java Bugfix
  • Fixed bug causing build error when returning structs from foreign Java Code
Expand on using Uno arrays from Foreign Java
  • Can now pass Uno unsigned byte arrays to foreign Java
  • Add ability to make boxed Uno arrays from Java You can now create Uno arrays in Java. To do this you make a new instance of the boxed array types passing in either:
    • the desired length of the Uno array
    • the Java array you want to convert
LongArray ularr = new LongArray(100);
IntArray uiarr = new IntArray(new int[]{1,2,3});

The length constructor works on all the following types. The Java array conversion works on all except the types marked with a *

  • BoolArray
  • ByteArray
  • CharArray *
  • DoubleArray
  • FloatArray
  • IntArray
  • LongArray
  • ObjectArray *
  • ShortArray
  • StringArray *
Deprecations
Old bindings
  • The following packages have been deprecated, and will be removed in an upcoming release. Code using these packages can be re-written in foreign code.
    • Experimental.iOS
    • ObjC
    • Android
TextInput
  • Removed PlaceholderText and PlaceholderColor from <TextView />. These properties did not belong on <TextView /> in the first place and was never properly implemented across platforms. Semantically <TextView /> is just a viewer and editor for large amounts of text. If you need a placeholder it should be implemented in UX, for instance like this:
<TextView>
    <WhileString Test="IsEmpty">
        <Text TextWrapping="Wrap">My Placeholder</Text>
    </WhileString>
</TextView>