The open-source AI voice studio. Clone, dictate, create.
This report summarizes scanner evidence for jamiepine/voicebox, a Python project with 56,818 GitHub stars. SynthScan examined 111,039 lines of code across 474 source files, recording 975 pattern matches distributed across 17 syntactic categories. The legacy adjusted pattern signal is 13.8 (Moderate pattern signal); it is not an authorship estimate.
Use the findings to ask whether maintainers can explain intent, verify dependencies, simplify unnecessary scaffolding, and focus review effort. Risk Payload v1 adds ownership, supply-chain, over-engineering, and review-effort vectors when available. These are prompts for human verification, not probabilities, security findings, or measured maintenance costs.
Use each vector to guide manual verification of the underlying findings.
Can maintainers explain intent, assumptions, and trade-offs? 483 finding(s).
Are imports declared and package/API names verified? 152 finding(s).
Are wrappers, guards, and repeated structures necessary? 666 finding(s).
Which changes need focused human review? 975 finding(s).
This chart tracks the legacy adjusted pattern score across scan runs. Changes can reflect source changes, scan coverage, or detector/scoring versions; they do not measure AI adoption or prove that a team refactored code. Compare runs only when their scoring versions are compatible. The dashed line tracks the raw pattern-hit count.
Groups findings by configured severity weight. Severity is not a confidence estimate, security rating, or proof that a package is missing. Verify imports against the project's manifests and inspect each finding in its local design context.
This horizontal bar chart shows where configured pattern scores accumulate across directories. Treat the bars as locations to inspect, not as evidence of authorship or code quality. Use the file-level findings to decide whether a directory needs a focused ownership, dependency, complexity, or review check.
The scanner identified 975 distinct pattern matches across 17 syntactic categories. Each entry below represents a discrete location in the source code where the engine recorded a detector match to inspect in context. Expand any category row to inspect the individual file paths, line numbers, code snippets, and the lexical context (CODE, COMMENT, or STRING) in which each match was detected.
Reading the findings table: The Severity column indicates the configured finding weight (CRITICAL / HIGH / MEDIUM / LOW). The Context column identifies whether the match occurred inside executable code, an inline comment, or a string literal — legacy comment-context matches receive a ×1.5 score weight. The ⚡ bolt icon marks clustered matches: three or more patterns within a 10-line window, each receiving an additional ×1.5 density multiplier under the legacy scoring model.
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | app/src/stores/serverStore.ts | 49 | export function isLoopbackVoiceboxServerUrl(url: string): boolean { | CODE |
| LOW | …components/InputMonitoringGate/InputMonitoringGate.tsx | 18 | export function useInputMonitoringPermission() { | CODE |
| LOW | app/src/components/ServerSettings/ModelManagement.tsx | 49 | async function fetchHuggingFaceModelInfo(repoId: string): Promise<HuggingFaceModelInfo> { | CODE |
| LOW | …src/components/AccessibilityGate/AccessibilityGate.tsx | 23 | export function useAccessibilityPermission() { | CODE |
| LOW | …components/CapturesTab/DictationReadinessChecklist.tsx | 83 | export function DictationReadinessChecklist({ | CODE |
| LOW | app/src/components/Generation/EngineModelSelector.tsx | 176 | export function isProfileCompatibleWithEngine( | CODE |
| LOW | app/src/lib/constants/languages.ts | 104 | export function getLanguageOptionsForEngine(engine: string) { | CODE |
| LOW | app/src/lib/hooks/useHistory.ts | 32 | export function useClearFailedGenerations() { | CODE |
| LOW | app/src/lib/hooks/useCaptureRecordingSession.ts | 100 | export function useCaptureRecordingSession( | CODE |
| LOW | backend/config.py | 25 | def _path_relative_to_any_data_dir(path: Path) -> Path | None: | CODE |
| LOW | backend/pyi_rth_torch_compiler_disable.py | 226 | def _patch_scipy_distn_source(source: str) -> str: | CODE |
| LOW | backend/pyi_rth_torch_compiler_disable.py | 239 | def _patch_masking_utils_source(source: str) -> str: | CODE |
| LOW | backend/database/seed.py | 12 | def backfill_generation_versions(SessionLocal, Generation, GenerationVersion) -> None: | CODE |
| LOW | backend/database/migrations.py | 198 | def _migrate_generation_versions(engine, inspector, tables: set[str]) -> None: | STRING |
| LOW | backend/database/migrations.py | 206 | def _migrate_capture_settings(engine, inspector, tables: set[str]) -> None: | STRING |
| LOW | backend/backends/qwen_llm_backend.py | 278 | def _reload_and_generate_sync() -> str: | CODE |
| LOW | backend/backends/mlx_backend.py | 315 | def _reload_and_generate_sync(): | CODE |
| LOW | backend/backends/mlx_backend.py | 458 | def _reload_and_transcribe_sync(): | CODE |
| LOW | backend/backends/__init__.py | 289 | def _get_qwen_custom_voice_configs() -> list[ModelConfig]: | CODE |
| LOW | backend/backends/__init__.py | 315 | def _get_qwen_voice_design_configs() -> list[ModelConfig]: | CODE |
| LOW | backend/backends/__init__.py | 334 | def _get_non_qwen_tts_configs() -> list[ModelConfig]: | CODE |
| LOW | backend/backends/__init__.py | 644 | async def ensure_model_cached_or_raise(engine: str, model_size: str = "default") -> None: | CODE |
| LOW | backend/backends/__init__.py | 782 | def get_tts_backend_for_engine(engine: str) -> TTSBackend: | CODE |
| LOW | backend/backends/__init__.py | 959 | def get_llm_backend_for_engine(engine: str) -> LLMBackend: | CODE |
| LOW | backend/tests/test_voice_prompt_cache_unload.py | 36 | def test_clear_voice_prompt_memory_cache_leaves_disk_cache_alone(tmp_path, monkeypatch): | CODE |
| LOW | backend/tests/test_voice_prompt_cache_unload.py | 49 | def test_unload_tts_model_clears_voice_prompt_memory_cache(monkeypatch): | CODE |
| LOW | backend/tests/test_voice_prompt_cache_unload.py | 61 | def test_unload_model_by_config_clears_cache_for_generic_tts_engine(monkeypatch): | CODE |
| LOW | backend/tests/test_voice_prompt_cache_unload.py | 76 | def test_unload_model_by_config_leaves_cache_alone_for_whisper(monkeypatch): | CODE |
| LOW | backend/tests/test_cors.py | 63 | def client_with_custom_origins(): | CODE |
| LOW⚡ | backend/tests/test_cors.py | 118 | def test_credentials_header_present(self, client): | CODE |
| LOW⚡ | backend/tests/test_cors.py | 126 | def test_custom_origin_allowed(self, client_with_custom_origins): | CODE |
| LOW⚡ | backend/tests/test_cors.py | 130 | def test_other_custom_origin_allowed(self, client_with_custom_origins): | CODE |
| LOW⚡ | backend/tests/test_cors.py | 134 | def test_default_origins_still_work(self, client_with_custom_origins): | CODE |
| LOW⚡ | backend/tests/test_cors.py | 138 | def test_unlisted_origin_still_blocked(self, client_with_custom_origins): | CODE |
| LOW | backend/tests/test_cors.py | 158 | def test_trailing_comma_ignored(self): | CODE |
| LOW⚡ | backend/tests/test_omnivoice_compat.py | 57 | def test_initialization_functions_mutate_in_place_and_return_tensor(): | CODE |
| LOW⚡ | backend/tests/test_omnivoice_compat.py | 67 | def test_initialization_copy_writes_through(): | CODE |
| LOW⚡ | backend/tests/test_omnivoice_compat.py | 92 | def test_annotated_defaults_are_applied(): | CODE |
| LOW⚡ | backend/tests/test_omnivoice_compat.py | 98 | def test_kwargs_override_defaults(): | CODE |
| LOW⚡ | backend/tests/test_omnivoice_compat.py | 108 | def test_mutable_defaults_are_not_shared_between_instances(): | CODE |
| LOW⚡ | backend/tests/test_omnivoice_compat.py | 118 | def test_leftover_kwargs_reach_pretrained_config(): | CODE |
| LOW⚡ | backend/tests/test_omnivoice_compat.py | 128 | def test_auto_docstring_returns_target_unchanged(): | CODE |
| LOW⚡ | backend/tests/test_omnivoice_compat.py | 136 | def test_strict_returns_target_unchanged(): | CODE |
| LOW⚡ | backend/tests/test_omnivoice_compat.py | 150 | def restore_special_tokens_hook(): | CODE |
| LOW⚡ | backend/tests/test_omnivoice_compat.py | 246 | def test_attribute_name_derivation(token, expected): | CODE |
| LOW⚡ | backend/tests/test_omnivoice_compat.py | 253 | def test_omnivoice_is_registered(): | CODE |
| LOW | backend/tests/test_omnivoice_compat.py | 176 | def test_patch_coerces_list_to_mapping(restore_special_tokens_hook): | CODE |
| LOW | backend/tests/test_omnivoice_compat.py | 194 | def test_patch_leaves_mapping_form_alone(restore_special_tokens_hook): | CODE |
| LOW | backend/tests/test_omnivoice_compat.py | 215 | def test_teardown_leaves_no_stub_behind(restore_special_tokens_hook): | CODE |
| LOW | backend/tests/test_omnivoice_compat.py | 230 | def test_inherited_method_is_reachable_after_teardown(): | CODE |
| LOW | backend/tests/test_omnivoice_compat.py | 265 | def test_omnivoice_accepts_cloned_profiles(): | CODE |
| LOW | backend/tests/test_omnivoice_compat.py | 272 | def test_declared_languages_are_resolvable_by_omnivoice(): | CODE |
| LOW | backend/tests/test_omnivoice_compat.py | 298 | def test_clear_codec_layer_cache_is_safe_when_codec_never_imported(): | CODE |
| LOW | backend/tests/test_omnivoice_compat.py | 310 | def test_ensure_asr_loads_once_under_concurrency(): | CODE |
| LOW | backend/tests/test_omnivoice_compat.py | 351 | def test_ensure_asr_is_a_noop_once_loaded(): | CODE |
| LOW | backend/tests/test_package_rocm.py | 55 | def test_runtime_files_are_rocm(self, rel_path): | CODE |
| LOW | backend/tests/test_package_rocm.py | 74 | def test_core_files_are_not_rocm(self, rel_path): | CODE |
| LOW | backend/tests/test_package_rocm.py | 131 | def test_empty_rocm_set_exits(self, tmp_path): | CODE |
| LOW | backend/tests/test_offline_patch.py | 45 | def test_suppresses_offline_mode_is_enabled(monkeypatch): | CODE |
| LOW | backend/tests/test_offline_patch.py | 62 | def test_suppresses_connection_errors(monkeypatch): | CODE |
| 266 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | backend/server.py | 177 | except Exception: | CODE |
| HIGH | backend/server.py | 257 | except OSError: | CODE |
| HIGH | backend/pyi_rth_torch_compiler_disable.py | 70 | except Exception: | CODE |
| HIGH | backend/app.py | 258 | except ImportError: | CODE |
| HIGH | backend/pyi_rth_numpy_compat.py | 95 | except Exception: | CODE |
| HIGH | backend/backends/base.py | 201 | except AttributeError: | CODE |
| HIGH | backend/backends/base.py | 145 | except ImportError: | CODE |
| HIGH | backend/backends/base.py | 154 | except ImportError: | CODE |
| HIGH | backend/tests/test_omnivoice_compat.py | 170 | except AttributeError: | CODE |
| HIGH | backend/tests/test_all_models_e2e.py | 201 | except Exception: | CODE |
| HIGH | backend/tests/test_all_models_e2e.py | 225 | except httpx.HTTPError: | CODE |
| HIGH | backend/tests/test_all_models_e2e.py | 195 | except subprocess.TimeoutExpired: | CODE |
| HIGH | backend/tests/test_qwen_download.py | 235 | except asyncio.CancelledError: | CODE |
| HIGH | backend/utils/hf_progress.py | 361 | except (ImportError, AttributeError): | CODE |
| HIGH | backend/utils/hf_progress.py | 275 | except (AttributeError, TypeError): | CODE |
| HIGH | backend/utils/hf_progress.py | 346 | except (AttributeError, TypeError): | CODE |
| HIGH | backend/utils/hf_progress.py | 357 | except (ImportError, AttributeError): | CODE |
| HIGH | backend/utils/dac_shim.py | 58 | except ImportError: | CODE |
| HIGH | backend/utils/platform_detect.py | 56 | except Exception: | CODE |
| HIGH | backend/utils/platform_detect.py | 67 | except Exception: | CODE |
| HIGH | backend/utils/images.py | 74 | except (AttributeError, KeyError, IndexError, TypeError): | CODE |
| HIGH | backend/utils/hf_offline_patch.py | 192 | except ImportError: | CODE |
| HIGH | backend/utils/hf_offline_patch.py | 199 | except ImportError: | CODE |
| HIGH | backend/utils/hf_offline_patch.py | 153 | except ImportError: | CODE |
| HIGH | backend/utils/hf_offline_patch.py | 160 | except ImportError: | CODE |
| HIGH | backend/utils/audio.py | 107 | except Exception: | CODE |
| HIGH | backend/utils/progress.py | 202 | except RuntimeError: | CODE |
| HIGH | backend/mcp_shim/__main__.py | 51 | except Exception: | CODE |
| HIGH | backend/routes/models.py | 212 | except OSError: | CODE |
| HIGH | backend/routes/models.py | 331 | except Exception: | CODE |
| HIGH | backend/routes/models.py | 405 | except Exception: | CODE |
| HIGH | backend/routes/models.py | 361 | except Exception: | CODE |
| HIGH | backend/routes/models.py | 369 | except Exception: | CODE |
| HIGH | backend/routes/models.py | 403 | except Exception: | CODE |
| HIGH | backend/routes/generations.py | 123 | except Exception: | CODE |
| HIGH | backend/routes/generations.py | 464 | except OSError: | CODE |
| HIGH | backend/routes/health.py | 79 | except ImportError: | CODE |
| HIGH | backend/routes/health.py | 93 | except ImportError: | CODE |
| HIGH | backend/routes/health.py | 167 | except Exception: | CODE |
| HIGH | backend/routes/health.py | 125 | except Exception: | CODE |
| HIGH | backend/routes/health.py | 227 | except Exception: | CODE |
| HIGH | backend/mcp_server/events.py | 39 | except asyncio.QueueFull: | CODE |
| HIGH | backend/services/rocm.py | 324 | except Exception: | CODE |
| HIGH | backend/services/rocm.py | 330 | except Exception: | CODE |
| HIGH | backend/services/generation.py | 189 | except Exception: | CODE |
| HIGH | backend/services/export_import.py | 200 | except Exception as e: | CODE |
| HIGH | backend/services/captures.py | 143 | except OSError: | CODE |
| HIGH | backend/services/cuda.py | 332 | except Exception: | CODE |
| HIGH | backend/services/cuda.py | 338 | except Exception: | CODE |
| HIGH | backend/services/history.py | 63 | except Exception: | CODE |
| HIGH | scripts/test_download_progress.py | 229 | except (ImportError, AttributeError): | CODE |
| HIGH | scripts/test_download_progress.py | 201 | except (AttributeError, TypeError): | CODE |
| HIGH | scripts/test_download_progress.py | 245 | except (AttributeError, TypeError): | CODE |
| HIGH | scripts/test_download_progress.py | 252 | except (ImportError, AttributeError): | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | app/src/components/Generation/ParalinguisticInput.tsx | 15 | // ── Tag definitions ───────────────────────────────────────────────── | COMMENT |
| MEDIUM | app/src/components/Generation/ParalinguisticInput.tsx | 44 | // ── Helpers ───────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | app/src/components/Generation/ParalinguisticInput.tsx | 118 | // ── Component ─────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | app/src/components/Generation/ParalinguisticInput.tsx | 172 | // ── Sync external value → editor ────────────────────────────── | COMMENT |
| MEDIUM | app/src/components/Generation/ParalinguisticInput.tsx | 183 | // ── Emit plain-text value on input ──────────────────────────── | COMMENT |
| MEDIUM | app/src/components/Generation/ParalinguisticInput.tsx | 192 | // ── Insert a tag badge at the caret ─────────────────────────── | COMMENT |
| MEDIUM | app/src/components/Generation/ParalinguisticInput.tsx | 237 | // ── Handle keydown for autocomplete navigation ──────────────── | COMMENT |
| MEDIUM | app/src/components/Generation/ParalinguisticInput.tsx | 273 | // ── Handle input (check for / trigger) ──────────────────────── | COMMENT |
| MEDIUM | app/src/components/Generation/ParalinguisticInput.tsx | 305 | // ── Handle paste — convert [tag] patterns to badges ─────────── | COMMENT |
| MEDIUM | app/src/components/Generation/ParalinguisticInput.tsx | 344 | // ── Show placeholder ────────────────────────────────────────── | COMMENT |
| MEDIUM | app/src/lib/constants/languages.ts | 112 | // ── Backwards-compatible exports used elsewhere ────────────────────── | COMMENT |
| MEDIUM | app/src/lib/api/client.ts | 139 | // ── Personality-driven text generation ───────────────────────────── | COMMENT |
| MEDIUM | backend/models.py | 427 | # ── Profile personality endpoint ────────────────────────────────────── | COMMENT |
| MEDIUM | backend/models.py | 848 | # ─── Cloud (backup & sync) ────────────────────────────────────────────── | COMMENT |
| MEDIUM | backend/pyproject.toml | 11 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | backend/pyproject.toml | 13 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | backend/pyproject.toml | 84 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | backend/pyproject.toml | 86 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | backend/STYLE_GUIDE.md | 149 | # ============================================ | COMMENT |
| MEDIUM⚡ | backend/STYLE_GUIDE.md | 151 | # ============================================ | COMMENT |
| MEDIUM⚡ | backend/STYLE_GUIDE.md | 153 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | backend/STYLE_GUIDE.md | 155 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | backend/backends/qwen_custom_voice_backend.py | 34 | # ── Preset speakers ────────────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | backend/tests/test_omnivoice_compat.py | 52 | # ── initialization module ───────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | backend/tests/test_omnivoice_compat.py | 73 | # ── PreTrainedConfig dataclass adapter ──────────────────────────────── | COMMENT |
| MEDIUM⚡ | backend/tests/test_omnivoice_compat.py | 123 | # ── auto_docstring / strict no-ops ──────────────────────────────────── | COMMENT |
| MEDIUM⚡ | backend/tests/test_omnivoice_compat.py | 144 | # ── extra_special_tokens list form ──────────────────────────────────── | COMMENT |
| MEDIUM⚡ | backend/tests/test_omnivoice_compat.py | 250 | # ── engine wiring ───────────────────────────────────────────────────── | COMMENT |
| MEDIUM | backend/tests/test_omnivoice_compat.py | 30 | # ── conv1d_output_length ────────────────────────────────────────────── | COMMENT |
| MEDIUM | backend/tests/test_speak_language.py | 85 | # ─── REST: POST /speak ──────────────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | backend/tests/test_speak_language.py | 120 | # ─── MCP: voicebox_speak ────────────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | backend/tests/test_openai_compat.py | 111 | # ─── /v1/models ─────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | backend/tests/test_openai_compat.py | 131 | # ─── /v1/audio/speech: happy paths ──────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | backend/tests/test_openai_compat.py | 212 | # ─── /v1/audio/speech: errors in OpenAI's shape ─────────────────────────── | COMMENT |
| MEDIUM | backend/tests/test_openai_compat.py | 300 | # ─── encoder unit coverage ──────────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | backend/tests/test_refinement_collapse.py | 14 | # ── single-word loops (word-level pass) ───────────────────────────────── | COMMENT |
| MEDIUM⚡ | backend/tests/test_refinement_collapse.py | 46 | # ── multi-word loops (character-level pass) ───────────────────────────── | COMMENT |
| MEDIUM⚡ | backend/tests/test_refinement_collapse.py | 82 | # ── CJK loops (character-level pass, no whitespace) ────────────────────── | COMMENT |
| MEDIUM⚡ | backend/tests/test_refinement_collapse.py | 113 | # ── whitespace / edge cases ────────────────────────────────────────────── | COMMENT |
| MEDIUM | backend/tests/test_refinement_samples.py | 57 | # ── Sample inputs ───────────────────────────────────────────────────── | COMMENT |
| MEDIUM | backend/tests/test_refinement_samples.py | 174 | # ── Scoring heuristics ──────────────────────────────────────────────── | COMMENT |
| MEDIUM | backend/tests/test_refinement_samples.py | 316 | # ── Runner ──────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | backend/tests/test_all_models_e2e.py | 43 | # ── Test matrix ────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | backend/tests/test_all_models_e2e.py | 74 | # ── Result record ──────────────────────────────────────────────────── | COMMENT |
| MEDIUM | backend/tests/test_all_models_e2e.py | 93 | # ── Binary resolution ──────────────────────────────────────────────── | COMMENT |
| MEDIUM | backend/tests/test_all_models_e2e.py | 125 | # ── Server spawn + log capture ─────────────────────────────────────── | COMMENT |
| MEDIUM | backend/tests/test_all_models_e2e.py | 213 | # ── HTTP helpers ───────────────────────────────────────────────────── | COMMENT |
| MEDIUM | backend/tests/test_all_models_e2e.py | 369 | # ── Report writers ─────────────────────────────────────────────────── | COMMENT |
| MEDIUM | backend/tests/test_all_models_e2e.py | 436 | # ── Main ───────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | backend/tests/test_personality_samples.py | 44 | # ── Sample personalities ────────────────────────────────────────────── | COMMENT |
| MEDIUM | backend/tests/test_personality_samples.py | 89 | # ── Scoring heuristics ──────────────────────────────────────────────── | COMMENT |
| MEDIUM | backend/tests/test_personality_samples.py | 177 | # ── Runner ──────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | backend/utils/dac_shim.py | 25 | # ── Snake activation (from dac/nn/layers.py) ──────────────────────── | COMMENT |
| MEDIUM | backend/utils/dac_shim.py | 47 | # ── Register as dac.nn.layers and dac.model.dac ───────────────────── | COMMENT |
| MEDIUM⚡ | backend/utils/transformers5_compat.py | 48 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | backend/utils/transformers5_compat.py | 50 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | backend/utils/transformers5_compat.py | 126 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | backend/utils/transformers5_compat.py | 128 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | backend/routes/profiles.py | 69 | # ── Preset Voice Endpoints ─────────────────────────────────────────── | COMMENT |
| MEDIUM | backend/routes/profiles.py | 366 | # ── Personality endpoint ────────────────────────────────────────────── | COMMENT |
| 11 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | backend/server.py | 22 | except Exception: | CODE |
| LOW | backend/server.py | 132 | except Exception as e: | CODE |
| LOW | backend/server.py | 177 | except Exception: | CODE |
| LOW | backend/server.py | 341 | except Exception as e: | CODE |
| MEDIUM | backend/server.py | 43 | def write(self, s): | CODE |
| LOW | backend/pyi_rth_torch_compiler_disable.py | 70 | except Exception: | CODE |
| LOW | backend/pyi_rth_torch_compiler_disable.py | 287 | except Exception: | CODE |
| LOW | backend/pyi_rth_torch_compiler_disable.py | 315 | except Exception as e: | CODE |
| LOW | backend/pyi_rth_torch_compiler_disable.py | 385 | except Exception as e: | CODE |
| LOW | backend/pyi_rth_torch_compiler_disable.py | 446 | except Exception as e: | CODE |
| LOW | backend/pyi_rth_torch_compiler_disable.py | 462 | except Exception as e: | CODE |
| LOW | backend/pyi_rth_torch_compiler_disable.py | 507 | except Exception as e: | CODE |
| LOW | backend/pyi_rth_torch_compiler_disable.py | 524 | except Exception as _e: | CODE |
| LOW | backend/app.py | 255 | except Exception: | CODE |
| LOW | backend/app.py | 309 | except Exception as e: | CODE |
| LOW | backend/app.py | 324 | except Exception as e: | CODE |
| LOW | backend/app.py | 348 | except Exception as e: | CODE |
| LOW | backend/app.py | 357 | except Exception as e: | CODE |
| LOW⚡ | backend/app.py | 368 | except Exception: | CODE |
| LOW⚡ | backend/app.py | 372 | except Exception: | CODE |
| LOW⚡ | backend/app.py | 376 | except Exception: | CODE |
| LOW | backend/pyi_rth_numpy_compat.py | 95 | except Exception: | CODE |
| LOW | backend/backends/hume_backend.py | 165 | except Exception: | CODE |
| LOW | backend/backends/mlx_backend.py | 294 | except Exception as e: | CODE |
| LOW | backend/backends/__init__.py | 748 | except Exception: | CODE |
| LOW | backend/backends/chatterbox_mlx_backend.py | 100 | except Exception: | CODE |
| LOW | backend/backends/base.py | 93 | except Exception as e: | CODE |
| LOW | backend/backends/base.py | 345 | except Exception as e: | CODE |
| MEDIUM | backend/tests/test_whisper_download.py | 23 | print(f"Error: SSE endpoint returned {response.status_code}") | CODE |
| LOW⚡ | backend/tests/test_whisper_download.py | 71 | except Exception as e: | CODE |
| LOW | backend/tests/test_generation_download.py | 59 | except Exception as e: | CODE |
| LOW | backend/tests/test_generation_download.py | 104 | except Exception as e: | CODE |
| LOW | backend/tests/test_generation_download.py | 120 | except Exception as e: | CODE |
| MEDIUM | backend/tests/test_generation_download.py | 121 | print(f"Error getting profiles: {e}") | CODE |
| LOW | backend/tests/test_generation_download.py | 132 | except Exception as e: | CODE |
| LOW⚡ | backend/tests/test_progress.py | 263 | except Exception as e: | CODE |
| LOW⚡ | backend/tests/test_progress.py | 270 | except Exception as e: | CODE |
| LOW⚡ | backend/tests/test_progress.py | 277 | except Exception as e: | CODE |
| LOW⚡ | backend/tests/test_progress.py | 284 | except Exception as e: | CODE |
| LOW | backend/tests/test_rocm_requirements.py | 39 | except Exception: | CODE |
| LOW | backend/tests/test_offline_guard.py | 44 | except Exception as exc: | CODE |
| LOW | backend/tests/test_offline_guard.py | 114 | except Exception as exc: # noqa: BLE001 | CODE |
| LOW | backend/tests/test_offline_guard.py | 121 | except Exception as exc: # noqa: BLE001 | CODE |
| LOW | backend/tests/test_offline_guard.py | 155 | except Exception as exc: | CODE |
| LOW | backend/tests/test_offline_guard.py | 163 | except Exception as exc: | CODE |
| MEDIUM | backend/tests/test_offline_guard.py | 108 | def slow(): | CODE |
| MEDIUM | backend/tests/test_offline_guard.py | 117 | def fast(): | CODE |
| MEDIUM | backend/tests/test_offline_guard.py | 150 | def cached_load(): | CODE |
| MEDIUM | backend/tests/test_offline_guard.py | 158 | def uncached_load(): | CODE |
| LOW | backend/tests/test_refinement_samples.py | 339 | except Exception: | CODE |
| LOW | backend/tests/test_refinement_samples.py | 434 | except Exception as e: | CODE |
| LOW | backend/tests/test_all_models_e2e.py | 186 | except Exception as e: | CODE |
| LOW | backend/tests/test_all_models_e2e.py | 201 | except Exception: | CODE |
| LOW | backend/tests/test_all_models_e2e.py | 619 | except Exception: | CODE |
| LOW | backend/tests/test_all_models_e2e.py | 622 | except Exception as e: | CODE |
| LOW | backend/tests/test_personality_samples.py | 204 | except Exception: | CODE |
| LOW | backend/tests/test_personality_samples.py | 239 | except Exception as e: | CODE |
| LOW | backend/tests/test_personality_samples.py | 316 | except Exception as e: | CODE |
| LOW | backend/tests/test_qwen_download.py | 89 | except Exception as e: | CODE |
| LOW | backend/tests/test_qwen_download.py | 107 | except Exception as e: | CODE |
| 107 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | backend/app.py | 115 | CODE | |
| LOW | backend/app.py | 250 | CODE | |
| LOW | backend/main.py | 10 | CODE | |
| LOW | backend/database/__init__.py | 8 | CODE | |
| LOW | backend/database/__init__.py | 8 | CODE | |
| LOW | backend/database/__init__.py | 8 | CODE | |
| LOW | backend/database/__init__.py | 8 | CODE | |
| LOW | backend/database/__init__.py | 8 | CODE | |
| LOW | backend/database/__init__.py | 8 | CODE | |
| LOW | backend/database/__init__.py | 8 | CODE | |
| LOW | backend/database/__init__.py | 8 | CODE | |
| LOW | backend/database/__init__.py | 8 | CODE | |
| LOW | backend/database/__init__.py | 8 | CODE | |
| LOW | backend/database/__init__.py | 8 | CODE | |
| LOW | backend/database/__init__.py | 8 | CODE | |
| LOW | backend/database/__init__.py | 8 | CODE | |
| LOW | backend/database/__init__.py | 8 | CODE | |
| LOW | backend/database/__init__.py | 8 | CODE | |
| LOW | backend/database/__init__.py | 8 | CODE | |
| LOW | backend/database/__init__.py | 8 | CODE | |
| LOW | backend/database/__init__.py | 27 | CODE | |
| LOW | backend/database/__init__.py | 27 | CODE | |
| LOW | backend/database/__init__.py | 27 | CODE | |
| LOW | backend/database/__init__.py | 27 | CODE | |
| LOW | backend/database/__init__.py | 27 | CODE | |
| LOW | backend/backends/chatterbox_backend.py | 17 | CODE | |
| LOW | backend/backends/chatterbox_turbo_backend.py | 17 | CODE | |
| LOW | backend/backends/kokoro_backend.py | 20 | CODE | |
| LOW | backend/backends/kokoro_backend.py | 25 | CODE | |
| LOW | backend/backends/qwen_llm_backend.py | 14 | CODE | |
| LOW | backend/backends/qwen_llm_backend.py | 15 | CODE | |
| LOW | backend/backends/hume_backend.py | 23 | CODE | |
| LOW | backend/backends/pytorch_backend.py | 17 | CODE | |
| LOW | backend/backends/pytorch_backend.py | 17 | CODE | |
| LOW | backend/backends/mlx_backend.py | 5 | CODE | |
| LOW | backend/backends/mlx_backend.py | 35 | CODE | |
| LOW | backend/backends/mlx_backend.py | 35 | CODE | |
| LOW | backend/backends/__init__.py | 13 | CODE | |
| LOW | backend/backends/qwen_voice_design_backend.py | 25 | CODE | |
| LOW | backend/backends/luxtts_backend.py | 14 | CODE | |
| LOW | backend/backends/qwen_custom_voice_backend.py | 24 | CODE | |
| LOW | backend/backends/base.py | 13 | CODE | |
| LOW | backend/backends/base.py | 141 | CODE | |
| LOW | backend/tests/test_cors.py | 15 | CODE | |
| LOW | backend/tests/test_cors.py | 17 | CODE | |
| LOW | backend/tests/test_whisper_download.py | 8 | CODE | |
| LOW | backend/tests/test_generation_download.py | 11 | CODE | |
| LOW | backend/tests/test_rocm_backends.py | 13 | CODE | |
| LOW | backend/tests/test_rocm_download.py | 10 | CODE | |
| LOW | backend/tests/test_rocm_download.py | 13 | CODE | |
| LOW | backend/tests/test_rocm_download.py | 13 | CODE | |
| LOW | backend/tests/test_refinement_samples.py | 27 | CODE | |
| LOW | backend/tests/test_story_export.py | 8 | CODE | |
| LOW | backend/tests/test_all_models_e2e.py | 13 | CODE | |
| LOW | backend/tests/test_all_models_e2e.py | 28 | CODE | |
| LOW | backend/tests/test_audioop_python313.py | 39 | CODE | |
| LOW | backend/tests/test_hume_encode_inference_mode.py | 3 | CODE | |
| LOW | backend/tests/test_personality_samples.py | 25 | CODE | |
| LOW | backend/utils/effects.py | 20 | CODE | |
| LOW | backend/utils/platform_detect.py | 122 | CODE | |
| 32 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | backend/server.py | 151 | CODE | |
| LOW | backend/server.py | 181 | CODE | |
| LOW | backend/server.py | 213 | CODE | |
| LOW | backend/build_binary.py | 25 | CODE | |
| LOW | backend/pyi_rth_numpy_compat.py | 35 | CODE | |
| LOW | backend/database/seed.py | 50 | CODE | |
| LOW | backend/database/migrations.py | 66 | CODE | |
| LOW | backend/database/migrations.py | 366 | CODE | |
| LOW | backend/backends/chatterbox_backend.py | 79 | CODE | |
| LOW | backend/backends/chatterbox_turbo_backend.py | 81 | CODE | |
| LOW | backend/backends/kokoro_backend.py | 242 | CODE | |
| LOW | backend/backends/kokoro_backend.py | 267 | CODE | |
| LOW | backend/backends/hume_backend.py | 222 | CODE | |
| LOW | backend/backends/hume_backend.py | 246 | CODE | |
| LOW | backend/backends/pytorch_backend.py | 142 | CODE | |
| LOW | backend/backends/mlx_backend.py | 160 | CODE | |
| LOW | backend/backends/mlx_backend.py | 215 | CODE | |
| LOW | backend/backends/mlx_backend.py | 409 | CODE | |
| LOW | backend/backends/mlx_backend.py | 238 | CODE | |
| LOW | backend/backends/mlx_backend.py | 428 | CODE | |
| LOW | backend/backends/__init__.py | 782 | CODE | |
| LOW | backend/backends/base.py | 44 | CODE | |
| LOW | backend/tests/test_generation_download.py | 15 | CODE | |
| LOW | backend/tests/test_rocm_backends.py | 37 | CODE | |
| LOW | backend/tests/test_rocm_backends.py | 53 | CODE | |
| LOW | backend/tests/test_progress.py | 120 | CODE | |
| LOW | backend/tests/test_progress.py | 166 | CODE | |
| LOW | backend/tests/test_progress.py | 187 | CODE | |
| LOW | backend/tests/test_refinement_samples.py | 407 | CODE | |
| LOW | backend/tests/test_all_models_e2e.py | 215 | CODE | |
| LOW | backend/tests/test_all_models_e2e.py | 286 | CODE | |
| LOW | backend/tests/test_all_models_e2e.py | 498 | CODE | |
| LOW | backend/tests/test_personality_samples.py | 285 | CODE | |
| LOW | backend/tests/test_qwen_download.py | 23 | CODE | |
| LOW | backend/tests/test_qwen_download.py | 135 | CODE | |
| LOW | backend/tests/test_qwen_download.py | 160 | CODE | |
| LOW | backend/utils/hf_progress.py | 30 | CODE | |
| LOW | backend/utils/hf_progress.py | 217 | CODE | |
| LOW | backend/utils/hf_progress.py | 116 | CODE | |
| LOW | backend/utils/images.py | 47 | CODE | |
| LOW | backend/utils/hf_offline_patch.py | 63 | CODE | |
| LOW | backend/utils/audio.py | 150 | CODE | |
| LOW | backend/utils/progress.py | 35 | CODE | |
| LOW | backend/utils/progress.py | 190 | CODE | |
| LOW | backend/routes/tasks.py | 46 | CODE | |
| LOW | backend/routes/models.py | 184 | CODE | |
| LOW | backend/routes/models.py | 289 | CODE | |
| LOW | backend/routes/models.py | 517 | CODE | |
| LOW | backend/routes/models.py | 215 | CODE | |
| LOW | backend/routes/health.py | 57 | CODE | |
| LOW | backend/routes/health.py | 196 | CODE | |
| LOW | backend/services/rocm.py | 140 | CODE | |
| LOW | backend/services/rocm.py | 257 | CODE | |
| LOW | backend/services/task_queue.py | 39 | CODE | |
| LOW | backend/services/generation.py | 46 | CODE | |
| LOW | backend/services/export_import.py | 123 | CODE | |
| LOW | backend/services/export_import.py | 333 | CODE | |
| LOW | backend/services/captures.py | 60 | CODE | |
| LOW | backend/services/cuda.py | 167 | CODE | |
| LOW | backend/services/history.py | 321 | CODE | |
| 1 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | app/src/i18n/locales/ja/translation.json | 256 | "placeholder": "温かくしゃがれた年配の男性の声。ゆっくりしたスコットランド訛りで、少し愉快そうな響き。", | CODE |
| LOW | app/src/i18n/locales/ja/translation.json | 379 | "placeholder": "リファレンステキストを入力…", | CODE |
| LOW | app/src/i18n/locales/ja/translation.json | 433 | "placeholder": "プリセットを選択するか、新しく作成します", | CODE |
| LOW | app/src/i18n/locales/ja/translation.json | 704 | "placeholder": { | CODE |
| LOW | app/src/i18n/locales/ja/translation.json | 720 | "placeholder": "デリバリー指示 — 例:暖かくゆっくり話す、はっきりと威厳をもって…" | CODE |
| LOW | app/src/i18n/locales/ja/translation.json | 723 | "placeholder": "ボイスを選択…" | CODE |
| LOW | app/src/i18n/locales/it/translation.json | 256 | "placeholder": "Un uomo anziano dalla voce calda e roca, con una lenta cadenza scozzese e un pizzico di ironia.", | CODE |
| LOW | app/src/i18n/locales/it/translation.json | 379 | "placeholder": "Inserisci il testo di riferimento…", | CODE |
| LOW | app/src/i18n/locales/it/translation.json | 433 | "placeholder": "Seleziona un preset o creane uno nuovo", | CODE |
| LOW | app/src/i18n/locales/it/translation.json | 704 | "placeholder": { | CODE |
| LOW | app/src/i18n/locales/it/translation.json | 720 | "placeholder": "Istruzioni di pronuncia — es. Parla lentamente con calore, Autorevole e chiaro…" | CODE |
| LOW | app/src/i18n/locales/it/translation.json | 723 | "placeholder": "Seleziona una voce…" | CODE |
| LOW | app/src/i18n/locales/zh-CN/translation.json | 256 | "placeholder": "一位声音温暖沙哑的年长男性,带着缓慢的苏格兰口音和一丝笑意。", | CODE |
| LOW | app/src/i18n/locales/zh-CN/translation.json | 379 | "placeholder": "输入参考文本……", | CODE |
| LOW | app/src/i18n/locales/zh-CN/translation.json | 433 | "placeholder": "选择一个预设或创建新的", | CODE |
| LOW | app/src/i18n/locales/zh-CN/translation.json | 704 | "placeholder": { | CODE |
| LOW | app/src/i18n/locales/zh-CN/translation.json | 720 | "placeholder": "传达说明——例如:温柔缓慢地说、威严清晰…" | CODE |
| LOW | app/src/i18n/locales/zh-CN/translation.json | 723 | "placeholder": "选择声音…" | CODE |
| LOW | app/src/i18n/locales/zh-TW/translation.json | 256 | "placeholder": "一位聲音溫暖沙啞的年長男性,帶著緩慢的蘇格蘭口音和一絲笑意。", | CODE |
| LOW | app/src/i18n/locales/zh-TW/translation.json | 379 | "placeholder": "輸入參考文字……", | CODE |
| LOW | app/src/i18n/locales/zh-TW/translation.json | 433 | "placeholder": "選擇預設集或建立新的", | CODE |
| LOW | app/src/i18n/locales/zh-TW/translation.json | 704 | "placeholder": { | CODE |
| LOW | app/src/i18n/locales/zh-TW/translation.json | 720 | "placeholder": "傳達指示——例如:溫柔緩慢地說、威嚴清晰…" | CODE |
| LOW | app/src/i18n/locales/zh-TW/translation.json | 723 | "placeholder": "選擇聲音…" | CODE |
| LOW | app/src/i18n/locales/pt-BR/translation.json | 256 | "placeholder": "Um homem mais velho de voz quente e rouca, com sotaque escocês pausado e um toque de humor.", | CODE |
| LOW | app/src/i18n/locales/pt-BR/translation.json | 379 | "placeholder": "Digite o texto de referência…", | CODE |
| LOW | app/src/i18n/locales/pt-BR/translation.json | 433 | "placeholder": "Selecione um preset ou crie um novo", | CODE |
| LOW | app/src/i18n/locales/pt-BR/translation.json | 704 | "placeholder": { | CODE |
| LOW | app/src/i18n/locales/pt-BR/translation.json | 720 | "placeholder": "Instruções de entrega — ex.: Fale devagar e com calor, Autoritário e claro…" | CODE |
| LOW | app/src/i18n/locales/pt-BR/translation.json | 723 | "placeholder": "Selecione uma voz…" | CODE |
| LOW | app/src/i18n/locales/ko/translation.json | 256 | "placeholder": "따뜻하고 거친 노년 남성의 목소리. 느릿한 스코틀랜드 억양에 약간의 유머가 묻어남.", | CODE |
| LOW | app/src/i18n/locales/ko/translation.json | 379 | "placeholder": "참조 텍스트 입력…", | CODE |
| LOW | app/src/i18n/locales/ko/translation.json | 433 | "placeholder": "프리셋을 선택하거나 새로 만드세요", | CODE |
| LOW | app/src/i18n/locales/ko/translation.json | 704 | "placeholder": { | CODE |
| LOW | app/src/i18n/locales/ko/translation.json | 720 | "placeholder": "전달 지시사항 — 예: 천천히 따뜻하게 말하기, 권위적으로 명확하게…" | CODE |
| LOW | app/src/i18n/locales/ko/translation.json | 723 | "placeholder": "음성 선택…" | CODE |
| LOW | app/src/i18n/locales/fr/translation.json | 256 | "placeholder": "Un homme âgé à la voix chaude et rocailleuse, avec un accent écossais lent et une pointe d'amuseme | CODE |
| LOW | app/src/i18n/locales/fr/translation.json | 379 | "placeholder": "Saisissez le texte de référence…", | CODE |
| LOW | app/src/i18n/locales/fr/translation.json | 433 | "placeholder": "Sélectionnez un préréglage ou créez-en un nouveau", | CODE |
| LOW | app/src/i18n/locales/fr/translation.json | 704 | "placeholder": { | CODE |
| LOW | app/src/i18n/locales/fr/translation.json | 720 | "placeholder": "Instructions d'interprétation — ex. Parle lentement avec chaleur, Autoritaire et clair…" | CODE |
| LOW | app/src/i18n/locales/fr/translation.json | 723 | "placeholder": "Sélectionnez une voix…" | CODE |
| LOW | app/src/i18n/locales/es/translation.json | 256 | "placeholder": "Un hombre mayor de voz cálida y rasposa, con un acento escocés pausado y un punto de guasa.", | CODE |
| LOW | app/src/i18n/locales/es/translation.json | 379 | "placeholder": "Introduce el texto de referencia…", | CODE |
| LOW | app/src/i18n/locales/es/translation.json | 433 | "placeholder": "Selecciona un preajuste o crea uno nuevo", | CODE |
| LOW | app/src/i18n/locales/es/translation.json | 704 | "placeholder": { | CODE |
| LOW | app/src/i18n/locales/es/translation.json | 720 | "placeholder": "Instrucciones de interpretación — p. ej. Habla despacio y con calidez, Con autoridad y claridad…" | CODE |
| LOW | app/src/i18n/locales/es/translation.json | 723 | "placeholder": "Selecciona una voz…" | CODE |
| LOW | app/src/i18n/locales/en/translation.json | 256 | "placeholder": "A warm, gravelly older man with a slow Scottish lilt and a hint of amusement.", | CODE |
| LOW | app/src/i18n/locales/en/translation.json | 379 | "placeholder": "Enter reference text…", | CODE |
| LOW | app/src/i18n/locales/en/translation.json | 433 | "placeholder": "Select a preset or create a new one", | CODE |
| LOW | app/src/i18n/locales/en/translation.json | 704 | "placeholder": { | CODE |
| LOW | app/src/i18n/locales/en/translation.json | 720 | "placeholder": "Delivery instructions — e.g. Speak slowly with warmth, Authoritative and clear…", | CODE |
| LOW | app/src/i18n/locales/en/translation.json | 724 | "placeholder": "Select a voice…" | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | backend/server.py | 107 | logger = logging.getLogger(__name__) | CODE |
| LOW | backend/config.py | 11 | logger = logging.getLogger(__name__) | CODE |
| LOW | backend/build_binary.py | 17 | logger = logging.getLogger(__name__) | CODE |
| LOW | backend/app.py | 39 | logger = logging.getLogger(__name__) | CODE |
| LOW | backend/database/session.py | 22 | logger = logging.getLogger(__name__) | CODE |
| LOW | backend/database/session.py | 44 | def _set_sqlite_pragmas(dbapi_connection, _record) -> None: | CODE |
| LOW | backend/database/__init__.py | 29 | __all__ = [ | CODE |
| LOW | backend/database/seed.py | 9 | logger = logging.getLogger(__name__) | CODE |
| LOW | backend/database/migrations.py | 31 | logger = logging.getLogger(__name__) | CODE |
| LOW | backend/backends/chatterbox_backend.py | 28 | logger = logging.getLogger(__name__) | CODE |
| LOW | backend/backends/chatterbox_turbo_backend.py | 28 | logger = logging.getLogger(__name__) | CODE |
| LOW | backend/backends/omnivoice_backend.py | 48 | logger = logging.getLogger(__name__) | CODE |
| LOW | backend/backends/kokoro_backend.py | 32 | logger = logging.getLogger(__name__) | CODE |
| LOW | backend/backends/qwen_llm_backend.py | 24 | logger = logging.getLogger(__name__) | CODE |
| LOW | backend/backends/hume_backend.py | 34 | logger = logging.getLogger(__name__) | CODE |
| LOW | backend/backends/openai_compat_backend.py | 23 | logger = logging.getLogger(__name__) | CODE |
| LOW | backend/backends/pytorch_backend.py | 11 | logger = logging.getLogger(__name__) | CODE |
| LOW | backend/backends/mlx_backend.py | 12 | logger = logging.getLogger(__name__) | CODE |
| LOW | backend/backends/chatterbox_mlx_backend.py | 31 | logger = logging.getLogger(__name__) | CODE |
| LOW | backend/backends/qwen_voice_design_backend.py | 33 | logger = logging.getLogger(__name__) | CODE |
| LOW | backend/backends/luxtts_backend.py | 25 | logger = logging.getLogger(__name__) | CODE |
| LOW | backend/backends/qwen_custom_voice_backend.py | 32 | logger = logging.getLogger(__name__) | CODE |
| LOW | backend/backends/base.py | 23 | logger = logging.getLogger(__name__) | CODE |
| LOW | backend/utils/hf_progress.py | 11 | logger = logging.getLogger(__name__) | CODE |
| LOW | backend/utils/transformers5_compat.py | 31 | logger = logging.getLogger(__name__) | CODE |
| LOW | backend/utils/cache.py | 13 | logger = logging.getLogger(__name__) | CODE |
| LOW | backend/utils/hf_offline_patch.py | 14 | logger = logging.getLogger(__name__) | CODE |
| LOW | backend/routes/rocm.py | 13 | logger = logging.getLogger(__name__) | CODE |
| LOW | backend/routes/speak.py | 22 | logger = logging.getLogger(__name__) | CODE |
| LOW | backend/routes/generations.py | 20 | logger = logging.getLogger(__name__) | CODE |
| LOW | backend/routes/events.py | 18 | logger = logging.getLogger(__name__) | CODE |
| LOW | backend/routes/llm.py | 14 | logger = logging.getLogger(__name__) | CODE |
| LOW | backend/routes/captures.py | 17 | logger = logging.getLogger(__name__) | CODE |
| LOW | backend/routes/cuda.py | 13 | logger = logging.getLogger(__name__) | CODE |
| LOW | backend/routes/openai_compat.py | 50 | logger = logging.getLogger(__name__) | CODE |
| LOW | backend/routes/profiles.py | 20 | logger = logging.getLogger(__name__) | CODE |
| LOW | backend/mcp_server/server.py | 22 | logger = logging.getLogger(__name__) | CODE |
| LOW | backend/mcp_server/tools.py | 29 | logger = logging.getLogger(__name__) | CODE |
| LOW | backend/mcp_server/__init__.py | 10 | __all__ = ["mount_into"] | CODE |
| LOW | backend/mcp_server/context.py | 22 | logger = logging.getLogger(__name__) | CODE |
| LOW | backend/services/rocm.py | 30 | logger = logging.getLogger(__name__) | CODE |
| LOW | backend/services/cloud.py | 28 | logger = logging.getLogger(__name__) | CODE |
| LOW | backend/services/captures.py | 27 | logger = logging.getLogger(__name__) | CODE |
| LOW | backend/services/cuda.py | 29 | logger = logging.getLogger(__name__) | CODE |
| LOW | backend/services/versions.py | 25 | logger = logging.getLogger(__name__) | CODE |
| LOW | backend/services/profiles.py | 33 | logger = logging.getLogger(__name__) | CODE |
| LOW | backend/services/history.py | 18 | logger = logging.getLogger(__name__) | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | docker-compose.rocm.yml | 21 | COMMENT | |
| LOW | tauri/src-tauri/src/keyboard_layout.rs | 1 | //! Layout-aware resolution of the keycode whose current-layout translation | COMMENT |
| LOW | tauri/src-tauri/src/keyboard_layout.rs | 21 | COMMENT | |
| LOW | tauri/src-tauri/src/input_monitoring.rs | 1 | //! Platform permission gate for the global keyboard tap. | COMMENT |
| LOW | tauri/src-tauri/src/input_monitoring.rs | 21 | //! `enable_hotkey` calls `request` on first invocation so the prompt fires | COMMENT |
| LOW | tauri/src-tauri/src/input_monitoring.rs | 41 | COMMENT | |
| LOW | tauri/src-tauri/src/synthetic_keys.rs | 1 | //! Synthetic keyboard event posting for the auto-paste pipeline. | COMMENT |
| LOW | tauri/src-tauri/src/synthetic_keys.rs | 21 | //! [`crate::keyboard_layout`] — Cmd+V is matched against the layout- | COMMENT |
| LOW | tauri/src-tauri/src/synthetic_keys.rs | 101 | let source = CGEventSourceCreate(K_CG_EVENT_SOURCE_STATE_HID_SYSTEM_STATE); | COMMENT |
| LOW | tauri/src-tauri/src/accessibility.rs | 1 | //! Platform permission gate for the auto-paste pipeline. | COMMENT |
| LOW | tauri/src-tauri/src/main.rs | 61 | } | COMMENT |
| LOW | tauri/src-tauri/src/main.rs | 961 | } | COMMENT |
| LOW | tauri/src-tauri/src/main.rs | 981 | const VOICEBOX_BUNDLE_ID: &str = "voicebox.exe"; | COMMENT |
| LOW | tauri/src-tauri/src/main.rs | 1001 | accessibility::is_trusted() | COMMENT |
| LOW | tauri/src-tauri/src/main.rs | 1061 | /// is true) and from the settings toggle. | COMMENT |
| LOW | tauri/src-tauri/src/main.rs | 1121 | /// Push a new chord configuration into the running `HotkeyMonitor`. Called | COMMENT |
| LOW | tauri/src-tauri/src/main.rs | 1181 | Err("Input Monitoring settings pane is only implemented on macOS".into()) | COMMENT |
| LOW | tauri/src-tauri/src/main.rs | 1201 | /// `send_paste` failure is isolated from the restore decision: we always | COMMENT |
| LOW | tauri/src-tauri/src/main.rs | 1421 | // the main thread, and register an observer for layout | COMMENT |
| LOW | tauri/src-tauri/src/main.rs | 1441 | // user sees and interacts with nothing. | COMMENT |
| LOW | tauri/src-tauri/src/clipboard.rs | 1 | //! Snapshot / write / restore helpers around the system clipboard. | COMMENT |
| LOW | tauri/src-tauri/src/clipboard.rs | 21 | //! clipboard guard. CF_UNICODETEXT, CF_HDROP, CF_DIB (bitmap data in | COMMENT |
| LOW | tauri/src-tauri/src/clipboard.rs | 281 | //! fan-out. | COMMENT |
| LOW | tauri/src-tauri/src/key_codes.rs | 1 | //! Stable string ↔ `keytap::Key` mapping for chord persistence. | COMMENT |
| LOW | tauri/src-tauri/src/focus_capture.rs | 1 | //! Captures the focused-UI snapshot at chord-start so auto-paste can land | COMMENT |
| LOW | tauri/src-tauri/src/focus_capture.rs | 21 | //! Activation walks top-level windows for the saved PID and calls | COMMENT |
| LOW | tauri/src-tauri/src/focus_capture.rs | 241 | COMMENT | |
| LOW | tauri/src-tauri/src/focus_capture.rs | 381 | /// Best-effort `UIAutomation::GetFocusedElement().CurrentClassName()`. | COMMENT |
| LOW | tauri/src-tauri/src/hotkey_monitor.rs | 1 | //! Global hotkey → dictation effect bridge. | COMMENT |
| LOW | tauri/src-tauri/src/hotkey_monitor.rs | 41 | // Public types | COMMENT |
| LOW | tauri/src-tauri/src/speak_monitor.rs | 1 | //! Rust-side subscriber for the backend `/events/speak` SSE stream. | COMMENT |
| LOW | tauri/src-tauri/src/speak_monitor.rs | 21 | //! long-term outages stop filling stderr with reconnect log lines. | COMMENT |
| LOW | backend/requirements.txt | 41 | # HumeAI TADA sub-dependencies (hume-tada itself is installed | COMMENT |
| LOW | backend/requirements.txt | 61 | # spacy model for misaki English G2P — must be pre-installed or misaki | COMMENT |
| LOW | backend/pyi_rth_torch_compiler_disable.py | 421 | # everything that isn't create_module/exec_module (or __getattr__/init). | COMMENT |
| LOW | backend/pyi_rth_torch_compiler_disable.py | 481 | # the child). | COMMENT |
| LOW | backend/pyi_rth_torch_compiler_disable.py | 521 | COMMENT | |
| LOW | backend/requirements-mlx.txt | 1 | # MLX-specific dependencies (Apple Silicon only) | COMMENT |
| LOW | backend/requirements-mlx.txt | 21 | # (huggingface_hub, librosa, mlx-lm, numba, numpy, protobuf, pyloudnorm, | COMMENT |
| LOW | backend/build_binary.py | 61 | # stdout/stderr for Tauri to capture logs. | COMMENT |
| LOW | backend/build_binary.py | 301 | # The vendored codec builds its two sub-models through | COMMENT |
| LOW | backend/build_binary.py | 401 | # torch/lib/ directly, so none of the rocm_sdk collection below applies — | COMMENT |
| LOW | backend/backends/pytorch_backend.py | 341 | def _transcribe_sync(): | COMMENT |
| LOW | backend/utils/hf_offline_patch.py | 21 | # bools, and the hot paths (``_http._default_backend_factory``, | COMMENT |
| LOW | backend/mcp_server/context.py | 61 | # ignored so the Settings UI's "last heard from" column only reflects | COMMENT |
| LOW | backend/services/refinement.py | 201 | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | backend/server.py | 190 | # Check if process has actually exited | COMMENT |
| LOW | backend/config.py | 14 | # Set VOICEBOX_MODELS_DIR to an absolute path before starting the server. | COMMENT |
| LOW | backend/app.py | 71 | # Check if any GPU needs the override (RDNA 2 and older) | COMMENT |
| LOW | backend/backends/mlx_backend.py | 275 | # Check if generate accepts ref_audio parameter | COMMENT |
| LOW⚡ | backend/tests/test_whisper_download.py | 81 | # Check if server is running | COMMENT |
| LOW | backend/tests/test_whisper_download.py | 153 | # Check if we got meaningful progress | COMMENT |
| LOW | backend/tests/test_generation_download.py | 264 | # Check if server is running | COMMENT |
| LOW | backend/tests/test_qwen_download.py | 167 | # Check if server is running | COMMENT |
| LOW | backend/tests/test_qwen_download.py | 288 | # Check if progress increased over time | COMMENT |
| LOW | backend/utils/chunked_tts.py | 167 | # Check if the cut falls inside a bracket tag; if so, move before it | COMMENT |
| LOW | backend/utils/progress.py | 45 | # Check if we're in the main event loop thread | COMMENT |
| LOW | backend/utils/progress.py | 115 | # Check if we should notify listeners (throttling) | COMMENT |
| LOW⚡ | backend/services/rocm.py | 124 | # Check if the binary version matches the expected app version | COMMENT |
| LOW | backend/services/export_import.py | 73 | # Check if profile has avatar | COMMENT |
| LOW | backend/services/export_import.py | 388 | # Check if we should match an existing profile or create metadata | COMMENT |
| LOW | backend/services/stories.py | 280 | # Check if generation is already in story | COMMENT |
| LOW⚡ | backend/services/cuda.py | 151 | # Check if the binary version matches the expected app version | COMMENT |
| LOW | backend/services/channels.py | 74 | # Check if name already exists | COMMENT |
| LOW | backend/services/channels.py | 125 | # Check if name already exists (excluding current channel) | COMMENT |
| LOW | scripts/prepare-release.sh | 24 | # Check if public key is in tauri.conf.json | COMMENT |
| LOW | scripts/generate-api.sh | 8 | # Check if backend is running | COMMENT |
| LOW | scripts/generate-api.sh | 13 | # Check if virtual environment exists | COMMENT |
| LOW | scripts/generate-api.sh | 57 | # Check if openapi-typescript-codegen is installed | COMMENT |
| LOW | scripts/build-server.sh | 16 | # Check if PyInstaller is installed | COMMENT |
| LOW⚡ | scripts/update-icons.sh | 18 | # Check if source exists | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | backend/STYLE_GUIDE.md | 104 | Load and concatenate all voice prompt files for a profile. Reads .wav/.mp3/.flac files from the profile directory, | STRING |
| HIGH | backend/backends/omnivoice_backend.py | 286 | Generate audio from text using OmniVoice. Args: text: Text to synthesize. voic | STRING |
| HIGH | backend/services/export_import.py | 46 | Export a voice profile to a ZIP archive. Args: profile_id: Profile ID to export db: Databa | STRING |
| HIGH | backend/services/export_import.py | 124 | Import a voice profile from a ZIP archive. Args: file_bytes: ZIP file contents db: Databas | STRING |
| HIGH | backend/services/export_import.py | 246 | Export a generation to a ZIP archive. Args: generation_id: Generation ID to export db: Dat | STRING |
| HIGH | backend/services/export_import.py | 334 | Import a generation from a ZIP archive. Args: file_bytes: ZIP file contents db: Database s | STRING |
| HIGH | backend/services/profiles.py | 171 | Create a new voice profile. Args: data: Profile creation data db: Database session Return | STRING |
| HIGH | backend/services/profiles.py | 394 | Update a voice profile. Args: profile_id: Profile ID data: Updated profile data db: Da | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | backend/STYLE_GUIDE.md | 380 | services/ # Business logic, CRUD, orchestration | CODE |
| MEDIUM | backend/README.md | 31 | services/ # Business logic, CRUD, orchestration | CODE |
| MEDIUM⚡ | backend/tests/test_refinement_collapse.py | 50 | # Classic Whisper tail hallucination. Word-level pass sees no | COMMENT |
| MEDIUM⚡ | backend/tests/test_refinement_collapse.py | 86 | # Common Chinese Whisper hallucination: "thanks for watching". | COMMENT |
| MEDIUM⚡ | backend/tests/test_refinement_collapse.py | 99 | # frequent Japanese Whisper tail hallucination. | COMMENT |
| MEDIUM | backend/tests/test_refinement_samples.py | 364 | # Same few-shot pairs the refinement service uses — keeps the | COMMENT |
| MEDIUM | backend/services/__init__.py | 1 | # Services layer — generation orchestration and background task management. | COMMENT |
| MEDIUM | backend/services/refinement.py | 28 | # pass will detect. Covers every Whisper hallucination phrase we've | COMMENT |
| MEDIUM | backend/services/refinement.py | 98 | # ("wooooooow", "hmmmmm") that aren't hallucinations. re.DOTALL so a | COMMENT |
| MEDIUM | docs/PROJECT_STATUS.md | 605 | 4. **Instruct support fills a real gap** (#173, #224, #303). Qwen CustomVoice partially addresses it with preset speaker | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | backend/models.py | 397 | description="When true and the profile has a personality prompt, the input text is rewritten in-character before | CODE |
| HIGH⚡ | backend/tests/test_whisper_download.py | 86 | print(" cd backend && python main.py") | CODE |
| HIGH | backend/tests/test_generation_download.py | 269 | print(" cd backend && python main.py") | CODE |
| HIGH | backend/tests/test_qwen_download.py | 8 | cd backend && python -m tests.test_qwen_download | STRING |
| HIGH | backend/tests/test_qwen_download.py | 11 | - Server must be running: cd backend && python main.py | STRING |
| HIGH | backend/tests/test_qwen_download.py | 172 | print(" cd backend && python main.py") | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | backend/utils/hf_progress.py | 288 | # Create a wrapper that calls our tracking | COMMENT |
| MEDIUM | backend/utils/dac_shim.py | 61 | # Create the module tree: dac -> dac.nn -> dac.nn.layers | COMMENT |
| MEDIUM | backend/services/profiles.py | 662 | # Create a hash of sample IDs to identify this specific combination | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | backend/pyi_rth_torch_compiler_disable.py | 438 | # fresh compile() from source. Easiest robust fix: read the source | COMMENT |
| MEDIUM | backend/tests/test_personality_samples.py | 298 | # per-request to /profiles/{id}/compose. The harness swaps it | COMMENT |
| MEDIUM | backend/utils/hf_offline_patch.py | 213 | """Make transformers' tokenizer load robust to HuggingFace metadata failures. | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | tauri/src-tauri/gen/schemas/acl-manifests.json | 1 | {"core":{"default_permission":{"identifier":"default","description":"Default core plugins set.","permissions":["core:pat | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | backend/tests/test_mlx_unload_clears_cache.py | 127 | CODE |