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 2,750 GitHub stars. SynthScan v2.0 examined 122,461 lines of code across 362 source files, recording 301 pattern matches distributed across 12 syntactic categories. The overall adjusted score of 4.3 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 301 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 | 2337 | // ───────────────────────── Less Computer 浮窗 ───────────────────────── | COMMENT |
| MEDIUM | openless-all/app/src-tauri/src/hotkey.rs | 277 | // ─────────────────────────── macOS implementation ─────────────────────────── | COMMENT |
| MEDIUM | openless-all/app/src-tauri/src/hotkey.rs | 367 | // ── Raw CG/CF FFI ────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | openless-all/app/src-tauri/src/hotkey.rs | 768 | // ─────────────────────────── Windows implementation ─────────────────────────── | COMMENT |
| MEDIUM | openless-all/app/src-tauri/src/hotkey.rs | 1263 | // ─────────────────────────── Linux / other implementation ─────────────────────────── | COMMENT |
| MEDIUM | openless-all/app/src-tauri/src/coordinator.rs | 1942 | // ─────────────────────────── session lifecycle ─────────────────────────── | COMMENT |
| MEDIUM | openless-all/app/src-tauri/src/coordinator.rs | 2200 | // ─────────────────────────── helpers ─────────────────────────── | COMMENT |
| MEDIUM | openless-all/app/src-tauri/src/coordinator.rs | 3674 | // ─────────────────────────── audio bridge ─────────────────────────── | COMMENT |
| MEDIUM | openless-all/app/src-tauri/src/polish.rs | 2286 | // ──────────────── 对话感知 polish 的 chat 消息构造 ──────────────── | COMMENT |
| MEDIUM | openless-all/app/src-tauri/src/polish.rs | 2369 | // ───────── issue #609 F-05:golden/snapshot prompt 测试 ───────── | COMMENT |
| MEDIUM | openless-all/app/src-tauri/src/polish.rs | 2369 | // ───────── issue #609 F-05:golden/snapshot prompt 测试 ───────── | COMMENT |
| MEDIUM | openless-all/app/src-tauri/src/polish.rs | 2744 | // ───────── issue #609 F-02:prompt 注入加固 ───────── | COMMENT |
| MEDIUM | openless-all/app/src-tauri/src/polish.rs | 2744 | // ───────── issue #609 F-02:prompt 注入加固 ───────── | 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 | 310 | // ═══════════════════════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM | openless-all/app/src-tauri/src/unicode_keystroke.rs | 312 | // ═══════════════════════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM | openless-all/app/src-tauri/src/unicode_keystroke.rs | 535 | // ═══════════════════════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM | openless-all/app/src-tauri/src/unicode_keystroke.rs | 537 | // ═══════════════════════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM | openless-all/app/src-tauri/src/unicode_keystroke.rs | 688 | // ═══════════════════════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM | openless-all/app/src-tauri/src/unicode_keystroke.rs | 690 | // ═══════════════════════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM | openless-all/app/src-tauri/src/selection.rs | 117 | // ─────────────────────────── 模拟复制 fallback (mac/win) ─────────────────────────── | COMMENT |
| MEDIUM | openless-all/app/src-tauri/src/selection.rs | 233 | // ─────────────────────────── macOS AX read ─────────────────────────── | COMMENT |
| MEDIUM | openless-all/app/src-tauri/src/selection.rs | 372 | // ─────────────────────────── macOS Cmd+C post ─────────────────────────── | COMMENT |
| MEDIUM | openless-all/app/src-tauri/src/selection.rs | 445 | // ─────────────────────────── Windows Ctrl+C send ─────────────────────────── | COMMENT |
| MEDIUM | openless-all/app/src-tauri/src/selection.rs | 489 | // ─────────────────────────── front-app label ─────────────────────────── | COMMENT |
| MEDIUM | openless-all/app/src-tauri/src/permissions.rs | 25 | // ─────────────────────────── macOS ─────────────────────────── | COMMENT |
| MEDIUM | openless-all/app/src-tauri/src/permissions.rs | 247 | // ─────────────────────────── Android ─────────────────────────── | COMMENT |
| MEDIUM | openless-all/app/src-tauri/src/permissions.rs | 292 | // ─────────────────────────── Windows / Linux / 其他 ─────────────────────────── | COMMENT |
| MEDIUM | openless-all/app/src-tauri/src/llm_gemini.rs | 369 | // ─────────────────────── 内部辅助 ─────────────────────── | 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 | 121 | // ─────────────────────────── QA hotkey supervisor ─────────────────────────── | COMMENT |
| MEDIUM | …less-all/app/src-tauri/src/coordinator/hotkey_loops.rs | 231 | // ─────────────────────────── combo hotkey supervisor ─────────────────────────── | COMMENT |
| MEDIUM | …less-all/app/src-tauri/src/coordinator/hotkey_loops.rs | 233 | // ─────────────────────── coding agent hotkey supervisor ─────────────────────── | COMMENT |
| MEDIUM | …enless-all/app/src-tauri/src/coordinator/qa_session.rs | 11 | // ─────────────────────────── QA session lifecycle ─────────────────────────── | COMMENT |
| MEDIUM | openless-all/app/src-tauri/src/remote_server/mod.rs | 67 | // ───────────────────────── 对外类型 ───────────────────────── | COMMENT |
| MEDIUM | openless-all/app/src-tauri/src/remote_server/mod.rs | 109 | // ───────────────────────── 工具函数 ───────────────────────── | COMMENT |
| MEDIUM | openless-all/app/src-tauri/src/remote_server/mod.rs | 194 | // ───────────────────────── TLS ───────────────────────── | COMMENT |
| MEDIUM | openless-all/app/src-tauri/src/remote_server/mod.rs | 291 | // ───────────────────────── 启动 ───────────────────────── | COMMENT |
| MEDIUM | openless-all/app/src-tauri/src/remote_server/mod.rs | 520 | // ───────────────────────── WebSocket ───────────────────────── | COMMENT |
| MEDIUM | openless-all/app/src-tauri/src/asr/local/test_run.rs | 50 | // ── 模型文件完整性检查 ──────────────────────────────────────────── | 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 | 252 | // ─────────────────────────── style toggles (compat) ─────────────────────────── | COMMENT |
| MEDIUM | openless-all/app/src-tauri/src/commands/github_oauth.rs | 3 | // ─────────────────────── GitHub OAuth Device Flow (Phase 1) ─────────────────────── | COMMENT |
| MEDIUM | openless-all/app/src-tauri/src/commands/misc.rs | 170 | // ─────────────────────────── unused but exported (silences dead_code) ─────────────────────────── | COMMENT |
| MEDIUM | openless-all/app/src-tauri/src/commands/mod.rs | 143 | // ─────────────────────────── 跨域共享校验 helper ─────────────────────────── | COMMENT |
| MEDIUM | openless-all/app/src-tauri/src/commands/settings.rs | 426 | // ─────────────────────────── release channel (Beta opt-in) ─────────────────────────── | COMMENT |
| MEDIUM | openless-all/app/src-tauri/src/commands/settings.rs | 536 | // ─────────────────────── 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/lib/localAsr.ts | 460 | // ─── Sherpa-Onnx Local ASR ─────────────────────────────────────────── | COMMENT |
| MEDIUM | openless-all/app/src/lib/ipc/remote-server.ts | 3 | // ── Remote input (局域网手机录音) ────────────────────────────────────── | COMMENT |
| MEDIUM | openless-all/app/src/lib/ipc/mock-data.ts | 480 | // ── Style pack mutation helpers ─────────────────────────────────────── | COMMENT |
| MEDIUM | openless-all/app/src/lib/ipc/mock-data.ts | 640 | // ── 活动热力图(浏览器 dev 演示数据)──────────────────────────────────── | COMMENT |
| MEDIUM | openless-all/app/src/pages/QaPanel.tsx | 143 | // ── 后端事件订阅(mount 时订阅一次,永不重订阅)────────────────── | COMMENT |
| MEDIUM | openless-all/app/src/pages/QaPanel.tsx | 234 | // ── Esc 关闭 ──────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | openless-all/app/src/pages/QaPanel.tsx | 285 | // ── 官方 message-scroller-demo 同款骨架 ───────────────────────────── | COMMENT |
| MEDIUM | openless-all/app/src/pages/QaPanel.tsx | 492 | // ── 子组件 ──────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | openless-all/app/src/pages/LessComputerPanel.tsx | 199 | // ── 后端事件订阅(mount 一次)──────────────────────────────────────── | COMMENT |
| MEDIUM | openless-all/app/src/pages/LessComputerPanel.tsx | 368 | // ── Esc 关闭 ──────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | openless-all/app/src/pages/LessComputerPanel.tsx | 382 | // ── 官方 message-scroller-demo 同款骨架 ───────────────────────────── | COMMENT |
| 41 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | openless-all/app/src-tauri/src/linux_fcitx.rs | 261 | Err(_) => return false, | COMMENT |
| LOW | openless-all/app/src-tauri/src/types.rs | 601 | #[serde(default)] | COMMENT |
| LOW | openless-all/app/src-tauri/src/types.rs | 621 | #[serde(default)] | COMMENT |
| LOW | openless-all/app/src-tauri/src/types.rs | 661 | /// 翻译输出的目标语言(单选,原生名)。空串 = 不启用翻译模式(Shift 组合键无效)。 | COMMENT |
| LOW | openless-all/app/src-tauri/src/types.rs | 681 | pub qa_hotkey: Option<ShortcutBinding>, | COMMENT |
| LOW | openless-all/app/src-tauri/src/types.rs | 701 | #[serde(default)] | COMMENT |
| LOW | openless-all/app/src-tauri/src/types.rs | 721 | #[serde(default = "default_coding_agent_voice_hotkey")] | COMMENT |
| LOW | openless-all/app/src-tauri/src/types.rs | 741 | /// 本地 Qwen3-ASR 当前激活的模型 id("qwen3-asr-0.6b" / "qwen3-asr-1.7b")。 | COMMENT |
| LOW | openless-all/app/src-tauri/src/types.rs | 761 | /// Windows Foundry Local native runtime 下载源:"auto" / "nuget" / "ort-nightly"。 | COMMENT |
| LOW | openless-all/app/src-tauri/src/types.rs | 781 | /// 手动检查按钮显式指定 channel,与此 pref 解耦。 | COMMENT |
| LOW | openless-all/app/src-tauri/src/types.rs | 801 | /// 流式输入:润色 SSE 一边到达一边逐字模拟键盘事件输出到当前焦点。开启后用户感知到 | COMMENT |
| LOW | openless-all/app/src-tauri/src/types.rs | 821 | /// 缺少此标记的旧文件统一迁到 true;迁移后用户再关会带着标记保存,后续保留 false。 | COMMENT |
| LOW | openless-all/app/src-tauri/src/types.rs | 841 | #[serde(default)] | COMMENT |
| LOW | openless-all/app/src-tauri/src/types.rs | 861 | pub marketplace_dev_login: String, | COMMENT |
| LOW | openless-all/app/src-tauri/src/types.rs | 1301 | /// 逐字段抢救一份无法严格反序列化的 preferences.json。 | COMMENT |
| LOW | openless-all/app/src-tauri/src/types.rs | 2801 | /// 当前 session 是否处于翻译模式(用户按过 Shift)。前端用它在胶囊顶部 | 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/recorder.rs | 61 | impl Recorder { | COMMENT |
| LOW | openless-all/app/src-tauri/src/recorder.rs | 221 | // | COMMENT |
| LOW | openless-all/app/src-tauri/src/net.rs | 1 | //! 共享 HTTP 客户端 + 带重试的请求发送。 | COMMENT |
| LOW | openless-all/app/src-tauri/src/windows_ime_profile.rs | 401 | COMMENT | |
| LOW | openless-all/app/src-tauri/src/lib.rs | 1 | #![cfg_attr( | COMMENT |
| LOW | openless-all/app/src-tauri/src/lib.rs | 61 | #[cfg(not(mobile))] | COMMENT |
| LOW | openless-all/app/src-tauri/src/lib.rs | 421 | #[cfg(target_os = "windows")] | COMMENT |
| LOW | openless-all/app/src-tauri/src/lib.rs | 581 | } | COMMENT |
| LOW | openless-all/app/src-tauri/src/lib.rs | 641 | } | COMMENT |
| LOW | openless-all/app/src-tauri/src/lib.rs | 1641 | self.physical_y, | COMMENT |
| LOW | openless-all/app/src-tauri/src/lib.rs | 2521 | // - 直接 SetFocus(host_hwnd) 不保证 WebView2 child 收键盘事件,WebView2 子窗口 | COMMENT |
| LOW | openless-all/app/src-tauri/src/coordinator.rs | 201 | COMMENT | |
| LOW | openless-all/app/src-tauri/src/coordinator.rs | 441 | recorder: Mutex<Option<SessionResource<Recorder>>>, | COMMENT |
| LOW | openless-all/app/src-tauri/src/coordinator.rs | 481 | coding_agent_combo_hotkey: Mutex<Option<ComboHotkeyMonitor>>, | COMMENT |
| LOW | openless-all/app/src-tauri/src/coordinator.rs | 501 | /// polish::chat_completion_history_streaming 的 loop 每帧检查,true 时 break loop | COMMENT |
| LOW | openless-all/app/src-tauri/src/polish.rs | 1201 | while cut > 0 && !s.is_char_boundary(cut) { | COMMENT |
| LOW | openless-all/app/src-tauri/src/polish.rs | 1261 | fn should_retry_transient(is_connect: bool, is_request: bool, is_timeout: bool) -> bool { | COMMENT |
| LOW | openless-all/app/src-tauri/src/polish.rs | 1701 | /// issue #609 F-02:不可信文本包进 XML 信封前的统一加固。 | COMMENT |
| LOW | openless-all/app/src-tauri/src/polish.rs | 1841 | - 控制在 3 段以内,约 200 字以内(除非用户明确要求长篇)。\n\ | COMMENT |
| LOW | openless-all/app/src-tauri/src/unicode_keystroke.rs | 1 | #![cfg_attr(target_os = "linux", allow(dead_code, unused_variables))] | COMMENT |
| LOW | openless-all/app/src-tauri/src/unicode_keystroke.rs | 21 | //! | COMMENT |
| LOW | openless-all/app/src-tauri/src/unicode_keystroke.rs | 41 | pub enum TypeError { | COMMENT |
| LOW | openless-all/app/src-tauri/src/unicode_keystroke.rs | 501 | COMMENT | |
| LOW | openless-all/app/src-tauri/src/selection.rs | 1 | #![cfg_attr( | COMMENT |
| LOW | openless-all/app/src-tauri/src/insertion.rs | 1 | #![cfg_attr(target_os = "linux", allow(dead_code, unused_variables))] | COMMENT |
| LOW | openless-all/app/src-tauri/src/permissions.rs | 1 | #![cfg_attr(target_os = "linux", allow(dead_code, unused_variables))] | COMMENT |
| LOW | openless-all/app/src-tauri/src/llm_gemini.rs | 1 | //! 谷歌 Gemini 原生 generateContent / streamGenerateContent 客户端。 | COMMENT |
| LOW | openless-all/app/src-tauri/src/llm_gemini.rs | 381 | } | COMMENT |
| LOW | openless-all/app/src-tauri/src/cli.rs | 1 | //! 极简 CLI 参数解析 — 用于支持桌面环境快捷键调起 OpenLess 触发听写 / QA。 | COMMENT |
| LOW | openless-all/app/src-tauri/src/device_watch.rs | 1 | //! 托盘麦克风设备变更的 OS 原生监听(issue #470)。 | COMMENT |
| LOW | openless-all/app/src-tauri/src/coordinator/dictation.rs | 221 | /// | COMMENT |
| LOW | openless-all/app/src-tauri/src/coordinator/dictation.rs | 2041 | // 第一帧 process_callback 中间有 50–200 ms 间隙(Windows 类似)。 | COMMENT |
| LOW | …nless-all/app/src-tauri/src/coordinator/polish_flow.rs | 1 | //! Polish / translate orchestration extracted from `coordinator.rs` | COMMENT |
| LOW | …enless-all/app/src-tauri/src/coordinator/qa_session.rs | 581 | state.front_app = capture_frontmost_app(); | COMMENT |
| LOW | …ess-all/app/src-tauri/src/coordinator/capsule_focus.rs | 301 | // emit_capsule 已经把窗口操作 marshal 到 Tauri 主线程;这里不能调用 | COMMENT |
| LOW | openless-all/app/src-tauri/src/coordinator/resources.rs | 161 | // holders/guard 状态本身在 panic 路径下仍然一致 —— 因为 panic 只能发生在 | COMMENT |
| LOW | openless-all/app/src-tauri/src/coding_agent/stream.rs | 1 | //! 解析 `claude -p --output-format stream-json` 的逐行 JSON 输出。 | COMMENT |
| LOW | openless-all/app/src-tauri/src/coding_agent/opencode.rs | 1 | //! 无头 OpenCode(`opencode run`)适配器(issue #579)。 | COMMENT |
| LOW | openless-all/app/src-tauri/src/coding_agent/guard.rs | 61 | } | COMMENT |
| LOW | openless-all/app/src-tauri/src/coding_agent/guard.rs | 161 | vec![ | COMMENT |
| LOW | openless-all/app/src-tauri/src/remote_server/mod.rs | 1 | //! 远程输入(局域网手机录音)的 HTTPS + WebSocket 服务。 | COMMENT |
| LOW | openless-all/app/src-tauri/src/asr/volcengine.rs | 61 | #[error("connection failed: {0}")] | COMMENT |
| LOW | …less-all/app/src-tauri/src/asr/dashscope_multimodal.rs | 1 | //! 阿里云百炼(DashScope)多模态生成同步接口的批量 ASR 客户端。 | COMMENT |
| 42 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | …ndroid/frontend/components/AndroidPermissionsPanel.tsx | 50 | function persistAndroidOverlayPrefs(patch: Partial<UserPreferences>): Promise<AndroidPrefsSlice> { | CODE |
| LOW | …ndroid/frontend/components/AndroidPermissionsPanel.tsx | 379 | function AndroidAccessibilityStatusPill({ status }: { status: AndroidAccessibilityStatus | null }) { | CODE |
| LOW | openless-all/app/android/frontend/lib/androidIpc.ts | 15 | export function requestAndroidOverlayPermission(): Promise<{ launched: boolean; message: string }> { | CODE |
| LOW | openless-all/app/android/frontend/lib/androidIpc.ts | 30 | export function getAndroidAccessibilityStatus(): Promise<AndroidAccessibilityStatus> { | CODE |
| LOW | openless-all/app/android/frontend/lib/androidIpc.ts | 38 | export function requestAndroidAccessibilityPermission(): Promise<{ launched: boolean; message: string }> { | CODE |
| LOW | openless-all/app/android/frontend/lib/androidTypes.ts | 29 | 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 | 829 | function HotkeyModeMigrationPrompt({ onLater, onOpenSettings }: { onLater: () => void; onOpenSettings: () => void }) { | 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/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/localAsr.ts | 211 | export function getLocalAsrStorageSettings(): Promise<LocalAsrStorageSettings> { | CODE |
| LOW | openless-all/app/src/lib/localAsr.ts | 357 | export function setLocalAsrKeepLoadedSecs(seconds: number): Promise<void> { | CODE |
| LOW | openless-all/app/src/lib/localAsr.ts | 378 | export function getFoundryLocalAsrCatalog(): Promise< | CODE |
| LOW | openless-all/app/src/lib/localAsr.ts | 396 | export function setFoundryLocalAsrLanguageHint( | CODE |
| LOW | openless-all/app/src/lib/localAsr.ts | 406 | export function setFoundryLocalRuntimeSource(source: string): Promise<void> { | CODE |
| LOW | openless-all/app/src/lib/localAsr.ts | 422 | export function cancelFoundryLocalAsrPrepare(): Promise<void> { | CODE |
| LOW⚡ | openless-all/app/src/lib/localAsr.ts | 434 | export function getFoundryLocalAsrModelDir(modelAlias: string): Promise<string> { | CODE |
| LOW⚡ | openless-all/app/src/lib/localAsr.ts | 442 | export function deleteFoundryLocalAsrModel(modelAlias: string): Promise<void> { | CODE |
| LOW⚡ | openless-all/app/src/lib/localAsr.ts | 450 | export function revealFoundryLocalAsrModelDir( | CODE |
| LOW | openless-all/app/src/lib/localAsr.ts | 568 | export function setSherpaOnnxAsrLanguageHint( | CODE |
| LOW | openless-all/app/src/lib/localAsr.ts | 586 | export function cancelSherpaOnnxAsrPrepare(): Promise<void> { | CODE |
| LOW | openless-all/app/src/lib/localAsr.ts | 602 | export function revealSherpaOnnxAsrModelDir(modelAlias: string): Promise<void> { | CODE |
| LOW | openless-all/app/src/lib/localAsr.ts | 630 | export function fetchSherpaOnnxAsrRemoteInfo( | CODE |
| LOW | openless-all/app/src/lib/localAsr.ts | 646 | export function downloadSherpaOnnxAsrModel( | CODE |
| LOW | openless-all/app/src/lib/localAsr.ts | 657 | export function cancelSherpaOnnxAsrDownload(modelAlias: string): Promise<void> { | CODE |
| LOW | openless-all/app/src/lib/platform.ts | 61 | export function inferPlatformCapabilities(): PlatformCapabilities { | CODE |
| LOW | openless-all/app/src/lib/platform.ts | 120 | export function getCachedPlatformCapabilities(): PlatformCapabilities | null { | CODE |
| LOW | openless-all/app/src/lib/audioCue.ts | 98 | export function audioContextActionForState(state: string): AudioContextAction { | CODE |
| LOW | openless-all/app/src/lib/providerSetup.ts | 11 | export function shouldShowProviderSetupPrompt( | CODE |
| LOW⚡ | openless-all/app/src/lib/hotkey.ts | 11 | export function defaultAppShortcutModifiers(): string[] { | CODE |
| LOW⚡ | openless-all/app/src/lib/hotkey.ts | 17 | export function defaultSwitchStyleShortcut(): ShortcutBinding { | CODE |
| LOW⚡ | openless-all/app/src/lib/hotkey.ts | 25 | export function defaultLessComputerShortcut(): ShortcutBinding { | CODE |
| LOW | openless-all/app/src/lib/hotkey.ts | 197 | export function shortcutFromLegacyTrigger(trigger: HotkeyTrigger): ShortcutBinding { | CODE |
| LOW | openless-all/app/src/lib/hotkey.ts | 256 | export function sideModifiersFromPressedCodes(codes: Iterable<string>): string[] { | CODE |
| LOW | openless-all/app/src/lib/hotkey.ts | 271 | export function genericModifiersFromPressedCodes(codes: Iterable<string>): string[] { | CODE |
| LOW | openless-all/app/src/lib/hotkey.ts | 291 | export function modifiersFromPressedCodes( | CODE |
| LOW | openless-all/app/src/lib/windowHotkeyFallback.ts | 1 | export function isWindowHotkeyKeyboardCandidate(event: KeyboardEvent): boolean { | CODE |
| LOW | openless-all/app/src/lib/ipc/devices.ts | 25 | export function startMicrophoneLevelMonitor(deviceName: string): Promise<void> { | CODE |
| LOW | openless-all/app/src/lib/ipc/devices.ts | 33 | export function stopMicrophoneLevelMonitor(): Promise<void> { | CODE |
| LOW | openless-all/app/src/lib/ipc/marketplace-cache.ts | 43 | export function writeMarketplaceListCache(items: MarketplaceListItem[]): void { | CODE |
| LOW | openless-all/app/src/lib/ipc/marketplace-cache.ts | 69 | function readMarketplaceDetailStore(): Record< | CODE |
| LOW | openless-all/app/src/lib/ipc/marketplace-cache.ts | 86 | function writeMarketplaceDetailStore( | CODE |
| LOW | openless-all/app/src/lib/ipc/marketplace-cache.ts | 99 | export function readMarketplaceDetailCache( | CODE |
| LOW | openless-all/app/src/lib/ipc/marketplace-cache.ts | 113 | export function writeMarketplaceDetailCache(detail: MarketplaceDetail): void { | CODE |
| LOW | openless-all/app/src/lib/ipc/marketplace-cache.ts | 136 | function pruneMarketplaceDetailCache(keepKeys: Set<string>): void { | CODE |
| LOW⚡ | openless-all/app/src/lib/ipc/permissions.ts | 4 | export function checkAccessibilityPermission(): Promise<PermissionStatus> { | CODE |
| LOW⚡ | openless-all/app/src/lib/ipc/permissions.ts | 12 | export function requestAccessibilityPermission(): Promise<PermissionStatus> { | CODE |
| LOW⚡ | openless-all/app/src/lib/ipc/permissions.ts | 20 | export function checkMicrophonePermission(): Promise<PermissionStatus> { | CODE |
| LOW⚡ | openless-all/app/src/lib/ipc/permissions.ts | 28 | export function requestMicrophonePermission(): Promise<PermissionStatus> { | CODE |
| 21 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 |
|---|---|---|---|---|
| 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 |
|---|---|---|---|---|
| MEDIUM | .github/workflows/ci.yml | 170 | # DLL entrypoint 时,进程会在 test harness 启动前退出。这里保留 cfg/link | COMMENT |
| 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 |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | …ess-all/app/src-tauri/src/asr/local/foundry_runtime.rs | 611 | b"placeholder", | CODE |