On-device subtitle generation that connects directly to DaVinci Resolve, Premiere, and After Effects.
This report summarizes scanner evidence for tmoroney/auto-subs, a TypeScript project with 4,491 GitHub stars. SynthScan examined 103,693 lines of code across 461 source files, recording 140 pattern matches distributed across 14 syntactic categories. The legacy adjusted pattern signal is 2.5 (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? 89 finding(s).
Are imports declared and package/API names verified? 32 finding(s).
Are wrappers, guards, and repeated structures necessary? 51 finding(s).
Which changes need focused human review? 140 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 140 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 |
|---|---|---|---|---|
| HIGH | Adobe-Extension/src/js/lib/cep/vulcan.d.ts | 30 | * @return True if the app can be launched, false otherwise. | COMMENT |
| HIGH | Adobe-Extension/src/js/lib/cep/vulcan.d.ts | 45 | * @return True if the app is running, false otherwise. | COMMENT |
| HIGH | Adobe-Extension/src/js/lib/cep/vulcan.d.ts | 56 | * @return True if the app is installed, false otherwise. | COMMENT |
| HIGH | Adobe-Extension/src/js/lib/cep/vulcan.js | 52 | * @return True if the app can be launched, false otherwise. | COMMENT |
| HIGH | Adobe-Extension/src/js/lib/cep/vulcan.js | 80 | * @return True if the app is running, false otherwise. | COMMENT |
| HIGH | Adobe-Extension/src/js/lib/cep/vulcan.js | 105 | * @return True if the app is installed, false otherwise. | COMMENT |
| HIGH | Adobe-Extension/src/js/lib/cep/vulcan.js | 182 | * @return True if the app can be launched, false otherwise. | COMMENT |
| HIGH | Adobe-Extension/src/js/lib/cep/vulcan.js | 215 | * @return True if the app is running, false otherwise. | COMMENT |
| HIGH | Adobe-Extension/src/js/lib/cep/vulcan.js | 249 | * @return True if the app is installed, false otherwise. | COMMENT |
| HIGH | Adobe-Extension/src/js/lib/cep/vulcan.js | 590 | * @return True if all required parameters are valid, | COMMENT |
| HIGH | Adobe-Extension/src/js/lib/cep/vulcan.js | 609 | * @return True if the string has the prefix, false if not. | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | …ills/davinci-resolve-fusion/references/resolve-api.txt | 1 | # ============================================================================ | COMMENT |
| LOW | …ills/davinci-resolve-fusion/references/resolve-api.txt | 381 | GetTrackSubType(trackType, trackIndex) --> string # Returns an audio track's format. | COMMENT |
| LOW | …/skills/davinci-resolve-fusion/scripts/start-server.sh | 1 | # MOVED: this AutoSubs-specific server launcher now lives in the AutoSubs project | COMMENT |
| LOW | AutoSubs-App/scripts/setup-resolve-dev.js | 21 | case 'darwin': | COMMENT |
| LOW | …rc-tauri/crates/transcription-engine/src/formatting.rs | 1 | // Subtitle post-processing for timestamped transcription output. | COMMENT |
| LOW | …rc-tauri/crates/transcription-engine/src/formatting.rs | 41 | /// Minimum inter-segment silence (seconds) for a whisper segment boundary to | COMMENT |
| LOW | …rc-tauri/crates/transcription-engine/src/formatting.rs | 101 | /// Minimum duration per subtitle cue | COMMENT |
| LOW | …rc-tauri/crates/transcription-engine/src/formatting.rs | 261 | // SE Asian no-space | COMMENT |
| LOW | …rc-tauri/crates/transcription-engine/src/formatting.rs | 681 | /// Cyrillic, Greek, Armenian, etc.) plus apostrophe-like marks that commonly | COMMENT |
| LOW | …tauri/crates/transcription-engine/src/model_manager.rs | 21 | // before giving up and reporting a stall (see its doc comment for rationale). | COMMENT |
| LOW | …tauri/crates/transcription-engine/src/model_manager.rs | 221 | COMMENT | |
| LOW | …/src-tauri/crates/transcription-engine/src/manifest.rs | 1 | //! Compile-time model manifest. | COMMENT |
| LOW | …/src-tauri/crates/transcription-engine/src/manifest.rs | 161 | /// can flatten/rename (`dest`) and/or pull the file from a *different* HF repo | COMMENT |
| LOW | …/src-tauri/crates/transcription-engine/src/manifest.rs | 261 | } | COMMENT |
| LOW | …/crates/transcription-engine/src/translation_client.rs | 121 | } | COMMENT |
| LOW | …App/src-tauri/crates/transcription-engine/src/utils.rs | 1 | /// Estimate a safe DTW working-set size (in bytes) for whisper.cpp DTW. | COMMENT |
| LOW | …pp/src-tauri/crates/transcription-engine/src/engine.rs | 741 | // VAD-guided timestamp snapping: correct leading-edge drift, trailing | COMMENT |
| LOW | …pp/src-tauri/crates/transcription-engine/src/engine.rs | 761 | // is on (including "en"), this covers both native and Google paths. | COMMENT |
| LOW | …src-tauri/crates/diarize/crates/knf-rs/sys/wrapper.hpp | 1 | #include "knfc/knfc.h" | COMMENT |
| LOW | …rs/sys/knf/kaldi-native-fbank/csrc/feature-functions.h | 21 | #define KALDI_NATIVE_FBANK_CSRC_FEATURE_FUNCTIONS_H_ | COMMENT |
| LOW | …nf-rs/sys/knf/kaldi-native-fbank/csrc/online-feature.h | 21 | #ifndef KALDI_NATIVE_FBANK_CSRC_ONLINE_FEATURE_H_ | COMMENT |
| LOW | …nf-rs/sys/knf/kaldi-native-fbank/csrc/online-feature.h | 101 | // @param sampling_rate The sampling_rate of the input waveform | COMMENT |
| LOW | …knf-rs/sys/knf/kaldi-native-fbank/csrc/feature-fbank.h | 21 | #ifndef KALDI_NATIVE_FBANK_CSRC_FEATURE_FBANK_H_ | COMMENT |
| LOW | …es/knf-rs/sys/knf/kaldi-native-fbank/csrc/kaldi-math.h | 1 | // kaldi-native-fbank/csrc/kaldi-math.h | COMMENT |
| LOW | …ze/crates/knf-rs/sys/knf/kaldi-native-fbank/csrc/log.h | 281 | } | COMMENT |
| LOW | …ze/crates/knf-rs/sys/knf/kaldi-native-fbank/csrc/log.h | 301 | : ::knf::Voidifier() & \ | COMMENT |
| LOW | …ze/crates/knf-rs/sys/knf/kaldi-native-fbank/csrc/log.h | 321 | #define _KNF_CHECK_OP(x, y, op) \ | COMMENT |
| LOW | …ze/crates/knf-rs/sys/knf/kaldi-native-fbank/csrc/log.h | 361 | COMMENT | |
| LOW | …/knf-rs/sys/knf/kaldi-native-fbank/csrc/feature-mfcc.h | 21 | // This file is copied/modified from kaldi/src/feat/feature-mfcc.h | COMMENT |
| LOW | …nf-rs/sys/knf/kaldi-native-fbank/csrc/feature-window.h | 1 | // kaldi-native-fbank/csrc/feature-window.h | COMMENT |
| LOW | …e/crates/knf-rs/sys/knf/scripts/check_style_cpplint.sh | 1 | #!/bin/bash | COMMENT |
| LOW | …App/src-tauri/crates/diarize/tests/sortformer_audio.rs | 1 | //! Real-audio regression test for the Sortformer backend, checked against the pyannote | COMMENT |
| LOW | …p/src-tauri/crates/diarize/src/sortformer/exclusive.rs | 1 | //! Turns Sortformer's per-speaker activity probabilities into the disjoint, single-speaker | COMMENT |
| LOW | …p/src-tauri/crates/diarize/src/sortformer/exclusive.rs | 21 | COMMENT | |
| LOW | …Subs-App/src-tauri/crates/diarize/src/pyannote/plda.rs | 1 | use eyre::{Context, Result}; | COMMENT |
| LOW | AutoSubs-App/src-tauri/linux/postinst.sh | 1 | #!/bin/sh | COMMENT |
| LOW | AutoSubs-App/src-tauri/src/resolve_scripts.rs | 1 | //! Installs the Resolve launcher (`Utility/AutoSubs.lua`) into the user's | COMMENT |
| LOW | AutoSubs-App/src-tauri/src/logging.rs | 1 | //! # Logging System | COMMENT |
| LOW | AutoSubs-App/src-tauri/src/transcription_api.rs | 21 | pub progress: i32, | COMMENT |
| LOW | AutoSubs-App/src-tauri/src/transcription_api.rs | 441 | } | COMMENT |
| LOW | AutoSubs-App/src-tauri/src/main.rs | 241 | COMMENT | |
| LOW | AutoSubs-App/src-tauri/src/resolve_launcher.rs | 1 | //! "Open from Resolve": opens AutoSubs when the user runs Workspace > Scripts > | COMMENT |
| LOW | AutoSubs-App/src-tauri/src/resolve_bridge.rs | 1 | //! File-mailbox bridge to the AutoSubs Lua server that runs inside DaVinci | COMMENT |
| LOW | AutoSubs-App/src-tauri/src/resolve_bridge.rs | 41 | const ACK_TIMEOUT: Duration = Duration::from_secs(2); | COMMENT |
| LOW | AutoSubs-App/src-tauri/src/cli.rs | 1 | //! Headless command-line interface. | COMMENT |
| LOW | AutoSubs-App/src-tauri/src/cli.rs | 61 | ]; | COMMENT |
| LOW | AutoSubs-App/src-tauri/src/cli.rs | 561 | m.args | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | …ills/davinci-resolve-fusion/references/resolve-api.txt | 1 | # ============================================================================ | COMMENT |
| MEDIUM | …ills/davinci-resolve-fusion/references/resolve-api.txt | 12 | # ============================================================================ | COMMENT |
| MEDIUM | AutoSubs-App/scripts/setup-resolve-dev.js | 210 | // ── Stale artifact cleanup ──────────────────────────────────────────────── | COMMENT |
| MEDIUM | AutoSubs-App/src/stores/settings-store.ts | 14 | // ─── Store file config ──────────────────────────────────────────────────── | COMMENT |
| MEDIUM | AutoSubs-App/src/stores/settings-store.ts | 20 | // ─── Default settings ───────────────────────────────────────────────────── | COMMENT |
| MEDIUM | AutoSubs-App/src/stores/settings-store.ts | 83 | // ─── Persisted-shape normalisation ──────────────────────────────────────── | COMMENT |
| MEDIUM | AutoSubs-App/src/stores/settings-store.ts | 144 | // ─── Store type ─────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | AutoSubs-App/src/stores/settings-store.ts | 156 | // ─── Store creation ─────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | AutoSubs-App/src/stores/settings-store.ts | 228 | // ─── Manual rehydration ─────────────────────────────────────────────────── | COMMENT |
| MEDIUM | AutoSubs-App/src/components/captions/output-panel.tsx | 153 | // ── Conflict check ────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | AutoSubs-App/src/components/captions/output-panel.tsx | 178 | // ── Derived state ─────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | AutoSubs-App/src/components/captions/output-panel.tsx | 222 | // ── Actions ───────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | AutoSubs-App/src/components/captions/output-panel.tsx | 290 | // ── Primary action label ──────────────────────────────────────────────── | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | AutoSubs-App/scripts/update-version.js | 11 | function getVersionFromPackageJson() { | CODE |
| LOW | …ve-fbank/python/tests/test_frame_extraction_options.py | 82 | def test_from_dict_full_and_as_dict(): | CODE |
| LOW | …ldi-native-fbank/python/tests/test_mel_bank_options.py | 78 | def test_from_dict_full_and_as_dict(): | CODE |
| LOW | …/kaldi-native-fbank/python/tests/test_fbank_options.py | 145 | def test_from_dict_full_and_as_dict(): | CODE |
| LOW | AutoSubs-App/src/stores/settings-store.ts | 96 | export function normalizePersistedSettings(persisted: unknown): Partial<Settings> { | CODE |
| LOW | AutoSubs-App/src/utils/subtitle-export.ts | 131 | export function subtitleDocumentSourceName( | CODE |
| LOW | AutoSubs-App/src/utils/subtitle-export.ts | 154 | export async function writeJsonTranscriptExport(input: { | CODE |
| LOW | AutoSubs-App/src/utils/subtitle-export.ts | 248 | export function serializeRawTranscriptExport(input: { | CODE |
| LOW | AutoSubs-App/src/utils/file-utils.ts | 201 | async function getSubtitleDocumentIndexPath(): Promise<string> { | CODE |
| LOW | AutoSubs-App/src/utils/file-utils.ts | 206 | async function readSubtitleDocumentIndex(): Promise<TranscriptIndexItem[]> { | CODE |
| LOW | AutoSubs-App/src/utils/file-utils.ts | 222 | async function writeSubtitleDocumentIndex( | CODE |
| LOW | AutoSubs-App/src/utils/file-utils.ts | 229 | async function upsertSubtitleDocumentIndexItem( | CODE |
| LOW | AutoSubs-App/src/utils/file-utils.ts | 250 | async function ensureSubtitleDocumentIndexItem( | CODE |
| LOW | AutoSubs-App/src/utils/file-utils.ts | 278 | async function removeSubtitleDocumentIndexItem(filename: string): Promise<void> { | CODE |
| LOW | AutoSubs-App/src/utils/file-utils.ts | 285 | function getLegacyTranscriptFilename( | CODE |
| LOW | AutoSubs-App/src/utils/file-utils.ts | 311 | async function migrateLegacyTranscriptsOnce(newDir: string): Promise<void> { | CODE |
| LOW | AutoSubs-App/src/utils/file-utils.ts | 425 | export async function validateExportedAudioFile(filePath: string): Promise<string> { | CODE |
| LOW | AutoSubs-App/src/utils/file-utils.ts | 505 | export function generateSubtitleDocumentFilename( | CODE |
| LOW | AutoSubs-App/src/utils/file-utils.ts | 582 | export async function listSubtitleDocumentIndex(): Promise< | CODE |
| LOW | AutoSubs-App/src/utils/file-utils.ts | 617 | export async function resolveSubtitleDocumentFilename( | CODE |
| LOW | AutoSubs-App/src/utils/file-utils.ts | 772 | export async function loadSubtitleDocumentSubtitles( | CODE |
| LOW | AutoSubs-App/src/utils/export-file.ts | 21 | export function subtitleExportDialogOptions( | CODE |
| LOW | AutoSubs-App/src/utils/export-file.ts | 52 | export function buildSubtitleExportContent( | CODE |
| LOW | AutoSubs-App/src/components/ui/chart.tsx | 318 | function getPayloadConfigFromPayload( | CODE |
| LOW | …bs-App/src/components/transcription/source-section.tsx | 96 | export function formatLocalizedTrackNumber( | CODE |
| LOW | AutoSubs-App/src/lib/models.ts | 207 | export function downloadedAuxiliaryModels( | CODE |
| LOW | AutoSubs-App/src/lib/models.ts | 270 | export function getFirstRecommendedModelForLanguage(language: string): Model | null { | CODE |
| LOW | AutoSubs-App/src/api/formatting-api.ts | 104 | export function getDefaultFormattingOptions(settings: { | CODE |
| LOW | Adobe-Extension/src/js/lib/cep/cep_engine_extensions.js | 678 | native function RegisterExtensionUnloadCallback(); | CODE |
| LOW | Adobe-Extension/src/jsx/ppro/ppro.ts | 62 | function getSequenceInPointSeconds(sequence: any): number { | CODE |
| LOW | Adobe-Extension/src/jsx/ppro/ppro.ts | 196 | export function getSelectedClipsTimeRange(sequence: any) { | CODE |
| LOW | Adobe-Extension/src/jsx/aeft/aeft.ts | 83 | export function getSelectedClipsTimeRange(_sequence: any) { | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | …native-fbank/python/tests/test_online_whisper_fbank.py | 5 | CODE | |
| LOW | …ldi-native-fbank/python/kaldi_native_fbank/__init__.py | 1 | CODE | |
| LOW | …ldi-native-fbank/python/kaldi_native_fbank/__init__.py | 1 | CODE | |
| LOW | …ldi-native-fbank/python/kaldi_native_fbank/__init__.py | 1 | CODE | |
| LOW | …ldi-native-fbank/python/kaldi_native_fbank/__init__.py | 1 | CODE | |
| LOW | …ldi-native-fbank/python/kaldi_native_fbank/__init__.py | 1 | CODE | |
| LOW | …ldi-native-fbank/python/kaldi_native_fbank/__init__.py | 1 | CODE | |
| LOW | …ldi-native-fbank/python/kaldi_native_fbank/__init__.py | 1 | CODE | |
| LOW | …ldi-native-fbank/python/kaldi_native_fbank/__init__.py | 1 | CODE | |
| LOW | …ldi-native-fbank/python/kaldi_native_fbank/__init__.py | 1 | CODE | |
| LOW | …ldi-native-fbank/python/kaldi_native_fbank/__init__.py | 1 | CODE | |
| LOW | …diarize/crates/knf-rs/sys/knf/cmake/cmake_extension.py | 3 | CODE | |
| LOW | …diarize/crates/knf-rs/sys/knf/cmake/cmake_extension.py | 6 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | …s/sys/knf/kaldi-native-fbank/python/tests/test_rfft.py | 28 | CODE | |
| MEDIUM | …s/sys/knf/kaldi-native-fbank/python/tests/test_rfft.py | 29 | CODE | |
| MEDIUM | …s/sys/knf/kaldi-native-fbank/python/tests/test_rfft.py | 31 | CODE | |
| MEDIUM | …s/sys/knf/kaldi-native-fbank/python/tests/test_rfft.py | 32 | CODE | |
| MEDIUM | …s/sys/knf/kaldi-native-fbank/python/tests/test_rfft.py | 34 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | AutoSubs-App/src-tauri/src/logging.rs | 18 | //! home directory (e.g., `/Users/tom/`) with `~`. It is robust enough to handle: | COMMENT |
| MEDIUM | AutoSubs-App/src/contexts/SubtitleDocumentContext.tsx | 416 | // read srt file and convert to json using robust parser | COMMENT |
| MEDIUM | AutoSubs-App/src/utils/srt-utils.ts | 137 | // --- Helper function for robust SRT parsing --- | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | AutoSubs-App/src/i18n/locales/ja/translation.json | 599 | "placeholder": "トラックを選択", | CODE |
| LOW | AutoSubs-App/src/i18n/locales/ru/translation.json | 609 | "placeholder": "Выберите дорожку", | CODE |
| LOW | AutoSubs-App/src/i18n/locales/zh/translation.json | 599 | "placeholder": "选择轨道", | CODE |
| LOW | AutoSubs-App/src/i18n/locales/de/translation.json | 599 | "placeholder": "Spur wählen", | CODE |
| LOW | AutoSubs-App/src/i18n/locales/ko/translation.json | 599 | "placeholder": "트랙 선택", | CODE |
| LOW | AutoSubs-App/src/i18n/locales/fr/translation.json | 599 | "placeholder": "Choisir une piste", | CODE |
| LOW | AutoSubs-App/src/i18n/locales/es/translation.json | 599 | "placeholder": "Elige una pista", | CODE |
| LOW | AutoSubs-App/src/i18n/locales/en/translation.json | 619 | "placeholder": "Choose a track", | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | .github/workflows/package.yml | 191 | # Create the package directory | COMMENT |
| MEDIUM | .github/workflows/package.yml | 202 | # Create the package | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | …/davinci-resolve-fusion/scripts/split-fusion-manual.py | 112 | CODE | |
| LOW | …/davinci-resolve-fusion/scripts/split-fusion-manual.py | 215 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | AutoSubs-App/README.md | 118 | For in-depth architecture docs, component breakdowns, and to ask questions about the codebase, visit **[AutoSubs on Deep | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | …Subs-App/src-tauri/resources/modules/autosubs_core.lua | 439 | print("Error retrieving timeline info:", err) | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | …ts/skills/davinci-resolve-fusion/scripts/run-script.sh | 13 | # Check if script file exists | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | …e/crates/knf-rs/sys/knf/scripts/check_style_cpplint.sh | 17 | # Usage: | COMMENT |