voice-mode 2.22.2__tar.gz → 2.22.3__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_mode-2.22.2 → voice_mode-2.22.3}/CHANGELOG.md +16 -0
- {voice_mode-2.22.2 → voice_mode-2.22.3}/PKG-INFO +1 -1
- {voice_mode-2.22.2 → voice_mode-2.22.3}/voice_mode/__version__.py +1 -1
- {voice_mode-2.22.2 → voice_mode-2.22.3}/voice_mode/tools/services/kokoro/install.py +4 -4
- {voice_mode-2.22.2 → voice_mode-2.22.3}/voice_mode/tools/services/whisper/install.py +27 -18
- {voice_mode-2.22.2 → voice_mode-2.22.3}/.gitignore +0 -0
- {voice_mode-2.22.2 → voice_mode-2.22.3}/README.md +0 -0
- {voice_mode-2.22.2 → voice_mode-2.22.3}/build_hooks.py +0 -0
- {voice_mode-2.22.2 → voice_mode-2.22.3}/pyproject.toml +0 -0
- {voice_mode-2.22.2 → voice_mode-2.22.3}/voice_mode/__init__.py +0 -0
- {voice_mode-2.22.2 → voice_mode-2.22.3}/voice_mode/__main__.py +0 -0
- {voice_mode-2.22.2 → voice_mode-2.22.3}/voice_mode/cli.py +0 -0
- {voice_mode-2.22.2 → voice_mode-2.22.3}/voice_mode/cli_commands/__init__.py +0 -0
- {voice_mode-2.22.2 → voice_mode-2.22.3}/voice_mode/cli_commands/exchanges.py +0 -0
- {voice_mode-2.22.2 → voice_mode-2.22.3}/voice_mode/config.py +0 -0
- {voice_mode-2.22.2 → voice_mode-2.22.3}/voice_mode/conversation_logger.py +0 -0
- {voice_mode-2.22.2 → voice_mode-2.22.3}/voice_mode/core.py +0 -0
- {voice_mode-2.22.2 → voice_mode-2.22.3}/voice_mode/data/versions.json +0 -0
- {voice_mode-2.22.2 → voice_mode-2.22.3}/voice_mode/exchanges/__init__.py +0 -0
- {voice_mode-2.22.2 → voice_mode-2.22.3}/voice_mode/exchanges/conversations.py +0 -0
- {voice_mode-2.22.2 → voice_mode-2.22.3}/voice_mode/exchanges/filters.py +0 -0
- {voice_mode-2.22.2 → voice_mode-2.22.3}/voice_mode/exchanges/formatters.py +0 -0
- {voice_mode-2.22.2 → voice_mode-2.22.3}/voice_mode/exchanges/models.py +0 -0
- {voice_mode-2.22.2 → voice_mode-2.22.3}/voice_mode/exchanges/reader.py +0 -0
- {voice_mode-2.22.2 → voice_mode-2.22.3}/voice_mode/exchanges/stats.py +0 -0
- {voice_mode-2.22.2 → voice_mode-2.22.3}/voice_mode/frontend/README.md +0 -0
- {voice_mode-2.22.2 → voice_mode-2.22.3}/voice_mode/frontend/app/api/connection-details/route.ts +0 -0
- {voice_mode-2.22.2 → voice_mode-2.22.3}/voice_mode/frontend/app/favicon.ico +0 -0
- {voice_mode-2.22.2 → voice_mode-2.22.3}/voice_mode/frontend/app/globals.css +0 -0
- {voice_mode-2.22.2 → voice_mode-2.22.3}/voice_mode/frontend/app/layout.tsx +0 -0
- {voice_mode-2.22.2 → voice_mode-2.22.3}/voice_mode/frontend/app/page.tsx +0 -0
- {voice_mode-2.22.2 → voice_mode-2.22.3}/voice_mode/frontend/components/CloseIcon.tsx +0 -0
- {voice_mode-2.22.2 → voice_mode-2.22.3}/voice_mode/frontend/components/NoAgentNotification.tsx +0 -0
- {voice_mode-2.22.2 → voice_mode-2.22.3}/voice_mode/frontend/components/TranscriptionView.tsx +0 -0
- {voice_mode-2.22.2 → voice_mode-2.22.3}/voice_mode/frontend/hooks/useCombinedTranscriptions.ts +0 -0
- {voice_mode-2.22.2 → voice_mode-2.22.3}/voice_mode/frontend/hooks/useLocalMicTrack.ts +0 -0
- {voice_mode-2.22.2 → voice_mode-2.22.3}/voice_mode/frontend/next-env.d.ts +0 -0
- {voice_mode-2.22.2 → voice_mode-2.22.3}/voice_mode/frontend/next.config.mjs +0 -0
- {voice_mode-2.22.2 → voice_mode-2.22.3}/voice_mode/frontend/package-lock.json +0 -0
- {voice_mode-2.22.2 → voice_mode-2.22.3}/voice_mode/frontend/package.json +0 -0
- {voice_mode-2.22.2 → voice_mode-2.22.3}/voice_mode/frontend/pnpm-lock.yaml +0 -0
- {voice_mode-2.22.2 → voice_mode-2.22.3}/voice_mode/frontend/postcss.config.mjs +0 -0
- {voice_mode-2.22.2 → voice_mode-2.22.3}/voice_mode/frontend/tailwind.config.ts +0 -0
- {voice_mode-2.22.2 → voice_mode-2.22.3}/voice_mode/frontend/tsconfig.json +0 -0
- {voice_mode-2.22.2 → voice_mode-2.22.3}/voice_mode/prompts/README.md +0 -0
- {voice_mode-2.22.2 → voice_mode-2.22.3}/voice_mode/prompts/__init__.py +0 -0
- {voice_mode-2.22.2 → voice_mode-2.22.3}/voice_mode/prompts/converse.py +0 -0
- {voice_mode-2.22.2 → voice_mode-2.22.3}/voice_mode/prompts/release_notes.py +0 -0
- {voice_mode-2.22.2 → voice_mode-2.22.3}/voice_mode/prompts/services.py +0 -0
- {voice_mode-2.22.2 → voice_mode-2.22.3}/voice_mode/provider_discovery.py +0 -0
- {voice_mode-2.22.2 → voice_mode-2.22.3}/voice_mode/providers.py +0 -0
- {voice_mode-2.22.2 → voice_mode-2.22.3}/voice_mode/resources/__init__.py +0 -0
- {voice_mode-2.22.2 → voice_mode-2.22.3}/voice_mode/resources/audio_files.py +0 -0
- {voice_mode-2.22.2 → voice_mode-2.22.3}/voice_mode/resources/changelog.py +0 -0
- {voice_mode-2.22.2 → voice_mode-2.22.3}/voice_mode/resources/configuration.py +0 -0
- {voice_mode-2.22.2 → voice_mode-2.22.3}/voice_mode/resources/statistics.py +0 -0
- {voice_mode-2.22.2 → voice_mode-2.22.3}/voice_mode/resources/version.py +0 -0
- {voice_mode-2.22.2 → voice_mode-2.22.3}/voice_mode/resources/whisper_models.py +0 -0
- {voice_mode-2.22.2 → voice_mode-2.22.3}/voice_mode/server.py +0 -0
- {voice_mode-2.22.2 → voice_mode-2.22.3}/voice_mode/shared.py +0 -0
- {voice_mode-2.22.2 → voice_mode-2.22.3}/voice_mode/simple_failover.py +0 -0
- {voice_mode-2.22.2 → voice_mode-2.22.3}/voice_mode/statistics.py +0 -0
- {voice_mode-2.22.2 → voice_mode-2.22.3}/voice_mode/streaming.py +0 -0
- {voice_mode-2.22.2 → voice_mode-2.22.3}/voice_mode/templates/launchd/com.voicemode.frontend.plist +0 -0
- {voice_mode-2.22.2 → voice_mode-2.22.3}/voice_mode/templates/launchd/com.voicemode.kokoro.plist +0 -0
- {voice_mode-2.22.2 → voice_mode-2.22.3}/voice_mode/templates/launchd/com.voicemode.livekit.plist +0 -0
- {voice_mode-2.22.2 → voice_mode-2.22.3}/voice_mode/templates/launchd/com.voicemode.whisper.plist +0 -0
- {voice_mode-2.22.2 → voice_mode-2.22.3}/voice_mode/templates/launchd/start-kokoro-with-health-check.sh +0 -0
- {voice_mode-2.22.2 → voice_mode-2.22.3}/voice_mode/templates/launchd/start-whisper-with-health-check.sh +0 -0
- {voice_mode-2.22.2 → voice_mode-2.22.3}/voice_mode/templates/systemd/voicemode-frontend.service +0 -0
- {voice_mode-2.22.2 → voice_mode-2.22.3}/voice_mode/templates/systemd/voicemode-kokoro.service +0 -0
- {voice_mode-2.22.2 → voice_mode-2.22.3}/voice_mode/templates/systemd/voicemode-livekit.service +0 -0
- {voice_mode-2.22.2 → voice_mode-2.22.3}/voice_mode/templates/systemd/voicemode-whisper.service +0 -0
- {voice_mode-2.22.2 → voice_mode-2.22.3}/voice_mode/tools/__init__.py +0 -0
- {voice_mode-2.22.2 → voice_mode-2.22.3}/voice_mode/tools/configuration_management.py +0 -0
- {voice_mode-2.22.2 → voice_mode-2.22.3}/voice_mode/tools/converse.py +0 -0
- {voice_mode-2.22.2 → voice_mode-2.22.3}/voice_mode/tools/dependencies.py +0 -0
- {voice_mode-2.22.2 → voice_mode-2.22.3}/voice_mode/tools/devices.py +0 -0
- {voice_mode-2.22.2 → voice_mode-2.22.3}/voice_mode/tools/diagnostics.py +0 -0
- {voice_mode-2.22.2 → voice_mode-2.22.3}/voice_mode/tools/providers.py +0 -0
- {voice_mode-2.22.2 → voice_mode-2.22.3}/voice_mode/tools/service.py +0 -0
- {voice_mode-2.22.2 → voice_mode-2.22.3}/voice_mode/tools/services/kokoro/uninstall.py +0 -0
- {voice_mode-2.22.2 → voice_mode-2.22.3}/voice_mode/tools/services/list_versions.py +0 -0
- {voice_mode-2.22.2 → voice_mode-2.22.3}/voice_mode/tools/services/livekit/__init__.py +0 -0
- {voice_mode-2.22.2 → voice_mode-2.22.3}/voice_mode/tools/services/livekit/frontend.py +0 -0
- {voice_mode-2.22.2 → voice_mode-2.22.3}/voice_mode/tools/services/livekit/install.py +0 -0
- {voice_mode-2.22.2 → voice_mode-2.22.3}/voice_mode/tools/services/livekit/production_server.py +0 -0
- {voice_mode-2.22.2 → voice_mode-2.22.3}/voice_mode/tools/services/livekit/uninstall.py +0 -0
- {voice_mode-2.22.2 → voice_mode-2.22.3}/voice_mode/tools/services/version_info.py +0 -0
- {voice_mode-2.22.2 → voice_mode-2.22.3}/voice_mode/tools/services/whisper/download_model.py +0 -0
- {voice_mode-2.22.2 → voice_mode-2.22.3}/voice_mode/tools/services/whisper/uninstall.py +0 -0
- {voice_mode-2.22.2 → voice_mode-2.22.3}/voice_mode/tools/statistics.py +0 -0
- {voice_mode-2.22.2 → voice_mode-2.22.3}/voice_mode/tools/voice_registry.py +0 -0
- {voice_mode-2.22.2 → voice_mode-2.22.3}/voice_mode/utils/__init__.py +0 -0
- {voice_mode-2.22.2 → voice_mode-2.22.3}/voice_mode/utils/audio_diagnostics.py +0 -0
- {voice_mode-2.22.2 → voice_mode-2.22.3}/voice_mode/utils/event_logger.py +0 -0
- {voice_mode-2.22.2 → voice_mode-2.22.3}/voice_mode/utils/ffmpeg_check.py +0 -0
- {voice_mode-2.22.2 → voice_mode-2.22.3}/voice_mode/utils/format_migration.py +0 -0
- {voice_mode-2.22.2 → voice_mode-2.22.3}/voice_mode/utils/gpu_detection.py +0 -0
- {voice_mode-2.22.2 → voice_mode-2.22.3}/voice_mode/utils/migration_helpers.py +0 -0
- {voice_mode-2.22.2 → voice_mode-2.22.3}/voice_mode/utils/services/common.py +0 -0
- {voice_mode-2.22.2 → voice_mode-2.22.3}/voice_mode/utils/services/kokoro_helpers.py +0 -0
- {voice_mode-2.22.2 → voice_mode-2.22.3}/voice_mode/utils/services/livekit_helpers.py +0 -0
- {voice_mode-2.22.2 → voice_mode-2.22.3}/voice_mode/utils/services/whisper_helpers.py +0 -0
- {voice_mode-2.22.2 → voice_mode-2.22.3}/voice_mode/utils/version_helpers.py +0 -0
- {voice_mode-2.22.2 → voice_mode-2.22.3}/voice_mode/version.py +0 -0
- {voice_mode-2.22.2 → voice_mode-2.22.3}/voice_mode/voice_preferences.py +0 -0
@@ -7,6 +7,22 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
7
7
|
|
8
8
|
## [Unreleased]
|
9
9
|
|
10
|
+
## [2.22.3] - 2025-08-16
|
11
|
+
|
12
|
+
## [2.23.0] - 2025-08-16
|
13
|
+
|
14
|
+
### Fixed
|
15
|
+
- **Service auto-enable error** - Fix 'FunctionTool' object is not callable
|
16
|
+
- Changed whisper and kokoro installers to use `enable_service` function instead of MCP tool
|
17
|
+
- Services can now be properly auto-enabled after installation
|
18
|
+
- **Whisper build errors** - Remove obsolete make server command
|
19
|
+
- whisper-server is now built as part of the main build target
|
20
|
+
- Removed unnecessary build step that was causing errors
|
21
|
+
- **Build output verbosity** - Suppress cmake/make output unless debugging
|
22
|
+
- Build output is now captured and only shown on errors
|
23
|
+
- Use VOICEMODE_DEBUG=true to see full build output
|
24
|
+
- Significantly cleaner installation experience
|
25
|
+
|
10
26
|
## [2.22.2] - 2025-08-16
|
11
27
|
|
12
28
|
### Fixed
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.4
|
2
2
|
Name: voice-mode
|
3
|
-
Version: 2.22.
|
3
|
+
Version: 2.22.3
|
4
4
|
Summary: VoiceMode - Voice interaction capabilities for AI assistants (formerly voice-mcp)
|
5
5
|
Project-URL: Homepage, https://github.com/mbailey/voicemode
|
6
6
|
Project-URL: Repository, https://github.com/mbailey/voicemode
|
@@ -268,8 +268,8 @@ async def kokoro_install(
|
|
268
268
|
|
269
269
|
if auto_enable:
|
270
270
|
logger.info("Auto-enabling kokoro service...")
|
271
|
-
from voice_mode.tools.service import
|
272
|
-
enable_result = await
|
271
|
+
from voice_mode.tools.service import enable_service
|
272
|
+
enable_result = await enable_service("kokoro")
|
273
273
|
if "✅" in enable_result:
|
274
274
|
enable_message = " Service auto-enabled."
|
275
275
|
else:
|
@@ -333,8 +333,8 @@ WantedBy=default.target
|
|
333
333
|
|
334
334
|
if auto_enable:
|
335
335
|
logger.info("Auto-enabling kokoro service...")
|
336
|
-
from voice_mode.tools.service import
|
337
|
-
enable_result = await
|
336
|
+
from voice_mode.tools.service import enable_service
|
337
|
+
enable_result = await enable_service("kokoro")
|
338
338
|
if "✅" in enable_result:
|
339
339
|
enable_message = " Service auto-enabled."
|
340
340
|
else:
|
@@ -201,7 +201,8 @@ async def whisper_install(
|
|
201
201
|
# Clean any previous build (only if Makefile exists)
|
202
202
|
if os.path.exists("Makefile"):
|
203
203
|
try:
|
204
|
-
subprocess.run(["make", "clean"], check=True
|
204
|
+
subprocess.run(["make", "clean"], check=True,
|
205
|
+
capture_output=True, text=True)
|
205
206
|
except subprocess.CalledProcessError:
|
206
207
|
logger.warning("Make clean failed, continuing anyway...")
|
207
208
|
|
@@ -216,14 +217,27 @@ async def whisper_install(
|
|
216
217
|
# Get number of CPU cores for parallel build
|
217
218
|
cpu_count = os.cpu_count() or 4
|
218
219
|
|
219
|
-
|
220
|
+
# Determine if we should show build output
|
221
|
+
debug_mode = os.environ.get("VOICEMODE_DEBUG", "").lower() in ("true", "1", "yes")
|
220
222
|
|
221
|
-
|
222
|
-
|
223
|
-
|
224
|
-
|
225
|
-
|
226
|
-
|
223
|
+
if debug_mode:
|
224
|
+
subprocess.run(["make", f"-j{cpu_count}"], env=build_env, check=True)
|
225
|
+
else:
|
226
|
+
# Suppress output unless there's an error
|
227
|
+
logger.info("Building whisper.cpp (this may take a few minutes)...")
|
228
|
+
try:
|
229
|
+
result = subprocess.run(["make", f"-j{cpu_count}"], env=build_env,
|
230
|
+
capture_output=True, text=True, check=True)
|
231
|
+
logger.info("Build completed successfully")
|
232
|
+
except subprocess.CalledProcessError as e:
|
233
|
+
logger.error(f"Build failed: {e}")
|
234
|
+
if e.stdout:
|
235
|
+
logger.error(f"Build output:\n{e.stdout}")
|
236
|
+
if e.stderr:
|
237
|
+
logger.error(f"Build errors:\n{e.stderr}")
|
238
|
+
raise
|
239
|
+
|
240
|
+
# Note: whisper-server is now built as part of the main build target
|
227
241
|
|
228
242
|
# Download model using shared helper
|
229
243
|
logger.info(f"Downloading default model: {model}")
|
@@ -283,12 +297,7 @@ fi
|
|
283
297
|
|
284
298
|
echo "Starting whisper-server with model: $MODEL_NAME" >> "$LOG_FILE"
|
285
299
|
|
286
|
-
#
|
287
|
-
if [ ! -f "$WHISPER_DIR/build/bin/whisper-server" ] && [ ! -f "$WHISPER_DIR/server" ]; then
|
288
|
-
echo "Building whisper-server..." >> "$LOG_FILE"
|
289
|
-
cd "$WHISPER_DIR"
|
290
|
-
make server >> "$LOG_FILE" 2>&1
|
291
|
-
fi
|
300
|
+
# Note: whisper-server is now built as part of the main build target
|
292
301
|
|
293
302
|
# Determine server binary location
|
294
303
|
if [ -f "$WHISPER_DIR/build/bin/whisper-server" ]; then
|
@@ -375,8 +384,8 @@ exec "$SERVER_BIN" \\
|
|
375
384
|
|
376
385
|
if auto_enable:
|
377
386
|
logger.info("Auto-enabling whisper service...")
|
378
|
-
from voice_mode.tools.service import
|
379
|
-
enable_result = await
|
387
|
+
from voice_mode.tools.service import enable_service
|
388
|
+
enable_result = await enable_service("whisper")
|
380
389
|
if "✅" in enable_result:
|
381
390
|
enable_message = " Service auto-enabled."
|
382
391
|
else:
|
@@ -458,8 +467,8 @@ WantedBy=default.target
|
|
458
467
|
|
459
468
|
if auto_enable:
|
460
469
|
logger.info("Auto-enabling whisper service...")
|
461
|
-
from voice_mode.tools.service import
|
462
|
-
enable_result = await
|
470
|
+
from voice_mode.tools.service import enable_service
|
471
|
+
enable_result = await enable_service("whisper")
|
463
472
|
if "✅" in enable_result:
|
464
473
|
enable_message = " Service auto-enabled."
|
465
474
|
else:
|
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_mode-2.22.2 → voice_mode-2.22.3}/voice_mode/frontend/app/api/connection-details/route.ts
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{voice_mode-2.22.2 → voice_mode-2.22.3}/voice_mode/frontend/components/NoAgentNotification.tsx
RENAMED
File without changes
|
{voice_mode-2.22.2 → voice_mode-2.22.3}/voice_mode/frontend/components/TranscriptionView.tsx
RENAMED
File without changes
|
{voice_mode-2.22.2 → voice_mode-2.22.3}/voice_mode/frontend/hooks/useCombinedTranscriptions.ts
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
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{voice_mode-2.22.2 → voice_mode-2.22.3}/voice_mode/templates/launchd/com.voicemode.frontend.plist
RENAMED
File without changes
|
{voice_mode-2.22.2 → voice_mode-2.22.3}/voice_mode/templates/launchd/com.voicemode.kokoro.plist
RENAMED
File without changes
|
{voice_mode-2.22.2 → voice_mode-2.22.3}/voice_mode/templates/launchd/com.voicemode.livekit.plist
RENAMED
File without changes
|
{voice_mode-2.22.2 → voice_mode-2.22.3}/voice_mode/templates/launchd/com.voicemode.whisper.plist
RENAMED
File without changes
|
File without changes
|
File without changes
|
{voice_mode-2.22.2 → voice_mode-2.22.3}/voice_mode/templates/systemd/voicemode-frontend.service
RENAMED
File without changes
|
{voice_mode-2.22.2 → voice_mode-2.22.3}/voice_mode/templates/systemd/voicemode-kokoro.service
RENAMED
File without changes
|
{voice_mode-2.22.2 → voice_mode-2.22.3}/voice_mode/templates/systemd/voicemode-livekit.service
RENAMED
File without changes
|
{voice_mode-2.22.2 → voice_mode-2.22.3}/voice_mode/templates/systemd/voicemode-whisper.service
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
|
{voice_mode-2.22.2 → voice_mode-2.22.3}/voice_mode/tools/services/livekit/production_server.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
|