github Pulse-Eight/libcec libcec-8.1.0
libCEC 8.1.0

5 hours ago

Changelog

libCEC 8.1.0 is a minor release. Its headline additions are two new language bindings — a cross-platform C# binding and a Node.js binding — modernized Debian packaging, a full set of published API documentation, and a round of key-handling fixes on top of the 8.0.0 held-key work.

📚 New: per-binding API reference is now published at https://pulse-eight.github.io/libcec/ — C/C++ (Doxygen), .NET (DocFX), Node.js (TypeDoc) and Python (Sphinx), each with install and usage guides.

Highlights

  • New cross-platform C# binding (LibCecSharp): a single pure-C# assembly (P/Invoke over the C API, net8.0) replacing the two Windows-only C++/CLI wrappers — now works on Linux, macOS and Raspberry Pi as well as Windows (#721)
  • New Node.js binding: a native N-API addon over the C API, shipped in the Windows installer and as a node-libcec Debian package
  • Published API documentation for all four bindings at https://pulse-eight.github.io/libcec/
  • Modernized Debian packaging: the runtime package is renamed libcec4libcec8 to match the SONAME, plus a new libcec-dotnet package
  • Key-handling fixes for devices that repeat or press-and-hold their own keys

.NET binding

  • changed: replace the Windows-only C++/CLI LibCecSharp/LibCecSharpCore wrappers with a single cross-platform pure-C# LibCecSharp binding (P/Invoke over the C API), targeting net8.0 (#721)
  • changed: port cec-tray to net8.0-windows and drop the .NET Framework build; the installer now checks for and installs the .NET 8 Desktop Runtime
  • added: libcec_get_stats to the C API so the managed binding can expose adapter statistics
  • changed: build the managed binding and apps via cmake's ENABLE_DOTNET_LIB / ENABLE_DOTNET_APPS options

Node.js binding

  • added: a Node.js binding (native N-API addon over the C API) with an ENABLE_NODE_LIB cmake option
  • added: the Windows installer ships a prebuilt addon (with a co-located cec.dll); Debian ships it as node-libcec

Key handling

  • fixed: don't cut long-presses short on devices that release their own keys — once the device is seen to send its own releases, stretch the synthesized release to a stuck-key backstop instead of the 500ms timeout (#704)
  • fixed: clear held-button state when a client is unregistered, so a reconnect can't emit a phantom release for a key pressed before the disconnect
  • fixed: drop a duplicate key release when the press was collapsed as a double tap (#723)
  • fixed: don't synthesize a release for a key the device is repeating, restoring 7.x behaviour for repeating directional keys (#724)

Documentation

  • added: per-binding API reference — Doxygen (C/C++), DocFX (.NET), TypeDoc (Node.js) and Sphinx (Python) — with welcome / install / usage pages, published to GitHub Pages at https://pulse-eight.github.io/libcec/

Packaging / build

  • changed: rename the libcec4 Debian package to libcec8 to match the library SONAME; libcec8 and libcec8-dev supersede the libcec4libcec7 names
  • changed: modernize the Debian packaging — debhelper compat 13, Standards-Version 4.6.2, Rules-Requires-Root, python3/dh-python and libncurses-dev build deps, github Vcs urls, and reproducible-build flags
  • added: a libcec-dotnet Debian package shipping the cross-platform LibCecSharp binding and its NuGet package
  • added: build the Debian package with the Linux kernel CEC framework, Exynos and AOCEC backends enabled
  • fixed: ship the CMake package config, the static library and cecc-client in the Debian packages, and match the flat python3 module layout in python-libcec
  • changed: vendor the Windows build-support tree (driver installers, libusb0.dll, cmake flag overrides) directly into the tree instead of a submodule

Full Changelog: libcec-8.0.0...libcec-8.1.0

Don't miss a new libcec release

NewReleases is sending notifications on new releases.