All notable changes to this project are documented in this file. The format follows Keep a Changelog and the project uses Semantic Versioning.
[0.1.0] - 2026-10-26
Added
AisStream.start_link/1andchild_spec/1: WebSocket client for the AISStream API, with permessage-deflate compression.- Each decoded message is sent to the
:toprocess as{:aisstream, message}; while a registered:toname has no process (e.g. during a restart), messages are dropped instead of crashing the client. - Options
:api_key,:bounding_boxes,:to(required),:filter_message_types,:name,:ping_interval,:max_queue_len,:url; unknown options and invalid:ping_interval,:max_queue_lenor:urlvalues raiseArgumentError. - Automatic reconnection with a 1-30 s backoff; the subscription is re-sent after every reconnection.
- Keepalive: pings every
:ping_intervalms and reconnects when the server stops answering, including when it never answers the WebSocket handshake. - The backoff keeps growing when AISStream closes the connection without data or after an error message.
- When
:tois a pid, the client stops when that process exits. :api_keyalso accepts a zero-arity function, which keeps the key out of supervisor reports.:max_queue_lenoption: drops messages while the local:toprocess has that many queued (off by default).
Security
- The API key is redacted from crash reports and
:sys.get_status/1(format_status/1).