All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
[0.1.0] - 2026-09-08
Added
- Session management over WebSocket (TLCP 2.5.0):
Lightstreamer.connect/2,subscribe/2,unsubscribe/2,close/1, andchild_spec/1for supervision trees. No global state, no application config — everything is a per-call option. - MERGE-mode subscriptions delivering updates as plain messages to a
configurable owner pid: merged current field state plus the set of fields
changed by each event, with correct decoding of the TLCP delta wire format
(unchanged / null / empty /
^nskip). Owner processes are monitored and auto-unsubscribed on death. - Connection resilience: transparent
LOOPrebinds preserving per-item state; keepalive watchdog on the server's authoritative interval plus a configurable grace; on connection loss, rebind first then full re-create with capped exponential backoff, re-issuing subscriptions with state reset so each item starts from a fresh snapshot.CONERRcode 1 (bad credentials) is never retried;reconnect: :neveropts out of recovery. - Outbound heartbeats when
:inactivity_millisis advertised. ^P/^Tdiff values are refused at session creation (LS_supported_diffs=) and kill the affected subscription with an explicit error if ever received — never a silently wrong value.- Pure, fully unit-tested protocol codec (
Lightstreamer.Protocol,.Protocol.Frame,.Protocol.Update) usable without any process — the test tables transcribe the TLCP 2.5.0 specification's example stream verbatim. - Swappable transport behaviour (
Lightstreamer.Transport) with a Mint/Mint.WebSocket production implementation; runtime dependencies are exactlymint,mint_web_socketandcastore.