You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Windows 10/11 support (code-complete, awaiting hardware reports).
Windows uses the official Quectel driver's native COM port — no USB bridge
needed. Ships with automatic port detection (MODEM_PORT=auto scans for the
Quectel vendor ID), a PortAudio/WASAPI audio path, a scheduled-task
installer (scripts/windows/install.ps1), and CallPilot.exe packaging.
OpenAI Realtime provider — new in this release: use OpenAI's realtime
speech-to-speech API as the AI brain, alongside Alibaba Qwen Omni (default)
and ByteDance Doubao.
Three-platform CI: every change now runs the full zero-hardware test
suite on Ubuntu, macOS, and Windows.
Language menu: UI language switching moved to a globe-icon dropdown,
making room for more languages beyond English and Chinese.
Fixed
Five P0 correctness bugs caught in a three-way code review, including:
dashboard occasionally missing live events (broadcast tasks could be
garbage-collected mid-flight), a hangup race with call-status polling, a
delayed hangup scheduled during one call cutting off the next call (calls
now carry a generation number), and RECORDING_ENABLED=on being interpreted
differently in two places.
Zombie sessions: if the modem's serial link dies mid-call, the session
now ends itself within seconds instead of rejecting all new calls until a
manual hangup.
launchd PATH: the launchd units now set PATH explicitly, so ffmpeg
is found and call audio works when CallPilot starts at login.
Dial input validation: invalid phone numbers are rejected up front
instead of tying up the session for a 45-second timeout, and dialing with no
modem connected reports a clear error instead of pretending a call was
placed.
Changed
Call-session core refactored for contributors: prompt building and
in-call AI tools split into their own modules, outbound call tasks passed
explicitly instead of through the environment (batch dialing no longer
rewrites .env on every call), and web API error handling unified. No
intended behavior changes, backed by the full offline test suite.
Configuration consolidated into a single registry: every setting's
default value lives in one place, .env.example documents all editable
settings, and a regression test keeps the two from drifting apart.
Platform differences centralized in one module — per-OS defaults and
paths are no longer scattered through the code.
macOS app is now a menu-bar tray (phone-handset icon — green when the
service is running, grey when stopped — with an open-console / restart-service
/ quit menu) instead of a standalone desktop window.
Outbound wind-down polish: on reaching the goal, the AI now speaks a full
goodbye before it invokes hang-up, and stays silent during the hang-up delay
(no stray "call ended" line played to the other side).