The open-source AI voice studio. Clone, dictate, create.
This report presents the forensic synthetic code analysis of jamiepine/voicebox, a TypeScript project with 41,115 GitHub stars. SynthScan v2.0 examined 108,340 lines of code across 495 source files, recording 707 pattern matches distributed across 15 syntactic categories. The overall adjusted score of 9.9 places this repository in the Low AI signal band.
The scanner applied 160+ deterministic lexical heuristics, multi-line block detectors, abstract syntax tree depth profilers, and a cross-file Jaccard similarity matrix to construct a statistically normalised synthetic code estimate. All matches are individually weighted by severity coefficient and contextual multiplier before summation, and the resulting headline score is temporally discounted to account for the repository's development history relative to the commercial emergence of large language model coding tooling (November 2022 onward).
This chart maps the temporal evolution of the adjusted synthetic code score across successive scan runs. An upward trajectory indicates ongoing incorporation of AI-generated code or expanding LLM-assisted scaffolding; a stable or declining trajectory may reflect active human refactoring, code removal, or the adoption of stricter authorship policies. The dashed secondary line (right axis) independently tracks total raw pattern hit count, which can diverge from the normalised score when codebase size changes significantly between scans.
Classifies detected patterns by their diagnostic confidence and structural impact. CRITICAL patterns (coefficient 10) represent definitive synthetic signatures — hallucinated imports, explicit LLM attribution metadata — virtually never produced by human authors. HIGH (5) indicates strong structural tells such as cross-file repetition or cross-linguistic idioms. MEDIUM (2) covers recognisable conversational padding and AI-specific vocabulary. LOW (1) captures subtle indicators like tautological comments and generic boilerplate that require density to carry independent signal.
This horizontal bar chart decomposes the repository's raw synthetic code score by top-level directory, allowing you to pinpoint precisely which modules or components carry the highest AI authorship density. Directories with disproportionately high scores relative to their size warrant targeted manual review: concentrated AI signatures often trace back to mass-generated configuration layers, auto-ported test suites, LLM-scaffolded boilerplate classes, or entire subsystems authored under heavy copilot assistance. Use this view to prioritise your human code-review effort.
The scanner identified 707 distinct pattern matches across 15 syntactic categories. Each entry below represents a discrete location in the source code where the engine recorded a statistically significant AI authorship indicator. 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 diagnostic confidence level (CRITICAL / HIGH / MEDIUM / LOW). The Context column identifies whether the match occurred inside executable code, an inline comment, or a string literal — comment-context matches receive a ×1.5 weight because LLMs systematically over-annotate. The ⚡ bolt icon marks clustered matches: three or more patterns within a 10-line window, each receiving an additional ×1.5 density multiplier as dense clusters constitute far stronger evidence of synthetic authorship than isolated hits.
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | landing/src/components/CapturesMockup.tsx | 23 | // ─── Sidebar (matches ControlUI exactly) ─────────────────────────────────── | COMMENT |
| MEDIUM | landing/src/components/CapturesMockup.tsx | 81 | // ─── FakeWaveform (ported from CapturesTab.tsx) ──────────────────────────── | COMMENT |
| MEDIUM | landing/src/components/CapturesMockup.tsx | 119 | // ─── Data ─────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | landing/src/components/CapturesMockup.tsx | 235 | // ─── Capture list row ─────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | landing/src/components/CapturesMockup.tsx | 274 | // ─── Detail view ──────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | landing/src/components/CapturesMockup.tsx | 405 | // ─── Main mockup ──────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | landing/src/components/Features.tsx | 7 | // ─── Lazy load wrapper ────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | landing/src/components/Features.tsx | 44 | // ─── Animation: Voice Cloning ─────────────────────────────────────────────── | COMMENT |
| MEDIUM | landing/src/components/Features.tsx | 114 | // ─── Mini waveform for clips ──────────────────────────────────────────────── | COMMENT |
| MEDIUM | landing/src/components/Features.tsx | 175 | // ─── Animation: Stories Editor ─────────────────────────────────────────────── | COMMENT |
| MEDIUM | landing/src/components/Features.tsx | 453 | // ─── Animation: Effects Pipeline ──────────────────────────────────────────── | COMMENT |
| MEDIUM | landing/src/components/Features.tsx | 547 | // ─── Animation: Local or Remote ───────────────────────────────────────────── | COMMENT |
| MEDIUM | landing/src/components/Features.tsx | 602 | // ─── Animation: Transcription ─────────────────────────────────────────────── | COMMENT |
| MEDIUM | landing/src/components/Features.tsx | 648 | // ─── Animation: Unlimited Length ───────────────────────────────────────────── | COMMENT |
| MEDIUM | landing/src/components/Features.tsx | 761 | // ─── Feature data ─────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | landing/src/components/Features.tsx | 808 | // ─── Feature Card ─────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | landing/src/components/Features.tsx | 832 | // ─── Features Section ─────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | landing/src/components/VoiceCreator.tsx | 7 | // ─── Waveform bars generator ──────────────────────────────────────────────── | COMMENT |
| MEDIUM | landing/src/components/VoiceCreator.tsx | 25 | // ─── Animated waveform background ─────────────────────────────────────────── | COMMENT |
| MEDIUM | landing/src/components/VoiceCreator.tsx | 65 | // ─── Tab content panels ───────────────────────────────────────────────────── | COMMENT |
| MEDIUM | landing/src/components/VoiceCreator.tsx | 350 | // ─── Tab selector ─────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | landing/src/components/VoiceCreator.tsx | 360 | // ─── Main section ─────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | landing/src/components/Personalities.tsx | 7 | // ─── Modes ────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | landing/src/components/Personalities.tsx | 44 | // ─── Persona card ─────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | landing/src/components/Personalities.tsx | 70 | // ─── Mode demo ────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | landing/src/components/Personalities.tsx | 151 | // ─── Bullets ──────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | landing/src/components/Personalities.tsx | 168 | // ─── Section ──────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | landing/src/components/AgentIntegration.tsx | 7 | // ─── Scenarios (the agent console cycles through these) ──────────────────── | COMMENT |
| MEDIUM | landing/src/components/AgentIntegration.tsx | 61 | // ─── Console mockup ───────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | landing/src/components/AgentIntegration.tsx | 112 | // ─── Desktop-floating pill stage ──────────────────────────────────────────── | COMMENT |
| MEDIUM | landing/src/components/AgentIntegration.tsx | 194 | // ─── Code panel ───────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | landing/src/components/AgentIntegration.tsx | 253 | // ─── Support bullets ──────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | landing/src/components/AgentIntegration.tsx | 276 | // ─── Section ──────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | landing/src/components/TokenStats.tsx | 10 | // ── formatters ─────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | landing/src/components/ControlUI.tsx | 22 | // ─── Data ─────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | landing/src/components/ControlUI.tsx | 246 | // ─── Phase system ─────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | landing/src/components/ControlUI.tsx | 259 | // ─── Typewriter ───────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | landing/src/components/ControlUI.tsx | 290 | // ─── Loading bars (simplified react-loaders replacement) ──────────────────── | COMMENT |
| MEDIUM | landing/src/components/ControlUI.tsx | 320 | // ─── Profile Card ─────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | landing/src/components/ControlUI.tsx | 361 | // ─── History Row ──────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | landing/src/components/ControlUI.tsx | 434 | // ─── Floating Generate Box ────────────────────────────────────────────────── | COMMENT |
| MEDIUM | landing/src/components/ControlUI.tsx | 522 | // ─── Main ControlUI ───────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | landing/src/components/CaptureSection.tsx | 7 | // ─── Hero: Hotkey Pill ────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | landing/src/components/CaptureSection.tsx | 150 | // ─── Card: Whisper, sized for every machine ──────────────────────────────── | COMMENT |
| MEDIUM | landing/src/components/CaptureSection.tsx | 213 | // ─── Card: LLM Refinement ─────────────────────────────────────────────────── | COMMENT |
| MEDIUM | landing/src/components/CaptureSection.tsx | 295 | // ─── Card: Agent voice output ─────────────────────────────────────────────── | COMMENT |
| MEDIUM | landing/src/components/CaptureSection.tsx | 400 | // ─── Feature data + card ──────────────────────────────────────────────────── | COMMENT |
| MEDIUM | landing/src/components/CaptureSection.tsx | 445 | // ─── Section ──────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | landing/src/lib/token-stats.ts | 260 | // ── Solana / Helius RPC primitives ─────────────────────────────────────────── | COMMENT |
| MEDIUM | landing/src/lib/token-stats.ts | 385 | // ── Price (Jupiter, no key required) ───────────────────────────────────────── | COMMENT |
| MEDIUM | landing/src/lib/token-stats.ts | 396 | // ── Creator rewards (pump.fun swap-api) ────────────────────────────────────── | COMMENT |
| MEDIUM | landing/src/lib/constants.ts | 19 | // ── Live on-chain tracking config ─────────────────────────────────────────── | COMMENT |
| MEDIUM | app/src/components/Generation/ParalinguisticInput.tsx | 15 | // ── Tag definitions ───────────────────────────────────────────────── | COMMENT |
| MEDIUM | app/src/components/Generation/ParalinguisticInput.tsx | 33 | // ── Helpers ───────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | app/src/components/Generation/ParalinguisticInput.tsx | 107 | // ── Component ─────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | app/src/components/Generation/ParalinguisticInput.tsx | 152 | // ── Sync external value → editor ────────────────────────────── | COMMENT |
| MEDIUM | app/src/components/Generation/ParalinguisticInput.tsx | 163 | // ── Emit plain-text value on input ──────────────────────────── | COMMENT |
| MEDIUM | app/src/components/Generation/ParalinguisticInput.tsx | 172 | // ── Insert a tag badge at the caret ─────────────────────────── | COMMENT |
| MEDIUM | app/src/components/Generation/ParalinguisticInput.tsx | 217 | // ── Handle keydown for autocomplete navigation ──────────────── | COMMENT |
| MEDIUM | app/src/components/Generation/ParalinguisticInput.tsx | 253 | // ── Handle input (check for / trigger) ──────────────────────── | COMMENT |
| 47 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | backend/server.py | 22 | except Exception: | CODE |
| LOW | backend/server.py | 95 | except Exception as e: | CODE |
| LOW | backend/server.py | 140 | except Exception: | CODE |
| LOW | backend/server.py | 304 | except Exception as e: | 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 | 258 | except Exception: | CODE |
| LOW | backend/app.py | 312 | except Exception as e: | CODE |
| LOW | backend/app.py | 337 | except Exception as e: | CODE |
| LOW | backend/app.py | 346 | except Exception as e: | CODE |
| LOW⚡ | backend/app.py | 357 | except Exception: | CODE |
| LOW⚡ | backend/app.py | 361 | except Exception: | CODE |
| LOW⚡ | backend/app.py | 365 | except Exception: | CODE |
| LOW | backend/pyi_rth_numpy_compat.py | 90 | except Exception: | CODE |
| LOW | backend/backends/hume_backend.py | 155 | except Exception: | CODE |
| LOW | backend/backends/mlx_backend.py | 245 | except Exception as e: | CODE |
| LOW | backend/backends/__init__.py | 621 | except Exception: | CODE |
| LOW | backend/backends/base.py | 75 | except Exception as e: | CODE |
| LOW | backend/backends/base.py | 284 | 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 | 91 | except Exception as exc: # noqa: BLE001 | CODE |
| LOW | backend/tests/test_offline_guard.py | 98 | except Exception as exc: # noqa: BLE001 | CODE |
| MEDIUM | backend/tests/test_offline_guard.py | 85 | def slow(): | CODE |
| MEDIUM | backend/tests/test_offline_guard.py | 94 | def fast(): | 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 | 185 | except Exception as e: | CODE |
| LOW | backend/tests/test_all_models_e2e.py | 200 | except Exception: | CODE |
| LOW | backend/tests/test_all_models_e2e.py | 597 | except Exception: | CODE |
| LOW | backend/tests/test_all_models_e2e.py | 600 | 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 |
| LOW | backend/tests/test_qwen_download.py | 130 | except Exception as e: | CODE |
| LOW | backend/tests/test_qwen_download.py | 145 | except Exception as e: | CODE |
| LOW | backend/tests/test_qwen_download.py | 156 | except Exception: | CODE |
| LOW | backend/utils/cache.py | 70 | except Exception: | CODE |
| LOW | backend/utils/cache.py | 116 | except Exception as e: | CODE |
| LOW | backend/utils/cache.py | 124 | except Exception as e: | CODE |
| LOW | backend/utils/cache.py | 150 | except Exception as e: | CODE |
| LOW | backend/utils/platform_detect.py | 55 | except Exception: | CODE |
| 96 more matches not shown… | ||||
| 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 | 162 | export function isProfileCompatibleWithEngine( | CODE |
| LOW | app/src/lib/constants/languages.ts | 76 | 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 | 197 | def _migrate_generation_versions(engine, inspector, tables: set[str]) -> None: | STRING |
| LOW | backend/database/migrations.py | 205 | def _migrate_capture_settings(engine, inspector, tables: set[str]) -> None: | STRING |
| LOW | backend/backends/__init__.py | 259 | def _get_qwen_custom_voice_configs() -> list[ModelConfig]: | CODE |
| LOW | backend/backends/__init__.py | 285 | def _get_non_qwen_tts_configs() -> list[ModelConfig]: | CODE |
| LOW | backend/backends/__init__.py | 524 | async def ensure_model_cached_or_raise(engine: str, model_size: str = "default") -> None: | CODE |
| LOW | backend/backends/__init__.py | 655 | def get_tts_backend_for_engine(engine: str) -> TTSBackend: | CODE |
| LOW | backend/backends/__init__.py | 747 | def get_llm_backend_for_engine(engine: str) -> LLMBackend: | 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_package_rocm.py | 42 | def test_runtime_files_are_rocm(self, rel_path): | CODE |
| LOW | backend/tests/test_package_rocm.py | 58 | def test_core_files_are_not_rocm(self, rel_path): | CODE |
| LOW | backend/tests/test_package_rocm.py | 115 | 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 |
| LOW | backend/tests/test_offline_patch.py | 79 | def test_passthrough_on_success(monkeypatch): | CODE |
| LOW | backend/tests/test_offline_patch.py | 105 | def test_missing_method_is_noop(monkeypatch): | CODE |
| LOW | backend/tests/test_generation_download.py | 142 | async def test_generation_with_cached_model(): | CODE |
| LOW | backend/tests/test_generation_download.py | 196 | async def test_generation_with_fresh_download(): | CODE |
| LOW | backend/tests/test_audio_preprocess.py | 32 | def test_peak_cap_scales_hot_input(): | CODE |
| LOW | backend/tests/test_audio_preprocess.py | 38 | def test_peak_cap_leaves_moderate_input_untouched(): | CODE |
| LOW | backend/tests/test_audio_preprocess.py | 50 | def test_silence_is_trimmed_with_padding_kept(): | CODE |
| LOW⚡ | backend/tests/test_audio_preprocess.py | 61 | def test_clean_audio_is_not_padded_past_original_length(): | CODE |
| LOW⚡ | backend/tests/test_audio_preprocess.py | 70 | def test_empty_input_returns_empty(): | CODE |
| LOW⚡ | backend/tests/test_audio_preprocess.py | 75 | def test_validate_accepts_previously_rejected_hot_file(tmp_path): | CODE |
| LOW | backend/tests/test_audio_preprocess.py | 88 | def test_validate_still_rejects_silent_input(tmp_path): | CODE |
| LOW | backend/tests/test_audio_preprocess.py | 100 | def test_validate_rejects_too_short(tmp_path): | CODE |
| LOW | backend/tests/test_task_queue_cancellation.py | 9 | async def test_cancel_queued_generation_skips_execution(): | CODE |
| LOW | backend/tests/test_task_queue_cancellation.py | 36 | async def test_cancel_running_generation_cancels_task(): | CODE |
| LOW⚡ | backend/tests/test_rocm_backends.py | 19 | def test_no_gpu_returns_compatible(self): | CODE |
| LOW⚡ | backend/tests/test_rocm_backends.py | 27 | def test_rocm_skips_compute_check(self): | CODE |
| LOW⚡ | backend/tests/test_rocm_backends.py | 37 | def test_cuda_compatible_arch(self): | CODE |
| LOW | backend/tests/test_rocm_backends.py | 53 | def test_cuda_incompatible_arch(self): | CODE |
| LOW | backend/tests/test_progress.py | 21 | def test_progress_manager_basic(): | CODE |
| LOW | backend/tests/test_progress.py | 57 | async def test_progress_manager_sse(): | CODE |
| LOW | backend/tests/test_profile_duplicate_names.py | 54 | async def test_create_profile_duplicate_name_raises_error(test_db, mock_profiles_dir): | CODE |
| LOW | backend/tests/test_profile_duplicate_names.py | 83 | async def test_create_profile_different_names_succeeds(test_db, mock_profiles_dir): | CODE |
| LOW | backend/tests/test_profile_duplicate_names.py | 110 | async def test_update_profile_to_duplicate_name_raises_error(test_db, mock_profiles_dir): | CODE |
| LOW | backend/tests/test_profile_duplicate_names.py | 143 | async def test_update_profile_keep_same_name_succeeds(test_db, mock_profiles_dir): | CODE |
| LOW | backend/tests/test_profile_duplicate_names.py | 170 | async def test_update_profile_to_new_unique_name_succeeds(test_db, mock_profiles_dir): | CODE |
| LOW | backend/tests/test_profile_duplicate_names.py | 196 | async def test_case_sensitive_names_allowed(test_db, mock_profiles_dir): | CODE |
| LOW | backend/tests/test_rocm_requirements.py | 51 | def test_requirements_file_exists(self, backend_dir): | CODE |
| LOW | backend/tests/test_rocm_requirements.py | 55 | def test_requirements_file_content(self, backend_dir): | CODE |
| 83 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | backend/app.py | 253 | 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 | 13 | CODE | |
| LOW | backend/backends/pytorch_backend.py | 13 | CODE | |
| LOW | backend/backends/mlx_backend.py | 5 | CODE | |
| LOW | backend/backends/mlx_backend.py | 20 | CODE | |
| LOW | backend/backends/mlx_backend.py | 20 | CODE | |
| LOW | backend/backends/__init__.py | 13 | CODE | |
| LOW | backend/backends/luxtts_backend.py | 14 | CODE | |
| LOW | backend/backends/qwen_custom_voice_backend.py | 24 | CODE | |
| LOW | backend/backends/base.py | 12 | CODE | |
| LOW | backend/backends/base.py | 106 | 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_profile_duplicate_names.py | 19 | 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_all_models_e2e.py | 13 | CODE | |
| LOW | backend/tests/test_all_models_e2e.py | 28 | CODE | |
| LOW | backend/tests/test_personality_samples.py | 25 | CODE | |
| LOW | backend/utils/effects.py | 20 | CODE | |
| LOW | backend/utils/platform_detect.py | 81 | CODE | |
| LOW | backend/utils/hf_offline_patch.py | 199 | CODE | |
| LOW | backend/utils/progress.py | 5 | CODE | |
| LOW | backend/utils/progress.py | 6 | CODE | |
| LOW | backend/utils/capture_chords.py | 3 | CODE | |
| 27 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | backend/server.py | 114 | CODE | |
| LOW | backend/server.py | 144 | CODE | |
| LOW | backend/server.py | 176 | 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 | 65 | CODE | |
| LOW | backend/database/migrations.py | 295 | CODE | |
| LOW | backend/backends/chatterbox_backend.py | 73 | CODE | |
| LOW | backend/backends/chatterbox_turbo_backend.py | 73 | CODE | |
| LOW | backend/backends/hume_backend.py | 212 | CODE | |
| LOW | backend/backends/hume_backend.py | 236 | CODE | |
| LOW | backend/backends/pytorch_backend.py | 138 | CODE | |
| LOW | backend/backends/mlx_backend.py | 115 | CODE | |
| LOW | backend/backends/mlx_backend.py | 169 | CODE | |
| LOW | backend/backends/mlx_backend.py | 194 | CODE | |
| LOW | backend/backends/__init__.py | 655 | CODE | |
| LOW | backend/backends/base.py | 24 | 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 | 214 | CODE | |
| LOW | backend/tests/test_all_models_e2e.py | 274 | CODE | |
| LOW | backend/tests/test_all_models_e2e.py | 486 | 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 | 34 | 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 | 122 | CODE | |
| LOW | backend/routes/models.py | 227 | CODE | |
| LOW | backend/routes/models.py | 153 | CODE | |
| LOW | backend/routes/health.py | 57 | CODE | |
| LOW | backend/routes/health.py | 195 | CODE | |
| LOW | backend/services/rocm.py | 139 | CODE | |
| LOW | backend/services/rocm.py | 256 | CODE | |
| LOW | backend/services/task_queue.py | 39 | CODE | |
| LOW | backend/services/generation.py | 29 | 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 | 138 | CODE | |
| LOW | backend/services/history.py | 273 | CODE | |
| LOW | scripts/test_download_progress.py | 154 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | backend/server.py | 153 | # 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 | 64 | # Check if any GPU needs the override (RDNA 2 and older) | COMMENT |
| LOW | backend/backends/mlx_backend.py | 226 | # 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 | 165 | # 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 | 123 | # 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 | 263 | # Check if generation is already in story | COMMENT |
| LOW | backend/services/stories.py | 959 | # Read file bytes | COMMENT |
| LOW⚡ | backend/services/cuda.py | 122 | # 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 | 20 | # Check if source exists | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | backend/server.py | 70 | 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/__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/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/pytorch_backend.py | 11 | logger = logging.getLogger(__name__) | CODE |
| LOW | backend/backends/mlx_backend.py | 11 | 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 | 21 | logger = logging.getLogger(__name__) | CODE |
| LOW | backend/utils/hf_progress.py | 11 | 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/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 | 28 | 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 | 29 | 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 | 28 | logger = logging.getLogger(__name__) | CODE |
| LOW | backend/services/profiles.py | 25 | 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/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/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 | state: State<'_, audio_output::AudioOutputState>, | COMMENT |
| LOW | tauri/src-tauri/src/main.rs | 981 | /// Milliseconds to wait between activating the target app and firing the | COMMENT |
| LOW | tauri/src-tauri/src/main.rs | 1001 | /// the Captures settings UI to surface a "missing — open Settings" hint | COMMENT |
| LOW | tauri/src-tauri/src/main.rs | 1061 | /// the CGEventTap inside `HotkeyMonitor::spawn`. | COMMENT |
| LOW | tauri/src-tauri/src/main.rs | 1181 | /// Deliver `text` into the UI that had focus when the chord fired. | COMMENT |
| LOW | tauri/src-tauri/src/main.rs | 1201 | /// | COMMENT |
| LOW | tauri/src-tauri/src/main.rs | 1401 | // changes. The synthetic-paste hot path then only reads an | 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/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 | # sounddevice, tqdm) are already in requirements.txt or pulled in by | COMMENT |
| LOW | backend/build_binary.py | 61 | # stdout/stderr for Tauri to capture logs. | 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 |
|---|---|---|---|---|
| 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/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 | 142 | Create a new voice profile. Args: data: Profile creation data db: Database session Return | STRING |
| HIGH | backend/services/profiles.py | 361 | 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 |
|---|---|---|---|---|
| LOW | app/src/i18n/locales/ja/translation.json | 367 | "placeholder": "リファレンステキストを入力…", | CODE |
| LOW | app/src/i18n/locales/ja/translation.json | 421 | "placeholder": "プリセットを選択するか、新しく作成します", | CODE |
| LOW | app/src/i18n/locales/ja/translation.json | 685 | "placeholder": { | CODE |
| LOW | app/src/i18n/locales/ja/translation.json | 701 | "placeholder": "デリバリー指示 — 例:暖かくゆっくり話す、はっきりと威厳をもって…" | CODE |
| LOW | app/src/i18n/locales/ja/translation.json | 704 | "placeholder": "ボイスを選択…" | CODE |
| LOW | app/src/i18n/locales/zh-CN/translation.json | 367 | "placeholder": "输入参考文本……", | CODE |
| LOW | app/src/i18n/locales/zh-CN/translation.json | 421 | "placeholder": "选择一个预设或创建新的", | CODE |
| LOW | app/src/i18n/locales/zh-CN/translation.json | 685 | "placeholder": { | CODE |
| LOW | app/src/i18n/locales/zh-CN/translation.json | 701 | "placeholder": "传达说明——例如:温柔缓慢地说、威严清晰…" | CODE |
| LOW | app/src/i18n/locales/zh-CN/translation.json | 704 | "placeholder": "选择声音…" | CODE |
| LOW | app/src/i18n/locales/zh-TW/translation.json | 367 | "placeholder": "輸入參考文字……", | CODE |
| LOW | app/src/i18n/locales/zh-TW/translation.json | 421 | "placeholder": "選擇預設集或建立新的", | CODE |
| LOW | app/src/i18n/locales/zh-TW/translation.json | 685 | "placeholder": { | CODE |
| LOW | app/src/i18n/locales/zh-TW/translation.json | 701 | "placeholder": "傳達指示——例如:溫柔緩慢地說、威嚴清晰…" | CODE |
| LOW | app/src/i18n/locales/zh-TW/translation.json | 704 | "placeholder": "選擇聲音…" | CODE |
| LOW | app/src/i18n/locales/pt-BR/translation.json | 367 | "placeholder": "Digite o texto de referência…", | CODE |
| LOW | app/src/i18n/locales/pt-BR/translation.json | 421 | "placeholder": "Selecione um preset ou crie um novo", | CODE |
| LOW | app/src/i18n/locales/pt-BR/translation.json | 685 | "placeholder": { | CODE |
| LOW | app/src/i18n/locales/pt-BR/translation.json | 701 | "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 | 704 | "placeholder": "Selecione uma voz…" | CODE |
| LOW | app/src/i18n/locales/fr/translation.json | 367 | "placeholder": "Saisissez le texte de référence…", | CODE |
| LOW | app/src/i18n/locales/fr/translation.json | 421 | "placeholder": "Sélectionnez un préréglage ou créez-en un nouveau", | CODE |
| LOW | app/src/i18n/locales/fr/translation.json | 685 | "placeholder": { | CODE |
| LOW | app/src/i18n/locales/fr/translation.json | 701 | "placeholder": "Instructions d'interprétation — ex. Parle lentement avec chaleur, Autoritaire et clair…" | CODE |
| LOW | app/src/i18n/locales/fr/translation.json | 704 | "placeholder": "Sélectionnez une voix…" | CODE |
| LOW | app/src/i18n/locales/en/translation.json | 367 | "placeholder": "Enter reference text…", | CODE |
| LOW | app/src/i18n/locales/en/translation.json | 421 | "placeholder": "Select a preset or create a new one", | CODE |
| LOW | app/src/i18n/locales/en/translation.json | 685 | "placeholder": { | CODE |
| LOW | app/src/i18n/locales/en/translation.json | 701 | "placeholder": "Delivery instructions — e.g. Speak slowly with warmth, Authoritative and clear…" | CODE |
| LOW | app/src/i18n/locales/en/translation.json | 704 | "placeholder": "Select a voice…" | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | backend/models.py | 362 | 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 | 607 | # 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 | 149 | """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 |