Skip to content

CppDesk 3.5.3

Choose a tag to compare

@oocsng oocsng released this 14 Oct 14:49
· 45 commits to main since this release

Downloads

  • Windows (x64): Download CppDesk.exe (standalone portable executable, no installation required).
  • macOS (Apple Silicon & Intel): Download CppDesk-v3.5.3-macos.tar.gz, extract, and run ./build.sh to build CppDesk.app and CppDesk-macos.tar.gz.

What's New in CppDesk 3.5.3

  • Full Audio Device Name Resolution: Bypassed the legacy 32-character WinMM szPname truncation limit using Windows CoreAudio WASAPI endpoint property resolution (PKEY_Device_FriendlyName). Audio devices now display full, untruncated names (e.g. "Microphone (High Definition Audio Device)" and "Speakers (High Definition Audio Device)").
  • Audio Device Selection Dropdowns: Replaced cycle buttons in Settings with interactive combobox dropdowns for both microphone input and speaker output devices. Features floating acrylic cards with smooth spring transitions, selection checkmarks, default indicators, and backdrop dismissal scrims.
  • Live Microphone Monitor & Logarithmic VU Meter: Added real-time microphone monitoring when viewing Settings > Audio & Voice. Normalizes raw voice signals through a calibrated -45 dBFS logarithmic curve with an interactive peak follower for accurate input level visualization.
  • Format Negotiation & Bluetooth Hands-Free Fallback: Added audio format candidate probing across 48 kHz mono, 48 kHz stereo (with software downmixing), 44.1 kHz mono/stereo, and 16 kHz (Bluetooth Hands-Free Profile AG mode) with automatic fallback to WAVE_MAPPER.
  • Fullscreen Top Navigation Parity: Integrated the Task Manager button ("Task Mgr") into the Dynamic Island floating toolbar in fullscreen mode, matching windowed session bar functionality.
  • Hard Disconnect Teardown: Updated session disconnection routines on both client and host to perform abortive TCP resets (shutdown(SD_BOTH), SO_LINGER {1, 0}, closesocket), join worker threads under mutex locks, clear target Desk IDs, and wipe stale framebuffers.
  • Session Background Refresh: Returning to the session tab or refocusing the window triggers markViewerCanvasFullDirty() and resets displayedFrameSeq_ = 0, eliminating canvas freezing when switching between tabs or applications.
  • UI Copy Correction: Updated the update button text in Settings > About to "Check for updates".