Files
NanoKVM-MIRROR/CHANGELOG.md
2026-09-09 16:38:14 +08:00

25 KiB
Raw Permalink Blame History

2.5.1 (2026-09-09)

Features

  • Added device-level multi-user support with admin and user roles and a user management page under Settings, separating administrative areas (terminal, scripts, storage, network, updates, MCP, PicoClaw and Tailscale) from the video, keyboard, mouse, paste, wake-on-LAN and power controls every account keeps
  • Moved sessions to HttpOnly cookies with a per-user token version, so changing a password or disabling an account immediately ends that user's open web and WebSocket sessions
  • Added support for a custom update server, so the application can be updated from your own mirror, with credentials in the URL, manifest validation and a settings page for configuring it
  • Added SHA-256 verification of offline update packages before they are installed
  • Added configurable mouse input regions for absolute mode, with automatic black-border detection, manual selection of the controllable area on screen, and original-resolution presets, so the pointer stays aligned when the target machine outputs a letterboxed or non-16:9 signal
  • Added touch gestures to relative mouse mode, including tap, drag, long press, double-tap drag and two-finger scroll, so relative mode is now usable from a phone or tablet
  • Added a signal field to /api/vm/hdmi reporting whether an HDMI source is actually present, not just whether capture is enabled
  • Added a default root shell profile showing the user, host and working directory in the prompt over SSH and the Web terminal

Bug Fixes

  • Fixed mouse coordinates being offset in Direct H.264 mode when the target machine pads the picture with black bars
  • Fixed touch input in absolute mode, and stopped taps on the black letterbox area from being sent to the target machine
  • Fixed the video area not fitting the window, by scaling H.264 and MJPEG playback to contain and letting the page handle touch instead of the browser
  • Fixed WebRTC H.264 failures leaving a silent black screen; signaling, negotiation, ICE and playback failures now report what went wrong and offer a retry
  • Fixed a slow WebRTC viewer stalling the shared H.264 source for everyone else, by dropping its buffered frames until the next key frame
  • Fixed application updates running from a temporary directory that could be too small or shared with another update; online and offline updates are now staged in isolated persistent workspaces with archive, manifest and free-space checks, and the last rollback backup is kept when space runs short
  • Fixed the update lock being released before the server finished restarting, which allowed a second update to start and be killed mid-install
  • Fixed Web terminal sessions not loading the root profile, by starting them as login shells in /root

Performance

  • Routed Direct and WebRTC viewers through a single shared H.264 capture source instead of each reading the encoder separately

Localization

  • Synchronized translations of other languages according to English

Chores

  • Upgraded the web build tooling to Vite 8 and switched to Vite's native tsconfig path resolution
  • Added a dev container for full-stack development
  • Prefixed GitHub Release titles with nanokvm
  • Added release asset verification with per-device package size limits to the packaging workflow

2.5.0 (2026-08-04)

Features

  • Added an MCP service that lets trusted MCP clients capture screenshots and control the keyboard and mouse with an API key, including a settings page for enabling it and regenerating the key
  • Added coordinated device control so MCP, PicoClaw and manual input hand ownership over to each other instead of writing HID input at the same time
  • Added remote keyboard lock indicators that show the target machine's Num Lock, Caps Lock and Scroll Lock state
  • Added an optional SHA-256 checksum and cancellation to remote image downloads

Bug Fixes

  • Fixed the USB network gadget getting a random host-side MAC on every bind, which made the attached PC register a new network adapter after each reboot; both the device and host MAC are now derived from the chip UID (thanks to @BeaconCat)
  • Fixed OLED sleep durations above 255 seconds being truncated, so the 5 min, 10 min, 30 min and 1 hour options now behave as selected
  • Fixed the mounted image API returning an error in HID-Only mode
  • Fixed image downloads and application updates interfering with each other when running at the same time
  • Fixed Direct H.264 playback falling behind when the decoder queue backed up, by resynchronizing at the next key frame and preferring hardware decoding
  • Added a warning when Direct and WebRTC H.264 stream modes are used at the same time
  • Made the video input state shared between processes and read it without shell pipelines, so HDMI status stays consistent between NanoKVM-Server and kvm_system

Performance

  • Reduced latency in 60 Hz mode with decode-driven flow control, GOP-aware bounded queues, and dedicated writer goroutines with write deadlines so a slow client no longer stalls the others
  • Integrated zero-copy H.264 capture into the video pipeline instead of relying on a preload hook
  • Stopped HDMI capture when no user is logged in or all viewers are idle, reducing power consumption

UI Improvements

  • Tidied the image download dialog layout and truncated long file names in the upload box

Localization

  • Synchronized translations of other languages according to English

Chores

  • Split release automation into separate package, tag and release workflows, and produced identifiable build artifacts with checksums for pull requests
  • Allowed overriding the builder image, installed patchelf in the build environment, and fixed the exit codes of support/sg2002/build
  • Fixed slow container builds caused by uid/gid mismatch and reused existing container users and groups

2.4.3 (2026-06-09)

Features

  • Added LT6911D support

Bug Fixes

  • Improved USB network adapter compatibility on Windows

2.4.2 (2026-05-20)

Features

  • Added HDMI capture status detection with localized warning and error overlays on the desktop screen

Bug Fixes

  • Fixed left-button touch cancellation and context menu cleanup for mouse input
  • Improved the WebRTC loading indicator
  • Added Wi-Fi password field validation
  • Hardened Wake-on-LAN MAC handling by normalizing stored addresses, avoiding shell execution, handling missing history gracefully, and improving named MAC display
  • Stabilized PicoClaw session switching by waiting for gateway release, refreshing runtime status before reconnecting, rendering structured thought messages, and preventing history row overflow

Performance

  • Improved H.264 streaming client handling by reducing frame queue latency, using client snapshots for fanout, applying backend ICE server configuration, and cleaning up disconnected WebRTC clients more aggressively

UI Improvements

  • Refreshed desktop menu ordering and community links, including replacing the Discussion link with Discord

Chores

  • Removed the legacy H.264 stream package
  • Updated PostCSS, refreshed the MSW worker, and added pnpm workspace build approvals

2.4.1 (2026-05-08)

Features

  • Added DNS management to Network settings, including DHCP/manual modes, effective DNS display, network details, IPv4/IPv6 server validation, and persistent udhcpc hook support
  • Added a configurable server host option for binding NanoKVM to a specific listen address (thanks to @allmazz)
  • Added French keyboard layout support and language options (thanks to @ilyesAj)

Bug Fixes

  • Hardened HID recovery and cleanup by adding non-blocking HID writes, bounded reopen retries, stale event draining, and release reports after write failures
  • Fixed the kvm_vision project name and build output message in the SG2002 build script (thanks to @Voranto)

UI Improvements

  • Moved TLS and Wi-Fi settings into the Network settings section
  • Optimized the Settings scrollbar style

Localization

  • Updated Korean translations (thanks to @kmw0410)
  • Synchronized translations of other languages according to English

Security

  • Upgraded vulnerable web dependencies

2.4.0 (2026-04-10)

Features

  • Introduced PicoClaw support — an AI-powered remote desktop assistant for NanoKVM. PicoClaw seamlessly integrates a lightweight AI agent with NanoKVM's underlying hardware capabilities. Key highlights include:
    • Zero-Agent Architecture: Operates entirely through HDMI video capture (vision) and USB HID emulation (keyboard/mouse). No SSH access, network connection to the host, or OS-level software installation is required.
    • Natural Language Control: Features a built-in chat interface allowing users to issue complex instructions in plain text.
    • Autonomous GUI Operation: The AI agent can autonomously observe the remote host's screen, understand UI elements, reason about the task, and execute operations mimicking human behavior.
    • Installation Note: PicoClaw is not built into the NanoKVM device or firmware. Install it separately when needed.

Bug Fixes

  • Added a default subnet mask for static IP configurations
  • Fixed an issue where the IP address would occasionally not display

2.3.6 (2026-03-12)

Features

  • Implemented AP password authentication for the WiFi configuration page
  • Added Korean and Japanese virtual keyboard layouts (thanks to @klim4-bot)
  • Enabled support for 640x480 resolution (thanks to @Voranto)
  • Added encryption parameters for OLED distribution network
  • Added custom logo function and logo generation tools
  • Added update mechanism for tailscale startup script

Localization

  • Updated Japanese translation (thanks to @tkmsst)

2.3.5 (2026-02-28)

Features

  • Implemented login brute-force protection with lockout mechanism

Bug Fixes

  • Improved Tailscale error handling in UI components and refined backend state mapping

Chores

  • Updated server and web dependencies

2.3.4 (2026-01-26)

Features

  • Introduced Leader Key functionality to bypass local browser shortcut interception

Bug Fixes

  • Fixed an issue where the Right Shift key was not being recognized on Windows system
  • Fixed a bug where the menu bar would fail to close correctly

Localization

  • Updated Traditional Chinese translations (thanks to @j796160836)
  • Updated Korean translations (thanks to @kmw0410)

2.3.3 (2026-01-16)

Features

  • Added support for setting the display mode of the menu bar

Bug Fixes

  • Fixed a keyboard issue where IME composition events were not handled correctly
  • Resolved an issue where the AltGr key was not recognized on the Windows system
  • Fixed a bug where Command key combinations were not fully released on the macOS system
  • Fixed input issues with the IntlBackslash key on the German virtual keyboard

Localization

  • Updated Korean translations (thanks to @kmw0410)

Chores

  • Bump react-router-dom from 6.27.0 to 6.30.3
  • Updated eslint

2.3.2 (2026-01-08)

Features

  • Added support for custom keyboard shortcuts
  • Added support for mouse Forward and Back buttons (reboot required)
  • Added support for touchscreen mouse operation
  • The menu bar now supports auto-hide and drag

Bug Fixes

  • Fixed an issue where the previous IP address was not released after configuring a static IP

Performance

  • Refactored the keyboard to support simultaneous keystrokes and a wider range of international layouts (reboot required)
  • Refactored the mouse to improve response latency
  • Refactored the WebSocket module to transmit keyboard and mouse data using the standard HID format

2.3.1 (2025-12-26)

Features

  • Added support for offline application updates (thanks to @Alexander-Ger-Reich)
  • Implemented support for uploading ISO images (thanks to @Alexander-Ger-Reich)
  • Extended clipboard compatibility to support Russian characters (thanks to @pekishev)
  • Added configuration options for video scaling
  • Added support for configuring mouse scroll wheel direction

Bug Fixes

  • Resolved an issue where custom port may not be accessible
  • Fixed a bug where Web Terminal and Serial Terminal may not disconnect when the page is closed

Security

  • Enhanced validation logic on the Wi-Fi configuration page. Requests are now rejected when the device is not in AP mode to prevent unauthorized changes

Chore

  • Added a Docker image environment to support building libkvm.so and NanoKVM-Server (thanks to @lowtech-guy)
  • Optimized the Settings UI

Localization

  • Updated Korean translation (thanks to @kmw0410)
  • Updated Swedish translation (thanks to @acidflash)
  • Updated Spanish translation (thanks to @Deses)

2.3.0 0e30a26 (2025-11-26)

Features

  • Added an EDID editor in the terminal with a built-in 1080P EDID template
  • Added German virtual keyboard and German clipboard support (thanks to @Alexander-Ger-Reich)
  • Resetting the HID also resets the USB hardware
  • Added support for deleting ISO images

Refactoring & Improvements

  • Video (H.264 WebRTC): Refactored the module to significantly reduce video latency
  • Video (H.264 Direct): Refactored to optimize data transmission and support data parsing even when the page is in the background
  • Video (MJPEG): Refactored and ensure correct data length transmission
  • Added locking before resetting USB to prevent HID deadlock (thanks to @scpcom)
  • Optimized HID writing logic
  • Made HDMI toggle state persist across reboots (thanks to @tpretz)
  • Enhanced the paste feature with browser clipboard API integration (thanks to @patrickpilon)
  • Set the inquiry string for the virtual storage device (thanks to @scpcom)
  • Hostname now updates /etc/hosts simultaneously and takes effect immediately (thanks to @scpcom)
  • Improved compatibility for static IP configuration on Windows
  • Optimized the web page title update logic
  • Added a confirmation dialog when uninstalling Tailscale
  • Improved UI for Clipboard, Image Mounting, and settings pages

Bug Fixes

  • Tailscale: Fixed an issue where Tailscale would turn the device into a router
  • Tailscale: Fixed an issue where Tailscale would disable IPv6
  • Tailscale: Added a swap memory option to prevent Tailscale Out-Of-Memory errors
  • Tailscale: Fixed Tailscale accept-dns configuration (thanks to @lazydba247)
  • Fixed an issue where certain modifier keys were not recognized
  • Fixed vertical mouse drift when the page is zoomed in or out

Localization

  • Update Korean translation (thanks to @xenix4845)
  • Update Traditional Chinese translation (thanks to @protonchang)
  • Add Brazilian Portuguese translation (thanks to @chiconws and @Luccas-LF)
  • Add Swedish translation (thanks to @acidflash)
  • Add Catalan translation (thanks to @Zagur)
  • Add Turkish translation (thanks to @Keylem)

Security

  • Implemented a delay after failed login attempts to mitigate brute-force attacks
  • Upgraded dependencies to fix known security vulnerabilities

2.2.9 c77981c (2025-06-13)

  • fix(security): resolve parameter injection in serial port terminal

2.2.8 01e28f1 (2025-05-22)

  • feat: add AZERTY virtual keyboard Layout (thanks to @felix068)
  • feat: add support for enabling/disabling HDMI output (PCIe version only) (thanks to @tpretz)
  • feat: add support for custom mouse wheel speed
  • fix: prevent direct H.264 stream buffer overflow and replay issues
  • perf: improve keyboard paste performance (thanks to @ethanperrine)
  • Localization
    • update Korean translation (thanks to @kmw0410)
    • update Ukrainian translation (thanks to @arbdevml)
    • update Russian translation (thanks to @arbdevml)

2.2.7 e18ec22 (2025-05-08)

  • feat: add HTTPS support
  • feat: support direct H.264 streaming over HTTP
  • Localization
    • update Russian translation (thanks to polyzium)
    • update Dutch translation (thanks to LeonStraathof)
    • update Ukrainian translation (thanks to click0)
    • update German translation (thanks to 3limin4tor)

2.2.6 c83dc55 (2025-04-17)

  • feat: add mouse jiggler to prevent system sleep
  • feat: add support for swap memory
  • feat: add support for customizing the device hostname
  • feat: add support for customizing the web page title
  • feat: add support for assigning custom names to Wake-on-LAN MAC addresses
  • feat: add confirmation prompts for power operations
  • feat: add logo to the login page (thanks to S33G)
  • fix: fix possible privacy issues with MIC drivers. Repair Record
  • fix: fix iptables rule that could interfere with SSH connections (thanks to scpcom)
  • fix: fix the static IP gateway configuration might not apply correctly (thanks to xitation)
  • perf: optimized OLED display handling and sleep logic
  • perf: improve H.264 streaming reliability by adding a heartbeat mechanism
  • perf: set the minimum screen size to 640x480
  • perf: add display of both wired and wireless IPv4 addresses in the settings page
  • perf: update the Thai language translations (thanks to ChokunPlayZ)
  • chore: bump axios to 1.8.4
  • chore: bump golang.org/x/net to v0.39.0
  • chore: bump github.com/golang-jwt/jwt/v5 to to v5.2.2

2.2.5 3286cc2 (2025-03-26)

  • fix: server crash caused by MJPEG frame detection error
  • feat: add HID-Only mode
  • feat: support preview updates
  • perf: improve image reading performance by optimizing screen parameters

2.2.4 1bf986d (2025-03-21)

  • fix: resolve USB initialization issue
  • fix: correct abnormal updates in certain models
  • perf: add version restrictions for production testing

2.2.3 6ef83cb (2025-03-21)

  • feat: add support for setting H.264 GOP
  • fix: resolve deadlock caused by HDMI resolution errors
  • perf: merge H.264 SPS and PPS into I-frame
  • perf: refactor MJPEG frame detection
  • perf: added more configuration options to the serial port terminal (thanks to @mekaris)
  • perf: improve the update-nanokvm.py script (thanks to @reishoku)
  • perf: disable mDNS by default in new products
  • perf: update log timestamp to millisecond precision
  • chore: bump Go to 1.23
  • chore: bump golang.org/x/net to v0.37.0

2.2.2 58d5ab2 (2025-03-11)

  • feat: add watchdog for NanoKVM-Server
  • feat: add support for UE chip
  • feat: support system reboot
  • feat: support enable/disable mDNS
  • fix: resolve UE chip cannot start server
  • perf: refactor automatic resolution detection
  • perf: add output prompt for unsupported resolutions
  • perf: add lock to kvmv_read_img
  • perf: configurable VENC automatic recycling feature
  • perf: add maximum limit for vi
  • perf: add tooltips to menu bar (thanks to @S33G)
  • perf: menu bar is now draggable (thanks to @forumi0721)
  • perf: image list support auto-refresh (thanks to @forumi0721)
  • perf: update translations

2.2.1 b5e48a0 (2025-02-21)

  • fix: mounted image were not being detected correctly
  • perf: add support for CD-ROM mode when mounting image (thanks to @scpcom)
  • perf: add a loading state during login
  • perf: add changelog link in settings
  • perf: update translation and cleanup the code (thanks to @ChokunPlayZ @Stoufiler @polyzium @Jonher937 @S33G)

2.2.0 0dbf8c0 (2025-02-17)

NanoKVM Image v1.4.0 has been released!

Please refer to the wiki for more details about the image and application.

  • fix: improve password update notification logic (thanks to @li20034)
  • perf: increase update wait time to 10s (from 6s)
  • perf: update Korean translation (thanks to @forumi0721)
  • perf: update Traditional Chinese translation (thanks to @protonchang)
  • refactor: update libkvm.so and libkvm_mmf.so libraries

2.1.6 6eb4a4e (2025-02-14)

  • feat: support downloading image from online URL (thanks to @Itxaka)
  • feat: add keyboard shortcut Ctrl+Alt+Del (thanks to @CaffeeLake)
  • fix: fix the CSRF issue
  • perf: add an option to configure custom ICE servers (thanks to @VMFortress)
  • perf: removed unnecessary modifications to DNS configuration
  • perf: add an SSH enable/disable toggle in the web UI
  • perf: add a Tailscale enable/disable toggle in the web UI
  • perf: download Tailscale installation package from the official source
  • perf: automatic enable/disable GOMEMLIMIT on tailscale start/stop
  • perf: add JWT configuration
    • secretKey: customize secret key. If empty, generated a random 64-byte secret key by default
    • refreshTokenDuration: customize token expiration time
    • revokeTokensOnLogout: invalidate all JWT tokens on logout
  • perf: implement secure password storage using bcrypt hashing
  • perf: implement integrity checks for online updates
  • refactor: refactor HDMI module and remove the dependency libmaixcam_lib.so
  • refactor: web terminal use pty instead of SSH
  • refactor: move Tailscale APIs from the network module to the extensions module

2.1.5 85f6447 (2025-01-14)

  • feat: add HDMI reset for NanoKVM-PCIe
  • fix: remove unnecessary lock acquisition during HID reset
  • refactor: refactor Tailscale

2.1.4 d7ca7c4 (2025-01-10)

  • feat: support configuring OLED sleep settings
  • feat: support setting the GOMEMLIMIT environment variable
  • fix: fix Wi-Fi configuration
  • perf: password changes now update both the web user and the system root user
  • perf: add MAC address verification for Wake-on-LAN
  • refactor: a lot update to web UI
  • refactor: refactor Tailscale

2.1.3 26078fe (2024-12-27)

  • feat: add API to retrieve Wi-Fi information
  • fix: fix keyboard modifier keys
  • fix: update keyboard and mouse HID codes
  • fix: update hardware version information

2.1.2 5a39562 (2024-12-04)

  • feat: add hardware version to configuration
  • feat: add Wi-Fi configuration support for NanoKVM-PCIe
  • perf: update web UI
  • chore: add dependency libraries

2.1.1 74a303b 2024-11-06

  • feat: support h264