v3.0.0
MightyMoud/sidekickv3.0.0Apr 1, 2025by m1k1o
AI Summary
The v3.0.0 release marks a major architectural overhaul of the project structure and server capabilities. It introduces a REST API, Prometheus metrics, and a new authentication system, while significantly improving capture and desktop control features. Note that the client remains on the old version during this update.
Key Highlights
- Major architectural refactor including split Dockerfiles and new build process
- Introduction of REST API, Prometheus metrics, and advanced authentication
- Enhanced capture features including screencast fallback and webcam passthrough
- New desktop control capabilities like custom X11 driver and drag-and-drop
- Server restructuring with reusable components and Go plugin support
Breaking Changes
- Default registry changed from docker.io to ghcr.io
- App folders moved from .docker/ to apps/
- Dev scripts moved from .docker/ to client/dev/ and server/dev/
- Docs folder moved to webpage/docs/ with new structure
- Base Dockerfile split into client/, server/, and runtime/
- Build process moved from .docker/build to build/
- V2 configuration options deprecated
New Features
- REST API with OpenAPI documentation
- Prometheus metrics
- New authentication system with multiple methods
- User management with granular feature access control
- Screencast feature as WebRTC fallback
- Experimental webcam and microphone passthrough
- Video simulcast and stream selector
- Drag-and-drop file upload support
- Custom input X11 driver for touchscreen
- Go plugins support for custom features
- Session tokens as cookies for persistent login
- WebRTC bandwidth estimation and adaptive quality
- WebSocket control fallback for WebRTC
- Batch mode HTTP requests
- pprof support for server profiling
Full Release Notes
### Repository Changes - The default registry is now `ghcr.io/m1k1o/neko` instead of `docker.io/m1k1o/neko`. - Multiarch builds for `linux/amd64`, `linux/arm64`, and `linux/arm/v7` are now available instead of `arm-`based images. - App folders from `.docker/` have been moved to `apps/`. - Dev scripts from `.docker/` are now available in `client/dev/` and `server/dev/`. - The `docs/` folder is now available at `webpage/docs/` with a completely new structure. - The base `Dockerfile` has been split into `client/Dockerfile`, `server/Dockerfile`, and `runtime/Dockerfile`. - The build process has been moved from `.docker/build` to `build/`, supporting more options. See `--help` for more information. - Brave, Vivaldi, Remmina, and KDE are now also available as ARM-based images. - Waterfox is now available as a new browser. ### Server Changes - A REST API with OpenAPI 3.0 documentation is now available. - Prometheus metrics are now available. - The server name is now `github.com/m1k1o/neko/server` and can be used as a library. - Reusable components and types are available in the `server/pkg/` folder, such as `gst`, `xevent`, and `xorg`. - A new authentication system with support for multiple authentication methods has been added. - A new user management system with support for granular feature access control has been implemented. - The structure for configuration options has been updated, with options now separated into modules. - Compatibility with V2 configuration options is still available but deprecated. - **Capture**: Added a screencast feature as a fallback for WebRTC. - **Capture**: Added experimental webcam and microphone passthrough support. - **Capture**: Added video simulcast support and a stream selector. - **Capture**: When joining a pipeline, a keyframe is requested on demand and sent to the client. - **Desktop**: Clipboard now uses `xclip` instead of `libclipboard`, allowing multiple targets. - **Desktop**: Added drag-and-drop file upload support. - **Desktop**: Added a file chooser dialog to prompt users for file uploads (experimental). - **Desktop**: Added an unminimize feature to ensure that the window is not minimized when the user is trying to control it. - **Desktop**: Created a custom input X11 driver to support touchscreen devices. - **Desktop**: Added support for `xrandr` to set the virtual monitor resolution to any resolution, not just predefined ones. - **Desktop**: Added a function to send events when the cursor changes, along with the cursor image. - **HTTP**: Added batch mode to allow multiple requests in a single connection. - **HTTP**: Added `pprof` support to enable server profiling. - **HTTP**: Created a legacy driver to support the current neko client. - **HTTP**: Refactored HTTP logging. - **Plugins**: Added support for Go plugins to enable custom features to be added to the server. - **Plugins**: Chat has been implemented as a plugin that can be disabled globally or per user (mute feature). - **Plugins**: File upload has been implemented as a plugin that can be disabled globally or per user. - **Session**: Added support to save session tokens as cookies to allow persistent login. - **Session**: Added the ability to serialize and deserialize sessions to a file to survive restarts. - **Session**: Added support for dynamic permissions with granular feature access control. - **WebRTC**: Forwarded desktop cursor changes to the client. - **WebRTC**: Forwarded cursor position to other clients that have enabled the inactive cursors option. - **WebRTC**: Switched from LittleEndian to BigEndian for the video stream to improve browser compatibility. - **WebRTC**: Created a legacy driver to support the current neko client. - **WebRTC**: Added WebRTC ping to check if the connection is still alive and to determine latency. - **WebRTC**: Added the ability to switch video pipelines on the fly. - **WebRTC**: Implemented bandwidth estimation and adaptive quality (experimental). - **WebSocket**: Added support for controlling the desktop using WebSockets as a fallback for WebRTC. - **WebSocket**: Added support for sending unicast and broadcast messages to all clients. Please note that in this version, only the server has been updated. The client is still in the old version; therefore, new features may not yet be available in the client.