# ───────────────────────────────────────────── # Orbiscreen - RPM Spec (source build, COPR/Fedora) # https://github.com/shadow-x78/orbiscreen # ───────────────────────────────────────────── %global debug_package %{nil} %global __brp_mangle_shebangs %{nil} # ── Metadata ── Name: orbiscreen Version: 0.31.4 Release: 1%{?dist} Summary: Turn Android devices into high-performance secondary monitors for Linux License: GPL-3.0-or-later URL: https://github.com/shadow-x78/orbiscreen Source0: orbiscreen-0.31.4.tar.gz Source1: orbiscreen-vendor-%{version}.tar.zst BuildRequires: cargo BuildRequires: rust >= 1.75 BuildRequires: pkgconfig(gstreamer-1.0) BuildRequires: pkgconfig(gstreamer-app-1.0) BuildRequires: pkgconfig(gstreamer-video-1.0) BuildRequires: pkgconfig(libevdev) BuildRequires: pkgconfig(xkbcommon) BuildRequires: pkgconfig(dbus-1) BuildRequires: pkgconfig(gtk+-3.0) BuildRequires: pkgconfig(webkit2gtk-4.1) BuildRequires: pkgconfig(ayatana-appindicator3-0.1) BuildRequires: git-core Requires: gstreamer1 gstreamer1-plugins-base gstreamer1-plugins-good gstreamer1-plugins-bad-free Requires: libevdev libxkbcommon Recommends: gstreamer1-plugins-ugly-free %description Orbiscreen turns Android tablets and phones into high-performance extended monitors for Linux desktops (Wayland and X11). Features include virtual display backends (KWin, wlroots, EVDI), low-latency hardware encoding (NVENC, VAAPI), stylus digitizer support with pressure and tilt, touch and mouse control, and Wi-Fi or USB tunneling. %prep %autosetup -n orbiscreen-0.31.4 -p1 -a1 mkdir -p .cargo cat > .cargo/config.toml << 'EOF' [source.crates-io] replace-with = "vendored-sources" [source.vendored-sources] directory = "vendor" EOF %build cargo build --release --workspace --locked %install install -Dm0755 target/release/orbiscreen %{buildroot}%{_bindir}/orbiscreen if [ -f target/release/orbiscreen-gui ]; then install -Dm0755 target/release/orbiscreen-gui %{buildroot}%{_bindir}/orbiscreen-gui fi install -Dm0644 data/orbiscreen.svg %{buildroot}%{_datadir}/icons/hicolor/scalable/apps/orbiscreen.svg ln -sf orbiscreen.svg %{buildroot}%{_datadir}/icons/hicolor/scalable/apps/orbiscreen-gui.svg for size in 16 24 32 48 64 128 256 512; do if [ -f "crates/orbiscreen-gui/icons/${size}x${size}.png" ]; then install -Dm0644 "crates/orbiscreen-gui/icons/${size}x${size}.png" "%{buildroot}%{_datadir}/icons/hicolor/${size}x${size}/apps/orbiscreen.png" ln -sf orbiscreen.png "%{buildroot}%{_datadir}/icons/hicolor/${size}x${size}/apps/orbiscreen-gui.png" fi done install -Dm0644 data/orbiscreen.desktop %{buildroot}%{_datadir}/applications/orbiscreen.desktop install -Dm0755 scripts/install-evdi-module.sh %{buildroot}%{_datadir}/orbiscreen/install-evdi-module.sh install -Dm0644 data/99-orbiscreen-usb.rules %{buildroot}%{_udevrulesdir}/99-orbiscreen-usb.rules for f in index.html style.css app.js annexb.js stats.js favicon.svg favicon.png apple-touch-icon.png; do install -Dm0644 "clients/web/$f" "%{buildroot}%{_datadir}/orbiscreen/client/$f" done install -Dm0644 clients/web/vendor/mpegts.js %{buildroot}%{_datadir}/orbiscreen/client/vendor/mpegts.js install -Dm0644 /dev/null %{buildroot}%{_userunitdir}/orbiscreen.service cat > %{buildroot}%{_userunitdir}/orbiscreen.service << 'EOF' [Unit] Description=Orbiscreen Virtual Secondary Display Service Documentation=https://github.com/shadow-x78/orbiscreen After=graphical-session.target [Service] Type=exec ExecStart=%{_bindir}/orbiscreen start NoNewPrivileges=true Restart=on-failure RestartSec=3s [Install] WantedBy=graphical-session.target EOF %check cargo test --workspace --locked --offline || true %post /bin/touch --no-create %{_datadir}/icons/hicolor &>/dev/null || : if [ -x %{_bindir}/gtk-update-icon-cache ]; then %{_bindir}/gtk-update-icon-cache %{_datadir}/icons/hicolor &>/dev/null || : fi if [ -x %{_bindir}/update-desktop-database ]; then %{_bindir}/update-desktop-database %{_datadir}/applications &>/dev/null || : fi %preun if [ $1 -eq 0 ]; then for u in $(users); do su -s /bin/sh -c "systemctl --user stop orbiscreen || true" "$u" || true done fi %postun if [ $1 -eq 0 ]; then /bin/touch --no-create %{_datadir}/icons/hicolor &>/dev/null || : if [ -x %{_bindir}/gtk-update-icon-cache ]; then %{_bindir}/gtk-update-icon-cache %{_datadir}/icons/hicolor &>/dev/null || : fi if [ -x %{_bindir}/update-desktop-database ]; then %{_bindir}/update-desktop-database %{_datadir}/applications &>/dev/null || : fi fi %files %{_bindir}/orbiscreen %{_bindir}/orbiscreen-gui %{_datadir}/icons/hicolor/*/apps/orbiscreen*.* %{_datadir}/applications/orbiscreen.desktop %{_userunitdir}/orbiscreen.service %{_datadir}/orbiscreen/client/index.html %{_datadir}/orbiscreen/client/style.css %{_datadir}/orbiscreen/client/app.js %{_datadir}/orbiscreen/client/annexb.js %{_datadir}/orbiscreen/client/stats.js %{_datadir}/orbiscreen/client/favicon.svg %{_datadir}/orbiscreen/client/favicon.png %{_datadir}/orbiscreen/client/apple-touch-icon.png %{_datadir}/orbiscreen/client/vendor/mpegts.js %{_datadir}/orbiscreen/install-evdi-module.sh %{_udevrulesdir}/99-orbiscreen-usb.rules %changelog * Tue Sep 30 2026 shadow-x78 <107577376+shadow-x78@users.noreply.github.com> - 0.31.4-1 - Release 0.31.4: fix host-side latency and to robustly survive USB/AOA protocol errors and resolution changes; add AppImage update metadata (zsync) and dynamic desktop entry. * Mon Sep 21 2026 shadow-x78 <107577376+shadow-x78@users.noreply.github.com> - 0.31.2-1 - Release 0.31.2: Bump version to 0.31.2 across all packages; Android versionCode 117; performance fixes for buffering, frame dropping, and capture frame pacing. * Sun Sep 20 2026 shadow-x78 <107577376+shadow-x78@users.noreply.github.com> - 0.31.1-1 - Release 0.31.0: Add dedicated WebSocket input channel on /input/ws eliminating mouse lag, stutter, and HTTP queue backpressure; bind uinput input devices to KWin virtual output in kwinrc confining touch and touchpad to virtual display; add in-session resolution control with chips and custom input in Android settings; eliminate unwrap panics across production code; purge internal codebase comments. * Sat Sep 19 2026 shadow-x78 <107577376+shadow-x78@users.noreply.github.com> - 0.30.9-1 - Release 0.30.9: Prevent GStreamer segmentation fault and CRITICAL disposal warnings on USB disconnect with RAII PipelineGuard and synchronous State::Null teardown; perform display session attach before constructing video pipeline; implement smart multi-client session routing correlating client key and unattached sessions; pass X-Orbiscreen-Session and client key in ExoPlayer headers while preserving session across transient reconnects. * Sat Sep 19 2026 shadow-x78 <107577376+shadow-x78@users.noreply.github.com> - 0.30.8-1 - Release 0.30.8: Overhaul direct touch and mouse dragging with BTN_LEFT synchronization on uinput touchscreen device; add graceful UDP BYE disconnect on daemon Ctrl+C shutdown with active Android health watchdog; fix second tablet freeze by decoupling per-client resolution and routing IDR keyframes; harden AOA USB bridges against poisoned mutex panics; purge internal codebase comments. * Sat Sep 19 2026 shadow-x78 <107577376+shadow-x78@users.noreply.github.com> - 0.30.7-1 - Release 0.30.7: Eliminate display freezing and deadlock upon mouse entry by reverting multi-threaded nearest-neighbor videoscale; restore safe crisp bilinear videoscale capture; implement smart resolution negotiation auto-detecting client physical native display (2560x1536) by default while honoring explicit user overrides; add tablet-friendly scaling presets (2560x1536, 1920x1152, 1280x768) to GUI dashboard. * Sat Sep 19 2026 shadow-x78 <107577376+shadow-x78@users.noreply.github.com> - 0.30.6-1 - Release 0.30.6: Eliminate 125% scaling latency and frame backlog with 4-thread nearest-neighbor videoscale; prioritize host display resolution configuration over client native screen on connect; dynamically update resolution and resize active sessions via D-Bus; restore Direct Touch mode by removing relative mouse movements from uinput touch injector; clean up Android input network dispatch. * Fri Sep 18 2026 shadow-x78 <107577376+shadow-x78@users.noreply.github.com> - 0.30.5-1 - Release 0.30.5: Eliminate permanent display freeze by never discarding buffers to keyframe in ExoPlayer; fix non-monotonic backward jumps in PTS timestamps during frame bursts; cut input latency by tuning ExoPlayer buffer durations to 30ms and locking playback speed to 1.0f; relax drop threshold to 150ms to prevent micro frame drops at 90Hz. * Fri Sep 18 2026 shadow-x78 <107577376+shadow-x78@users.noreply.github.com> - 0.30.4-1 - Release 0.30.4: Fix frozen display and stuck mouse regression from v0.30.3 caused by appsink back-pressure (duplicate set_drop/set_max_buffers override), ExoPlayer dead code, and shouldDropBuffersToKeyframe not acting on severe lag. * Fri Sep 18 2026 shadow-x78 <107577376+shadow-x78@users.noreply.github.com> - 0.30.3-1 - Release 0.30.3: Eliminate micro frame drops by disabling aggressive 30ms ExoPlayer frame drop in Android client, clamp PTS to prevent forward drift during bursts, disable appsink frame dropping in encoder pipeline, and optimize KWin virtual display damage pump for 90Hz. * Fri Sep 18 2026 shadow-x78 <107577376+shadow-x78@users.noreply.github.com> - 0.30.2-1 - Release 0.30.2: Fix GUI unresponsiveness and syntax error (Issue #81), add dynamic version detection in GUI and D-Bus daemon, prevent manual disconnect auto-reconnection loop in Android and Web clients, and ensure graceful pipeline shutdown on SIGINT/Ctrl+C. * Fri Sep 18 2026 shadow-x78 <107577376+shadow-x78@users.noreply.github.com> - 0.30.1-1 - Release 0.30.1: Fix NVENC VBV buffer cap and dynamic bitrate scaling to eliminate pixelation and macroblocking, unblock UDP video keyframes to prevent decoder freezes and IDR storms, fix KWin pointer output binding to restore fluid mouse motion, synchronize touch input with mouse cursor in X11 injector, and optimize Android input dispatcher with motion event coalescing. * Thu Sep 17 2026 shadow-x78 <107577376+shadow-x78@users.noreply.github.com> - 0.30.0-1 - Release 0.30.0: Comprehensive full-project audit, LAN security hardening with loopback pairing tokens and credential store, strict Android input serialization and trackpad click delta flush, zero-inline-comment policy enforcement across all crates, and packaging modernized for Rust 1.92 and Ubuntu Noble. * Thu Sep 17 2026 shadow-x78 <107577376+shadow-x78@users.noreply.github.com> - 0.29.1-1 - Release 0.29.1: Fix dual screen AOA supervisor port routing to daemon port; guard Android input against unauthenticated 401 request storms; fix KWin pointer binding for fluid mouse motion; add automatic session reconnection and extend post-viewer idle timeout. * Wed Sep 16 2026 shadow-x78 <107577376+shadow-x78@users.noreply.github.com> - 0.29.0-1 - Release 0.29.0: WebTransport Annex-B web client with WebCodecs hardware decoding, one-frame VBV rate control for ultra-low latency, reliable IDR stream with Reed-Solomon FEC for P-frame datagrams, and Android AU reordering packet loss recovery (PR #80 by @sentinelt). * Wed Sep 16 2026 shadow-x78 <107577376+shadow-x78@users.noreply.github.com> - 0.28.9-1 - Release 0.28.9: Merge PR #79 adding per-client KWin virtual outputs and isolated touch scoping for simultaneous multi-tablet streaming; introspect KWin input devices dynamically past event63; add automatic default session creation fallback in client_display for legacy client backwards compatibility; bump workspace release matrix. * Wed Sep 16 2026 shadow-x78 <107577376+shadow-x78@users.noreply.github.com> - 0.28.8-1 - Release 0.28.8: Enhance daemon shutdown reliability by terminating lingering processes on D-Bus timeout or unowned session bus, optimize Android video rendering for legacy and low-end devices with software decoder fallback documentation, and bump workspace release matrix. * Wed Sep 16 2026 shadow-x78 <107577376+shadow-x78@users.noreply.github.com> - 0.28.7-1 - Release 0.28.7: Eliminate frozen video stream on low-end and legacy Android tablets; relax ExoPlayer shouldDropOutputBuffer threshold from -50ms to -250ms to absorb decode jitter without dropping frames; configure shouldDropBuffersToKeyframe to request IDR on lag exceeding 300ms without discarding P-frames; parse display geometry from kscreen-doctor to automatically position KWin virtual displays adjacent to active physical monitors; bump version across workspace and documentation. * Wed Sep 16 2026 shadow-x78 <107577376+shadow-x78@users.noreply.github.com> - 0.28.6-1 - Release 0.28.6: Enable live virtual display resolution and framerate switching from desktop GUI Display settings; wire D-Bus SetResolution method to kscreen-doctor dynamic modes and persistent orbiscreen.toml config; synchronize UI active resolution and framerate chips with daemon status; document Arch Linux PKGBUILD build instructions in README and packaging guides. * Wed Sep 16 2026 shadow-x78 <107577376+shadow-x78@users.noreply.github.com> - 0.28.5-1 - Release 0.28.5: Send FRAME_FLAG_RESET on host shutdown to trigger immediate AOA accessory teardown in Android client; check host health endpoint before reporting USB ready to eliminate stale connection state after daemon exit; fix fit mode selection by mapping scale modes to engine integer values and applying them in real-time; clarify pointer speed UI controls for trackpad mode; resolve secondary display touch injection drop in uinput injector by tracking MT Type B slot IDs; expand OkHttp client concurrent request limits to prevent touch event queue stalls; configure lightweight default capture profile (720p@60Hz, 3500 kbps) for secondary display to eliminate bus congestion. * Wed Sep 16 2026 shadow-x78 <107577376+shadow-x78@users.noreply.github.com> - 0.28.4-1 - Release 0.28.4: Fix Android tablet black screen over USB (AOA) by expanding MPEG-TS buffer capacity to 2048 chunks; eliminate video pipeline packet drops in appsrc and appsink; optimize USB bulk transfer framing to prevent packet fragmentation; initialize keepalive frames only after first real frame capture; fix daemon stop deadlock by removing watch channel race condition. * Wed Sep 16 2026 shadow-x78 <107577376+shadow-x78@users.noreply.github.com> - 0.28.3-1 - Release 0.28.3: Fix tablet black screen by dynamically scanning and binding asynchronous Wayland outputs in damage pump; pre-seed capture pipeline with initial black frame in cap_pump to prevent encoder and stream starvation; add automatic runtime fallback from failing hardware encoders to software x264; add GStreamer bus sync handler for real-time encoder error reporting; expand AOA video sync_channel buffer capacity to 64 chunks. * Tue Sep 15 2026 shadow-x78 <107577376+shadow-x78@users.noreply.github.com> - 0.28.2-1 - Release 0.28.2: Fix broken pipe error on host session lock via client shutdown notification; prevent GStreamer AppSink callback stalls with try_send; expand broadcast video channel capacity from 8 to 64 slots; eliminate UDP hub probe tick mutex contention during network I/O; add 2-second grace period to UDP client TTL prune; request IDR on UDP hub broadcast lag; optimize keepalive frame snapshot memory footprint with Arc slice buffer. * Mon Sep 14 2026 shadow-x78 <107577376+shadow-x78@users.noreply.github.com> - 0.28.1-1 - Release 0.28.1: Drop stale frames and eliminate stream latency accumulation (PR #78 by @Yashb404); configure HTTP MPEG-TS pipeline with is-live=true and appsink drop=true max-buffers=1; clamp PTS timeline desync across frame gaps (>250ms) to nominal frame time; reduce AOA USB accessory sync_channel capacity from 64 to 8 chunks; multi-thread software color conversion with n-threads=4 on videoconvert. * Sat Sep 12 2026 shadow-x78 <107577376+shadow-x78@users.noreply.github.com> - 0.28.0-1 - Release 0.28.0: Eliminate USB video frame drops on Screen 1 by expanding socket buffer to 256KB and tuning ExoPlayer buffer pacing; fix secondary display black screen by implementing dynamic wl_output binding and configure retries in damage pump; restore standard relative mouse motion across all displays without boundary confinement; align Android touch and stylus coordinates 1:1 to host display pixels. * Sat Sep 12 2026 shadow-x78 <107577376+shadow-x78@users.noreply.github.com> - 0.27.9-1 - Release 0.27.9: Eliminate USB video frame drops on Screen 1 by expanding socket buffer to 256KB and tuning ExoPlayer buffer pacing (#77); fix secondary display black screen by implementing dynamic wl_output binding and configure retries in damage pump (#77); restore standard relative mouse motion across all displays without boundary confinement (#77); align Android touch and stylus coordinates 1:1 to host display pixels (#77). * Sat Sep 12 2026 shadow-x78 <107577376+shadow-x78@users.noreply.github.com> - 0.27.8-1 - Release 0.27.8: Fix secondary display damage pump matching to prevent Virtual-ORBISCREEN-2 from attaching to primary display (#77); eliminate USB AOA frame drops, video stutter, and keyframe stalls by increasing sync channel capacity and bounding pts calculation (#77); fix mouse delta speed and cursor bounds in Android PlayerSurface (#77); completely remove USB audio pipeline and preferences across daemon, transport, and Android app (#77). * Fri Sep 11 2026 shadow-x78 <107577376+shadow-x78@users.noreply.github.com> - 0.27.7-1 - Release 0.27.7: Fix secondary display black screen by pacing independent 60fps damage ticks to Virtual-ORBISCREEN-2 and pushing initial keepalive IDR frame (#77); auto-position secondary screen to the right via kscreen-doctor (#77); eliminate mouse rubberbanding and cursor jitter by routing pointer events strictly as relative motion to mouse_keyboard and isolating stylus pen tools (#77). * Fri Sep 11 2026 shadow-x78 <107577376+shadow-x78@users.noreply.github.com> - 0.27.6-1 - Release 0.27.6: Support concurrent secondary tablet virtual display on KDE Plasma with dynamic port allocation and uinput isolation (#77); expand AOA candidate detection to Allwinner and all MTP/ADB devices (#77); eliminate mouse cursor stutter by isolating relative mouse events from tablet stylus coordinate injection (#77); optimize Android ExoPlayer buffer pacing to 45-120ms with dynamic live playback speed to eliminate frame drops and audio underrun. * Fri Sep 11 2026 shadow-x78 <107577376+shadow-x78@users.noreply.github.com> - 0.27.5-1 - Release 0.27.5: Support concurrent multi-device AOA bridges in supervisor to prevent device collisions (#77); fix Android USB accessory permission flow and fallback (#77); convert battery optimization to interactive switch preference with live status and system intent launcher (#77); enable app-wide keepScreenAwake; center USB audio warning and round touch ripple highlights. * Fri Sep 11 2026 shadow-x78 <107577376+shadow-x78@users.noreply.github.com> - 0.27.4-1 - Release 0.27.4: Fix Android USB AOA connection and auto-connect by using RECEIVER_EXPORTED, adding onResume initialization, and adding replay buffer to autoConnectEvent (#77); fix keepScreenAwake by unwrapping Context to Activity and setting keepScreenOn on View; add battery optimization exemption settings with direct intent launcher (#77). * Fri Sep 11 2026 shadow-x78 <107577376+shadow-x78@users.noreply.github.com> - 0.27.3-1 - Release 0.27.3: Fix Android client audio playback by configuring AudioAttributes with USAGE_MEDIA, enabling audio focus handling, increasing DefaultLoadControl buffer durations to prevent AudioTrack buffer starvation, bypassing low-latency filters for audio decoders, and enforcing 48 kHz stereo ADTS audio in host GStreamer pipeline (#77). * Fri Sep 11 2026 shadow-x78 <107577376+shadow-x78@users.noreply.github.com> - 0.27.2-1 - Release 0.27.2: Fix video stream periodic freezing by removing false-positive seekToDefaultPosition loop in Android client (#77), add independent upstream-leaky queues for both video and audio before mpegtsmux to prevent frame stalls and audio dropouts (#77), fix virtual sink device description formatting to cleanly display "Orbiscreen Audio" with space in system sound settings. * Fri Sep 11 2026 shadow-x78 <107577376+shadow-x78@users.noreply.github.com> - 0.27.1-1 - Release 0.27.1: Fix Trackpad cursor jump on finger lift by routing RelativeMove to relative mouse device instead of tablet on host (#77), track cursor position client-side for correct tap-to-click landing, add hard-drop seek when buffered lag exceeds 80 ms and EWMA clock smoothing for Wi-Fi stability, protect keyframes from stale drop, fix toolbar auto-close removed, add virtual audio sink "Orbiscreen Audio" in PipeWire/PulseAudio via pactl module-null-sink. * Fri Sep 11 2026 shadow-x78 <107577376+shadow-x78@users.noreply.github.com> - 0.26.0-1 - Release 0.26.0: Fix video stream latency accumulation on Wi-Fi and USB/AOA with stale frame drop at 75 ms (#77), aggressively reduce all pipeline buffers to eliminate rubberbanding (#75), reduce GOP from 600 to 120 frames for fast IDR recovery, wire USB audio to server via audio=1 query parameter with BETA badge, replace Input Mode switch with Segmented Button in settings only (#76 referenced). * Thu Sep 10 2026 shadow-x78 <107577376+shadow-x78@users.noreply.github.com> - 0.25.9-1 - Release 0.25.9: Fix USB AOA black screen and ADB endpoint collision (#76), eliminate rubberbanding on USB reconnect and clock drift (#75), remove auto set_resolution display flash, single-tap floating pill handle, in-session settings overhaul, Android M3 settings rows, full light/dark color contrast audit, and desktop GUI D-Bus timeout protection. * Wed Sep 09 2026 shadow-x78 <107577376+shadow-x78@users.noreply.github.com> - 0.25.8-1 - Release 0.25.8: USB audio streaming to device speaker/headphones, auto-detection of native screen resolution and high refresh rate, USB latency pipeline optimization, auto-connect and disconnect behavior, full Arabic localization with NotoKufiArabic typography, draggable edge pill toolbar controls, and practical settings redesign. * Wed Sep 09 2026 shadow-x78 <107577376+shadow-x78@users.noreply.github.com> - 0.25.7-1 - Release 0.25.7: Restore dual USB pipeline with resilient AOA USB permissions and automatic ADB reverse port forwarding, protect D-Bus CLI queries against zombie or suspended process hangs, and update GUI device status display. * Wed Sep 09 2026 shadow-x78 <107577376+shadow-x78@users.noreply.github.com> - 0.25.6-1 - Release 0.25.6: Revert ExoPlayer threshold regression that caused worse rubberbanding in v0.25.5 (#75). Restore shouldDropOutputBuffer to 30ms, revert setMaxPlaybackSpeed to 1.0f, revert shouldDropBuffersToKeyframe to 100ms. Keep proactive IDR request on lag. * Tue Sep 08 2026 shadow-x78 <107577376+shadow-x78@users.noreply.github.com> - 0.25.5-1 - Release 0.25.5: Fix 30-minute latency drift and rubberbanding on USB AOA, quartz clock drift micro-catchup, on-demand IDR keyframe recovery, and periodic recovery keyframes (#75). * Tue Sep 08 2026 shadow-x78 <107577376+shadow-x78@users.noreply.github.com> - 0.25.4-1 - Release 0.25.4: Native Linux desktop GUI redesign (560x620), zero-inline-comments code audit, configuration comment standardization, and vector QR code fix. * Tue Sep 08 2026 shadow-x78 <107577376+shadow-x78@users.noreply.github.com> - 0.25.3-1 - Release 0.25.3: Eliminate USB AOA buffer bloat, lock ExoPlayer playback rate, configure low-latency backpressure, and fix rubberbanding on Android devices (#75). * Tue Sep 08 2026 shadow-x78 <107577376+shadow-x78@users.noreply.github.com> - 0.25.2-1 - Release 0.25.2: Linux Desktop GUI Control Center redesign, system tray icon integration, Wayland StartupWMClass alignment, automated NVIDIA explicit sync stability, and complete raster PNG icon packaging. * Tue Sep 08 2026 shadow-x78 <107577376+shadow-x78@users.noreply.github.com> - 0.25.1-1 - Release 0.25.1: UDP PMTU measurement without truncated ACKs or fragments, immediate unsendable reject, and full datagram Android receive buffer (PR #74 by @sentinelt). * Tue Sep 08 2026 shadow-x78 <107577376+shadow-x78@users.noreply.github.com> - 0.25.0-1 - Release 0.25.0: Linux Desktop GUI Control Center (orbiscreen-gui) with System Tray, streamlined English interface, and orbiscreen gui CLI integration. * Mon Sep 07 2026 shadow-x78 <107577376+shadow-x78@users.noreply.github.com> - 0.24.1-1 - Release 0.24.1: UDP Annex-B video transport with per-client DPLPMTUD, KWin dynamic virtual display with Direct Touch binding, and send-to-assemble delay metrics. * Mon Sep 07 2026 shadow-x78 <107577376+shadow-x78@users.noreply.github.com> - 0.24.0-1 - Release 0.24.0: Harmonize UI/UX and Catppuccin Mocha colors between Web and Android, remove Blank Display action, strengthen Web CSP, sanitize daemon input coordinates, and enforce clean comment standards. * Mon Sep 07 2026 shadow-x78 <107577376+shadow-x78@users.noreply.github.com> - 0.23.9-1 - Release 0.23.9: Purge GitHub Deployments and gh-pages branch, streamline distribution via Launchpad PPA and Fedora COPR. * Mon Sep 07 2026 shadow-x78 <107577376+shadow-x78@users.noreply.github.com> - 0.23.8-1 - Release 0.23.8: GitHub multi-target deployment environments, banner-aligned social preview, standard issue forms, and gh-pages APT repository sync. * Mon Sep 07 2026 shadow-x78 <107577376+shadow-x78@users.noreply.github.com> - 0.23.7-1 - Release 0.23.7: Infinite GOP length, intra-refresh for x264enc, and on-demand IDR recovery via /api/control (PR #72 by @sentinelt). * Mon Sep 07 2026 shadow-x78 <107577376+shadow-x78@users.noreply.github.com> - 0.23.6-1 - Release 0.23.6: Probe vah264enc hardware encoder, warn on silent software x264 fallback, and tune VA-API low latency (PR #71 by @sentinelt). * Sun Sep 06 2026 shadow-x78 <107577376+shadow-x78@users.noreply.github.com> - 0.23.5-1 - Release 0.23.5: Shrink HTTP MPEG-TS transport queues, backpressure on full queue, 24ms Android live offset, and MediaCodec low-latency decoding (PR #70 by @sentinelt). * Sun Sep 06 2026 shadow-x78 <107577376+shadow-x78@users.noreply.github.com> - 0.23.4-1 - Release 0.23.4: Confine trackpad to virtual screen, eliminate duplicated stylus mouse injection, and scale Android motion deltas. * Sun Sep 06 2026 shadow-x78 <107577376+shadow-x78@users.noreply.github.com> - 0.23.3-1 - Release 0.23.3: Enable Gradle dependency caching in CI workflows to eliminate Cloudflare 403 Forbidden errors; enhance in-page Code of Conduct navigation anchors. * Sun Sep 06 2026 shadow-x78 <107577376+shadow-x78@users.noreply.github.com> - 0.23.2-1 - Release 0.23.2: Fix video freezing, black screen, and distortion over USB; restore uncorrupted MPEG-TS stream delivery and stabilize ExoPlayer buffer thresholds. * Sun Sep 06 2026 shadow-x78 <107577376+shadow-x78@users.noreply.github.com> - 0.23.1-1 - Release 0.23.1: Restore direct touch as a virtual multitouch device with evdev type-B multi-touch slots. * Sun Sep 06 2026 shadow-x78 <107577376+shadow-x78@users.noreply.github.com> - 0.23.0-1 - Release 0.23.0: Ultra-low latency USB pipeline tuning, resilient interface claim, and graceful USB detach navigation. * Sun Sep 06 2026 shadow-x78 <107577376+shadow-x78@users.noreply.github.com> - 0.22.9-1 - Release 0.22.9: Fix AOA USB packet truncation causing session token loss and auth=missing rejections; proper TCP shutdown on FRAME_FLAG_CLOSE; session token caching in Android client. * Sat Sep 05 2026 shadow-x78 <107577376+shadow-x78@users.noreply.github.com> - 0.22.8-1 - Release 0.22.8: Comprehensive multi-vendor udev rules in doctor fix, resilient Android token acquisition, and zero-root USB Tethering guidance. * Sat Sep 05 2026 shadow-x78 <107577376+shadow-x78@users.noreply.github.com> - 0.22.7-1 - Release 0.22.7: Purge ADB dependencies, add unprivileged AOA udev rules, real-time live doctor diagnostics, and Markdown update dialog. * Sat Sep 05 2026 shadow-x78 <107577376+shadow-x78@users.noreply.github.com> - 0.22.6-1 - Release 0.22.6: Native direct USB streaming via Android Open Accessory (AOA), polished and unified tool translations across Web, Android, and CLI. * Sat Sep 05 2026 shadow-x78 <107577376+shadow-x78@users.noreply.github.com> - 0.22.5-1 - Release 0.22.5: Implement native in-app Android updater with live progress bar, SHA-256 checksum verification, and PackageInstaller integration. * Sat Sep 05 2026 shadow-x78 <107577376+shadow-x78@users.noreply.github.com> - 0.22.4-1 - Release 0.22.4: Fix pure pointer classification for libinput/KWin, USB tethering auto-discovery, and styled stop card. * Sat Sep 05 2026 shadow-x78 <107577376+shadow-x78@users.noreply.github.com> - 0.22.3-1 - Release 0.22.3: Eliminate video stuttering with 1s GOP interval, pure absolute pointer mapping, zero cursor snapback, and stylus stability. * Sat Sep 05 2026 shadow-x78 <107577376+shadow-x78@users.noreply.github.com> - 0.22.2-1 - Release 0.22.2: Fix video stuttering and buffer overrun, confine mouse to virtual screen, fix stylus touch and hover. * Sat Sep 05 2026 shadow-x78 <107577376+shadow-x78@users.noreply.github.com> - 0.22.1-1 - Release 0.22.1: Ultra-low latency streaming optimizations, 3 separate uinput devices, direct touch output confinement, and stylus tablet tool resolution support. * Fri Sep 04 2026 shadow-x78 <107577376+shadow-x78@users.noreply.github.com> - 0.22.0-1 - Release 0.22.0: Direct touch pointer confinement, zero-snapback mouse release, green screen MPEG-TS fix, and clean startup branding. * Fri Sep 04 2026 shadow-x78 <107577376+shadow-x78@users.noreply.github.com> - 0.21.0-1 - Release 0.21.0: Rich developer version card, full bilingual i18n support, Arabic architecture diagram, and token security hardening. * Fri Sep 04 2026 shadow-x78 <107577376+shadow-x78@users.noreply.github.com> - 0.20.0-1 - Release 0.20.0: XDG Desktop Portal virtual display API, stylus pressure/tilt/hover overhaul, drag-and-drop gestures, ChromeOS ADB support, token security isolation. * Fri Sep 04 2026 shadow-x78 <107577376+shadow-x78@users.noreply.github.com> - 0.19.0-1 - Release 0.19.0: COSMIC desktop support, native Fedora CI RPM packaging, RTL documentation, zero-comment code standards. * Thu Sep 03 2026 shadow-x78 <107577376+shadow-x78@users.noreply.github.com> - 0.18.3-1 - Release 0.18.3: Android 1:1 web client parity, direct keyboard typing, refined ASCII logo, and web favicons. * Thu Sep 03 2026 shadow-x78 <107577376+shadow-x78@users.noreply.github.com> - 0.18.2-1 - Release 0.18.2: Redesigned CLI interface with brand theme, ASCII logo, status command, and clean code headers. * Thu Sep 03 2026 shadow-x78 <107577376+shadow-x78@users.noreply.github.com> - 0.18.1-1 - Release 0.18.1: Pure CLI daemon refactoring, removal of desktop launcher, and package description synchronization. * Thu Sep 03 2026 shadow-x78 <107577376+shadow-x78@users.noreply.github.com> - 0.18.0-1 - Release 0.18.0: Stylus pressure/tilt digitizer, auto-orientation, SEO-optimized docs and banner. * Wed Sep 02 2026 shadow-x78 <107577376+shadow-x78@users.noreply.github.com> - 0.17.4-1 - Release 0.17.4: Zero-latency NVENC, 60 FPS damage pump, Android UI overhaul, and clean packaging. * Tue Sep 01 2026 shadow-x78 <107577376+shadow-x78@users.noreply.github.com> - 0.16.0-1 - Source-build spec for COPR/Fedora: builds from the release tarball with cargo, packages the daemon, web client, and systemd user unit. USB transport completed in this release.