voice-vibecoder 2.10.1__tar.gz → 2.10.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.10.1 → voice_vibecoder-2.10.2}/CHANGELOG.md +8 -0
- {voice_vibecoder-2.10.1 → voice_vibecoder-2.10.2}/PKG-INFO +1 -1
- {voice_vibecoder-2.10.1 → voice_vibecoder-2.10.2}/pyproject.toml +1 -1
- {voice_vibecoder-2.10.1 → voice_vibecoder-2.10.2}/src/voice_vibecoder/__init__.py +1 -1
- {voice_vibecoder-2.10.1 → voice_vibecoder-2.10.2}/src/voice_vibecoder/code_providers/openclaw.py +7 -4
- {voice_vibecoder-2.10.1 → voice_vibecoder-2.10.2}/.github/workflows/ci.yml +0 -0
- {voice_vibecoder-2.10.1 → voice_vibecoder-2.10.2}/.github/workflows/release.yml +0 -0
- {voice_vibecoder-2.10.1 → voice_vibecoder-2.10.2}/.gitignore +0 -0
- {voice_vibecoder-2.10.1 → voice_vibecoder-2.10.2}/LICENSE +0 -0
- {voice_vibecoder-2.10.1 → voice_vibecoder-2.10.2}/README.md +0 -0
- {voice_vibecoder-2.10.1 → voice_vibecoder-2.10.2}/app.py +0 -0
- {voice_vibecoder-2.10.1 → voice_vibecoder-2.10.2}/index.html +0 -0
- {voice_vibecoder-2.10.1 → voice_vibecoder-2.10.2}/src/voice_vibecoder/app_config.py +0 -0
- {voice_vibecoder-2.10.1 → voice_vibecoder-2.10.2}/src/voice_vibecoder/audio.py +0 -0
- {voice_vibecoder-2.10.1 → voice_vibecoder-2.10.2}/src/voice_vibecoder/cli_serve.py +0 -0
- {voice_vibecoder-2.10.1 → voice_vibecoder-2.10.2}/src/voice_vibecoder/code_providers/__init__.py +0 -0
- {voice_vibecoder-2.10.1 → voice_vibecoder-2.10.2}/src/voice_vibecoder/code_providers/claude.py +0 -0
- {voice_vibecoder-2.10.1 → voice_vibecoder-2.10.2}/src/voice_vibecoder/code_providers/cursor.py +0 -0
- {voice_vibecoder-2.10.1 → voice_vibecoder-2.10.2}/src/voice_vibecoder/code_providers/registry.py +0 -0
- {voice_vibecoder-2.10.1 → voice_vibecoder-2.10.2}/src/voice_vibecoder/config.py +0 -0
- {voice_vibecoder-2.10.1 → voice_vibecoder-2.10.2}/src/voice_vibecoder/instances.py +0 -0
- {voice_vibecoder-2.10.1 → voice_vibecoder-2.10.2}/src/voice_vibecoder/server.py +0 -0
- {voice_vibecoder-2.10.1 → voice_vibecoder-2.10.2}/src/voice_vibecoder/session.py +0 -0
- {voice_vibecoder-2.10.1 → voice_vibecoder-2.10.2}/src/voice_vibecoder/tools/__init__.py +0 -0
- {voice_vibecoder-2.10.1 → voice_vibecoder-2.10.2}/src/voice_vibecoder/tools/agent_task.py +0 -0
- {voice_vibecoder-2.10.1 → voice_vibecoder-2.10.2}/src/voice_vibecoder/tools/definitions.py +0 -0
- {voice_vibecoder-2.10.1 → voice_vibecoder-2.10.2}/src/voice_vibecoder/tools/dispatch.py +0 -0
- {voice_vibecoder-2.10.1 → voice_vibecoder-2.10.2}/src/voice_vibecoder/tools/file_tree.py +0 -0
- {voice_vibecoder-2.10.1 → voice_vibecoder-2.10.2}/src/voice_vibecoder/tools/handlers.py +0 -0
- {voice_vibecoder-2.10.1 → voice_vibecoder-2.10.2}/src/voice_vibecoder/ui/__init__.py +0 -0
- {voice_vibecoder-2.10.1 → voice_vibecoder-2.10.2}/src/voice_vibecoder/ui/callbacks.py +0 -0
- {voice_vibecoder-2.10.1 → voice_vibecoder-2.10.2}/src/voice_vibecoder/ui/diff_view.py +0 -0
- {voice_vibecoder-2.10.1 → voice_vibecoder-2.10.2}/src/voice_vibecoder/ui/help_modal.py +0 -0
- {voice_vibecoder-2.10.1 → voice_vibecoder-2.10.2}/src/voice_vibecoder/ui/panels.py +0 -0
- {voice_vibecoder-2.10.1 → voice_vibecoder-2.10.2}/src/voice_vibecoder/ui/screen.py +0 -0
- {voice_vibecoder-2.10.1 → voice_vibecoder-2.10.2}/src/voice_vibecoder/ui/setup.py +0 -0
- {voice_vibecoder-2.10.1 → voice_vibecoder-2.10.2}/src/voice_vibecoder/ui/state.py +0 -0
- {voice_vibecoder-2.10.1 → voice_vibecoder-2.10.2}/src/voice_vibecoder/ui/styles.py +0 -0
- {voice_vibecoder-2.10.1 → voice_vibecoder-2.10.2}/src/voice_vibecoder/ui/update_modal.py +0 -0
- {voice_vibecoder-2.10.1 → voice_vibecoder-2.10.2}/src/voice_vibecoder/ui/wizard.py +0 -0
- {voice_vibecoder-2.10.1 → voice_vibecoder-2.10.2}/src/voice_vibecoder/voice_providers/__init__.py +0 -0
- {voice_vibecoder-2.10.1 → voice_vibecoder-2.10.2}/src/voice_vibecoder/voice_providers/openai.py +0 -0
- {voice_vibecoder-2.10.1 → voice_vibecoder-2.10.2}/src/voice_vibecoder/worktrees.py +0 -0
|
@@ -2,6 +2,14 @@
|
|
|
2
2
|
|
|
3
3
|
<!-- version list -->
|
|
4
4
|
|
|
5
|
+
## v2.10.2 (2026-02-21)
|
|
6
|
+
|
|
7
|
+
### Bug Fixes
|
|
8
|
+
|
|
9
|
+
- Improve text buffering - flush on newlines not punctuation
|
|
10
|
+
([`b1f13bf`](https://github.com/snokam/voice-vibecoder/commit/b1f13bf68ccfa60b591f4e9e21d74c777c4f6957))
|
|
11
|
+
|
|
12
|
+
|
|
5
13
|
## v2.10.1 (2026-02-21)
|
|
6
14
|
|
|
7
15
|
### Bug Fixes
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: voice-vibecoder
|
|
3
|
-
Version: 2.10.
|
|
3
|
+
Version: 2.10.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.10.
|
|
7
|
+
version = "2.10.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"
|
{voice_vibecoder-2.10.1 → voice_vibecoder-2.10.2}/src/voice_vibecoder/code_providers/openclaw.py
RENAMED
|
@@ -272,12 +272,15 @@ class OpenClawRunner:
|
|
|
272
272
|
last_text = text
|
|
273
273
|
result_text = text
|
|
274
274
|
|
|
275
|
-
# Flush on
|
|
275
|
+
# Flush on newlines or when buffer is large enough
|
|
276
276
|
now = time.time()
|
|
277
|
+
# Only flush on actual line breaks or large buffers
|
|
278
|
+
# Avoid flushing on . ! ? as they appear mid-text
|
|
277
279
|
should_flush = (
|
|
278
|
-
|
|
279
|
-
or
|
|
280
|
-
or (
|
|
280
|
+
"\n" in delta
|
|
281
|
+
or delta.endswith("|") # Table row end
|
|
282
|
+
or len(text_buffer) > 120
|
|
283
|
+
or (now - last_flush_time) > 1.0
|
|
281
284
|
)
|
|
282
285
|
if should_flush:
|
|
283
286
|
await flush_buffer()
|
|
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.10.1 → voice_vibecoder-2.10.2}/src/voice_vibecoder/code_providers/__init__.py
RENAMED
|
File without changes
|
{voice_vibecoder-2.10.1 → voice_vibecoder-2.10.2}/src/voice_vibecoder/code_providers/claude.py
RENAMED
|
File without changes
|
{voice_vibecoder-2.10.1 → voice_vibecoder-2.10.2}/src/voice_vibecoder/code_providers/cursor.py
RENAMED
|
File without changes
|
{voice_vibecoder-2.10.1 → voice_vibecoder-2.10.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
|
|
File without changes
|
|
File without changes
|
{voice_vibecoder-2.10.1 → voice_vibecoder-2.10.2}/src/voice_vibecoder/voice_providers/__init__.py
RENAMED
|
File without changes
|
{voice_vibecoder-2.10.1 → voice_vibecoder-2.10.2}/src/voice_vibecoder/voice_providers/openai.py
RENAMED
|
File without changes
|
|
File without changes
|