voice-vibecoder 2.28.3__tar.gz → 2.29.0__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.28.3 → voice_vibecoder-2.29.0}/CHANGELOG.md +8 -0
- {voice_vibecoder-2.28.3 → voice_vibecoder-2.29.0}/PKG-INFO +1 -1
- {voice_vibecoder-2.28.3 → voice_vibecoder-2.29.0}/pyproject.toml +1 -1
- {voice_vibecoder-2.28.3 → voice_vibecoder-2.29.0}/src/voice_vibecoder/__init__.py +1 -1
- {voice_vibecoder-2.28.3 → voice_vibecoder-2.29.0}/src/voice_vibecoder/server.py +3 -0
- {voice_vibecoder-2.28.3 → voice_vibecoder-2.29.0}/.github/workflows/ci.yml +0 -0
- {voice_vibecoder-2.28.3 → voice_vibecoder-2.29.0}/.github/workflows/release.yml +0 -0
- {voice_vibecoder-2.28.3 → voice_vibecoder-2.29.0}/.gitignore +0 -0
- {voice_vibecoder-2.28.3 → voice_vibecoder-2.29.0}/CLAUDE.md +0 -0
- {voice_vibecoder-2.28.3 → voice_vibecoder-2.29.0}/LICENSE +0 -0
- {voice_vibecoder-2.28.3 → voice_vibecoder-2.29.0}/README.md +0 -0
- {voice_vibecoder-2.28.3 → voice_vibecoder-2.29.0}/app.py +0 -0
- {voice_vibecoder-2.28.3 → voice_vibecoder-2.29.0}/src/voice_vibecoder/app_config.py +0 -0
- {voice_vibecoder-2.28.3 → voice_vibecoder-2.29.0}/src/voice_vibecoder/audio.py +0 -0
- {voice_vibecoder-2.28.3 → voice_vibecoder-2.29.0}/src/voice_vibecoder/audio_macos.py +0 -0
- {voice_vibecoder-2.28.3 → voice_vibecoder-2.29.0}/src/voice_vibecoder/cli_serve.py +0 -0
- {voice_vibecoder-2.28.3 → voice_vibecoder-2.29.0}/src/voice_vibecoder/code_providers/__init__.py +0 -0
- {voice_vibecoder-2.28.3 → voice_vibecoder-2.29.0}/src/voice_vibecoder/code_providers/claude.py +0 -0
- {voice_vibecoder-2.28.3 → voice_vibecoder-2.29.0}/src/voice_vibecoder/code_providers/cursor.py +0 -0
- {voice_vibecoder-2.28.3 → voice_vibecoder-2.29.0}/src/voice_vibecoder/code_providers/openclaw.py +0 -0
- {voice_vibecoder-2.28.3 → voice_vibecoder-2.29.0}/src/voice_vibecoder/code_providers/registry.py +0 -0
- {voice_vibecoder-2.28.3 → voice_vibecoder-2.29.0}/src/voice_vibecoder/config.py +0 -0
- {voice_vibecoder-2.28.3 → voice_vibecoder-2.29.0}/src/voice_vibecoder/instances.py +0 -0
- {voice_vibecoder-2.28.3 → voice_vibecoder-2.29.0}/src/voice_vibecoder/session.py +0 -0
- {voice_vibecoder-2.28.3 → voice_vibecoder-2.29.0}/src/voice_vibecoder/tools/__init__.py +0 -0
- {voice_vibecoder-2.28.3 → voice_vibecoder-2.29.0}/src/voice_vibecoder/tools/agent_task.py +0 -0
- {voice_vibecoder-2.28.3 → voice_vibecoder-2.29.0}/src/voice_vibecoder/tools/definitions.py +0 -0
- {voice_vibecoder-2.28.3 → voice_vibecoder-2.29.0}/src/voice_vibecoder/tools/dispatch.py +0 -0
- {voice_vibecoder-2.28.3 → voice_vibecoder-2.29.0}/src/voice_vibecoder/tools/file_tree.py +0 -0
- {voice_vibecoder-2.28.3 → voice_vibecoder-2.29.0}/src/voice_vibecoder/tools/handlers.py +0 -0
- {voice_vibecoder-2.28.3 → voice_vibecoder-2.29.0}/src/voice_vibecoder/ui/__init__.py +0 -0
- {voice_vibecoder-2.28.3 → voice_vibecoder-2.29.0}/src/voice_vibecoder/ui/callbacks.py +0 -0
- {voice_vibecoder-2.28.3 → voice_vibecoder-2.29.0}/src/voice_vibecoder/ui/diff_view.py +0 -0
- {voice_vibecoder-2.28.3 → voice_vibecoder-2.29.0}/src/voice_vibecoder/ui/help_modal.py +0 -0
- {voice_vibecoder-2.28.3 → voice_vibecoder-2.29.0}/src/voice_vibecoder/ui/panels.py +0 -0
- {voice_vibecoder-2.28.3 → voice_vibecoder-2.29.0}/src/voice_vibecoder/ui/screen.py +0 -0
- {voice_vibecoder-2.28.3 → voice_vibecoder-2.29.0}/src/voice_vibecoder/ui/setup.py +0 -0
- {voice_vibecoder-2.28.3 → voice_vibecoder-2.29.0}/src/voice_vibecoder/ui/state.py +0 -0
- {voice_vibecoder-2.28.3 → voice_vibecoder-2.29.0}/src/voice_vibecoder/ui/styles.py +0 -0
- {voice_vibecoder-2.28.3 → voice_vibecoder-2.29.0}/src/voice_vibecoder/ui/update_modal.py +0 -0
- {voice_vibecoder-2.28.3 → voice_vibecoder-2.29.0}/src/voice_vibecoder/ui/wizard.py +0 -0
- {voice_vibecoder-2.28.3 → voice_vibecoder-2.29.0}/src/voice_vibecoder/voice_providers/__init__.py +0 -0
- {voice_vibecoder-2.28.3 → voice_vibecoder-2.29.0}/src/voice_vibecoder/voice_providers/gemini.py +0 -0
- {voice_vibecoder-2.28.3 → voice_vibecoder-2.29.0}/src/voice_vibecoder/voice_providers/openai.py +0 -0
- {voice_vibecoder-2.28.3 → voice_vibecoder-2.29.0}/src/voice_vibecoder/worktrees.py +0 -0
- {voice_vibecoder-2.28.3 → voice_vibecoder-2.29.0}/tests/test_audio_gating.py +0 -0
- {voice_vibecoder-2.28.3 → voice_vibecoder-2.29.0}/tests/test_file_tree.py +0 -0
- {voice_vibecoder-2.28.3 → voice_vibecoder-2.29.0}/tests/test_merge_branch.py +0 -0
- {voice_vibecoder-2.28.3 → voice_vibecoder-2.29.0}/tests/test_openai_events.py +0 -0
- {voice_vibecoder-2.28.3 → voice_vibecoder-2.29.0}/tests/test_session_interrupts.py +0 -0
- {voice_vibecoder-2.28.3 → voice_vibecoder-2.29.0}/tests/test_startup_context.py +0 -0
|
@@ -2,6 +2,14 @@
|
|
|
2
2
|
|
|
3
3
|
<!-- version list -->
|
|
4
4
|
|
|
5
|
+
## v2.29.0 (2026-07-22)
|
|
6
|
+
|
|
7
|
+
### Features
|
|
8
|
+
|
|
9
|
+
- Include worktree directory name in instance_status
|
|
10
|
+
([`7b289ff`](https://github.com/snokam/voice-vibecoder/commit/7b289ffdff8f527bb5a97200edf94e146060edc1))
|
|
11
|
+
|
|
12
|
+
|
|
5
13
|
## v2.28.3 (2026-07-22)
|
|
6
14
|
|
|
7
15
|
### Bug Fixes
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: voice-vibecoder
|
|
3
|
-
Version: 2.
|
|
3
|
+
Version: 2.29.0
|
|
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.
|
|
7
|
+
version = "2.29.0"
|
|
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"
|
|
@@ -247,6 +247,7 @@ class WebSocketBridge:
|
|
|
247
247
|
"branch": inst.branch,
|
|
248
248
|
"agentType": inst.agent_type,
|
|
249
249
|
"displayName": inst.display_key,
|
|
250
|
+
"worktree": Path(inst.worktree_path).name if inst.worktree_path else "",
|
|
250
251
|
})
|
|
251
252
|
# Send buffered output from previous session
|
|
252
253
|
if inst.output_buffer:
|
|
@@ -342,6 +343,7 @@ class WebSocketBridge:
|
|
|
342
343
|
branch = inst.branch if inst else ""
|
|
343
344
|
agent_type = inst.agent_type if inst else "claude"
|
|
344
345
|
display_name = inst.display_key if inst else branch
|
|
346
|
+
worktree = Path(inst.worktree_path).name if inst and inst.worktree_path else ""
|
|
345
347
|
self._send({
|
|
346
348
|
"type": "instance_status",
|
|
347
349
|
"instanceId": instance_id,
|
|
@@ -349,6 +351,7 @@ class WebSocketBridge:
|
|
|
349
351
|
"branch": branch,
|
|
350
352
|
"agentType": agent_type,
|
|
351
353
|
"displayName": display_name,
|
|
354
|
+
"worktree": worktree,
|
|
352
355
|
})
|
|
353
356
|
|
|
354
357
|
def _on_tool_call(self, name: str, arguments: dict) -> None:
|
|
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.28.3 → voice_vibecoder-2.29.0}/src/voice_vibecoder/code_providers/__init__.py
RENAMED
|
File without changes
|
{voice_vibecoder-2.28.3 → voice_vibecoder-2.29.0}/src/voice_vibecoder/code_providers/claude.py
RENAMED
|
File without changes
|
{voice_vibecoder-2.28.3 → voice_vibecoder-2.29.0}/src/voice_vibecoder/code_providers/cursor.py
RENAMED
|
File without changes
|
{voice_vibecoder-2.28.3 → voice_vibecoder-2.29.0}/src/voice_vibecoder/code_providers/openclaw.py
RENAMED
|
File without changes
|
{voice_vibecoder-2.28.3 → voice_vibecoder-2.29.0}/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
|
{voice_vibecoder-2.28.3 → voice_vibecoder-2.29.0}/src/voice_vibecoder/voice_providers/__init__.py
RENAMED
|
File without changes
|
{voice_vibecoder-2.28.3 → voice_vibecoder-2.29.0}/src/voice_vibecoder/voice_providers/gemini.py
RENAMED
|
File without changes
|
{voice_vibecoder-2.28.3 → voice_vibecoder-2.29.0}/src/voice_vibecoder/voice_providers/openai.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
|