Add native self-hosted instance connection to fluxer_desktop

Trimmed monorepo checkout (fluxer_desktop + packages/voice_engine_v2 +
tools/ci) with a "Connect to a Different Server" menu item and popout
that lets the desktop app switch to any self-hosted Fluxer instance,
plus fixes for well-known discovery on single-domain self-hosted
deployments and a false-positive ERR_ABORTED on same-origin client
redirects during the switch. Defaults to chat.fluxr.chat and uses an
isolated userData directory from the official build.
This commit is contained in:
2026-07-01 18:22:43 -04:00
commit 682afacd30
1763 changed files with 613720 additions and 0 deletions
@@ -0,0 +1,93 @@
{
"version": 18,
"methods": [
"isSupported",
"getCapabilities",
"prewarm",
"getHardwareEncoderCapabilities",
"connect",
"disconnect",
"isConnected",
"publishMicrophone",
"pushPcm",
"publishScreen",
"updateScreenShareEncoding",
"unpublishScreen",
"publishScreenAudio",
"pushScreenAudioPcm",
"pushScreenAudioFloat",
"unpublishScreenAudio",
"setMicEnabled",
"setSpeakingDetection",
"listAudioInputDevices",
"listAudioOutputDevices",
"setAudioOutputDevice",
"setParticipantVolume",
"setRemoteTrackSubscription",
"publishData",
"listCameraDevices",
"publishCamera",
"updateCameraCapture",
"publishNativeCameraSink",
"publishProcessedCamera",
"pushProcessedCameraFrame",
"pushCameraBackgroundFrame",
"clearCameraBackgroundFrame",
"publishDeviceScreenShare",
"unpublishCamera",
"isPublishingCamera",
"startCameraPreview",
"stopCameraPreview",
"getConnectionStats",
"getVoiceEngineReadiness",
"getAudioDeviceModuleState",
"onEvent",
"onVideoFrame"
],
"ipcChannels": {
"isSupported": "voice-engine-v2:is-supported",
"getCapabilities": "voice-engine-v2:get-capabilities",
"prewarm": "voice-engine-v2:prewarm",
"getHardwareEncoderCapabilities": "voice-engine-v2:get-hardware-encoder-capabilities",
"connect": "voice-engine-v2:connect",
"disconnect": "voice-engine-v2:disconnect",
"isConnected": "voice-engine-v2:is-connected",
"publishMicrophone": "voice-engine-v2:publish-microphone",
"pushPcm": "voice-engine-v2:push-pcm",
"publishScreen": "voice-engine-v2:publish-screen",
"updateScreenShareEncoding": "voice-engine-v2:update-screen-share-encoding",
"unpublishScreen": "voice-engine-v2:unpublish-screen",
"publishScreenAudio": "voice-engine-v2:publish-screen-audio",
"pushScreenAudioPcm": "voice-engine-v2:push-screen-audio-pcm",
"pushScreenAudioFloat": "voice-engine-v2:push-screen-audio-float",
"unpublishScreenAudio": "voice-engine-v2:unpublish-screen-audio",
"setMicEnabled": "voice-engine-v2:set-mic-enabled",
"setSpeakingDetection": "voice-engine-v2:set-speaking-detection",
"listAudioInputDevices": "voice-engine-v2:list-audio-input-devices",
"listAudioOutputDevices": "voice-engine-v2:list-audio-output-devices",
"setAudioOutputDevice": "voice-engine-v2:set-audio-output-device",
"setParticipantVolume": "voice-engine-v2:set-participant-volume",
"setRemoteTrackSubscription": "voice-engine-v2:set-remote-track-subscription",
"publishData": "voice-engine-v2:publish-data",
"listCameraDevices": "voice-engine-v2:list-camera-devices",
"publishCamera": "voice-engine-v2:publish-camera",
"updateCameraCapture": "voice-engine-v2:update-camera-capture",
"publishNativeCameraSink": "voice-engine-v2:publish-native-camera-sink",
"publishProcessedCamera": "voice-engine-v2:publish-processed-camera",
"pushProcessedCameraFrame": "voice-engine-v2:push-processed-camera-frame",
"pushCameraBackgroundFrame": "voice-engine-v2:push-camera-background-frame",
"clearCameraBackgroundFrame": "voice-engine-v2:clear-camera-background-frame",
"publishDeviceScreenShare": "voice-engine-v2:publish-device-screen-share",
"unpublishCamera": "voice-engine-v2:unpublish-camera",
"isPublishingCamera": "voice-engine-v2:is-publishing-camera",
"startCameraPreview": "voice-engine-v2:start-camera-preview",
"stopCameraPreview": "voice-engine-v2:stop-camera-preview",
"getConnectionStats": "voice-engine-v2:get-connection-stats",
"getVoiceEngineReadiness": "voice-engine-v2:get-readiness",
"getAudioDeviceModuleState": "voice-engine-v2:get-audio-device-module-state"
},
"eventChannels": {
"event": "voice-engine-v2:event",
"videoFrame": "voice-engine-v2:video-frame"
}
}