June 3rd, 2015
by Markus Kemmann

The LaxarJS team is proud to announce its first stable release!

This release introduces the following new features:

  • The bundle version of LaxarJS can now be installed directly through the bower registry using bower install laxar
  • Widgets can now be loaded using custom adapters, and no longer have to depend on AngularJS (#170, #174, #171, #154)
  • An adapter for plain JavaScript widgets is available out-of-the-box (#124)
  • When using laxar.storage, multiple applications served from the same origin get individual storage prefixes to avoid collisions
  • All JSON schemas can leverage JSON schema v4 now (#189, #35)
  • Added the axFlowService to generate hyperlinks for navigation targets (#117)
  • Layouts may now be part of the theme in addition to the application (#186)
  • Controls have JSON descriptors now, which allows for them to be loaded from any location, especially from bower_components (#197)
  • The path to the default theme is now configurable, meaning that you do not have to use LaxarJS UiKit to style your application (#202)

We removed a lot of boilerplate and legacy code:

  • Mixin support was removed in favor of compositions (#92)
  • The number and size of the builtin helper libraries was reduced: laxar.text was replaced by the smaller and simpler laxar.string helpers, while laxar.logging was simplified and several helpers were removed (#70, #128)
  • The compatibilty support for old-style didUpdate events was removed, always use JSON-patch for didUpdate (#103)
  • MSIE8 support was dropped (#158, #161)
  • jQuery is no longer a runtime dependency, but still available to widget tests (#147)
  • The underscore dependency was removed, in favor of standard ES5 features (#88)
  • The laxar.storage helper no longer implements shims for older browsers, but uses a transient object (#136)
  • The axPageFade directive is now an optional standalone control (#180)
  • The somewhat broken live theme switching was removed because YAGNI (#182, #159)

Various other improvements to performance:

  • Flow definition is loaded along with the other assets, avoiding an HTTP roundtrip and improving minification (#116)
  • All file listings can now be integrated into the application bundle (#183)

We improved the API consistency and simplicity in various places:

  • The widget scope was generalized as axContext which provides widget services independent of the integration technology (#167)
  • The widget.json is now automatically used for validation in spec tests (#149)
  • Our AngularJS modules and injections now adopt the AngularJS coding styles (#160, #178)
  • Generated topic- and DOM-IDs are more compact now, and always carry an ax prefix (#175)

Other Noteworthy Changes

The companion library LaxarJS Patterns was also released as version 1.0.0; here are the most important changes:

  • Artifact was renamed from laxar_patterns to laxar-patterns (#39)
  • The bundle version of LaxarJS Patterns can now be installed directly through the bower registry using bower install laxar-patterns
  • The patterns.resources helper no longer supports old-style didUpdate events (#27)
  • The patterns.resources helper now always puts its managed resource under $scope.resources, or axContext.resources for non-angular widgets (#29).
  • The patterns.actions helper seamlessly works with promises now, and accepts an event payload (#34, #33)
  • The underscore library is no longer a dependency (#25)

The companion library LaxarJS UiKit was also released as version 1.0.0; here are the most important changes:

  • The artifact was renamed from laxar_uikit to laxar-uikit (#121)
  • The bundle version of LaxarJS UiKit can now be installed directly through the bower registry using bower install laxar-uikit
  • The formatters and parsers are now public LaxarJS UiKit APIs (#115)
  • The DOM helpers were removed along with MSIE8 compatibility (#106, #108, #114)
  • The only remaining built-in controls are html-attribute and i18n. All other controls and their dependencies may now be installed through Bower. This means that trunk8, jQuery, jQuery UI, bootstrap-affix and bootstrap-tooltip are no longer mandatory parts of any LaxarJS application (#105)