Skip to content

Releases: nilstate/icey

icey 2.4.5

11 Apr 15:45

Choose a tag to compare

Fixed

  • System-dependency builds no longer vendor and install nlohmann/json.hpp, avoiding conflicts with downstream package managers that already provide nlohmann-json
  • Exported CMake package configs now propagate the nlohmann_json dependency when system deps are enabled

icey 2.4.4

09 Apr 05:28

Choose a tag to compare

Added

  • Realtime intelligence pipeline primitives in the vision module, including frame normalization for detector-ready frames
  • WebRTC receive jitter buffer for smoother inbound media playback
  • API reference docs for graft, speech, and vision modules
  • Markdown sanitization script for generated API docs
  • Permanent macOS system-deps + FFmpeg CI coverage matching downstream package-manager builds

Changed

  • Doxygen config updated for new module coverage
  • Docs now use latest sourcey toolchain
  • Module guide updated with graft, speech, vision entries

Removed

  • pluga module and docs (replaced by graft)

Fixed

  • Apple AVFoundation source compatibility for package-manager builds on modern macOS SDKs
  • Darwin shared-library symbols are preserved for downstream package-manager builds

icey 2.4.3

06 Apr 13:59

Choose a tag to compare

Fixed

  • Downstream package-manager builds now resolve libuv correctly when the system dependency is exported as a shared target instead of a static-only alias
  • RPM source-package staging now carries the downstream compatibility patch set and claims the installed umbrella and vendored JSON headers in the development package
  • MacPorts builds now force the supported Release CMake build type instead of inheriting the unsupported default from the port group
  • The GitHub release workflow now validates the pre-finalize tag state, so tagged releases can publish before make release-finalize pins the archive hashes on main

2.4.2

04 Apr 05:27

Choose a tag to compare

Fixed

  • Package-manager builds now accept the shared libuv::uv target exported by vcpkg and other system package layouts.
  • Windows consumers no longer rely on backported export/linkage fixes for Timeout, PacketFactory, Transaction, and the base uv wrapper templates.
  • FFmpeg-backed builds now propagate discovered library search directories so Windows link steps can resolve avcodec.lib and related FFmpeg libraries.

2.4.1

30 Mar 04:39

Choose a tag to compare

Changed

  • Release tooling now treats Conan like the rest of the package-manager surfaces:
    • make release seeds packaging/conan/conandata.yml
    • make release-finalize pins the tagged archive hash and runs the final consistency check
  • The documented release flow is now explicit about the post-tag finalize step instead of suggesting a pre-tag release-check that could only fail on placeholder hashes

Fixed

  • Alpine system-package builds now accept the shared llhttp targets exported by Alpine's llhttp-dev package instead of hard-linking llhttp_static
  • The local Conan recipe now builds from immutable tagged GitHub archives instead of exporting a live checkout into the package

icey 2.4.0

29 Mar 23:15

Choose a tag to compare

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