Releases: BladeRunnerJS/brjs
BladeRunnerJS 1.0 Release Candidate 1
BladeRunnerJS 1.0 Release Candidate 1
BladeRunnerJS 1.0-RC1 is the proposed 1.0 release. It will be released as 1.0 unless any major bugs in existing features are discovered.
1.0 Features and Improvements
1.0-RC1 completes the 1.0 Roadmap which includes:
- In-built EventHub
- Node.js style client-side code
- Modularised application development and workbench developer tools
- Flat file and WAR deployment
- Global install
- A plugin architecture for custom asset types and bundled content
Backwards Compatability
- The plugin API has changed considerably. Existing plugins will need to be updated to use the new API. This change does not effect application code, only Java plugins.
Other than the above, 1.0-RC1 is compatible with v0.15.4.
Bug fixes and features since v0.15.x
Changes to XML namespaces (xmlns
)
The XML namespaces used for BladeRunnerJS XML config has changed to use the schema.bladerunnerjs.org
domain - the old and new namespaces are shown below. All instances of the previous namespaces should be replaced with the new namespace. Apps using the old namespace will continue to work, although it has been deprecated and a warning will be logged.
http://schema.caplin.com/CaplinTrader/aliasDefinitions -> http://schema.bladerunnerjs.org/aliasDefinitions
http://schema.caplin.com/CaplinTrader/aliases -> http://schema.bladerunnerjs.org/aliases
http://schema.caplin.com/CaplinTrader/bundleConfig -> http://schema.bladerunnerjs.org/bundleConfig
http://schema.caplin.com/CaplinTrader/presenterComponent -> http://schema.bladerunnerjs.org/presenterComponent
Reviewed Plugin API
The plugin API has been reviewed and the mechanism for discovering assets has been simplified. For most users of BRJS who haven't written their own plugins this change won't have any affect, however it is a backwards incompatibility for existing plugins.
AssetPlugin
The previous AssetLocation
and AssetPlugin
interfaces have been replaced by a single new AssetPlugin
interface.
The new AssetPlugin
interface has a single method:
List<Asset> discoverAssets(AssetContainer assetContainer,
MemoizedFile dir, String requirePrefix, List<Asset> implicitDependencies,
AssetRegistry assetRegistry)
The discoverAssets
is called by the asset discovery mechanism and is the chance for each plugin to register assets. Assets can be registered using the supplied AssetRegistry
which has the following interface.
public void registerSeedAsset(LinkedAsset asset)
public void promoteRegisteredAssetToSeed(LinkedAsset asset)
public void registerAsset(Asset asset)
boolean hasSeedAsset(String requirePath)
boolean hasRegisteredAsset(String requirePath)
public Asset getRegisteredAsset(String requirePath)
public List<Asset> discoverFurtherAssets(MemoizedFile dir, String requirePrefix, List<Asset> implicitDependencies)
This provides the flexibility for each AssetPlugin
to register all assets in nested directories at the same time via registerAsset
or registering assets for the supplied directory and optionally using discoverFurtherAssets
to allow additional directories to be discovered by other plugins that aren't already discovered by the existing BRJS plugin.
An example AssetPlugin
is the CssAssetPlugin
which discovers all assets in the supplied directory.
if (assetContainer.dir() == dir) {
return Collections.emptyList();
}
if (!requirePrefix.contains("!")) {
requirePrefix = "css!"+requirePrefix;
}
for (MemoizedFile cssFile : dir.listFiles(cssFileFilter)) {
if (!assetRegistry.hasRegisteredAsset(FileAsset.calculateRequirePath(requirePrefix, cssFile))) {
Asset asset = new FileAsset(cssFile, assetContainer, requirePrefix);
assetRegistry.registerAsset( asset );
}
}
Other API changes
There have been several other minor changes to the Plugin API.
- The abstract class
ArgsParsingCommandPlugin
has been renamed toJSAPArgsParsingCommandPlugin
- The method
TagHanderPlugin
getDependentContentPluginRequestPrefixes()
method has been renamed tousedContentPluginRequestPrefixes()
- All BRJS model interfaces that form the model API have been moved to the
org.bladerunnerjs.api
package
More information about the API can be found in the JavaDocs, http://apidocs.bladerunnerjs.org/latest/java/index.html.
Plugin Ordering
Plugins were previously ordered by using methods on the Plugin
API. This has now been moved to brjs.conf
and so is used controllable. The new option in brjs.conf
is orderedPlugins
which can be used to define the order for any plugins where ordering is important, AssetPlugin
s and ContentPlugin
s.
The default ordering config is:
...
orderedPlugins:
AssetPlugin:
- ThirdpartyAssetPlugin
- BrowsableNodeSeedLocator
- BRJSConformantAssetPlugin
- '*'
ContentPlugin:
- I18nContentPlugin
- AppMetadataContentPlugin
- ThirdpartyContentPlugin
- CommonJsContentPlugin
- NamespacedJsContentPlugin
- '*'
...
The name of each plugin should be included in the configuration. '*'
can be used to match all other plugins.
HTML service improvements
The HTML service now allows templates to be provided inside <template/>
tags, and automatically wraps any templates that aren't inside <template/>
tags. Additionally, a fresh element or document fragment is provided when a template is requested, rather than providing the same DOM element each time.
HTML templates can now also be embedded in index.html
rather than loading them via a separate XHR request. To do this you'll need to include <@html.bundle@/>
in the <head>
of the page, but can then continue to use the HTML service as before.
Existing apps and templates will still be compatible with these changes — see #1338 & #1352 for more information.
Apps can now live separate from the toolkit
The current working directory when brjs
is executed is now used to detirmine where applications are on disk, meaning they can be placed anywhere and don't have to be placed next to the sdk
directory.
Apps should be placed within a brjs-apps
directory anywhere on the disk. If commands are executed inside of the brjs-apps
directory this directory will be used to locate applications. Commands can also be executed from within an app, in which case the parent directory of the application will be used to locate apps.
This change is backwards compatible with previous app locations. If apps are contained within an apps
directory which is next to the sdk
directory the previous apps
directory will be used and a deprecation warning logged.
Configurable App Version
The app version can now be configured via the serve
and build-app
commands. With either command the -v
or --version
flag can be used to provide a custom version, for example brjs build-app myApp -v 1.2.3
. The current timestamp will be appended to the version to create a truely unique version in order to provide reliable cache invalidation. require(service!br.app-meta-service).getVersion()
can then be used to access the version.
Setting the version via the serve
command has the limitation where the version will be set for every app within that BRJS instance. For example if both the foo
and bar
apps exist and brjs serve --version 1.2.3
is run, 1.2.3 will be the version used for both apps.
Stricter Scope Enforcement
The bundling 'scope' is used to detirmine the valid locations that one asset can require on other assets. For example Blade classes cannot depend on another Blade class. Previously this enforcement was only applied within the Blade workbench, but was not enforced in the app. BladeRunnerJS will now perform additional checks to ensure that although all Blades are loaded within the App each Blade still cannot depend on one another.
This may be an imcompatability for apps written with previous version of BladeRunnerJS if one Blade depends on another Blade. This dependency should be broken by using Services so Blades do not directly depend on another another.
Locale Switching and Detection
The locale detection and redirection mechanism can now be overridden by changing the service implementations used during the locale redirection. This is useful if the users' locale preferences should be loaded from a database rather than be calculated from the browser.
The new locale switching changes has meant the need for the <base>
has gone. The <@base.tag@/>
plugin has now been deprecated and this line should be removed from index.html
.
More information can be found at http://bladerunnerjs.org/docs/use/internationalization.md/multi-locale-apps.
Locale Switching During Tests
The active locale can now be configured during unit and acceptance tests. This can be done by adding the relevant locale requests to your jsTestDriver.conf
file and calling require( 'br/I18n' ).setLocale("<locale>")
at any point during the test.
For example given the following jsTestDriver.conf
file.
server: http://localhost:4224
basepath: .
load:
- bundles/i18n/de.js
- bundles/i18n/en.js
- bundles/js/js.bundle
test:
- tests/**.js
The default active locale in tests would be en
and the following test could be written to exercise the locale switching.
var i18n = require( 'br/I18n' );
assertEquals( 'January', i18n('br.i18n.date.month.january') );
i18n.setLocale("de");
assertEquals( 'Januar', i18n('br.i18n.date.month.january') );
i18n.setLocale("en");
assertEquals( 'January', i18n('br.i18n.date.month.january') );
API Documentation
Travis Build Status for v1.0-RC1: [![Build Status](https://travis-ci.org/...
BladeRunnerJS v0.15.4
BladeRunnerJS v0.15.4
v0.15.4 Features and Improvements
- Fix for a bug introduced in v0.15.2 where some files weren't re-namespaced properly when an App was imported
API Documentation
Travis Build Status for v0.15.4:
Closed Issues
The following issues labelled bug, feature, enhancement, experience, breaking-change, java-api, js-api or CaplinSupport have been closed:
- Renamespaced content overwrites . seperators with / & doesnt renamespace files with a £ #1315
4 issues closed; 1 labelled bug, feature, enhancement, experience, breaking-change, java-api, js-api or CaplinSupport from 1 milestones:
https://github.com/BladeRunnerJS/brjs/issues?milestone=34&state=closed
Found an Issue?
- https://github.com/BladeRunnerJS/brjs/issues for any existing issues
- https://github.com/BladeRunnerJS/brjs/issues/new to raise a new issues.
Parts of this release note have been auto-generated. If you notice any problems with it tell us
BladeRunnerJS v0.15.3
BladeRunnerJS v0.15.3
v0.15.3 Features and Improvements
- Fix for an issue where some virus scanners could cause the bundle time for apps to drastically increase when the Java 7 file watcher was used.
- A polling file change observer can be used by setting the value of 'fileObserver' in
brjs.conf
to 'polling:X' where X is the poll interval. For example 'polling:1000'.
- A polling file change observer can be used by setting the value of 'fileObserver' in
- Fixed a bug where an exception was thrown by the MimeMagic library when importing an app.
- Minor changes to the
LocalisedDateParser
. - Fix a bug where LocaleUtility couldn't change a read-only array in Firefox.
API Documentation
Travis Build Status for v0.15.3:
Closed Issues
The following issues labelled bug, feature, enhancement, experience, breaking-change, java-api, js-api or CaplinSupport have been closed:
- Add Polling file observer #1306
- BRLocaleProvider modifying read only array #1304
- return the input value if the LocalisedDateFormatter input doesn't match the input format #1300
- import-app throwing jmimemagic exception #1295
- LocalisedDateParser should not consider locale-specific date formats as ambiguous for parsing to end of unit. #1293
- McAffee virus scanner makes the app take 20+ mins to load #1283
7 issues closed; 6 labelled bug, feature, enhancement, experience, breaking-change, java-api, js-api or CaplinSupport from 1 milestones:
https://github.com/BladeRunnerJS/brjs/issues?milestone=33&state=closed
Found an Issue?
- https://github.com/BladeRunnerJS/brjs/issues for any existing issues
- https://github.com/BladeRunnerJS/brjs/issues/new to raise a new issues.
Parts of this release note have been auto-generated. If you notice any problems with it tell us
BladeRunnerJS v0.15.2
BladeRunnerJS v0.15.2
v0.15.2 Features and Improvements
v0.15.2 is a patch release with the following changes:
- Images are no longer corrupted when apps are imported
- Internationalization has been added to the Presenter jQuery date picker - see #1278
- The Presenter DateParser and DateFormatter now uses MomentJS to handle localisation - see #1275
- Other minor fixes and improvements around internationalized date parsing and formatting.
- Fix for a bug where using
bundles/bundle.xml
andbundles/bundle.html
injsTestDriver.conf
caused an invalid request to be made to the BRJS model.
API Documentation
Travis Build Status for v0.15.2:
Closed Issues
The following issues labelled bug, feature, enhancement, experience, breaking-change, java-api, js-api or CaplinSupport have been closed:
- fixing bad model paths for xml and html JSTD bundle aliases #1287
- LocalisedDateParser fix #1286
- Added internationalization for jQuery datepicker #1278
- Date parsing does not always work with custom input formats #1270
- Import app is causing some images to be corrupted #1237
9 issues closed; 5 labelled bug, feature, enhancement, experience, breaking-change, java-api, js-api or CaplinSupport from 1 milestones:
https://github.com/BladeRunnerJS/brjs/issues?milestone=32&state=closed
Found an Issue?
- https://github.com/BladeRunnerJS/brjs/issues for any existing issues
- https://github.com/BladeRunnerJS/brjs/issues/new to raise a new issues.
Parts of this release note have been auto-generated. If you notice any problems with it tell us
BladeRunnerJS v0.15.1
BladeRunnerJS v0.15.1
v0.15.1 Features and Improvements
- Some minor JavaScript library improvements around Presenter library validators, formatters and parsers to:
- Support case-insensitive date parsing
- Optionally parse ambiguous dates to the end of the month or year.
- Move formatters and validators into their own libraries. This is backwardsly compatible and the old require paths are still valid
- The CSS filename now precedes the content within the CSS bundle to make it easier to find the file which supplied the content.
- Fixed a bug where assets within Blades with no BladeSet where not re-namespaced properly when an App was imported.
API Documentation
Travis Build Status for v0.15.1:
Closed Issues
The following issues labelled bug, feature, enhancement, experience, breaking-change, java-api, js-api or CaplinSupport have been closed:
- Validation interfaces should not be housed within presenter. #1241
- Date parsing in br/presenter should be case-insensitive. #1240
- In CSS bundle add comment showing filename of included content #1239
- br-presenter Parsers cannot be used with EditableProperties #1235
11 issues closed; 4 labelled bug, feature, enhancement, experience, breaking-change, java-api, js-api or CaplinSupport from 1 milestones:
https://github.com/BladeRunnerJS/brjs/issues?milestone=30&state=closed
Found an Issue?
- https://github.com/BladeRunnerJS/brjs/issues for any existing issues
- https://github.com/BladeRunnerJS/brjs/issues/new to raise a new issues.
Parts of this release note have been auto-generated. If you notice any problems with it tell us
BladeRunnerJS v0.15
BladeRunnerJS v0.15
v0.15 Features and Improvements
- Fixed a bug in IE8 where a dependency tree greater than 12 levels deep causes a stack overflow exception
- Allowing
brjs
to be executed from the path and therefore from anywhere within thesdk
orapp
directory tree - Adding an optional anonymous stats plugin
- Fixes to regular expressions used within the acceptance test utility library and using
===
rather than==
for assertions - Some changes to the model API in preparation for a
1.0
release and a stable API - A fix to NumericValidator so floats and negative numbers are validated correctly
- Fixes to allow
brjs
to execute correctly incygwin
- Allowing custom templates and for the default templates to be overridden
- BladeRunnerJS now logs a warning if test classes have not been wrapped in an IIFE
- Allowing apps to be symlinked or contain symlinks in a unix environment
- Adding BladeSet level Workbenches
- The HTMLResourceService now clones HTML template nodes before adding them to the DOM and supports
template
tags - Index pages have full
require
support and will throw an exception if a 'required' class cannot be found
Anonymous Status Plugin
BladeRunnerJS will now collect anonymous statistics such as OS version; Java version; commands executed; and the size of apps' dependency trees. This data is 100% anonymous and does not contain and source code, names of apps, developer or company information. The data is stored with KeenIO
a third-party service and will be used to gather information about the performance of the bundling and how developers use the toolkit.
When brjs
is first executed the developer will be asked whether they allow the statistics to be collected, this will then record the choice in conf/brjs.conf
. Statistics collection can be turned on or off at any time by changing the value in conf/brjs.conf
or by using the --no-stats
or --stats
flags. When brjs
is run via build tools such as Ant
, Maven
or Gradle
and the process input stream is not set brjs
will assume that statistics should not be collected.
Allowing brjs
to be run from anywhere
brjs
can now be executed from any directory either by using a relative path to the 'brjs' executable or by adding the sdk
directory to the PATH
. For example to run the test command from within an app without adding brjs
to the path run ../../sdk/brjs test .
. If brjs
has been added to the path the command becomes brjs test .
.
Note: apps must continue to live within the apps
directory which is located next to the sdk
directory. Support for apps living separately from the BladeRunnerJS toolkit will be added later ()#1154.
Custom templates
The templates used when creating new nodes such as Aspects or Blades can now be customised. Either a custom template can be used by adding the --template <template_group>
to the creation command or the 'default' template group overridden. More information on custom templates can be found at http://bladerunnerjs.org/docs/use/custom_templates/.
BladeSet level Workbenches
BladeSets can now have their own Workbenches. These act the same as Blade workbenches and allow the interaction between several Blades to be tested in isolation without loading them in the app. A skeleton workbench is automatically created for any new BladeSets if the default BladeSet template is used.
Backwards Compatibility Issues
There have been several changes to the Test library which may cause some app tests to fail after an upgrade:
- In any 'Jasmine BDD' tests the regular expression now enforces a space after '=' in the assertion parameters.
- '===' is used rather than a '==' to perform assertions. This now means assertion checks are much more strict.
- In order to check for null values 'null' should be used as the check rather than 'undefined' as was previously allowed.
Additionally, some of the Java package names were renamed in preparation for a post 1.0 clean-up and review of the plug-in API.
API Documentation
Travis Build Status for v0.15:
Closed Issues
The following issues labelled bug, feature, enhancement, experience, breaking-change, java-api, js-api or CaplinSupport have been closed:
- Removed check for null on property value. #1218
- Bladeset templating not working #1208
- Fix all IE8 global recursion bugs (e.g. mergePackageBlock() and requireAll()) #1190
- NumericValidator does not consider floats or negative numbers as valid #1152
- in vanilla cygwin "brjs" script does not run #1150
- Cannot import a blade from another apps default bladeset #1133
- Allow BRJS to be run from outside of the SDK directory by putting brjs on the PATH #1130
- brjs test-integration command shows a stack trace when path arg is missing. #1129
- Log a warning when CommonJs tests aren't wrapped within an IIFE #1091
- add the (optional) anonymous stats plugin to BRJS core #1084
- Improve the API for creating bundle requests #1072
- Latest emitr #1070
- Remove canonical file usage #1063
- When writing acceptance tests, it's not possible to use an '=' in the value of an assertion. #1008
- app-deps, bundle-deps and dep-insight commands fail when aliases are used #958
- Allow workbenches on the bladeset level #945
- Fix several bugs in Topiarist #935
- Locale redirection doesn't work in built app when deployed using Apache Cordova #923
- brjs.conf is rewritten on disk each time 'brjs serve' is run #884
- Newly required dependencies not being bundled when apps reside in a directory reference by symbolic link #866
- workbench-deps errors out when it shouldn't #819
- re-introduce cloning of HTML templates #799
- Index Pages Should Have Proper require() Support #720
- Global configuration files shouldn't need to be specified when creating MemoizedValue instances #616
- BRJS uses 100% CPU when idle #327
- allow templates for new apps/blades/libraries to be pluggable to improve scaffolding options #126
63 issues closed; 26 labelled bug, feature, enhancement, experience, breaking-change, java-api, js-api or CaplinSupport from 1 milestones:
https://github.com/BladeRunnerJS/brjs/issues?milestone=29&state=closed
Found an Issue?
- https://github.com/BladeRunnerJS/brjs/issues for any existing issues
- https://github.com/BladeRunnerJS/brjs/issues/new to raise a new issues.
Parts of this release note have been auto-generated. If you notice any problems with it tell us
BladeRunnerJS v0.14.4
BladeRunnerJS v0.14.4
v0.14.4 Features and Improvements
The following changes were made in v0.14.4:
- Fixed a bug where ASCII characters weren't encoded properly in minified bundles.
Known Issues
BladeRunnerJS has the following known issues:
- To allow deployment as a set of static files, locale switching was switched from the server to the browser in BladeRunnerJS 0.9, yet only Firefox 32 and Chrome 32 make the full set of
ACCEPT_LANGUAGE
headers available on the client (other browsers provide only a single language), which may cause a user to see the default language if their preferred language is unavailable, even though one of their secondary preferences may have been available.
API Documentation
Travis Build Status for v0.14.4:
Closed Issues
The following issues labelled bug, feature, enhancement, experience, breaking-change, java-api, js-api or CaplinSupport have been closed:
- JS bundler fails to encode non ascii characters #1181
2 issues closed; 1 labelled bug, feature, enhancement, experience, breaking-change, java-api, js-api or CaplinSupport from 1 milestones:
https://github.com/BladeRunnerJS/brjs/issues?milestone=28&state=closed
Found an Issue?
- https://github.com/BladeRunnerJS/brjs/issues for any existing issues
- https://github.com/BladeRunnerJS/brjs/issues/new to raise a new issues.
Parts of this release note have been auto-generated. If you notice any problems with it tell us
BladeRunnerJS v0.14.3
BladeRunnerJS v0.14.3
v0.14.3 Features and Improvements
The following changes were made in v0.14.3:
- Topiarist has been updated to include a bug-fix so
topiarist.implement()
can be used to implement interfaces that have static constants defined on them. - A fix for a
ConcurrentModificationException
that sometimes occured when creating a new app using the BRJS dashboard. - A fix for a known issue in v0.14.2 where switching between a Blade workbench and an App caused the incorrect alias to be loaded in the App.
- The dashboard's import
Motif
dialog window now doesn't immediately close if there has been an error.
Known Issues
BladeRunnerJS has the following known issues:
- To allow deployment as a set of static files, locale switching was switched from the server to the browser in BladeRunnerJS 0.9, yet only Firefox 32 and Chrome 32 make the full set of
ACCEPT_LANGUAGE
headers available on the client (other browsers provide only a single language), which may cause a user to see the default language if their preferred language is unavailable, even though one of their secondary preferences may have been available.
API Documentation
Travis Build Status for v0.14.3:
Closed Issues
The following issues labelled bug, feature, enhancement, experience, breaking-change, java-api, js-api or CaplinSupport have been closed:
- Update topiarist #1124
- Creating an app via the dashboard occasionally fails with a ConcurrentModificationException #1122
- The use of workbenches breaks subsequent loads of the app #1114
5 issues closed; 3 labelled bug, feature, enhancement, experience, breaking-change, java-api, js-api or CaplinSupport from 1 milestones:
https://github.com/BladeRunnerJS/brjs/issues?milestone=26&state=closed
Found an Issue?
- https://github.com/BladeRunnerJS/brjs/issues for any existing issues
- https://github.com/BladeRunnerJS/brjs/issues/new to raise a new issues.
Parts of this release note have been auto-generated. If you notice any problems with it tell us
BladeRunnerJS v0.14.2
BladeRunnerJS v0.14.2
v0.14.2 Features and Improvements
The following changes were made in 0.14.2:
- We no longer leave open read-locks on XML and I18N configuration files.
- We've added backwards compatibility support for the
appNamespace
property within 'app.conf', so that existing motif zips can continue to be imported into BladeRunnerJS. - We fixed a couple of bugs within our client-side locale switching code, so that it now works as best as it can in all browsers.
- We fixed a regression that was introduced into the
ValidSelectionValidator
class in 0.14.1.
Known Issues
BladeRunnerJS has the following known issues:
- When switching between a workbench and an app, the alias blob will occasionally point at an incorrect class. Refreshing the page usually corrects the problem.
- To allow deployment as a set of static files, locale switching was switched from the server to the browser in BladeRunnerJS 0.9, yet only Firefox 32 and Chrome 32 make the full set of
ACCEPT_LANGUAGE
headers available on the client (other browsers provide only a single language), which may cause a user to see the default language if their preferred language is unavailable, even though one of their secondary preferences may have been available.
API Documentation
Travis Build Status for v0.14.2:
Closed Issues
The following issues labelled bug, feature, enhancement, experience, breaking-change, java-api, js-api or CaplinSupport have been closed:
- themes with locale not behaving as expected in Chrome and IE #1108
- ValidationSelectionValidator throws error if value is undefined #1100
- BRJS prevents me saving/deleting files (locked files/folders) #446
7 issues closed; 3 labelled bug, feature, enhancement, experience, breaking-change, java-api, js-api or CaplinSupport from 1 milestones:
https://github.com/BladeRunnerJS/brjs/issues?milestone=25&state=closed
Found an Issue?
- https://github.com/BladeRunnerJS/brjs/issues for any existing issues
- https://github.com/BladeRunnerJS/brjs/issues/new to raise a new issues.
Parts of this release note have been auto-generated. If you notice any problems with it tell us
BladeRunnerJS v0.14.1
BladeRunnerJS v0.14.1
v0.14.1 Features and Improvements
The following changes were made in v0.14.1:
- We now make use of the recursive file-watching support available within Windows to more efficiently watch large directory trees, avoiding the file locking and performance issues encountered when separately listening to each directory. This relies on features available only within the Oracle & OpenJDK implementations of the JRE, if these features are not available BRJS will fall back to the standard method of watching nested directories individually.
- We now make use of high-sentivity polling for file-watching on Mac OS X, reducing the latency between when a file is changed and when the notification of that file change is received. This relies on features available only within the Oracle & OpenJDK implementations of the JRE, if these features are not available BRJS will fall back to the default sensitivity level with a longer polling interval.
- Browser modules have been updated so they no longer include their own shims, making it possible for applications to decide on the shims they wish to use.
- Fixed a recently introduced bug in the test-runner that caused some test names to be incorrectly displayed.
- A caching bug, introduced in v0.14, that required
brjs serve
to be restarted if an alias was updated to point to a new class, has now been fixed.
Backwards Compatibility Issues
The following additional backwards compatibility issues have been introduced with the release of v0.14.1:
ServiceRegistry.clear()
has been renamed toServiceRegistry.legacyClear()
. This prevents it from being automatically invoked before each test is executed and may cause any NamespacedJS style tests to fail.- Apps using
require(...)
for all of their dependencies are not affected by this change.
- Apps using
Clearing the Service Registry within tests
The browser-modules library includes a sub-realms feature that better addresses the need for tests to override module definitions and module state, but which would be too expensive to automatically employ within all tests.
Although we ultimately recommend that tests are migrated to make use of sub-realms where appropriate, particularly as code-bases migrate to CommonJs, for the time being users can work around this restriction by creating a file containing the following code at BRJS_ROOT/js-patches/br/ServiceRegistryClass.js
:
ServiceRegistryClass.prototype.clear = ServiceRegistryClass.prototype.legacyClear;
Known Issues
This patch release fixes all four remaining known issues present within v0.14.
API Documentation
Travis Build Status for v0.14.1:
Closed Issues
The following issues labelled bug, feature, enhancement, experience, breaking-change, java-api, js-api or CaplinSupport have been closed:
- Improved commonjs alias and service support #1087
- File change watcher refinements #1083
- Reglobalize source modules after using subrealms #1082
- Fix service module deps #1080
- Bugfix jettyenv content not renamed on import #1079
- Harden CommonJs alias and service support #1078
- Reflectively use Sun specific packages to fix file-watcher issues #1077
- Confusing test output when running tests for a bladeset, blade or a user-lib #1042
- Test bundles are being locked in some environments #968
13 issues closed; 9 labelled bug, feature, enhancement, experience, breaking-change, java-api, js-api or CaplinSupport from 1 milestones:
https://github.com/BladeRunnerJS/brjs/issues?milestone=24&state=closed
Found an Issue?
- https://github.com/BladeRunnerJS/brjs/issues for any existing issues
- https://github.com/BladeRunnerJS/brjs/issues/new to raise a new issues.
Parts of this release note have been auto-generated. If you notice any problems with it tell us