* feat(client): add microphone passthrough button to controls toolbar
Add mic toggle button to the bottom controls bar that enables users to
share their local microphone with the remote neko session via WebRTC.
The server already supports microphone capture (capture.microphone.enabled)
but the legacy client had no UI to trigger getUserMedia and send an audio
track to the peer connection.
Changes:
- base.ts: Add enableMicrophone/disableMicrophone methods that call
getUserMedia and addTrack/removeTrack on the RTCPeerConnection.
Mic is cleaned up automatically on disconnect.
- controls.vue: Add mic button (fa-microphone/fa-microphone-slash) between
play/pause and volume controls with tooltip and error handling.
- en-us.ts: Add i18n strings for mic tooltips and error dialog.
* if the error is not io.EOF, log it. Otherwise, it's a normal closure of the track.
* tie microphone to active host and auto-disable on control loss
---------
Co-authored-by: h1n054ur <admin@haniumer.com>
Co-authored-by: Miroslav Šedivý <sedivy.miro@gmail.com>
* feat: support for entering text indirectly
* fix: restore text area value after composition input
* update guacamole keyboard.
---------
Co-authored-by: fezhang <fezhang@tencent.com>
Co-authored-by: Miroslav Šedivý <sedivy.miro@gmail.com>
* WIP: scroll to chat proof of concept on mobile, #381.
* update screen size to 1024px.
* login screen position fixed, #381.
* show chat with a small video on portrait mode.
* feat(i18n): enhance language management by saving user preference and detecting browser language
- Added a watcher to save the selected language to localStorage on change.
- Implemented browser language detection to set the default language based on user settings or browser preferences.
* use ~/utils/localstorage, remove setting savedLang in mounted as this is already set in i18.ts.
* do not repeat fallbackLocale and remove console log.
---------
Co-authored-by: Miroslav Šedivý <sedivy.miro@gmail.com>
Firefox 122+ incorrectly reports that it can read the clipboard but it can't instead it hangs when reading clipboard, until user clicks on the page and the click itself is not handled by the page at all, also the clipboard reads always fail with "Clipboard read operation is not allowed."