All notable changes to LinGlide will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
0.2.0 - 2025-02-06
- Touch input coordinate offset: Touch coordinates now correctly account for display position. Primary display dimensions are auto-detected via XCB RandR, and the offset is computed from the configured display position (right-of, left-of, above, below).
- Encoding thread silent crash: The encoding thread now catches panics and logs errors instead of crashing silently. The tokio runtime creation uses proper error handling instead of
.unwrap(). - PipeWire capture thread leak: The PipeWire capture thread is now properly joined on drop, preventing resource leaks.
- Nightly-only API usage: Replaced
u64::is_multiple_of()(nightly-only) with stable%operator. - Stale x264 references: Updated all documentation and comments to reference OpenH264 instead of x264.
- PIN brute-force protection: Added rate limiting to PIN verification (max 5 attempts, 5-minute lockout per key).
- Removed unauthenticated PIN endpoint:
GET /api/pair/pinno longer exposes the PIN. ThePOST /api/pair/pin/refreshendpoint now requires a valid auth token. - Reduced input event logging: Touch and input events downgraded from INFO to DEBUG/TRACE to prevent log spam and avoid leaking user interaction data.
- Deduplicated URL encoding: replaced custom implementations in
main.rsandhttp.rswith theurlencodingcrate (already used bylinglide-desktop). - Keyboard input stub now logs at DEBUG level instead of silently succeeding.
- CI system dependencies extracted to
scripts/install-ci-deps.sh, removing ~60 lines of duplication. - Removed
libx264-devfrom build dependencies (not needed with OpenH264).
detect_primary_display()function inlinglide-capturefor auto-detecting primary display resolution via XCB RandR.Config::display_offset()method for computing display offset from position and primary display dimensions.Config::with_primary_display()builder method.- GitHub Release workflow (
.github/workflows/release.yml) triggered onv*tag push, builds release tarball and publishes to GitHub Releases. - This CHANGELOG.
0.1.0 - 2025-01-15
- Initial release of LinGlide.
- Extended display support using EVDI virtual display.
- Mirror mode for screen capture without virtual display.
- H.264 video encoding with OpenH264 and fMP4 muxing.
- WebSocket-based video streaming to browser clients.
- Touch, mouse, scroll, and stylus input via uinput.
- Secure device pairing with 6-digit PIN and QR code.
- Token-based authentication for WebSocket connections.
- TLS support with self-signed certificate management.
- mDNS service discovery for automatic device detection.
- USB/ADB port forwarding for Android devices.
- Progressive Web App (PWA) client with WebCodecs decoding.
- Desktop GUI application with system tray (linglide-gui).
- CLI application (linglide).