# Change Log

## 5.0.0

- methods "getRole()", "restart()" and "getIfAttached()" were removed,
- methods "subscribe()", "unsubscribe()", "play()" "pause()" work now asynchronously inside a task queue,
- method "attachToContainer()" now accepts both a string parameter (an id of a container) or HTMLElement reference,
- new method "updateToSize()" was added, it will force library to resize inside current container,
- mechanism for auto-scaling to parent container was greatly improved,
- parameter "connectionType" was dropped, as gateway is the only available connection type now,
- library can be auto-initialized though additional parameter in the constructor,
- event "playerCoreReady" was renamed to "playerReady", it'll fire now directly after initialize method is executed,
- mute/unmute logic has been changed. Library will mute playback only if specified by the configuration or forced by a browser,
- muted parameter was added to volume settings,
- getSourceList method was renamed to getSourceItemList,
- playSource method was renamed to playSourceItem,
- library will not utilize cookie API anymore, localStorage is now being used instead,
- library size was reduced by over 40%,
- StreamInfo object now contains new field called "monogram", which is assigned based on a video resolution (e.g. "sd", "hd", "2k")
- serverConnect, serverDisconnect & serverConnectionError events now include "sequenceNum" parameter which tells which connection sequence it is
- getStreamState() and getPlaybackState() use separate sets of enums,
- new event qualityListUpdate was added,
- new event containerChange was added,
- new method getQualityItemList() was added,
- new method playQualityItem(qualityID:number) was added,
- new method makeScreenshot() was added,
- new method getServerInfo() was added,
- change in volume mechanics - setting volume to 0 will automatically trigger mute,
- buffer and bandwidth data can now be accessed though methods "getBandwidthAnalyser()", "getBandwidthMeter()" and "getBufferAnalyser()",
- dynamic graphs can now be spawned using "createBufferGraph()", "createBandwidthGraph()" and "createBufferStabilityGraph()",
- quality control modes were added to the library, these can be controlled via "getQualityControlMode()" & "setQualityControlMode(...)",
- new stylised console logs were added for Stage, Playback & Quality controllers,
- JSDoc is now included in types,
- Dedicated test page (index.html) to allow familiarization with the library API.


## 4.4.0

- "streamKey" parameter is now optional and player can be initialized and connected to a server without defined streamKey,
- "containerID" parameter is now also optional, player can be initialized without a container,
- new method called "attachToContainer" was added, 
- new method called "detachFromContainer" was added,
- new method called "getIfAttached" was added,

## 4.3.0

- "Gateway" connection-type is now the default one, and the field connetionType i now optional,
- resizing mechanizm was updated,

## 4.2.0

- The library will now react if a stream is created, even if it did not exist earlier on a server,
- Minor improvements to WebSocket engine,

## 4.1.2

- All samples and documentation wa modified to use "gateway" configuration,
- License header was updated,

## 4.1.1
- Minor improvements for Cloud data pooling,

## 4.1.0
- Library will now report info regarding latency back to server,
- General improvements to MSE/MMS playback,

## 4.0.5
- Minor improvements to quality change & ABR,

## 4.0.4
- New methods - isConnected & isAuthorized were added to the API,
- Method name - gatewayRequest was replaces with subscribe method (it also provides auto-play functionality),

## 4.0.3
- New methods - isConnected & isAuthorized were added to the API,

## 4.0.2
- Bug fix for restoring library after a tab freeze,
- Bug fix for wrong return type for getStreamConfig,

## 4.0.1
- Bug fix for source list update event,

## 4.0.0

- Native mobile FullScreen mode as option,
- New events and event-name changes,
- New MediaSource and LL-HLS internal players,
- Gateway embed method was redesigned (works much faster now),
- New communication protocol for Storm Streaming Server (version 3.0),
- Support for optional parameters,
- Playback states for better player control,
- Stream states for even better player control,
- Changes in API,
- ManagedMediaSource has replaced LL-HLS on iOS 17+,

## 3.0.0

- Library was upgraded to Node 20.3.1,
- Standardization of event names and API methods,
- Change in the mechanics of some events,
- In the stream settings, the application has been moved to the server section,
- New embed code formula for Gateway connection type,
- New communication protocol for Storm Streaming Server (version 2.0),
- Player width & height can now be expressed as % value or px,
- Aspect-ratio parameter was added,

This version of the Storm Library is only compatible with Storm Streaming v.2.0.0 and above.

## 2.2.3

- Improved memory management for video object (small RAM usage for long streaming sessions),

## 2.2.2

- Small fix removing liveupdate component from the library (reduced size),

## 2.2.1

- Incorrect config types were fixed,
- Missing streamInfo type was added,
- Missing restartOnFocus parameter type was added,

## 2.2.0

- New optional parameter for Settings section called "restartOnFocus" was added,
- Pause/Play mechanism has been alerted slightly for DVR functionality,

## 2.1.4

- Improved event reporting for VolumeChange and Mute on/off,
- Improved seek mechanism (DVR),
- Timeout for all connections has been added,

## 2.1.3

- Improved documentation and samples,

## 2.1.2

- Small improvements in resizing module,

## 2.1.1

- PlayerState bug on quality change was fixed,

## 2.1.0

- All end-point config options received setters,

## 2.0.1

- Bug with isInitialized() method returning false after the event was fixed,

## 2.0.0

- Dedicated bundles for UMD, AMD, CJS, ESM, IIFE are now available,
- Improved typings for TypeScript,
- Expanded Readme.md,
- Sample configurations are now included,

Please keep in mind that this build is not compatible with previous releases. While API/Events are the same, creating
a library instance is different depending on the used module type.

## 1.2.1

- Bug with HLS connection timeout was fixed,


## 1.2.0

- Improved support for Facebook/Messenger browser,
- "play" method received a parameter allowing for "force" start,
- A small bug in "destroy" method was fixed (not all connections were terminated)


## 1.1.0

- Improved latency management for iOS,
- Support for NVENC was added,
- WebRTC Streamer (beta) was added to the player

## 1.0.0

- Small improvements to license error-handling,


## 0.9.4

- Minor changes to the package.json,

## 0.9.3

- TypeScript types were added to the project,

## 0.9.2

- Minor changes to the project structure,

## 0.9.1

- Minor fixes to the video-scaling system,
- Stream label can be acquired before "start" command,

## 0.9.0

The first public version of the library. This is a beta version,

