medea 0.2.0

Medea media server
Documentation
`medea` changelog
=================

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




## [0.2.0] · 2021-04-09
[0.2.0]: /../../tree/medea-0.2.0

[Diff]/../../compare/medea-0.1.0...medea-0.2.0 | [Milestone]/../../milestone/2 | [Roadmap]/../../issues/27

### BC Breaks

- Configuration:
    - Rename `[server]` section of Client API HTTP server as `[server.client.http]` ([#33]).
- RPC messaging:
    - Reverse `Ping`/`Pong` naming: server sends `Ping` and expects `Pongs` from client now. ([#75]).

### Added

- Control API:
    - Support for static Сontrol API specs ([#28]);
    - Dynamic Control API exposed via gRPC:
        - `Create` method for `Room`, `Member`, `Endpoint` ([#33]);
        - `Get` method for `Room`, `Member`, `Endpoint` ([#33]);
        - `Delete` method for `Room`, `Member`, `Endpoint` ([#33]);
        - `Apply` method for `Room`, `Member`, `Endpoint` ([#187]).
    - gRPC Control API callbacks:
        - `on_join` ([#63], [#153]);
        - `on_leave` ([#63]).
    - Configuration of `Member`'s Client API RPC settings ([#95]);
    - Hashed `Member` credentials support ([#168]).
- Signalling:
    - Dynamic `Peer`s creation when client connects ([#28]);
    - Auto-removing `Peer`s when `Member` disconnects ([#28]);
    - Filter `SetIceCandidate` messages without `candidate` ([#50]);
    - Send reason of closing WebSocket connection as [Close]https://tools.ietf.org/html/rfc4566#section-5.14 frame's description ([#58]);
    - Send `Event::RpcSettingsUpdated` when `Member` connects ([#75]);
    - Send relay mode in `Event::PeerCreated` which is used for configuring client's `RtcIceTransportPolicy` ([#79]);
    - Emit `PeerUpdated` event to create new and update existing tracks ([#105], [#139]);
    - Emit `TracksApplied` event to remove existing tracks on a client side ([#109]);
    - `PeerConnection` renegotiation functionality ([#105]);
    - Calculate and send call quality score based on RTC stats ([#132]);
    - Enabling/disabling `MediaTrack`s by receiver ([#127], [#155]);
    - Send `PeerUpdate::IceRestart` based on RTC stats analysis ([#138], [#139]);
    - Multiple `Room`s served by one RPC connection support ([#147]);
    - Muting/unmuting `MediaTrack`s ([#156]);
    - State synchronization on a RPC reconnection ([#167]).
- [Coturn] integration:
    - [Coturn] sessions destroying ([#84]);
    - [Coturn] stats processing ([#94]).
- Configuration:
    - `[server.control.grpc]` section to configure Control API gRPC server ([#33]);
    - `[turn.cli]` and `[turn.cli.pool]` sections to configure access to [Coturn] admin interface ([#84]);
    - `server.client.http.public_url` option to configure public URL of Client API HTTP server ([#33]);
    - `rpc.ping_interval` option to configure `Ping`s sending interval ([#75]);
    - `[media]` section to configure timeouts involved for determining media flow liveness ([#98]):
        - `max_lag`;
        - `init_timeout`.
    - `turn.db.redis.user` option to configure user to authenticate on [Coturn]'s [Redis] database server as ([#135]).
- Testing:
    - E2E tests for signalling ([#28]).

### Fixed

- Signalling:
    - Room crashing when handling commands with non-existent `peer_id` ([#86]);
    - Adding new endpoints to the already interconnected `Member`s ([#105]).

[#28]: /../../pull/28
[#33]: /../../pull/33
[#50]: /../../pull/50
[#58]: /../../pull/58
[#63]: /../../pull/63
[#75]: /../../pull/75
[#79]: /../../pull/79
[#81]: /../../pull/81
[#84]: /../../pull/84
[#86]: /../../pull/86
[#94]: /../../pull/94
[#95]: /../../pull/95
[#98]: /../../pull/98
[#105]: /../../pull/105
[#109]: /../../pull/109
[#127]: /../../pull/127
[#132]: /../../pull/132
[#135]: /../../pull/135
[#138]: /../../pull/138
[#139]: /../../pull/139
[#147]: /../../pull/147
[#153]: /../../pull/153
[#155]: /../../pull/155
[#156]: /../../pull/156
[#167]: /../../pull/167
[#168]: /../../pull/168
[#187]: /../../pull/187




## [0.1.0] · 2019-08-22
[0.1.0]: /../../tree/medea-0.1.0

[Milestone]/../../milestone/1 | [Roadmap]/../../issues/8

### Added

- WebRTC:
    - Basic signalling capabilities ([#16]/../../pull/16);
    - [Coturn] integration ([#20]/../../pull/20, [#42]/../../pull/42).
- Deployment:
    - Graceful shutdown ([#30]/../../pull/30);
    - Docker image ([#35]/../../pull/35).
- Configuration:
    - Ability to parse from files and env vars ([#15]/../../pull/15).
- Logging:
    - Structured logging to STDOUT/STDERR ([#12]/../../pull/12).





[Coturn]: https://github.com/coturn/coturn
[Redis]: https://redis.io
[Semantic Versioning 2.0.0]: https://semver.org