- 🔧 Platforms, build and packaging:
libyuvnot detected without pkgconfig file + fixup- wayland: link to wayland-server
xkb: link tolibX11- some qemu build environments lack
openat2+ workarounds - stop building DEBs on any failure
- Fedora 45 package list
- workaround Cython 3.3.0 bug
- MS Windows builds find the version-stamping tool reliably
- Debian packages retain the Wireshark dissector when the normal packaging path is unavailable
- Adwaita theme layout changes + remove unused references
- remove outdated dependencies
- macOS hardened runtime fix
- MSYS2 renamed
libyuv - locate global Python interpreter for MS Windows SBOM
- don't bother building the unused Windows service component
- locate VisualStudio commands more reliably
- ⚠️ Major:
- X11 Pixmap leak + regression tests
- warn rather than leaking memory with buggy Debian libraries and show the problematic GI version
- GStreamer initialization with newer PyGObject
- OpenGL windows can remain blank until they receive a configure event
- crash: don't assume Gdk displays are X11 displays
- Wayland clients don't need a X11 display
- stale X11 timestamps cause focus issues
- method wrongly returned failure code
- error when running without window forwarding
- don't reject clients without encodings if they don't need any
- don't reconfigure monitors unless required verify with Xvfb
- errors running configuration subcommands as root
- honour configuration file naming order
- the encoder server fails to start
- an X11 event flood no longer freezes the session, new connections, or management commands
- X11 error callbacks are safe when they run outside the main Python thread
- X11 error handling no longer consumes CPU in a busy timer loop
- late mouse clicks for closed windows are ignored rather than affecting another window
- simulated mouse releases retain the button originally pressed when modifiers change
- mmap-based forwarding recognizes its current attributes and remains usable
- monitor refresh rates are normalized when supplied in different forms
- normalized monitor refresh rates retain the intended configured value
- GTK clients fail to restack a window above or below another window
- resizing desktop sessions has no effect on Xvfb displays
- window managers in resized desktop sessions keep placing windows and panels using the old monitor size
- automatically release the correct button
- blurry popups screen updates
- handle missing file caps more gracefully
- unable to start servers without the client installed
- Wayland backend:
- 🌈 Encodings:
- threaded image filters hand window damage to the wrong thread, racing with encode-queue cleanup
- damage cancellation can free an image while it is being encoded
- concurrent damage can start multiple encode threads and prevent shutdown
- pending damage images leak when a connection closes
- lossy screen updates are never followed by an auto-refresh
- video maximum-size settings are interpreted correctly
- invalid video encoding or scaling choices are rejected before they can break video forwarding
- client encoding validation runs after the requested features are available
- command-line encoding choices are handled consistently during startup
- one-shot encoder sessions release their resources cleanly
- OpenGL scrolling no longer clips updates or reuses stale snapshots
- closing OpenGL windows releases their temporary graphics resources
- window repaints no longer leave an outdated auto-refresh pending
- client shutdown cleans up delayed redraws
- dropped delayed screen updates are acknowledged so later updates can proceed
- strict encoding requests can be downgraded before the per-window capabilities are received
- clients that only accept BGRX / BGRA pixels, like MS Windows GDI rendering, fail to paint RGBX / RGBA updates
- video pipeline setup can race with cleanup and leave a mismatched colourspace converter and video encoder
- CUDA and NVENC:
- update default CUDA location on MS Windows
- bump CUDA libraries to SDK 13
- device detection fails when mmap is enabled
- video conversion keeps colour values within the valid range
- video conversion handles image edges without corrupt output
- slow cleanup is clearly reported instead of silently stalling a session
- NVENC sessions retain needed fallback resources instead of failing unexpectedly
- NVENC streams fail to decode due to invalid
cscattribute - use NVENC SDKv13 paths
- Minor:
- X11 events can stop being routed after an unmatched filter cleanup and leave the filter unusable
- window-icon timers survive after their window is removed or raise warnings after firing
- missing
content-typesattributes - safer display access
- better forwards compatibility
- window subsystems toggles not honoured
- lookup X11 display when used
- skip unused window attributes
- skip unused encoding attributes
- truncating integer divisions in Cython code
- the shadow screenshot tool works again
- session cleanup removes dangling SSH-agent links
- server runtime directories are created more safely and reliably
- proxy startup reports a missing display cleanly instead of raising an internal error
- with
modal-windowsenabled, popup menus and tooltips fail to appear while other windows are open, and modal dialogs stay non-modal after a popup closes + test fixup - keep the cursor shape when clamping it to the maximum size
- skip audio capabilities when server has no speaker or microphone
- *️⃣ Keyboard:
- multiple keyboard layouts supplied on the command line are applied correctly
- clients keep typing the right keys after the server keyboard layout changes
- Page Up, media and other differently named X11/GTK keys work on non-X11 clients
- invalid native keycodes no longer produce the wrong character
- keyboard fallbacks preserve the client layout group + fixup
- keyboard fallbacks choose a consistent primary layout when no group matches
- keyboard fallbacks apply the modifiers needed to type the intended character
- MS Windows clients pick up keyboard-layout changes reliably
- MS Windows Num-Lock state
- MS Windows missing modifiers
- 📋 Clipboard:
- clipboard requests waiting during a client reset complete instead of timing out
- simultaneous large and small clipboard transfers no longer mix their contents or time out
- an unowned X11 selection no longer triggers misleading errors or needless server queries
- X11 clipboard conversion replies reach the application window that requested them
- 🎥 Recorder / replay:
- record clients cannot serialize typed capability values
- unhandled packets stopped the recording
- disable file and printer subsystems
- replay loses some windows
- remove unreachable handler
- missing authentication handlers
- don't lose the events that embed binary data
- skip over the gaps in the event sequence
- replay the raise, restack, stacking and bell events
- 🖧 Network:
xpra clean-socketsskips every socket- don't drop clients that are slow to send their first packet
- paramiko: try ssh keys in the same order as openssh
- paramiko: try agent keys in the order the identity files are configured
- AES in non-backwards compatible mode
- remove unused clipboard loop handler
- expose minimum protocol version supported: 5.1
- socket activation regression
- file-transfers disabled by printing
- 💄 Cosmetic:
- clearer message when server is too old
- GTK clients can send duplicate scroll events
- expose monitor names + on macOS
- make audio test more reliable + fixup
- skip wayland window test when the bindings are not available
- paramiko strict type check
- don't sync
XPRA_*X11 properties - unit test failures in constrained environments
- duplicate registration of pointer grab handlers
- silence spurious GCC warnings
- spurious packet errors on client disconnection
- logging error during encoding initialization when encoding debug logging is enabled
- wrong colours in example dialog
- unit tests fixes: clipboard, stop display
- make it easier to see which tests have failed and which are slow
- handler is already registered
- cleanup pam config
- installed test suites are assembled correctly
- X11 event filter regression test fails on this branch
- tests recover quickly from stale sockets rather than repeatedly waiting for timeouts
- clearer message when session is not found
- update all image wrapper metadata after conversion
- gtk dropped its own stock icon names
- reliably detect a missing gtk3 client