v0.2.0 — Magpie
Magpies are a common sight year-round; strong, intelligent, industrious, and loyal.
Taking after the humble magpie, this breaking release makes API changes favouring extensibility, patching some of the API rough spots, and adding resilience to some additional classes of failure.
Thanks to the following for their contributions:
Upgrade Pathway
- References to
songbird::{opus, Bitrate};should now usesongbird::driver::{opus, Bitrate};. - Custom
Inputs(i.e.,Reader::Extension/ExtensionSeek) now need to implementinput::reader::MediaSourcerather than justReadand/orSeek. - Sources which do not support seeking should have an
unreachable!()function body or always return an error, asMediaSource::is_seekable()is used to gate support. - Many event handler types in
songbird::EventContexthave changed to unitenums, rather thanstructvariants. - New body types are included in
songbird::events::context_data::*. Configstructs have been made non-exhaustive; they should be initialised viaConfig::default().- Channel join operations may now timeout after a default 10s—which should be handled.
- Errors returned when joining a channel will now inform you whether you should try to
leavea channel before rejoining. - Youtube-dl variants of
songbird::input::error::Errorhave had their case altered fromDL->Dl. TrackStatesent from the driver are no longer boxed objects.DriverDisconnectevents have been introduced, which cover all disconnect events. As a result,DriverConnectFailedandDriverReconnectFailedare deprecated.- Tokio 0.2 support is deprecated. Related features will be removed as of Songbird 0.3.
Added
- [driver] Driver: Automate (re)connection logic (#81) (@FelixMcFelix) c:210e3ae
- [input] Input: Add separate YouTube title and channel to Metadata (#75) (@vilgotf) c:edcd39a
- [input] Input: Implement StdError for DcaError, input::Error (#73) (@vilgotf) c:e1fc041
- [gateway] Gateway: Add debug logging around shard handling (@FelixMcFelix) c:b3caf05
- [gateway] Gateway: Add connection timeout, add
Configto gateway. (#51) (@FelixMcFelix) c:d303e0a
Changed
- [deps] Deps: Bump async-tungstenite version -> 0.14 (@FelixMcFelix) c:47e20d6
- [docs] Chore: Update Lavalink URLs (@FelixMcFelix) c:3efe756
- [deps] Deps: Bump twilight versions -> [0.5, 0.7) (#87) (@vilgotf) c:91d7542
- [tracks] Tracks: Remove box around TrackState (#84) (@vilgotf) c:91d7542
- [deps] Deps: Bump twilight versions -> 0.5 (#79) (@vilgotf) c:d2bb277
- [input] Input, Driver: Make error messages more idiomatic (#74) (@vilgotf) c:a96f033
- [docs] Chore: Rewrite update pathway. (@FelixMcFelix) c:8000da6
- [deps] Deps: Bump DiscoRTP version -> 0.4 (@FelixMcFelix) c:7fc971a
- [deps] Deps: Bump twilight versions -> 0.4 (@FelixMcFelix) c:fc94ddb
- [deps] Deps: Bump xsalsa20poly1305 version -> 0.7 (@FelixMcFelix) c:eb22443
- [input] Input: Change all Youtube-dl functions to take
AsRef<str>(#70) (@clarity0) c:a1ba760 - [gateway] Chore: Adapt #60, #64 in line with other breaking changes. (@FelixMcFelix) c:63d53b2
- [input] Use symphonia::io::MediaSource for Reader extensions (#61) (@james7132) c:a86898c
- [input] Input: Rename YTDL error variants for Clippy (#55) (@FelixMcFelix) c:3c7f86d
- [events] Events: Break out and non-exhaust context body structs (#54) (@FelixMcFelix) c:e7af0ff
- [driver] Driver: Move
Bitrateimport out of crate root. (#53) (@FelixMcFelix) c:1eed9dd - [deps] Deps: Bump DiscoRTP version -> 0.3 (#52) (@FelixMcFelix) c:bc952d0
Fixed
- [driver] Driver: Fix incorrect leave behaviour in Drop handler (@FelixMcFelix) c:dad48ca
- [benchmarks] Fix: Update Benchmark Imports (@FelixMcFelix) c:338a042
- [lint] Chore: Clippy fixes for new lints (@FelixMcFelix) c:a1c4f07
- [fmt] Chore: Repair formatting. (@FelixMcFelix) c:cd2ade9
- [fmt] Chore: Fix clippy warnings (useless clones). (@FelixMcFelix) c:21b8383
- [gateway] Gateway: Fix repeat joins on same channel from stalling (#47) (@FelixMcFelix) c:95dd19e