Changelog

What changed in each release of JetKVM firmware and software.

All code on GitHub

JetKVM 0.5.10

Latest

  • Build with Go 1.26.10 and update root certificates #1726
  • Allow releasing from a branch other than dev #1728
  • Turn off Multipath TCP on listening sockets #1727
  • Return empty lists from the remote-agent when nothing is found #1729

JetKVM 0.5.9

  • Experimental Audio Support

    Host HDMI audio is captured through a UAC1 USB audio gadget and streamed to the browser over the existing WebRTC session. Off by default, gated by a new USB Audio permission under USB Devices, and the gadget stays attached to the host when streaming is toggled off #1475, #1479, #1499, #1596

  • 120 Hz Video Support

    Capture and stream at 120 Hz refresh rates #1452

  • Mobile Trackpad Mode

    AnyDesk-style relative trackpad input for phones and tablets #1494

  • Non-destructive USB Recovery

    USB recovery no longer wipes gadget configuration, avoids needless rebinds, fixes a mass storage kernel oops, and restores every USB function during recovery and forced eject #1563, #1579, #1582, #1599

  • Explicit USB Wake Control

    A new "Try to wake" button on the no-signal overlay sends a dedicated wake-only HID signal, while regular keyboard and mouse input no longer wakes a suspended host #1471

  • Idle Host Display Setting

    Optionally hide JetKVM as a monitor from the host when no remote session is active and restore it on reconnect #1476

  • Turkish Localization

    Added the Turkish (tr) UI translation #1557

  • Smaller Firmware Image

    Embedded static assets shrunk from 9.4 MB to 1.4 MB #1565

  • Signaling Refactor

    Introduced a signaling adapter interface and dropped legacy HTTP session signaling #1569

Video & HDMI improvements

  • Signal limited-range BT.709/BT.601 colorimetry in the encoder VUI #1460
  • Set the video codec before the native stream starts #1509
  • Discover video codec capabilities through RPC #1594
  • Serve the EDID preset list from the device #1586

Input & HID improvements

  • Mouse jiggler now uses tiny random movement near the current position #1424
  • Forward mouse X1/X2 buttons to the remote host #1473
  • Send keyboard macros to the device in chunks #1585
  • Allow brief HID write backpressure without dropping reports #1598
  • Fixed mouse button state across reconnects #1591
  • Fixed delayed macro cancellation stopping its replacement #1602

Network & security

  • Client IP is no longer taken from untrusted proxy headers #1492
  • Cap TLS serial numbers at 128 bits for Apple clients #1453
  • Align static IPv4 validation with live network state #1593
  • Stop leaking the DHCP lease label update timer #1592
  • Send X-Device-SKU on the cloud signaling connection #1568
  • Added a Save & Disconnect button when disabling MQTT #1486

Fixes

  • Fixed a WebRTC session shutdown race #1468
  • Fixed native failsafe activation #1507
  • Validate URL mounts before mounting #1508
  • Reap the shell spawned for the terminal channel #1581
  • Copy log buffers before asynchronous stream delivery #1597
  • Recreate serial and CDC-ACM console channels per peer connection #1571

Other changes

  • Removed the version-based UI feature flag mechanism #1575
  • Extracted the cloud UI bundle version selection #1577
  • Reduced time sync log noise #1506
  • E2E test improvements: S3 wake test version gate, remote agent diagnostics, input stabilization, post-update mouse check, optional shell access, RPC-based upload and serial verification, capability-based skips, spec split by area, hardware input capture and audio routing, and codec retry coverage #1458, #1457, #1477, #1580, #1587, #1588, #1589, #1590, #1595, #1601

JetKVM 0.5.8

  • Upload app binary per SKU to R2 #1432
  • Disable H.265 on Linux to avoid undecodable streams #1435
  • Keep modifiers out of auto-release #1438

JetKVM 0.5.6

  • Prevent modifier key auto-release during typing (#1386) #1387
  • Prevent double wheel scroll by sending to only one HID device #1390
  • Add S3 suspend/wake tests via USB remote wakeup #1392
  • Add space before 'root' in SSH default user message #1398
  • Add log level selector in Troubleshooting Mode #1395
  • Use relative mouse wake for S3 suspend #1402
  • Reset troubleshooting log level after reboot #1404

JetKVM 0.5.5

  • Add Welsh (Cymraeg) localization #1294
  • Sanitize filename in rpcMountBuiltInImage #1292
  • Persist session token to disk on login #1293
  • Redact secrets from diagnostics ZIP export #1291
  • Enforce bcrypt 72-byte password length limit #1290
  • Use consistent name for KVM terminal across action bar and panel #1286
  • Use consistent @/ import path for ru_RU keyboard layout #1285
  • Add Hungarian keyboard layout (hu_HU) #1284
  • Enable scrolling on cloud devices page #1282
  • Skip mouse reports when mouse device is disabled #1283
  • Add warning when SSH public key is empty in developer mode #1280
  • Prevent space bar from pausing video in fullscreen #1278

JetKVM 0.5.4

  • Rate limit login access #1185
  • Make install-deps work on arm64/aarch64 #1217
  • Feature: Add custom serial buttons extension #821
  • Signed Releases #1188
  • Fix case issue with Dell IDRAC EDID #1252
  • Add .nvmrc for Node.js version management #1250
  • Add Russian translations and update locale names #1243
  • Add Russian keyboard layout (ru_RU) #1248
  • Fix/ota signature bypass #1254

JetKVM 0.5.3

  • Reduce log noise #1142
  • Fix nil pointer dereference in handleSerialChannel #1141
  • Add Japanese translation #1152
  • Adding pt-BR translations #1157
  • Add Traditional Chinese localization #1159
  • Enhance synctrace logging #980
  • Add missing languages and correct translations of languages. #1161
  • Fix cloud WebRTC stability #1192
  • Prevent overscroll bounce on Safari #1196
  • Missing PWA icon on macOS Safari & MSEdge cased by no "any" purpose icons in the web manifest #1194
  • Fix flaky e2e tests #1197

JetKVM 0.5.2

  • Add sl_SI (Slovenian) keyboard layout #1064
  • Add OTA Update E2E Tests #1106
  • Fix assigning static IPv6 address to network address (#1082) #1089
  • Fix TLS server to obey LocalLoopbackOnly setting (#1090) #1091
  • Prevent mDNS queries by ICE when mDNS is disabled in config (#1094) #1095
  • Fix DNS configuration always flagged as changed when applying configuration (#1100) #1101
  • Fix flaky E2E OTA test #1107
  • When adding/removing routes, honor scope and protocol and manage gateways correctly #984
  • Fix microsoft ime input #1058
  • Bump actions/upload-artifact from 5 to 6 #1109
  • Bump actions/cache from 4 to 5 #1111
  • Fix: Timeout Diagnostics #1132

JetKVM 0.5.1

  • Improve prod release creation in gh #1046
  • Enable versioned UI builds in cf deployment script #1047
  • Add Japanese 106/109 key minimum mappings and extend HID usage range #1036
  • Fix AltGr handling for Windows clients #995
  • Custom domain not being shown in the form #1016
  • Correct Chinese translation errors in zh.json #1052
  • Basic automated e2e test #1050
  • Handle versioned cloud URLs in reboot flow #1048
  • Improve E2E tests #1063
  • Swap keys for 'y' and 'z' in nb_NO layout #1068
  • Add Japanese keyboard layout (ja_JP) #1065
  • Applies ESLint code formatting #962

JetKVM 0.5.0

  • Network Stack Rewrite

    Static IP configuration is now supported #878, #997

  • Localization

    Client/browser UI is now fully localizable using inlang paraglide-js, with expanded translations and automatic sorting #864, #899, #902

  • Failsafe Mode Enhancements

    Added a more robust failsafe mode with improved handling, detailed failure reasons, and max-restart safeguards #959, #991

  • Wake-on-LAN Web Endpoint

    Added a web route for sending WOL packets #945

  • Native Process Separation

    Moved the native component into a separate process (again) for improved stability #964

  • Enhanced DHCP Client

    Improved timeout/retry logic and switched the default client to udhcpc #908, #990

Video & HDMI improvements

  • Disabled sleep mode while detecting video format and stopped streams before entering sleep mode #887, #999
  • Fixed video quality and display timing issues #913
  • Corrected HDMI overlays in fullscreen mode #974
  • Fixed mobile viewport cropping and scaling issues #985

OTA improvements

  • Improved OTA update reporting and flow #838
  • Refactored OTA redirection logic #898
  • Added delay before forced reload and prevented reloads when no upgrade occurred #916, #955
  • Major OTA refactor and reliability improvements #912, #996

Fixes

  • Fixed null pointer in wakeDisplay #907
  • Improved JSON-RPC robustness and connection timing #915, #963
  • Fixed accented/Spanish character detection in the paste modal #976
  • Ensured correct redirection and page reload behavior #909
  • UI: Fixed async sleep usage #946
  • Fixed downgrade navigation parameters #992
  • Enhanced reboot state management, health checks, and redirect handling #994
  • Fixed HID RPC handshake packet to send only once #969

Other changes

  • Added remote IP address to the connection stats sidebar #944
  • Improved dev_deploy.sh #905
  • Added iputils-ping to the install script #917
  • More robust handling of gRPC events #986
  • Automatically reboot on hostname change #989
  • Cleaned up logger messaging #951

JetKVM 0.4.9

  • cgo Migration

    The JetKVM native component has been rewritten and replaced with cgo #635

  • Faster Paste Performance

    Improved paste speed in the UI #824

  • HDMI Sleep Mode

    Added HDMI sleep support to reduce power consumption #881

  • Podman Support

    Added support for Podman as an alternative to Docker #875

  • Danish Keyboard Layout

    Added da_DK keyboard layout #839

Fixes

  • Fixed lazy-loading issues on the Settings page #837
  • Fixed a segmentation fault introduced during the cgo migration #863

Other changes

  • UI dependency upgrades #819, #861
  • Removed msgpack from gin dependency #833
  • Cleaned up GitHub Action versions #828
  • Downgraded gin to v1.10.1 for stability #869
  • Updated openSUSE image reference #865
  • Refactored Combobox onChange handler #886

JetKVM 0.4.8

  • Keyboard stack rewrite

    • HID RPC Channel HID events now use a customized binary protocol, significantly reducing bandwidth usage and improving performance #755
    • Reworked keyboard management and improved Virtual Keyboard handling (CapsLock, Shift, styling, keypress reports)
  • IPv6 Control

    Added option to disable IPv6 #803

  • DHCP NTP Servers

    Time sync now supports DHCP-provided and custom NTP servers #625

  • Custom Jiggler

    Scheduler added via crontab and improved with timezone support #316, #742

  • HTTP Proxy Option

    Added support for configuring an HTTP proxy #521

  • Performance Improvements

    Faster loading and serving of pre-compressed static files #746, #793

  • DC Power Enhancements

    Added power restore mode, Prometheus metrics, and related improvements #672, #556

Fixes

  • Base USB configuration defaults fixed #610
  • Ensure RPC messages are processed sequentially #744
  • Jiggler settings now save correctly #786
  • Goroutine leak in cloudBlink resolved #801
  • Time sync reliability improved with fallbacks and repolling #609
  • Security-key backed SSH keys are now supported #807
  • UI fix: prevent rendering a button inside another button #782

Other changes

  • Device Reboot – UI now supports rebooting devices #505
  • Connection Sidebar – Enhanced stats display #748
  • New command to show version #604
  • Enhanced EDID handling (including Dell iDRAC and UI improvements) #693, #691
  • Added Safari application icon #749
  • Improved SSH key validation before saving #794

JetKVM 0.4.6

Fixes

  • Ensure certStore is initialised when adding custom cert #639
  • Make sure logWithSupression thread-safe #653
  • Reset display state after native binary is restarted #654

Other changes

  • Upgrade go version to 1.24.4 and go packages #644
  • Upgrade github.com/Masterminds/semver/v3 from 3.3.1 to 3.4.0 #668
  • Upgrade github.com/pion/webrtc/v4 from 4.1.2 to 4.1.3 #667

JetKVM 0.4.5

  • Keyboard LED Sync

    Now syncs the keyboard LED status with the host #502

  • Video Enhancements

    Saturation, Brightness and Constrast can now be adjusted #557

  • Scroll Throttling

    Can now be configured #544

  • Loopback Mode

    Webserver can now be configured to listen on localhost only #560

  • Prometheus Metrics

    Metric naming has been updated to match the best practices #602

Fixes

  • Default the keyboardLayout to en-US if not set #512, #633
  • The screen will now dim and turn off after a period of inactivity #540
  • Fullscreen keyboard lock logic #535, #631
  • Supress repeated logging when using a web terminal #550
  • Absolute mouse no longer advertises itself as a boot device #616
  • Ensure the mDNS mode is set every time network state changes #624
  • Restart jetkvm_native automatically #629
  • Supress duplicate error logs from usbgadget #630

Other changes

  • MAC address can now be copied from the device page #506
  • Hide the pressed key events on the status bar #518
  • Remove unused DeviceSettingState #496
  • Clean UI warnings #536
  • Update metric naming #602
  • Allow the versions in the makefile to be overwritten with ENV variables #619
  • Add VSCode extensions for improved development environment #509

JetKVM 0.4.4

  • Fix: Timesync would hang forever if all HTTP endpoints were unreachable

JetKVM 0.4.3

  • Upgrade Pion version (CVE-2025-49140)
  • Use pure Go DNS resolver instead of the native (CGO) resolver

JetKVM 0.4.1

  • Multiple keyboard layouts

    Now paste text support multiple keyboard layouts #405

Fixes

  • Handle any panic during the callRPCHandler #488
  • Fix screen scaling issue #499

JetKVM 0.4.0

  • TLS Support

    Now supports both self-signed and custom TLS certificates for secure connections.

  • Mount as Disk

    In addition to CD/DVD mounting, JetKVM now supports disk mode.

  • Network Settings Page

    A new dedicated page to configure and manage network settings.

  • Relative Mouse Mode

    Now out of beta.

  • Pointer & Keyboard Lock

    Enables full input capture for seamless remote interaction.

  • Improved Mouse Wheel Scrolling

    Smoother and more responsive scrolling behavior. #470 #434

  • Display Orientation

    Added support for changing the screen's display orientation. #400

  • Keyboard Macros

    Create and manage macros for automated key sequences. #305

JetKVM 0.3.9

In this release, we've exclusively focused on improving the connection to the JetKVM, both on the cloud and locally.

Some edge network cases may still cause issues, but we’re now much better equipped to track them down.

  • Rewritten the connection stack and improving debuggability
  • Migrated to web sockets for WebRTC signaling, instead of hybrid http/ws signaling approach
  • Better retry mechanism
  • Proper failure modes for known connection issues, like the ones in our docs.
  • Informative Loading screens, with real connection information. No more "Loading video stream…"
  • Improved logging to pinpoint exactly where things fail.

JetKVM 0.3.8

Notable changes

  • Relative Mouse (Beta)
  • Override USB Info
  • Override USB Devices
  • Override Cloud API & APP URLs for easier self-hosting
  • Improve scrolling and add scroll sensitivity setting
  • New Settings page
  • Fix Terminal compatibility issue in Firefox
  • Prevent pausing in full-screen mode when clicking space

All changes

  • Add extra logging and tune timeout settings for cloud #167
  • Use npx and update dev_device.sh to accept IP address as a argument #169
  • Add full dark mode support to FieldLabel component #173
  • Should return defaultConfig when config file doesnt exist #174
  • Simplify backlight settings handling #175
  • Improve video playback and keyboard handling in WebRTCVideo #176