- 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
NativeReadyState
toStatefulHtml5Video
- Replaced
chalk
withkleur
- Improved output of
--help
option for CLI tools
- Fixed
EVENT_INNER_FOCUS
being left out fromIWidget
interface
- Added
EVENT_INNER_FOCUS
toContainer
this 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
StatefulHtml5Video
now ensuresSTART_POSITION
is applied before enteringREADY
IStatefulVideo.getEngine
method 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
engines
fields 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 build
now only accepts one platform and can't build for several at once.AbstractPlatform.buildApp
method 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-level
or-l
flag, seezb --help
. generated/package-info
was removed.
- ENTER key events caused by mouse clicks now no longer propagates down widget tree.
generated/package-info
was 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:
PrincipalAxisNavigation
is now used as first spatial navigation strategy of choiceEventPublisher
refactored, addedrunAfterCurrentEvent
method, improved test coverage- QHD resolution support removed, 4K and 8K added
Info.osdResolutionType
deprecated in favor ofgetOSDResolution
andgetPanelResolution
Viewport.getFullScreen
deprecated in favor ofisFullScreen
AbstractStatefulVideo
andAbstracViewport
constructors both now accept panel and app resolutionszb/http
decodeParams
now 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
ERROR
state EVENT_ERROR
now tries to make a better message
- Fixed issue when errors occurred while loading custom configs could be consumed and not reported
- Aborting transition in
StateMachine
now 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
PrincipalAxisNavigation
is now used as first spatial navigation strategy of choice- Improved stability of
StatefulVideo
, especially when destroying it EVENT_STATE_EXIT
now happens before asynchronous transitions. This makesgetState
returnnull
in between states.getPendingTransitions
should be used in this occasions.EventPublisher
refactored, addedrunAfterCurrentEvent
method, improved test coverage
- Ensure
getUrl
always returns url in LOADING state - Refactor Viewport to always accept application coordinates
Device.createStatefulVideo
no longer requires Rect parameter- QHD resolution removed support, 4K and 8K added
AbstractStatefulVideo
andAbstracViewport
constructors both now accept panel and app resolutionsInfo.osdResolutionType
deprecated in favor ofgetOSDResolution
andgetPanelResolution
Viewport.getFullScreen
deprecated in favor ofisFullScreen
- Added
PrepareOption
to 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
IStatefulVideo
methods: staticisDRMSupported
, staticcanHandleMultiDRM
,attachDRM
,detachDRM
. - new interfaces and classes:
IDRMClient
,AbstractDRMClient
,PlayReadyClient
. PrepareOption.FORMAT
was renamed toPrepareOption.TYPE
and now accepts mime-type.MediaType
enum added with common mime types.
Unstable channel release.
IStatefulVideo
,AbstractStatefulVideo
andStatefulHtml5Video
classes andDevice.createStatefulVideo
were 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/http
decodeParams
now 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.
SourceProviderCodeCache
was renamed toSourceProviderGenerated
.Application.ready
now also builds generated code (no longer necessary to callbuildCode
).- Added
watch
andstopWatching
methods toISourceProvider
. - Google Closure Compiler updated to 20190929.0.0
- Widget theme functionality (
setTheme
) was removed. input/keys.js
renamed toinput/key.js
. Old name is kept as alias. Will be deprecated and replaced soon.- Fixed GCC warnings in StateMachine.
postcss.extraPlugins
property was split into two:filePlugins
andbundlePlugins
to allow more granular control over when plugins are run.filePlugins
is similar toextraPlugins
behaviour prior to version 2.2.0.
- Avoid using
ParentNode.prepend
because 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). StylesCache
andApplicatione.getStylesCache
were removed. Instead, dev server now handles its cache.- As as result, dev server performance was noticeably improved.
- Dev server no longer runs
postcss.extraPlugins
against project css files. - Build process now processes CSS files after bundling. This significantly improved CSSO effectiveness.
Container.setTheme
andContainer.getTheme
were 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
StateMachine
class. -
.zb-video-container
element was removed from base framework. This resulted in following API changes:Application.getVideoContainer()
public method and_videoContainer
protected property were deprecatedAbstractDevice
no longer takesHTMLElement
in its constructorsIDevice
andAbstractDevice
now expect aRect
argument increateVideo
AbstractVideo
now requires aRect
argument 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.getBody
method was added.
- Fixed another exception in
BuildHelper.addDirToArchiveMap
method. - Moved
setTemplateHelper
method toAbstractAddon
to allow platform use it in addition to extensions.
- Fixed exception in
BuildHelper.addDirToArchiveMap
method. - Added
setTemplateHelper
method toAbstractExtension
and exposedTeamplateHelper
class 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
extraPlugins
field.
- Updated Closure Compiler to 20190513
- Fixed several minor issues in config schema
generatedCode
andproject.dist
directories are no longer required to exist. Build scripts will automatically create them when necessary.
- Fix CLI
--config
argument parsing. - Return empty result from
AbstractExtension.generateCode
allowing extensions not to redefine this method.
- Add
ISourceProvider
to 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
main
was changed fromZBApplication
to index.js file aggregating framework classes. ZBApplication is now available asrequire('zombiebox').Application
. Application.getAllConfigs
method was removed. UsegetConfig
andgetAppPackageJson
insteadApplication.getPathInfo
was renamed toApplication.getPathHelper
BuildHelper.getCompressedStyles
resource destination path argument is now mandatory- Added
zb
as alias forzombiebox
CLI - Fixed a game-breaking typo in StylesCache
- Several instances of
packageConfig
variables referring to package.json files were renamed topackageJSON
Application.getAppPackageConfig
toApplication.getAppPackageJson
Application.getZBPackageConfig
toApplication.getZbPackageJson
Loader.loadFromPackageConfig
toLoader.loadFromPackageJson
Loader.getPackageConfigs
toLoader.getPackageJsons
AbstractTransport
now has aREQUEST_PARAMS
template.doRequest
anddoPersistentRequest
accept 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-cli
is now deprecated. Usenpx zombiebox
(ornpx zb
) to access ZombieBox CLI from projects. - BREAKING:
postcss-cssnext
was 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-rect
AbstractInput.pointingDeviceEnable
AbstractInput.pointingDeviceDisable
AbstractViewPort.hasFeatureAspectRatio
IInput.pointingDeviceEnable
IInput.pointingDeviceDisable
IViewPort.hasAspectRatioFeature
zb/device/aspect-ratio/proportion.js
:Common.x4x3
zb/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.setDefineArgs
ZBBuildHelper.writeIndexHtml
ZBBuildHelper.copyCustomWebFiles
ZBPath.getCCDir
ZBPath.getWebDir
ZBPath.getDevJs
ZBApplication.getCustomWebFiles
Scaffolding.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 addScene
et 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.generateDefine
toSourceProviderCodeCache.generateDefines
- Deprecated:
ZBApplication.getCustomWebFiles
in favor ofgetStaticFiles
- Deprecated:
ZBApplication.copyCustomWebFiles
in favor ofcopyStaticFiles
- Deprecated:
ZBApplication.getCCDir
in favor of corresponding config field - Deprecated:
ZBApplication.getWebDir
in favor of corresponding config field - Deprecated:
ZBApplication.getDevJs
in 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
ZBApplication
into their own classes - Updated dependencies:
- google-closure-compiler@20190121.0.0
zb.clientRect.Rect
andzb.device.AbstractViewPort.Rect
deprecated in favor ofzb.clientRect.Rect
; All interfaces that used them were changedzb.define.console.ENABLE_CONSOLE
renamed tozb.define.ENABLE_CONSOLE
zb.InputDispatcher
constructor now acceptszb.IKeyHandler
HTML5Video
now also handles<source>
errorszb.std.plain.Rect.extrapolate
optimisation- Added static methods
createHorizontalInfiniteRect
andcreateVerticalInfiniteRect
tozb.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.external
andstyles.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
--platform
in 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
services
andservicesAutodetect
- Renamed some config keys (you still can use the old ones, but in this case the deprecation warning will appear):
scripts
->compilation.include
styles
->styles.include
jsLibs
->scripts.include
stylesExclude
->styles.exclude
stylesOrder
->styles.order
stylesTransformOptions
->styles.postcss.cssnextOptions
stylesPlugins
->styles.postcss.plugins
build.inlineCSSResources
->styles.inlineResources
- Extended enum
zb.http.Method
- Reworked
zb.xhr.simple.send
to 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 totrue
by default - Removed
PAL
resolution 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.Navigation
tozb.widgets.SpatialNavigation
andzb.widgets.OrderNavigation
- Disallow
widgetTo
to beboolean
inzb.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.autoprefixer
config key - Unified report for errors and warnings
- Extract compilation info from a build output
- Set
zombiebox-platform-pc
as 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.UnsupportedFeature
by@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
--platform
for 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
x4x3
toX4X3
in enumzb.device.aspectRatio.Proportion.Common
- Added design materials
- Don't pass
null
towindow.history.pushState()
inzb.BackButtonListener
- Fixed GCC warnings in
zb.BackButtonListener
- Complete BCP 47 pattern for locale validating
- Extended
zb.device.IInput
by IDLE methods
- Fixed polyfill for
Array.prototype.find()
(see termi/ES5-DOM-SHIM#9) - Removed support of
.es6
extensions - Invalidate transpiler cache for
.code-cache
files
- 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
IThenable
andJSON
- 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
---config
and deprecated--custom-config
- Don't treat any file with name
app.js
as/app.js
endpoint for a bundled code - Don't left unused
<link href="...">
in a build - Prevent permanent
dev.js
transpiling
- 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
/es6
endpoint 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!