voice-vibecoder 2.20.1__tar.gz → 2.20.2__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {voice_vibecoder-2.20.1 → voice_vibecoder-2.20.2}/CHANGELOG.md +8 -0
- {voice_vibecoder-2.20.1 → voice_vibecoder-2.20.2}/PKG-INFO +1 -1
- {voice_vibecoder-2.20.1 → voice_vibecoder-2.20.2}/pyproject.toml +1 -1
- {voice_vibecoder-2.20.1 → voice_vibecoder-2.20.2}/src/voice_vibecoder/__init__.py +1 -1
- {voice_vibecoder-2.20.1 → voice_vibecoder-2.20.2}/src/voice_vibecoder/server.py +1 -0
- {voice_vibecoder-2.20.1 → voice_vibecoder-2.20.2}/src/voice_vibecoder/session.py +1 -0
- {voice_vibecoder-2.20.1 → voice_vibecoder-2.20.2}/.github/workflows/ci.yml +0 -0
- {voice_vibecoder-2.20.1 → voice_vibecoder-2.20.2}/.github/workflows/release.yml +0 -0
- {voice_vibecoder-2.20.1 → voice_vibecoder-2.20.2}/.gitignore +0 -0
- {voice_vibecoder-2.20.1 → voice_vibecoder-2.20.2}/LICENSE +0 -0
- {voice_vibecoder-2.20.1 → voice_vibecoder-2.20.2}/README.md +0 -0
- {voice_vibecoder-2.20.1 → voice_vibecoder-2.20.2}/app.py +0 -0
- {voice_vibecoder-2.20.1 → voice_vibecoder-2.20.2}/index.html +0 -0
- {voice_vibecoder-2.20.1 → voice_vibecoder-2.20.2}/src/voice_vibecoder/app_config.py +0 -0
- {voice_vibecoder-2.20.1 → voice_vibecoder-2.20.2}/src/voice_vibecoder/audio.py +0 -0
- {voice_vibecoder-2.20.1 → voice_vibecoder-2.20.2}/src/voice_vibecoder/cli_serve.py +0 -0
- {voice_vibecoder-2.20.1 → voice_vibecoder-2.20.2}/src/voice_vibecoder/code_providers/__init__.py +0 -0
- {voice_vibecoder-2.20.1 → voice_vibecoder-2.20.2}/src/voice_vibecoder/code_providers/claude.py +0 -0
- {voice_vibecoder-2.20.1 → voice_vibecoder-2.20.2}/src/voice_vibecoder/code_providers/cursor.py +0 -0
- {voice_vibecoder-2.20.1 → voice_vibecoder-2.20.2}/src/voice_vibecoder/code_providers/openclaw.py +0 -0
- {voice_vibecoder-2.20.1 → voice_vibecoder-2.20.2}/src/voice_vibecoder/code_providers/registry.py +0 -0
- {voice_vibecoder-2.20.1 → voice_vibecoder-2.20.2}/src/voice_vibecoder/config.py +0 -0
- {voice_vibecoder-2.20.1 → voice_vibecoder-2.20.2}/src/voice_vibecoder/instances.py +0 -0
- {voice_vibecoder-2.20.1 → voice_vibecoder-2.20.2}/src/voice_vibecoder/tools/__init__.py +0 -0
- {voice_vibecoder-2.20.1 → voice_vibecoder-2.20.2}/src/voice_vibecoder/tools/agent_task.py +0 -0
- {voice_vibecoder-2.20.1 → voice_vibecoder-2.20.2}/src/voice_vibecoder/tools/definitions.py +0 -0
- {voice_vibecoder-2.20.1 → voice_vibecoder-2.20.2}/src/voice_vibecoder/tools/dispatch.py +0 -0
- {voice_vibecoder-2.20.1 → voice_vibecoder-2.20.2}/src/voice_vibecoder/tools/file_tree.py +0 -0
- {voice_vibecoder-2.20.1 → voice_vibecoder-2.20.2}/src/voice_vibecoder/tools/handlers.py +0 -0
- {voice_vibecoder-2.20.1 → voice_vibecoder-2.20.2}/src/voice_vibecoder/ui/__init__.py +0 -0
- {voice_vibecoder-2.20.1 → voice_vibecoder-2.20.2}/src/voice_vibecoder/ui/callbacks.py +0 -0
- {voice_vibecoder-2.20.1 → voice_vibecoder-2.20.2}/src/voice_vibecoder/ui/diff_view.py +0 -0
- {voice_vibecoder-2.20.1 → voice_vibecoder-2.20.2}/src/voice_vibecoder/ui/help_modal.py +0 -0
- {voice_vibecoder-2.20.1 → voice_vibecoder-2.20.2}/src/voice_vibecoder/ui/panels.py +0 -0
- {voice_vibecoder-2.20.1 → voice_vibecoder-2.20.2}/src/voice_vibecoder/ui/screen.py +0 -0
- {voice_vibecoder-2.20.1 → voice_vibecoder-2.20.2}/src/voice_vibecoder/ui/setup.py +0 -0
- {voice_vibecoder-2.20.1 → voice_vibecoder-2.20.2}/src/voice_vibecoder/ui/state.py +0 -0
- {voice_vibecoder-2.20.1 → voice_vibecoder-2.20.2}/src/voice_vibecoder/ui/styles.py +0 -0
- {voice_vibecoder-2.20.1 → voice_vibecoder-2.20.2}/src/voice_vibecoder/ui/update_modal.py +0 -0
- {voice_vibecoder-2.20.1 → voice_vibecoder-2.20.2}/src/voice_vibecoder/ui/wizard.py +0 -0
- {voice_vibecoder-2.20.1 → voice_vibecoder-2.20.2}/src/voice_vibecoder/voice_providers/__init__.py +0 -0
- {voice_vibecoder-2.20.1 → voice_vibecoder-2.20.2}/src/voice_vibecoder/voice_providers/gemini.py +0 -0
- {voice_vibecoder-2.20.1 → voice_vibecoder-2.20.2}/src/voice_vibecoder/voice_providers/openai.py +0 -0
- {voice_vibecoder-2.20.1 → voice_vibecoder-2.20.2}/src/voice_vibecoder/worktrees.py +0 -0
|
@@ -2,6 +2,14 @@
|
|
|
2
2
|
|
|
3
3
|
<!-- version list -->
|
|
4
4
|
|
|
5
|
+
## v2.20.2 (2026-02-23)
|
|
6
|
+
|
|
7
|
+
### Bug Fixes
|
|
8
|
+
|
|
9
|
+
- Persist text-only transcripts for sync_state replay
|
|
10
|
+
([`3327421`](https://github.com/snokam/voice-vibecoder/commit/33274215ff8ae19dcad43ecc631a127d57f27620))
|
|
11
|
+
|
|
12
|
+
|
|
5
13
|
## v2.20.1 (2026-02-23)
|
|
6
14
|
|
|
7
15
|
### Bug Fixes
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: voice-vibecoder
|
|
3
|
-
Version: 2.20.
|
|
3
|
+
Version: 2.20.2
|
|
4
4
|
Summary: Olaf The Vibecoder — a voice-controlled coding assistant using OpenAI Realtime API + Claude Code
|
|
5
5
|
Project-URL: Homepage, https://github.com/snokam/voice-vibecoder
|
|
6
6
|
Project-URL: Repository, https://github.com/snokam/voice-vibecoder
|
|
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "voice-vibecoder"
|
|
7
|
-
version = "2.20.
|
|
7
|
+
version = "2.20.2"
|
|
8
8
|
description = "Olaf The Vibecoder — a voice-controlled coding assistant using OpenAI Realtime API + Claude Code"
|
|
9
9
|
readme = "README.md"
|
|
10
10
|
requires-python = ">=3.10"
|
|
@@ -213,6 +213,7 @@ class WebSocketBridge:
|
|
|
213
213
|
from voice_vibecoder.tools.agent_task import _handle_send_to_session
|
|
214
214
|
|
|
215
215
|
self._session.text_only = True
|
|
216
|
+
self._session.registry.add_transcript("user", text)
|
|
216
217
|
self._send({"type": "transcript", "role": "user", "text": text})
|
|
217
218
|
_handle_send_to_session(text)
|
|
218
219
|
|
|
@@ -361,6 +361,7 @@ class RealtimeSession:
|
|
|
361
361
|
self._registry.on_output(instance_id, f"{prefix} {first_line}")
|
|
362
362
|
if self.text_only:
|
|
363
363
|
# Text-only mode: send result as transcript directly (no voice)
|
|
364
|
+
self._registry.add_transcript("assistant", result)
|
|
364
365
|
if self._on_transcript:
|
|
365
366
|
self._on_transcript("assistant", result)
|
|
366
367
|
return
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{voice_vibecoder-2.20.1 → voice_vibecoder-2.20.2}/src/voice_vibecoder/code_providers/__init__.py
RENAMED
|
File without changes
|
{voice_vibecoder-2.20.1 → voice_vibecoder-2.20.2}/src/voice_vibecoder/code_providers/claude.py
RENAMED
|
File without changes
|
{voice_vibecoder-2.20.1 → voice_vibecoder-2.20.2}/src/voice_vibecoder/code_providers/cursor.py
RENAMED
|
File without changes
|
{voice_vibecoder-2.20.1 → voice_vibecoder-2.20.2}/src/voice_vibecoder/code_providers/openclaw.py
RENAMED
|
File without changes
|
{voice_vibecoder-2.20.1 → voice_vibecoder-2.20.2}/src/voice_vibecoder/code_providers/registry.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{voice_vibecoder-2.20.1 → voice_vibecoder-2.20.2}/src/voice_vibecoder/voice_providers/__init__.py
RENAMED
|
File without changes
|
{voice_vibecoder-2.20.1 → voice_vibecoder-2.20.2}/src/voice_vibecoder/voice_providers/gemini.py
RENAMED
|
File without changes
|
{voice_vibecoder-2.20.1 → voice_vibecoder-2.20.2}/src/voice_vibecoder/voice_providers/openai.py
RENAMED
|
File without changes
|
|
File without changes
|