baiqing
|
89dd4e49bb
|
chore: release 1.2.12
|
2026-05-02 12:19:28 +08:00 |
|
TRIP
|
7aefb8199e
|
Merge pull request #181 from Cooper-X-Oak/codex/windows-native-titlebar-off
fix(windows): 收紧主窗口 shell 外观契约
|
2026-05-02 12:18:12 +08:00 |
|
Cooper-X-Oak
|
802ee653c9
|
fix(windows): 收紧主窗口 shell 外观契约
|
2026-05-02 12:12:46 +08:00 |
|
Cooper-X-Oak
|
946d842023
|
fix(windows): restore custom chrome interactions
|
2026-05-02 12:12:02 +08:00 |
|
Cooper-X-Oak
|
4ea8389ceb
|
fix(windows): align custom shell rounded frame
|
2026-05-02 12:12:02 +08:00 |
|
Cooper-X-Oak
|
f83a5339c7
|
fix(windows): remove native titlebar before first show
|
2026-05-02 12:12:02 +08:00 |
|
TRIP
|
a2d243f333
|
Merge pull request #182 from Cooper-X-Oak/codex/windows-capsule-geometry-pr
fix(windows): 收紧 Capsule 几何契约
|
2026-05-02 12:11:51 +08:00 |
|
baiqing
|
9fd726ec87
|
test(windows): 对齐 capsule geometry 新契约断言
|
2026-05-02 12:06:22 +08:00 |
|
Cooper-X-Oak
|
9875e089d8
|
fix(windows): 收紧 capsule 几何契约
|
2026-05-02 12:05:09 +08:00 |
|
Cooper-X-Oak
|
f8c5337084
|
docs(windows): 为 issue 142 建立 capsule 占位
|
2026-05-02 12:04:28 +08:00 |
|
TRIP
|
13d9d29233
|
Merge pull request #180 from appergb/fix/issue-165-linux-contract-alignment
fix(linux): 收敛平台契约错配与 best-effort 降级
|
2026-05-02 11:53:24 +08:00 |
|
TRIP
|
9510611a82
|
Merge pull request #179 from appergb/fix/issue-167-clipboard-restore-queue
fix(windows): 收敛 clipboard restore 并发恢复竞态
|
2026-05-02 11:49:22 +08:00 |
|
TRIP
|
ae6be2defc
|
Merge pull request #178 from appergb/fix/issue-164-qa-window-no-activate
fix(windows): QA 浮窗显示时不再抢前台焦点
|
2026-05-02 11:49:14 +08:00 |
|
TRIP
|
652b6d7bab
|
Merge pull request #177 from appergb/fix/issue-166-mic-permission-no-activate
fix(mic): dictation 缺麦克风权限时不再抢前台焦点
|
2026-05-02 11:49:06 +08:00 |
|
baiqing
|
dd7c02558f
|
fix(linux): 收敛平台契约错配与 best-effort 降级 (closes #165)
|
2026-05-02 11:48:15 +08:00 |
|
baiqing
|
d74d947106
|
fix(windows): 收敛 clipboard restore 并发恢复竞态 (closes #167)
|
2026-05-02 11:41:40 +08:00 |
|
baiqing
|
6a915c762f
|
chore(windows): 补齐 QA no-activate 依赖锁文件
|
2026-05-02 11:40:06 +08:00 |
|
baiqing
|
d4e7a8b4fe
|
fix(windows): QA 浮窗显示时不再抢前台焦点 (closes #164)
|
2026-05-02 11:38:30 +08:00 |
|
baiqing
|
1fc6d9bd3f
|
fix(mic): 听写路径请求麦克风权限时不再抢前台焦点 (closes #166)
|
2026-05-02 11:35:45 +08:00 |
|
TRIP
|
0c4fbb9815
|
Merge pull request #176 from appergb/fix/issue-161-qa-cancel-race
fix(qa): 修划词追问浮窗 4 个取消 race (closes #161)
|
2026-05-02 11:34:30 +08:00 |
|
baiqing
|
db27107e7a
|
fix(qa): 修划词追问浮窗 4 个取消 race (closes #161)
issue #161 4 个子修复合并为一个 PR(取消相关,紧密耦合)。
## 1. Esc 路由
coordinator.rs::handle_window_hotkey_event 之前无条件 cancel_session(dictation
取消),即使在 QA 浮窗里按 Esc 也杀的是 dictation。现在先查 qa_state.panel_visible
+ phase != Idle,是 → close_qa_panel;否 → 走 dictation 取消。
## 2. SSE 流取消旗标
- Inner 加 qa_stream_cancelled: Arc<AtomicBool>
- begin_qa_session 重置 false
- cancel_qa_session set true
- polish.rs::chat_completion_history_streaming 的 SSE loop 每帧检查
should_cancel() flag,true 时立即 break,避免取消后 LLM 继续 drain
HTTP body 烧 token
## 3. session_id 守卫
on_delta 闭包捕获本会话的 captured_session_id;emit chunk 前比对当前
qa_state.session_id,不等就跳过。修复"取消后开新会话,旧 LLM 流的
chunk 漏进新气泡"。
## 4. loading 帧
types.ts::QaStateKind 加 'loading';QaPanel.tsx switch 加 case:把 status
切到 'thinking' 视图,避免 ASR finalize 期间 UI 卡 'recording' 几百 ms
反馈缺失。
## API 变化
- polish::answer_chat_streaming<F, C> 签名加 should_cancel: C
- polish::chat_completion_history_streaming<F, C> 同
- coordinator::answer_chat_dispatch<F, C> 同
## 测试
- cargo check ✅
- npm run build ✅
|
2026-05-02 10:56:40 +08:00 |
|
TRIP
|
f5ffd9ef0f
|
Merge pull request #175 from appergb/fix/issue-168-qa-recorder-error-monitor
fix(qa): QA recorder error monitor (closes #168)
|
2026-05-02 10:51:36 +08:00 |
|
TRIP
|
fcd37fbc71
|
Merge pull request #174 from appergb/fix/issue-169-macos-exit-main-thread
fix(macos): stop_qa_hotkey_listener 包 run_on_main_thread (closes #169)
|
2026-05-02 10:51:30 +08:00 |
|
baiqing
|
65d4b5243b
|
fix(qa): 加 QA recorder runtime error monitor (closes #168)
QA 录音中麦克风设备消失 / cpal 内部 panic 时,QA 流程之前**没有**对应
runtime error 监听器(recorder_errors 用 _ 弃用),导致:
- QA 浮窗一直显示"录音中"
- 用户按 Option 第二次没反应
- 必须按 Esc 才能脱困
修:
- 新增 spawn_qa_recorder_error_monitor,镜像 dictation 现有 spawn_recorder_error_monitor
- begin_qa_session Recorder::start 成功后启动监听器
- 用 qa_state.session_id 守卫 stale 事件
- 收到 error → finish_qa_with_error("录音设备异常: ..") → emit 错误胶囊 + 浮窗错误状态
测试:
- cargo check ✅
|
2026-05-02 10:46:03 +08:00 |
|
TRIP
|
ca7b68053b
|
Merge pull request #173 from appergb/fix/issue-162-qa-level-listener
fix(qa): QaPanel 加 qa:level 监听 + LevelBar (closes #162)
|
2026-05-02 10:44:48 +08:00 |
|
baiqing
|
7ac0421a3f
|
fix(macos): stop_qa_hotkey_listener 包 run_on_main_thread (closes #169)
QaHotkeyMonitor::drop 在 macOS 底层调 Carbon RemoveEventHotKey,要求主线程。
RunEvent::Exit 回调不保证在 AppKit 主线程跑——drop 漏到 tokio worker 上
触发 macOS dispatch_assert_queue_fail SIGTRAP,退出时偶发崩溃。
修:
- coordinator.rs::stop_qa_hotkey_listener 把 .take() 包到 run_on_main_thread
- AppHandle 已 None 时(极端 shutdown 序)直接 drop 兜底(最坏崩也是退出时机)
测试:
- cargo check ✅
|
2026-05-02 10:44:25 +08:00 |
|
TRIP
|
e0614e3c7e
|
Merge pull request #172 from appergb/fix/issue-163-windows-startup-gate-timeout
fix(windows): 启动 gate pollHotkeyStatus 加 10s 超时 (closes #163)
|
2026-05-02 10:43:33 +08:00 |
|
baiqing
|
a8f4b891a0
|
fix(qa): QaPanel 加 qa:level 监听 + LevelBar 电平条 (closes #162)
后端 coordinator.rs:1743 在 QA 录音时每帧 33ms 推 qa:level 事件,
但 QaPanel 之前只 listen qa:state / qa:dismiss,qa:level 完全无人接 →
QA 录音用户看不到电平反馈,不知道麦克风是否收音。
修复:
- QaPanel 加 listen('qa:level') 累积 level state(cleanup 加 unlistenLevel)
- 新增 LevelBar 组件:4px 高蓝色进度条,宽度 = level × 100%
- RecordingHeader / TurnIndicator(recording) 都加 LevelBar 渲染
- 状态切换非 recording 时 setLevel(0) 避免残留
测试:
- npm run build ✅
- macOS 实测:QA 录音电平条跟随声音起伏(同 capsule 体验)
|
2026-05-02 10:38:44 +08:00 |
|
baiqing
|
4627eb4615
|
fix(windows): 启动 gate pollHotkeyStatus 加 10s 超时 (closes #163)
Windows 上 OS 拒绝低层键盘 hook 安装(反作弊/EDR/UAC 拦)时,
hotkey 永远 starting → 前端 while(!cancelled) 永不退出 → UI 卡 "正在启动" 灰屏。
加 50 × 200ms = 10s 上限:超时后强 setGate('ready'),让用户能进 Permissions
页看 hotkey_status.lastError 处理(页面已能显示错误 + 重试入口)。
非 Windows 路径不变。
测试:
- npm run build ✅
|
2026-05-02 10:36:13 +08:00 |
|
TRIP
|
490b391022
|
Merge pull request #171 from appergb/chore/issue-170-cleanup-warnings
chore: cargo clippy --fix 清理 small lints (closes #170 第一波)
|
2026-05-02 10:35:20 +08:00 |
|
baiqing
|
f9d31b68c8
|
fix(insertion): 修 clippy --fix 误删的 Duration import 在 Windows/Linux cfg 下被用
|
2026-05-02 10:30:10 +08:00 |
|
baiqing
|
6fde92417b
|
chore: cargo clippy --fix 自动清理小手术 (closes #170)
cargo clippy --fix 自动修了 8 个 lint,warnings 从 18 降到 16。
改动文件:
- asr/mod.rs / coordinator.rs / hotkey.rs / insertion.rs / polish.rs / types.rs
- 主要是 needless_borrow / single_match / useless_conversion / 多余 cast
build 跑过:
- cargo check ✅
- npm run build ✅
剩余 16 个 warning 都是有意保留的(test-only helpers、future-API placeholder、
类似 TodayMetrics 这种历史接口),不动这些避免破坏 surface。issue #170
里更深层的整洁度(SettingsWriter dedupe / force 参数删除等)后续 PR 跟进。
|
2026-05-02 10:24:21 +08:00 |
|
TRIP
|
68298d253c
|
Merge pull request #138 from Cooper-X-Oak/codex/auto-update-download-acceleration
fix(tauri): 加速自动更新下载
|
2026-05-02 09:51:13 +08:00 |
|
TRIP
|
124778036d
|
Merge pull request #145 from Cooper-X-Oak/codex/windows-cold-start-ui-pr
fix(windows): 收口 startup visible-ready 生命周期并进入评审观察
|
2026-05-02 09:48:13 +08:00 |
|
baiqing
|
0f4d29fdec
|
fix(capsule): 三平台统一恢复 Done/Cancelled/Error toast
PR #140 在 Windows 上把 emit_capsule 的 visible 判定从 !Idle 缩窄到
仅 Recording/Transcribing/Polishing,副作用是 macOS / Linux 用户也失去了
"已粘贴 N 字" / "已取消" / 错误文案这一组完成 toast。
本 commit 把 visible 切回原本的 `!matches!(state, CapsuleState::Idle)`,
覆盖三平台。Windows 上 linger 的真实问题(dead zone / 截图选中 / 拖动卡顿)
由 PR #140 引入的 hide_capsule_window_if_present() Win32 hard-hide 路径
在 visible=false 分支处理——不依赖改 visible 语义。
closes the visible-narrowing follow-up referenced in PR #140 review comment。
|
2026-05-02 09:47:19 +08:00 |
|
baiqing
|
9dd9b0b066
|
Merge pull request #140 from Cooper-X-Oak/codex/fix-windows-capsule-dead-zone-followup
fix(windows): 收口 Capsule helper-window 生命周期并进入回归评审
合入 PR #140 全部修复(保留 #140 author 提交)。冲突点(Win32 use 块导入排序)
取 main HEAD 排序——两边导入相同符号,仅字母顺序不同,无语义差异。
合并后 emit_capsule 的 visible 判定将三平台统一回 !Idle,由后续 commit 跟进——
保留 macOS 已习惯的 Done/Cancelled/Error toast,Windows linger 由本 PR 加的
hide_capsule_window_if_present() Win32 hard-hide 路径解决,不靠改 visible 语义。
|
2026-05-02 09:46:50 +08:00 |
|
Cooper-X-Oak
|
d58c9500c6
|
docs(windows): add tracking docs for issue 139 and pr 140
|
2026-05-02 09:46:39 +08:00 |
|
Cooper-X-Oak
|
c74ea1bcb2
|
fix(windows): fully hide inactive capsule helper window
|
2026-05-02 09:46:39 +08:00 |
|
TRIP
|
4d06f0cad2
|
Merge pull request #160 from Cooper-X-Oak/codex/continue-from-main
fix(windows): 延后剪贴板恢复并补齐插入回归覆盖
|
2026-05-02 09:32:45 +08:00 |
|
TRIP
|
7c6b4250b7
|
Merge pull request #150 from Cooper-X-Oak/codex/issue-147-qa-hotkey-refresh
fix(windows): 对齐 QA hotkey 设置写回与运行态监听器
|
2026-05-02 09:31:52 +08:00 |
|
TRIP
|
c8bb0899d6
|
Merge pull request #151 from Cooper-X-Oak/codex/issue-148-qa-hotkey-normalization
fix(windows): 归一 QA hotkey 的跨平台修饰键语义
|
2026-05-02 09:31:21 +08:00 |
|
TRIP
|
cc030c8f88
|
Merge pull request #155 from Cooper-X-Oak/codex/issue-154-windows-dual-hotkey-pr
docs(windows): 跟踪双热键事件源生命周期
|
2026-05-02 09:30:17 +08:00 |
|
Cooper-X-Oak
|
bcb00c60c1
|
fix(qa): refresh QA hotkey listener on settings writes
|
2026-05-02 06:01:56 +08:00 |
|
Cooper-X-Oak
|
a758cfa998
|
fix(qa): normalize cmd modifier to ctrl on Windows
|
2026-05-02 06:01:56 +08:00 |
|
Cooper-X-Oak
|
e8df0cd971
|
docs(tracking): tighten windows insertion handoff
|
2026-05-02 05:42:52 +08:00 |
|
Cooper-X-Oak
|
4f6df56744
|
docs(windows): refresh pr 145 review-ready tracking summary
|
2026-05-02 05:25:11 +08:00 |
|
Cooper-X-Oak
|
229b871d27
|
docs(github-tracking): add dual-hotkey tracking docs
|
2026-05-02 05:19:11 +08:00 |
|
Cooper-X-Oak
|
da13e8ca37
|
docs(windows): add tracking docs for issue 98 and pr 145
|
2026-05-02 05:18:01 +08:00 |
|
Cooper-X-Oak
|
780a4a4483
|
docs(tracking): add windows clipboard restore handoff
|
2026-05-02 05:15:32 +08:00 |
|
Cooper-X-Oak
|
283cfdf9f3
|
test(windows): stabilize lifecycle regression coverage
|
2026-05-02 05:07:40 +08:00 |
|