Electron-based macOS utility that captures speech, transcribes via STT providers (Groq, ElevenLabs), optionally transforms with an LLM (Google Gemini), and outputs to clipboard/paste.
- Node.js 22+
- pnpm 10+ (enforced — npm/yarn are blocked)
- macOS 15+ (runtime target)
gh auth loginpnpm installFor unattended repository maintenance with Codex in Docker on macOS, see docs/scheduled-codex-setup.md.
pnpm dev # launch electron-vite dev server
pnpm build # production build
pnpm typecheck # type-check without emittingFor the current local development commands, see the scripts section in package.json.
For the current test and verification commands, see the scripts section in package.json.
Vitest excludes .worktrees and .pnpm-store from test discovery to avoid running tests from external worktrees or cached stores.
- Default CI e2e runs on macOS to match the runtime support target.
- macOS e2e on pull request/push is intentionally minimized to smoke checks.
- Workflow concurrency cancels redundant in-progress runs on the same ref.
- Dependency install uses pnpm cache via
actions/setup-node.
.github/workflows/github-pages.ymldeploys onmainonly when the Pages site inputs change.- The tracked inputs are
site/index.html,site/public/**,site/src/**,site/vite.config.ts,package.json,pnpm-lock.yaml,tsconfig.json, the two shared icon assets the site imports, and the workflow file itself. - Manual deploy remains available through
workflow_dispatch.
Manual run options (.github/workflows/e2e-playwright-electron.yml):
run_macos=trueruns macOS smoke e2e tests (@macos) for manual dispatch.run_live_provider_checks=trueadditionally runs live provider tests (@live-provider).
Available CI secrets used by e2e workflows:
GOOGLE_APIKEYELEVENLABS_APIKEYGROQ_APIKEY
For packaging and release-related commands, see the scripts section in package.json and the release process in docs/release-checklist.md.
- Pushing
mainwith a changedpackage.json#versionnow creates the matchingvX.Y.Ztag and builds the GitHub Release from that tag in the same workflow. - Manual release backfills or reruns should use
workflow_dispatchon an existingvX.Y.Ztag so the build source stays immutable. - GitHub Releases now ship direct-download
.dmgand.zipassets. - The app does not use GitHub-hosted auto-update metadata.
- Releases are unsigned, so macOS Gatekeeper warnings are expected.
- Renderer and site typography intentionally use
@fontsourcelatinandlatin-extsubsets to keep shipped font assets smaller. - See docs/release-checklist.md for the release workflow inputs/secrets.
See specs/spec.md for the full normative specification