Per user feedback: these 3 features are core remote-support functionality
(typing, copying, sending files). 6d587a8 set them to N to save bandwidth
on the 5 Mbps self-hosted hbbs (114.55.133.123), but the user wants
them on by default. Users can still flip them off per-session.
Still OFF by default (kept from 6d587a8):
- enable-audio
- enable-tunnel
- enable-record-session
- enable-camera
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
For 4 users on 5 Mbps server (114.55.133.123) where file transfers were saturating bandwidth:
Turn OFF by default (users can still flip on per-session):
- enable-file-transfer: THE KILLER (1 GB upload = 2 GB server bandwidth)
- enable-clipboard: 50 kbps + privacy
- enable-keyboard: only needed for typing-on-remote
- enable-tunnel: prevents using server as jump host
- enable-record-session: only when explicitly recording
- enable-camera: 500 kbps; rarely used for support
- enable-audio: (already in c94a72a)
Force ON (overrides RustDesk's conservative default for self-hosted servers):
- enable-udp-punch, enable-ipv6-punch: src/common.rs:1107 turns these off
when rendezvous server is non-public. That's a safety measure meant for
untrusted public servers, but our self-hosted server is fully trusted.
Force-enabling boosts P2P success rate → less relay (21117) traffic →
less server bandwidth.
RustDesk's read_custom_client() at src/common.rs:2191 expects base64-decoded
ed25519-signed content, not plain JSON. Our custom.txt (plain JSON) fails the
decode64 check and returns early, so DEFAULT_SETTINGS stays empty.
Fix: inject 'enable-audio' = 'N' directly into DEFAULT_SETTINGS at the end of
load_custom_client(), outside the read_custom_client() call. entry().or_insert()
preserves the priority chain (OVERWRITE_SETTINGS → CONFIG2 → DEFAULT_SETTINGS),
so the user can still flip the option on in Settings.
Verified with debug eprintln that DEFAULT_SETTINGS.get("enable-audio") returns
Some("N") at startup. UI now shows 'Enable audio' unchecked in Settings →
Permissions.
- Added flutter/macos/Runner/custom.txt with default-settings.enable-audio=N
- Added custom.txt to Xcode Copy Bundle Resources (PBXResourcesBuildPhase)
- RustDesk's load_custom_client() reads this file and injects into DEFAULT_SETTINGS
- Users can still toggle 'Enable audio' in Settings; this just flips the default
This addresses the user's request to disable all 4 audio behaviors by default
(play remote sound, hear remote mic, voice call, capture host audio), all of
which share the single 'enable-audio' option.
- BUILD.md: complete build instructions for macOS desktop (Xcode 26.5,
Flutter 3.44, Dart 3.12, VCPKG, all patches explained)
- res/post-build-mac.sh: re-sign + install to /Applications + create dmg,
run after every 'flutter build macos --release'
Key issues documented in BUILD.md:
* Re-signing is mandatory (codesign --force --deep -s -)
* Use hdiutil for dmg, not create-dmg (macos-alias is x86_64 broken)
* libclang must be arm64 (use Xcode CLT, not homebrew llvm)
* EXCLUDED_ARCHS=x86_64 for arm64-only Rust dylib