# Changelog
## 0.2.3
- Embedding (h3): `accept/4` now works when called from a process other than the QUIC connection process. The per-connection stream router is keyed by the QUIC connection pid, shared by the `h3_settings/1` connection_handler and by `accept/4` (via `quic_h3:get_quic_conn/1`), instead of the caller's process dictionary. Incoming bidi/uni streams and datagrams now reach the session even when the embedder dispatches each request to its own worker (e.g. Livery). The router's registry row and process are reaped when its QUIC connection ends.
- CT: `embedded_accept_round_trip_test` (h3) drives a raw `quic_h3` server with `h3_settings/0` merged in, accepts from a worker process, and asserts that a bidi stream (with FIN) and a datagram both round-trip through the echo handler.
## 0.2.2
- Docs: README gains a Sponsors section (Enki Multimedia logo vendored under `docs/images/`).
- Docs: fix invalid `webtransport:open_stream(Session, bidi | uni)` snippet — type-union pipe was in expression position; now `bidi %% or uni`.
- CT: cover `listeners/0`, `listener_info/1`, and `start_listener/2` cert/key error paths (`webtransport.erl` line coverage 51% → 54%).
## 0.2.1
- `start_listener/2` (h3): switch the listener loop from `spawn_link/3` to `spawn/3` so `stop_listener/1` no longer propagates a `shutdown` exit to the caller. The interactive shell (and any non-trapping caller) now stays clean across a full lifecycle.
- `webtransport_session:init/1`: distinguish a handler module that fails to load (`{handler_not_loaded, M, Reason}`) from a loaded module missing `init/2` or `init/3`.
- README: quick-start now launches the shell with `ERL_FLAGS="-pa examples" rebar3 shell --apps webtransport` so handler modules outside `src/` are reachable.
- Regression test: `stop_listener_does_not_kill_caller_test` (h3 + h2 groups).
Known issue (tracked upstream in `quic`): a graceful `close_session/1` still emits a `quic_h3_connection` `quic_closed` CRASH REPORT because the dep treats any QUIC-conn `'DOWN'` as abnormal. Will resolve when `quic` is bumped.
## 0.2.0
- Switch `h2` and `quic` deps to hex packages: `h2 0.5.0`, `quic 1.3.0`.
- Add `public_key` to the application list.
- Clean dialyzer run: dropped dead `{error, _}` clauses around `h2_capsule:decode/1` and `h2_varint:decode/1`, removed unreachable `Router =:= undefined` branch, dropped unsupported `h3_datagram_enabled` from `quic_h3:start_server/3` opts, switched listener loop to `spawn_link/3` for static reachability.
- Configure `xref_checks` (skip `exports_not_used` for the public API) and `dialyzer` (`plt_extra_apps: [public_key, ssl, crypto, inets]`).
- Add GitHub Actions CI: OTP 26/27 matrix runs compile, xref, eunit, dialyzer; separate job builds ex_doc.
## 0.1.0
- Initial release.