fix: stop startup settings hydration from deleting API keys, fix stuc… #4730
ccantynzcommented Jul 1, 2026
Originally written by @vercel[bot] on GitHub.
The latest updates on your projects. Learn more about Vercel for GitHub.
| Project | Deployment | Actions | Updated (UTC) |
|---|---|---|---|
| voxlen | Preview, Comment | Jul 1, 2026 10:13am |
Cross-repo impact
See what breaks downstream if this PR merges.
⮌ Merged
This pull request was merged into main.
c comment · e edit title · m merge · a approve · r request changes · ? shortcuts
Originally written by @ccantynz-alt on GitHub.
Imported from https://github.com/ccantynz-alt/voxlen/pull/71
…k shortcut
API keys not persisting across restarts: startup hydration (loading settings.json / backend settings back into the store) went through the same updateSettings action that also schedules a write-back persist cycle. If the keychain-backed API key hadn't finished loading into the store by the time that 500ms debounce fired, its write-or-delete keychain logic saw an empty key and deleted the one already stored — actively erasing it, not just failing to show it. Added a separate hydrateSettings action that updates the store without scheduling a persist, and switched both startup load paths (settings.json and backend get_settings) to use it.
Global shortcut (Ctrl+Shift+D) not working: the toggle handler only treated idle/paused as "start" conditions, so once dictation status got stuck at "error" (e.g. from a mic failure), pressing the shortcut fell into the stop branch and silently no-opped forever after. Added the missing "error" case, matching DictationPanel's own toggle handler. Also split shortcut registration so each of the four shortcuts registers independently — a single conflict (e.g. taken by another app) no longer silently prevents the rest from registering — and surfaced registration failures via toast + console.error instead of swallowing them under the same catch used for "not running in Tauri".