Skip to content

icey 2.4.0

Choose a tag to compare

@github-actions github-actions released this 29 Mar 23:15
· 97 commits to main since this release

Added

  • Repo-local package manager layouts under packaging/ with make package-conan and make package-vcpkg entry points for local consumer validation
  • Homebrew tap formulae, Debian / PPA source-package scaffolding, and release hooks for those package surfaces
  • Browser smoke coverage for the src/webrtc/apps/media-server/web/ frontend and media-server interop path
  • Reportable microbenchmark runner plus focused parse/probe benches for packet stream, HTTP, WebSocket, and STUN hot paths
  • Focused webrtcbench and symplebench targets covering:
    • WebRTC sender dispatch
    • WebRTC receiver dispatch
    • Symple room fanout
    • Symple client parse/dispatch
  • API overview quality checks in the docs toolchain to catch shallow or missing generated reference summaries
  • Internal Symple protocol/state helpers for welcome parsing, sanitized presence emission, room reconciliation, and roster presence application, backed by focused unit coverage
  • webrtc_support as a dedicated support library for Symple/WebSocket signallers, including the server-side virtual-peer adapter now used by samples and media-server

Changed

  • WebRTC browser/media-server behavior after 2.3.0: codec negotiation is tighter, browser offer handling is stricter, and PeerSession / track flow is more defensive under real browser traffic
  • Public package, docs, and sample surface now use lowercase icey consistently, with no retained Icey CMake/package-manager naming
  • Public lifecycle verbs are now standardized on start() / stop() across HTTP client/server, Symple client/server, and TURN client surfaces; the previous spellings were removed instead of being kept as compatibility aliases
  • WebRTC internals are now cut along explicit seams instead of monolithic translation units:
    • PeerSession state/signalling/RTC work is split across peersession.cpp, peersessionsignalling.cpp, and peersessionrtc.cpp
    • remote answer scoping lives in remotemediaplan.cpp
    • codec support is centralized in codecregistry.cpp
    • media-server runtime code is split under apps/media-server/internal/
  • Public Symple and TURN configuration handoff now favors value-style option snapshots instead of live mutable option bags
  • Public option mutation is now explicit on package-manager surfaces via mutableOptions(), while the public AV encoder interfaces expose const option views
  • PeerSession::Config now exposes media settings under config.media, and answer-session media options are derived explicitly from the remote offer's mids, directions, and payload types instead of relying on looser implicit defaults
  • Symple client/server internals are now organized under src/symple/src/client/ and src/symple/src/server/, with shared wire helpers in src/symple/src/protocol.*
  • API reference coverage has been deepened across the core modules, WebRTC, and the pacm/pluga surfaces, with reorganized Sourcey guides and workflows
  • icey docs now consume published moxygen / sourcey npm releases instead of git-pinned or exact-pinned toolchain versions
  • Packaging assets are centralized under packaging/ instead of spreading Conan and vcpkg files across the repo root
  • Installed icey.pc metadata now uses the current package-manager-facing description instead of the old networking-only tagline
  • Browser support claims are now explicit:
    • Chromium and Firefox are validated by the committed Playwright smoke
    • Playwright WebKit on Linux is treated as non-authoritative for Safari/WebRTC publish-path claims

Fixed

  • Exported CMake package consumers now tolerate dependency target-name differences across FetchContent, Conan, and vcpkg installs
  • Repo-local Conan and vcpkg packaging validation now passes sequentially, and installed icey.h headers no longer leak absolute build/source paths
  • Browser media-server smoke harness failures and related WebRTC sample pipeline regressions that were blocking stricter interop coverage
  • Symple-backed WebRTC signalling now enforces full user|id peer identity on the public call boundary instead of accepting ambiguous bare user/session forms
  • WebRTC receive-side codec detection no longer stringifies track descriptions back into SDP just to rediscover codec/clock data on bind or record paths
  • Symple clients now transition cleanly to Error on underlying transport failures, including initial WebSocket connect failures, via explicit http::ClientConnection error propagation
  • pacm JSON handling in the submodule update path, keeping the external package-manager surface aligned with the current docs/API snapshots