v0.4.0
Added — Voice pipeline
- Bidirectional voice pipeline — full duplex audio (capture → STT → agent_loop → TTS → playback) with WebRTC echo cancellation
- MCP shim — bridges mod3 tools through cogos kernel as MCP tool surface
- Bus-mediated dashboard chat — dashboard chat goes through cogos kernel buses instead of in-process loop, so external observers see the same conversation events
Added — Bargein provider registry
- Pluggable
BargeinProviderinterface (bargein/providers/base.py) — was a hardcoded SuperWhisper file watcher; now extensible SuperWhisperProvider(bargein/providers/superwhisper.py) — first provider, opt-in viaMOD3_BARGEIN_PROVIDERS=superwhisper. Absorbs the SuperWhisper SQLite + filesystem detection logic that was previously drifting in a sibling repoBargeinRegistry(bargein/__init__.py) — registry + sharedhandle_bargein_start()helper, used by both legacy file watcher and provider dispatchBargeinRegistry.wait_for_event()— synchronous wait primitive used byawait_voice_input()to block on in-process registry events- New
"superwhisper"value inBargeinSourceliteral
Added — From earlier work, never released
- Queue-aware
speak()returns with enriched metadata (PR #4) SpeechQueuefor serial playback (thread-safe)- User-state detection (held status when user is recording)
/v1/stopHTTP endpoint for playback controlvad_checkMCP tool
Changed
- Default
MOD3_BARGEIN_PROVIDERS=(empty) preserves current behavior — no providers auto-start await_voice_input()now waits on bothBargeinRegistryevents AND legacy/tmp/mod3-barge-in.jsonfor backward compat
Fixed
- Speaking lock ownership —
(pid, job_id)-aware with idempotent re-acquire. Two overlapping mod3 processes can no longer falsely interrupt each other. - Bus subscriber endpoint —
KernelBusSubscriberhonorsCOGOS_ENDPOINTat call time (previously hardcodedlocalhost:6931) - Session-scoped reply routing — kernel replies with
session_idget routed to the matching browser channel; older payloads fall back to broadcast - Signal path unification —
mcp_shim.pyreads from/tmp/mod3-barge-in.json(was orphan~/.mod3_bargein_signal.jsonthat nobody wrote to) - Held job zombie drain bug
- Pyright type errors in Gate abstract class
- Various ruff lint issues
Reviewed by
- claude-opus-4-7 (interactive)
- gpt-5.4 (peer review, 3 passes)
Notes on versioning
This release jumps from v0.1.0 to v0.4.0. An earlier v0.2.0 tag exists from before the cogos-dev org transition (no GitHub release was created). v0.3.0 was bumped in pyproject.toml and added to the CHANGELOG but never tagged. v0.4.0 captures everything since the last released version (v0.1.0).