Release Notes
0.6.3 - 23.05.2024
Bugfixes
- Fallback to
JF_DIST_*
env vars whenFJ_DIST_*
ones are missing. We missed a couple of env vars related to distribution when fixing backward compatibility in0.6.1
.
0.6.2 - 22.05.2024
Features
- Log level may now be configured using the
FJ_LOG_LEVEL
env variable - Room IDs may now contain underscores as well as alphanumeric characters and hyphens
0.6.1 - 17.05.2024
Bugfixes
- Fallback to
JF_*
env vars whenFJ_*
ones are missing in all cases.
0.6.0 - 16.05.2024
Features
- Rebranding: Jellyfish -> Fishjam. All env vars have been renamed from
JF_*
toFJ_*
. When a new env var is not set, an old one is tried. This behaviour will be removed in version 0.8.0. [BREAKING] - Make allowed components configurable - from now, all components are by default
disabled and have to be enabled with
FJ_COMPONENTS_USED
. For example,FJ_COMPONENTS_USED=hls recording sip
. [BREAKING] - Metrics changed their prefix from
jellyfish
tofishjam
e.g.jellyfish_traffic_ingress_webrtc_total_bytes
->fishjam_traffic_ingress_webrtc_total_bytes
[BREAKING]
0.5.0 - 15.05.2024
Features
- Added Jellyfish version and commit to healthcheck endpoint
- Added Recording Component for creating meeting recordings
- Added ResourceManager that will remove raw recordings after timeout
- Added
Room.State
module and peer disconnected timeout, which removes peers after a predefined inactivity period - Added peer websocket url to PeerDetailsResponse, simplifying connecting a peer to Jellyfish
- Added
PeerAdded
andPeerDeleted
notifications, useful e.g. when a peer is removed due to a timeout - Restricted user-assigned room's id to alphanumeric [BREAKING]
- Allow for passing hostname to
JF_WEBRTC_TURN_LISTEN_IP
- useful for deployment on fly.io
Bugfixes
- Fixed ex-aws requests
- Extended timeout for AWS S3 requests
- Don't normalize AWS S3 paths
- Ensure that EPMD starts when starting the Jellyfish
0.4.2 - 08.03.2024
Bugfixes
- Fixed tracks not being removed after WebRTC peer disconnects
0.4.1 - 06.03.2024
Bugfixes
- API spec fixes - now correct version of OpenAPI is shown in docs
- Fixed peer being removed once it disconnects from Jellyfish
0.4.0 - 27.02.2024
IMPORTANT This version might require clearing or updating env vars when running from source on macOS. See here.
Features
- added peer websocket close reason - now, server closes peer websocket with a reason e.g. "Internal server error", "Peer removed" or "Room stopped"
- added support for path in JF_HOST env var
- added framerate option in the File component - defaults to 30 FPS
- added healthcheck endpoint - GET /health - requires authorization and returns: status, uptime and information about distribution (enabled/disabled, node status, number of nodes in a cluster).
- added published tracks and their metadata to the REST API e.g. GET /room will return a list of rooms with their components and peers, where each component and each peer will also list all of its published tracks
- added new server notifications:
PeerMetadataUpdated
,TrackAdded
,TrackRemoved
,TrackMetadataUpdated
- added peerless room purge option - after predefined amount of time, if a room is empty, it will be automatically closed. This behaviour is disabled by default. See here.
- added SIP component. This might require clearing or updating env vars when running from source on macOS. See here. [BREAKING]
- added basic structured logging that can be enabled with
JF_STRUCTURED_LOGGING
- added python RTSP -> HLS example
Bugfixes
- fixed duplicated
peer_disconnected
notification - fixed prometheus metrics not being reset - now, after room is removed, its metrics are set to 0
- fixed starting logs not being displayed when JF couldn't run in a distributed mode - now, even if JF crashes because of distribution-related problems, config logs will be displayed (i.e. JF version, WebRTC config, distribution config)
- fixed removing component, which crashed from JF state (thanks to @gfodor)
- fixed removing component, which finished its work from JF state
- fixed authorization not required for /hls and /recording endpoints [BREAKING]
- fixed authorization information in OpenAPI spec - previously, all endpoints were marked as requiring authorization, even if they didn't actually need it
0.3.0 - 09.01.2024
Features
- added
persistent
andtargetWindowDuration
options for HLS component - added VOD HLS (aka HLS recordings) - allows to play out HLS stream recorded with
persistent
set totrue
- added support for uploading HLS recordings to S3
- added manual subscription mode for HLS - from now, you can manually instruct HLS component when it should start recording tracks from a given peer or component
- added File component, which allows for publishing tracks from a file
- added ability to assign custom room ID
- added (LL)HLS benchmarks
- added WebRTC benchmarks
- added new ingress/egress traffic metrics for WebRTC and HTTP
- removed metrics per second [BREAKING] - user is expected to calculate those metrics on their own
- removed total ingress/egress traffic metrics [BREAKING] - user is expected to calculate those metrics on their own
- added new webhooks -
PeerConnected
,PeerDisconnected
,HlsUploaded
,HlsUploadCrashed
- added DNS strategy for clustering
- revisited logs - now only Jellyfish logs should be printed
- renamed ComponentMetadata to ComponentProperties in REST API [BREAKING] - requests that add components will result in responses containing
properties
field instead ofmetadata
field. - creating component will now always return configuration options this component was creatd with instead of an empty object [BREAKING]
- added
JF_SSL_KEY_PATH
andJF_SSL_CERT_PATH
- renamed
JF_OUTPUT_BASE_PATH
toJF_RESOURCES_BASE_PATH
and changed the default from jellyfish_output to jellyfish_resources [BREAKING] JF_DIST_NODE_NAME
defaults to hostname from nowJF_DIST_MODE
defaults to sname from now [BREAKING]- new versions of Elixir (0.3.0) and Python (0.2.0) Server SDKs
Bugfixes
- fixed
PeerDisconnected
notification - it might have not been fired e.g. when non-empty room was deleted. NowPeerDisconnected
is guaranteed to be fired every time peer is removed, peer crashes, non-empty room is removed or non-empty room crashes. - tests fixes and stability improvements
- fixed URL to Jellydashboard
- prevent from unauthorized access to system files via REST API
- fixed Prometheus metrics resolution - Prometheus metrics are now updated as soon as an event occurs instead of every X seconds