Last Changes


  • #153: portal: angular-adapter: simplified widget and controller naming + NEW FEATURE: see ticket for details

  • #151: EventBus: fixed cycle count for zero subscribers

  • #148: documentation: more detailed information on the event bus, link to api doc


  • #146: documentation: improved the prerequisites in the and writing style
  • #143: documentation: fixed testing configuration example (andCallFake, not andCallThrough)
  • #142: documentation: fixed task alias for development server (start, not develop)
  • #144: EventBus: reject publishAndGatherReplies-promise after timeout + BREAKING CHANGE: see ticket for details


  • #137: flow: warn on empty place
  • #140: EventBus: make timeout configurable
  • #126: testing: axEventBus injection available to widget controllers during testing


  • #138: logging: the instance id is now generated by the log context and transmitted using an $http interceptor
  • #134: storage: fixed storage in iOS Safari private browsing


  • #125: axLayout: emit AngularJS event when loaded + NEW FEATURE: see ticket for details

  • #113: documentation: manual on tools

  • #122: testing: allow to inject dependencies + NEW FEATURE: see ticket for details

  • #123: portal: preload widget assets on page load

  • #117: portal: implemented a flow service that provides place urls usable as hyperlinks.
  • #121: documentation: have next steps point to manuals
  • #118: performance: removed $timeout from axPageFade
  • #120: portal: fixed flaky timestamp test
  • #119: portal: fixed race condition in page loader


  • #114: configuration: fixed mapping of deprecated fileListing entry.
  • #97: documentation: manual on themes
  • #112: documentation: removed colloquial style


  • #108: documentation: unify code-snippet format, and some polish
  • #109: documentation: added manual on providing controls
  • #107: angular widget adapter: added widget specific event bus service.
  • #106: documentation: fixed manuals, improved introduction in
  • #93: refactoring: extracted page related services into own files.
  • #98: documentation: added manual on events and pub/sub
  • #100: widget loader: added angular widget as default integration.
  • #105: moved resumable timer handling from flow to timer.
  • #104: configuration: deprecated configuration keys are no handled at one place.
  • #101: documentation: use "«" rather than "<<" for backwards navigation links
  • #76: documentation: widgets and activities
  • #75: documentation: flow and places.
  • #96: documentation: restructured existing documents and added stubs for missing ones.
  • #95: documentation: wrote a motivational article for LaxarJS.
  • #94: footprint: removed the outdated app stub in favor of grunt-init (see
  • #38: documentation: pages and compositions.
  • #91: portal: make sure that widget DOM is attached when linking
  • #90: documentation: secondary parts of any LaxarJS application + NEW FEATURE: see ticket for details

  • #89: documentation: primary concepts of LaxarJS

  • #84: storage: storing undefined now causes the entry to be removed


  • #87: portal: Ensure anonymization of logged events.
  • #86: logging: Added tests to ensure that string format compatible format strings using indexed placeholders are supported.
  • #85: utilities: Implemented support for value mapping functions in string.format. + NEW FEATURE: see ticket for details

  • #83: portal: provided a timestamp service with a mock that works with jasmine + NEW FEATURE: see ticket for details

  • #81: added check for duplicate area definitions in layouts


  • #82: implemented directives axId and axFor + NEW FEATURE: see ticket for details

  • #80: storage: Improved detection of WebStorage API for Internet Explorer

  • #79: assert: details given as object are now serialized
  • #77: flow: the log tag PLCE with the current place name is set after navigation


  • #73: portal: fixed lookup of merged CSS file
  • #69: portal: moved setting widget root element IDs to widget loader
  • #68: fixed wrongly global assert in jshintrc.
  • #67: re-added missing widget root element IDs.
  • #65: fixed navigation being broken when parameter values were missing.
  • #66: prevented endless navigation ping pong in flow controller
  • #63: axVisibilityService: use scope.$id to identify handlers, not
  • #62: fixed endless recursion on navigation when place and target have the same name.


  • #61: added first profiling tools for scope property watchers. + NEW FEATURE: see ticket for details

  • #60: tests: make sure PhantomJS is installed properly, before running spec tests.

  • #52: portal, testing: added visibility events and the axVisibilityService + NEW FEATURE: see ticket for details

  • #59: portal: fixed dangling comma in timer imports

  • #58: portal, json: fixed copyright headers
  • #57: portal: fixed double-navigation problem which can lead to skipping places
  • #56: object: removed all direct calls of hasOwnProperty.
  • #55: run_spec: disable loading the widget.json if the spec_runner.js contains widgetJson: false
  • #54: testing: fixed broken testBed injection of $q and $timeout
  • #50: performance: decoupled instantiation of widget controllers from their DOM


  • #49: added compatibility layer for JSON patch. + NEW FEATURE: see ticket for details

  • #48: Promises generated by the event bus are now scheduled by the event bus, not by AngularJS $apply.

  • #51: Remove some obsolete NPM devDependencies.
  • #47: Do not schedule another full event-bus tick while one is already being processed.
  • #46: fixed misinterpretation of falsy required attribute in json schema converter.
  • #45: i18n: adjusted localizer.format specs to changes from #43.
  • #43: string: added new function string.format as simpler replacement for text library. + NEW FEATURE: see ticket for details

  • #42: portal: added 'language-tag', 'topic-map' and 'localization' formats. + NEW FEATURE: see ticket for details

  • #40: portal: fixed 'flag-topic' pattern.


  • #39: portal: added JSON-schema formats 'topic', 'sub-topic' and 'flag-topic' to widget loader. + NEW FEATURE: see ticket for details

  • #37: improved browsing of existing api doc and fixed some syntactical errors.

  • #36: jshintrc: disabled enforcement of dot notation for object property access.
  • #34: Enabled specification of widget features using JSON schema draft v4 notation. + NEW FEATURE: see ticket for details

  • #33: EventBus: added event object to the information sent to inspectors on deliver actions.

  • #31: Refactored JSON validator for better error messages and schema v4 support. + NEW FEATURE: see ticket for details

  • #32: Configuration: Consolidated and documented configuration options under docs/manuals/ + NEW FEATURE: see ticket for details

  • #30: PageLoader: added missing check for duplicate composition ids.


  • #27: Portal: Enhanced the portal event bus performance by not requiring a digest/render-cycle on each tick
  • #28: Fixed null values in widget features within compositions being turned into empty objects.
  • #29: PageLoader: composition features that are not configured do not result in undefined values for widget features.
  • #25: Only the page relevant for the current place is loaded now.
  • #17: Testing: The testBed.setup method can now simulate default-events + NEW FEATURE: see ticket for details

  • #26: Testing: Fixed the responseTransform option for http-mock

  • #22: FileResourceProvider: allow to embed files into listings + NEW FEATURE: see ticket for details

  • #15: FileResourceProvider, PageLoader: Prevented duplicate (simultaneous) requests to file listings

  • #24: Widgets and compositions can now be disabled in pages. + NEW FEATURE: see ticket for details

  • #23: FileResourceProvider: Slashes are now correctly handled when checking a file for existence in a listing.

  • #21: The file resource provider now normalizes its root path.
  • #20: Fixed event bus inspectors not being notified on unsubscription.
  • #14: Fixed navigation being broken after successive navigation to the current location.
  • #13: The current place is now send as part of the didNavigate event.
  • #12: Testing: Get the LaxarJS tests running in Karma again.
  • #11: Testing: Handle spec_runner.js that are not in a subdirectory of the RequireJS' baseUrl.
  • #10: Testing: Loading controls during tests now works in Karma.
  • #9: Update Bower from ~1.2.8 to ~1.3.3.
  • #8: Fixed the cleanup mechanism for generated widget areas.
  • #6: The Portal now initializes an i18n object on the application's $rootScope
  • #5: Testing: The run_spec-script (used to set up the spec tests) now loads controls declared in the widget.json
  • #4: PageLoader: Added missing optional negation of generated topics and replacement of expressions in feature keys
  • #3: Added url formatting for links in
  • #2: Fixed grunt-init step in Getting-Started docs
  • #1: Added initial Getting-Started documentation