Install UX: zee -setup wizard, credentials.json, configurable hotkey#27
Draft
sumerc wants to merge 49 commits into
Draft
Install UX: zee -setup wizard, credentials.json, configurable hotkey#27sumerc wants to merge 49 commits into
zee -setup wizard, credentials.json, configurable hotkey#27sumerc wants to merge 49 commits into
Conversation
…hotkey Replace env-var API keys and the launchctl-based install hints with a single interactive setup flow that configures a working install end to end and verifies it. - config: cloud provider API keys move to credentials.json (0600) via config.APIKey/SetAPIKey; the *_API_KEY env vars are no longer read (breaking — users must re-add keys). Dev builds keep all state in <binary dir>/.zee, isolated from the installed app; ZEE_CONFIG_DIR overrides the location. The login-item plist no longer bakes keys. - transcriber: env lookups replaced by an injected key source (SetKeySource), keeping the package free of app-config deps. - setup: new `zee -setup` wizard (provider + key, device, auto-paste, Microphone + Accessibility permissions, live hotkey capture with registration validation, verify pass). Idempotent; on macOS it re-execs as the bundle so TCC attributes prompts to Zee. Absorbs and removes the -doctor command. - permissions: new package for macOS TCC prompting (mic via AVFoundation, accessibility via AXIsProcessTrustedWithOptions). - hotkey: capture engine (Combo/Capture/Rebind) + saved combo loaded at startup; push-to-talk hotkey is now user-configurable in config.json. - tray: "Edit Settings…" opens config.json; disabled "Hotkey: <combo>" label (changed via `zee -setup`, not the tray). - install.sh: hands off to `zee -setup` after install; quits a running instance before replacing the bundle. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
…or settings changes
Repro + verification for 6537b3f: a scripted rawStreamSession fake covers both the happy path (fed PCM comes back as WAV, chunked part + tail flush) and the connect-error path (offline dictation must survive for auto-save). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…ion tests
- update/{install_darwin,install_other,wait_unix}.go (+tests) and
hotkey_linux_test.go were left untracked, so main.go's committed
update.Install/WaitForPID calls failed the CI build (undefined symbols).
- Integration tests now pin -provider before the positional wav (else
flag.Parse ignores it), so Groq-named tests test Groq instead of silently
falling through to auto-selected Deepgram.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Bump parakeet.cpp to v0.4.0, which fixes the macOS Metal crash (upstream #2 / PR #4: GPU→CPU scheduler fallback + native depthwise-conv kernel). Same ggml pin (v0.13.0). Enable the Metal backend in the build and cgo link (libggml-metal.a + Metal/MetalKit/Foundation frameworks; shaders are embedded so the binary stays self-contained). Pre-compile the GPU pipelines at model load via a warmup transcribe so the first dictation isn't stalled, and silence ggml's verbose per-run backend logging. Steady-state ~1.7x faster on 110m, ~2.6x on 0.6b. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…ound Services for instant feedback tones
…r with in-memory WAV bytes
…re to unify model handling
… dark‑mode detection logic
…ngine in integration tests
…upport into local transcribers
…ranscribing states
…local models under a single menu groupgpc
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Replaces env-var API keys and the
launchctl setenvinstall hints with a single interactivezee -setupwizard that configures a working install end to end (provider + API key, device, auto-paste, Microphone + Accessibility permissions, custom hotkey) and verifies it.install.shdownloads then hands off to the wizard.Breaking: the
*_API_KEYenvironment variables are no longer read — keys now live incredentials.json(0600). Existing users must re-add their key (viazee -setup).What changed
credentials.json(0600) viaconfig.APIKey/SetAPIKey; dev/app config split (<binary dir>/.zee, isolated from the installed app);ZEE_CONFIG_DIRoverride. Login-item plist no longer bakes keys into its environment.SetKeySource), keeping the package free of app-config deps.zee -setupwizard — provider+key, device, auto-paste, permissions, live hotkey capture with registration validation, verify pass. Idempotent; on macOS re-execs as the bundle so TCC attributes prompts to Zee. Absorbs and removes-doctor.AXIsProcessTrustedWithOptions.Combo/Capture/Rebind); push-to-talk hotkey is now user-configurable, persisted inconfig.json, loaded at startup.config.json; disabled "Hotkey: " label (changed viazee -setup, not the tray).zee -setupafter install; quits a running instance before replacing the bundle.Testing
zee -setupsmoke-tested locally end to end (Deepgram → key saved tocredentials.json0600 → verify table → complete).open --stdin $(tty)re-exec as the installed bundle, hotkey capture actually firing under-setup, and live TCC prompts attributing to Zee.app (require GUI + human clicks).Deferred
Register()test already rejects unusable combos).🤖 Generated with Claude Code