Commit Graph
100 Commits
Author SHA1 Message Date
Chris233 c645b16851 Disable background scrolling when settings open (#776)
Fixes #580: prevent background thin-scroll areas from scrolling/bleeding through when the Settings modal is open. Adds data-ol-settings-open={settingsOpen ? 'true' : undefined} to the main FloatingShell div and corresponding CSS in tokens.css to set overflow:hidden and hide WebKit scrollbars when the attribute is present. Also adds settings-modal-scroll-isolation.test.mjs to assert the attribute placement and CSS selectors.
2026-07-14 19:34:11 +08:00
Chris233 b07f78bc1d Merge pull request #723 from H-Chris233/fix/whisper-dynamic-timeout-721
fix(asr): Whisper/OpenRouter 动态超时 + 全局兜底 15→30s
2026-06-21 13:26:07 +08:00
Chris233 e1f24b61a4 test: 修复 local_qwen_timeout 测试 + 新增 whisper_transcribe_timeout 测试
- local_qwen_timeout_ceils_partial_seconds: 10.1s 音频原期望 17s,全局常量
  提升到 30s 后改为期望 COORDINATOR_GLOBAL_TIMEOUT_SECS
- 更新相关注释中的 15→30
- 新增 3 个 whisper_transcribe_timeout 测试:短音频兜底、长音频缩放、ceil
2026-06-21 12:50:41 +08:00
Chris233 3ec8c5ef0c fix(asr): Whisper/OpenRouter 动态超时 + 全局兜底 15→30s
- COORDINATOR_GLOBAL_TIMEOUT_SECS 从 15 改为 30,为云端 batch ASR 留网络预算
- 新增 whisper_transcribe_timeout(audio_secs):max(30, ceil(audio×0.5)+20)
- WhisperBatchASR 新增 buffer_duration_ms() 供 coordinator 计算动态超时
- dictation.rs Whisper 路径从固定 15s 切到动态超时,超时日志包含音频时长

Closes #721
2026-06-21 20:48:38 +08:00
Chris233 5c113b91c5 Merge pull request #661 from HKLHaoBin/feat/dark-mode-to-beta
feat(ui): 深色模式与主题 token 及选中态修复
2026-06-14 20:12:37 +08:00
Chris233 8e8f5fdeb5 Merge pull request #658 from HKLHaoBin/feat/android-release-pipeline
feat(android): 对齐移动端构建与发布流水线
2026-06-14 14:12:03 +08:00
Chris233 3cc4576b12 Merge pull request #659 from HKLHaoBin/feat/mobile-portrait-ui
feat(ui): 移动端竖屏 UI 适配
2026-06-14 13:38:11 +08:00
Chris233 81b7cfffb6 Merge pull request #650 from HKLHaoBin/openless-android-beta-to-beta
feat(android): 将 Android APK 运行时移植到 beta
2026-06-12 19:03:02 +08:00
Chris233 8b7dd83dcc Merge pull request #646 from katanumahotori/codex/whisper-dynamic-timeout-upstream
Scale Cloud Whisper timeout for long recordings
2026-06-12 16:10:16 +08:00
Chris233 834dd6398e Merge pull request #636 from Open-Less/feat/issue-574-apple-speech-asr-wire
feat(asr): Apple Speech 本地 ASR provider (macOS) — 完成 #574
2026-06-11 16:58:37 +08:00
Chris233 91023ed806 Merge pull request #618 from ciddwd/feat/mobile-remote-input
Feat/mobile remote input
2026-06-11 16:58:16 +08:00
Chris233 67447e6232 Merge pull request #637 from Open-Less/feat/issue-613-retain-recording-retranscribe
feat(history): 转录失败保留录音 + 历史「重新转录」(#613)
2026-06-11 16:57:45 +08:00
Chris233 4dcd16debb Merge pull request #635 from zouzhe1/fix/mimo-asr-credential-gate
fix(asr): validate MiMo credentials as ASR provider
2026-06-10 13:53:48 +08:00
Chris233 f6c0b3250a Merge pull request #634 from Open-Less/fix/issue-602-keychain-prompt-storm
fix(vault): 保存凭据跳过未变化的 keychain 条目,修复切换供应商弹窗风暴 (#602)
2026-06-10 12:14:59 +08:00
Chris233 cffbd06adb Merge pull request #633 from Open-Less/fix/issue-631-capsule-click-guard
fix(capsule): 终态/空闲让胶囊点击穿透,修复贴近输入框误触弹主界面 (#631)
2026-06-10 12:14:05 +08:00
Chris233 9f61c8324b Merge pull request #630 from H-Chris233/fix/qwen-engine-mutex-poison-null-ctx-guard
fix: guard qwen_engine std::Mutex poison + null ctx FFI calls
2026-06-09 23:18:41 +08:00
Chris233 6385493519 Merge pull request #632 from H-Chris233/fix/mimo-asr-api-key-race
fix: MiMo ASR API Key 为空竞态修复
2026-06-09 22:25:37 +08:00
H-Chris233 53bb8fee37 fix: MiMo ASR API Key 为空竞态修复(三处)
1. CredentialField onBlur: save() fire-and-forget 与 validate 按钮存在 IPC 竞态
   — 用户输入 Key 后立即点「测试连接」时 setCredential 可能晚于 validate 到达后端。
   — 添加 mountedRef 守卫防止组件卸载后 stale save。

2. read_mimo_credentials: 将 .ok().flatten().unwrap_or_default() 改为显式 match
   — keyring 读取失败不再静默吞错,分别用 warn/error 记日志。
2026-06-09 22:04:42 +08:00
Chris233 7d37e4b16f Merge pull request #628 from Open-Less/fix/issue-580-settings-modal-portal
fix(settings): 设置弹窗用 Portal 渲染避免被页面滚动条覆盖 (#580)
2026-06-09 21:03:37 +08:00
Chris233 6abc03c78f Merge pull request #626 from Open-Less/fix/issue-525-macos-clipboard-restore
fix(insertion): macOS 插入后恢复用户剪贴板 (#525)
2026-06-09 21:00:09 +08:00
Chris233 aaf9133f73 Merge pull request #627 from Open-Less/fix/issue-612-history-search
fix(history): 历史页搜索框可点击、可搜索 (#612)
2026-06-09 20:58:50 +08:00
Chris233 ec5acef170 Merge pull request #629 from Open-Less/fix/issue-622-enforce-traditional-chinese
fix(polish): Traditional 模式强制中文字形转换,不再只靠 prompt (#622)
2026-06-09 20:58:02 +08:00
H-Chris233 0ba3817cee fix: guard qwen_engine Mutex poison + null ctx FFI calls
Two crash-risk fences on the dictation hot path:

1. set_token_handler: Replace std::sync::Mutex::lock().expect() with
   unwrap_or_else(|poisoned| poisoned.into_inner()) to survive a poisoned
   mutex instead of panicking the process. This is the ONLY std Mutex in
   the codebase (all others use parking_lot). If token_trampoline's C FFI
   callback panics, the Mutex poisons and the next dictation crashes.

2. transcribe_audio / transcribe_stream: Add is_null() guard before C FFI
   calls to prevent UB if engine is somehow used after Drop (defense-
   in-depth under normal Arc ownership).
2026-06-09 20:56:18 +08:00
Chris233 bba2c90ef2 Merge pull request #623 from H-Chris233/fix/crash-guards-llm-endpoint-url-asr-model-validation
fix: crash guards for LLM endpoint URL + ASR model loading
2026-06-09 20:06:40 +08:00
H-Chris233 97293b1a40 fix: add crash guards for LLM endpoint URL and ASR model loading
Three defensive layers to prevent user-facing crashes:

1. coordinator/llm_pipeline.rs: Auto-prepend http:// when endpoint URL is
   missing scheme (user types 192.168.1.100:8080/v1 without http://).
   Add catch_unwind guards around all 4 build_active_llm_provider call
   sites to turn panics (e.g. poisoned credentials mutex) into logged
   errors instead of process kills.

2. polish.rs: Replace try_clone().expect() with safe fallback — if the
   request body isn't clonable, send once without retry instead of
   panicking the process.

3. test_run.rs: Validate model files (config.json, vocab.json,
   merges.txt exist and are non-empty; at least one .safetensors >= 1KB)
   before calling into the C FFI qwen_load / qwen_transcribe_audio,
   preventing segfaults from corrupted/incomplete model downloads.
2026-06-09 12:35:20 +08:00
H-Chris233 d72c79ef92 fix(linux): enable Wayland clipboard fallback 2026-06-06 23:16:40 +08:00
Chris233 85ca2acbe7 Merge pull request #604 from dttxorg/fix/issue-minimax-thinking-control
fix(llm): 修复 MiniMax thinking 关闭无效
2026-06-06 22:04:12 +08:00
Chris233 a1fc7c503d Merge pull request #610 from H-Chris233/fix/linux-fcitx-clipboard-fallback
fix(linux): restore clipboard fallback after fcitx failure
2026-06-06 22:00:42 +08:00
H-Chris233 1010cf7932 fix(linux): restore clipboard fallback after fcitx failure 2026-06-06 21:41:03 +08:00
H-Chris233 9bfed9a275 Merge remote-tracking branch 'upstream/pr-601' into beta 2026-06-06 21:36:47 +08:00
Chris233 9f8f8d29d2 Merge pull request #608 from H-Chris233/fix/issue-600-macos-ci
fix(asr): stabilize MiMo HTTP tests on macOS
2026-06-06 18:57:05 +08:00
H-Chris233 fc2cc898ef fix(asr): stabilize MiMo HTTP tests on macOS 2026-06-06 18:35:55 +08:00
Chris233 7722a1c860 Merge pull request #607 from H-Chris233/feat/issue-600-xiaomi-mimo-asr
feat(asr): add Xiaomi MiMo provider
2026-06-06 18:11:45 +08:00
H-Chris233 a79b7429fe feat(asr): add Xiaomi MiMo provider 2026-06-06 17:58:23 +08:00
Chris233 61b99ad593 Merge pull request #606 from H-Chris233/fix/issue-553-linux-solid-surfaces
fix(linux): use solid surfaces for windows
2026-06-06 17:20:53 +08:00
H-Chris233 b59c920195 fix(linux): use solid surfaces for windows
Disable Linux transparent windows for main, capsule, and QA so WebKitGTK compositing no longer controls frosted-glass visuals.

Remove the no-compositing frontend fallback command and route Linux shell surfaces through opaque surface styling while preserving the existing compositing environment workaround.
2026-06-06 14:08:00 +08:00
Chris233 0d94364e65 Merge pull request #591 from Open-Less/feat/issue-582-openrouter-asr
feat(asr): 支持 OpenRouter 作为 ASR 提供商 (#582)
2026-06-04 22:19:12 +08:00
Chris233 6c17ffe35c Merge pull request #590 from Open-Less/fix/issue-573-overview-credentials-refresh
fix(overview): 凭据保存后状态不刷新仍显示「未配置」 (#573)
2026-06-04 21:57:46 +08:00
Chris233 a86af40194 Merge pull request #593 from Open-Less/chore/issue-470-capsule-diagnostics-v2
chore(capsule): #470 诊断 v2 — 暗点一次性日志(零行为改动)
2026-06-04 21:56:39 +08:00
Chris233 984169d837 Merge pull request #592 from Open-Less/feat/issue-576-global-hotkey-disable
feat(hotkey): 全局快捷键可停用/清空开关 (#576)
2026-06-04 21:55:44 +08:00
Chris233 63d3e16757 Merge pull request #577 from aeoform/chore/suppress-linux-build-warnings
chore: suppress all Linux build warnings (192 → 0)
2026-06-03 21:53:23 +08:00
Chris233 ad629367d7 Merge pull request #572 from katanumahotori/fix/whisper-hallucination-verbose-json
fix(asr): 用 verbose_json 元数据丢弃 Whisper 幻听段落(仅 OpenAI/Groq)
2026-06-01 16:52:41 +08:00
Chris233 137c175ccb Merge pull request #569 from katanumahotori/fix/capsule-follow-input-monitor
fix(windows): 多显示器下胶囊跟随正在输入的屏幕
2026-06-01 12:42:26 +08:00
Chris233 c87bab4dc3 Merge pull request #571 from H-Chris233/fix/545-toggle-cooldown
fix: add 600ms activation cooldown after end_session for Toggle mode (#545)
2026-06-01 12:27:46 +08:00
H-Chris233 1788da4667 fix: add 600ms activation cooldown after end_session for Toggle mode (#545)
在 coordinator 层增加 timer-based busy gate:end_session / cancel_session
将 phase 设为 Idle 时记录冷却时间戳;handle_pressed 的 (Toggle, Idle)
分支在 begin_session 前检查该冷却,未过期则忽略本次按键。

冷却时长 600ms(覆盖胶囊 EXIT_ANIM_MS 360ms + 余量),既拦截
三连按的第 3 次误触,也不影响用户主动重新激活。

- coordinator.rs: 新增 POST_SESSION_COOLDOWN_MS 常量 + Inner 字段
- dictation.rs: handle_pressed 增加冷却检查
- dictation.rs: end_session / cancel_session 成功收尾时设置冷却
2026-06-01 12:08:55 +08:00
Chris233 9b05ed0c71 Merge pull request #570 from H-Chris233/fix/linux-frosted-glass-553
fix(linux): fallback from backdrop-filter when WEBKIT_DISABLE_COMPOSITING_MODE=1
2026-06-01 10:36:46 +08:00
H-Chris233 c45b6c0179 fix(linux): fallback from backdrop-filter when WEBKIT_DISABLE_COMPOSITING_MODE=1
Issue #553: Linux 上 WEBKIT_DISABLE_COMPOSITING_MODE=1 时 WebKitGTK backdrop-filter
在 DOM 重排后失效(hover 历史词汇表 / 选择条目刷新面板)。

方案:
- Rust 端新增 is_no_compositing_mode command 暴露环境变量状态
- App.tsx 初始化时调用,写入 data-ol-no-compositing 到 <html>
- CSS 用 [data-ol-no-compositing] 选择器覆盖 inline style,切换到
  渐变+噪点纹理假磨砂方案(复用 tokens.css --ol-frost-grain)
- WindowChrome/FloatingShell 加 className 钩子

受影响的三处 backdrop-filter:WindowChrome 底板、主面板、
Linux 标题栏。ProviderPrompt/HotkeyModePrompt 弹窗遮罩
(瞬态 UI)跳过。提交签署:Reasonix Code
2026-06-01 09:35:07 +08:00
Chris233 4d2a35d2d3 Merge pull request #568 from H-Chris233/feat/media-play-pause-trigger
feat: 新增 MediaPlayPause HotkeyTrigger 支持有线耳机线控录音 (#477)
2026-06-01 08:39:32 +08:00
H-Chris233 dc846f60e6 feat: 新增 MediaPlayPause HotkeyTrigger 支持有线耳机线控录音
- 枚举新增 MediaPlayPause 变体,与 RightControl 等并列
- Windows WH_KEYBOARD_LL 钩子捕获 VK_MEDIA_PLAY_PAUSE (0xB3)
- macOS/Linux 标记为 unreachable (Windows-only)
- 前端类型、i18n 翻译支持
- 配置迁移保护:Linux fcitx 函数添加 MediaPlayPause 守卫

Closes #477
2026-05-31 23:14:48 +08:00
Chris233 854d0aacd1 Merge pull request #566 from H-Chris233/fix/issue-562-qa-active-asr
fix(qa): use active ASR provider in floating panel
2026-05-31 21:34:22 +08:00
Chris233 0b615a9a3e 更新 pr-agent.yml 2026-05-31 21:32:21 +08:00
H-Chris233 4e30c7461d fix(qa): use active ASR provider in floating panel 2026-05-31 21:04:37 +08:00
Chris233 bbc78d1461 Merge pull request #565 from H-Chris233/fix/issue-559-local-model-management
Fix local ASR model storage management
2026-05-31 20:12:32 +08:00
Chris233 2990e39994 更新 pr-agent.yml 2026-05-31 20:11:27 +08:00
H-Chris233 550f410b9a fix: guard Foundry model directory refresh 2026-05-31 19:59:13 +08:00
H-Chris233 110902f49d fix: add local model storage management 2026-05-31 19:32:49 +08:00
Chris233 f669370003 Merge pull request #556 from H-Chris233/fix/issue-548-macos-fullscreen-capsule
fix(macos): show capsule in fullscreen Spaces
2026-05-31 13:30:56 +08:00
H-Chris233 a5970f8c12 fix(macos): avoid gated AppKit collection type 2026-05-31 11:29:43 +08:00
Chris233 8a68be01d3 Merge pull request #558 from andya1lan/fix/release-notes-duplicate-prelude
fix(ci): Release Notes 里的注意事项只输出一次
2026-05-31 10:05:10 +08:00
H-Chris233 0a66f3e50e fix(macos): show capsule in fullscreen Spaces 2026-05-30 15:14:08 +08:00
Chris233 f7bcf25bd7 Merge pull request #555 from H-Chris233/fix/issue-542-openai-reasoning-effort
fix(llm): gate OpenAI reasoning effort by model
2026-05-29 22:54:46 +08:00
H-Chris233 84e2a7ba1d fix(llm): gate OpenAI reasoning effort by model 2026-05-29 22:28:41 +08:00
Chris233 e0711c11e9 Merge pull request #554 from aeoform/fix/linux-fcitx5-auxdown-persist-and-hotkey-mode-save
fix(linux): fcitx5 auxDown 持久化 + 热键模式保存修复 + 隐藏剪贴板/胶囊设置
2026-05-29 21:59:23 +08:00
Chris233 f517912068 Merge pull request #551 from H-Chris233/beta
fix(asr): change default Resource ID from bigasr to seedasr
2026-05-29 13:07:52 +08:00
H-Chris233 de5034145f fix(asr): change default Resource ID from bigasr to seedasr
volc.bigasr.sauc.duration -> volc.seedasr.sauc.duration
2026-05-29 11:43:25 +08:00
Chris233 87d752ef26 Merge pull request #550 from H-Chris233/fix/issue-543-asr-http-endpoint
fix(asr): allow HTTP endpoints with risk warning
2026-05-29 11:35:29 +08:00
H-Chris233 2e5ba91b95 fix(asr): allow HTTP endpoints with risk warning 2026-05-29 11:28:31 +08:00
Chris233 5f6f44709c Merge pull request #549 from H-Chris233/fix/issue-548-macos-capsule-spaces
fix(macos): show capsule across Spaces
2026-05-29 11:19:01 +08:00
H-Chris233 57f186f054 test: make capsule Spaces contract cross-platform 2026-05-29 11:07:07 +08:00
H-Chris233 40b8c0ce13 fix(macos): show capsule across Spaces 2026-05-29 10:59:58 +08:00
Chris233 e4acd1d9b4 Merge pull request #546 from aeoform/chore/linux-fcitx5-plugin-inject-and-cleanup
chore(linux): fcitx5 插件打包注入 + 清理 rdev 残留 + 声明系统依赖
2026-05-29 10:15:42 +08:00
Chris233 5acb2dff1a Merge pull request #541 from H-Chris233/fix/windows-capsule-hitbox
fix(ui): restore Windows capsule hitbox metrics
2026-05-28 11:38:40 +08:00
H-Chris233 d758d5f71d fix(ui): restore Windows capsule hitbox metrics 2026-05-28 11:27:33 +08:00
Chris233 38e9fb2035 Merge pull request #536 from weikeyi/pr/sherpa-streaming-backend
Pr/sherpa streaming backend
2026-05-27 19:05:22 +08:00
Chris233 58b5684c0c Merge pull request #537 from H-Chris233/fix/bailian-endtime-fallback
fix(bailian): 修复 end_time fallback 将 interim 误判为 final 的 bug
2026-05-27 18:04:44 +08:00
Chris233 e5cb823255 Merge pull request #535 from H-Chris233/fix/issue-530-bailian-dedup
fix(bailian): 加固 DashScope ASR 累积文本重复修复
2026-05-27 18:04:12 +08:00
H-Chris233 a534ec5b0b fix(bailian): 修复 end_time fallback 将 interim 误判为 final 的 bug
end_time > 0 的 fallback 逻辑在 sentence_end 字段存在时不应该启用,
因为 DashScope 的 interim 结果也携带正数 end_time,导致累积文本重复重现。
改为仅当 sentence_end 字段完全不存在时才 fallback 到 end_time > 0。

同时修正测试 helper 的 end_time 值,使其匹配真实 API 行为(interim 也有正数 end_time),
并新增 interim_with_positive_end_time_not_mistaken_for_final 测试。
2026-05-27 17:59:28 +08:00
H-Chris233 ee164c3863 fix(bailian): 加固 DashScope ASR 累积文本重复修复
- 跳过 heartbeat 事件(不含识别文本)
- 改用 API 文档标注的 sentence_end 判断 finality,end_time > 0 作为兼容 fallback
- 新增 partial_segments BTreeMap 追踪 interim 结果,final 时自动清理
- sentence_id == 0 的 final 结果不再丢弃,存入 final_segments
- 新增 merge_segments() 带 2 字符最小重叠检测的拼接守卫
- finish_with_partial_or_error 同时检查 partial_segments
- 测试从 3 个扩展到 20 个
2026-05-27 15:08:23 +08:00
Chris233 f2ddf856c5 Merge pull request #533 from weikeyi/pr/windows-ime-whisper-fixes
Pr/windows ime whisper fixes
2026-05-27 14:42:20 +08:00
Chris233 4723863d5a Merge pull request #531 from aeoform/feat/linux-custom-titlebar
fix: Linux Wayland 改用应用级自定义标题栏,绕过 GTK CSD 点击无响应问题
2026-05-26 10:51:36 +08:00
Chris233 7538ac094f Merge pull request #520 from aeoform/feat/linux-fcitx5-status-popup
feat(linux): fcitx5 候选框听写状态提示 + AppImage 插件自动安装 + 热键启动容错
2026-05-25 11:05:09 +08:00
Chris233 cc1f532e76 Merge pull request #527 from weikeyi/fix/sherpa-local-asr-asset-state-beta
修复 Sherpa 本地 ASR 资产校验与部分下载状态
2026-05-25 10:31:19 +08:00
Chris233 5254a91859 更新 pr-agent.yml 2026-05-23 22:50:55 +08:00
Chris233 ab609d3289 更新 pr-agent.yml 2026-05-23 22:42:38 +08:00
Chris233 466e7568b3 Merge pull request #523 from weikeyi/fix/sherpa-local-asr-state-sync-v2
Fix Sherpa local ASR state sync
2026-05-23 22:29:52 +08:00
Chris233 2fcf45b8ac Merge pull request #504 from weikeyi/feat/windows-sherpa-onnx-local-asr
feat(windows): add sherpa-onnx local ASR
2026-05-22 12:38:21 +08:00
Chris233 4bfbfcf047 Merge pull request #518 from H-Chris233/fix/issue-517-linux-window-controls
Fix Linux main window controls
2026-05-21 19:51:56 +08:00
H-Chris233 37afec5ee2 Fix Linux main window controls 2026-05-21 19:30:02 +08:00
Chris233 ebc9d47717 Merge pull request #514 from H-Chris233/issue-491-ime-clipboard-followup
Shorten Windows IME submit timeout
2026-05-21 09:56:02 +08:00
H-Chris233 e939e75a19 Shorten Windows IME submit timeout 2026-05-21 09:52:54 +08:00
Chris233 d71f73193a Merge pull request #513 from H-Chris233/issue-491-streaming-sendinput-pacing
Pace Windows streaming SendInput
2026-05-21 09:15:08 +08:00
H-Chris233 2876a2ea14 Pace Windows streaming SendInput 2026-05-21 08:55:22 +08:00
Chris233 62eb78e4a0 Merge pull request #512 from H-Chris233/issue-511-foundry-whisper-models
Add larger Foundry Whisper models
2026-05-21 08:43:35 +08:00
H-Chris233 c2bce10b6c Add larger Foundry Whisper models 2026-05-21 08:25:36 +08:00
Chris233 482984a8f8 Merge pull request #510 from H-Chris233/issue-507-zhipu-asr-url-error-ui
Fix Zhipu ASR endpoint handling
2026-05-20 21:09:21 +08:00
H-Chris233 7b39491a17 Fix Zhipu ASR endpoint handling 2026-05-20 20:55:08 +08:00
Chris233 e889858759 Merge pull request #509 from H-Chris233/issue-508-zhipu-asr-chunking
Fix Zhipu batch ASR chunking
2026-05-20 18:55:28 +08:00
H-Chris233 06d340061c Fix zhipu batch ASR chunking 2026-05-20 18:40:52 +08:00
Chris233 e2d915e5bd Merge pull request #503 from H-Chris233/issue-491-windows-sendinput-pacing
fix(windows): reduce SendInput pressure after dictation
2026-05-20 16:39:30 +08:00
H-Chris233 96a0ee4d3a chore(windows): clarify copy-only fallback status 2026-05-20 16:27:11 +08:00