Hold a key, speak, release — AI-polished text appears at your cursor in any app. Open-source voice input for macOS & Windows. (按住快捷键说话,松开即得润色后的文字)
This report presents the forensic synthetic code analysis of Open-Less/openless, a Rust project with 3,345 GitHub stars. SynthScan v2.0 examined 183,058 lines of code across 467 source files, recording 447 pattern matches distributed across 12 syntactic categories. The overall adjusted score of 3.8 places this repository in the Likely human-written 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 447 distinct pattern matches across 12 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 | openless-all/app/src-tauri/src/lib.rs | 2744 | // ───────────────────────── Less Computer 浮窗 ───────────────────────── | COMMENT |
| MEDIUM | openless-all/app/src-tauri/src/hotkey.rs | 418 | // ─────────────────────────── macOS implementation ─────────────────────────── | COMMENT |
| MEDIUM | openless-all/app/src-tauri/src/hotkey.rs | 532 | // ── Raw CG/CF FFI ────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | openless-all/app/src-tauri/src/hotkey.rs | 1090 | // ─────────────────────────── Windows implementation ─────────────────────────── | COMMENT |
| MEDIUM | openless-all/app/src-tauri/src/hotkey.rs | 1783 | // ─────────────────────────── Linux / other implementation ─────────────────────────── | COMMENT |
| MEDIUM | openless-all/app/src-tauri/src/coordinator.rs | 3321 | // ─────────────────────────── session lifecycle ─────────────────────────── | COMMENT |
| MEDIUM | openless-all/app/src-tauri/src/coordinator.rs | 3606 | // ─────────────────────────── helpers ─────────────────────────── | COMMENT |
| MEDIUM | openless-all/app/src-tauri/src/coordinator.rs | 6276 | // ─────────────────────────── audio bridge ─────────────────────────── | COMMENT |
| MEDIUM | openless-all/app/src-tauri/src/polish.rs | 3206 | // ──────────────── 对话感知 polish 的 chat 消息构造 ──────────────── | COMMENT |
| MEDIUM | openless-all/app/src-tauri/src/polish.rs | 3289 | // ───────── issue #609 F-05:golden/snapshot prompt 测试 ───────── | COMMENT |
| MEDIUM | openless-all/app/src-tauri/src/polish.rs | 3289 | // ───────── issue #609 F-05:golden/snapshot prompt 测试 ───────── | COMMENT |
| MEDIUM | openless-all/app/src-tauri/src/polish.rs | 3851 | // ───────── issue #609 F-02:prompt 注入加固 ───────── | COMMENT |
| MEDIUM | openless-all/app/src-tauri/src/polish.rs | 3851 | // ───────── issue #609 F-02:prompt 注入加固 ───────── | COMMENT |
| MEDIUM | openless-all/app/src-tauri/src/polish.rs | 3974 | // ─────────────────────── 光标上下文 ─────────────────────── | COMMENT |
| MEDIUM | openless-all/app/src-tauri/src/unicode_keystroke.rs | 88 | // ═══════════════════════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM | openless-all/app/src-tauri/src/unicode_keystroke.rs | 90 | // ═══════════════════════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM | openless-all/app/src-tauri/src/unicode_keystroke.rs | 416 | // ═══════════════════════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM | openless-all/app/src-tauri/src/unicode_keystroke.rs | 418 | // ═══════════════════════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM | openless-all/app/src-tauri/src/unicode_keystroke.rs | 641 | // ═══════════════════════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM | openless-all/app/src-tauri/src/unicode_keystroke.rs | 643 | // ═══════════════════════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM | openless-all/app/src-tauri/src/unicode_keystroke.rs | 881 | // ═══════════════════════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM | openless-all/app/src-tauri/src/unicode_keystroke.rs | 883 | // ═══════════════════════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM | openless-all/app/src-tauri/src/selection.rs | 483 | // ─────────────────────────── 模拟复制 fallback (mac/win) ─────────────────────────── | COMMENT |
| MEDIUM | openless-all/app/src-tauri/src/selection.rs | 688 | // ─────────────────────────── macOS AX read ─────────────────────────── | COMMENT |
| MEDIUM | openless-all/app/src-tauri/src/selection.rs | 827 | // ─────────────────────────── macOS Cmd+C post ─────────────────────────── | COMMENT |
| MEDIUM | openless-all/app/src-tauri/src/selection.rs | 900 | // ─────────────────────────── Windows Ctrl+C send ─────────────────────────── | COMMENT |
| MEDIUM | openless-all/app/src-tauri/src/selection.rs | 944 | // ─────────────────────────── front-app label ─────────────────────────── | COMMENT |
| MEDIUM | openless-all/app/src-tauri/src/permissions.rs | 47 | // ─────────────────────────── macOS ─────────────────────────── | COMMENT |
| MEDIUM | openless-all/app/src-tauri/src/permissions.rs | 269 | // ─────────────────────────── Android ─────────────────────────── | COMMENT |
| MEDIUM | openless-all/app/src-tauri/src/permissions.rs | 314 | // ─────────────────────────── Windows / Linux / 其他 ─────────────────────────── | COMMENT |
| MEDIUM | openless-all/app/src-tauri/src/llm_gemini.rs | 384 | // ─────────────────────── 内部辅助 ─────────────────────── | COMMENT |
| MEDIUM | openless-all/app/src-tauri/src/coordinator/dictation.rs | 3091 | // ── Toggle 模式「说完自动停止」(issue #860)────────────────────────── | COMMENT |
| MEDIUM | openless-all/app/src-tauri/src/coordinator/dictation.rs | 3091 | // ── Toggle 模式「说完自动停止」(issue #860)────────────────────────── | COMMENT |
| MEDIUM | …less-all/app/src-tauri/src/coordinator/hotkey_loops.rs | 10 | // ─────────────────────────── hotkey bridging ─────────────────────────── | COMMENT |
| MEDIUM | …less-all/app/src-tauri/src/coordinator/hotkey_loops.rs | 191 | // ─────────────────────────── QA hotkey supervisor ─────────────────────────── | COMMENT |
| MEDIUM | …less-all/app/src-tauri/src/coordinator/hotkey_loops.rs | 306 | // ─────────────────────── Selection Polish hotkey ─────────────────────── | COMMENT |
| MEDIUM | …less-all/app/src-tauri/src/coordinator/hotkey_loops.rs | 467 | // ─────────────────────────── combo hotkey supervisor ─────────────────────────── | COMMENT |
| MEDIUM | …less-all/app/src-tauri/src/coordinator/hotkey_loops.rs | 469 | // ─────────────────────── coding agent hotkey supervisor ─────────────────────── | COMMENT |
| MEDIUM | …less-all/app/src-tauri/src/coordinator/hotkey_loops.rs | 1296 | // ─────────────────── style pack hotkeys (issue #759) ─────────────────── | COMMENT |
| MEDIUM | …less-all/app/src-tauri/src/coordinator/hotkey_loops.rs | 1296 | // ─────────────────── style pack hotkeys (issue #759) ─────────────────── | COMMENT |
| MEDIUM | …enless-all/app/src-tauri/src/coordinator/qa_session.rs | 170 | // ─────────────────────────── QA session lifecycle ─────────────────────────── | COMMENT |
| MEDIUM | openless-all/app/src-tauri/src/remote_server/mod.rs | 69 | // ───────────────────────── 对外类型 ───────────────────────── | COMMENT |
| MEDIUM | openless-all/app/src-tauri/src/remote_server/mod.rs | 115 | // ───────────────────────── 工具函数 ───────────────────────── | COMMENT |
| MEDIUM | openless-all/app/src-tauri/src/remote_server/mod.rs | 184 | // ───────────────────────── TLS ───────────────────────── | COMMENT |
| MEDIUM | openless-all/app/src-tauri/src/remote_server/mod.rs | 281 | // ───────────────────────── 启动 ───────────────────────── | COMMENT |
| MEDIUM | openless-all/app/src-tauri/src/remote_server/mod.rs | 525 | // ───────────────────────── WebSocket ───────────────────────── | COMMENT |
| MEDIUM | openless-all/app/src-tauri/src/asr/local/test_run.rs | 61 | // ── 模型文件完整性检查 ──────────────────────────────────────────── | COMMENT |
| MEDIUM | openless-all/app/src-tauri/src/commands/style_packs.rs | 81 | // ─────────────────────────── style packs ─────────────────────────── | COMMENT |
| MEDIUM | openless-all/app/src-tauri/src/commands/style_packs.rs | 279 | // ─────────────────────────── style toggles (compat) ─────────────────────────── | COMMENT |
| MEDIUM | openless-all/app/src-tauri/src/commands/misc.rs | 212 | // ─────────────────────────── cursor context (debug only) ─────────────────────────── | COMMENT |
| MEDIUM | openless-all/app/src-tauri/src/commands/misc.rs | 258 | // ─────────────────────────── unused but exported (silences dead_code) ─────────────────────────── | COMMENT |
| MEDIUM | openless-all/app/src-tauri/src/commands/mod.rs | 158 | // ─────────────────────────── 跨域共享校验 helper ─────────────────────────── | COMMENT |
| MEDIUM | openless-all/app/src-tauri/src/commands/settings.rs | 729 | // ─────────────────────────── release channel (Beta opt-in) ─────────────────────────── | COMMENT |
| MEDIUM | openless-all/app/src-tauri/src/commands/settings.rs | 864 | // ─────────────────────── Channel-aware updater check ──────────────────────── | COMMENT |
| MEDIUM | openless-all/app/src-tauri/src/commands/marketplace.rs | 4 | // ─────────────────────────── marketplace (Phase A) ─────────────────────────── | COMMENT |
| MEDIUM | openless-all/app/src-tauri/src/host_document/macos.rs | 513 | // ═══════════════════════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM | openless-all/app/src-tauri/src/host_document/macos.rs | 515 | // ═══════════════════════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM | openless-all/app/src-tauri/src/host_document/mod.rs | 346 | // ═══════════════════════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM | openless-all/app/src-tauri/src/host_document/mod.rs | 348 | // ═══════════════════════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM | openless-all/app/src-tauri/src/host_document/diff.rs | 540 | // ─────────────────────── 粗筛 ─────────────────────── | COMMENT |
| 56 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | …-all/app/src-tauri/backend-tests/tests/backend_rust.rs | 1 | //! Rust-only backend unit harness. | COMMENT |
| LOW | …-all/app/src-tauri/backend-tests/tests/backend_rust.rs | 121 | #[path = "../../src/hotkey.rs"] | COMMENT |
| LOW | openless-all/app/src-tauri/src/types.rs | 101 | /// Linux 终端只接受 Ctrl+Shift+V,硬编码 Ctrl+V 会被吞掉,听写文本只剩 | COMMENT |
| LOW | openless-all/app/src-tauri/src/types.rs | 121 | Paste, | COMMENT |
| LOW | openless-all/app/src-tauri/src/types.rs | 141 | /// 保留 `Return` 是因为风格市场里有靠换行发多条消息的风格包,那种效果需要真回车。 | COMMENT |
| LOW | openless-all/app/src-tauri/src/types.rs | 281 | COMMENT | |
| LOW | openless-all/app/src-tauri/src/types.rs | 321 | pub dictionary_entry_count: Option<u32>, | COMMENT |
| LOW | openless-all/app/src-tauri/src/types.rs | 341 | /// 多模态会话 `asr_provider/asr_model` 为空,`llm_provider/llm_model` | COMMENT |
| LOW | openless-all/app/src-tauri/src/types.rs | 361 | #[serde(default, alias = "notes")] | COMMENT |
| LOW | openless-all/app/src-tauri/src/types.rs | 401 | } | COMMENT |
| LOW | openless-all/app/src-tauri/src/types.rs | 421 | COMMENT | |
| LOW | openless-all/app/src-tauri/src/types.rs | 661 | active: false, | COMMENT |
| LOW | openless-all/app/src-tauri/src/types.rs | 921 | /// 默认开启;可在「录音与输入」设置里关闭。提示音由 capsule 窗口用 Web Audio API 合成, | COMMENT |
| LOW | openless-all/app/src-tauri/src/types.rs | 941 | pub pipeline_mode: PipelineMode, | COMMENT |
| LOW | openless-all/app/src-tauri/src/types.rs | 961 | /// macOS 走 AX 直写,不受这个开关影响。详见 issue #111。 | COMMENT |
| LOW | openless-all/app/src-tauri/src/types.rs | 981 | pub macos_newline_mode: MacosNewlineMode, | COMMENT |
| LOW | openless-all/app/src-tauri/src/types.rs | 1001 | /// 中文输出字形偏好(不额外暴露为 UI 开关): | COMMENT |
| LOW | openless-all/app/src-tauri/src/types.rs | 1021 | /// 选区书面润色独立使用的风格包;未设置时迁移为默认内置轻度润色包。 | COMMENT |
| LOW | openless-all/app/src-tauri/src/types.rs | 1041 | /// `global-hotkey` crate 注册此组合键(支持 Toggle + Hold 模式)。 | COMMENT |
| LOW | openless-all/app/src-tauri/src/types.rs | 1061 | #[serde(default)] | COMMENT |
| LOW | openless-all/app/src-tauri/src/types.rs | 1081 | #[serde(default = "default_coding_agent_voice_hotkey")] | COMMENT |
| LOW | openless-all/app/src-tauri/src/types.rs | 1101 | /// 本地 Qwen3-ASR 当前激活的模型 id("qwen3-asr-0.6b" / "qwen3-asr-1.7b")。 | COMMENT |
| LOW | openless-all/app/src-tauri/src/types.rs | 1121 | pub local_asr_models_base_dir: String, | COMMENT |
| LOW | openless-all/app/src-tauri/src/types.rs | 1141 | /// foundry/qwen3 一致。 | COMMENT |
| LOW | openless-all/app/src-tauri/src/types.rs | 1161 | pub start_minimized: bool, | COMMENT |
| LOW | openless-all/app/src-tauri/src/types.rs | 1181 | #[serde(default = "default_true")] | COMMENT |
| LOW | openless-all/app/src-tauri/src/types.rs | 1201 | /// 密码框 / Secure Input / 密码管理器 / 终端一律硬拦,与本开关无关。 | COMMENT |
| LOW | openless-all/app/src-tauri/src/types.rs | 1221 | #[serde(default)] | COMMENT |
| LOW | openless-all/app/src-tauri/src/types.rs | 1241 | /// Android: text insertion strategy for cross-app dictation results. | COMMENT |
| LOW | openless-all/app/src-tauri/src/types.rs | 1441 | #[serde(default)] | COMMENT |
| LOW | openless-all/app/src-tauri/src/types.rs | 3341 | #[serde(default)] | COMMENT |
| LOW | openless-all/app/src-tauri/src/endpoint_security.rs | 1 | //! Shared validation for user-configurable HTTP endpoints. | COMMENT |
| LOW | openless-all/app/src-tauri/src/recorder.rs | 1 | //! 麦克风采集:cpal 拉流 → 16 kHz 单声道 Int16 PCM → 喂给 `AudioConsumer`。 | COMMENT |
| LOW | openless-all/app/src-tauri/src/net.rs | 1 | //! 共享 HTTP 客户端 + 带重试的请求发送。 | COMMENT |
| LOW | openless-all/app/src-tauri/src/windows_ime_profile.rs | 201 | pub fn is_openless_language_profile_enabled() -> WindowsImeProfileResult<bool> { | COMMENT |
| LOW | openless-all/app/src-tauri/src/lib.rs | 1 | #![cfg_attr( | COMMENT |
| LOW | openless-all/app/src-tauri/src/lib.rs | 61 | mod persistence; | COMMENT |
| LOW | openless-all/app/src-tauri/src/lib.rs | 741 | // | COMMENT |
| LOW | openless-all/app/src-tauri/src/lib.rs | 1941 | /// 跟随**鼠标光标所在的屏**——这是用户的操作/视线焦点,也是唯一始终可用、 | COMMENT |
| LOW | openless-all/app/src-tauri/src/lib.rs | 2741 | #[cfg(not(all(not(mobile), target_os = "windows")))] | COMMENT |
| LOW | openless-all/app/src-tauri/src/lib.rs | 2941 | /// 抓完选区后把焦点重新交回 QA 浮窗(Windows focus-dance 下半场)。begin_qa_session | COMMENT |
| LOW | openless-all/app/src-tauri/src/hotkey.rs | 1 | #![cfg_attr(target_os = "linux", allow(dead_code))] | COMMENT |
| LOW | openless-all/app/src-tauri/src/coordinator.rs | 201 | const VOCAB_CARD_WIDTH: f64 = 320.0; | COMMENT |
| LOW | openless-all/app/src-tauri/src/coordinator.rs | 341 | /// 两步缺一不可,而这正是它必须收口成一个函数的原因: | COMMENT |
| LOW | openless-all/app/src-tauri/src/coordinator.rs | 641 | /// 阶跃星辰 StepAudio 实时(OpenAI Realtime 风格 WS,收尾靠静音帧驱动 VAD)。 | COMMENT |
| LOW | openless-all/app/src-tauri/src/coordinator.rs | 661 | fn asr_transcribe_uses_global_timeout(asr: &ActiveAsr) -> bool { | COMMENT |
| LOW | openless-all/app/src-tauri/src/coordinator.rs | 781 | /// | COMMENT |
| LOW | openless-all/app/src-tauri/src/coordinator.rs | 1021 | /// 本地 Qwen3-ASR MLX 引擎缓存。跨会话复用,避免每次重加载 1.2GB+ 模型。 | COMMENT |
| LOW | openless-all/app/src-tauri/src/coordinator.rs | 1041 | audio_archive_active: AtomicBool, | COMMENT |
| LOW | openless-all/app/src-tauri/src/coordinator.rs | 1061 | pending_corrections: Mutex<Vec<crate::types::PendingCorrection>>, | COMMENT |
| LOW | openless-all/app/src-tauri/src/coordinator.rs | 1101 | /// 丢弃(误触双击 / 微动开关回弹 / 用户连点过快造成的空转写报错)。 | COMMENT |
| LOW | openless-all/app/src-tauri/src/coordinator.rs | 1121 | translation_hotkey: Mutex<Option<ComboHotkeyMonitor>>, | COMMENT |
| LOW | openless-all/app/src-tauri/src/coordinator.rs | 1141 | selection_voice_intent_prompt: | COMMENT |
| LOW | openless-all/app/src-tauri/src/coordinator.rs | 1161 | /// 覆盖新的选区润色/语音/QA 可见状态。 | COMMENT |
| LOW | openless-all/app/src-tauri/src/coordinator.rs | 1181 | /// 读偏好锁的代价只落在主线程(与 show_capsule 同源),音频线程零开销。 | COMMENT |
| LOW | openless-all/app/src-tauri/src/coordinator.rs | 1201 | shutdown: AtomicBool, | COMMENT |
| LOW | openless-all/app/src-tauri/src/coordinator.rs | 6081 | /// 而词典本身的顺序是**最近添加的在最前**([`DictionaryStore::add`] 用 | COMMENT |
| LOW | openless-all/app/src-tauri/src/coordinator.rs | 6161 | /// 点 ✓ / 中途出错走这里,保留 2 秒让用户看清结果 / 错误提示。 | COMMENT |
| LOW | openless-all/app/src-tauri/src/polish.rs | 41 | /// 润色路径「等第一个正文字符」的动态预算。 | COMMENT |
| LOW | openless-all/app/src-tauri/src/polish.rs | 1561 | fn should_retry_transient(is_connect: bool, is_request: bool, is_timeout: bool) -> bool { | COMMENT |
| 138 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | …ndroid/frontend/components/AndroidPermissionsPanel.tsx | 57 | function persistAndroidOverlayPrefs(patch: Partial<UserPreferences>): Promise<AndroidPrefsSlice> { | CODE |
| LOW | …ndroid/frontend/components/AndroidPermissionsPanel.tsx | 538 | function AndroidAccessibilityStatusPill({ status }: { status: AndroidAccessibilityStatus | null }) { | CODE |
| LOW | …ndroid/frontend/components/AndroidPermissionsPanel.tsx | 555 | function resolveAccessibilityMessage(t: TFunction, key: string | null | undefined): string { | CODE |
| LOW | openless-all/app/android/frontend/lib/androidIpc.ts | 18 | export function requestAndroidOverlayPermission(): Promise<{ launched: boolean; message: string }> { | CODE |
| LOW | openless-all/app/android/frontend/lib/androidIpc.ts | 33 | export function getAndroidAccessibilityStatus(): Promise<AndroidAccessibilityStatus> { | CODE |
| LOW | openless-all/app/android/frontend/lib/androidIpc.ts | 42 | export function requestAndroidAccessibilityPermission(): Promise<{ launched: boolean; message: string }> { | CODE |
| LOW | openless-all/app/android/frontend/lib/androidIpc.ts | 61 | export function requestAndroidShizukuPermission(): Promise<AndroidShizukuActionResult> { | CODE |
| LOW | openless-all/app/android/frontend/lib/androidIpc.ts | 75 | export function recoverAndroidAccessibility(confirmed: boolean): Promise<AndroidAccessibilityRecoveryResult> { | CODE |
| LOW | openless-all/app/android/frontend/lib/androidTypes.ts | 74 | export function normalizeAndroidOverlayTrigger( | CODE |
| LOW | …pp/android/frontend/lib/androidMicrophonePermission.ts | 7 | export async function checkAndroidMicrophoneAccess(): Promise<AppPermissionStatus> { | CODE |
| LOW | …pp/android/frontend/lib/androidMicrophonePermission.ts | 43 | export async function requestAndroidMicrophoneAccess(): Promise<AppPermissionStatus> { | CODE |
| LOW | openless-all/app/src/components/FloatingShell.tsx | 879 | function HotkeyModeMigrationPrompt({ onLater, onOpenSettings }: { onLater: () => void; onOpenSettings: () => void }) { | CODE |
| LOW | openless-all/app/src/lib/translationTarget.ts | 17 | export function isTranslationTargetRedundant( | CODE |
| LOW | openless-all/app/src/lib/stackedLayout.ts | 12 | export function applyStackedLayoutFromPrefs( | CODE |
| LOW | openless-all/app/src/lib/hotkeyRecorder.ts | 11 | export function createHotkeyRecorderState(): HotkeyRecorderState { | CODE |
| LOW | openless-all/app/src/lib/hotkeyRecorder.ts | 18 | export function updateHotkeyRecorderState( | CODE |
| LOW | openless-all/app/src/lib/stylePackZip.ts | 20 | export function isStylePackZipDialogCancellation(error: unknown): boolean { | CODE |
| LOW | openless-all/app/src/lib/stylePackZip.ts | 25 | export async function pickStylePackZipTargetPath( | CODE |
| LOW | openless-all/app/src/lib/stylePrefs.ts | 13 | export async function persistStylePreferenceChange( | CODE |
| LOW | openless-all/app/src/lib/stylePrefs.ts | 31 | export function applyStylePreferencesNotification( | CODE |
| LOW⚡ | openless-all/app/src/lib/stylePrefs.ts | 46 | export function styleMasterOffPreferences(prefs: UserPreferences): UserPreferences { | CODE |
| LOW⚡ | openless-all/app/src/lib/stylePrefs.ts | 50 | export function styleDefaultModePreferences(prefs: UserPreferences, mode: PolishMode): UserPreferences { | CODE |
| LOW⚡ | openless-all/app/src/lib/stylePrefs.ts | 55 | export function rollbackDefaultModeChange( | CODE |
| LOW⚡ | openless-all/app/src/lib/stylePrefs.ts | 65 | export function rollbackStyleEnabledChange( | CODE |
| LOW | openless-all/app/src/lib/stylePrefs.ts | 81 | export function rollbackWholeStylePreferences( | CODE |
| LOW | openless-all/app/src/lib/stylePrefs.ts | 91 | export function rollbackDefaultAndEnabledChange( | CODE |
| LOW | openless-all/app/src/lib/hotkeyMigration.ts | 7 | export function isHotkeyModeMigrationNoticeActive(): boolean { | CODE |
| LOW | openless-all/app/src/lib/hotkeyMigration.ts | 11 | export function shouldShowHotkeyModeMigrationPrompt( | CODE |
| LOW | openless-all/app/src/lib/conservativeLayout.ts | 12 | export function isConservativeLayoutActive(): boolean { | CODE |
| LOW | openless-all/app/src/lib/localAsr.ts | 12 | export function isLocalAsrModelSupportedOnOs(modelId: string, os: OS): boolean { | CODE |
| LOW | openless-all/app/src/lib/localAsr.ts | 218 | export function getLocalAsrStorageSettings(): Promise<LocalAsrStorageSettings> { | CODE |
| LOW | openless-all/app/src/lib/localAsr.ts | 390 | export function setLocalAsrKeepLoadedSecs(seconds: number): Promise<void> { | CODE |
| LOW | openless-all/app/src/lib/localAsr.ts | 411 | export function getFoundryLocalAsrCatalog(): Promise< | CODE |
| LOW | openless-all/app/src/lib/localAsr.ts | 429 | export function setFoundryLocalAsrLanguageHint( | CODE |
| LOW | openless-all/app/src/lib/localAsr.ts | 439 | export function setFoundryLocalRuntimeSource(source: string): Promise<void> { | CODE |
| LOW | openless-all/app/src/lib/localAsr.ts | 455 | export function cancelFoundryLocalAsrPrepare(): Promise<void> { | CODE |
| LOW⚡ | openless-all/app/src/lib/localAsr.ts | 467 | export function getFoundryLocalAsrModelDir(modelAlias: string): Promise<string> { | CODE |
| LOW⚡ | openless-all/app/src/lib/localAsr.ts | 475 | export function deleteFoundryLocalAsrModel(modelAlias: string): Promise<void> { | CODE |
| LOW⚡ | openless-all/app/src/lib/localAsr.ts | 483 | export function revealFoundryLocalAsrModelDir( | CODE |
| LOW | openless-all/app/src/lib/localAsr.ts | 614 | export function setSherpaOnnxAsrLanguageHint( | CODE |
| LOW | openless-all/app/src/lib/localAsr.ts | 632 | export function cancelSherpaOnnxAsrPrepare(): Promise<void> { | CODE |
| LOW | openless-all/app/src/lib/localAsr.ts | 648 | export function revealSherpaOnnxAsrModelDir(modelAlias: string): Promise<void> { | CODE |
| LOW | openless-all/app/src/lib/localAsr.ts | 676 | export function fetchSherpaOnnxAsrRemoteInfo( | CODE |
| LOW | openless-all/app/src/lib/localAsr.ts | 692 | export function downloadSherpaOnnxAsrModel( | CODE |
| LOW | openless-all/app/src/lib/localAsr.ts | 703 | export function cancelSherpaOnnxAsrDownload(modelAlias: string): Promise<void> { | CODE |
| LOW | openless-all/app/src/lib/platform.ts | 62 | export function inferPlatformCapabilities(): PlatformCapabilities { | CODE |
| LOW | openless-all/app/src/lib/platform.ts | 125 | export function getCachedPlatformCapabilities(): PlatformCapabilities | null { | CODE |
| LOW | openless-all/app/src/lib/advancedAsrConfig.ts | 40 | export function serializeAdvancedAsrConfig(config: AdvancedAsrConfig): string { | CODE |
| LOW | openless-all/app/src/lib/audioCue.ts | 98 | export function audioContextActionForState(state: string): AudioContextAction { | CODE |
| LOW | openless-all/app/src/lib/history-repolish.ts | 13 | export function resolveRepolishRetryPackId( | CODE |
| LOW | openless-all/app/src/lib/history-repolish.ts | 47 | export function resolveRepolishRetryPackIdWithFallback( | CODE |
| LOW | openless-all/app/src/lib/providerSetup.ts | 15 | export function shouldShowProviderSetupPrompt( | CODE |
| LOW | openless-all/app/src/lib/insertFallbackLayout.ts | 6 | export function nextFallbackCardHeightReport( | CODE |
| LOW⚡ | openless-all/app/src/lib/hotkey.ts | 12 | export function defaultSelectionPolishShortcut(): ShortcutBinding { | CODE |
| LOW⚡ | openless-all/app/src/lib/hotkey.ts | 16 | export function defaultAppShortcutModifiers(): string[] { | CODE |
| LOW⚡ | openless-all/app/src/lib/hotkey.ts | 22 | export function defaultSwitchStyleShortcut(): ShortcutBinding { | CODE |
| LOW⚡ | openless-all/app/src/lib/hotkey.ts | 30 | export function defaultLessComputerShortcut(): ShortcutBinding { | CODE |
| LOW | openless-all/app/src/lib/hotkey.ts | 208 | export function shortcutFromLegacyTrigger(trigger: HotkeyTrigger): ShortcutBinding { | CODE |
| LOW | openless-all/app/src/lib/hotkey.ts | 267 | export function sideModifiersFromPressedCodes(codes: Iterable<string>): string[] { | CODE |
| LOW | openless-all/app/src/lib/hotkey.ts | 282 | export function genericModifiersFromPressedCodes(codes: Iterable<string>): string[] { | CODE |
| 54 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | …less-all/app/scripts/windows-openless-lifecycle-e2e.py | 33 | except Exception: | CODE |
| LOW | …less-all/app/scripts/windows-openless-lifecycle-e2e.py | 38 | except Exception: | CODE |
| LOW | …less-all/app/scripts/windows-openless-lifecycle-e2e.py | 110 | except Exception: | STRING |
| LOW | …less-all/app/scripts/windows-openless-lifecycle-e2e.py | 160 | except Exception: | STRING |
| LOW | …less-all/app/scripts/windows-openless-lifecycle-e2e.py | 211 | except Exception: | STRING |
| LOW | …less-all/app/scripts/windows-openless-lifecycle-e2e.py | 215 | except Exception: | STRING |
| LOW | …less-all/app/scripts/windows-openless-lifecycle-e2e.py | 291 | except Exception: | STRING |
| LOW | …less-all/app/scripts/windows-openless-lifecycle-e2e.py | 304 | except Exception: | STRING |
| MEDIUM | …less-all/app/scripts/windows-openless-lifecycle-e2e.py | 29 | def get_clipboard_text() -> str | None: | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | openless-all/app/src-tauri/src/selection.rs | 44 | /// On macOS we have no HWND equivalent; the closest robust fingerprint is the | COMMENT |
| MEDIUM | .github/workflows/ci.yml | 285 | # DLL entrypoint 时,进程会在 test harness 启动前退出。这里保留 cfg/link | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | …less-all/app/scripts/windows-openless-lifecycle-e2e.py | 78 | return JSON.stringify(value ?? null); | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | openless-all/app/android/kotlin/README.md | 1 | # Android Kotlin scaffolding | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | openless-all/app/src-tauri/src/edit_plan.rs | 680 | replace: "user@example.com".into(), | CODE |
| LOW | …ess-all/app/src-tauri/src/asr/local/foundry_runtime.rs | 2282 | b"placeholder", | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | openless-all/scripts/linux-fcitx5-plugin/build.sh | 5 | # Usage: | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | …less-all/app/scripts/windows-openless-lifecycle-e2e.py | 17 | def set_clipboard_text(text: str | None) -> None: | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | …less-all/app/scripts/windows-openless-lifecycle-e2e.py | 5 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | …less-all/app/scripts/windows-openless-lifecycle-e2e.py | 88 | CODE |