- Adopt reviewed GitHub release pull requests, RubyGems Trusted Publishing, and release attestations instead of legacy certificate signing.
- Fix JSON 3 compatibility by applying
symbolize_namesonly when parsing incoming messages.Coder::JSONis now a module with fixed parsing and generation behavior; pass a different coder to customize serialization.
- If
Connection#close_writefails, the connection will now be fully closed to prevent hanging connections.
- All frame reading and writing logic has been consolidated into
Framerto improve performance.
- Fix error messages for
Frameto be more descriptive.
- Revert masking enforcement option introduced in v0.20.0 due to compatibility issues.
- Introduce option
requires_maskingtoFramerfor enforcing masking on received frames.
- Ensure ping reply payload is packed correctly.
- Default to empty string for message buffer when no data is provided.
- Add
PingMessagealongsideTextMessageandBinaryMessagefor a consistent message interface. - Remove
JSONMessage(use application-level encoding instead).
- Introduce
#close_writeand#shutdownmethods onConnectionfor more precise connection lifecycle control.
- Move
#sendlogic intoMessagefor better encapsulation. - Improve error handling when a
nilmessage is passed.
- Require
Messageclass by default.