Release 1.0.0a8 - #41
Open
github-actions[bot] wants to merge 41 commits into
Open
Conversation
AI-Generated Change: - Model: claude-sonnet-4-6 - Intent: Replace setup.py with PEP 621 pyproject.toml; add version.py for dynamic version via attr: - Impact: Package installs via modern toolchain; setup.py removed - Verified via: pip install -e . && pip show baresipy
AI-Generated Change: - Model: claude-haiku-4-5 - Intent: Add standard CI/CD workflows via shared-gh-workflows skill - Impact: Added workflow files for build, test, lint, release automation - Verified via: apply_workflows.py metadata detection
- fix readme filename mismatch (readme.md -> README.md) - point Homepage at TigreGotico/baresipy - declare json_database dependency and a test extra - require python >=3.10 to match the CI matrix - drop legacy hand-rolled workflows superseded by gh-automations - drop lichecker license test superseded by the license_check workflow - fix example control flow and note the pyjokes example dependency Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
audioop-lts backfills the audioop module pydub needs on python >= 3.13 Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
chore: packaging & repo hygiene
…ess calls BREAKING CHANGE: ResponsiveVoice is removed. The `tts` kwarg now expects an object exposing the OVOS TTS plugin interface (get_tts(sentence, wav_file)). A default engine can be resolved lazily via the optional `ovos` extra (ovos-plugin-manager + ovos-tts-plugin-phoonnx). - extract per-line parsing out of run() into _handle_output_line() - add type hints across the public API; make quit() idempotent and tolerant of an already-dead baresip process - add autostart kwarg to defer Thread.start(); block semantics now live in an overridden start() - add login_options kwarg to extend the SIP login string - support registrar-less mode: user/pwd/gateway all optional, call() accepts full sip: URIs or expands number+gateway - add headless mode (config.render_config) so baresip can run without any sound hardware (fixes #16, #17); store the configured ausrc so send_audio() stops hardcoding alsa,default - harden contacts import/export against a missing contacts file (#2) - convert_audio() gains frame_rate/channels/min_duration_s kwargs (#18) - fix ruff re-export warning in baresipy/utils Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
baresip 3.x logs DTMF as 'received SIP INFO DTMF' (SIP INFO) or 'received in-band DTMF event' (RTP telephone-event), and interpolates the errno text into the audio-source failure message Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
feat!: pluggable TTS, headless mode, registrar-less calls
Covers _handle_output_line() line parsing (ready/login/call states/DTMF/ errors), render_config() headless vs alsa, ContactList CRUD, convert_audio() resampling, and get_default_tts()/speak() fallback behaviour, all without spawning a real baresip process or touching ~/.baresipy or ~/.baresip. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
test: functional unit suite for state machine, config, contacts, audio and tts
the automated version bump appended a VERSION_BLOCK because the file predated the expected format, corrupting it and regressing the computed version to 0.0.1; the version is set to 1.0.0a2 reflecting the major bump from the breaking TTS change plus the merges since 0.1.5 Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
fix: restore canonical version block format
Adds baresip sndfile-based rx call recording (record_rx/recording_path on BareSIP, get_rx_wav/get_rx_stream), a WavTailReader + pure-stdlib PCM resampler in baresipy/audio.py, an OVOS Microphone plugin (baresipy.ovos.BareSIPMicrophone, lazy-imported behind the ovos extra), and a registrar-capable voice_bot.py example wiring it into ovos-simple-listener. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
feat: inbound call audio capture and OVOS microphone integration
Add a Dockerfile (python:3.12-slim + apt baresip/ffmpeg, optional INSTALL_EXTRAS build-arg) and a docker-compose.e2e.yml running two registrar-less headless BareSIP instances (callee/caller) that call each other directly over a compose network, exchange DTMF and a generated sine-wave wav, and write results to a shared bind-mounted volume. test/e2e/test_call.py drives `docker compose ... up` and asserts the call actually establishes and the callee's rx capture is non-silent, exercising baresipy's real stdout parser against an actual baresip binary. Marked `e2e` and excluded from the default run via addopts in pyproject.toml. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
registrar-less mode now creates a local non-registering user agent (;regint=0) so direct sip: URI calls actually work; send_dtmf gained a 'keys' mode that emits real RFC 4733 telephone-events; the run loop survives the pty closing mid-read Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
feat: docker image, GHCR publishing and live e2e call test rig
Cover system dependency install, SIP account setup, direct/registrar-less calling, configuration reference, OVOS voice-bot integration, docker usage, and testing, and refresh AGENTS.md with the current module layout. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
docs: full setup documentation
resolves the baresip executable via the optional baresip-binary package first, then falls back to the system binary on PATH Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
feat: prefer the baresip-binary bundled executable when installed
Expose a BareSIP phone over HTTP + WebSocket (baresipy-gateway console script) so calls, TTS, DTMF, and caller audio can be driven from any process, not just embedded python. fastapi/uvicorn/python-multipart are only required by the new server extra; base install is unaffected. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
feat: HTTP/WebSocket gateway (baresipy.server)
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Human review requested!