+ Add persistent custom update server configuration, authenticated URL support, manifest validation, and the settings UI.
+ Keep application updates rebootless by coordinating video shutdown, migration-time service startup, and online/offline service restarts.
+ Localize the custom update server workflow across all supported languages.
Add an MCP Streamable HTTP server with token authentication, screenshot capture, keyboard, and mouse tools.
Introduce shared control-mode and input-control coordination so MCP, PicoClaw, and local HID paths serialize ownership safely.
Integrate PicoClaw gateway/runtime control handoff with PID-managed startup and focused unit coverage.
- Add DNS configuration APIs for manual and DHCP modes, including persistence and udhcpc hook support.
- Add a Network settings tab with DNS controls, move Wi-Fi and HTTPS settings into it, and update translations.
- Update locales
commit 3dea4b1cfcb866d50c9c093b797c0f4f48fec23f
Author: wenjie <meetwenjie@gmail.com>
Date: Fri Apr 10 17:11:07 2026 +0800
fix(picoclaw): clean temp media and surface MCP screenshots in chat
- remove shared load_image staging and pass source paths through directly
- delete /tmp/picoclaw_media when a gateway session closes
- push MCP screenshot observations to downstream websocket clients
- hide null tool feedback messages and auto-scroll when screenshots load
commit f58ffe1e27f83f64e2b0e8c2f8dcac46af715ace
Author: wenjie <meetwenjie@gmail.com>
Date: Fri Apr 10 15:55:59 2026 +0800
Harden PicoClaw local API auth and session locking
Split PicoClaw routes by caller trust level and require the internal loopback token for local-only endpoints. Update the NanoKVM bridge script to send the internal token for loopback requests. Relax session lock acquisition for screenshot and action calls so the active session can perform local operations without permanently taking over the lock, and stop forcing the runtime dm_scope default.
commit 462a0670bbc5138c893fbd1155e72465b82c2065
Author: wenjie <meetwenjie@gmail.com>
Date: Fri Apr 10 13:52:39 2026 +0800
fix(picoclaw): improve KVM reliability and sidebar behavior
- follow HTTPS loopback redirects in the NanoKVM bridge script
- enable MJPEG frame caching only during active PicoClaw gateway sessions
- restore legacy screen zoom behavior across MJPEG and H264 renderers
- keep the PicoClaw sidebar available on mobile without splitter layout conflicts
- hide empty "null"/"undefined" chat messages and keep MJPEG failures on a black screen
commit bfda85c6368825c7ddf47d347ba5ec2588135885
Author: wenjie <meetwenjie@gmail.com>
Date: Fri Apr 10 11:37:15 2026 +0800
fix(picoclaw): verify runtime downloads and remove unused config API
- verify the downloaded runtime archive against the published SHA-512 checksum
- remove the unused /api/picoclaw/config endpoints and related frontend state
- rename runtime_control.go to runtime_constants.go for clearer intent
commit 10b34aaea59e10d70c3cdecb01915444561ceaf7
Author: wenjie <meetwenjie@gmail.com>
Date: Thu Apr 9 16:32:30 2026 +0800
fix: stabilize picoclaw runtime defaults and secure local MCP access
- persist required NanoKVM startup defaults before launching picoclaw and after saving model config
- force-enable the pico channel when loading config so runtime status can recover to ready
- derive the local MCP URL from the configured HTTP port and keep loopback-only HTTP access behind an internal token
- move loopback HTTP redirect logic into middleware to simplify main server startup
- improve runtime/sidebar state handling and add the load-image endpoint for active picoclaw sessions
commit d20540195bf45ea290f727b473ee8cd2a1bbb68d
Author: wenjie <meetwenjie@gmail.com>
Date: Fri Mar 27 17:55:29 2026 +0800
feat(picoclaw): add picoclaw integration
- H.264 WebRTC: Refactored to significantly reduce video latency
- H.264 Direct: Optimized data transmission; data parsing now continues correctly even when the tab is in the background
- MJPEG: Refactored to ensure the correct data length is sent
Bug Fixes
- Fixed an issue where certain keyboard modifier keys were not recognized
- Fixed vertical mouse cursor drift when the page is zoomed in or out
Optimizations
- Optimized HID write logic and updated the HID reset mechanism
- Added support for deleting images
- Added a Swap Memory option to the Tailscale page
- Added a confirmation dialog when uninstalling Tailscale to prevent accidental removal
- Improved the logic for updating the web page title
- Improved the UI for the Clipboard, Settings, Image Mounting, and App Update pages
Security
- Added a mandatory delay after failed login attempts to prevent brute-force attacks
- Updated dependencies to patch known security vulnerabilities
feat: support custom mouse wheel speed
fix: prevent direct H.264 stream buffer overflow and replay
style: optimize virtual keyboard layout
style: optimize menu bar and settings styling
refactor: optimize mouse jiggler
refactor: custom swap file size
refactor: update power buttons ui
refactor: optimize web page title
perf: set the minimum screen size to 640x480
perf: add heartbeat in H.264
chore: upgrade axios and golang.org/x/net
fix: remove redundant STUN server
perf: support disable STUN server (for local networks)
perf: update GOMEMLIMIT from 50 to 75
perf: add `-b` parameter to `ether-wake`
chore: bump vite to v6.2.1
feat: support downloading image from online URL
feat: add keyboard shortcut Ctrl+Alt+Del
fix: fix the CSRF issue
perf: add an option to configure custom ICE servers
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
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
- changing password will modify both the web user and the system root user
- refactor menu bar
- add oled automatic sleep
- support setting GOMEMLIMIT, and automatically enabled when tailscale is logged in
- some other bug fixes and optimizations