现象
openless-all/app/src/pages/SelectionAsk.tsx 两个写操作都没有失败反馈,与 Translation 页同款问题:
| 用户动作 |
UI |
调用 |
| 切 QA 触发热键开关 |
SelectionAsk.tsx:62-69 CardHeaderToggle |
await setQaHotkey(nextHotkey); await savePrefs({ ...prefs, qaHotkey: nextHotkey }); |
| 录新的 QA 热键 |
SelectionAsk.tsx:74-80 ShortcutRecorder |
await setQaHotkey(binding); await savePrefs({ ...prefs, qaHotkey: binding }); |
| 切"保存 Q&A 历史" |
SelectionAsk.tsx:86-90 CardHeaderToggle |
SelectionAsk.tsx:40-41 savePrefs({ ...prefs, qaSaveHistory }) |
完整链路(UI → IPC → Rust handler)
| 调用 |
IPC 包装 |
Rust handler |
setQaHotkey(binding) |
src/lib/ipc.ts:311 → invokeOrMock('set_qa_hotkey', { binding }, …) |
commands.rs:784 set_qa_hotkey(…) |
savePrefs(...) |
经 queueSetSettings → setSettings src/lib/ipc.ts:142 → invokeOrMock('set_settings', { prefs }, …) |
commands.rs:116 set_settings(…) |
失败路径
set_qa_hotkey 失败(如热键被系统/其它进程占用,handler 返回 Err(String))→ 第一个 await reject → 第二个 savePrefs 不会执行 → 本地 state 未更新但 toggle 视觉已经按下
savePrefs 单独失败 → 同 Translation 页:fire-and-forget,promise rejection 进 unhandled
- 全程无 saving/saved/error UI
用户可见后果
- 启用 QA → 看起来开了,下次按热键无反应(hotkey 注册失败但 UI 显示"已启用")
- 改 QA 热键 → 表面切了,实际
set_qa_hotkey reject、savePrefs 没跑、旧热键还在
- 切"保存 Q&A 历史" → toggle 状态未与磁盘同步,重启可能漂移
建议接受标准
不在范围
现象
openless-all/app/src/pages/SelectionAsk.tsx两个写操作都没有失败反馈,与 Translation 页同款问题:SelectionAsk.tsx:62-69CardHeaderToggleawait setQaHotkey(nextHotkey); await savePrefs({ ...prefs, qaHotkey: nextHotkey });SelectionAsk.tsx:74-80ShortcutRecorderawait setQaHotkey(binding); await savePrefs({ ...prefs, qaHotkey: binding });SelectionAsk.tsx:86-90CardHeaderToggleSelectionAsk.tsx:40-41savePrefs({ ...prefs, qaSaveHistory })完整链路(UI → IPC → Rust handler)
setQaHotkey(binding)src/lib/ipc.ts:311→invokeOrMock('set_qa_hotkey', { binding }, …)commands.rs:784set_qa_hotkey(…)savePrefs(...)queueSetSettings→setSettingssrc/lib/ipc.ts:142→invokeOrMock('set_settings', { prefs }, …)commands.rs:116set_settings(…)失败路径
set_qa_hotkey失败(如热键被系统/其它进程占用,handler 返回Err(String))→ 第一个 await reject → 第二个savePrefs不会执行 → 本地 state 未更新但 toggle 视觉已经按下savePrefs单独失败 → 同 Translation 页:fire-and-forget,promise rejection 进 unhandled用户可见后果
set_qa_hotkeyreject、savePrefs没跑、旧热键还在建议接受标准
setQaHotkeyreject 时回滚 toggle 视觉 + 显式提示"热键注册失败",不再继续调savePrefs不在范围