Releases: etro-js/etro
Releases · etro-js/etro
Release list
v0.14.1
Fixed
- Visual layers' canvases are now only resized when needed (#362 by @suhailopensource).
- Transform effects no longer leave a trail when moving layers (#363 by @suhailopensource).
v0.14.0
0.14.0 - 2026-06-06
Added
- Movie serialization and deserialization (#340 by @G3RRYGL3Z).
Changed
- Bump rollup-plugin-typescript2 to 0.37.0.
- Bump karma to 6.4.4.
Security
v0.13.0
0.13.0 - 2026-03-18
Added
Movie#play()optiononDraw()(#266).
Changed
- The type for
KeyFrame.valuehas been updated fromunknown[][]to(number|T|Interpolate)[][](#259).
Fixed
- Shader effects producing solid black output in browsers whose GLSL linker does not assign
a_VertexPositionto attribute location 0 (e.g., Firefox on macOS).
Security
- Bump ejs from 3.1.8 to 3.1.10 (#271).
- Bump follow-redirects from 1.15.4 to 1.15.6 (#267).
- Bump braces from 3.0.2 to 3.0.3 (#274).
- Bump socket.io from 4.6.1 to 4.7.5 (#277).
- Bump js-yaml from 4.1.0 to 4.1.1 (#309).
- Bump @rollup/plugin-eslint from 8.0.2 to 9.2.0 (#309).
- Bump validator from 13.11.0 to 13.15.20 (#308).
- Bump pbkdf2 from 3.1.2 to 3.1.5 (#307).
- Bump cipher-base from 1.0.4 to 1.0.6 (#305).
- Bump rollup from 1.32.1 to 2.79.2 (#300).
- Bump elliptic from 6.5.4 to 6.6.1 (#299).
- Bump ws, socket.io-adapter (#281).
- Bump cookie, socket.io (#283).
- Bump body-parser from 1.20.1 to 1.20.3 (#285).
- Bump shipjs from 0.26.3 to 0.27.0 (#314).
- Bump basic-ftp from 5.0.4 to 5.2.0 (#320).
v0.12.1
[0.12.1] - 2024-02-19
Fixed
- Importing etro in the client-side code of a NextJS project causing a "module not found" error (#243).
- Keyframes with values that are not numbers no longer result in type mismatches.
TypeError: this.data is undefinedwhen applying aTransformeffect with a dynamic matrix.
v0.12.0
Playback Update
0.11.0 - 2023-08-05
Added
durationoption forMovie#play(#208).
Fixed
- Audio and video layers going silent after the first time recording the movie (#106).
Failed to set the 'currentTime' property on 'HTMLMediaElement'error when seeking audio and video layers (#227).- Seeking while playing not updating the movie's current time (#233).
Security
- Bump word-wrap from 1.2.3 to 1.2.5 (#222).
v0.10.1
Streaming Update
0.10.0 - 2023-04-18
Added
Movie#stream()to stream the movie to aMediaStream.- New
onStartoption forMovie#play()andMovie#record(). - Image, audio and video layers'
sourceproperties now accept urls (#153). - Movies, layers and effects have a new
readygetter, indicating if they are ready to play. - Layers and effects now have an async
whenReadymethod. Movie#seek()method.- Layers have new
seek()andprogress()methods. onceoption forsubscribe.
Changed
- The (deprecated)
'movie.pause'event is now published every time playback stops, regardless of the reason. sourceproperties ofImage,AudioandVideohave been retyped toHTMLImageElement,HTMLAudioElementandHTMLVideoElementrespectively.
Deprecated
etro.applyOptions()andEtroObject#getDefaultOptions()are deprecated. Instead, set each option in the constructor (#131).- The
Movie#currentTimesetter is deprecated. UseMovie#seek()instead. Movie#setCurrentTime()is deprecated. Instead, callseek()andrefresh()separately.- The
'movie.seek'event is deprecated. Override theseek()method on layers instead. - The
'movie.timeupdate'event is deprecated. Override theprogress()method on layers instead. - The
'movie.loadeddata'event is deprecated. - The
'movie.play'event is deprecated. Provide theonStartoption toplay(),stream()orrecord()instead. - The
'movie.pause'event is deprecated. Wait forplay(),stream()orrecord()to resolve instead. - The
'movie.record'event is deprecated. Provide theonStartoption torecord()instead. - The
'movie.recordended'event is deprecated. Wait forrecord()to resolve instead. - The
'movie.ended'event is deprecated.
Removed
Movie#autoRefresh(see #130).changeevents (see #130).watchPublic()andpublicExcludes(see #130).
Fixed
Movie#currentTimeis now reset to 0 when the movie ends.Movie#play()andMovie#record()now wait until all resources are loaded before starting.Movie#pause()no longer stops inactive layers (#203).- Array methods like
unshiftforetro.layer.Visual#effectsandetro.effect.Stack#effectswork properly. AudioSource#playbackRateis now optional.durationoption forAudioandVideolayers is now optional.Videoconstructor now accepts missing options.
v0.9.1
Boring Update
0.9.0 - 2022-07-17
Changed
- Methods in the
Baseeffect now acceptBaselayers instead ofVisuallayers.
Deprecated
Fixed
- Layers no longer trigger infinite loops when their active states change (#127).
- Add missing
VisualSourceoptions toImagelayer (#128). - Layers are now stopped when recording ends.
stop()is no longer called on inactive layers.- Movies no longer publish
'movie.ended'when done recording. AudioandVideolayers not detaching properly.- When done playing or recording, movies only reset their time if they're in repeat mode.
- The
timeupdateevent is no longer fired whencurrentTimeremains the same (due toperformance.now()rounding).