- Closure compiler updated to
20211107 - Updated dependencies.
- Added
zb/structures/data/randomutils for generating random data.
- Moved utils and lists classes from extension-ui to zb core.
- Fixed path parsing while serving dev server.
- Fixed bad relative resources path in compiled CSS
- Pass application config into
*.tpltemplates - Added
config.build.inlineCSS/JSoptions - Split
buildcommand intobuildandpackcommands
- Closure compiler updated to
20210907
- Fix playback with start position causing transition errors on PC
- Fix compatibility with PostCSS 8.0
- Closure compiler updated to
20201102
Virtually the same as 2.7.4-alpha.1
- Fix start position not being applied on webOS in some cases
- Closure compiler updated to
20200927
- Experimental fix for an issue on webOS 2017 when start position fails to apply in some cases.
- Added export if
NativeReadyStatetoStatefulHtml5Video
- Replaced
chalkwithkleur - Improved output of
--helpoption for CLI tools
- Fixed
EVENT_INNER_FOCUSbeing left out fromIWidgetinterface
- Added
EVENT_INNER_FOCUStoContainerthis event is fired when focus moves within a container (scene or widget) and propagates all the way to rootContainer
- Boilerplate application expanded to show case more real cases like video player, navigation and scene opening
- Closure compiler updated to
20200224
StatefulHtml5Videonow ensuresSTART_POSITIONis applied before enteringREADYIStatefulVideo.getEnginemethod was added that exposes internal platform-specific engine- Disabled widgets no longer receive mouse clicks
- Fix duplication of mouse listeners on widgets that get changed from one parent to another in some cases
- Fixed several compatibility issues on Windows
- Added a warning against node versions not compatible with versions specified in
enginesfields of application and its dependencies. - Parallelized and optimised some filesystem operations
- Several deprecated APIs were removed, see previous versions for migration guides
- Google Closure Compiler udpated to
20200224
- Fix parsing of some GCC output
- Build process was refactored, CLI commands and Platform API were affected. See migrations/2.5.0.md for more details.
zb buildnow only accepts one platform and can't build for several at once.AbstractPlatform.buildAppmethod is deprecated in favor ofAbstractPlatform.pack.- Include entities now only get included in build for the platform that specified them.
- Console output and logging was improved and now can be controlled with
--log-levelor-lflag, seezb --help. generated/package-infowas removed.
- ENTER key events caused by mouse clicks now no longer propagates down widget tree.
generated/package-infowas deprecated and several defines were introduced to replace it. See migrations/2.5.0.md for more details.- Version checker will now tolerate prerelease versions.
- Google Closure Compiler updated to 20200101.0.0
- ECMAScript version increased to 2019
- Node 8 support dropped as it left LTS
Identical to 2.0.0-rc.2, changes since previous stable version (2.3.0) are listed.
This release introduces IStatefulVideo and tis Abstract and HTML5 implementations. Stateful Video has a much stricter model that leverages more stability, standardisation and error handling. Additionally it supports DRM playback.
Stateful Video is meant to replace current IVideo, but at this point both are available and the latte is not even deprecated.
Migrating to Stateful Video will require a large effort as its model and APIs are vastly incompatible with previous IVideo.
For more details on Stateful Video see docs/video.
Other changes:
PrincipalAxisNavigationis now used as first spatial navigation strategy of choiceEventPublisherrefactored, addedrunAfterCurrentEventmethod, improved test coverage- QHD resolution support removed, 4K and 8K added
Info.osdResolutionTypedeprecated in favor ofgetOSDResolutionandgetPanelResolutionViewport.getFullScreendeprecated in favor ofisFullScreenAbstractStatefulVideoandAbstracViewportconstructors both now accept panel and app resolutionszb/httpdecodeParamsnow returns properly empty object if query string is empty as opposed to object with empty keys
- Ensure no changes in html5 engine or Video happen once Video entered
ERRORstate EVENT_ERRORnow tries to make a better message
- Fixed issue when errors occurred while loading custom configs could be consumed and not reported
- Aborting transition in
StateMachinenow restores it to previous state
- ESLint, its configs and plugins updated
- Fix polyfills not being included in build
- Workaround for GCC issue that prevents object destructuring from working without native
Object.assign
PrincipalAxisNavigationis now used as first spatial navigation strategy of choice- Improved stability of
StatefulVideo, especially when destroying it EVENT_STATE_EXITnow happens before asynchronous transitions. This makesgetStatereturnnullin between states.getPendingTransitionsshould be used in this occasions.EventPublisherrefactored, addedrunAfterCurrentEventmethod, improved test coverage
- Ensure
getUrlalways returns url in LOADING state - Refactor Viewport to always accept application coordinates
Device.createStatefulVideono longer requires Rect parameter- QHD resolution removed support, 4K and 8K added
AbstractStatefulVideoandAbstracViewportconstructors both now accept panel and app resolutionsInfo.osdResolutionTypedeprecated in favor ofgetOSDResolutionandgetPanelResolutionViewport.getFullScreendeprecated in favor ofisFullScreen
- Added
PrepareOptionto support 4K and 8K video. - Added
Device.isUHD8KSupported. - Fixed StatefulVideo positioning in letterbox mode.
- VerimatrixClient added, support VCAS.
- DRM support was added. See drm.md for more details.
- new
IStatefulVideomethods: staticisDRMSupported, staticcanHandleMultiDRM,attachDRM,detachDRM. - new interfaces and classes:
IDRMClient,AbstractDRMClient,PlayReadyClient. PrepareOption.FORMATwas renamed toPrepareOption.TYPEand now accepts mime-type.MediaTypeenum added with common mime types.
Unstable channel release.
IStatefulVideo,AbstractStatefulVideoandStatefulHtml5Videoclasses andDevice.createStatefulVideowere added. This a new video interface expected to eventually replaceIVideo, in foreseeable future however they will coexist. It's much more strict and standardized. Seezb/httpdecodeParamsnow returns properly empty object if query string is empty as opposed to object with empty keys.
- Build tasks no longer watch file system changes. This helps to avoid Chokidar issues #873 and #859 and generally improves their performance.
SourceProviderCodeCachewas renamed toSourceProviderGenerated.Application.readynow also builds generated code (no longer necessary to callbuildCode).- Added
watchandstopWatchingmethods toISourceProvider. - Google Closure Compiler updated to 20190929.0.0
- Widget theme functionality (
setTheme) was removed. input/keys.jsrenamed toinput/key.js. Old name is kept as alias. Will be deprecated and replaced soon.- Fixed GCC warnings in StateMachine.
postcss.extraPluginsproperty was split into two:filePluginsandbundlePluginsto allow more granular control over when plugins are run.filePluginsis similar toextraPluginsbehaviour prior to version 2.2.0.
- Avoid using
ParentNode.prependbecause of some unidentified problems with its polyfill.
- Fixed mouse clicks sometimes not being processed on widgets with child widgets.
- Removed unnecessary mouse activation/deactivation events when mouse moves within application body from one element to another.
- Google Closure Compiler updated to 20190909
Several changes in CSS processing, some of them might be breaking (see Migration doc):
- New config option
postcss.importEntryPoints. Setting it will change the behavior of css files processing: Instead of bundling all css files, ZombieBox will look into files set as entry points and will only bundle css imported from them (and descendants). StylesCacheandApplicatione.getStylesCachewere removed. Instead, dev server now handles its cache.- As as result, dev server performance was noticeably improved.
- Dev server no longer runs
postcss.extraPluginsagainst project css files. - Build process now processes CSS files after bundling. This significantly improved CSSO effectiveness.
Container.setThemeandContainer.getThemewere deprecated
- Fix some cyclical dependencies introduced by jsdoc comments
- Quell a GCC warning
Updated ESLint to 6.0 and added new plugins and rules
- Updated Closure Compiler to 20190729.0.0
-
Added
StateMachineclass. -
.zb-video-containerelement was removed from base framework. This resulted in following API changes:Application.getVideoContainer()public method and_videoContainerprotected property were deprecatedAbstractDeviceno longer takesHTMLElementin its constructorsIDeviceandAbstractDevicenow expect aRectargument increateVideoAbstractVideonow requires aRectargument in constructor
All methods have fallbacks for backward compatibility and should work if used with old code, but produce compile-time warnings and console errors. See Migration doc for more details.
-
Application.getBodymethod was added.
- Fixed another exception in
BuildHelper.addDirToArchiveMapmethod. - Moved
setTemplateHelpermethod toAbstractAddonto allow platform use it in addition to extensions.
- Fixed exception in
BuildHelper.addDirToArchiveMapmethod. - Added
setTemplateHelpermethod toAbstractExtensionand exposedTeamplateHelperclass for imports.
No changes since rc.2.
Major incompatible changes since 1.0 – see change log below and migration document.
- Updated Closure Compiler to v20190528
License was changed from GPLv3 to MIT.
- Fixed config validation rejecting PostCSS plugins in
extraPluginsfield.
- Updated Closure Compiler to 20190513
- Fixed several minor issues in config schema
generatedCodeandproject.distdirectories are no longer required to exist. Build scripts will automatically create them when necessary.
- Fix CLI
--configargument parsing. - Return empty result from
AbstractExtension.generateCodeallowing extensions not to redefine this method.
- Add
ISourceProviderto package exports.
Technical release to fix an exception in previous release.
- BREAKING: Config structure was drastically reworked and is fully incompatible with previous versions. See configuration
- Config JSON schema was introduced and is used for config validation, type checking and documentation generation.
- Package
mainwas changed fromZBApplicationto index.js file aggregating framework classes. ZBApplication is now available asrequire('zombiebox').Application. Application.getAllConfigsmethod was removed. UsegetConfigandgetAppPackageJsoninsteadApplication.getPathInfowas renamed toApplication.getPathHelperBuildHelper.getCompressedStylesresource destination path argument is now mandatory- Added
zbas alias forzombieboxCLI - Fixed a game-breaking typo in StylesCache
- Several instances of
packageConfigvariables referring to package.json files were renamed topackageJSONApplication.getAppPackageConfigtoApplication.getAppPackageJsonApplication.getZBPackageConfigtoApplication.getZbPackageJsonLoader.loadFromPackageConfigtoLoader.loadFromPackageJsonLoader.getPackageConfigstoLoader.getPackageJsons
AbstractTransportnow has aREQUEST_PARAMStemplate.doRequestanddoPersistentRequestaccept it as the only argument. Error handler now also receives it. This is only partially backwards compatible, see migration document.
- Added principal axis navigation support
- CLI was refactored.
zb-cliis now deprecated. Usenpx zombiebox(ornpx zb) to access ZombieBox CLI from projects. - BREAKING:
postcss-cssnextwas replaced withpostcss-preset-env. CSS features support was dropped to stage 3 only.
- CuteJS was removed from framework and moved into zombiebox-extension-cutejs; See extension's MIGRATION.md
- Removed some deprecated APIs:
zb/client-rectAbstractInput.pointingDeviceEnableAbstractInput.pointingDeviceDisableAbstractViewPort.hasFeatureAspectRatioIInput.pointingDeviceEnableIInput.pointingDeviceDisableIViewPort.hasAspectRatioFeaturezb/device/aspect-ratio/proportion.js:Common.x4x3zb/device/aspect-ratio/proportion.js:Common.x16x9
- Node 6.0 support dropped. Minimal supported version is now 8.9 LTS.
- Removed some deprecated APIs:
ZBBuildHelper.setDefineArgsZBBuildHelper.writeIndexHtmlZBBuildHelper.copyCustomWebFilesZBPath.getCCDirZBPath.getWebDirZBPath.getDevJsZBApplication.getCustomWebFilesScaffolding.renderIndexHTML
Major breaking change: ECMAScript modules support added and framework code migrated to modules. See migration document.
Code base migrated to modules.
- CSS resource inlining is rewritten from custom implementation to postcss-url.
- CSS minimizing now also done though postcss CSSO plugin
- Scaffolding commands (
zb addSceneet al) no longer accept base class parameter - ZombieBox version used for compilation is now always the same that application depends on, regardless of what ZombieBox version build scripts are used to run it.
- Several methods and their signatures changed:
- Removed:
ZBApplication.getCodeSources - Removed:
ZBApplication.getAppScripts - Removed:
AddonLoader.getAddonWebPath - Changed:
ZBApplication.getStyles– no longer accepts parameters - Changed:
ZBApplication.getSortedStyles– no longer accepts parameters - New:
ZBApplication.getGeneratedEntryPoint - New:
ZBApplication.getAliases - New:
ZBApplication.recalculateAliases - New:
ZBApplication.aliasedPathToFsPath - New:
ZBApplication.fsPathToAliasedPath - Renamed:
SourceProviderCodeCache.generateDefinetoSourceProviderCodeCache.generateDefines - Deprecated:
ZBApplication.getCustomWebFilesin favor ofgetStaticFiles - Deprecated:
ZBApplication.copyCustomWebFilesin favor ofcopyStaticFiles - Deprecated:
ZBApplication.getCCDirin favor of corresponding config field - Deprecated:
ZBApplication.getWebDirin favor of corresponding config field - Deprecated:
ZBApplication.getDevJsin favor of corresponding config field
- Removed:
- Fix GCC warning in zb.device.aspectRatio.Proportion
No changes, functionally the same as 1.0.0-beta6
- Dev server and version checker split from
ZBApplicationinto their own classes - Updated dependencies:
- google-closure-compiler@20190121.0.0
zb.clientRect.Rectandzb.device.AbstractViewPort.Rectdeprecated in favor ofzb.clientRect.Rect; All interfaces that used them were changedzb.define.console.ENABLE_CONSOLErenamed tozb.define.ENABLE_CONSOLEzb.InputDispatcherconstructor now acceptszb.IKeyHandlerHTML5Videonow also handles<source>errorszb.std.plain.Rect.extrapolateoptimisation- Added static methods
createHorizontalInfiniteRectandcreateVerticalInfiniteRecttozb.std.plain.Rect - Removed some unnecessary polyfills
- Updated dependencies:
- google-closure-compiler@20180805.0.0
- zb-log-server@0.0.6
- zb-utils@0.1.8
- css@2.2.4
- postcss@7.0.2
- chalk@2.4.1 instead of colors@1.3.0
- archiver@3.0.0
- yargs@12.0.2
- eslint@5.5.0
- eslint-config-interfaced@1.2.0
- eslint-plugin-interfaced@1.2.0
- semver@5.5.1
- karma@2.0.5
- sinon@6.2.0
- Dynamic defines by a new config key
define, as a successor ofcompilation.flags.define, but working not only in compilation - External scripts and styles adding by new config keys
scripts.externalandstyles.external - Scripts excluding by a new config key
scripts.exclude - Including of custom files to the build by
build.include - Passing of a specific config key through CLI (e.g.
--config.compilation.level '"SIMPLE_OPTIMIZATIONS"') - Synchronous addons loading
- Introduced a new addon method
setApplication() - Removed CLI option
--enableConsole. To achieve the same behaviour consider--config.define.console.ENABLE_CONSOLE - Removed CLI option
--platformin favor of more generic--addon - Removed generation of
zb.device.ResolutionInfo. Also removed the related config keyresolution - Removed DI functionality in favor of an extension (see the migration guide for details).
Also removed the related config keys
servicesandservicesAutodetect - Renamed some config keys (you still can use the old ones, but in this case the deprecation warning will appear):
scripts->compilation.includestyles->styles.includejsLibs->scripts.includestylesExclude->styles.excludestylesOrder->styles.orderstylesTransformOptions->styles.postcss.cssnextOptionsstylesPlugins->styles.postcss.pluginsbuild.inlineCSSResources->styles.inlineResources
- Extended enum
zb.http.Method - Reworked
zb.xhr.simple.sendto be more flexible - Normalize the input value in
zb.device.platforms.common.HTML5Video#setVolume() - Renamed
zb.console.ENABLE_CONSOLE(tozb.define.console.ENABLE_CONSOLE) and now it's set totrueby default - Removed
PALresolution support
- Dead code elimination improvement
- Peer dependencies check skipping by a new config key
skipVersionsCheck - Fixed typo in the wrapping of console's methods
- Closure Compiler
v20180506.0.0
- Optimization for
zb.html.text() - Abstract
zb.widgets.BaseNavigation(renamed tozb.widgets.AbstractNavigation) - Separated
zb.widgets.Navigationtozb.widgets.SpatialNavigationandzb.widgets.OrderNavigation - Disallow
widgetToto bebooleaninzb.widgets.Container#setNavigationRule() - Removed unused events:
zb.Application#EVENT_SCENE_SHOWN,zb.Application#EVENT_SCENE_HIDDEN,zb.widgets.IWidget#EVENT_WANT_BLUR - Prevent warnings about non-passive mouse wheel listener
- Fixed an exception during drawing of a debug navigation line
- Event based handling of the loaded extensions
- PostCSS plugins passing by a new config key
stylesPlugins - Removed Babel
- Closure Compiler
v20180402.0.0
- Check whether the default widget is focusable when a container gets focus
- Prolong pointer idle timeout by click and wheel events
- Reworked the warning about listeners cloning during the execution phase
- Clone listeners for
zb.events.EventPublisher#EVENT_ANY - Added
zb.layers.Layer#_removeContainerClass() - Added
zb.widgets.Widget#_addContainerClass() - Added
zb.widgets.Widget#_removeContainerClass()
- Added code generation by the loaded extensions with a special method
generateCode() - Peer dependencies check
- Introduced CSSNext alongside with a new config key
stylesTransformOptions - Deprecated
compilation.autoprefixerconfig key - Unified report for errors and warnings
- Extract compilation info from a build output
- Set
zombiebox-platform-pcas a peer dependency - Package lock file
- Closure Compiler
v20180101.0.0
- Abstract
zb.device.Device(renamed tozb.device.AbstractDevice) - Abstract
zb.device.Input(renamed tozb.device.AbstractInput) - Abstract
zb.device.ViewPort(renamed tozb.device.AbstractViewPort) - Renamed
zb.device.Info(tozb.device.AbstractInfo) - Added
zb.device.error.UnsupportedFeature - Added chromakey methods to
zb.device.IDevice - Deprecated
zb.device.IViewPort#hasFeatureAspectRatio() - Deprecated
zb.device.IInput#pointingDeviceEnable()andzb.device.IInput#pointingDeviceDisable() - Marked all abstract methods that can throw
zb.device.error.UnsupportedFeatureby@throws - Return from
zb.device.IVideo#forward() - Nullable return from
zb.device.IViewPort#getArea() - Consider
zb.device.platforms.common.HTML5Video#forward()/zb.device.platforms.common.HTML5Video#rewind()successful when no exception was thrown - Fixed GCC warnings in
zb.xhr.Transport
- Fixed mime type for
base64
- Added CLI option
--platformfor connecting platform by a path
- Added
zb.device.platforms.common.LocalStorage.isSupported()(static) - Removed legacy
zb.device.AbstractVideo_matchStateToEvent() - Separate file for namespace
zb.device.input.Keys - Renamed
x4x3toX4X3in enumzb.device.aspectRatio.Proportion.Common
- Added design materials
- Don't pass
nulltowindow.history.pushState()inzb.BackButtonListener
- Fixed GCC warnings in
zb.BackButtonListener
- Complete BCP 47 pattern for locale validating
- Extended
zb.device.IInputby IDLE methods
- Fixed polyfill for
Array.prototype.find()(see termi/ES5-DOM-SHIM#9) - Removed support of
.es6extensions - Invalidate transpiler cache for
.code-cachefiles
- Described edge cases of
zb.BackButtonListener - Unsubscribe only a certain once listener
- Unsubscribe once listeners in
zb.events.EventPublisher#removeAllListeners()
- Display the file path when DI or autoprefixer throw an exception
- Prevent false positive transpiling headers
- Added
zb.widgets.Container#activateNearestWidget() - Fixed a bunch of ESLint warnings
- Removed polyfill for
Promise - Removed typedefs for
IThenableandJSON - Fixed incorrect path resolving on Windows
- Abstract
zb.device.Info - Fixed some contradictory access modifiers
- Reject a promise returned from
zb.LayerManager#open()when layer throws an error - Removed definition of the private method in
zb.events.IEventPublisher
- Added CLI option
---configand deprecated--custom-config - Don't treat any file with name
app.jsas/app.jsendpoint for a bundled code - Don't left unused
<link href="...">in a build - Prevent permanent
dev.jstranspiling
- Disable text selection by default
- Ability to turn off the inlining of css resources by a new config key
inlineCSSResources - Bundler for transpiling alongside with
/es6endpoint for untranspiled code - Extracted the parts of build process (dev server, transpiler, extensions loader, scaffolding) to modules
- Server side code moved to ES6
- Closure Compiler
v20170218.0.0
- Added
zb.device.IInfo#locale() - Added
zb.device.IDevice#getLaunchParams() - Added
zb.Timeout#isInProgress() - Set viewport full screen mode by default
- Use "zombiebox.tv" instead of "zombiebox.net" as a link to the site
- ZombieBox was bumped to 1.0.0!