Skip to content

Latest commit

 

History

History
449 lines (350 loc) · 17.3 KB

CHANGELOG.md

File metadata and controls

449 lines (350 loc) · 17.3 KB

medea-jason changelog

All user visible changes to this project will be documented in this file. This project uses Semantic Versioning 2.0.0.

master · unreleased

Diff

Upgraded

0.7.0 · 2024-10-29

Diff

BC Breaks

Changed

Upgraded

0.6.1 · 2024-09-11

Diff

Changed

0.6.0 · 2024-08-27

Diff

Fixed

  • VP9 being forced to use profile-id=2 in SFU mode. (#180)

Upgraded

0.5.0 · 2024-08-05

Diff

BC Breaks

  • Minimal supported version of medea-client-api-proto is 0.6.0 (#151).
  • Library API:
    • Removed with_rpc_client() constructor and added WebSocketRpcClient as argument to new() constructor in Jason (#175).

Added

  • Logging:
    • Exceptions thrown from Dart callbacks called by Rust (#138).
  • Monitoring:
    • IceCandidateError metric sending to server (#151);
    • transport_id, local_candidate_id and remote_candidate_id to RtcIceCandidatePairStats (#172).
  • Library API:
    • ideal_auto_gain_control() and exact_auto_gain_control() methods to AudioTrackConstraints (#166);
    • is_on_audio_level_available() and on_audio_level_changed() methods to LocalMediaTrack (#167).

Fixed

  • Screen sharing in Firefox (#135).
  • State synchronization during initial negotiation in P2P mesh mode (#162).
  • ConnectionHandle.on_remote_track_added callback might be called twice for the same track (#162).
  • RemoteMediaTrack.on_media_direction_changed callback might not be called on direction update (#162).
  • Segfault on Dart isolate shutdown (#163).
  • Exception in Dart code might be ignored by Rust caller (#176).

0.4.0 · 2023-07-11

Diff

BC Breaks

  • Minimal supported version of medea-client-api-proto is 0.5.0 (#119).

Fixed

  • Initial mute state on incoming tracks in SFU mode (#119).
  • Incorrect ConnectionHandles creation and disposal in SFU mode (#119).

0.3.0 · 2023-06-09

Diff

BC Breaks

  • Library API:
    • ReconnectHandle.reconnect_with_backoff() now performs first reconnect attempt immediately (instrumentisto/medea#206).
    • Removed JasonError and changed thrown exceptions kind (#4):
      • ConnectionHandle:
        • on_close - StateError;
        • get_remote_member_id - StateError;
        • on_remote_track_added - StateError;
        • on_quality_score_update - StateError.
      • MediaManager:
        • enumerate_devices - EnumerateDevicesException.
        • init_local_tracks - LocalMediaInitException.
      • RoomHandle:
        • join:
          • StateError;
          • FormatException;
          • RpcClientException;
          • InternalException.
        • on_new_connection - StateError;
        • on_close - StateError;
        • on_local_track - StateError;
        • on_failed_local_media - StateError;
        • on_connection_loss - StateError;
        • set_local_media_settings - MediaSettingsUpdateException;
        • mute_audio, unmute_audio, mute_video, unmute_video, disable_audio, enable_audio, disable_video, enable_video, disable_remote_video, enable_remote_video, disable_remote_audio, enable_remote_audio:
          • StateError;
          • MediaStateTransitionException;
          • InternalException;
          • LocalMediaInitException.
    • Renamed InputDeviceInfo object to MediaDeviceDetails (#29, #106).
    • RemoteMediaTrack:
      • Replaced on_enabled and on_disabled callbacks with on_media_direction_changed callback (#46);
      • Replaced enabled method with media_direction method (#46).

Added

  • Library API:
    • Optional argument to ReconnectHandle.reconnect_with_backoff() function that limits max elapsed time ([#206]).
    • Exceptions (#4, #31):
      • StateError;
      • LocalMediaInitException;
      • EnumerateDevicesException;
      • RpcClientException;
      • InternalException;
      • FormatException;
      • MediaStateTransitionException;
      • MediaSettingsUpdateException.
    • MediaManagerHandle.set_output_audio_id() method switching output audio device on Dart platform (#29);
    • MediaManagerHandle.on_device_change() callback firing whenever MediaManagerHandle.enumerate_devices() list changes (#30);
    • ConnectionHandle methods (#43, #59):
      • enable_remote_video;
      • disable_remote_video;
      • enable_remote_audio;
      • disable_remote_audio.
    • MediaDirection type (#46).
    • MediaManagerHandle methods for microphone volume on Dart platform (#49):
      • microphone_volume_is_available;
      • microphone_volume;
      • set_microphone_volume.
    • LocalMediaInitExceptionKind variants (#52):
      • GetUserMediaAudioFailed;
      • GetUserMediaVideoFailed.
    • MediaManager.enumerate_displays() (#81);
    • LocalMediaTrack (#109):
      • on_ended;
      • state.
    • Exposing all APIs via FFI to Dart (#8, #9, #10, #12, #14, #26, #28).

Fixed

  • Library API:
    • Unconverted into Dart exception error in RoomHandle.onFailedLocalMedia() (#57).

Updated

  • Switch to [2021 Rust edition][012-1] (#16).

0.2.0 · 2021-04-09

Diff | Milestone | Roadmap

BC Breaks

  • Library API:
    • Remove MediaStreamHandle (#143);
    • Expose on_local_track callback in Room instead of Jason (#54, #143);
    • Replace on_local_stream callback with on_local_track (#143);
    • Room initialization (#46):
      • Remove Jason.join_room().
  • Transport and messaging:
    • Reverse ping/pong mechanism: expect Pings from server and answer with Pongs (#75).

Added

  • Media management:
    • Library API:
      • Disable/Enable local video/audio (#40, #81, #97, #144, #155):
        • Room.disable_audio();
        • Room.enable_audio();
        • Room.disable_video();
        • Room.enable_video().
      • InputDeviceInfo class obtainable via MediaManager.enumerate_devices() (#46);
      • MediaManager class obtainable via Jason.media_manager() (#46):
        • MediaManager.enumerate_devices();
        • MediaManager.init_local_tracks() (#46, #143).
      • Local media stream constraints:
        • MediaStreamSettings, AudioTrackConstraints classes (#46, #97);
        • DeviceVideoTrackConstraints, DisplayVideoTrackConstraints classes (#78);
        • DeviceVideoTrackConstraints.ideal_facing_mode and DeviceVideoTrackConstraints.exact_facing_mode functions (#137);
        • DeviceVideoTrackConstraints width and height configuration (#158):
          • DeviceVideoTrackConstraints.ideal_width;
          • DeviceVideoTrackConstraints.exact_width;
          • DeviceVideoTrackConstraints.width_in_range;
          • DeviceVideoTrackConstraints.ideal_height;
          • DeviceVideoTrackConstraints.exact_height;
          • DeviceVideoTrackConstraints.height_in_range.
        • FacingMode enum (#137).
      • MediaKind enum that provides LocalMediaTrack/RemoteMediaTrack and InputDeviceInfo kind (#146);
      • MediaSourceKind enum that provides MediaTrack media source kind (Device or Display) (#146, #156);
      • Room management:
        • Jason.init_room() (#46);
        • Room.join() (#46);
        • Jason.close_room() (#147).
      • Ability to configure local media stream used by Room via Room.set_local_media_settings() (#54, #97, #145, #160):
        • Room.set_local_media_settings() can be configured to stop used tracks before trying to acquire new tracks (#160);
        • Room.set_local_media_settings() can be configured to rollback to previous settings if fail to set new settings (#160).
      • Room.on_failed_local_media callback (#54, #143);
      • Room.on_close callback for WebSocket close initiated by server (#55);
      • RemoteMediaTrack.on_enabled and RemoteMediaTrack.on_disabled callbacks being called when RemoteMediaTrack is enabled or disabled (#123, #143, #156);
      • RemoteMediaTrack.on_stopped callback that is called when RemoteMediaTrack is stopped (#109);
      • RemoteMediaTrack.on_muted and RemoteMediaTrack.on_unmuted callbacks being called when RemoteMediaTrack is muted or unmuted (#191);
      • RemoteMediaTrack.muted() method indicating whether this RemoteMediaTrack is muted (#191);
      • ConnectionHandle.on_remote_track_added callback being called when new receiver RemoteMediaTrack is added (#123, #143, #156);
      • Enabling/disabling remote video/audio (#127, #155):
        • Room.disable_remote_audio;
        • Room.enable_remote_audio;
        • Room.disable_remote_video;
        • Room.enable_remote_video.
      • Muting/unmuting audio/video send (#156):
        • Room.mute_audio;
        • Room.unmute_audio;
        • Room.mute_video;
        • Room.unmute_video.
      • RemoteMediaTrack/LocalMediaTrack media_source_kind function (#145, #146, #156);
      • RemoteMediaTrack class (#156);
      • LocalMediaTrack class (#156).
    • Optional tracks support (#106);
    • Simultaneous device and display video tracks publishing and receiving (#144);
    • RtcIceTransportPolicy configuration (#79).
  • Room management:
    • Library API:
      • Room.on_connection_loss callback that JS side can start Jason reconnection on connection loss with (#75);
      • Room.on_close callback for WebSocket close initiated by server (#55);
      • ConnectionHandle.on_close callback (#120);
      • ConnectionHandle.get_remote_member_id method (#124);
      • ConnectionHandle.on_quality_score_update callback for quality score updates received from server (#132).
  • RPC messaging:
    • Cleanup Jason state on normal (code = 1000) WebSocket close (#55);
    • RpcClient and RpcTransport reconnection (#75);
    • State synchronization on a RPC reconnection (#167).
  • Signalling:
    • Emitting of RPC commands:
      • AddPeerConnectionMetrics with IceConnectionState and PeerConnectionState (#71, #87);
      • AddPeerConnectionStats with RtcStats (#90);
      • Enabling/disabling audio/video send/receive via UpdateTracks command (#81, #155);
      • Muting/unmuting audio/video send via UpdateTracks (#156).
    • Handling of RPC events:
      • PeerUpdated with PeerUpdate::Added, PeerUpdate::Updated, PeerUpdate::IceRestart and PeerUpdate::Removed (#105, #138, #139, #109);
      • ConnectionQualityUpdated (#132).
  • Error handling:
    • Library API:
      • JasonError as library error with trace information and underlying JS error if it is the cause (#55)

Fixed

  • Signalling:
    • Skipped IceCandidates received before receiving remote SDP (#50).

0.1.0 · 2019-08-21

Milestone | Roadmap

Added

  • Transport and messaging (#18):
    • Library API:
      • new Jason();
      • Jason.join_room();
      • Jason.dispose().
    • RPC transport and heartbeat.
  • Ability to use ICE servers provided by server (#20).
  • Signalling (#22):
    • Library API:
      • RoomHandle.on_new_connection callback.
    • Handling of RPC events:
      • PeerCreated;
      • SdpAnswerMade;
      • IceCandidateDiscovered;
      • PeersRemoved.
    • Emitting of RPC commands:
      • MakeSdpOffer;
      • MakeSdpAnswer;
      • SetIceCandidate.
  • Media management (#22):
    • Library API:
      • MediaStreamHandle.get_media_stream();
      • ConnectionHandle.on_remote_stream callback;
      • Jason.on_local_stream callback.