视频转字幕、字幕翻译、AI 配音与声音克隆、字幕烧录——免费开源的一站式桌面工具。基于 Whisper / FunASR 等本地模型离线语音转文字,批量处理 + 全平台 GPU 加速,跨 Windows / macOS / Linux。Free, open-source desktop app to generate, translate, dub & burn video subtitles — local Whisper speech-to-text, AI dubbing & voice cloning, offline, GPU-accelerated.
This report summarizes scanner evidence for buxuku/SmartSub, a TypeScript project with 5,908 GitHub stars. SynthScan examined 348,708 lines of code across 1635 source files, recording 647 pattern matches distributed across 14 syntactic categories. The legacy adjusted pattern signal is 3.1 (Low 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.
Payload schema: 1.0.0 · Engine: 2.0.0 · Scoring: heuristic-density-v1 · Scan date: 2026-10-31.
Can maintainers explain intent, assumptions, and trade-offs? 432 finding(s).
Are imports declared and package/API names verified? 25 finding(s).
Are wrappers, guards, and repeated structures necessary? 599 finding(s).
Which changes need focused human review? 647 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 647 distinct pattern matches across 14 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 |
|---|---|---|---|---|
| MEDIUM | renderer/components/tasks/stageUtils.ts | 91 | // ── 人工检查点(白话:字幕校对 / 配音确认)──────────────────────────────── | COMMENT |
| MEDIUM | renderer/components/tasks/wizard/TaskWizard.tsx | 176 | // ── 文件区 ──────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | renderer/components/tasks/wizard/TaskWizard.tsx | 594 | // ── 目标产物 ────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | renderer/components/tasks/wizard/TaskWizard.tsx | 880 | // ── 配方预填(?recipe=<id>):内置走常量、用户走 IPC ───────────────────── | COMMENT |
| MEDIUM | renderer/components/tasks/wizard/TaskWizard.tsx | 1084 | // ── 阶段链与就绪校验 ────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | renderer/components/tasks/wizard/TaskWizard.tsx | 1455 | // ── 存为配方:打包 {goals, accepts, config(字幕段+dub+compose+gates)} ───── | COMMENT |
| MEDIUM | renderer/components/tasks/wizard/TaskWizard.tsx | 1502 | // ── 开始 ────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | renderer/components/tasks/wizard/TaskWizard.tsx | 1616 | // ── 渲染 ────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | renderer/components/voiceClone/CloneVoiceWizard.tsx | 189 | // ── 播放(选区试听 / A/B 对比共用一个 audio)─────────────────────────────── | COMMENT |
| MEDIUM | renderer/components/voiceClone/CloneVoiceWizard.tsx | 236 | // ── 生命周期:打开时取最近任务 + 模型状态;关闭时释放会话并重置 ───────────── | COMMENT |
| MEDIUM | renderer/components/voiceClone/CloneVoiceWizard.tsx | 314 | // ── Step1 → 分析 ──────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | renderer/components/voiceClone/CloneVoiceWizard.tsx | 396 | // ── Step2:选区变化 → 防抖质检(降噪试听随选区失效)────────────────────── | COMMENT |
| MEDIUM | renderer/components/voiceClone/CloneVoiceWizard.tsx | 439 | // ── Step3:进入时自动取参考文本 ───────────────────────────────────────────── | COMMENT |
| MEDIUM | renderer/components/voiceClone/CloneVoiceWizard.tsx | 493 | // ── Step4:创建 ───────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | renderer/components/voiceClone/CloneVoiceWizard.tsx | 569 | // ── 渲染 ──────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | renderer/components/subtitleMerge/VideoPreview.tsx | 266 | // ── 迷你时间轴:字幕块在片中的分布(只读展示 + 点击 seek)──────────── | COMMENT |
| MEDIUM | renderer/components/download/DownloadPanel.tsx | 108 | // ── 引擎状态 ────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | renderer/components/download/DownloadPanel.tsx | 129 | // ── 输入态 ──────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | renderer/components/download/DownloadPanel.tsx | 196 | // ── 站点 Cookie 档案 ──────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | renderer/components/download/DownloadPanel.tsx | 274 | // ── 预检态 ──────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | renderer/components/download/DownloadPanel.tsx | 308 | // ── 任务态 ──────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | renderer/components/download/DownloadPanel.tsx | 500 | // ── 交接 ────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | renderer/components/download/DownloadPanel.tsx | 582 | // ── 任务态动作 ──────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | renderer/components/download/DownloadPanel.tsx | 652 | // ── 渲染 ────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | renderer/components/download/DownloadPanel.tsx | 945 | // ── 预检确认列表 ────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | renderer/components/download/DownloadPanel.tsx | 1113 | // ── 任务态视图 ──────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | renderer/components/dubbing/DubbingPanel.tsx | 102 | // ── 检查员模式:待检清单每次动作前实时拉取(不缓存陈旧状态)────────────── | COMMENT |
| MEDIUM | renderer/hooks/useDubbing.ts | 111 | // ── 文件与会话 ──────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | renderer/hooks/useDubbing.ts | 195 | // ── 引擎候选(加载逻辑与新建任务向导共用)──────────────────────────────── | COMMENT |
| MEDIUM | renderer/hooks/useDubbing.ts | 206 | // ── 配置(记忆恢复)────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | renderer/hooks/useDubbing.ts | 589 | // ── 进度与阶段 ──────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | renderer/hooks/useDubbing.ts | 949 | // ── 会话生命周期 ────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | renderer/hooks/useDubbing.ts | 1314 | // ── 批量合成 ────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | renderer/hooks/useDubbing.ts | 1429 | // ── 行级操作 ────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | renderer/hooks/useDubbing.ts | 1815 | // ── 播放(行级回放 / 试听 / 顺序播放全部)──────────────────────────────── | COMMENT |
| MEDIUM | renderer/hooks/useDubbing.ts | 1922 | // ── 导出 ────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | renderer/hooks/useDubbing.ts | 2013 | // ── 汇总视图 ────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | renderer/lib/engineModels.ts | 157 | // ── 跨引擎(逐任务选择)辅助 ───────────────────────────────────────────── | COMMENT |
| MEDIUM | renderer/pages/[locale]/tasks/[type].tsx | 947 | // ── 人工检查点:统计、放行、检查配音 ───────────────────────────────────── | COMMENT |
| MEDIUM | types/voiceClone.ts | 43 | // ── 质检报告 ──────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | types/voiceClone.ts | 98 | // ── 引擎参数 ──────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | types/voiceClone.ts | 196 | // ── 按字幕行选段(向导 Step2,来源含字幕时)───────────────────────────────── | COMMENT |
| MEDIUM | types/voiceClone.ts | 255 | // ── 音色导入导出(.svoice 单文件包)───────────────────────────────────────── | COMMENT |
| MEDIUM | types/voiceClone.ts | 342 | // ── 渲染层视图(voiceClone: IPC 的 data 形状)─────────────────────────────── | COMMENT |
| MEDIUM | types/dubbing.ts | 301 | // ── 对齐引擎(alignment.ts 纯函数的输入输出合同)──────────────────────────── | COMMENT |
| MEDIUM | types/dubbing.ts | 346 | // ── 进度事件(dubbing: IPC 推送)──────────────────────────────────────────── | COMMENT |
| MEDIUM | types/dubbing.ts | 369 | // ── 渲染层视图(dubbing: IPC 的 data 形状)────────────────────────────────── | COMMENT |
| MEDIUM | types/dubbing.ts | 453 | // ── 会话持久化(session.json,P1:重开可恢复行级状态与产物)────────────────── | COMMENT |
| MEDIUM | types/asrProvider.ts | 924 | // ── 左栏「云端听写」分组导航 ──────────────────────────────────────────────── | COMMENT |
| MEDIUM | types/ttsProvider.ts | 807 | // ── 「配音服务」页左栏条目体系(形制 asrProvider 的 CloudEngineView)───────── | COMMENT |
| MEDIUM | types/download.ts | 107 | // ── 下载器二进制分发 ──────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | types/download.ts | 162 | // ── 纯函数(main / renderer 共用) ───────────────────────────────────────── | COMMENT |
| MEDIUM | types/download.ts | 239 | // ── 站点 Cookie 档案(登录态注入) ────────────────────────────────────────── | COMMENT |
| MEDIUM | types/subtitleMerge.ts | 201 | // ── 统一合成引擎(compose):字幕 × 音轨矩阵 ──────────────────────────────── | COMMENT |
| MEDIUM | extraResources/sherpa/worker/tts-config.js | 119 | // ── 克隆合成的文本切块(内存安全约束)──────────────────────────────────────── | COMMENT |
| MEDIUM | extraResources/sherpa/worker/tts-config.js | 228 | // ── 中文数字归一化(克隆合成的文本前端)───────────────────────────────────── | COMMENT |
| MEDIUM | scripts/test-summary.ts | 40 | // ── resolveSummaryPrompt ────────────────────────────────────────────────── | COMMENT |
| MEDIUM | scripts/test-summary.ts | 98 | // ── buildSummaryInput ───────────────────────────────────────────────────── | COMMENT |
| MEDIUM | scripts/test-summary.ts | 109 | // ── buildSummaryInstructions ────────────────────────────────────────────── | COMMENT |
| MEDIUM | scripts/test-summary.ts | 160 | // ── settleSummaryText ───────────────────────────────────────────────────── | COMMENT |
| 128 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | …erer/components/settings/SettingsPersistenceStatus.tsx | 6 | export default function SettingsPersistenceStatus({ | CODE |
| LOW | renderer/components/settings/gpu/gpuUtils.ts | 31 | export function isActiveBackendStaleForPlatform( | CODE |
| LOW | renderer/components/settings/gpu/gpuUtils.ts | 54 | export function resolveActiveBackendForPlatform( | CODE |
| LOW | renderer/components/settings/gpu/gpuDownloadUtils.ts | 53 | export function getCompatibleCudaVersions( | CODE |
| LOW | renderer/components/settings/gpu/gpuDownloadUtils.ts | 84 | export function getRecommendedCudaVersion( | CODE |
| LOW | renderer/components/settings/gpu/gpuDownloadUtils.ts | 90 | export function readPersistedDownloadSource(): DownloadSource { | CODE |
| LOW | renderer/components/settings/gpu/gpuDownloadUtils.ts | 128 | export function getRecommendationReasonText( | CODE |
| LOW | renderer/components/tasks/stageUtils.ts | 300 | export function getTaskProofreadSourcePath( | CODE |
| LOW | renderer/components/tasks/stageUtils.ts | 316 | export function getTaskProofreadTargetPath( | CODE |
| LOW | renderer/components/tasks/stageUtils.ts | 324 | export function getProofreadUnavailableReason( | CODE |
| LOW | …ponents/tasks/settings/FasterWhisperAdvancedFields.tsx | 26 | function formatAdvancedNumberDraft(value: unknown): string { | CODE |
| LOW | renderer/components/resources/ModelLibrarySection.tsx | 88 | function isFasterWhisperModelInstalled( | CODE |
| LOW | …rer/components/resources/ProviderPersistenceStatus.tsx | 15 | export default function ProviderPersistenceStatus({ | CODE |
| LOW | renderer/components/subtitleMerge/utils/styleUtils.ts | 108 | export function getSubtitleContainerStyle( | CODE |
| LOW | renderer/hooks/useRadixPointerEventsGuard.ts | 21 | export function useRadixPointerEventsGuard(): void { | CODE |
| LOW | renderer/hooks/useTaskProjectPersistence.ts | 28 | export function useTaskProjectPersistence( | CODE |
| LOW | renderer/hooks/useEmbeddedSubtitlePrompt.tsx | 46 | export function useEmbeddedSubtitlePrompt() { | CODE |
| LOW | renderer/hooks/useUnifiedTaskConfig.ts | 24 | export function buildTaskSnapshotFromConfig( | CODE |
| LOW | renderer/hooks/useSummaryPromptCustomized.ts | 10 | export function useSummaryPromptCustomized(): { | CODE |
| LOW | renderer/hooks/useDownloadEndpoints.ts | 18 | export function invalidateDownloadEndpointsCache(): void { | CODE |
| LOW | renderer/lib/funasrDownloadError.ts | 16 | export function isFunasrDownloadCancelled(error: unknown): boolean { | CODE |
| LOW | renderer/lib/funasrDownloadError.ts | 28 | export function formatFunasrDownloadFailureToast( | CODE |
| LOW | renderer/lib/proofreadUtils.ts | 115 | export async function createPendingFileFromVideo( | CODE |
| LOW | renderer/lib/proofreadUtils.ts | 157 | export async function createPendingFileFromSubtitle( | CODE |
| LOW | renderer/lib/pipelineSettings.ts | 39 | export function dubbingConfigFromSelection( | CODE |
| LOW | renderer/lib/providerPanelUtils.ts | 50 | export function resolveSelectedProviderId( | CODE |
| LOW | renderer/lib/providerPanelUtils.ts | 64 | export async function resolveSelectedProviderIdAsync( | CODE |
| LOW | renderer/lib/providerPanelUtils.ts | 88 | export function resolveDefaultTranslateProviderId( | CODE |
| LOW | renderer/lib/providerPanelUtils.ts | 140 | export async function syncTranslateProviderToUserConfig( | CODE |
| LOW | renderer/lib/subtitleRefineValidation.ts | 46 | export function validateRefineProviderConfig({ | CODE |
| LOW | renderer/lib/subtitleRefineValidation.ts | 188 | export function getRefineValidationErrorMessage( | CODE |
| LOW | renderer/lib/engineModels.ts | 66 | export function getInstalledModelsForEngine( | CODE |
| LOW | renderer/lib/engineModels.ts | 98 | export function getSelectableModelsForEngine( | CODE |
| LOW | renderer/lib/engineModels.ts | 184 | export function hasUnavailableParakeetModel( | CODE |
| LOW | renderer/lib/embeddedSubtitleScan.ts | 24 | export function embeddedSubtitleProbeFiles({ | CODE |
| LOW | renderer/lib/providerUtils.ts | 4 | export function isFallbackProviderInstance( | CODE |
| LOW | types/composeContainer.ts | 48 | export function isComposeContainerWritable(extension: string): boolean { | CODE |
| LOW | types/composeContainer.ts | 66 | export function assertComposeOutputWritable(outputPath: string): void { | CODE |
| LOW | types/sourceSrtSave.ts | 16 | export function correctedSourceSrtSaveOption( | CODE |
| LOW | types/taskSnapshot.ts | 17 | export function isPinnedTaskConfigSnapshot( | CODE |
| LOW | types/taskSnapshot.ts | 37 | export function isTaskSnapshotTranslationEnabled( | CODE |
| LOW | types/ttsVoice.ts | 31 | export function normalizeTtsVoiceMetadata(raw: unknown): TtsVoiceMetadata { | CODE |
| LOW | types/assistantAttachments.ts | 32 | export function assistantAttachmentReference( | CODE |
| LOW | types/dubbing.ts | 39 | export function assertDubbingSpeakerSettings( | CODE |
| LOW | types/dubbing.ts | 57 | export function resolveDubbingSpeakerSettings( | CODE |
| LOW | types/dubbing.ts | 124 | export function missingDubbingSpeakerVoiceIds( | CODE |
| LOW | types/dubbing.ts | 149 | export function withDubbingGlobalSpeakerFallback( | CODE |
| LOW | types/translateContent.ts | 26 | export function normalizeTranslateContent(value: unknown): TranslateContent { | CODE |
| LOW | types/missedSpeech.ts | 38 | export function associateMissedSpeechWarnings( | CODE |
| LOW | types/missedSpeech.ts | 69 | export function normalizeMissedSpeechWarnings( | CODE |
| LOW | types/transcriptionParams.ts | 79 | export function supportsFasterWhisperAdvancedParams( | CODE |
| LOW | types/transcriptionParams.ts | 85 | export function isValidFasterWhisperAdvancedParamValue( | CODE |
| LOW | types/transcriptionParams.ts | 102 | export function buildFasterWhisperAdvancedParams( | CODE |
| LOW | types/subtitleOutput.ts | 19 | export function resolveSubtitleOutputFormats( | CODE |
| LOW | types/subtitleOutput.ts | 53 | export function subtitleOutputFilesToSave( | CODE |
| LOW | types/downloadConfig.ts | 59 | export function normalizeDownloadEndpoints( | CODE |
| LOW | types/speakerDiarization.ts | 9 | export function getSpeakerDiarizationMetadataWarning( | CODE |
| LOW | types/speakerDiarization.ts | 25 | export function normalizeSpeakerDiarizationCount(value: unknown): number { | CODE |
| LOW | types/speakerDiarization.ts | 45 | export function shouldExtractAudioForEmbeddedSubtitle( | CODE |
| LOW | types/speakerDiarization.ts | 93 | export function supportsSpeakerDiarizationTask( | CODE |
| 349 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | renderer/public/locales/zh/parameters.json | 25 | "placeholder": "搜索参数..." | CODE |
| LOW | renderer/public/locales/zh/download.json | 51 | "placeholder": "粘贴视频链接,一行一条…\n支持从聊天记录等混杂文本中自动识别链接", | CODE |
| LOW | renderer/public/locales/zh/common.json | 287 | "placeholder": "搜索或跳转…", | CODE |
| LOW | renderer/public/locales/zh/common.json | 464 | "placeholder": "发送消息,或拖入文件…", | CODE |
| LOW | renderer/public/locales/zh/glossary.json | 62 | "placeholder": "搜索原文、译文或备注", | CODE |
| LOW⚡ | renderer/public/locales/zh/tasks.json | 338 | "placeholder": "引擎默认:5", | CODE |
| LOW⚡ | renderer/public/locales/zh/tasks.json | 343 | "placeholder": "引擎默认:5", | CODE |
| LOW⚡ | renderer/public/locales/zh/tasks.json | 348 | "placeholder": "引擎默认:0.0 → 1.0 自适应回退", | CODE |
| LOW⚡ | renderer/public/locales/zh/tasks.json | 353 | "placeholder": "引擎默认:2.4", | CODE |
| LOW⚡ | renderer/public/locales/zh/tasks.json | 358 | "placeholder": "引擎默认:-1.0", | CODE |
| LOW⚡ | renderer/public/locales/zh/tasks.json | 363 | "placeholder": "引擎默认:0.6", | CODE |
| LOW | renderer/public/locales/en/parameters.json | 25 | "placeholder": "Search parameters..." | CODE |
| LOW | renderer/public/locales/en/download.json | 51 | "placeholder": "Paste video links, one per line…\nLinks are auto-extracted from mixed text like chat logs", | CODE |
| LOW | renderer/public/locales/en/common.json | 287 | "placeholder": "Search or jump to…", | CODE |
| LOW | renderer/public/locales/en/common.json | 464 | "placeholder": "Send a message or drop files…", | CODE |
| LOW | renderer/public/locales/en/glossary.json | 62 | "placeholder": "Search source, translation, or note", | CODE |
| LOW⚡ | renderer/public/locales/en/tasks.json | 338 | "placeholder": "Engine default: 5", | CODE |
| LOW⚡ | renderer/public/locales/en/tasks.json | 343 | "placeholder": "Engine default: 5", | CODE |
| LOW⚡ | renderer/public/locales/en/tasks.json | 348 | "placeholder": "Engine default: adaptive 0.0 → 1.0 fallback", | CODE |
| LOW⚡ | renderer/public/locales/en/tasks.json | 353 | "placeholder": "Engine default: 2.4", | CODE |
| LOW⚡ | renderer/public/locales/en/tasks.json | 358 | "placeholder": "Engine default: -1.0", | CODE |
| LOW⚡ | renderer/public/locales/en/tasks.json | 363 | "placeholder": "Engine default: 0.6", | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | main/service/__tests__/integration.demo.ts | 182 | // Step 1: Process custom parameters | COMMENT |
| LOW⚡ | main/service/__tests__/integration.demo.ts | 189 | // Step 2: Prepare headers (would be used in OpenAI client initialization) | COMMENT |
| LOW⚡ | main/service/__tests__/integration.demo.ts | 196 | // Step 3: Prepare request body (would be used in API call) | COMMENT |
| LOW | main/service/__tests__/integration.demo.ts | 207 | // Step 4: Log processing summary | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | main/service/__tests__/integration.demo.ts | 182 | // Step 1: Process custom parameters | COMMENT |
| LOW⚡ | main/service/__tests__/integration.demo.ts | 189 | // Step 2: Prepare headers (would be used in OpenAI client initialization) | COMMENT |
| LOW⚡ | main/service/__tests__/integration.demo.ts | 196 | // Step 3: Prepare request body (would be used in API call) | COMMENT |
| LOW | main/service/__tests__/integration.demo.ts | 207 | // Step 4: Log processing summary | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | renderer/next-env.d.ts | 1 | /// <reference types="next" /> | COMMENT |
| LOW | extraResources/sherpa/worker/wav-io.js | 1 | 'use strict'; | COMMENT |
| LOW | scripts/sync-gitcode.sh | 1 | #!/usr/bin/env bash | COMMENT |
| LOW | scripts/crash/boom/boom.c | 21 | #include <stdlib.h> | COMMENT |
| LOW | scripts/lib/gitcode-sync.sh | 1 | #!/usr/bin/env bash | COMMENT |
| LOW | .github/workflows/release.yml | 121 | # 所以这里会一直等待;2 小时内没批准则本次失败,批准后重新运行即可。 | COMMENT |
| LOW | .github/workflows/windows-nonascii.yml | 1 | name: Windows non-ASCII paths | COMMENT |
| LOW | main/helpers/updater.ts | 101 | // 当自动更新出错时,提供手动下载选项 | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | extraResources/python-review/speech_review.py | 120 | # Preserve vocabulary and explicit anti-hallucination constraints. | COMMENT |
| MEDIUM | main/helpers/engines/qwenText.ts | 90 | // Only remove a matching closing decoration from a recognized scaffold. | COMMENT |
| MEDIUM | …pec/changes/fix-windows-nonascii-native-paths/tasks.md | 27 | - [x] 3.3 [run 38366811833](https://github.com/buxuku/SmartSub/actions/runs/38366811833)(`568c2935`)三个作业全部通过:sherpa 21 项 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | main/service/configurationManager.ts | 66 | // Templates functionality removed as requested | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | scripts/asr-review/runtime-cancel.py | 39 | except ValueError: | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | main/service/openai-example.ts | 28 | apiKey: 'your-api-key', | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | scripts/make_icon.py | 35 | # Anchor region on the dark squircle face (robust; excludes glow + watermark). | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | extraResources/python-review/speech_review.py | 168 | CODE | |
| LOW | extraResources/python-review/speech_review.py | 231 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | extraResources/python-review/review_core.py | 12 | CODE | |
| LOW | scripts/asr-review/test_review_core.py | 1 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | extraResources/python-review/bootstrap.py | 39 | except Exception as error: | CODE |