CodeIssuesPull RequestsActionsSecurityInsights
✨ AI
More
Settings

feat: voxlenApiKey keychain + flywheel vocabulary sync to Voxlen API #4772

Merged⚡ AI-generatedXSccantynz wants to mergeclaude/error-boundaries-saganmainopened Jun 3, 20260/5 tasks
ccantynzcommented Jun 3, 2026

Originally written by @ccantynz-alt on GitHub.
Imported from https://github.com/ccantynz-alt/voxlen/pull/29


Summary

  • voxlenApiKey OS keychain — Voxlen API key now stored in the system keychain alongside STT and grammar keys; hydrated on startup in parallel with the other secrets
  • Flywheel vocab sync — "Sync" button in Flywheel > Vocabulary pushes all learned terms to api.voxlen.com/v1/vocabulary as a named list; only visible when voxlenApiKey is set and vocab is non-empty; shows syncing/synced/failed states

Test plan

  • Set Voxlen API key in Settings → Voxlen API tab, restart app → key survives restart (loaded from keychain)
  • Flywheel > Vocabulary with API key set → Sync button visible
  • Click Sync → button shows "Syncing…" then "Synced" (check network tab for POST to api.voxlen.com/v1/vocabulary)
  • Without API key → Sync button hidden
  • tsc --noEmit passes with zero errors

https://claude.ai/code/session_011MFNHeFKrhfuSrEYVgrdyr


Generated by Claude Code

Cross-repo impact

See what breaks downstream if this PR merges.

Analyze →
⮌ Merged

This pull request was merged into main.

c comment · e edit title · m merge · a approve · r request changes · ? shortcuts