Releases: meefik/peerix
Releases · meefik/peerix
Release list
v0.6.0
Added
local:joinandlocal:leaveevents emitted whenjoin()/leave()methods are called.local:shareandlocal:unshareevents emitted whenshare()/unshare()methods are called.local:openandlocal:closeevents emitted whenopen()/close()methods are called.- Streams with all tracks ended are automatically unshared (unless
managedistrue).
Changed
- Breaking:
namespaceoption in signaling drivers is now astringinstead ofstring[]. - Breaking:
share()/unshare()no longer return aMediaStream. - Breaking:
managednow means the stream is externally managed and will not be stopped or unshared automatically.
v0.5.0
Added
- Add support for
ReadableStreamdata in thesendmethod. - Add unit tests for utilities and some drivers.
- Add optional metadata (
infofield) when sending messages. - Add abort signal handling to stop message transmission early.
- Add
toJSONmethod to serialize peer information for local and remote peers. - Add
AGENTS.mdfile with rules for AI agents interacting with this project.
Changed
- Update the
sendmethod API to return an async iterator that can be used to track data transmission progress or aPromisethat resolves when the data is delivered. - Chunk and buffer large messages during transmission via data channels, supporting larger payloads out of the box.
- Breaking: Change incoming data to be either a
ReadableStreamor aPromise. Read the stream to track receiving progress; use the Promise to get a specific data type when the full message is received. - Breaking: Send data through only one data channel instead of multiple. If the
labelis omitted, it uses thedefaultlabel.
v0.4.0
Added
- Add
MqttDriverfor signaling using MQTT over WebSockets. - Add
CentrifugeDriverfor signaling using a Centrifuge-based backend. - Add
ackTimeoutoption toSocketIoDriverto specify the timeout for acknowledgments from the server. - Add
iceCandidateDebounceoption toPeerto specify the debounce time for sending ICE candidates via signaling. - Add example code snippets showing how to run some backends locally for testing using Docker.
Changed
- Rename
dispatchmethod topublishin theDriverinterface for better clarity and consistency with common messaging terminology. - Rename
publishandunpublishmethods in thePeerandRemotePeerclasses toshareandunsharerespectively to avoid confusion with thepublishmethod in theDriverinterface. - The
SseDriveruses a Mercure-compatible endpoint by default (/.well-known/mercure). - The
Driverclass sets theactiveaccessor tofalseby default. - The
roomproperty is escaped when namespace hashing is disabled. - Most drivers use peer or room identifiers as event names instead of concatenating them, which simplifies implementation and shortens event names.
- Some drivers use empty prefixes by default, so if you want to use a prefix, you need to specify one in the options.
- Some drivers with a
prefixproperty add an additional string to the beginning of the event name without any separators, so if you want to separate the prefix from the event name, you need to include a separator in the prefix. - Use a Protobuf-like format for signaling messages instead of a custom binary format.
v0.3.0
Added
- Add
SseDriverfor signaling using Server-Sent Events (SSE). - Add debouncing for ICE candidates sent via signaling to reduce the number of messages.
Changed
- Use derived encryption keys for signaling instead of manually specified secret keys.
- Enable signaling encryption by default.
- Use the compressed public key as the peer ID.
- The minimum build target is ES2020 to allow the use of modern JavaScript features such as BigInt.
- Rename 'signalingHashing' to 'namespaceHashing' for clarity.
- The license has been changed from GPL-3.0 to Apache-2.0 to allow more permissive use of the library in both open-source and commercial projects.
v0.2.0
Added
- Add
SocketIoDriverfor signaling using Socket.IO. - Add
SupabaseDriverfor signaling using Supabase Realtime. - Add a
destroymethod to some drivers.
Changed
- Update the NATS driver to use
nats-coreinstead ofnats.ws. - Refactor error codes for clarity.
- Refactor the driver interface to use plain arrays instead of typed arrays for improved serialization.
- Enable namespace hashing by default to improve privacy and avoid issues with unsupported characters in namespaces.
v0.1.0
Added
- Initial release of the project.
- TypeScript support.
- Core functionality: peer connections, signaling, media streams, and data channels.
- Basic documentation and API reference.
- Automated tests for core features.
- Logging for better debugging.
- CI/CD pipeline for automated testing and deployment.
- Example code snippets and usage examples.