voice-vibecoder 2.12.0__tar.gz → 2.12.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.12.0 → voice_vibecoder-2.12.2}/CHANGELOG.md +21 -0
- {voice_vibecoder-2.12.0 → voice_vibecoder-2.12.2}/PKG-INFO +1 -1
- {voice_vibecoder-2.12.0 → voice_vibecoder-2.12.2}/pyproject.toml +1 -1
- {voice_vibecoder-2.12.0 → voice_vibecoder-2.12.2}/src/voice_vibecoder/__init__.py +1 -1
- {voice_vibecoder-2.12.0 → voice_vibecoder-2.12.2}/src/voice_vibecoder/code_providers/openclaw.py +7 -5
- {voice_vibecoder-2.12.0 → voice_vibecoder-2.12.2}/src/voice_vibecoder/tools/dispatch.py +4 -1
- {voice_vibecoder-2.12.0 → voice_vibecoder-2.12.2}/.github/workflows/ci.yml +0 -0
- {voice_vibecoder-2.12.0 → voice_vibecoder-2.12.2}/.github/workflows/release.yml +0 -0
- {voice_vibecoder-2.12.0 → voice_vibecoder-2.12.2}/.gitignore +0 -0
- {voice_vibecoder-2.12.0 → voice_vibecoder-2.12.2}/LICENSE +0 -0
- {voice_vibecoder-2.12.0 → voice_vibecoder-2.12.2}/README.md +0 -0
- {voice_vibecoder-2.12.0 → voice_vibecoder-2.12.2}/app.py +0 -0
- {voice_vibecoder-2.12.0 → voice_vibecoder-2.12.2}/index.html +0 -0
- {voice_vibecoder-2.12.0 → voice_vibecoder-2.12.2}/src/voice_vibecoder/app_config.py +0 -0
- {voice_vibecoder-2.12.0 → voice_vibecoder-2.12.2}/src/voice_vibecoder/audio.py +0 -0
- {voice_vibecoder-2.12.0 → voice_vibecoder-2.12.2}/src/voice_vibecoder/cli_serve.py +0 -0
- {voice_vibecoder-2.12.0 → voice_vibecoder-2.12.2}/src/voice_vibecoder/code_providers/__init__.py +0 -0
- {voice_vibecoder-2.12.0 → voice_vibecoder-2.12.2}/src/voice_vibecoder/code_providers/claude.py +0 -0
- {voice_vibecoder-2.12.0 → voice_vibecoder-2.12.2}/src/voice_vibecoder/code_providers/cursor.py +0 -0
- {voice_vibecoder-2.12.0 → voice_vibecoder-2.12.2}/src/voice_vibecoder/code_providers/registry.py +0 -0
- {voice_vibecoder-2.12.0 → voice_vibecoder-2.12.2}/src/voice_vibecoder/config.py +0 -0
- {voice_vibecoder-2.12.0 → voice_vibecoder-2.12.2}/src/voice_vibecoder/instances.py +0 -0
- {voice_vibecoder-2.12.0 → voice_vibecoder-2.12.2}/src/voice_vibecoder/server.py +0 -0
- {voice_vibecoder-2.12.0 → voice_vibecoder-2.12.2}/src/voice_vibecoder/session.py +0 -0
- {voice_vibecoder-2.12.0 → voice_vibecoder-2.12.2}/src/voice_vibecoder/tools/__init__.py +0 -0
- {voice_vibecoder-2.12.0 → voice_vibecoder-2.12.2}/src/voice_vibecoder/tools/agent_task.py +0 -0
- {voice_vibecoder-2.12.0 → voice_vibecoder-2.12.2}/src/voice_vibecoder/tools/definitions.py +0 -0
- {voice_vibecoder-2.12.0 → voice_vibecoder-2.12.2}/src/voice_vibecoder/tools/file_tree.py +0 -0
- {voice_vibecoder-2.12.0 → voice_vibecoder-2.12.2}/src/voice_vibecoder/tools/handlers.py +0 -0
- {voice_vibecoder-2.12.0 → voice_vibecoder-2.12.2}/src/voice_vibecoder/ui/__init__.py +0 -0
- {voice_vibecoder-2.12.0 → voice_vibecoder-2.12.2}/src/voice_vibecoder/ui/callbacks.py +0 -0
- {voice_vibecoder-2.12.0 → voice_vibecoder-2.12.2}/src/voice_vibecoder/ui/diff_view.py +0 -0
- {voice_vibecoder-2.12.0 → voice_vibecoder-2.12.2}/src/voice_vibecoder/ui/help_modal.py +0 -0
- {voice_vibecoder-2.12.0 → voice_vibecoder-2.12.2}/src/voice_vibecoder/ui/panels.py +0 -0
- {voice_vibecoder-2.12.0 → voice_vibecoder-2.12.2}/src/voice_vibecoder/ui/screen.py +0 -0
- {voice_vibecoder-2.12.0 → voice_vibecoder-2.12.2}/src/voice_vibecoder/ui/setup.py +0 -0
- {voice_vibecoder-2.12.0 → voice_vibecoder-2.12.2}/src/voice_vibecoder/ui/state.py +0 -0
- {voice_vibecoder-2.12.0 → voice_vibecoder-2.12.2}/src/voice_vibecoder/ui/styles.py +0 -0
- {voice_vibecoder-2.12.0 → voice_vibecoder-2.12.2}/src/voice_vibecoder/ui/update_modal.py +0 -0
- {voice_vibecoder-2.12.0 → voice_vibecoder-2.12.2}/src/voice_vibecoder/ui/wizard.py +0 -0
- {voice_vibecoder-2.12.0 → voice_vibecoder-2.12.2}/src/voice_vibecoder/voice_providers/__init__.py +0 -0
- {voice_vibecoder-2.12.0 → voice_vibecoder-2.12.2}/src/voice_vibecoder/voice_providers/openai.py +0 -0
- {voice_vibecoder-2.12.0 → voice_vibecoder-2.12.2}/src/voice_vibecoder/worktrees.py +0 -0
|
@@ -2,6 +2,27 @@
|
|
|
2
2
|
|
|
3
3
|
<!-- version list -->
|
|
4
4
|
|
|
5
|
+
## v2.12.2 (2026-02-21)
|
|
6
|
+
|
|
7
|
+
### Bug Fixes
|
|
8
|
+
|
|
9
|
+
- Include cwd in message to OpenClaw
|
|
10
|
+
([`b1674ce`](https://github.com/snokam/voice-vibecoder/commit/b1674ce4726dc1d9ab973c0554d9914b7b13f3c1))
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
## v2.12.1 (2026-02-21)
|
|
14
|
+
|
|
15
|
+
### Bug Fixes
|
|
16
|
+
|
|
17
|
+
- Syntax error in thinking indicator
|
|
18
|
+
([`68f2feb`](https://github.com/snokam/voice-vibecoder/commit/68f2feb3543e1eaef165e4b0bbe768cdae30d7cb))
|
|
19
|
+
|
|
20
|
+
### Chores
|
|
21
|
+
|
|
22
|
+
- Norwegian connection messages
|
|
23
|
+
([`8ca2795`](https://github.com/snokam/voice-vibecoder/commit/8ca2795a72532ec18ca80357811fe8e054091bb7))
|
|
24
|
+
|
|
25
|
+
|
|
5
26
|
## v2.12.0 (2026-02-21)
|
|
6
27
|
|
|
7
28
|
### Features
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: voice-vibecoder
|
|
3
|
-
Version: 2.12.
|
|
3
|
+
Version: 2.12.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.12.
|
|
7
|
+
version = "2.12.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.12.0 → voice_vibecoder-2.12.2}/src/voice_vibecoder/code_providers/openclaw.py
RENAMED
|
@@ -228,13 +228,16 @@ class OpenClawRunner:
|
|
|
228
228
|
req_id = str(uuid.uuid4())
|
|
229
229
|
idempotency_key = f"voice-{uuid.uuid4().hex[:16]}"
|
|
230
230
|
|
|
231
|
+
# Prepend working directory to message so agent knows where to work
|
|
232
|
+
full_message = f"[Working directory: {cwd}]\n\n{message}"
|
|
233
|
+
|
|
231
234
|
chat_req = {
|
|
232
235
|
"type": "req",
|
|
233
236
|
"id": req_id,
|
|
234
237
|
"method": "chat.send",
|
|
235
238
|
"params": {
|
|
236
239
|
"sessionKey": session_id,
|
|
237
|
-
"message":
|
|
240
|
+
"message": full_message,
|
|
238
241
|
"idempotencyKey": idempotency_key,
|
|
239
242
|
}
|
|
240
243
|
}
|
|
@@ -257,8 +260,7 @@ class OpenClawRunner:
|
|
|
257
260
|
if stream == "lifecycle":
|
|
258
261
|
phase = agent_data.get("phase")
|
|
259
262
|
if phase == "start" and on_output:
|
|
260
|
-
on_output(AgentOutput(category="text", content="🤔 Thinking
|
|
261
|
-
"))
|
|
263
|
+
on_output(AgentOutput(category="text", content="🤔 Thinking...\n"))
|
|
262
264
|
|
|
263
265
|
elif stream == "assistant" and "text" in agent_data:
|
|
264
266
|
text = agent_data["text"]
|
|
@@ -372,13 +374,13 @@ class OpenClawRunner:
|
|
|
372
374
|
effective_session = session_id or self._session_id
|
|
373
375
|
|
|
374
376
|
if on_output:
|
|
375
|
-
on_output(AgentOutput(category="text", content="🦞
|
|
377
|
+
on_output(AgentOutput(category="text", content="🦞 Kobler til...\n"))
|
|
376
378
|
|
|
377
379
|
ws = await self._connect_websocket()
|
|
378
380
|
if ws:
|
|
379
381
|
try:
|
|
380
382
|
if on_output:
|
|
381
|
-
on_output(AgentOutput(category="text", content="🦞
|
|
383
|
+
on_output(AgentOutput(category="text", content="🦞 Tilkoblet! Streamer...\n"))
|
|
382
384
|
result = await self._run_via_websocket(ws, message, cwd, effective_session, on_output)
|
|
383
385
|
if result:
|
|
384
386
|
return result
|
|
@@ -99,8 +99,11 @@ def configure(
|
|
|
99
99
|
def _default_agent_type() -> str:
|
|
100
100
|
"""Return the default agent type from config, or first enabled agent."""
|
|
101
101
|
if _voice_config and _voice_config.default_agent:
|
|
102
|
+
logger.info(f"Using default_agent from config: {_voice_config.default_agent}")
|
|
102
103
|
return _voice_config.default_agent
|
|
103
|
-
|
|
104
|
+
result = _enabled_agents[0] if _enabled_agents else "claude"
|
|
105
|
+
logger.info(f"Using fallback agent: {result}")
|
|
106
|
+
return result
|
|
104
107
|
|
|
105
108
|
|
|
106
109
|
def _fuzzy_match_branch(query: str, branches: list[str]) -> str | 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
|
{voice_vibecoder-2.12.0 → voice_vibecoder-2.12.2}/src/voice_vibecoder/code_providers/__init__.py
RENAMED
|
File without changes
|
{voice_vibecoder-2.12.0 → voice_vibecoder-2.12.2}/src/voice_vibecoder/code_providers/claude.py
RENAMED
|
File without changes
|
{voice_vibecoder-2.12.0 → voice_vibecoder-2.12.2}/src/voice_vibecoder/code_providers/cursor.py
RENAMED
|
File without changes
|
{voice_vibecoder-2.12.0 → voice_vibecoder-2.12.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
|
{voice_vibecoder-2.12.0 → voice_vibecoder-2.12.2}/src/voice_vibecoder/voice_providers/__init__.py
RENAMED
|
File without changes
|
{voice_vibecoder-2.12.0 → voice_vibecoder-2.12.2}/src/voice_vibecoder/voice_providers/openai.py
RENAMED
|
File without changes
|
|
File without changes
|