aeoform and Claude Opus 4.7
28ef33267c
fix(inject): fail loudly when RPM injection cannot complete
...
exit 0 on rpmrebuild failure produced a broken RPM silently.
Use exit 1 and print to stderr so the CI pipeline catches it.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com >
2026-05-28 23:59:53 +08:00
aeoform and Claude Opus 4.7
f5bf1ff153
fix(inject): remove AppImage support, detect Debian multiarch dynamically
...
- AppImage cannot work for fcitx5 plugin injection: fcitx5 runs on the
host system and loads addons from host paths (/usr/lib/.../fcitx5).
Files placed inside the AppImage mount are invisible to fcitx5.
- For Debian, use dpkg-architecture to detect the multiarch triplet
(x86_64-linux-gnu, aarch64-linux-gnu, etc.) instead of hardcoding.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com >
2026-05-28 23:53:53 +08:00
aeoform and Claude Opus 4.7
71a36344b2
fix(fcitx): probe multiple distro lib paths for plugin check
...
Debian uses /usr/lib/x86_64-linux-gnu/fcitx5, RPM uses /usr/lib64/fcitx5,
and some distros use /usr/lib/fcitx5. Check all three to avoid false
alarms on non-Debian systems.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com >
2026-05-28 23:38:08 +08:00
aeoform and Claude Opus 4.7
0e5f90bcf2
fix(inject): use correct RPM lib path, remove broken AppImage file mode
...
- RPM: use /usr/lib64/fcitx5/ (RPM 64-bit standard) instead of
Debian multiarch path
- AppImage: only support AppDir directory input, remove .AppImage file
extraction which couldn't repack and would lose changes
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com >
2026-05-28 23:32:10 +08:00
aeoform and Claude Opus 4.7
2bd733ecb3
fix(ci): remove Tauri resources for plugin files, simplify to path check
...
- Remove `resources` from tauri.linux.conf.json — the .so/.conf files
don't exist on CI (plugin is built separately), causing cargo check
to fail with "resource path doesn't exist"
- Simplify ensure_plugin_installed to just check system paths exist,
no bundled comparison needed
- Remove prebuild script and copy-plugin.mjs (no longer needed)
- Remove plugin entries from .gitignore
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com >
2026-05-28 23:16:53 +08:00
aeoform and Claude Opus 4.7
d426b9e7b8
fix(ci): replace bash prebuild with cross-platform Node.js script
...
The prebuild script used bash syntax (mkdir, for, [ -f ]) which fails on
Windows. Replace with a Node.js script that checks platform() and skips
non-Linux, keeping the plugin copy logic only where it's needed.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com >
2026-05-28 23:13:44 +08:00
aeoform and Claude Opus 4.7
19ab7429cd
chore(linux): fcitx5 插件打包注入 + 清理 rdev 残留 + 声明系统依赖
...
- fcitx5 插件改为打包时注入系统路径(inject-fcitx5-plugin.sh),不再运行时复制
- ensure_plugin_installed 改为纯版本检查,不做文件 I/O
- 清理 hotkey/permissions/unicode_keystroke 中 rdev 相关注释和日志
- tauri.linux.conf.json 声明 deb/rpm 运行时依赖及 fcitx5 推荐
- prebuild 脚本自动复制插件文件供 Tauri resources 打包
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com >
2026-05-28 23:08:00 +08:00
吕柏青
9746bb2ae8
chore(homebrew): bump cask to 1.3.4
...
Update OpenLess Homebrew cask from 1.2.23 to 1.3.4 (latest stable
release v1.3.4-tauri, published 2026-05-22). SHA256 checksums for
both aarch64 and x64 DMGs verified by local download.
2026-05-28 21:31: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
weikeyi
c2080286fb
feat(asr): wire sherpa streaming into dictation
2026-05-27 15:00:30 +08:00
weikeyi
39738fde2a
feat(asr): add sherpa online streaming runtime
2026-05-27 15:00:30 +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
weikeyi
2fe4bcac80
test(asr): accept lowercase authorization header
2026-05-27 00:11:15 +08:00
weikeyi
4fc558e979
fix(windows): package x86 IME DLL in x64 MSI
2026-05-27 00:11:15 +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
aeoform and Claude Opus 4.7
a4705fa286
fix: 修复 PR review 发现的两个问题
...
- 最大化状态同步:mount 后监听 tauri://resize 事件,每次 resize 都重新查询
isMaximized(),确保双击拖拽栏/键盘快捷键触发最大化时图标不脱节
- 按钮点击后 300ms 再次查询 isMaximized(),防止窗口管理器拒绝 toggle 时
状态错误
- 启动 nudge drift check:只修正 ±1px 的 nudge 产物,不再覆盖用户/合成器
的实质性窗口大小变化
- 还原误删的中文注释,移除冗余 closeBtn 常量,<style> 移到 WindowChrome
层级避免每个 LinuxTitlebar 实例重复注入
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com >
2026-05-25 23:55:45 +08:00
aeoform and Claude Opus 4.7
4254d835ff
fix: Linux Wayland 改用应用级自定义标题栏,绕过 GTK CSD 点击无响应问题
...
KDE/Wayland 下 GTK Client-Side Decorations 的 minimize/maximize/close
按钮无法响应鼠标事件(tao#1218, tauri#9394)。此前尝试的 WebKit 环境变量 +
async nudge resize 均不能可靠修复,最终方案参考 cc-switch,完全放弃系统装饰:
- decorations: false → 应用级 WindowChrome 绘制 36px 拖拽栏 + 三键窗口控制
- transparent: true → 配合 CSS 磨砂玻璃背景
- WEBKIT_DISABLE_COMPOSITING_MODE + DMABUF_RENDERER 兜底 WebKit 合成异常
- async nudge(set_focus + ±1px resize)保留为辅助修复,防止 show() 后
webview surface 输入区域未初始化
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com >
2026-05-25 23:38:46 +08:00
吕柏青
b7c6217519
chore(release): bump version to 1.3.4-14 (Beta) — Linux fcitx5 状态弹窗 + Sherpa 本地 ASR 状态同步 + DashScope 重复修复
...
本次只动版本号,逻辑改动已在以下 PR 落盘:
- #520 Linux fcitx5 候选框听写状态提示 + AppImage 插件自动安装 + 热键启动容错
- #523 Sherpa 本地 ASR 状态同步修复(active settings 顺序 + Qwen3 tokenizer 缓存校验)
- #527 Sherpa 本地 ASR asset 与 state handling 修复
- DashScope (bailian) ASR 部分语句重复输出修复
- pr-agent.yml CI 配置调整
2026-05-25 20:55:51 +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
aeoform and Claude Opus 4.7
28324376a5
fix(review): 自动化审核修复 — 注释误判 + gen counter 去重 + bailian warn
...
1. _name_match/_match 生命周期注释:Rust 的 `let _name =` 不会提前 drop,
仅有 `let _ =` 才会。两个 guard 与 loop{} 同闭包作用域,自动化审核 HIGH 误判。
2. emit_capsule retry 用 AtomicU64 gen counter 去重,避免快速状态切换时
多个 retry 线程同时生效。
3. bailian.rs sentence_id==0 的 final 句加 warn 日志,方便排查。
4. 删除空 libopenless.so 占位文件,CI 会在构建前实时 cp。
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com >
2026-05-24 15:27:13 +08:00
weikeyi
c9aa46263f
Fix Sherpa local ASR asset and state handling
2026-05-24 15:12:06 +08:00
aeoform and Claude Opus 4.7
de5c55b00f
fix(review): clear_aux_down 同样加状态守卫
...
避免快速状态切换 (Done→Idle→Recording) 时旧 clear 跑到新 set 后面把新文字清掉。
NameOwnerChanged Stale Sync 是已知低概率场景,注释保留。
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com >
2026-05-24 15:10:14 +08:00
aeoform and Claude Opus 4.7
52084999a6
fix(review): Claude Code 审查问题修复
...
1. NameOwnerChanged 回调内 sleep 移到独立线程,不再阻塞 DBus 事件循环
2. emit_capsule 首次 set_aux_down spawn 加 LAST_AUX 状态守卫
3. ensure_plugin_installed 注释更新为"总是覆盖"语义
4. NameOwnerChanged match rule 移除不支持的 arg0,改回调内过滤
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com >
2026-05-24 13:28:56 +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
weikeyi
6d6510fb53
Address Sherpa PR review feedback
2026-05-23 19:10:46 +08:00
weikeyi
75a5082dc7
Tighten Qwen3 tokenizer cache validation
2026-05-23 16:18:05 +08:00
weikeyi
cd9696d561
Fix active ASR settings sync ordering
2026-05-23 11:55:48 +08:00
baiqing
a38d6b50e1
chore(release): bump version to 1.3.4-13 (Beta) — 设置界面重构 + 加入 Beta 渠道 / 麦克风 / 市场登录
...
本次只动版本号,逻辑改动已在 #521 落盘:
- 设置界面分节化、整体文案精简
- 「加入 Beta 渠道」迁到高级页底部、独立成节;关于页改为正式版「检查更新」按钮
- 麦克风选择改为 SelectLite 下拉(选中行实时音量条 + 打勾)
- 扩展市场 / 风格市场登录统一走共用 GithubLoginModal,弹窗尺寸不再跳动
- 弹窗动画 de-jank(去掉 blur 滤镜),各处弹窗动画时长缓动统一
- 共享 reqwest 客户端(net.rs)+ 仅连接层失败做指数退避重试
2026-05-23 08:55:35 +08:00
weikeyi
529ec77f5f
Fix Sherpa local ASR state sync
2026-05-23 00:41:41 +08:00
TRIP
1b8217eddb
Merge pull request #521 from Open-Less/feat/settings-revamp
...
feat(settings): 设置界面重构 — 分节化 / 精简 / Beta 渠道 / 麦克风 / 市场登录
2026-05-22 23:33:46 +08:00
baiqing
99f22a6aee
fix: ASR 切换强制覆盖 endpoint/model + 重试只限连接层失败
...
处理 PR-Agent 第 8 轮:
- ProvidersSection.onAsrProviderChange: asr.endpoint / asr.model 是所有 ASR 厂商
共用的凭据槽,原「仅槽空时填」逻辑使跨厂商切换不生效(dropdown 切了、实际仍
打旧厂商地址)。改为强制覆盖预设默认值,与 onLlmProviderChange 一致。
- net.rs send_with_retry: 重试范围从 is_connect() || is_request() 收窄到只剩
is_connect()。is_request() 多为确定性失败(endpoint 配置错误等),重试 10 次
只是徒增数秒延迟才暴露错误;连接层失败才是真正瞬时、值得重试的一类。
2026-05-22 23:05:18 +08:00
baiqing
00b2bd0a8d
fix(settings): ProvidersSection 识别 sherpa-onnx-local 本地引擎
...
合并 beta 的 #504 引入了第三个本地 ASR 引擎 sherpa-onnx-local,但本分支的
ProvidersSection(早于 #504 拆出)只认 local-qwen3 / foundry-local-whisper。
sherpa-onnx-local 激活时 knownAsr 查不到 → 主 Card 回落显示 volcengine、
凭据字段也错。补齐 5 处:ASR_PRESETS 条目、visibleAsrPresets 过滤、isLocked、
anomalousNameKey、本地引擎不渲染云端凭据字段的分支判断。
2026-05-22 22:50:22 +08:00
baiqing
8986c5680b
fix(settings): performSwitch 补 catch — 本地 ASR 切换失败不再裸抛
...
LocalModelSection.performSwitch 是 async、try/finally 无 catch,而调用方
(Qwen3 / Foundry / sherpa Toggle、禁用按钮)都是 void performSwitch(...)
即发即忘。setActiveAsrProvider / updatePrefs 失败会冒成未处理的 promise
rejection。补 catch + console.error 吞掉。
2026-05-22 22:28:53 +08:00
baiqing
74be27d3e2
fix(settings): provider 切换失败按后端是否已切来决定下拉框回滚
...
上一轮加的回滚无条件把下拉退回 committed provider。但 provider 切换是多步非原子
操作:若 setActiveLlmProvider 已成功、后续 updatePrefs / setCredential 才失败,
后端 active 已是新 provider,回滚下拉到旧的反而让「下拉显示旧 / 后端用新」。
改为记 backendSwitched 标志:仅当后端切换本身没成时才回滚下拉框,让下拉始终与
后端 active 一致。ASR 同理。
2026-05-22 22:14:11 +08:00
baiqing
038744fe40
fix(marketplace): 登录成功写 prefs 失败时补回 .catch
...
重构 OAuth 登录为 GithubLoginModal 后,onLoginSuccess / MarketplaceSection
onSuccess 用裸 void updatePrefs(...) 写 marketplaceDevLogin,丢掉了重构前
try/catch 里的失败日志 —— prefs 写入失败会冒成未处理的 promise rejection。
补回 .catch + console.warn,与重构前行为一致。
2026-05-22 22:00:24 +08:00
baiqing
0689442148
test(polish): 更新 structured prompt 测试以匹配重写后的事项数规则
...
types.rs 的 STRUCTURED_BUILTIN_PROMPT「事项数 → 输出形态」规则已重写(原「≤ 2 条」
拆成「仅 1 条 / = 2 条」两档),但 polish.rs 的两个 structured_prompt 测试仍断言旧
文案,CI 的 macOS / Linux cargo test 因此变红(Windows 偶然未跑到同批次)。
同步订正断言:
- 「事项 ≤ 2 条」→「事项仅 1 条」+「事项 = 2 条」
- 「不硬塞层级」→「输出连贯段落」(仅 1 条事项 → 连贯段落,语义等价)
本地 cargo test --lib:306 passed / 0 failed。
2026-05-22 21:44:56 +08:00
aeoform and Claude Opus 4.7
1b0e41c206
docs: NameOwnerChanged 快照语义注释
...
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com >
2026-05-22 21:32:14 +08:00
aeoform and Claude Opus 4.7
77455cf268
fix(build): sync_custom_dictation_to_plugin 加上 #[cfg(target_os = "linux")]
...
函数体内引用了 crate::linux_fcitx,非 Linux 平台该模块不存在导致 E0433。
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com >
2026-05-22 21:29:43 +08:00
baiqing
2056ad81f0
Merge branch 'beta' into feat/settings-revamp
...
解决 LocalModelSection.tsx 冲突:beta 的 PR #504(Windows sherpa-onnx 本地 ASR)
改的是 AdvancedSection.tsx,而本分支已把它拆分重命名为 LocalModelSection.tsx。
合并保留本分支的拆分 + 文案精简,并并入 #504 的 sherpa-onnx-local 引擎行、
isOnSherpaOnnx / pendingNameKey / 禁用逻辑。其余文件由 git 自动合并。
2026-05-22 21:28:30 +08:00
aeoform and Claude Opus 4.7
163327e17b
fix(review): NameOwnerChanged 支持自定义组合键 + 总是覆盖旧版插件
...
1. start_dictation_signal_listener 新增 custom_trigger_key 参数,
NameOwnerChanged 和初始同步都通过 resync_main_binding 分支处理
自定义组合键 vs 预设修饰键
2. ensure_plugin_installed 去掉"已安装即跳过"检查,AppImage 每次启动
都覆盖最新 .so + .conf,确保新 DBus 方法不会因旧插件丢失
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com >
2026-05-22 21:20:19 +08:00
baiqing
15b4fb15a5
fix(net): 超时不重试 + 网络探针单发 — 处理 PR-Agent 评审意见
...
- send_with_retry 不再重试 is_timeout():reqwest 的 is_timeout 也涵盖「请求已发出、
等响应时超时」,此时服务端可能已收到并在处理,重试 POST/DELETE(marketplace
点赞 / 删除等)会重复执行。只保留 is_connect / is_request 两类「请求未送达服务端」
的重试;net.rs 文档原本宣称超时重试幂等安全 —— 该说法对超时不成立,一并订正
- check_network 改单发、不走 send_with_retry:每 30s 的状态探针走 10 次退避会在
被过滤 / 黑洞网络下把探测拖到近一分钟、状态灯像卡死;瞬时误判由下个 30s 周期
自动纠正。仍用 net::http() 共享连接池
2026-05-22 21:18:21 +08:00