Releases: johanhelsing/matchbox
v0.11.0
What's Changed
BREAKING CHANGES
We dropped the typestate pattern on WebRtcSocket
. This means no more WebRtcSocket<SingleChannel>
or WebRtcSocket<MultiChannel>
There is simply WebRtcSocket
. And the same goes for bevy_matchbox
' MatchboxSocket
.
A single channel socket is now just a socket with one channel.
Code that previously used WebRtcSocket<SingleChannel>
now just needs to use the channel accessor to get to the channel:
v0.10
socket.send(message, peer);
v0.11
socket.channel_mut(0).send(message, peer);
We've also removed the ggrs
convenience constructors. Users are now expected to know that they need an unreliable channel for GGRS to work optimally. The ggrs socket implementation is now removed from the socket itself and only implemented by the channels. See the example for how to use matchbox with GGRS.
Features
- Add
construct_router
function by @RaoulHC in #447 - Upgrade to bevy 0.15 by @haihala in #466
- feat: add async api by @th4s in #461
Other fixes
- bevy_matchbox example header comments to include reference to cargo dependency changes when needed for integration. by @CodyTheDoer in #465
- Upgrade to webrtc-rs 0.12 by @johanhelsing in #472
New Contributors
- @CodyTheDoer made their first contribution in #465
- @caspark made their first contribution in #468
- @th4s made their first contribution in #461
- @haihala made their first contribution in #466
Full Changelog: v0.10.0...v0.11.0
v0.10.0
What's Changed
- Update
bevy_matchbox
to Bevy 0.14 by @Jondolf in #455 - Remove serde-serialize feature by @RaoulHC in #438
- Update to axum-0.7/hyper-1.2 by @RaoulHC in #436
- Fix new warnings in rust 1.77 by @johanhelsing in #443
- fix: error: direct implementation of
ToString
by @johanhelsing in #457 - Upgrade dependencies, including webrtc 0.11 by @johanhelsing in #458
- chore(deps): bump rust from 1.75-slim-bullseye to 1.79-slim-bullseye in /matchbox_server by @dependabot in #451
New Contributors
Full Changelog: v0.9.0...v0.10.0
v0.9.0
What's Changed
- Upgrade to bevy 0.13 by @johanhelsing in #424
- Upgrade to webrtc-rs 0.10 by @johanhelsing in #425
Documentation
- fix: [bevy_ggrs example] add tonemapping_luts bevy feature by @AgustinRamiroDiaz in #418
- Fix bevy_ggrs example not working on native by @johanhelsing in #423
New Contributors
- @AgustinRamiroDiaz made their first contribution in #418
Full Changelog: v0.8.1...v0.9.0
v0.8.1
v0.8.0
What's Changed
Features
- Updated to Bevy 0.12 and latest Bevy GGRS by @bushrat011899 in #366
Bug fixes
- Fix broken
matchbox_server
docker image by @johanhelsing in #293 - fix:
receive()
no longer blocks infinitely by @simbleau in #330 - Don't log null ice candidates as errors on native by @simbleau in #327
- Remove unwraps in MessageLoop by @simbleau in #283
- Fix GLIB version mismatch in ARM docker image by @KAIYOHUGO in #343
- Fix bevy matchbox signaling panic by @johanhelsing in #355
Command::apply
, not write - fixbevy_matchbox
withsignaling
feature by @RJ in #346- Add missing
RTCIceCredentialType
to theRTCIceServer
by @tedsteen in #320
Other changes
- Update to webrtc 0.9 by @tedsteen in #318
- Test
bevy_matchbox
signaling
feature in CI by @johanhelsing in #354 - Fix pink materials in bevy_ggrs example by @johanhelsing in #358
- Add examples for
bevy_matchbox
by @johanhelsing in #362 - Fix a clippy lint by @JoJoJet in #307
- Add more information to error messages by @JoJoJet in #306
New Contributors
- @JoJoJet made their first contribution in #307
- @tedsteen made their first contribution in #318
- @RJ made their first contribution in #346
- @KAIYOHUGO made their first contribution in #343
- @bushrat011899 made their first contribution in #366
Full Changelog: v0.7.0...v0.8.0
v0.7.0
What's Changed
To make this changelog useful, it only includes PRs relevant to users of the library (i.e. dependency updates, ci changes etc.)
Features
- Move task handle into bevy Resource / Component by @garryod in https://github.com
- Add signalling utils to
bevy_matchbox
by @garryod in #215 - Derive Display for PeerID by @garryod in #255
- Bevy 0.11 by @simbleau in #277
- Added connection attempt delay by @simbleau in #227
Bug fixes
- fix: failed send panic by @mikeder in #220
WebRtcConnection.update_peers()
error handling. by @gibbz00 in #223
Other changes
matchbox_server
re-written withmatchbox_signaling
by @simbleau in #225- Update webrtc-rs to 0.8 by @johanhelsing in #239
New Contributors
- @mikeder made their first contribution in #213
- @alepez made their first contribution in #222
- @gibbz00 made their first contribution in #223
Full Changelog: v0.6.1...v0.7.0
v0.6.1
What's Changed
This is a bug fix release with fixes for the following issues
GetChannelError
was accidentally private, making it impractical to handle errors fromtake_channel
/get_channel
- Build errors with
ggrs
feature on wasm - Regression: panic when ice candidates arrive after handshake completion #183
Merged PRs
- Make
GetChannelError
public by @johanhelsing in #199 - Update README.md by @simbleau in #196
- Fix panic when signal is received after handshake was completed by @tdzienniak in #204
- Add missing
ggrs/wasm-bindgen
dependency forggrs
feature by @johanhelsing in #206 - Release
matchbox_socket
v0.6.1 by @johanhelsing in #205
New Contributors
- @tdzienniak made their first contribution in #204
Full Changelog: v0.6.0...v0.6.1
v0.6.0
What's Changed
New crates
matchbox_signaling
: highlevel API for building a custom signaling servermatchbox_protocol
: Shared signaling protocol betweenmatchbox_server
,matchbox_signaling
andmatchbox_socket
bevy_matchbox
: For simplified usage with Bevy
New features in matchbox_socket
- Multiple data channels can now be added
- Support for reliable channels and custom reliability
- Builder API for creating a new socket
- Peer disconnections now reported through
update_peers
- Configurable signaling server reconnection attempts (defaults to 2)
- Signaling server keep alive interval can now be configured or disabled (only needed if the signaling server or its proxy is aggressively killing idle websocket connections)
Bug fixes
- Development builds no longer panic after ~10 minutes #72
- Socket no longer panics when connecting to the signaling server fails #93
- Fixed some panics that could happen on incorrect API usage (dropping a socket future before the socket)
Breaking/Migration
WebRtcSocket::new
renamed toWebRtcSocket::new_unreliable
WebRtcSocket::accept_new_connections
replaced withWebRtcSocket::update_peers
WebRtcSocketConfig
replaced withWebRtcSocketBuilder
ggrs-socket
feature renamed toggrs
- Peer ids are no longer strings, but their own
PeerId
type, wrapping aUuid
Merged PRs
- Support multiple reliable and unreliable data channels by @heartlabs in #64
- Server: Update log target name by @johanhelsing in #73
- Build & Publish
matchbox_server
on tagged release by @garryod in #71 - Add
WebRtcSocket::broadcast_on_channel
by @johanhelsing in #74 - Remove commented out code by @johanhelsing in #75
- Run github actions ci workflow on pull_request events by @johanhelsing in #76
- Inline format argument by @garryod in #78
- Fix inferred bound warning by @garryod in #77
- Update to rust edition 2021 by @garryod in #80
- fixed document typo by @simbleau in #86
- chore: stun server fallback options by @simbleau in #87
- Add "contributing" section to readme by @johanhelsing in #89
- Forbid unsafe rust by @johanhelsing in #92
- Replace Warp with Axum for the signalling server by @simbleau in #82
- Disconnected peers by @simbleau in #94
- a possible way of handling disconnected peers by @rozgo in #84
- Add rustfmt by @simbleau in #98
- Begin error propogation by @simbleau in #97
- Minor cleanups by @johanhelsing in #100
- cfg-if, socket logic move, remove WebRtcSocket::default by @simbleau in #101
- Upgrade to webrtc 0.7 by @johanhelsing in #109
- Refactor
signalling_loop
by exposing providers via a trait by @garryod in #79 - Documentation enhancements by @simbleau in #116
- Simple demo cleanup by @simbleau in #114
- Fixes native break on web client disconnect by @simbleau in #115
- Refactor
messaging_loop
by exposing providers via a trait by @garryod in #112 - Signalling attempts by @simbleau in #104
- Have server produce
PeerId
by @garryod in #111 - Change default to only use 2 stun servers by @johanhelsing in #121
- Unify connections and disconnections API, detect p2p disconnections by @johanhelsing in #117
- Markdownlint by @johanhelsing in #124
- Project Organization by @simbleau in #123
- added clone to WebRtcSocket meta structs by @simbleau in #125
- feat: publicize more types by @simbleau in #126
- add update_peers usage to bevy_ggrs example by @johanhelsing in #132
- matchbox_protocol by @simbleau in #127
- Pass example arguments as values in readme snippet by @garryod in #134
- Abstract message loop implementation by @garryod in #128
- expose PeerId by @simbleau in #137
- Remove
uuid
dependency by @johanhelsing in #139 - Don't require
&mut self
forWebRtcSocket::id
,players
by @johanhelsing in #140 - Remove redundant Native Peer status change handling by @garryod in #142
- Improve logging and code clarity by @johanhelsing in #141
- docs: Link to example folders, not READMEs by @johanhelsing in #149
- Fix panic on receive after socket future is dropped by @johanhelsing in #150
- Make
PeerId
aUuid
newtype by @johanhelsing in #151 - Fix native crash when connecting to wasm, async blocks by @garryod in #156
- Use builder pattern to construct
WebRtcSocket
by @garryod in #158 - Remove
UnknownPeerId
error by @johanhelsing in #159 - Update/remove deps by @johanhelsing in #161
- Provide abstraction for a channel by @garryod in #160
- Use
rust-cache
to speed up CI by @garryod in #164 - Lint
toml
withtaplo
by @garryod in #163 - Split CI into Code & Markdown Lint by @garryod in #165
- Add a Bevy plugin by @garryod in #157
- Add
signaling_keep_alive_interval
to socket builder by @johanhelsing in #166 - Minor style/logging cleanups by @johanhelsing in #167
- Check all targets in CI by @garryod in #168
- Signaling Server API by @simbleau in #135
- Include
bevy_matchbox
in a few missed places by @garryod in #172 - Rename
ggrs-socket
feature toggrs
by @johanhelsing in #176 - Make
close_socket
command extension usable by @johanhelsing in #181 - Add
get_channel
, makechannel
panicky by @johanhelsing in #177 - Add channel type helpers to socker builder by @garryod in #187
- Add
ggrs
feature tobevy_matchbox
by @johanhelsing in #186 - Make tests pass on windows by @johanhelsing in #180
- Refactor Code CI by @garryod in #184
- Update bevy_matchbox and bevy_ggrs_example to Bevy 0.10 by @simbleau in #190
- Expand bevy plugin usage options by @garryod in #188
- Docs updates ahead of 0.6 by @garryod in #169
- Add simple constructors to bevy_matchbox by @johanhelsing in #193
- docs: Remove links to internal api by @johanhelsing in #194
- Release 0.6.0 by @johanhelsing in #162
New Contributors
Full Changelog: v0.5.0...v0.6.0
v0.5.0
What's Changed
- Cross-platform (native to wasm) connections are now supported by @rozgo in #54
- The disconnections on Firefox are gone #36
- Upgrade bevy to 0.9 in demo by @hfaulds in #67
- Upgrade to webrtc-0.6 by @rozgo in #50
- Fix demo issues with latest clap by @pinkforest in #51
- Fix panic on wasm by @johanhelsing in #57
- Remove RtcIceCandidate hacks by @johanhelsing in #60
- Minor demo tweaks and upgrade dependencies by @johanhelsing in #69
New Contributors
- @rozgo made their first contribution in #50
- @pinkforest made their first contribution in #51
- @hfaulds made their first contribution in #67
Full Changelog: v0.4.0...v0.5.0
v0.4.0
What's Changed
Most notably, we added support for TURN servers and authentication, added a native implementation (still no cross-play, though, see #47 )
- Add support for native clients by @johanhelsing in #8
- Simple wasm demo by @sapir in #17
- #13: scoped rooms by @Vrixyz in #19
- update "ggrs_socket" feature and matchbox_demo to ggrs 0.9 by @gschup in #20
- Remove WebRtcNonBlockingSocket by @johanhelsing in #23
- Add KeepAlive request to prevent websockets from auto-closing by @johanhelsing in #24
- Make ICE server URLs configurable by @heartlabs in #28
- Server: Don't panic when signal receiver is unknown by @johanhelsing in #33
- Update matchbox_demo to Bevy 0.8 by @tracteurblinde in #39
- Upgrade version of webrtc dependency by @heartlabs in #40
- Fix deprecated JsValue::from_serde usage by @johanhelsing in #42
- Add ice auth support by @johanhelsing in #37
- Rustdocs for everything! by @johanhelsing in #43
New Contributors
- @Vrixyz made their first contribution in #19
- @gschup made their first contribution in #20
- @heartlabs made their first contribution in #28
- @tracteurblinde made their first contribution in #39
Full Changelog: v0.3.0...v0.4.0