Repository navigation
moq-ffi v0.3.0
·
2520 commits
to main
since this release
What's Changed
- moq-net: runtime Timescale/Timestamp; container::Frame keeps source scale by @kixelated in #1473
- js/net: time out SUBSCRIBE_OK to surface browser stream-limit hangs by @kixelated in #1525
- moq-mux: replace anyhow with thiserror by @kixelated in #1495
- Split OriginConsumer into cheap read handle and announcement cursor by @kixelated in #1434
- moq-mux: catalog filter/target and Annex-B exporters by @kixelated in #1487
- moq-net: linger upstream subscriptions across consumer churn (moq-lite) by @kixelated in #1514
- moq-native: fix broadcast linger test broken by AnnounceConsumer split by @kixelated in #1534
- lite-05: negotiate per-frame compression via SUBSCRIBE_OK (Rust + JS) by @kixelated in #1531
- nix: format moq-relay module with flake-pinned nixfmt 1.2.0 by @kixelated in #1543
- moq-rtc: WebRTC (WHIP/WHEP) gateway, both ingest and egress by @kixelated in #1528
- moq-net: auto-create Origin on connect/accept, expose via Session by @kixelated in #1536
- Ergonomic announced streams in Swift and Kotlin wrappers by @kixelated in #1554
- moq-net + moq-relay: adopt @moq/qmux 0.1.1 cross-draft negotiation by @kixelated in #1527
- moq-rs: close FFI parity gaps and smooth subscribe ergonomics by @kixelated in #1559
- REANNOUNCE via duplicate ANNOUNCE; announced() returns (path, Announced) by @kixelated in #1530
- Add duration-based skipping to the container jitter buffer by @kixelated in #1532
- swift: split MoqFFI bindings from the Moq wrapper + Swift-native redesign by @kixelated in #1561
- moq-ffi (Kotlin): split bindings from an independent ergonomic wrapper by @kixelated in #1562
- go: split moq-go-ffi bindings from the ergonomic moq-go wrapper, add the wrapper by @kixelated in #1563
- moq-net: make subscribe_track async, blocking on SUBSCRIBE_OK by @kixelated in #1540
- moq-lite-05: add AnnounceOk message (responder origin + initial active count) by @kixelated in #1573
- moq-net: split TrackConsumer into a track handle + TrackSubscriber by @kixelated in #1576
- Add per-track timescale and frame timestamps to moq-lite by @kixelated in #1439
- moq-native,relay: don't advertise the illegal qmux-00.moqt-18 pair by @kixelated in #1579
- moq-net: add per-track cache age (SUBSCRIBE_OK), reconcile draft field order, port timescale to js/net by @kixelated in #1585
- moq-lite-05: add Frame Start to FETCH by @kixelated in #1595
- moq-net: accept
impl Into<Option<Subscription>>for subscribe, drop subscribe_default by @kixelated in #1606 - js: make @moq/watch component signals explicit inputs vs outputs by @kixelated in #1592
- watch: stop audio/video downloads when muted, paused, or off-screen by @kixelated in #1588
- moq-net: spawn a task per lite control stream by @kixelated in #1621
- refactor(hang): drop unused non-media catalog fields on the Rust side by @kixelated in #1629
- moq-net: reshape Track into TrackInfo + an async TrackConsumer handle by @kixelated in #1631
- moq-lite-05: implement FETCH for past groups via TrackConsumer::fetch by @kixelated in #1601
- moq-net: serve one subscription and N fetches concurrently per track by @kixelated in #1634
- moq-net: make Group/Frame producers track-only constructible by @kixelated in #1636
- moq-net: RAII broadcast announcements via OriginPublish; remove broadcast abort/close by @kixelated in #1640
- feat(moq-json): JSON Merge Patch snapshot/delta helper; route hang catalog through it by @kixelated in #1637
- moq-lite-05: add TRACK stream, drop SUBSCRIBE_OK/FETCH_OK by @kixelated in #1648
- moq-wasm: browser/WASM bindings for moq-net (@moq/wasm) by @kixelated in #1673
- moq-lite-05: negotiate by default; carry per-frame timestamp + duration on the wire by @kixelated in #1681
- Add moq-hls: HLS / LL-HLS gateway for MoQ by @kixelated in #1626
- feat(net): callable Time unit constructors + brand the Opus frameDuration knob by @kixelated in #1703
- feat(moq-video): native per-platform H.264 codecs + zero-copy capture, drop ffmpeg by @kixelated in #1691
- fix(libmoq): update tests for moq_origin_publish handle return by @kixelated in #1710
- moq-net: tighten public API surface (coding module + Track*Pending aliases) by @kixelated in #1707
- fix(moq-ffi): unblock deadlocking dynamic_track_request tests by @kixelated in #1712
- feat(moq-video): native V4L2 capture, NVENC via dlopen, drop VAAPI + nokhwa(Linux) by @kixelated in #1704
- feat(moq-video): native Windows Media Foundation capture, drop nokhwa by @kixelated in #1716
- feat(js/net): insert tracks into a broadcast, with real fan-out by @kixelated in #1714
- feat(moq-video): reintroduce VAAPI via discord/cros-codecs + NV12 surface upload by @kixelated in #1720
- moq-net: revert origin builder/Session toward main's shape by @kixelated in #1713
- docs(moq-cli): fix stale ffmpeg claim on capture feature by @kixelated in #1719
- feat(moq-video): Windows D3D11 zero-copy GPU capture + hardware H.264 encoder by @kixelated in #1718
- test(moq-video): cover the Windows hardware encoder by @kixelated in #1740
- Merge main into dev by @kixelated in #1750
- feat(moq-srt): SRT contribution ingest gateway by @kixelated in #1747
- feat(moq-net)!: remove per-frame duration from Frame and the lite-05 wire by @kixelated in #1753
- feat(moq-video): replace cros-codecs git dep with the published moq-vaapi crate by @kixelated in #1757
- feat(moq-ffi)!: defer dynamic track accept so media tracks declare a timescale by @kixelated in #1761
- feat(moq-net): add OriginDynamic for unannounced fallback broadcasts by @kixelated in #1772
- refactor(moq-rtc): feature-gate the binary so the gateway is embeddable by @kixelated in #1776
- feat(moq-net): request_broadcast returns Unroutable when no route exists by @kixelated in #1779
- feat(go): harden ergonomic wrapper and unbreak
just go checkby @kixelated in #1784 - moq-mux: decouple importers from the catalog, split byte-parsing into per-codec splitters, and make importers pure frame publishers by @kixelated in #1749
- feat(moq-net): encode Hop ID as fixed-width 64-bit on lite-05 by @kixelated in #1788
- Merge main into dev by @kixelated in #1800
- fix(moq-video): request camera access before capture on macOS by @kixelated in #1803
- feat(moq-mux): synthesize fMP4/CMAF init for AV1 video by @kixelated in #1804
- Merge main into dev by @kixelated in #1814
- chore: remove deprecated aliases and redundant catalog fields by @kixelated in #1794
- feat(moq-rtc): public whip::accept for embedders to own routing+auth by @kixelated in #1823
- feat(moq-rtmp): RTMP / enhanced-RTMP ingest gateway + E-RTMP codecs by @kixelated in #1824
- feat(moq-rtc): H.265 + AV1 egress, unify NALU reshaping via moq-mux by @kixelated in #1827
- feat(moq-rtmp): RTMP play mode (egress) by @kixelated in #1829
- feat(moq-srt): serve broadcasts back out over SRT (m=request egress) by @kixelated in #1828
- feat(moq-video): H.265 (VideoToolbox) encode by @kixelated in #1802
- feat(moq-video,libmoq): native H.264 decode (drop ffmpeg dependency) by @kixelated in #1796
- refactor(moq-video, moq-audio): make device capture async (fixes Ctrl+C shutdown hang) by @kixelated in #1807
- feat(moq-video): NVENC H.265 encode + refresh README by @kixelated in #1840
- feat(moq-video)!: make hardware encoders always-on (openh264 stays the software fallback) by @kixelated in #1819
- moq-lite-05: sync wire with drafts HEAD (SETUP stream, broadcast epoch, drop cache hint, rename ANNOUNCE) by @kixelated in #1847
- feat(moq-mux,moq-srt): PTS-exposing TS Export API + PCR-paced SRT egress by @kixelated in #1845
- feat(moq-srt,moq-rtc): bring-your-own-auth Server/Request + whep::accept by @kixelated in #1851
- Merge main into dev by @kixelated in #1848
- feat(moq-video): H.264 hardware decode on Windows via Media Foundation by @kixelated in #1853
- feat(moq-video): Windows screen capture via DXGI Desktop Duplication by @kixelated in #1855
- feat(moq-video): H.265 decode + Media Foundation HEVC backend by @kixelated in #1854
- refactor(moq-relay): composable web router (routes() + serve()) by @kixelated in #1856
- feat(moq-video): opt-out nvenc/vaapi features (default-on) + correct libva docs by @kixelated in #1860
- feat(moq-video): H.265 hardware decode on macOS (VideoToolbox) by @kixelated in #1859
- feat(moq-hls): pause/resume export with discontinuity markers by @kixelated in #1862
- feat(moq-msf): draft-01 support behind a version-agnostic snapshot API by @kixelated in #1834
- feat(moq-rtc): single shared-UDP-port mux for WHIP/WHEP servers by @kixelated in #1864
- fix(moq-rtmp): reap half-open connections with TCP keepalive by @kixelated in #1868
- review(moq-srt): cleanups + production-readiness review by @kixelated in #1866
- fix(moq-srt): re-anchor SRT egress pacing to the live edge (fixes tune-in stall) by @kixelated in #1865
- moq-rtc production hardening: A/V sync, DELETE teardown, dual-stack ICE, VP9, NACK by @kixelated in #1869
- fix(moq-net,moq-mux): don't block forever on an evicted/missing group by @kixelated in #1863
- Merge main into dev by @kixelated in #1877
- fix(moq-net): enforce MAX_FRAME_SIZE at the frame allocation chokepoint by @kixelated in #1881
- fix(moq-mux): begin TS export at the first video keyframe by @kixelated in #1885
- refactor(moq-net): make request_broadcast/subscribe/fetch_group infallible by @kixelated in #1890
- feat(moq-native): default QUIC backend to noq instead of quinn by @kixelated in #1891
- refactor(moq-net): broadcasts own tracks own groups own frames via inherited Arc by @kixelated in #1900
- feat(moq-net): mandatory timestamps for moq-lite-05 by @kixelated in #1896
- feat(moq-net): generalize stats Tier to an arbitrary label by @kixelated in #1906
- feat(moq-net): two-phase accept exposing the SETUP request path (lite-05 + moq-transport 14-18) by @kixelated in #1910
- revert(moq-net): encode Hop ID as a 62-bit varint again, not fixed-width 64-bit by @kixelated in #1911
- [codex] remove moq-lite broadcast epoch by @kixelated in #1920
- fix(smoke): update interop clients to the current dev APIs by @kixelated in #1952
- Merge main into dev by @kixelated in #1950
- refactor(moq-net): drop per-frame compression, restore Publisher Max Latency to TRACK_INFO (lite-05) by @kixelated in #1962
- docs(moq-native): fix rustdoc links to quinn-gated items under default features by @kixelated in #1961
- fix(moq-video): make NVENC encode correct on hardware (forced IDR, in-band param sets, pitched input) by @kixelated in #1997
- Merge main into dev by @kixelated in #2013
- fix(moq-video, moq-audio): non-contiguous VT output, blocking mic prompt, DXVA NV12 offset by @kixelated in #2034
- [codex] fix moq-boy playback support probes by @kixelated in #2027
- [codex] fix js group cache accounting by @kixelated in #2030
- [codex] fix moq-net timestamp fallback on wasm by @kixelated in #2029
- [codex] fix lite wire edge cases by @kixelated in #2033
- [codex] fix dropped group fetch requests by @kixelated in #2028
- refactor(moq-video): run the capture encoder on a dedicated thread by @kixelated in #2038
- feat(bindings)!: announce rename, wrapper/doc/backpressure fixes, moq-ffi 0.3.0 by @kixelated in #2037
- [codex] fix IETF object property KVP encoding by @kixelated in #2031
- [codex] fix subscription preference merging by @kixelated in #2026
- [codex] Align hang display aspect fields with WebCodecs by @kixelated in #2023
- [codex] fix cargo deny config by @kixelated in #2041
- refactor(moq-video): vendor NVENC fork in-tree as moq-nvenc by @kixelated in #2042
- [codex] fix Swift and Kotlin packaging checks by @kixelated in #2045
- [codex] fix JS catalog demo regressions by @kixelated in #2056
- [codex] fix moq-rtmp server hardening by @kixelated in #2059
- [codex] fix python connect TLS pinning by @kixelated in #2061
- [codex] fix dev cli doc cleanups by @kixelated in #2053
- [codex] fix MSF catalog root semantics by @kixelated in #2054
- [codex] fix lite05 moq-net edge cases by @kixelated in #2058
- [codex] harden moq mux edge cases by @kixelated in #2057
- fix(gateways): reported findings across moq-gst/srt/rtc/hls (rebuilt on dev) by @kixelated in #2036
- fix(moq-nvenc): repair vendored doc-tests after crate rename by @kixelated in #2071
- refactor(moq-net): split flat type names into role modules by @kixelated in #2070
- [codex] Add zero-copy frame bytes by @kixelated in #1921
- feat(moq-mux): gate initial catalog publish until reserved tracks resolve by @kixelated in #2072
- feat(moq-net): lite-05 QUIC datagram delivery by @kixelated in #2039
- feat(signals): add Once (awaitable + observable), use it for Group.closed by @kixelated in #2080
- [codex] Strip announced prefixes in JS by @kixelated in #2088
- [codex] Mirror @moq/net role modules by @kixelated in #2091
- feat(moq-net,js/net): finalize moq-lite-05 and fix FETCH framing by @kixelated in #2113
- refactor(moq-net)!: frames as plain data + batched frame reads by @kixelated in #2116
- feat(moq-net): require broadcast close() + propagate real errors on abrupt teardown (#2087) by @kixelated in #2108
- refactor(js/net)!: PascalCase the role-module namespaces by @kixelated in #2120
- feat: relative broadcast paths for cross-broadcast catalog renditions (incl. WHEP egress) by @kixelated in #1371
- refactor(moq-net): close request_broadcast dedup gap like request_track by @kixelated in #2122
- auto-detect catalog bitrate (metrics owned by the generic Rendition) by @kixelated in #2124
- [codex] implement JS lite FETCH by @kixelated in #2032
- refactor(moq-net)!: drop vestigial serde + delete the legacy
serdefeature by @kixelated in #2127 - feat(moq-net): global LRU cache pool for group memory by @kixelated in #2110
- feat(js/net): dedupe conn.consume() per path so repeat subscribes share one broadcast by @kixelated in #2123
- feat(moq-mux,moq-ffi): catalog init from hints and configs by @kixelated in #2102
- feat: moq-transcode, just-in-time transcoding for hang broadcasts (NVENC-capable) by @kixelated in #2140
- feat(moq-video): NVDEC hardware decode, zero-copy NVDEC -> NVENC transcode by @kixelated in #2145
- fix(moq-video): make decode Frame/Consumer Send on macOS by @kixelated in #2162
- feat(moq-hls): fetch-on-demand HLS origin driven by the timeline track by @kixelated in #2141
- refactor: carry moq-video decode timestamps as moq_net::Timestamp by @kixelated in #2146
- feat(moq-ffi): expose group fetch API by @Qizot in #2142
- fix(moq-net): reclaim closed dynamic-cache entries with amortized GC by @kixelated in #2138
- go: catch up wrapper API by @kixelated in #2168
- Add moq-ffi track info and update by @kixelated in #2177
- moq-video: add NVDEC AV1 decode support by @kixelated in #2178
- Update libmoq raw track C ABI by @kixelated in #2171
- Add origin options and dynamic FFI by @kixelated in #2173
- js/net: model subscription priority as an options object by @kixelated in #2167
- Expose track datagrams through moq-ffi by @kixelated in #2175
- feat(moq-net,js/net): moq-lite-06-wip announce ids (typed START/END/RESTART, opt-in) by @kixelated in #2160
- Preserve raw frame timestamps by @kixelated in #2174
- fix(js): don't latch the connection off after a Safari pagehide by @fperex in #2185
- fix(publish,demo): align media constraints by @fperex in #2181
- feat(net)!: expose the negotiated transport on Established by @fperex in #2192
- moq-net + js/net: pre-merge API hardening for moq-lite-05 by @kixelated in #2170
- fix(net): support WebTransport datagram API variants by @kixelated in #2198
- feat(moq-transcode): decode once per source, GPU resize fanout, and a moq transcode verb by @kixelated in #2158
- auth: forward the connection transport to the --auth-api by @kixelated in #2132
- fix(net,watch): recover the viewer from a same-name republish by @kixelated in #2199
- fix(moq-video): mark the macOS Surface Sync so moq-transcode compiles by @kixelated in #2225
- go: pass timestamps to raw frame writes by @kixelated in #2230
- refactor(net): remove implicit frame timestamp helpers by @kixelated in #2232
- fix(net): align track ordering defaults by @kixelated in #2235
- feat(swift,ffi)!: ergonomic Swift JSON wrappers; make snapshot mode explicit by @kixelated in #2236
- feat(moq-net): let finish_at declare a future exclusive end group (#2219) by @kixelated in #2234
- feat(moq-video): PipeWire screen capture on Linux by @kixelated in #2238
- refactor(watch)!: shorten signal input and output groups by @kixelated in #2242
- chore: refresh cargo-deny advisories by @kixelated in #2244
- refactor(moq-native): type request transports by @kixelated in #2243
- feat(moq-net): advertise session Role in the moq-lite-05 SETUP by @kixelated in #2201
- feat(publish): prefer the codecs Safari actually hardware encodes by @fperex in #2211
- feat(publish): measure the upload bitrate from encoder Stats by @kixelated in #2246
- refactor(publish)!: composable Broadcast + per-rendition encoders by @kixelated in #2257
- fix(publish): release per-subscription serve scopes instead of leaking them by @kixelated in #2260
- fix(moq-native): default QUIC backend to quinn by @kixelated in #2285
- refactor(watch)!: remove the MSE backend and inline the WebCodecs pipeline by @kixelated in #2288
- feat(bindings): align portable API parity by @kixelated in #2287
- feat(capture): macOS window/app/system-audio sources and device enumeration by @kixelated in #2293
- feat(moq-video)!: adapt the encoder bitrate to the congestion-control estimate by @kixelated in #2303
- chore: let release-plz own the moq-ffi version; drop AI marker from moq-nvenc by @kixelated in #2305
- refactor(kio)!: delete Consumer write access, add role-less Shared for reverse queues by @kixelated in #2074
- refactor(moq-net)!: remove Announced::Restart; a replacement is an unannounce/announce pair by @kixelated in #2307
- fix(bindings)!: honor declared track ends, unify abort error codes, and dedupe libmoq's native link list by @kixelated in #2306
- refactor(net)!: caller-driven sessions via a (Session, Driver) pair by @kixelated in #2302
- feat(moq-net)!: unify the latency budget as latency_max by @kixelated in #2176
- feat(moq-net): coalesce concurrent group fetches behind a shared Requests queue by @kixelated in #2328
- fix(signals)!: narrow Setter.set, brand Computed/Once, drop get/next aliases by @kixelated in #2332
- fix(token)!: align the Rust/JS token contract on sign/verify/authorize by @kixelated in #2329
- fix(net)!: align js/net and the moq-lite draft on the exclusive SUBSCRIBE_END by @kixelated in #2333
- docs: align media docs and priorities by @kixelated in #2336
- refactor(js/net)!: close three js/net gaps vs rs/moq-net (frame payload naming, SETUP role, dead export) by @kixelated in #2337
- refactor(js)!: finish the in/out component migration and converge closed/signal shapes by @kixelated in #2335
- refactor(moq-net)!: fix Request::accept's lying doc + panic path and Session::closed's fake Result by @kixelated in #2334
- refactor(hang)!: non_exhaustive catalog sections, shared container::track_info, hang draft catch-up by @kixelated in #2341
- refactor(moq-msf)!: rename Catalog::to_string to to_json by @kixelated in #2346
- refactor(moq-hls)!: replace the Authorizer callback with router middleware by @kixelated in #2340
- refactor(audio)!: align the moq-audio capture/encode surface with moq-video by @kixelated in #2350
- fix(bindings)!: converge py/swift/kt/go on one wrapper contract by @kixelated in #2345
- refactor(moq-net)!: remove Subscriber::get_group; make the sync peek a test hook by @kixelated in #2339
- refactor(moq-net)!: clamp the subscription latency budget once, in the aggregate by @kixelated in #2349
- refactor(moq-native)!: pre-bump polish (docs, tls handle, setters, exports) by @kixelated in #2359
- refactor(moq-net)!: expose a real stats module and make Role::Both unrepresentable by @kixelated in #2348
- fix(test): update js-native smoke client to the renamed frame payload field by @kixelated in #2363
- fix(net): log a non-empty error reason on Safari WebTransport failures by @kixelated in #2364
- refactor(kio)!: rename Future to Pollable, return Closed from the async API by @kixelated in #2343
- fix(libmoq)!: align the C ABI naming on announce/_finish and drop _ordered by @kixelated in #2344
- refactor(moq-net)!: model Timestamp as an instant; drop panicking arithmetic operators by @kixelated in #2366
- refactor(moq-net)!: rename Error::CacheFull to Lagged; document the App/Remote asymmetry by @kixelated in #2367
- fix(moq-net): exclude dropped subscribers from the aggregate (#2351) by @kixelated in #2370
- fix(publish): publish video files on Safari, warn that audio is dropped by @kixelated in #2369
- fix(watch): render audio at the decoder's real sample rate by @kixelated in #2368
- fix(watch): resume the AudioContext from a real user gesture (#2357) by @kixelated in #2372
- fix(js/net): bump @moq/qmux to 0.3.0 to fix a post-close enqueue crash by @fperex in #2361
- fix(bindings)!: unify moq-ffi shapes before the bump (#2315) by @kixelated in #2373
- fix(net): tear down a shared upstream once its last subscriber leaves by @kixelated in #2371
- refactor(net)!: drop moq-net's direct tokio dependency by @kixelated in #2377
- feat(net)!: extract stats publishing into moq-stats with compressed tracks by @kixelated in #2380
- net: migrate subscriptions transparently across connections by @kixelated in #2241
- feat(moq-hls): Producer/Consumer cursors for recording a broadcast by @kixelated in #2389
- fix(moq-hls): release retired renditions instead of force-closing them by @kixelated in #2394
- fix(obs): port the source to moq_origin_request by @kixelated in #2347
- fix(publish): align audio inputs to codec frames by @kixelated in #2397
- refactor(net)!: route everything through create_broadcast, gate announce on Route.live by @kixelated in #2396
- fix(signals): recognize abort-scoped effects by @kixelated in #2402
- fix(demo): report live media download stats by @kixelated in #2403
- build(deps): bump the bun group with 4 updates by @dependabot[bot] in #2406
- build(deps-dev): bump ruff from 0.15.20 to 0.15.21 in the uv group by @dependabot[bot] in #2407
- build(deps): bump the github-actions group with 2 updates by @dependabot[bot] in #2408
- refactor(stats)!: remove internal tier defaults by @kixelated in #2411
- build(deps): bump the cargo group with 2 updates by @dependabot[bot] in #2409
- feat(net)!: accept an empty PATH and default it to "" across protocols by @kixelated in #2414
- fix(publish): snap the capture rate to one the codec supports by @kixelated in #2415
- fix(js/net): disable WebTransport on Safari by @kixelated in #2417
- fix(net): lower WebTransport log level by @kixelated in #2418
- feat(net): unannounce as soon as the last route detaches by @kixelated in #2419
- feat(token): scope signing keys to publish/subscribe paths by @kixelated in #2416
- fix(nix): keep moq-cli's cross-crate test fixture in the build source by @kixelated in #2422
- test: compile doc examples across the workspace by @kixelated in #2421
- refactor(mux)!: unseal catalog renditions and make timelines explicit/shareable by @kixelated in #2420
- refactor!: pre-bump API polish across the release batch by @kixelated in #2423
- refactor(mux): extract shared video-import catalog helper by @kixelated in #2425
- feat(net): route by cumulative cost on lite-06 announcements by @kixelated in #2424
- fix(moq-mux): emit per-frame fragments without waiting for a successor frame by @wrangelvid in #2426
- refactor(stats)!: collect traffic counters in the model layer by @kixelated in #2427
- fix(mux): emit timelines from the fMP4 CMAF passthrough importer by @kixelated in #2428
- test(moq-net): cover the announce loop's demand/linger state machine by @kixelated in #2429
- feat(stats): count datagrams in the model layer by @kixelated in #2430
- fix(net): bump @moq/qmux to 0.3.1 for the WebSocket fallback crash by @kixelated in #2437
- feat(moq-native): expose a congestion control knob for the quinn backend by @wrangelvid in #2432
- fix(js/net): reconnect correctly after a peer closes the session by @kixelated in #2442
- refactor(js/net)!: consolidate the connection estimates into one stats signal by @kixelated in #2441
- refactor(mux): carry the TS service layer as opaque SI sections by @kixelated in #2440
- refactor(js/net)!: split the pulled transport stats from the pushed PROBE ones by @kixelated in #2445
- feat(moq-hls)!: expose a credential-aware serve surface for embedders by @kixelated in #2438
- fix!: correct catalog, timeline, token, and teardown contracts found in API review by @kixelated in #2439
- fix(js/signals): scope a stale spawn task to the run it belongs to by @kixelated in #2446
- test(mux): cover the per-PID SI repetition interval by @kixelated in #2447
- feat(js/net): add AbortSignal support to connect() by @wrangelvid in #2435
- fix(moq-token): default missing key_ops to sign and verify by @wrangelvid in #2436
- docs(js/signals): note that run() defers a stale child to the next teardown by @kixelated in #2450
- chore: release by @moq-bot[bot] in #2449
New Contributors
- @fperex made their first contribution in #2185
- @wrangelvid made their first contribution in #2426
Full Changelog: moq-ffi-v0.2.33...moq-ffi-v0.3.0